<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>AI - Jul1en</title>
    <link>https://Jul1en-Lin.github.io/categories/ai/</link>
    <description>AI - Jul1en</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <copyright>Jul1en</copyright>
    <lastBuildDate>Sun, 05 Jul 2026 00:49:48 +0800</lastBuildDate>
    <atom:link href="https://Jul1en-Lin.github.io/categories/ai/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Claude Fable 5 提示指南</title>
      <link>https://Jul1en-Lin.github.io/p/claude-fable-5-%E6%8F%90%E7%A4%BA%E6%8C%87%E5%8D%97/</link>
      <pubDate>Sat, 04 Jul 2026 15:27:07 +0800</pubDate>
      <guid>https://Jul1en-Lin.github.io/p/claude-fable-5-%E6%8F%90%E7%A4%BA%E6%8C%87%E5%8D%97/</guid>
      <description>&lt;h1 id=&#34;claude-fable-5-提示指南&#34;&gt;
    Claude Fable 5 提示指南
&lt;/h1&gt;
&lt;p&gt;Anthropic 最近重新发布了 Fable 5 和 Mythos 5，随之配套更新了官方的提示指南。这篇笔记是对&lt;a class=&#34;link&#34; href=&#34;https://platform.claude.com/docs/zh-CN/build-with-claude/prompt-engineering/prompting-claude-fable-5&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;为 Claude Fable 5 编写提示&lt;/a&gt;
 这篇文档的阅读整理，主要关注从 Opus 4.8 迁移过来要注意哪些行为变化，以及在 agentic 场景下如何配置 prompt 和 scaffold&lt;/p&gt;
&lt;h2 id=&#34;背景与能力定位&#34;&gt;
    背景与能力定位
&lt;/h2&gt;
&lt;p&gt;Fable 5 的定位不太一样。文档一开始就说，取得最佳成果的团队会把它用在「最棘手的未解决问题」上，而不是在简单工作负载上测试它——因为那样往往会低估它的能力范围。&lt;/p&gt;
&lt;p&gt;和 Opus 4.8 相比，几个方向有明显改进：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;长周期自主性&lt;/strong&gt;：能连续跑多日的目标导向任务，在长期运行中保持指令记忆能力&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;首次正确率&lt;/strong&gt;：以往需要数天迭代的系统，有团队报告说现在可以一次性实现&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;视觉能力&lt;/strong&gt;：解读密集技术图像、截图的准确度显著提高，还经过训练可以用 bash 和裁剪工具处理翻转、模糊或含噪声的图像&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码审查&lt;/strong&gt;：跨代码库和仓库历史的缺陷发现召回率高于 Opus 4.8&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;应对模糊性&lt;/strong&gt;：收到复杂多线程请求时能自行界定范围、提出澄清问题并执行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;并行子 agent 调度&lt;/strong&gt;：比之前的模型更可靠，能稳定管理与子 agent 之间的持续通信&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不过有个限制需要注意：Fable 5 不适用于攻击性网络安全或生物/生命科学工作，它对此类敏感任务有严格的防护墙，这类请求会返回 &lt;code&gt;stop_reason: &amp;quot;refusal&amp;quot;&lt;/code&gt;，配置回退到 Opus 4.8。
挺搞笑的，在 X 上见到有人查 Claude Code 后台日志，发现了一个系统标签：&lt;code&gt;TOO_DUMB_TO_NEED_FABLE&lt;/code&gt;，被工程师嘲讽：说实话，我压根没想到你们真的会去翻日志😹&lt;/p&gt;
&lt;h2 id=&#34;行为变化与迁移要点&#34;&gt;
    行为变化与迁移要点
&lt;/h2&gt;
&lt;p&gt;文档里最核心的一部分，是讲从 Opus 4.8 迁移过来会遇到的几个行为差异。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;回合时长变长了。&lt;/strong&gt; 在较高 effort 设置下，单个请求可能运行数分钟，自主运行可能持续数小时。文档说这是团队适应 Fable 5 时遇到的最大转变之一。迁移前需要调整客户端超时、流式传输和进度指示器，并考虑把测试框架改成异步方式检查运行状态（比如定时任务），而不是阻塞等待。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;effort 控制是主要杠杆。&lt;/strong&gt; Fable 5 引入了 &lt;code&gt;high&lt;/code&gt; / &lt;code&gt;xhigh&lt;/code&gt; / &lt;code&gt;medium&lt;/code&gt; / &lt;code&gt;low&lt;/code&gt; 几个 effort 级别。文档建议大多数任务用 &lt;code&gt;high&lt;/code&gt; 作为默认值，能力最密集的工作负载用 &lt;code&gt;xhigh&lt;/code&gt;，日常工作用 &lt;code&gt;medium&lt;/code&gt; 或 &lt;code&gt;low&lt;/code&gt;。有个有意思的描述：Fable 5 上较低的 effort 设置通常超过先前模型 &lt;code&gt;xhigh&lt;/code&gt; 的性能——也就是说，没必要无脑拉满。&lt;/p&gt;
&lt;p&gt;再往下看，会发现在较高 effort 下它会做一些「超出任务所需」的事情：对没有问的选项进行比较、冗长地解释根本原因、写很重的 PR 描述，或给下一行代码写注释。文档说只需要一条简短的简洁性指令就能管住这些行为，不需要逐一列举。&lt;/p&gt;
&lt;h2 id=&#34;长时间运行场景的几个要点&#34;&gt;
    长时间运行场景的几个要点
&lt;/h2&gt;
&lt;p&gt;这部分对 agentic workflow 的设计影响较大&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核实进度声明。&lt;/strong&gt; 文档特别提到，在长时间自主运行中，要指示 Fable 5 根据实际工具结果审核进度。Anthropic 自己测试的结论是：这样做能几乎完全消除虚假状态报告，哪怕是专门设计用于诱发这类问题的任务也能规避。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;明确边界。&lt;/strong&gt; Fable 5 偶尔会做未经请求的操作——比如在没被要求时起草 email、创建防御性的 git 分支备份。需要在 prompt 里明确定义它应该做什么和不应该做什么。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;并行子 agent 调度。&lt;/strong&gt; 文档建议频繁使用子 agent，提供清晰的委派指导，并优先采用编排器与子 agent 之间的异步通信（而不是阻塞等待每个返回）。长期存活的子 agent 能在各子任务之间保留上下文，可以通过缓存读取节省时间，同时避免因最慢的子 agent 而出现瓶颈。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;记忆系统。&lt;/strong&gt; 文档说「当 Fable 5 能够记录先前运行的经验教训并加以参考时，其表现尤为出色」。建议提供一个记录笔记的位置，简单到一个 Markdown 文件就够了。还可以让它回顾过去的会话来引导记忆系统。&lt;/p&gt;
&lt;h2 id=&#34;两个比较少见但需要知道的情况&#34;&gt;
    两个比较少见但需要知道的情况
