<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Developer-Tools on Armstrong Yan</title><link>https://yanqian.github.io/zh/topics/developer-tools/</link><description>Recent content in Developer-Tools on Armstrong Yan</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Tue, 21 Jul 2026 09:21:48 +0800</lastBuildDate><atom:link href="https://yanqian.github.io/zh/topics/developer-tools/index.xml" rel="self" type="application/rss+xml"/><item><title>我做了一个小型 Harness，防止 AI 编程项目丢失状态</title><link>https://yanqian.github.io/zh/posts/publish/i-built-a-small-harness-to-stop-ai-coding-projects-from-forgetting-state/</link><pubDate>Tue, 21 Jul 2026 09:21:48 +0800</pubDate><guid>https://yanqian.github.io/zh/posts/publish/i-built-a-small-harness-to-stop-ai-coding-projects-from-forgetting-state/</guid><description>&lt;p&gt;AI 编程智能体很强大。&lt;/p&gt;
&lt;p&gt;但项目一旦拉长，往往会在一些非常具体的地方出问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;会话突然中断&lt;/li&gt;
&lt;li&gt;上下文越积越长&lt;/li&gt;
&lt;li&gt;每周额度耗尽&lt;/li&gt;
&lt;li&gt;第二天接手的智能体忘了前一天做过哪些决定&lt;/li&gt;
&lt;li&gt;智能体改动了无关文件&lt;/li&gt;
&lt;li&gt;工作明明还没完成，智能体却提前宣布结束&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;问题不在于 AI 不会写代码。&lt;/p&gt;
&lt;p&gt;真正的问题是，AI 编程项目往往没有持久的项目状态。&lt;/p&gt;
&lt;p&gt;所以，我做了一个小型开源模板：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/yanqian/ai-agent-harness-template" class="external-link" target="_blank" rel="noopener"&gt;ai-agent-harness-template&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;它的目标很简单：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;让 AI 编程项目随时都能恢复并继续推进。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="这不是提示词合集"&gt;
 这不是提示词合集
 &lt;a class="heading-link" href="#%e8%bf%99%e4%b8%8d%e6%98%af%e6%8f%90%e7%a4%ba%e8%af%8d%e5%90%88%e9%9b%86"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;现在已经有很多实用的提示词合集。&lt;/p&gt;
&lt;p&gt;但这个模板不是。&lt;/p&gt;
&lt;p&gt;它是一套仓库级 Harness，专门用于需要长期推进的 AI 编程项目。&lt;/p&gt;
&lt;p&gt;适用工具包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Codex&lt;/li&gt;
&lt;li&gt;Claude Code&lt;/li&gt;
&lt;li&gt;Cursor Agent&lt;/li&gt;
&lt;li&gt;其他类似的编程智能体&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不过，它不依赖任何一家厂商。&lt;/p&gt;
&lt;p&gt;控制边界就是仓库本身。&lt;/p&gt;
&lt;h2 id="核心思路"&gt;
 核心思路
 &lt;a class="heading-link" href="#%e6%a0%b8%e5%bf%83%e6%80%9d%e8%b7%af"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;应该把智能体当作无状态工作进程来用。&lt;/p&gt;
&lt;p&gt;它们不该依赖聊天记录。&lt;/p&gt;
&lt;p&gt;每次开始工作时，都应该根据仓库文件重新建立上下文。&lt;/p&gt;
&lt;p&gt;这个模板把持久状态保存在以下文件中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SPEC.md&lt;/code&gt;：保存需求&lt;/li&gt;
&lt;li&gt;&lt;code&gt;feature_list.json&lt;/code&gt;：保存可执行的功能状态&lt;/li&gt;
&lt;li&gt;&lt;code&gt;progress.md&lt;/code&gt;：保存恢复工作所需的记录&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;：保存智能体规则&lt;/li&gt;
&lt;li&gt;&lt;code&gt;QUALITY.md&lt;/code&gt;：保存评估标准&lt;/li&gt;
&lt;li&gt;&lt;code&gt;runs/&lt;/code&gt;：保存证据和交接记录&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样一来，后来接手的智能体、人工维护者和 CI 都以同一份信息为准。&lt;/p&gt;
&lt;p&gt;仓库现在还提供了一个可安装的 AI Agent Harness skill。&lt;/p&gt;
&lt;p&gt;这个 skill 不是另一套数据库。&lt;/p&gt;
&lt;p&gt;它只是同一套仓库状态协议的便捷入口。&lt;/p&gt;
&lt;p&gt;真正持久的记忆依然留在仓库里。&lt;/p&gt;
&lt;h2 id="为什么聊天记录不适合充当数据库"&gt;
 为什么聊天记录不适合充当数据库
 &lt;a class="heading-link" href="#%e4%b8%ba%e4%bb%80%e4%b9%88%e8%81%8a%e5%a4%a9%e8%ae%b0%e5%bd%95%e4%b8%8d%e9%80%82%e5%90%88%e5%85%85%e5%bd%93%e6%95%b0%e6%8d%ae%e5%ba%93"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;聊天记录可以提供有用的上下文。&lt;/p&gt;</description></item></channel></rss>