<?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: Louis Wu</title>
    <description>The latest articles on DEV Community by Louis Wu (@louisen0o0).</description>
    <link>https://dev.to/louisen0o0</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%2F4130209%2F852502ff-4e89-4b1d-b0b7-831eaba9840f.png</url>
      <title>DEV Community: Louis Wu</title>
      <link>https://dev.to/louisen0o0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/louisen0o0"/>
    <language>en</language>
    <item>
      <title>Why Switching AI Feels Like Restarting the Project</title>
      <dc:creator>Louis Wu</dc:creator>
      <pubDate>Fri, 18 Sep 2026 02:37:56 +0000</pubDate>
      <link>https://dev.to/louisen0o0/why-switching-ai-feels-like-restarting-the-project-3jck</link>
      <guid>https://dev.to/louisen0o0/why-switching-ai-feels-like-restarting-the-project-3jck</guid>
      <description>&lt;p&gt;You change the AI.&lt;/p&gt;

&lt;p&gt;Or you open a fresh session.&lt;/p&gt;

&lt;p&gt;The files are still there. The repository is intact. Nothing has been deleted.&lt;/p&gt;

&lt;p&gt;And yet the project somehow feels like it has gone back to day one.&lt;/p&gt;

&lt;p&gt;The new AI starts asking questions that were already settled. It re-checks work that was already verified. It proposes paths that were already rejected. Before it can continue, someone has to reconstruct the state of the project from chat history, commit history, notes, and memory.&lt;/p&gt;

&lt;p&gt;That is the failure mode I kept running into.&lt;/p&gt;

&lt;p&gt;I first thought the obvious explanation was: &lt;strong&gt;the AI needs a longer memory&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I no longer think that is the main problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  The missing thing is not more conversation
&lt;/h2&gt;

&lt;p&gt;Chat memory is useful for conversational continuity.&lt;/p&gt;

&lt;p&gt;RAG and knowledge retrieval are useful for finding information.&lt;/p&gt;

&lt;p&gt;But neither one necessarily answers the questions required to continue a piece of work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What task is active right now?&lt;/li&gt;
&lt;li&gt;What has already been completed?&lt;/li&gt;
&lt;li&gt;Which evidence has been verified?&lt;/li&gt;
&lt;li&gt;Which decisions are still valid?&lt;/li&gt;
&lt;li&gt;What should not be repeated?&lt;/li&gt;
&lt;li&gt;What is the exact next action?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are not really "memory" questions in the conversational sense.&lt;/p&gt;

&lt;p&gt;They are &lt;strong&gt;project-state questions&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A long transcript may contain the answers somewhere. A vector database may retrieve several relevant documents. But the next worker still has to infer the current state.&lt;/p&gt;

&lt;p&gt;That inference is where a lot of continuity gets lost.&lt;/p&gt;

&lt;h2&gt;
  
  
  Files are not the same as a resume point
&lt;/h2&gt;

&lt;p&gt;A repository can preserve everything and still be hard to resume.&lt;/p&gt;

&lt;p&gt;Imagine a project with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;200 files,&lt;/li&gt;
&lt;li&gt;30 commits,&lt;/li&gt;
&lt;li&gt;three design documents,&lt;/li&gt;
&lt;li&gt;two rejected approaches,&lt;/li&gt;
&lt;li&gt;one partially completed migration,&lt;/li&gt;
&lt;li&gt;and an important test result buried in yesterday's session.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All the information may technically exist.&lt;/p&gt;

&lt;p&gt;But the next AI still needs a compact answer to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Where exactly do I continue from?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is the same distinction as having all application data on disk versus having a process checkpoint.&lt;/p&gt;

&lt;p&gt;The data is there.&lt;/p&gt;

&lt;p&gt;The execution point is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the next AI actually needs
&lt;/h2&gt;