&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;罕见的提前停止。&lt;/strong&gt; 在长会话的深入阶段，Fable 5 偶尔会用纯文本的意图声明（「我现在将运行 X」）结束回合而不发出工具调用，或者在已有足够信息继续时暂停请求许可。这时候回复「继续」或「直接端到端完成」就可以了。对于自主 pipeline，文档建议加一条系统提醒处理这种情况。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;罕见的上下文预算担忧。&lt;/strong&gt; 在非常长的会话里，Fable 5 偶尔会建议开启新会话、提议总结并交接，或削减自己的工作。这种情况最常在测试框架向模型显示剩余 token 倒计时时触发。文档建议尽可能避免显示明确的上下文预算计数。&lt;/p&gt;
&lt;h2 id=&#34;可读性与沟通&#34;&gt;
    可读性与沟通
&lt;/h2&gt;
&lt;p&gt;在扩展对话或 agent 式对话中，Fable 5 可能会生成难以理解的文本：密集的箭头链式简写、深入的实现细节、引用用户从未看到的思考内容，或过于技术化的措辞。添加沟通风格补充说明可以缓解这个问题～&lt;/p&gt;
&lt;h2 id=&#34;迁移时的几个注意点&#34;&gt;
    迁移时的几个注意点
&lt;/h2&gt;
&lt;p&gt;文档最后整理了几条建议，值得关注的：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;从难度范围的顶端开始测试。&lt;/strong&gt; 选一个比分配给先前模型更难的任务，让 Fable 5 界定范围、提出澄清问题并执行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;重构现有的 prompt 和 skill。&lt;/strong&gt; 为之前模型开发的 skill 对 Fable 5 而言往往过于规定性，可能会降低输出质量。如果默认性能更好，应该审查并考虑移除旧指令。Fable 5 也擅长根据从当前任务学到的内容即时更新 skill。&lt;/p&gt;
&lt;p&gt;&lt;mark class=&#34;hltr-green-light&#34;&gt;个人觉得现在的模型能力越来越强，那些要求边界明显的 skill 会消灭模型探索的能力，这要求我们编写 skill 要适当规范化和更加的通用化，不应因为过多的边界而限制了模型的发挥。&lt;/mark&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不要指示 Claude 在响应中复现其推理。&lt;/strong&gt; 告诉模型将内部推理回显、转录或解释的 prompt 指令，可能会在 Fable 5 上触发 &lt;code&gt;reasoning_extraction&lt;/code&gt; 拒绝类别，导致更频繁回退到 Opus 4.8。迁移时需要审核现有 skill 和系统提示中的「展示思考过程」类指令。如果应用程序需要推理可见性，应该改为读取 adaptive thinking 中的结构化 &lt;code&gt;thinking&lt;/code&gt; 块。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;
    总结
&lt;/h2&gt;
&lt;p&gt;从这份文档来看，Fable 5 的核心转变是从「单次对话中的强大模型」变成了「能跑几天的自主 agent」。相应地，使用方式也需要从「逐条指令」转向「给目标、给边界、异步检查」。&lt;mark class=&#34;hltr-pink&#34;&gt;之前为 Opus 4.8 写的很多 prompt 技巧可能不再必要，甚至适得其反——这倒是给了一个机会重新审视并精简现有的框架。&lt;/mark&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Codex 工作流更新-v3</title>
      <link>https://Jul1en-Lin.github.io/p/codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0-v3/</link>
      <pubDate>Wed, 24 Jun 2026 21:49:31 +0800</pubDate>
      <guid>https://Jul1en-Lin.github.io/p/codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0-v3/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;相关博客：&lt;a class=&#34;link&#34; href=&#34;https://Jul1en-Lin.github.io/p/codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0-v2/&#34;&gt;Codex 工作流更新-v2&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&#34;codex-工作流更新-v3&#34;&gt;
    Codex 工作流更新-v3
&lt;/h1&gt;
&lt;p&gt;最近 OpenAI 的一篇博客： &lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/codex-maxxing-long-running-work/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Codex-maxxing for long-running work&lt;/a&gt;
 分享了关于长周期复杂任务的指南，并针对我已有的工作流作出一些更新。&lt;/p&gt;
&lt;p&gt;长周期的复杂任务通常不是一次 prompt 改完代码就结束。它可能要经历调查、实现、预览、反馈、等 CI、继续修改、准备 PR、后续检查。该博客更像是总结了 Claude Code &lt;code&gt;goal&lt;/code&gt; 和 &lt;code&gt;loop&lt;/code&gt; 命令的思想 💭
&lt;img src=&#34;https://Jul1en-Lin.github.io/p/codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0-v3/assets/codex-goal-command_hu_41c08fe038d8c1f0.webp&#34; width=&#34;1600&#34; height=&#34;85&#34; srcset=&#34;https://Jul1en-Lin.github.io/p/codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0-v3/assets/codex-goal-command_hu_a79440f631807ab7.webp 800w, https://Jul1en-Lin.github.io/p/codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0-v3/assets/codex-goal-command_hu_41c08fe038d8c1f0.webp 1600w, https://Jul1en-Lin.github.io/p/codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0-v3/assets/codex-goal-command_hu_2c42d395cd476487.webp 2400w&#34; sizes=&#34;(max-width: 860px) calc(100vw - 40px), 1060px&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; alt=&#34;Codex goal 命令&#34; class=&#34;gallery-image&#34; data-flex-grow=&#34;1883&#34; data-flex-basis=&#34;4520px&#34;&gt;

&lt;img src=&#34;https://Jul1en-Lin.github.io/p/codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0-v3/assets/codex-loop-command_hu_339e62a38d49b561.webp&#34; width=&#34;1600&#34; height=&#34;62&#34; srcset=&#34;https://Jul1en-Lin.github.io/p/codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0-v3/assets/codex-loop-command_hu_e3f75f88ecfcb239.webp 800w, https://Jul1en-Lin.github.io/p/codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0-v3/assets/codex-loop-command_hu_339e62a38d49b561.webp 1600w, https://Jul1en-Lin.github.io/p/codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0-v3/assets/codex-loop-command_hu_4900e02211b688f2.webp 2400w&#34; sizes=&#34;(max-width: 860px) calc(100vw - 40px), 1060px&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; alt=&#34;Codex loop 命令&#34; class=&#34;gallery-image&#34; data-flex-grow=&#34;2572&#34; data-flex-basis=&#34;6174px&#34;&gt;
&lt;/p&gt;
&lt;h2 id=&#34;v2-现状&#34;&gt;
    v2 现状
