<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Daniel Bílek</title>
    <description>The latest articles on DEV Community by Daniel Bílek (@danielbilek).</description>
    <link>https://dev.to/danielbilek</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3728743%2Fdb1253a2-763b-44ad-af41-ea56db7dd964.png</url>
      <title>DEV Community: Daniel Bílek</title>
      <link>https://dev.to/danielbilek</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/danielbilek"/>
    <language>en</language>
    <item>
      <title>AI Won’t Make Us Smarter by Default</title>
      <dc:creator>Daniel Bílek</dc:creator>
      <pubDate>Thu, 13 Aug 2026 11:52:12 +0000</pubDate>
      <link>https://dev.to/danielbilek/ai-wont-make-us-smarter-by-default-3nic</link>
      <guid>https://dev.to/danielbilek/ai-wont-make-us-smarter-by-default-3nic</guid>
      <description>&lt;p&gt;I need to preface this by saying that I'm in favor of LLMs and generative AI in general. I use them daily, and I think you should too.&lt;/p&gt;

&lt;p&gt;My pessimism isn't about the technology. It's about the relationship we're building with it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Google effect
&lt;/h2&gt;

&lt;p&gt;Google has been the best search engine (it might not be anymore, but I'm not gonna argue about that). It built the most comprehensive index of information from across the world. It's laughably simple to find almost anything you're looking for.&lt;/p&gt;

&lt;p&gt;I think many of us expected humanity to use this access to become more informed, smarter, and more skilled. You have practically unlimited access to any information you might ever want. People should be smarter and make better-informed decisions.&lt;/p&gt;

&lt;p&gt;The exact opposite seems to have happened. A few people used that access to learn more. Most used it so they could be "dumber." Why know things when I can just look them up when I need them?&lt;/p&gt;

&lt;p&gt;This is compounded by the fact that the majority of people can't actually Google for shit. They don't know how to phrase what they are searching for, let alone use any kind of advanced search.&lt;/p&gt;

&lt;p&gt;Media literacy is even worse. People struggle to recognize credible sources and critically evaluate the information they find.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I Googled it, so it must be true.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;AI could make all of this worse.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How bad could it get?
&lt;/h2&gt;

&lt;p&gt;Google happened. We are still here. It's fine.&lt;/p&gt;

&lt;p&gt;AI could be much, much worse. We don't need AGI for that to happen.&lt;/p&gt;

&lt;p&gt;The existing problems will compound, and AI introduces some new ones.&lt;/p&gt;

&lt;h3&gt;
  
  
  You still need to know how to ask
&lt;/h3&gt;

&lt;p&gt;Google required you to describe what you were looking for. Using AI well requires even more. You don't just ask for information. You command actions. You need to express your intent, define a goal, describe the requirements, and set limits.&lt;/p&gt;

&lt;p&gt;If you are doing any agentic coding, you know what I'm talking about. &lt;strong&gt;You know people who prompt an agent with "doesn't work" and expect a meaningful result.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  I don't need to know. AI can do it for me
&lt;/h3&gt;

&lt;p&gt;This is no longer just about not knowing information. AI can take action, so you don't need to know how to actually do things either.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You know less, and you understand even less about how things are done.&lt;/strong&gt; We get even dumber and become increasingly dependent on systems we don't understand.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do you know it's right?
&lt;/h3&gt;

&lt;p&gt;If your ability to check its work is fundamentally compromised, how do you know when AI is hallucinating? Do you have a way to validate what it tells you? Are you still capable of validating it?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We already struggled to evaluate the results of a simple Google search. Now we have an LLM that can be prompted to agree with us, or given a system message that makes it behave in ways we aren't privy to.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But it sounds so "human." It wouldn't lie.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does a stone feel about it?
&lt;/h3&gt;

&lt;p&gt;I heard George Hotz say that if you &lt;strong&gt;draw a smiley face on a stone, people will project emotions onto it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We can already see this happening with AI. It's the "weirdos" for now. But more of us will have AI friends, and trust them, than we would like to admit. People have always had a tendency to personify things. AI just gives those things a voice.&lt;/p&gt;

&lt;h3&gt;
  
  
  I didn't delete production. AI did it!
&lt;/h3&gt;

&lt;p&gt;You command it. You validate the result. You might even trust it. Who gets the credit, and who is responsible?&lt;/p&gt;

&lt;p&gt;When you present work created with AI, did you really do it? Should you get the credit?&lt;/p&gt;

&lt;p&gt;And when the AI fucks up? &lt;strong&gt;Damn that AI. It sometimes does strange things. It did it on its own.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Personally, I think the credit belongs to you as much as the responsibility does. You don't get to claim one and reject the other.&lt;/p&gt;

&lt;p&gt;Did you command AI to create something cool? Great! It wouldn't have done anything on its own.&lt;/p&gt;

&lt;p&gt;Did it delete the production database? That's still on &lt;strong&gt;you&lt;/strong&gt;. You created the environment and gave a probabilistic system enough information and access to produce a dangerous result.&lt;/p&gt;

&lt;p&gt;You can already see people shifting blame to AI whenever something goes wrong. &lt;strong&gt;I think we're about one or two years away from someone trying to put an LLM on trial.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Passion, identity, and reliance
&lt;/h2&gt;

&lt;p&gt;I know I'm not the only one who doesn't get the same feeling after making something with AI. There aren't enough obstacles to trigger the same chemical reward in my brain. The more I use it, the more it feels like tying my shoelaces. I did something, sure, but it doesn't feel like much of an accomplishment.&lt;/p&gt;

&lt;p&gt;There is also a partial loss of identity, especially when part of who you are is built around what you can do. If AI can suddenly do much of it for you, what is left of that identity?&lt;/p&gt;

&lt;p&gt;We will have to adapt. Building your identity entirely around a set of skills won't hold up when those skills can be automated.&lt;/p&gt;

&lt;p&gt;Reliance is the scariest part because it's already happening, even if it isn't visible yet. We are starting to offload not just parts of our work to AI, but parts of our lives.&lt;/p&gt;

&lt;p&gt;This reminded me of a quote from &lt;em&gt;Upgrade&lt;/em&gt; (watch it, it's fun):&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;I don't run this company anymore. I haven't for years. Now I answer to someone. Someone much smarter than I ever could be.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Upgrade&lt;/em&gt; (2018)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Do you run your life? How much of it, and for how long?&lt;/p&gt;

&lt;p&gt;P.S. I want better and cheaper models. We're gonna figure this out like we always do.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This essay originally appeared on &lt;a href="https://danielbilek.me/blog/ai-wont-make-us-smarter-by-default/" rel="noopener noreferrer"&gt;danielbilek.me&lt;/a&gt;. I’m interested in where you draw the line between using AI as a tool and becoming dependent on it.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>No Baked-In Behavior: Why Your AI Agent's System Prompt Should Be Yours</title>
      <dc:creator>Daniel Bílek</dc:creator>
      <pubDate>Sat, 11 Jul 2026 19:45:26 +0000</pubDate>
      <link>https://dev.to/danielbilek/no-baked-in-behavior-why-your-ai-agents-system-prompt-should-be-yours-10o2</link>
      <guid>https://dev.to/danielbilek/no-baked-in-behavior-why-your-ai-agents-system-prompt-should-be-yours-10o2</guid>
      <description>&lt;p&gt;Every AI coding agent ships with baked-in behavior. Hidden system prompts you can't see. Tools you can't remove. Steering baked in by the company that made it.&lt;/p&gt;

&lt;p&gt;It's just how these products work. Batteries included.&lt;/p&gt;

&lt;p&gt;Claude Code has a system prompt. A long one. It tells the agent how to behave, what to prioritize, what to avoid. It's not exposed in the product. You can dig it out of the npm package if you know where to look, but you can't change it. Cursor has tool definitions and behavior rules that shape every interaction. Copilot has its own set of baked-in instructions.&lt;/p&gt;

&lt;p&gt;And these prompts are &lt;em&gt;good&lt;/em&gt;. They're written by smart people who understand the model. They make the agent useful out of the box.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;But they're not &lt;em&gt;yours&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  The Problem with Baked-In Behavior
&lt;/h3&gt;

&lt;p&gt;I think we've all been there. The agent does something weird and you don't know why. Was it your prompt? Something you can't see? A tool description that's steering the model in a direction you didn't ask for?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You're debugging a black box.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here's what actually happens:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You can't debug behavior.&lt;/strong&gt; The agent does something unexpected and you have no way to trace it back to the instruction that caused it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Your prompts fight theirs.&lt;/strong&gt; You say "always use pnpm" and it uses npm anyway. Why? Because somewhere in the baked-in prompt, something overrides your preference in certain contexts. You can't find the conflict because you can't see the other instruction.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You can't remove behavior you don't want.&lt;/strong&gt; Maybe you don't want it to run tests after every change. Maybe you don't want commit suggestions. If it's baked in, you're stuck.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You can't tell what's the model and what's the product.&lt;/strong&gt; Did the agent recommend that library because it's good, or because a baked-in instruction told it to? You can't distinguish model knowledge from product steering.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What Jean2 Does Differently
&lt;/h3&gt;

&lt;p&gt;Jean2 ships with &lt;strong&gt;no default system prompt&lt;/strong&gt;. No default tools. No fixed agent personality.&lt;/p&gt;

&lt;p&gt;The binary is blank by design. When you start a session, the system prompt is composed from pieces &lt;em&gt;you&lt;/em&gt; control.&lt;br&gt;
Let me walk through each piece.&lt;/p&gt;
&lt;h4&gt;
  
  
  Preconfig Prompts
&lt;/h4&gt;

&lt;p&gt;A preconfig is a saved agent configuration: model, tools, prompt, skills. The system prompt in a preconfig is &lt;em&gt;the&lt;/em&gt; core prompt for that agent. You write it. You see it. You change it.&lt;/p&gt;

&lt;p&gt;No hidden instructions. What you write is what the agent gets.&lt;/p&gt;
&lt;h4&gt;
  
  
  Workspace Instructions (AGENTS.md)
&lt;/h4&gt;

&lt;p&gt;Every workspace can have an &lt;code&gt;AGENTS.md&lt;/code&gt; file at its root. Project-specific instructions, included in the system prompt automatically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# AGENTS.md&lt;/span&gt;

&lt;span class="gu"&gt;## Build Commands&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`bun run build`&lt;/span&gt;: build all packages
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`bun run test`&lt;/span&gt;: run all tests

&lt;span class="gu"&gt;## Code Style&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Use &lt;span class="sb"&gt;`import type`&lt;/span&gt; for type-only imports
&lt;span class="p"&gt;-&lt;/span&gt; 2-space indentation
&lt;span class="p"&gt;-&lt;/span&gt; Single quotes for strings

&lt;span class="gu"&gt;## Don't&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Don't modify packages/sdk/src/version.ts without updating the version
&lt;span class="p"&gt;-&lt;/span&gt; Don't run the server without asking first
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's version-controlled with your code. Anyone on your team gets the same instructions.&lt;/p&gt;

&lt;h4&gt;
  
  
  Workspace Memory
&lt;/h4&gt;

&lt;p&gt;The workspace &lt;code&gt;MEMORY.md&lt;/code&gt;. Facts the agent learned and saved. "We use pnpm", "the database is SQLite", "tests run with bun:test". Tell it once, it writes it down, it knows forever.&lt;/p&gt;

&lt;h4&gt;
  
  
  Agent Memory
&lt;/h4&gt;

&lt;p&gt;Your personal agent memory. &lt;code&gt;USER.md&lt;/code&gt; and &lt;code&gt;MEMORY.md&lt;/code&gt; from the agent's home directory. Preferences and knowledge that travel with the agent across projects.&lt;/p&gt;

&lt;h4&gt;
  
  
  Skills
&lt;/h4&gt;

&lt;p&gt;Any skills the agent loads. Skills are playbooks: deployment checklists, code review standards, debugging workflows. Written by the agent, or by you.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Full Composition
&lt;/h3&gt;

&lt;p&gt;Here's what the prompt assembly actually looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Preconfig System Prompt]
  ↓
+ [AGENTS.md from workspace root]
  ↓
+ [Workspace MEMORY.md]
  ↓
+ [Agent USER.md + MEMORY.md]
  ↓
+ [Loaded Skills]
  ↓
+ [Session Search guidance + Skill management guidance]
  ↓
= Final System Prompt sent to LLM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Every piece is a file on disk. Readable, editable, version-controllable. No hidden layers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Why This Matters in Practice
&lt;/h3&gt;

&lt;p&gt;Let me give you a concrete example. I was using a coding agent (not Jean2) and it kept adding &lt;code&gt;console.log&lt;/code&gt; statements to debug code. Every session, same thing. I'd tell it not to, it would agree, and 20 minutes later there's another &lt;code&gt;console.log&lt;/code&gt; in my codebase.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I couldn't fix it because I couldn't see what was causing it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With Jean2, if the agent does something I don't want, I can:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Check the prompt.&lt;/strong&gt; Is there something in my preconfig or AGENTS.md that's ambiguous?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add a rule.&lt;/strong&gt; Write it to memory: "Never add console.log for debugging. Use the debugger or write proper tests."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a skill.&lt;/strong&gt; If it's a repeating pattern, make a "Debugging Standards" skill with specific steps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify it's working.&lt;/strong&gt; The next session, check if the rule is in the prompt. It is. I can see it.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;With a baked-in agent, you can't do step 1. You can't see the prompt. You're guessing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  The Counterargument
&lt;/h3&gt;

&lt;p&gt;Here's the fair pushback: most people don't want to write system prompts. They want an agent that works out of the box.&lt;/p&gt;

&lt;p&gt;True. That's where &lt;strong&gt;preconfigs&lt;/strong&gt; come in. A preconfig is a starting point. You can create one for coding, for research, for review. Someone can share a preconfig. A team can maintain a standard set.&lt;/p&gt;

&lt;p&gt;The difference is that the preconfig is &lt;em&gt;visible and replaceable&lt;/em&gt;. You can see exactly what instructions the agent has. Change any of them. Throw the whole thing out and start from scratch.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Baked-in means you can't. Preconfigs mean you can.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  The Transparency Test
&lt;/h3&gt;

&lt;p&gt;Here's a simple test. Ask your current AI agent:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What's in your system prompt? What instructions are you operating under right now?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Some will refuse to answer. Some will give a vague summary. Some will hallucinate. Almost none will show you the actual prompt.&lt;/p&gt;

&lt;p&gt;In Jean2, the answer is: check the files. It's all files on disk. You can read every word. Diff it between versions. Share it with your team.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's Next
&lt;/h3&gt;

&lt;p&gt;Jean2's approach isn't for everyone. If you want a turnkey coding agent that works perfectly the moment you install it, with zero configuration, Jean2 isn't that. Yet.&lt;/p&gt;

&lt;p&gt;But if you've ever been frustrated by an AI agent doing something you can't explain, can't debug, and can't change, Jean2 is built for you.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Every layer is yours. Every prompt is visible. Every behavior is configurable. No company can switch off a feature because of your region. There's no server to enforce from and no telemetry to check with. Your tools on your computer should be yours.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://jean2.ai" rel="noopener noreferrer"&gt;Try it out&lt;/a&gt; or &lt;a href="https://discord.com/invite/38sUKnUNPQ" rel="noopener noreferrer"&gt;join the Discord&lt;/a&gt;. I'm &lt;a href="https://twitter.com/danielbilekq0" rel="noopener noreferrer"&gt;@danielbilekq0&lt;/a&gt; if you want to argue about it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post originally appeared on &lt;a href="https://jean2.ai/blog/2026-07-06-no-baked-in-behavior" rel="noopener noreferrer"&gt;jean2.ai&lt;/a&gt;. Star the project on &lt;a href="https://github.com/jean2ai/jean2" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>The Evolving Agent: How Jean2 Learns Across Sessions</title>
      <dc:creator>Daniel Bílek</dc:creator>
      <pubDate>Wed, 08 Jul 2026 21:12:44 +0000</pubDate>
      <link>https://dev.to/danielbilek/the-evolving-agent-how-jean2-learns-across-sessions-2m98</link>
      <guid>https://dev.to/danielbilek/the-evolving-agent-how-jean2-learns-across-sessions-2m98</guid>
      <description>&lt;p&gt;I've been coding with AI agents for about two years. Every major one. Cursor, Copilot, Codex, OpenCode. They're good at generating code. They all share one problem.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;They forget everything.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You finish a session, close the window, and the agent resets. Next time you open it, you're starting from zero. "We use pnpm, not npm." "The database is SQLite, not Postgres." "Don't touch the migrations folder." You repeat yourself. Every. Single. Time.&lt;/p&gt;

&lt;p&gt;Some tools added memory features. Usually as an afterthought. A pinned file. A custom instruction. A context window that grows until it hits a wall and everything old gets silently dropped.&lt;/p&gt;

&lt;p&gt;I didn't want a bigger context window. I wanted an agent that &lt;em&gt;accumulates knowledge&lt;/em&gt; the way a colleague does. Not by being retrained. By taking notes, writing down what it learned, and reading those notes next time.&lt;/p&gt;

&lt;p&gt;That's what Jean2 &lt;em&gt;can&lt;/em&gt; do. Not through fine-tuning. Not through vector embeddings. Through &lt;strong&gt;files on disk&lt;/strong&gt; that the agent reads and writes itself.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;But here's the thing: none of this is on by default. By default, Jean2 is as bare as Codex or OpenCode. A blank prompt. No memory. No skills. No session search. You opt in to each layer in &lt;strong&gt;workspace settings&lt;/strong&gt;. That's the point. You build the agent you want, layer by layer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  The Four Layers
&lt;/h3&gt;

&lt;p&gt;If you turn them on, Jean2's agent has four knowledge layers that persist across sessions. They're not features bolted on top. They're part of the system prompt that gets composed every time a session starts.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Workspace Memory
&lt;/h4&gt;

&lt;p&gt;Turn on workspace memory in &lt;strong&gt;workspace settings&lt;/strong&gt;, and the workspace gets two files: &lt;code&gt;MEMORY.md&lt;/code&gt; for shared knowledge and &lt;code&gt;USER.md&lt;/code&gt; for your personal preferences within that workspace. Both live at &lt;code&gt;&amp;lt;workspace&amp;gt;/.jean2/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The concept is simple. Shared knowledge that's useful for &lt;em&gt;any&lt;/em&gt; agent working in that workspace. "We use pnpm." "The database is SQLite." "Don't touch the migrations folder." Whatever agent you bring in, coding specialist, reviewer, docs writer, they all get the same context.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Workspace Memory&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; Build system: pnpm (not npm, not yarn)
&lt;span class="p"&gt;-&lt;/span&gt; Database: SQLite via bun:sqlite
&lt;span class="p"&gt;-&lt;/span&gt; Test runner: bun:test for server/tools, vitest for client
&lt;span class="p"&gt;-&lt;/span&gt; Never modify files in packages/sdk without updating version.ts
&lt;span class="p"&gt;-&lt;/span&gt; The migrations folder is managed by a separate script. Don't auto-generate migrations.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent writes this itself. You don't manage it manually. When it learns something worth remembering, it saves it. When it makes a mistake and you correct it, it saves the correction.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It's not fancy. There's no vector database, no embedding pipeline. It's a markdown file on disk. And it works.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  2. Agent Memory
&lt;/h4&gt;

&lt;p&gt;Same concept. Same two files: &lt;code&gt;MEMORY.md&lt;/code&gt; and &lt;code&gt;USER.md&lt;/code&gt;. Different scope.&lt;/p&gt;

&lt;p&gt;Each agent in Jean2 has its own home directory: &lt;code&gt;~/.jean2/agents/&amp;lt;agent-name&amp;gt;/&lt;/code&gt;. The memory lives there. This is where the agent evolves its &lt;em&gt;role&lt;/em&gt;. Its specialization. Its understanding of how it should work.&lt;/p&gt;

&lt;p&gt;Workspace memory is shared context: "this project uses pnpm." Agent memory is identity: "I am the TypeScript specialist, and here's what I've learned about how Daniel likes his code." It travels with the agent across every workspace it participates in.&lt;/p&gt;

&lt;p&gt;The agent maintains these with the &lt;code&gt;agent_memory&lt;/code&gt; tool. Same mechanism as workspace memory, just a different relationship to the knowledge.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Skills
&lt;/h4&gt;

&lt;p&gt;Same split as memory. Workspace scope, agent scope.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Workspace skills&lt;/strong&gt; live in &lt;code&gt;&amp;lt;workspace&amp;gt;/.agents/skills/&lt;/code&gt;. Shared playbooks for any agent working in that workspace. "This is how we deploy." "This is our code review process." Whatever agent you bring in picks them up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent skills&lt;/strong&gt; live in the agent's home directory. They travel with the agent's role. "This is how &lt;em&gt;I&lt;/em&gt; debug TypeScript." "This is my approach to refactoring." They belong to the agent, not the project.&lt;/p&gt;

&lt;p&gt;Both are &lt;code&gt;SKILL.md&lt;/code&gt; files. Procedural playbooks the agent can discover and load when relevant. The &lt;code&gt;skill&lt;/code&gt; tool lets it read existing skills. The &lt;code&gt;skill_manage&lt;/code&gt; tool lets it &lt;em&gt;create new ones&lt;/em&gt;. You have to enable skill management for the agent to use them.&lt;/p&gt;

&lt;p&gt;Here's what that looks like in practice:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You're working on a deployment issue. The agent figures out the right Docker config through trial and error.&lt;/li&gt;
&lt;li&gt;After the third time, it notices a pattern. "Every time we deploy, I need to check these three things in this order."&lt;/li&gt;
&lt;li&gt;It writes a &lt;code&gt;deployment-checklist.md&lt;/code&gt; skill.&lt;/li&gt;
&lt;li&gt;Next deployment, different project, different session. It loads that skill and skips the trial and error.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Deployment Checklist&lt;/span&gt;

&lt;span class="gu"&gt;## When to Use&lt;/span&gt;
Before deploying to production or staging.

&lt;span class="gu"&gt;## Steps&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; Run &lt;span class="sb"&gt;`bun run typecheck`&lt;/span&gt;. Must pass.
&lt;span class="p"&gt;2.&lt;/span&gt; Run &lt;span class="sb"&gt;`bun run lint`&lt;/span&gt;. Must pass.
&lt;span class="p"&gt;3.&lt;/span&gt; Run &lt;span class="sb"&gt;`bun run test`&lt;/span&gt;. All suites.
&lt;span class="p"&gt;4.&lt;/span&gt; Check &lt;span class="sb"&gt;`packages/server/src/version.ts`&lt;/span&gt; matches changelog.
&lt;span class="p"&gt;5.&lt;/span&gt; Verify the binary builds locally: &lt;span class="sb"&gt;`bun run build:bin`&lt;/span&gt;.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's a real skill from my own setup. The agent wrote it. I didn't ask it to. It noticed the pattern and saved it.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Session Search
&lt;/h4&gt;

&lt;p&gt;Same split. Workspace scope, agent scope.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Workspace scope&lt;/strong&gt;: any preconfig or agent working in a workspace can search through all sessions in that workspace. "Did someone already solve this in this project?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent scope&lt;/strong&gt;: the agent can search through sessions it participated in, regardless of which workspace they happened in. "Have I seen this kind of problem before, anywhere?"&lt;/p&gt;

&lt;p&gt;One tool, &lt;code&gt;session_search&lt;/code&gt;, powered by SQLite FTS5. Turn it on, and the agent searches its own history:&lt;/p&gt;

&lt;p&gt;"Last week I worked on a WebSocket reconnection bug. Let me search for that."&lt;/p&gt;

&lt;p&gt;The agent finds the relevant session, reads what it tried, what worked, what didn't. Then applies that knowledge to the current problem. Without you having to explain the history.&lt;/p&gt;

&lt;h3&gt;
  
  
  How They Connect
&lt;/h3&gt;

&lt;p&gt;The four layers don't exist in isolation. They feed each other.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Memory&lt;/strong&gt; tells the agent &lt;em&gt;what&lt;/em&gt; to remember.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills&lt;/strong&gt; tell the agent &lt;em&gt;how&lt;/em&gt; to do things.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session Search&lt;/strong&gt; gives the agent &lt;em&gt;experience&lt;/em&gt; to draw from.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Preconfigs&lt;/strong&gt; let you swap the &lt;em&gt;brain&lt;/em&gt;. Different model, different prompt, different tool set. While keeping all the accumulated knowledge.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;The result is an agent that gets better the more you use it. Not because the model improved. Because &lt;em&gt;the files got richer&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Day 1 vs Day 30
&lt;/h3&gt;

&lt;p&gt;On day 1, your Jean2 agent is a blank slate. It knows nothing about your project, your preferences, or your workflow. It's capable, same model, same tools, but it has no context. And it stays that way unless you choose to evolve it.&lt;/p&gt;

&lt;p&gt;On day 30:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It knows your build system, your test commands, your code conventions.&lt;/li&gt;
&lt;li&gt;It has skills for recurring tasks. Deployment checklists, code review patterns, common debugging steps.&lt;/li&gt;
&lt;li&gt;It can search past sessions for solutions to similar problems.&lt;/li&gt;
&lt;li&gt;It knows your personal preferences across projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model didn't change. The knowledge accumulated. On disk. In files you can read, edit, version control, and share.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;That&lt;/em&gt; is what "evolving agent" means. Not a model that retrains itself. An agent that takes notes. But only because you opted in. You could also leave it bare and it would work like any other coding agent.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's Next
&lt;/h3&gt;

&lt;p&gt;Jean2 is at &lt;strong&gt;v1.1.0&lt;/strong&gt;. Still in active development, but very usable. I've been coding with it every day for months. The agent that helps me today is noticeably better than the one I started with, because it's been accumulating skills and memory the whole time.&lt;/p&gt;

&lt;p&gt;If this sounds interesting, &lt;a href="https://jean2.ai" rel="noopener noreferrer"&gt;try it out&lt;/a&gt;. Got questions about how memory or skills work? &lt;a href="https://discord.com/invite/38sUKnUNPQ" rel="noopener noreferrer"&gt;Join the Discord&lt;/a&gt; or hit me up at &lt;a href="https://twitter.com/danielbilekq0" rel="noopener noreferrer"&gt;@danielbilekq0&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post originally appeared on &lt;a href="https://jean2.ai/blog/2026-07-06-evolving-agent" rel="noopener noreferrer"&gt;jean2.ai&lt;/a&gt;. Star the project on &lt;a href="https://github.com/jean2ai/jean2" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Building a LEGO-like remote Agent - Jean2</title>
      <dc:creator>Daniel Bílek</dc:creator>
      <pubDate>Tue, 31 Mar 2026 20:17:51 +0000</pubDate>
      <link>https://dev.to/danielbilek/building-a-lego-like-remote-agent-jean2-17f9</link>
      <guid>https://dev.to/danielbilek/building-a-lego-like-remote-agent-jean2-17f9</guid>
      <description>&lt;p&gt;I'm a huge fan of coding agents. My daily consumption is at about &lt;strong&gt;30 million tokens&lt;/strong&gt; and growing. I started on Cursor, fell in love with OpenCode, got into customizing setups with MCPs, Skills, and subagent orchestration — all while daily-driving GLM, Minimax, GPT models, and everything I could get my hands on at OpenRouter just for the new and shiny.&lt;/p&gt;

&lt;p&gt;I love squeezing the best possible answers from small models with the right prompts. At some point, I wanted to use OpenCode for &lt;em&gt;everything&lt;/em&gt;, not just coding.&lt;/p&gt;

&lt;p&gt;And then I kinda hit a wall.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Wall
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Baked-in steering
&lt;/h3&gt;

&lt;p&gt;Coding agents come with baked-in prompts that already steer them in a certain direction — great for an out-of-the-box solution, not so great when you want full control. You can create your own agent with custom steering, but it's always &lt;strong&gt;appended&lt;/strong&gt; to whatever the system's baked-in prompt already says.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rigid tooling
&lt;/h3&gt;

&lt;p&gt;Built-in tools are already great, but you can't alter, remove, or modify them — not their prompts, not the tools themselves. Adding your own usually doesn't feel the same. These systems aren't really built around the concept of &lt;em&gt;bringing your own tools&lt;/em&gt;. Want an extra capability? Bring an MCP or a skill.&lt;/p&gt;

&lt;h3&gt;
  
  
  Session management
&lt;/h3&gt;

&lt;p&gt;The TUI is great, but managing multiple projects or conversations not tied to any specific project just wasn't a comfortable experience. There are now GUI and Web options that handle it much better, but at the time, there weren't really stable, comfortable choices.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multi-device continuity
&lt;/h3&gt;

&lt;p&gt;Throw the phone into the mix, and it wasn't really there yet either. I just wanted to be able to &lt;strong&gt;create a spec doc with the agent on my phone&lt;/strong&gt;, hand it off for execution, and review it on my laptop — seamlessly.&lt;/p&gt;




&lt;h2&gt;
  
  
  Enter Jean2
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;(Why Jean2 and not just Jean? Because Jean was kinda "not good.")&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So I started building. Here's what came out of it:&lt;/p&gt;

&lt;h3&gt;
  
  
  Always running, seamless experience
&lt;/h3&gt;

&lt;p&gt;Jean2 runs as a &lt;strong&gt;daemon with sockets and HTTP&lt;/strong&gt;. The goal is a seamless experience — open a desktop client on your laptop, prompt what you want, pick up your phone, watch progress, and handle permissions. You can close the clients and leave it running with an &lt;strong&gt;80–100 MB memory footprint&lt;/strong&gt; across 3 different projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Absolutely and completely dumb
&lt;/h3&gt;

&lt;p&gt;No baked-in prompts. Your agent system message and your &lt;code&gt;AGENT.md&lt;/code&gt; files are the &lt;em&gt;only&lt;/em&gt; things that form a system message. This means you're not limited to building "your coding agent" — you can build &lt;strong&gt;"your [anything] agent."&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  No baked-in tools
&lt;/h3&gt;

&lt;p&gt;Well — that's not &lt;em&gt;completely&lt;/em&gt; true. Technically, handling MCP, skill lookup, and subagents are tools, but nothing else is baked in. Tools are completely &lt;strong&gt;language-agnostic&lt;/strong&gt;. They're spawned on demand and undergo an explicit, upfront security check that &lt;em&gt;you&lt;/em&gt; define (if you want). You can yank anything out and drop anything in. All input is sent to tools via &lt;strong&gt;JSON stdin&lt;/strong&gt;, and all results are expected in &lt;strong&gt;JSON stdout&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There's also a built-in &lt;strong&gt;visualization property&lt;/strong&gt; that lets the tool decide how to display its results: diff, code, markdown, table, todo list — you name it. (These data are omitted when making API requests to the LLM, naturally.)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; You are in control of the tool definition and its description. If you notice a model not using a tool properly, you can just change it.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;Jean2 is still in &lt;strong&gt;active development&lt;/strong&gt; — but it's very usable. I've been coding with it for over a week.&lt;/p&gt;

&lt;p&gt;The next steps are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SDK &amp;amp; structured output&lt;/strong&gt; — so you can create your own apps with agent orchestration&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multimodal model support&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expanded tool offering&lt;/strong&gt; — fal.ai tools for image generation seem like a natural fit&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;If this sounds even a little interesting, check out &lt;a href="https://jean2.ai/" rel="noopener noreferrer"&gt;jean2.ai&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Got questions, ideas for tools, or tried it out and got lost in the setup? Hit me up at &lt;a href="https://x.com/danielbilekq0" rel="noopener noreferrer"&gt;@danielbilekq0&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>vibecoding</category>
    </item>
  </channel>
</rss>