&lt;p&gt;For my own projects, the minimum useful handoff turned out to be surprisingly small:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Current Task&lt;/strong&gt; — what is being done now.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Done / Skip&lt;/strong&gt; — what has already been completed and should not be repeated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trusted Evidence&lt;/strong&gt; — what has actually been verified.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Active Decisions&lt;/strong&gt; — which choices still govern the work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Next Action&lt;/strong&gt; — the precise place to continue.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That can be represented in a tiny machine-readable state instead of another prose summary.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@task{id:#t42|goal:#g1|state:active|done:[#e69]|next:#a7}
@msg{op:resume|task:#t42|load:[#current,#e81]|skip:[#e69]|next:#a7}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part is not the syntax.&lt;/p&gt;

&lt;p&gt;The important part is that the next worker does not need to rediscover the execution state from history.&lt;/p&gt;

&lt;p&gt;It gets told what to load, what to skip, and where to continue.&lt;/p&gt;

&lt;h2&gt;
  
  
  This is why I built Resume the Scene
&lt;/h2&gt;

&lt;p&gt;I turned this idea into a small open-source project called &lt;strong&gt;Resume the Scene&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The goal is deliberately narrow:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Preserve the verified execution point of a project independently of chat history or model vendor.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It does not try to become another chat archive.&lt;/p&gt;

&lt;p&gt;It does not require a vector database.&lt;/p&gt;

&lt;p&gt;It does not put model identity into the core protocol.&lt;/p&gt;

&lt;p&gt;The project files remain the source of truth. Resume the Scene stores only the project-memory layer required to resume work: selection, typed state, references, verification metadata, checkpoints, and the next action.&lt;/p&gt;

&lt;p&gt;In v0.2, it also supports &lt;strong&gt;mapped layouts&lt;/strong&gt;, so an existing repository does not need to reorganize itself just to adopt project memory. Project, state, task, evidence, and decision files can remain where they already live and be mapped through &lt;code&gt;.resume/memory.rsm&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The handoff fixture is worker-neutral, and exact checkpoint/resume outputs are pinned in tests.&lt;/p&gt;

&lt;p&gt;The validator also fails closed on things such as path traversal, absolute paths, symlink escapes, duplicate document IDs, duplicate memory entries, and missing or duplicate primary authorities.&lt;/p&gt;

&lt;h2&gt;
  
  
  The mental model that changed for me
&lt;/h2&gt;

&lt;p&gt;I now separate three things:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conversation Memory&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
"What did we say?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Knowledge Memory / RAG&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
"What information exists?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project Memory&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
"What is true about the work right now, and where do we continue?"&lt;/p&gt;

&lt;p&gt;The first two are useful.&lt;/p&gt;

&lt;p&gt;But if the third one is missing, switching AI can still feel like restarting the project.&lt;/p&gt;

&lt;p&gt;That is the part I think agent systems are still under-specifying.&lt;/p&gt;

&lt;p&gt;We spend a lot of effort making models remember more.&lt;/p&gt;

&lt;p&gt;Maybe some projects need something simpler:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;a reliable resume point.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/louisen0o0/resume-the-scene" rel="noopener noreferrer"&gt;https://github.com/louisen0o0/resume-the-scene&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you work with multiple AI agents or long-running coding sessions, I would be interested in one question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the minimum state you need before you trust another AI to continue the task without rereading the whole history?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Project memory is not chat history: a tiny handoff layer for AI agents</title>
      <dc:creator>Louis Wu</dc:creator>
      <pubDate>Thu, 17 Sep 2026 16:05:02 +0000</pubDate>
      <link>https://dev.to/louisen0o0/project-memory-is-not-chat-history-a-tiny-handoff-layer-for-ai-agents-2n03</link>
      <guid>https://dev.to/louisen0o0/project-memory-is-not-chat-history-a-tiny-handoff-layer-for-ai-agents-2n03</guid>
      <description>&lt;p&gt;I kept running into the same failure mode when switching between AI workers, browser sessions, or machines: the files were still there, but the exact &lt;strong&gt;working point&lt;/strong&gt; was gone.&lt;/p&gt;

&lt;p&gt;Conversation memory can tell a model what was said. RAG can retrieve relevant documents. Neither one is a durable answer to four operational questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is true &lt;strong&gt;now&lt;/strong&gt;?&lt;/li&gt;
&lt;li&gt;Why is that state trusted?&lt;/li&gt;
&lt;li&gt;What is already complete and should not be repeated?&lt;/li&gt;
&lt;li&gt;What should happen next?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I built &lt;strong&gt;Resume the Scene&lt;/strong&gt; as a very small, model-agnostic project-memory layer for that gap.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/louisen0o0/resume-the-scene" rel="noopener noreferrer"&gt;https://github.com/louisen0o0/resume-the-scene&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update — v0.2.0 is now released:&lt;/strong&gt; mapped layouts for existing repositories, worker-neutral handoff fixtures, and fail-closed path/memory integrity checks. Release: &lt;a href="https://github.com/louisen0o0/resume-the-scene/releases/tag/v0.2.0" rel="noopener noreferrer"&gt;https://github.com/louisen0o0/resume-the-scene/releases/tag/v0.2.0&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea
&lt;/h2&gt;

&lt;p&gt;The project keeps the handoff in files that live with the repository. A task state can look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@task{id:#t42|goal:#g1|state:active|done:[#e69]|next:#a7}
@msg{op:resume|task:#t42|load:[#current,#e81]|skip:[#e69]|next:#a7}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part is not the syntax. The important part is that another worker can deterministically recover &lt;strong&gt;what to load, what to skip, and what to do next&lt;/strong&gt; without replaying the prior chat.&lt;/p&gt;

&lt;h2&gt;
  
  
  What v0.2 does
&lt;/h2&gt;

&lt;p&gt;Resume the Scene is intentionally thin:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;selects the project files that form the active memory set;&lt;/li&gt;
&lt;li&gt;gives project documents explicit semantic roles;&lt;/li&gt;
&lt;li&gt;validates deterministic &lt;code&gt;.rsm&lt;/code&gt; frames;&lt;/li&gt;
&lt;li&gt;produces checkpoint fingerprints;&lt;/li&gt;
&lt;li&gt;emits a compact resume message for the next worker;&lt;/li&gt;
&lt;li&gt;keeps project files as the source of truth instead of building a second knowledge base.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no vector database requirement, no model-specific identity in the core protocol, and no requirement to archive prompts or responses.&lt;/p&gt;

&lt;p&gt;v0.2 also adds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mapped layouts through &lt;code&gt;.resume/memory.rsm&lt;/code&gt;, so existing repositories do not need to move their project/state/task/evidence files;&lt;/li&gt;
&lt;li&gt;exact worker-neutral handoff outputs pinned in tests;&lt;/li&gt;
&lt;li&gt;fail-closed rejection of absolute paths, traversal, symlink escapes, duplicate document IDs, duplicate memory entries, and missing or duplicate primary authorities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A small cross-agent fixture
&lt;/h2&gt;

&lt;p&gt;The repository now includes a handoff example where one worker has already completed evidence &lt;code&gt;#e2&lt;/code&gt;, and the next worker resumes from the same task state:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;resume-scene checkpoint examples/handoff
resume-scene resume examples/handoff
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The resume result tells the next worker to skip completed evidence and continue with the next action. That fixture is executed in CI on Python 3.11, 3.12, and 3.13.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I am sharing it this early
&lt;/h2&gt;

&lt;p&gt;The implementation is small enough to change. The state model is the part I want challenged before it grows.&lt;/p&gt;

&lt;p&gt;If you regularly hand work between coding agents or long-lived AI sessions, I would especially like feedback on this question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What state would you need to trust before allowing a different agent to continue a real project without replaying the previous conversation?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The project is MIT licensed and the roadmap is public in GitHub Issues.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>showdev</category>
      <category>opensource</category>
      <category>python</category>
    </item>
  </channel>
</rss>