&lt;/h2&gt;
&lt;p&gt;v2 从项目初始化开始： &lt;code&gt;setup-light&lt;/code&gt; / &lt;code&gt;setup-full&lt;/code&gt; 生成 &lt;code&gt;AGENTS.md&lt;/code&gt;、&lt;code&gt;CLAUDE.md&lt;/code&gt; 和 &lt;code&gt;docs/&lt;/code&gt; 记忆文件，让 Agent 进入一个项目后，知道行为规范。它不太关注于任务线本身，比如预览页面谁来看，用户反馈放在哪里，PR review 几个小时后才来又怎么接着改，这些长期任务流程问题是 v2 未涉及的。&lt;/p&gt;
&lt;h2 id=&#34;长时间复杂任务&#34;&gt;
    长时间复杂任务
&lt;/h2&gt;
&lt;p&gt;OpenAI 这篇博客把 Codex 看成一个 persistent workspace：一件复杂任务有自己的线程、记忆、工具和审阅对象，重要的有以下几点。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Durable thread：&lt;/strong&gt; 给长期任务一个固定会话，维护会话的上下文、旧决策、待办和用户反馈容易丢失。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Memory：&lt;/strong&gt; 不只依赖聊天记录，而是把项目状态、决策、开放事项写进可以查看、可以 diff、可以复用的文件。对应到当前工作流里， &lt;code&gt;docs/&lt;/code&gt; 就承担了 memory 的作用，跨项目 or 会话的个性要求则可以放进个人记忆或知识库。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Steering：&lt;/strong&gt; Codex 工作时，用户可以继续补充 prompt。比如“先不要接短信登录”“这个错误提示太别扭”“等预览部署完再继续”。任务就不再是一次性指令，而是可以边做边调整的任务队列。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thread automation：&lt;/strong&gt; 定时任务，比如等待部署、看 review 是否更新、检查支持工单有没有新回复。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Side panel：&lt;/strong&gt; 产物本身要进入审阅循环。Markdown、CSV、PDF、slides、本地页面预览都可以直接作为审阅对象，用户的评论继续变成下一轮任务上下文。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Goals：&lt;/strong&gt; 目标要能有具体的量化标准：如要写清楚页面、接口、测试、异常情况分别达到什么结果。&lt;/p&gt;
&lt;p&gt;这些点合在一起，就能把任务进化成一个工作循环：&lt;/p&gt;
&lt;p&gt;&lt;mark class=&#34;hltr-green-light&#34;&gt;目标 -&amp;gt; 线程 -&amp;gt; 项目记忆 -&amp;gt; 调用工具 -&amp;gt; 产出 -&amp;gt; review -&amp;gt; 下一轮任务&lt;/mark&gt;&lt;/p&gt;
&lt;p&gt;这张图可以作为本次更新的总览。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://Jul1en-Lin.github.io/p/codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0-v3/assets/codex-workflow-v3-long-running-task_hu_47f8588aac4526db.webp&#34; width=&#34;1600&#34; height=&#34;1067&#34; srcset=&#34;https://Jul1en-Lin.github.io/p/codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0-v3/assets/codex-workflow-v3-long-running-task_hu_9a5f521f0e7d25d9.webp 800w, https://Jul1en-Lin.github.io/p/codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0-v3/assets/codex-workflow-v3-long-running-task_hu_47f8588aac4526db.webp 1600w, https://Jul1en-Lin.github.io/p/codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0-v3/assets/codex-workflow-v3-long-running-task_hu_f31b36230c8b4100.webp 2400w&#34; sizes=&#34;(max-width: 860px) calc(100vw - 40px), 1060px&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; alt=&#34;Codex 长期任务工作流总览&#34; class=&#34;gallery-image&#34; data-flex-grow=&#34;150&#34; data-flex-basis=&#34;360px&#34;&gt;
&lt;/p&gt;
&lt;h2 id=&#34;三层模型&#34;&gt;
    三层模型
&lt;/h2&gt;
&lt;p&gt;通过上述总结可以把工作流分成三层：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Thread：&lt;/strong&gt; 保存一条长期任务的上下文&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Project memory：&lt;/strong&gt; 保存 repo 内的事实，也就是 &lt;code&gt;AGENTS.md&lt;/code&gt; 和 &lt;code&gt;docs/*&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Execution surfaces：&lt;/strong&gt; 接触真实工作界面，比如 browser、Chrome、computer use、connectors、skills&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而 v2 正好属于 Project memory 这一层，所以不需要做改进。另外，长期任务容易越做越多，所以边界要提前写清楚，例如可以配置相关 Hooks&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;哪些任务适合长期线程？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不是所有任务都要开长期线程。一次性命令、小改动、马上能验完的问题，按 v2 的普通流程就够。&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;需要等待 CI、部署、review、第三方回复&lt;/li&gt;
&lt;li&gt;需要跨工具处理，比如 GitHub + 本地代码 + 浏览器&lt;/li&gt;
&lt;li&gt;后续可能沉淀成 skill&lt;/li&gt;
&lt;li&gt;中断后还要接着做&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;prompt-模板&#34;&gt;
    Prompt 模板
&lt;/h2&gt;
&lt;p&gt;下次遇到复杂任务需要长时间工作流的场景，可以直接这样编写 prompt：
可以手动引用 &lt;code&gt;loop&lt;/code&gt; &lt;code&gt;goal&lt;/code&gt; 命令进一步约束 Agent，确保执行正确&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;这是一个长期任务线程：&amp;lt;任务名&amp;gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;先读 AGENTS.md 和 docs/agent_workflow.md。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;必要时再读 docs/project_status.md、docs/project_spec.md、docs/architecture.md。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;目标：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- &amp;lt;目标 1&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- &amp;lt;目标 2&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;验收标准：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. &amp;lt;可以检查的结果&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. &amp;lt;需要运行的检查&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. &amp;lt;需要用户审阅的产物&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;执行规则：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 先调查，不要急着改代码
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 改前说明方案和影响范围
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 改后运行相关检查
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 涉及 UI 时，启动本地预览并给出地址
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 不要 push、发布、删除数据、发送消息，除非用户明确批准
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 任务中断前，更新 docs/project_status.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里的关键是验收标准要能检查。不要只写“完成登录功能”，而是写清楚哪些页面、哪些接口、哪些测试、哪些异常情况必须通过。&lt;/p&gt;
&lt;h2 id=&#34;tools&#34;&gt;
    Tools
&lt;/h2&gt;
&lt;p&gt;此外还要说清楚，任务需要碰到哪些工具。可手动引用或在规范文档、prompt 中提示&lt;/p&gt;
&lt;p&gt;常见选择：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本地网页预览：用 browser&lt;/li&gt;
&lt;li&gt;需要用户登录态：用 Chrome&lt;/li&gt;
&lt;li&gt;必须点桌面软件：用 computer use&lt;/li&gt;
&lt;li&gt;GitHub、Gmail、Slack、Calendar：用对应的 MCP&lt;/li&gt;
&lt;li&gt;反复使用的流程：整理成 skill&lt;/li&gt;
&lt;li&gt;需要隔一段时间回来查：用 thread automation&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;checkpoint-的判断&#34;&gt;
    checkpoint 的判断
&lt;/h2&gt;
&lt;p&gt;v2 里 checkpoint 更像 commit 前的项目状态检查；这里 checkpoint 更像一次任务阶段记录。&lt;/p&gt;
&lt;p&gt;需要 checkpoint 的情况包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当前阶段已经完成&lt;/li&gt;
&lt;li&gt;任务要暂停&lt;/li&gt;
&lt;li&gt;要交给另一个 Agent&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;与之前的 checkpoint 思想不同，不是为了每次 commit 都按需更新记忆文档，而是为了让任务之后能接上。如果只是普通小改动，就不需要每次都更新一堆 docs。&lt;/p&gt;
&lt;h2 id=&#34;复盘&#34;&gt;
    复盘
&lt;/h2&gt;
&lt;p&gt;v2 规定了 Agent 对项目的维护方式，v3 则是面对复杂长期任务时总结的思想&lt;/p&gt;
&lt;p&gt;博客来源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/codex-maxxing-long-running-work/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Codex-maxxing for long-running work&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Codex 工作流更新-v2</title>
      <link>https://Jul1en-Lin.github.io/p/codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0-v2/</link>
      <pubDate>Sat, 30 May 2026 00:00:00 +0800</pubDate>
      <guid>https://Jul1en-Lin.github.io/p/codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0-v2/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;相关博客：&lt;a class=&#34;link&#34; href=&#34;https://Jul1en-Lin.github.io/p/claude-%E8%BF%81%E7%A7%BB-codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0/&#34;&gt;Claude 迁移 Codex 工作流更新&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&#34;背景&#34;&gt;
    背景
&lt;/h1&gt;
&lt;p&gt;这次主要是在整理 Codex / Claude Code / 其他 Agent 之间的项目初始化工作流。
之前有两个入口，一个是偏 Claude 的 &lt;code&gt;setup&lt;/code&gt;，主要维护 &lt;code&gt;CLAUDE.md&lt;/code&gt;；另一个是偏 Codex 的 &lt;code&gt;codex-agents-init&lt;/code&gt;，主要维护 &lt;code&gt;AGENTS.md&lt;/code&gt;。刚开始看起来只是名字不同，但实际用的时候会发现，这两个入口很容易记混，而且 Agent 自己也不一定能稳定判断当前到底运行在 Claude Code、Codex，还是其他兼容环境里。&lt;/p&gt;
&lt;p&gt;所以这次调整的重点在于统一入口：以后都走 &lt;code&gt;setup&lt;/code&gt; 系列，只是根据项目复杂度分成 &lt;code&gt;setup-light&lt;/code&gt; 和 &lt;code&gt;setup-full&lt;/code&gt;。&lt;/p&gt;
&lt;h1 id=&#34;优化&#34;&gt;
    优化
&lt;/h1&gt;
&lt;p&gt;最后没有继续保留默认 &lt;code&gt;setup&lt;/code&gt;，也不再使用 &lt;code&gt;codex-agents-init&lt;/code&gt; 这个名字，而是拆成两个更明确的入口：&lt;code&gt;setup-light&lt;/code&gt; 和 &lt;code&gt;setup-full&lt;/code&gt;。
&lt;code&gt;setup-light&lt;/code&gt; 保留做小项目、脚本、demo、短期实验，只保留最基本的项目状态和 Agent 工作流记录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── AGENTS.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── CLAUDE.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── docs/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── project_status.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── agent_workflow.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;setup-full&lt;/code&gt; 适合长期项目、产品型项目、多 Agent 接力，需要完整一点的项目记忆：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── AGENTS.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── CLAUDE.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── docs/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── brainstorm.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── project_spec.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── architecture.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── project_status.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── changelog.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── decisions.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── agent_workflow.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── bugs/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里比较重要的是 &lt;code&gt;AGENTS.md&lt;/code&gt; 和 &lt;code&gt;CLAUDE.md&lt;/code&gt; 的关系。Codex 原生读取 &lt;code&gt;AGENTS.md&lt;/code&gt;，Claude Code 则通过 &lt;code&gt;CLAUDE.md&lt;/code&gt; 里的 &lt;code&gt;@AGENTS.md&lt;/code&gt; 间接读取同一份规则。也就是说真正维护的只有 &lt;code&gt;AGENTS.md&lt;/code&gt;，&lt;code&gt;CLAUDE.md&lt;/code&gt; 只是桥接文件，避免两边各写一套规则，后面越改越不一致。&lt;/p&gt;
&lt;h1 id=&#34;setup-现在负责什么&#34;&gt;
    setup 现在负责什么
&lt;/h1&gt;
&lt;p&gt;新的 setup 系列不再只服务 Claude，而是作为通用的项目初始化入口。它会创建或更新 &lt;code&gt;AGENTS.md&lt;/code&gt;，写入 &lt;code&gt;CLAUDE.md&lt;/code&gt; 的桥接内容，按 light / full 创建对应的 &lt;code&gt;docs/&lt;/code&gt; 文件，同时迁移旧的 &lt;code&gt;codex-long-term-docs&lt;/code&gt; block，移除旧的 &lt;code&gt;claude-long-term-docs&lt;/code&gt; block。&lt;/p&gt;
&lt;p&gt;这里需要注意的是，它只替换 managed block，不会整文件覆盖。已经存在的用户规则、已有的 docs 文件，都应该保留下来。&lt;code&gt;setup-light&lt;/code&gt; 实际调用的是 &lt;code&gt;--profile light&lt;/code&gt;，&lt;code&gt;setup-full&lt;/code&gt; 调用的是 &lt;code&gt;--profile full&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;codex-agents-init&lt;/code&gt; 目录已经删掉了，主要是避免以后又出现两个入口。后续如果继续改初始化逻辑，优先改 &lt;code&gt;setup-light&lt;/code&gt; / &lt;code&gt;setup-full&lt;/code&gt; 的 skill，尽量不要重新造一个新名字。&lt;/p&gt;
&lt;h1 id=&#34;agentsmd-的定位&#34;&gt;
    AGENTS.md 的定位
&lt;/h1&gt;
&lt;p&gt;这次我不想让 &lt;code&gt;AGENTS.md&lt;/code&gt; 变成一份很长的操作手册。它应该告诉 Agent 必须遵守什么，以及更详细的 workflow 去哪里读。checkpoint、commit、bug、handoff 的细节步骤，放到 &lt;code&gt;docs/agent_workflow.md&lt;/code&gt; 会更合适。&lt;/p&gt;
&lt;p&gt;所以 &lt;code&gt;AGENTS.md&lt;/code&gt; 里保留的是文件职责：&lt;code&gt;docs/brainstorm.md&lt;/code&gt; 是想法池，不能当最终需求；&lt;code&gt;docs/project_spec.md&lt;/code&gt; 是产品行为的事实来源；&lt;code&gt;docs/architecture.md&lt;/code&gt; 是系统设计和模块边界；&lt;code&gt;docs/project_status.md&lt;/code&gt; 记录当前里程碑、进度、阻塞和下一步；&lt;code&gt;docs/changelog.md&lt;/code&gt; 记录有意义的用户可见或开发可见变化；&lt;code&gt;docs/decisions.md&lt;/code&gt; 记录重要技术决策；复杂 bug 则先进入 &lt;code&gt;docs/bugs/&lt;/code&gt; 做研究报告。&lt;/p&gt;
&lt;p&gt;这次新增了一条比较关键的规则：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Before any git commit, check whether the change requires a checkpoint.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;意思是提交前不能只想着 &lt;code&gt;git commit&lt;/code&gt;，要先判断这次改动会不会影响项目长期记忆。如果影响产品行为、架构、依赖、项目进度、阻塞、下一步，或者涉及长时间任务交接，就要先更新相关 docs。&lt;/p&gt;
&lt;p&gt;具体的 checkpoint / commit / bug / handoff 流程则放到 &lt;code&gt;docs/agent_workflow.md&lt;/code&gt;。这样 &lt;code&gt;AGENTS.md&lt;/code&gt; 不会越来越长，Agent 真要执行的时候也有地方继续读。&lt;/p&gt;
&lt;h1 id=&#34;checkpoint-的作用&#34;&gt;
    checkpoint 的作用
&lt;/h1&gt;
&lt;p&gt;之前的 &lt;code&gt;/update-docs-and-commit&lt;/code&gt; 是有用的，因为它能让 AI 长时间自主工作时留下一个项目状态记录。但是这个命令是会在每次提交都会更新文档，对小项目来说没问题，但是对于一些长期的项目，还需要进一步的优化。&lt;/p&gt;
&lt;p&gt;所以后面改成 &lt;code&gt;/checkpoint&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/checkpoint&lt;/code&gt; 的逻辑是：先读当前项目记忆，优先看 &lt;code&gt;docs/agent_workflow.md&lt;/code&gt;，再看 &lt;code&gt;git status&lt;/code&gt; 和 diff，判断这次状态是否值得长期保存。如果值得保存，就更新 &lt;code&gt;docs/project_status.md&lt;/code&gt;，按需更新 &lt;code&gt;docs/changelog.md&lt;/code&gt;、&lt;code&gt;docs/decisions.md&lt;/code&gt;，复杂问题则补 &lt;code&gt;docs/bugs/&lt;/code&gt; 报告，最后再 commit 一次作为恢复点。&lt;/p&gt;
&lt;p&gt;它的作用更偏向状态判断：让 AI 在一个任务阶段结束时判断，现在这个状态以后还需不需要恢复。如果只是普通小改动，可以正常提交；但如果这次改动影响行为、架构、依赖、进度、阻塞、交接上下文或未解决风险，就应该先 checkpoint。我觉得 AI 能力越强，对它的 Hermes 应该适当放宽一些，让 AI 自主决定提交～&lt;/p&gt;
&lt;p&gt;当前规则是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The agent may propose a checkpoint, but must create one when changes affect behavior, architecture, dependencies, project status, blockers, next actions, long-running task progress, handoff context, or unresolved risk.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Commit only the checkpoint-relevant files and current work.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Do not push unless the user explicitly asks or the current task grants push/publish authorization.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里默认不 push。这样可以让 AI 自主维护状态，但不会未经授权把内容发布出去。&lt;/p&gt;
&lt;h1 id=&#34;setup-skill-排版重构&#34;&gt;
    setup skill 排版重构
&lt;/h1&gt;
&lt;p&gt;后来又对 &lt;code&gt;setup-light&lt;/code&gt; 和 &lt;code&gt;setup-full&lt;/code&gt; 的 &lt;code&gt;SKILL.md&lt;/code&gt; 做了一次排版重构。&lt;/p&gt;
&lt;p&gt;之前的问题是模板内容太靠前，Agent 一进来先看到一大段生成内容，反而不容易立刻知道自己应该怎么执行。后面改成先说明 profile 和事实来源，再写执行流程和安全规则，最后才放模板。&lt;/p&gt;
&lt;p&gt;新的主结构是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Profile
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Sources Of Truth
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Workflow
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Safety Rules
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Minimal Templates
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Managed Block
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样做的好处是，&lt;code&gt;Profile&lt;/code&gt; 先告诉 Agent light / full 分别适合什么项目；&lt;code&gt;Sources Of Truth&lt;/code&gt; 明确 &lt;code&gt;AGENTS.md&lt;/code&gt;、&lt;code&gt;CLAUDE.md&lt;/code&gt;、&lt;code&gt;SKILL.md&lt;/code&gt; 的职责；&lt;code&gt;Workflow&lt;/code&gt; 放在前面，Agent 不需要先读完大段模板；&lt;code&gt;Safety Rules&lt;/code&gt; 提前强调不能覆盖用户已有内容、不能自动 commit、不能做无关修改。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Minimal Templates&lt;/code&gt; 和 &lt;code&gt;Managed Block&lt;/code&gt; 继续保留在 &lt;code&gt;SKILL.md&lt;/code&gt; 中，脚本仍然从 skill 中抽取模板和 managed block。这样以后只需要改 skill，就能更新生成结果，不需要在脚本里再重复维护一份模板。&lt;/p&gt;
&lt;h1 id=&#34;复盘&#34;&gt;
    复盘
&lt;/h1&gt;
&lt;p&gt;这次更新的核心是把工作流拆清楚。初始化规则交给 &lt;code&gt;setup-light&lt;/code&gt; 和 &lt;code&gt;setup-full&lt;/code&gt;，长期项目记忆放进 &lt;code&gt;AGENTS.md&lt;/code&gt; 和 &lt;code&gt;docs/&lt;/code&gt;，Claude Code 通过 &lt;code&gt;@AGENTS.md&lt;/code&gt; 复用同一套规则，细流程放进 &lt;code&gt;docs/agent_workflow.md&lt;/code&gt;，长时间自主工作再靠 &lt;code&gt;/checkpoint&lt;/code&gt; 建立恢复点。&lt;/p&gt;
&lt;p&gt;我觉得这里比较重要的一点是：&lt;code&gt;AGENTS.md&lt;/code&gt; 只负责放最核心的规则和文件职责，尽量精简，如果需要更详细的说明可给出对应文件的索引，让 AI 按需寻找。比如一开始我规定 &lt;code&gt;AGENTS.md&lt;/code&gt; 里放着具体的 workflow 流程，具体到每一步都写上去了，那我们就可以将这些具体步骤放到 &lt;code&gt;docs/agent_workflow.md&lt;/code&gt;，在 &lt;code&gt;AGENTS.md&lt;/code&gt; 中只需给出对应的文档索引，模型就会去主动找，这样后面维护起来更清楚。&lt;/p&gt;
&lt;p&gt;这次还有一个经验：工作流本身也可以让 AI 参与 review，减少一次性拍定方案的风险。最开始只是想合并 Claude 和 Codex 的初始化入口，后来让 AI 从批判角度检查，发现 &lt;code&gt;AGENTS.md&lt;/code&gt; 承载了太多流程说明；再继续拆流程，又发现小项目不需要完整 docs，所以才拆成 light 和 full；最后又发现脚本不应该重复维护大量模板内容，于是改成从 &lt;code&gt;SKILL.md&lt;/code&gt; 里抽取模板。&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Claude 迁移 Codex 工作流更新</title>
      <link>https://Jul1en-Lin.github.io/p/claude-%E8%BF%81%E7%A7%BB-codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0/</link>
      <pubDate>Sun, 03 May 2026 14:25:17 +0000</pubDate>
      <guid>https://Jul1en-Lin.github.io/p/claude-%E8%BF%81%E7%A7%BB-codex-%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%9B%B4%E6%96%B0/</guid>
      <description>&lt;h1 id=&#34;claude-迁移-codex-工作流更新&#34;&gt;
    Claude 迁移 Codex 工作流更新
&lt;/h1&gt;
&lt;h1 id=&#34;工作流框架&#34;&gt;
    工作流框架
&lt;/h1&gt;
&lt;p&gt;这篇博客旨在为从 Claude 转到 Codex 的工作者提供一些注意事项与 Tips。&lt;/p&gt;
&lt;p&gt;Claude code 的工作方式与 Codex 还是有些许不一样，Claude code 更适合长对话的上下文，将模糊的想法转为可实现的东西，而 Codex 更专注于任务的执行，所以需要稍微改变一下我们的使用习惯。&lt;/p&gt;
&lt;p&gt;先介绍下我的 Claude 工作流，大致为：先沉淀想法&lt;code&gt;brainstorm.md&lt;/code&gt; → 生成规格文档&lt;code&gt;project_spec.md&lt;/code&gt; → 拆架构与里程碑 → issue 化 bug → 研究报告驱动修复 → commit 同步 changelog/status，维护项目的变更日志与进度。&lt;/p&gt;
&lt;p&gt;首先最明显的改变即是 &lt;code&gt;CLAUDE.md&lt;/code&gt; 改为 &lt;code&gt;AGENTS.md&lt;/code&gt;，但他们维护重心都是要求要短、准确、实用，不要写成又长又泛的“愿景文档”。&lt;/p&gt;
&lt;p&gt;我的长期维护文件也有变化，新增了&lt;code&gt;decisions.md&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── AGENTS.md                  # Codex 的长期项目指令，替代 CLAUDE.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── docs/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── brainstorm.md          # 想法池，偏发散
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── project_spec.md        # 产品规格，偏稳定
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── architecture.md        # 架构设计
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── project_status.md      # 当前进度与里程碑
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── changelog.md           # 用户可读/开发可读变更记录
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── decisions.md           # 重要技术决策记录
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── bugs/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│       └── issue-xxx-research.md  # 定位、写研究报告，再修 bug
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;我之前的工作流有一个问题，即每次commit会把变化放在 &lt;code&gt;project_status&lt;/code&gt; 和 &lt;code&gt;changelog&lt;/code&gt;，时间长了这部分记录会非常长，这类决策后面会反复影响实现。&lt;code&gt;decisions.md&lt;/code&gt; 专门记录技术取舍，比放进 &lt;code&gt;changelog&lt;/code&gt; 更清除&lt;/p&gt;
&lt;p&gt;在自己整理完想法文档后，建议不要让 Codex 直接让它根据对话结果自由生成项目规格，更加稳健的是执行以下指令&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;阅读 docs/brainstorm.md。&lt;/p&gt;
&lt;p&gt;请不要修改代码。只做需求整理，生成 docs/project_spec.md。&lt;/p&gt;
&lt;p&gt;要求：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;区分「已确定需求」「待确认问题」「暂不实现」&lt;/li&gt;
&lt;li&gt;每个核心功能必须包含：用户场景、输入、输出、边界条件、失败情况&lt;/li&gt;
&lt;li&gt;不要脑补未在 brainstorm 中出现的功能&lt;/li&gt;
&lt;li&gt;如果发现冲突，写入「待确认问题」，不要自行决定&lt;/li&gt;
&lt;li&gt;如果有不确定的则向用户提问，直至你有信心能完成最初的 MVP&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;h1 id=&#34;bug-工作流&#34;&gt;
    Bug 工作流
&lt;/h1&gt;
&lt;p&gt;我在 Claude 中处理 Bug 的工作流为：复杂 bug → 写研究报告research report → 提issue → 基于研究报告修复，这套工作流同样可适用于 Codex&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 1：创建研究报告&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;阅读 GitHub issue #23 和相关代码。&lt;/p&gt;
&lt;p&gt;第一阶段：只调查，不修改代码。&lt;br&gt;
请生成 docs/bugs/issue-23-research.md，内容包括：&lt;/p&gt;
&lt;ol&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;li&gt;风险点&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;完成后停止，不要修复。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Step 2：基于研究报告修复 bug&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;基于 docs/bugs/issue-23-research.md 修复 bug。&lt;/p&gt;
&lt;p&gt;要求：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先实现最小修复，不做无关重构&lt;/li&gt;
&lt;li&gt;添加或更新测试&lt;/li&gt;
&lt;li&gt;运行相关测试&lt;/li&gt;
&lt;li&gt;更新 docs/changelog.md 和 docs/project_status.md&lt;/li&gt;
&lt;li&gt;最后给出变更摘要、测试结果、风险说明&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;当然，可以将这些可复用的prompt封装成skill或者专属于你的命令行，这都是可行的。&lt;/p&gt;
&lt;h1 id=&#34;维护记忆文档&#34;&gt;
    维护记忆文档
&lt;/h1&gt;
&lt;p&gt;上述提到的维护长期文件，我们可以将这套规则写入 Codex 的记忆文档中，我们每次初始化记忆文档时，Codex 就会自动帮我们维护这些长期文件，这对长时间的工作是非常重要。&lt;/p&gt;
&lt;p&gt;同样我们也可以创建相关的skill&lt;/p&gt;
&lt;p&gt;以在 Windows PowerShell 为例，创建这个目录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;\.agents\skills\codex-agents-init&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;\.agents\skills\codex-agents-init\scripts&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;~/.codex&lt;/code&gt; 主要是 Codex 配置和全局 &lt;code&gt;AGENTS.md&lt;/code&gt;；用户级 Skill 的推荐位置是 &lt;code&gt;$HOME/.agents/skills&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;然后创建SKILL.md：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;notepad &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;\.agents\skills\codex-agents-init\SKILL.md&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;把下面内容完整粘进去👇：&lt;/p&gt;
&lt;blockquote&gt;
&lt;hr&gt;
&lt;p&gt;name: codex-agents-init&lt;br&gt;
description: Initialize or update a repository AGENTS.md for Codex with long-term documentation maintenance rules. Use this when the user asks to initialize AGENTS.md, set up Codex project instructions, add docs/project_spec.md architecture/status/changelog rules, or create a document-driven Codex workflow.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&#34;codex-agentsmd-initialization-skill&#34;&gt;
    Codex AGENTS.md Initialization Skill
&lt;/h1&gt;
&lt;p&gt;Use this skill when the user asks to initialize or update Codex project instructions, especially with phrases like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;初始化 AGENTS.md&lt;/li&gt;
&lt;li&gt;初始化 agents&lt;/li&gt;
&lt;li&gt;创建 Codex 项目规范&lt;/li&gt;
&lt;li&gt;加上长期文件维护规则&lt;/li&gt;
&lt;li&gt;初始化 docs 工作流&lt;/li&gt;
&lt;li&gt;添加 project_spec / architecture / project_status / changelog 维护规范&lt;/li&gt;
&lt;li&gt;set up AGENTS.md for this repo&lt;/li&gt;
&lt;li&gt;initialize Codex instructions&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;goal&#34;&gt;
    Goal
&lt;/h2&gt;
&lt;p&gt;Create or update the current repository so that Codex has durable project instructions and long-term documentation maintenance rules.&lt;/p&gt;
&lt;p&gt;The expected repository structure is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── AGENTS.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── docs/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── brainstorm.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── project_spec.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── architecture.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── project_status.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── changelog.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── decisions.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── bugs/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Required behavior&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When invoked:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Locate the repository root.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prefer &lt;code&gt;git rev-parse --show-toplevel&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If that fails, use the current working directory.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create &lt;code&gt;AGENTS.md&lt;/code&gt; if it does not exist.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If &lt;code&gt;AGENTS.md&lt;/code&gt; exists, preserve existing content.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not delete existing project-specific rules.&lt;/li&gt;
&lt;li&gt;Do not overwrite the whole file.&lt;/li&gt;
&lt;li&gt;Append or replace only the managed block marked by:&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;!-- BEGIN: codex-long-term-docs --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;!-- END: codex-long-term-docs --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;
&lt;p&gt;Ensure these files/directories exist:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docs/brainstorm.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs/project_spec.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs/architecture.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs/project_status.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs/changelog.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs/decisions.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs/bugs/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do not overwrite existing documentation files.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If a file already exists, leave its content unchanged.&lt;/li&gt;
&lt;li&gt;If a file is missing, create it with a minimal useful template.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add long-term maintenance rules to &lt;code&gt;AGENTS.md&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The rules must state:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docs/brainstorm.md&lt;/code&gt; is an idea pool and must not be treated as final requirements.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs/project_spec.md&lt;/code&gt; is the source of truth for product behavior.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs/architecture.md&lt;/code&gt; is the source of truth for system design and module boundaries.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs/project_status.md&lt;/code&gt; tracks current milestone, progress, blockers, and next actions.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs/changelog.md&lt;/code&gt; records user-visible or developer-visible behavior changes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs/decisions.md&lt;/code&gt; records important technical decisions and rationale.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs/bugs/&lt;/code&gt; stores complex bug investigation reports.&lt;/li&gt;
&lt;li&gt;For complex bugs, first create a research report under &lt;code&gt;docs/bugs/&lt;/code&gt;, then implement the fix in a separate step unless the user explicitly asks otherwise.&lt;/li&gt;
&lt;li&gt;Before finishing implementation tasks, update &lt;code&gt;docs/changelog.md&lt;/code&gt; and &lt;code&gt;docs/project_status.md&lt;/code&gt; when relevant.&lt;/li&gt;
&lt;li&gt;Do not perform broad rewrites or unrelated refactors during initialization.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;7&#34;&gt;
&lt;li&gt;Prefer using the bundled script:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;powershell -ExecutionPolicy Bypass -File .agents/skills/codex-agents-init/scripts/init-codex-agents.ps1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If the skill is installed in the user-level skill directory, run the script from that location instead:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;powershell -ExecutionPolicy Bypass -File &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;\.agents\skills\codex-agents-init\scripts\init-codex-agents.ps1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;8&#34;&gt;
&lt;li&gt;
&lt;p&gt;After running, summarize:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Created files&lt;/li&gt;
&lt;li&gt;Skipped existing files&lt;/li&gt;
&lt;li&gt;Updated &lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Any errors or manual follow-up needed&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Safety rules&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Never delete existing documentation.&lt;/li&gt;
&lt;li&gt;Never overwrite an existing &lt;code&gt;AGENTS.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Never make unrelated code changes.&lt;/li&gt;
&lt;li&gt;Never commit automatically unless the user explicitly asks.&lt;/li&gt;
&lt;li&gt;If shell execution is unavailable, perform the same changes manually.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;然后创建脚本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;notepad &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;\.agents\skills\codex-agents-init\scripts\init-codex-agents.ps1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在脚本里粘贴下面这份：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ErrorActionPreference = &amp;#34;Stop&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;function Get-RepoRoot {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  try {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    $root = git rev-parse --show-toplevel 2&amp;gt;$null
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    if ($LASTEXITCODE -eq 0 -and $root) {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      return $root.Trim()
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  } catch {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    # Fallback below.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  return (Get-Location).Path
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$RepoRoot = Get-RepoRoot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Set-Location $RepoRoot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$Created = New-Object System.Collections.Generic.List[string]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$Skipped = New-Object System.Collections.Generic.List[string]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$Updated = New-Object System.Collections.Generic.List[string]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;function Ensure-Directory {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  param([string]$Path)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  if (!(Test-Path $Path)) {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    New-Item -ItemType Directory -Path $Path -Force | Out-Null
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    $Created.Add($Path + &amp;#34;/&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  } else {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    $Skipped.Add($Path + &amp;#34;/&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;function Ensure-File {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  param(
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    [string]$Path,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    [string]$Content
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  )
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  $Dir = Split-Path $Path
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  if ($Dir -and !(Test-Path $Dir)) {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    New-Item -ItemType Directory -Path $Dir -Force | Out-Null
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    $Created.Add($Dir + &amp;#34;/&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  if (Test-Path $Path) {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    $Skipped.Add($Path)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    return
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Set-Content -Path $Path -Value $Content -Encoding UTF8
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  $Created.Add($Path)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$AgentsBlock = @&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;!-- BEGIN: codex-long-term-docs --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Long-term documentation workflow
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This repository uses durable documentation files under `docs/` as project memory. Before modifying code, read the relevant documentation files and preserve their roles.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;### Documentation sources of truth
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- `docs/brainstorm.md`: rough ideas, pain points, and early product thinking. Do not treat this file as final requirements.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- `docs/project_spec.md`: source of truth for product behavior, user scenarios, accepted requirements, non-goals, edge cases, and failure behavior.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- `docs/architecture.md`: source of truth for system design, module boundaries, data flow, key abstractions, dependencies, and trade-offs.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- `docs/project_status.md`: source of truth for current milestone, progress, blockers, open questions, and next actions.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- `docs/changelog.md`: chronological record of user-visible or developer-visible behavior changes.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- `docs/decisions.md`: important technical decisions and their rationale.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- `docs/bugs/`: complex bug investigation reports.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;### Before implementation
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Read `docs/project_spec.md`, `docs/architecture.md`, and `docs/project_status.md` when relevant.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- If `docs/brainstorm.md` conflicts with `docs/project_spec.md`, follow `docs/project_spec.md`.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- If requirements are ambiguous, record assumptions or questions in `docs/project_status.md` instead of silently guessing.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Prefer small, coherent, reversible changes.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;### Complex bug workflow
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;For complex bugs:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. First create a research report under `docs/bugs/`.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. The report should include:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   - Symptom summary
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   - Minimal reproduction path
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   - Related files and call chain
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   - Root-cause hypotheses ranked by likelihood
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   - Recommended fix
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   - Required tests
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   - Risks and rollback notes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. Do not implement the fix in the same step unless explicitly asked.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;### Before finishing a task
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Run relevant tests, or explain why they could not be run.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Update `docs/changelog.md` when behavior changes, a feature is added, a user-visible bug is fixed, configuration changes, or a breaking change is introduced.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Update `docs/project_status.md` when milestone progress, blockers, or next actions change.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Do not update `docs/changelog.md` for pure formatting, comment-only changes, test-only refactors, or internal renames with no behavior change.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Summarize changed files, tests run, and remaining risks.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;!-- END: codex-long-term-docs --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;@
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;function Ensure-AgentsMd {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  $Path = &amp;#34;AGENTS.md&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  if (!(Test-Path $Path)) {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Set-Content -Path $Path -Value &amp;#34;# AGENTS.md`n`n$AgentsBlock`n&amp;#34; -Encoding UTF8
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    $Created.Add($Path)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    return
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  $Existing = Get-Content -Path $Path -Raw
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  $Pattern = &amp;#34;(?s)&amp;lt;!-- BEGIN: codex-long-term-docs --&amp;gt;.*?&amp;lt;!-- END: codex-long-term-docs --&amp;gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  if ($Existing -match $Pattern) {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    $NewContent = [regex]::Replace($Existing, $Pattern, $AgentsBlock.Trim())
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Set-Content -Path $Path -Value $NewContent -Encoding UTF8
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    $Updated.Add($Path + &amp;#34; managed block&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    return
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  $Separator = if ($Existing.Trim().Length -eq 0) { &amp;#34;&amp;#34; } else { &amp;#34;`n`n&amp;#34; }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Add-Content -Path $Path -Value ($Separator + $AgentsBlock)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  $Updated.Add($Path + &amp;#34; appended managed block&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ensure-AgentsMd
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ensure-File &amp;#34;docs/brainstorm.md&amp;#34; @&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Brainstorm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This file stores rough ideas, pain points, feature intuition, and early product thinking.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Do not treat this file as final requirements.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Raw ideas
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Pain points
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Core feature candidates
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Open questions
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;@
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ensure-File &amp;#34;docs/project_spec.md&amp;#34; @&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Project Specification
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This file is the source of truth for product behavior.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Product goal
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Users and scenarios
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Core requirements
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Non-goals
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Inputs and outputs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Edge cases
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Failure behavior
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Acceptance criteria
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;@
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ensure-File &amp;#34;docs/architecture.md&amp;#34; @&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Architecture
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This file is the source of truth for system design and module boundaries.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Overview
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Module boundaries
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Data flow
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Key abstractions
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## External dependencies
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Risks and trade-offs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;@
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ensure-File &amp;#34;docs/project_status.md&amp;#34; @&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Project Status
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Current milestone
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Milestone:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Status:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Done
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## In progress
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Blocked / Questions
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Next actions
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;@
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ensure-File &amp;#34;docs/changelog.md&amp;#34; @&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Changelog
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;All notable changes to this project should be documented here.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Unreleased
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;### Added
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;### Changed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;### Fixed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;### Removed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;@
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ensure-File &amp;#34;docs/decisions.md&amp;#34; @&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Technical Decisions
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This file records important technical decisions and their rationale.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Template
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;### YYYY-MM-DD - Decision title
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Status: Proposed / Accepted / Rejected / Superseded
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Context:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Decision:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Alternatives considered:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Consequences:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;@
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ensure-Directory &amp;#34;docs/bugs&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Write-Host &amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Write-Host &amp;#34;Codex AGENTS.md documentation workflow initialized.&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Write-Host &amp;#34;Repository root: $RepoRoot&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Write-Host &amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Write-Host &amp;#34;Created:&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;if ($Created.Count -eq 0) {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Write-Host &amp;#34;  - None&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;} else {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  $Created | ForEach-Object { Write-Host &amp;#34;  - $_&amp;#34; }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Write-Host &amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Write-Host &amp;#34;Updated:&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;if ($Updated.Count -eq 0) {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Write-Host &amp;#34;  - None&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;} else {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  $Updated | ForEach-Object { Write-Host &amp;#34;  - $_&amp;#34; }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Write-Host &amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Write-Host &amp;#34;Skipped existing:&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;if ($Skipped.Count -eq 0) {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Write-Host &amp;#34;  - None&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;} else {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  $Skipped | ForEach-Object { Write-Host &amp;#34;  - $_&amp;#34; }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样你的 Skill 结构就是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$HOME\.agents\skills\codex-agents-init\
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── scripts\
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── init-codex-agents.ps1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;保存后，重启 Codex 桌面端,之后你在 Codex 里可以这样说：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;/codex-agents-init 初始化当前项目的 AGENTS.md，并加上长期文件维护规范。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;或者直接说：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;初始化 AGENTS.md，并创建 docs/project_spec.md、architecture.md、project_status.md、changelog.md 等长期维护文件。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&#34;结语&#34;&gt;
    结语
&lt;/h1&gt;
&lt;p&gt;以上就是我目前的工作流的整体迁移，整体来说都是比较无缝衔接的，希望这篇帖子对你有所帮助~&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
