<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Qiulin Fan</title><description>Mathematics, systems, research, and games</description><link>https://qiulinfan.github.io/</link><language>zh_CN</language><item><title>将 kgdistiller 变成 Skills 的外接大脑：职责拆分需求文档</title><link>https://qiulinfan.github.io/posts/kgdistiller-skill-separation-requirements/</link><guid isPermaLink="true">https://qiulinfan.github.io/posts/kgdistiller-skill-separation-requirements/</guid><description>记录笔记导出、论文概念提取、知识库查询与知识入库四类 Skill 的职责拆分、接口边界和实施计划。</description><pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这是一份面向实现的需求文档。它记录为什么要把现有的知识图谱工作流拆成四个职责明确的 Skill，以及 kgdistiller 作为“外接大脑”时必须提供怎样的查询、对齐和入库边界。&lt;/p&gt;
&lt;h2&gt;用户原始需求（逐字记录）&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;你说的有一点是不对的, 需要我纠正:
- &quot;qlblog 固定使用仓库内的 kgdistiller 版本，CI 不再偷偷跟随外部 main&quot;
恰恰相反, 我会经常更新 qlblog 中, kgdistiller 的版本. 并且我正在计划, 把这个流程按照职能划分给多个 skills.
现在我需要实现:

我希望原本的:
- 1. 笔记 export  web-&amp;gt; 顺便提取知识图谱的 skill, 只负责好(识别我直接写的知识图谱以及) 从 git 改动中提取知识图谱的这一步. 而它原本还需要
  - 在提取的知识图谱的过程中, 确认哪些是现有的知识图谱中已经有的. 不添加新的词条, 而是给 ref
  - 负责把知识图谱合进大的知识图谱里
- 2. 从论文中提取知识图谱的 skill, 只负责好从论文中提取知识图谱; 而它有一步是: 在给出所有知识词条的解释之前, 先查询现有的知识图谱(现在改成查询现有的知识库), 确认哪些知识是已经有的, 便:
  - 不再给出这些知识的词条
  - 并且通过这些知识节点, 连接两张图谱(不并进大的个人知识图谱里, 只是给一个快照. 只有额外要求时才会并进去并给出源)
这些行为, 原本都是属于这两个 skills 的职能. 但是太冗长. 一方面, 单个 skill 负责太多功能会导致幻觉; 另一方面, 它们原本阅读大的知识图谱, 会导致 tokens 消耗过多.

我希望职能分责. 现在我们做了这个仓库, 本质就是: 给它们一个外接大脑. 这个知识图谱的知识源全部封装在这个kgdistiller 的数据库里. 它提供入库和查询 api 即可!

入库和查询, 分别做成一个 skill, 伴随着 kgdistiller. 它们给现有的两个 skills 调用.

这是一件宏大的事情, 其实就是精简现有的两个 skills, 以及创造两个新的 skills. 我们可以暂时不管现在的这个 graphRAG 知识库系统实现的精准度如何, 先精确地规划这一套流程.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;后续交付要求同样逐字记录：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;非常好, 把我的要求 (原话) 以及你刚才的这段理解全部写成 dev blog: 需求文档
然后推送. 然后先实现全部的 skills, 再交给我 review
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;已确认的理解与方案&lt;/h2&gt;
&lt;p&gt;正确的版本策略应该是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;kgdistiller 高频升级，单次运行可追溯。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;qlblog&lt;/code&gt; 会持续跟随 kgdistiller 的 &lt;code&gt;main&lt;/code&gt; 并经常更新 submodule revision；每个 qlblog commit 记录当次实际使用的版本，以便复现，而不是永久固定在某个版本。&lt;/p&gt;
&lt;h2&gt;一、最终只保留四个职责&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;唯一职责&lt;/th&gt;
&lt;th&gt;不再负责&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;extract-and-export-notes&lt;/code&gt;（原 &lt;code&gt;export-typst-math-notes&lt;/code&gt;）&lt;/td&gt;
&lt;td&gt;从任意领域 Git 改动和用户显式 marker 中提取候选图，按查询结果写 &lt;code&gt;kn/ref&lt;/code&gt;，最后导出网页&lt;/td&gt;
&lt;td&gt;读取完整知识图谱、执行身份匹配、直接合并全局图谱&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;extract-paper-concepts&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;通读论文，生成独立论文候选图和论文内部学习关系&lt;/td&gt;
&lt;td&gt;读取个人大图谱、重复解释已知词条、默认导入个人图谱&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;新建 &lt;code&gt;query-kgdistiller&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;只读查询、批量消歧、GraphRAG、候选图对齐和比较&lt;/td&gt;
&lt;td&gt;修改 authority、alignment 或个人图谱&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;新建 &lt;code&gt;ingest-kgdistiller&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;将已经审查的 marker、entry、ref、edge 事务性写入知识库&lt;/td&gt;
&lt;td&gt;从原文发现概念、猜测歧义身份、读取整篇论文&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;现有 &lt;code&gt;kgdistiller-distill&lt;/code&gt; 与新结构重复，完成迁移后退出主流程，只保留短期兼容入口或直接删除。&lt;/p&gt;
&lt;h2&gt;二、外接大脑的真正边界&lt;/h2&gt;
&lt;p&gt;从其他 Skill 看，kgdistiller 是一个不透明知识库：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;flowchart LR
    N[&quot;笔记 Git diff&quot;] --&amp;gt; C[&quot;候选图快照&quot;]
    P[&quot;论文全文&quot;] --&amp;gt; C
    C --&amp;gt; Q[&quot;query-kgdistiller&amp;lt;br/&amp;gt;只读查询与对齐&quot;]
    Q --&amp;gt; D{&quot;调用场景&quot;}
    D --&amp;gt;|笔记| I[&quot;ingest-kgdistiller&amp;lt;br/&amp;gt;唯一图谱写入口&quot;]
    I --&amp;gt; K[&quot;个人知识库&quot;]
    K --&amp;gt; W[&quot;网页导出&quot;]
    D --&amp;gt;|论文默认| S[&quot;论文 × 个人图谱&amp;lt;br/&amp;gt;联邦快照&quot;]
    S --&amp;gt;|明确要求导入| I
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;上游 Skill 禁止：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;打开或遍历 &lt;code&gt;knowledge/graph/*.jsonl&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;直接读取 SQLite；&lt;/li&gt;
&lt;li&gt;自己实现名字匹配、别名判断或图遍历；&lt;/li&gt;
&lt;li&gt;自己执行 &lt;code&gt;apply/sync&lt;/code&gt; 合并全局图谱。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它们只能传入候选图路径或查询条件，并接收一个受预算限制的结构化结果。&lt;/p&gt;
&lt;p&gt;内部仍保持“Markdown/Typst/LaTeX 是权威源、SQLite 是可重建索引”的原则。所谓“知识全部封装在数据库里”，是对调用方的封装，而不是丢弃来源文件和 provenance。&lt;/p&gt;
&lt;h2&gt;三、笔记工作流&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;extract-and-export-notes&lt;/code&gt; 的新流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用 Git diff 找出新增、修改、删除、重命名的 authority。&lt;/li&gt;
&lt;li&gt;阅读完整改动文件，但只提取：
&lt;ul&gt;
&lt;li&gt;用户直接写出的 &lt;code&gt;kn/ref&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;改动中值得成为节点的候选概念；&lt;/li&gt;
&lt;li&gt;候选 entry、直接关系及来源证据。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;生成隔离的 &lt;code&gt;qlkg-agent-snapshot-v1&lt;/code&gt;，不读取个人图谱。&lt;/li&gt;
&lt;li&gt;调用 &lt;code&gt;$query-kgdistiller&lt;/code&gt; 批量比较。&lt;/li&gt;
&lt;li&gt;根据确定性结果修改源文件：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;known&lt;/code&gt;：改为现有节点的格式原生 &lt;code&gt;ref&lt;/code&gt;，不生成 entry；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;new&lt;/code&gt;：保留或添加 authority marker，生成 entry；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;partial&lt;/code&gt;：只处理缺失的部分，不复制已有定义；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uncertain/conflict&lt;/code&gt;：停止自动写入，进入 review。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;调用 &lt;code&gt;$ingest-kgdistiller&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;收到成功回执后才允许导出网页。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;因此，导出 Skill 仍然理解 Typst/Markdown/LaTeX marker，但不理解知识库内部实现。&lt;/p&gt;
&lt;h2&gt;四、论文工作流&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;extract-paper-concepts&lt;/code&gt; 分成两个阶段。&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;论文内部的直接 prerequisite；&lt;/li&gt;
&lt;li&gt;不先撰写所有完整词条。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然后调用 &lt;code&gt;$query-kgdistiller&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;第二阶段按比较结果生成最终快照：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;known&lt;/code&gt;：
&lt;ul&gt;
&lt;li&gt;不再生成该概念的知识词条；&lt;/li&gt;
&lt;li&gt;只保留论文角色、来源位置和指向个人节点的 bridge。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;partial&lt;/code&gt;：
&lt;ul&gt;
&lt;li&gt;只解释个人知识库中缺失的条件、限定或论文特定部分。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;new&lt;/code&gt;：
&lt;ul&gt;
&lt;li&gt;生成完整、来源支持的论文词条。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uncertain/conflict&lt;/code&gt;：
&lt;ul&gt;
&lt;li&gt;保留候选匹配和证据，禁止自动合并。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最终产物是一张联邦快照：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;paper namespace
    ├── 新概念和论文特定概念
    ├── 论文内部关系
    └── alignment bridges ──&amp;gt; personal namespace
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;个人图谱的 digest 在默认论文流程前后必须完全不变。&lt;/p&gt;
&lt;p&gt;只有用户明确提出“把这篇论文的新知识加入我的知识库”时，论文 Skill 才：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;选择需要导入的 &lt;code&gt;new/partial&lt;/code&gt; 节点；&lt;/li&gt;
&lt;li&gt;创建带论文来源的 research authority；&lt;/li&gt;
&lt;li&gt;将已知概念写成 ref；&lt;/li&gt;
&lt;li&gt;调用 &lt;code&gt;$ingest-kgdistiller&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;五、两个新 Skill 的接口&lt;/h2&gt;
&lt;h3&gt;&lt;code&gt;query-kgdistiller&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;只调用只读 MCP：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;kg_status&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kg_resolve_concepts&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kg_search&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kg_build_context&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kg_align_graph&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kg_compare_graph&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;输入可以是批量名字或候选 snapshot 路径。输出沿用现有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;qlkg-alignment-report-v1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qlkg-graph-comparison-v1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qlkg-context-bundle-v1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不保存 reviewed mapping。需要持久化 mapping 时，也必须交给 ingest Skill。&lt;/p&gt;
&lt;h3&gt;&lt;code&gt;ingest-kgdistiller&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;新增统一事务协议：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;qlkg-ingest-request-v1
├── mode
├── base_graph_sha256
├── candidate_snapshot_sha256
├── query_report_sha256
├── authority files
├── expected marker/ref state
├── reviewed qlkg-agent-delta-v2
└── review evidence
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;kgdistiller 负责执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;precondition check
→ scan
→ apply reviewed delta
→ sync
→ curate-check
→ global check
→ rebuild disposable index
→ emit receipt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出 &lt;code&gt;qlkg-ingest-receipt-v1&lt;/code&gt;，包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;写入前后 graph digest；&lt;/li&gt;
&lt;li&gt;engine version 和 capability；&lt;/li&gt;
&lt;li&gt;新增、复用、更新的节点；&lt;/li&gt;
&lt;li&gt;ref 与 edge 变化；&lt;/li&gt;
&lt;li&gt;authority/source hashes；&lt;/li&gt;
&lt;li&gt;所有验证结果。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果查询后图谱发生了变化，digest 不匹配，入库必须拒绝并要求重新查询。&lt;/p&gt;
&lt;h2&gt;六、Skill 的归属与升级&lt;/h2&gt;
&lt;p&gt;建议采用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;kgdistiller 仓库维护：
&lt;ul&gt;
&lt;li&gt;引擎 API；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;query-kgdistiller&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ingest-kgdistiller&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;schema 和兼容性测试。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;qlblog 维护：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;extract-and-export-notes&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;extract-paper-concepts&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;个人知识源和网页策略。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;make kgdistiller-update&lt;/code&gt; 更新到 kgdistiller &lt;code&gt;main&lt;/code&gt;，同时更新两个伴随 Skill。每次调用先通过 &lt;code&gt;kg_status.capabilities&lt;/code&gt; 做版本握手。&lt;/p&gt;
&lt;p&gt;即：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;持续跟随 main
+ 每次升级后跑兼容性测试
+ qlblog commit 记录本次解析到的 revision
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;七、实施顺序&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;在 kgdistiller 固化上述职责和 ingest request/receipt 协议。&lt;/li&gt;
&lt;li&gt;实现事务型 &lt;code&gt;kgdistiller ingest&lt;/code&gt; API 和 capability 握手。&lt;/li&gt;
&lt;li&gt;创建两个薄 Skill；核心逻辑放在 API，不把命令编排重新塞回 Skill。&lt;/li&gt;
&lt;li&gt;精简两个现有 Skill，并删除其中直接读图、对齐和合并的逻辑。&lt;/li&gt;
&lt;li&gt;用两个端到端场景验收：
&lt;ul&gt;
&lt;li&gt;笔记 Git diff：已知概念只产生 ref，新概念才入库；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;solvablemodel&lt;/code&gt;：已知概念不生成词条，论文默认只生成联邦快照。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;更新 qlblog 的 kgdistiller revision，跑两个仓库的完整测试、构建和网页发布。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这一轮先不优化 embedding、PPR 或别名识别精度；验收重点是：&lt;strong&gt;职责不串线、上游不读大图、论文默认不污染个人图谱、所有个人图谱写入只经过一个入口。&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>三系统 Coding Agent 安装与选择：Claude Code、Codex、OpenCode，以及 OpenClaw、Hermes 与 Multica</title><link>https://qiulinfan.github.io/posts/coding-agents-on-windows-macos-linux/</link><guid isPermaLink="true">https://qiulinfan.github.io/posts/coding-agents-on-windows-macos-linux/</guid><description>在 Windows、macOS、Linux 上安装三款主流 coding agent，并厘清个人自主 Agent 和 multi-agent 协作平台的区别。</description><pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;过去一年里，“Agent”几乎被用来描述所有带工具调用的 AI 产品。但把它们真的装到电脑上以后，会发现它们至少分成三层：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Coding agent&lt;/strong&gt;：进入一个代码仓库，读文件、改代码、运行命令、测试和提交；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personal autonomous agent&lt;/strong&gt;：长期运行，有记忆、定时任务和聊天渠道，能处理编程之外的事务；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-agent management plane&lt;/strong&gt;：不亲自写代码，而是管理多个 agent 的任务、运行环境和协作关系。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这篇文章先在 Windows、macOS、Linux 上安装三款 coding agent：&lt;strong&gt;Claude Code、Codex、OpenCode&lt;/strong&gt;；再讨论 &lt;strong&gt;OpenClaw、Hermes&lt;/strong&gt; 为什么属于另一类产品；最后看看 &lt;strong&gt;Multica&lt;/strong&gt; 如何把这些 agent 组织成团队。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;层级&lt;/th&gt;
&lt;th&gt;解决的问题&lt;/th&gt;
&lt;th&gt;本文项目&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;L1：仅 Agent&lt;/td&gt;
&lt;td&gt;在当前仓库中完成一次编码任务&lt;/td&gt;
&lt;td&gt;Claude Code、Codex、OpenCode&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L2：Agent + 记忆 + 调度&lt;/td&gt;
&lt;td&gt;跨会话记忆、定时运行、从聊天渠道持续接活&lt;/td&gt;
&lt;td&gt;OpenClaw、Hermes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L3：分布式 Agent 调度平台&lt;/td&gt;
&lt;td&gt;跨机器、跨供应商分派、观察和管理许多 agent&lt;/td&gt;
&lt;td&gt;Multica&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;L2 并不是“能力更强的 L1”，L3 也不是“更大的模型”。三个层级可以叠加：Multica 调度 Hermes，Hermes 再调用 coding subagent，是一种合理的组合；但层级越高，权限面、常驻进程和运维责任也越大。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;本文命令核对于 &lt;strong&gt;2026-07-13&lt;/strong&gt;。Agent CLI 更新很快，实际安装前最好再点开文末官方文档确认一次。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;先给结论&lt;/h2&gt;
&lt;p&gt;如果只想选一个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已经重度使用 Claude，希望得到完整、统一的 Claude 工具链：选 &lt;strong&gt;Claude Code&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;已经订阅 ChatGPT，重视沙箱、审批和 OpenAI/Codex 工作流：选 &lt;strong&gt;Codex&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;想自由切换模型供应商、查看开源实现、深度定制 TUI：选 &lt;strong&gt;OpenCode&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;想要一个能常驻服务器、接入聊天软件、定时工作的个人助理：研究 &lt;strong&gt;OpenClaw&lt;/strong&gt; 或 &lt;strong&gt;Hermes&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;想同时管理许多 Claude Code、Codex、OpenCode 实例：在它们上面加一层 &lt;strong&gt;Multica&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个重要原则是：&lt;strong&gt;比较 agent 时，要把“模型能力”和“agent harness 能力”分开。&lt;/strong&gt; OpenCode 可以连接 Claude、OpenAI 或其他模型；同一个模型放在不同 harness 中，也会因为上下文管理、工具、权限、提示词和压缩策略而产生不同体验。&lt;/p&gt;
&lt;h2&gt;三系统的共同准备&lt;/h2&gt;
&lt;h3&gt;macOS&lt;/h3&gt;
&lt;p&gt;建议先装 Homebrew 和 Git。Node.js 只在选择 npm 安装方式时需要：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;xcode-select --install
brew install git node
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Linux&lt;/h3&gt;
&lt;p&gt;以 Ubuntu/Debian 为例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt update
sudo apt install -y git curl ca-certificates
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果使用 npm 安装 OpenCode 或 Codex，再安装一个仍受支持的 Node.js 版本。不要为了省事长期依赖发行版仓库里过旧的 Node/npm。&lt;/p&gt;
&lt;h3&gt;Windows&lt;/h3&gt;
&lt;p&gt;三款工具现在都能以某种形式运行在原生 Windows 上，但如果项目本身使用 Linux 工具链，我仍建议统一放进 &lt;strong&gt;WSL2&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wsl --install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重启后进入 Ubuntu，把仓库 clone 到 WSL 的 &lt;code&gt;~/code&lt;/code&gt;，而不是长期放在 &lt;code&gt;/mnt/c&lt;/code&gt;。这样通常能获得更好的文件系统性能、权限语义和 shell 兼容性。&lt;/p&gt;
&lt;p&gt;原生 Windows 更适合依赖 Visual Studio、PowerShell、Windows SDK 或其他 Windows-only 工具的项目。&lt;/p&gt;
&lt;h2&gt;L1：仅 Agent&lt;/h2&gt;
&lt;p&gt;这一层的生命周期通常从 &lt;code&gt;cd project&lt;/code&gt; 开始，到一次任务或一次会话结束。它们可以有 subagent，但核心对象仍是当前代码仓库。&lt;/p&gt;
&lt;h3&gt;Claude Code&lt;/h3&gt;
&lt;p&gt;Claude Code 是 Anthropic 的 coding agent。它提供内置文件/搜索/命令工具，并围绕 &lt;code&gt;CLAUDE.md&lt;/code&gt;、Skills、MCP、Hooks、Subagents 和 Agent Teams 形成了较完整的扩展体系。&lt;/p&gt;
&lt;h4&gt;macOS / Linux / WSL2&lt;/h4&gt;
&lt;p&gt;Anthropic 当前推荐原生安装器：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -fsSL https://claude.ai/install.sh | bash
claude --version
claude doctor
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;macOS 也可以走 Homebrew 的稳定频道：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;brew install --cask claude-code
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Windows 原生&lt;/h4&gt;
&lt;p&gt;PowerShell：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;irm https://claude.ai/install.ps1 | iex
claude --version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;也可以使用 WinGet：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;winget install Anthropic.ClaudeCode
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;原生 Windows 建议安装 Git for Windows；如果没有 Git Bash，Claude Code 会回退到 PowerShell。需要沙箱化命令执行时优先选择 WSL2，因为 Anthropic 文档明确说明 native Windows 暂不支持 sandboxing。&lt;/p&gt;
&lt;h4&gt;登录与启动&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;cd /path/to/project
claude
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;首次启动会打开登录流程。Claude Code 支持 Claude Pro、Max、Team、Enterprise、Console，也能通过 Bedrock、Vertex AI 等第三方平台接入。&lt;/p&gt;
&lt;h4&gt;它的优势&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Claude 生态的一体化体验，配置和模型能力衔接自然；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;、Skills、Hooks、MCP、Subagents 都有成熟的一等支持；&lt;/li&gt;
&lt;li&gt;Subagent 能隔离上下文，Agent Teams 能让独立会话共享任务并互相通信；&lt;/li&gt;
&lt;li&gt;原生安装器可以后台自动更新。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;需要留意&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;主要围绕 Claude 模型与 Anthropic 账户体系；&lt;/li&gt;
&lt;li&gt;Agent Teams 仍属于实验功能；&lt;/li&gt;
&lt;li&gt;原生 Windows 与 WSL2 的沙箱能力不同；&lt;/li&gt;
&lt;li&gt;不要盲目开启 &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt; 一类绕过保护的模式。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;官方资料：&lt;a href=&quot;https://code.claude.com/docs/en/installation&quot;&gt;安装说明&lt;/a&gt;、&lt;a href=&quot;https://code.claude.com/docs/en/features-overview&quot;&gt;扩展体系&lt;/a&gt;、&lt;a href=&quot;https://code.claude.com/docs/en/sub-agents&quot;&gt;Subagents&lt;/a&gt;。&lt;/p&gt;
&lt;h3&gt;Codex&lt;/h3&gt;
&lt;p&gt;Codex 是 OpenAI 的本地 coding agent CLI，同时还存在 IDE、桌面应用和云端形态。CLI 适合在仓库中执行读写文件、命令、测试、审查与自动化任务，并用 sandbox 和 approval policy 控制风险。&lt;/p&gt;
&lt;h4&gt;macOS / Linux&lt;/h4&gt;
&lt;p&gt;官方安装脚本：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -fsSL https://chatgpt.com/codex/install.sh | sh
codex --version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;macOS 也可以使用 Homebrew：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;brew install --cask codex
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者在已经有现代 Node.js/npm 的机器上：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm install -g @openai/codex
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Windows&lt;/h4&gt;
&lt;p&gt;官方 PowerShell 安装器：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;powershell -ExecutionPolicy ByPass -c &quot;irm https://chatgpt.com/codex/install.ps1 | iex&quot;
codex --version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Codex 已提供 Windows 构建，但官方系统要求文档仍把 Windows 11 + WSL2 作为标准支持路径。对跨平台工程，WSL2 通常也是更稳妥的基线。&lt;/p&gt;
&lt;h4&gt;登录与启动&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;cd /path/to/project
codex
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;首次启动选择 &lt;strong&gt;Sign in with ChatGPT&lt;/strong&gt;。官方建议 Plus、Pro、Business、Edu、Enterprise 用户直接使用 ChatGPT 账户；也可以另行配置 API key。&lt;/p&gt;
&lt;h4&gt;它的优势&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;OpenAI/Codex 模型与 ChatGPT 订阅的直接整合；&lt;/li&gt;
&lt;li&gt;CLI、IDE、桌面、Web/Cloud 等多种工作入口；&lt;/li&gt;
&lt;li&gt;对 sandbox、网络和文件权限、命令审批有明确的控制层；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; 可以把项目约定随仓库一起提交；&lt;/li&gt;
&lt;li&gt;适合把重复流程保存成 Skills，或通过 MCP/插件连接外部系统。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;需要留意&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;不同 Codex surface 的能力并不完全相同，CLI、桌面和云端不能简单视为同一个 UI；&lt;/li&gt;
&lt;li&gt;Windows 用户要留意 native 与 WSL2 的环境边界；&lt;/li&gt;
&lt;li&gt;API key 计费和 ChatGPT 套餐内使用是两条不同的认证/计费路径；&lt;/li&gt;
&lt;li&gt;自动批准写文件、联网和执行命令之前，先理解当前 sandbox 与 approval 设置。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;官方资料：&lt;a href=&quot;https://github.com/openai/codex&quot;&gt;Codex 官方仓库与安装命令&lt;/a&gt;、&lt;a href=&quot;https://github.com/openai/codex/blob/main/docs/install.md&quot;&gt;系统要求&lt;/a&gt;、&lt;a href=&quot;https://developers.openai.com/codex&quot;&gt;Codex 文档&lt;/a&gt;。&lt;/p&gt;
&lt;h3&gt;OpenCode&lt;/h3&gt;
&lt;p&gt;OpenCode 是开源、provider-neutral 的 coding agent。它既有 TUI，也提供桌面应用和 IDE 扩展。与前两者相比，它最大的差异不是“某个固定模型更强”，而是&lt;strong&gt;允许你选择和组合不同模型供应商&lt;/strong&gt;。&lt;/p&gt;
&lt;h4&gt;macOS / Linux / WSL2&lt;/h4&gt;
&lt;p&gt;官方安装脚本：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -fsSL https://opencode.ai/install | bash
opencode --version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;macOS/Linux 也可以用官方 tap：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;brew install anomalyco/tap/opencode
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者 npm：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm install -g opencode-ai
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Windows&lt;/h4&gt;
&lt;p&gt;官方仍推荐 WSL2；在 WSL 中执行 Linux 安装命令即可。原生 Windows 也有多种方式：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;choco install opencode
# 或
scoop install opencode
# 或
npm install -g opencode-ai
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;连接模型并初始化仓库&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;cd /path/to/project
opencode
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进入 TUI 后：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/connect
/init
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;/connect&lt;/code&gt; 用来登录 OpenCode Zen 或其他模型 provider；&lt;code&gt;/init&lt;/code&gt; 会分析仓库并创建 &lt;code&gt;AGENTS.md&lt;/code&gt;。&lt;/p&gt;
&lt;h4&gt;它的优势&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;开源且 provider-neutral，可在多种商业/开源模型之间切换；&lt;/li&gt;
&lt;li&gt;TUI、Desktop、IDE 多种入口；&lt;/li&gt;
&lt;li&gt;permissions 可以按 &lt;code&gt;read&lt;/code&gt;、&lt;code&gt;edit&lt;/code&gt;、&lt;code&gt;bash&lt;/code&gt;、&lt;code&gt;websearch&lt;/code&gt;、&lt;code&gt;task&lt;/code&gt;、&lt;code&gt;external_directory&lt;/code&gt; 等工具细分；&lt;/li&gt;
&lt;li&gt;支持 primary agent、subagent 和针对不同 agent 的模型/权限配置；&lt;/li&gt;
&lt;li&gt;对希望观察、修改 agent harness 的用户更友好。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;需要留意&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;“自由选择 provider”也意味着认证、模型能力、价格和稳定性需要自己管理；&lt;/li&gt;
&lt;li&gt;不同模型对工具调用和长任务的表现差异很大；&lt;/li&gt;
&lt;li&gt;OpenCode 本身开源，不代表你连接的云模型或 API 免费；&lt;/li&gt;
&lt;li&gt;Windows 虽能原生运行，官方仍建议 WSL 获得更完整体验。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;官方资料：&lt;a href=&quot;https://opencode.ai/docs/&quot;&gt;快速开始&lt;/a&gt;、&lt;a href=&quot;https://opencode.ai/docs/windows-wsl/&quot;&gt;Windows/WSL&lt;/a&gt;、&lt;a href=&quot;https://opencode.ai/docs/providers/&quot;&gt;Providers&lt;/a&gt;、&lt;a href=&quot;https://opencode.ai/docs/agents/&quot;&gt;Agents 与权限&lt;/a&gt;。&lt;/p&gt;
&lt;h2&gt;Claude Code、Codex、OpenCode 横向比较&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;th&gt;Claude Code&lt;/th&gt;
&lt;th&gt;Codex&lt;/th&gt;
&lt;th&gt;OpenCode&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;核心定位&lt;/td&gt;
&lt;td&gt;Anthropic 的 coding agent&lt;/td&gt;
&lt;td&gt;OpenAI 的 coding agent 与多 surface 工作流&lt;/td&gt;
&lt;td&gt;开源、provider-neutral agent harness&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;默认生态&lt;/td&gt;
&lt;td&gt;Claude / Anthropic&lt;/td&gt;
&lt;td&gt;OpenAI / ChatGPT / Codex&lt;/td&gt;
&lt;td&gt;OpenCode Zen 或自选 provider&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;开源情况&lt;/td&gt;
&lt;td&gt;CLI 产品本身不是以完全开源 harness 为卖点&lt;/td&gt;
&lt;td&gt;CLI 核心仓库 Apache-2.0&lt;/td&gt;
&lt;td&gt;开源&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;项目指令&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;扩展&lt;/td&gt;
&lt;td&gt;Skills、MCP、Hooks、Plugins&lt;/td&gt;
&lt;td&gt;Skills、MCP、Plugins、Hooks/配置&lt;/td&gt;
&lt;td&gt;Agents、Plugins、MCP、Commands、Skills&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;多 Agent&lt;/td&gt;
&lt;td&gt;Subagents；实验性 Agent Teams&lt;/td&gt;
&lt;td&gt;Subagents/协作能力依 surface 和版本而异&lt;/td&gt;
&lt;td&gt;Primary agents + subagents + task 权限&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;权限控制&lt;/td&gt;
&lt;td&gt;工具权限、Hooks、sandbox（平台有差异）&lt;/td&gt;
&lt;td&gt;sandbox + approval policy&lt;/td&gt;
&lt;td&gt;每类工具 &lt;code&gt;ask/allow/deny&lt;/code&gt;，支持 pattern&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;模型自由度&lt;/td&gt;
&lt;td&gt;主要是 Claude 生态&lt;/td&gt;
&lt;td&gt;主要是 OpenAI/Codex 生态&lt;/td&gt;
&lt;td&gt;最灵活，可接多 provider&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Windows 建议&lt;/td&gt;
&lt;td&gt;Native 或 WSL2；沙箱优先 WSL2&lt;/td&gt;
&lt;td&gt;标准支持路径优先 WSL2&lt;/td&gt;
&lt;td&gt;官方推荐 WSL2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;最适合&lt;/td&gt;
&lt;td&gt;想获得完整 Claude 工作流的人&lt;/td&gt;
&lt;td&gt;ChatGPT/OpenAI 用户、重视受控执行的人&lt;/td&gt;
&lt;td&gt;想换模型、看源码、深度定制的人&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;不要只看 benchmark&lt;/h3&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;最终 diff 是否容易审查。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最公平的比较方法，是让三者在同一个仓库完成同一组真实任务：一个小 bug、一个跨文件 feature、一次代码审查和一次测试失败诊断。记录成功率、用时、人工干预次数、最终 diff 与实际费用，而不是只比较第一轮回答有多惊艳。&lt;/p&gt;
&lt;h2&gt;安装只是第一天：版本更新与健康检查&lt;/h2&gt;
&lt;p&gt;Agent 拥有 shell、文件和网络权限，版本更新不是为了追新功能，而是安全维护的一部分。建议每月至少检查一次；出现磁盘、CPU、内存、登录或权限异常时，第一步先记录版本和进程，再查官方 issue，不要让 agent 在未知根因下自动“清理系统”。&lt;/p&gt;
&lt;h3&gt;更新命令速查&lt;/h3&gt;
&lt;p&gt;先运行版本命令，更新后再运行一次，确认实际 binary 已变化：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;工具&lt;/th&gt;
&lt;th&gt;查看版本&lt;/th&gt;
&lt;th&gt;推荐更新方式&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;&lt;code&gt;claude --version&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;原生安装：&lt;code&gt;claude update&lt;/code&gt;；Homebrew：&lt;code&gt;brew upgrade --cask claude-code&lt;/code&gt;；WinGet：&lt;code&gt;winget upgrade Anthropic.ClaudeCode&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;&lt;code&gt;codex --version&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;安装脚本：重新运行官方 installer；npm：&lt;code&gt;npm install -g @openai/codex@latest&lt;/code&gt;；Homebrew：&lt;code&gt;brew upgrade --cask codex&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenCode&lt;/td&gt;
&lt;td&gt;&lt;code&gt;opencode --version&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;opencode upgrade&lt;/code&gt;；检测错误时显式指定 &lt;code&gt;--method curl/npm/pnpm/bun/brew&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenClaw&lt;/td&gt;
&lt;td&gt;&lt;code&gt;openclaw --version&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;先 &lt;code&gt;openclaw update status&lt;/code&gt; 或 &lt;code&gt;openclaw update --dry-run&lt;/code&gt;，再 &lt;code&gt;openclaw update&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hermes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;hermes version&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;先 &lt;code&gt;hermes update --check&lt;/code&gt;，高价值配置用 &lt;code&gt;hermes update --backup&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multica&lt;/td&gt;
&lt;td&gt;&lt;code&gt;multica version&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;multica update&lt;/code&gt;；自托管还要按 release notes 更新 server/container&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;通过系统包管理器安装的工具，最好继续用同一个包管理器升级。混用 installer、npm、Homebrew 后，PATH 中可能同时存在多个版本；更新“成功”却仍运行旧 binary 时，检查：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;which -a claude codex opencode openclaw hermes multica
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;PowerShell 使用：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Get-Command claude,codex,opencode,openclaw,hermes,multica -All
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Codex SSD 写入事件：为什么必须更新&lt;/h3&gt;
&lt;p&gt;2026 年 6 月的 &lt;a href=&quot;https://github.com/openai/codex/issues/28224&quot;&gt;openai/codex#28224&lt;/a&gt; 报告了一个严重的 SQLite 日志写入放大问题：报告者的机器运行约 21 天后，主 SSD 累计写入约 &lt;strong&gt;37 TB&lt;/strong&gt;。高频 TRACE、WebSocket/SSE payload 和镜像 OTel 日志持续写入：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;~/.codex/logs_2.sqlite
~/.codex/logs_2.sqlite-wal
~/.codex/logs_2.sqlite-shm
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;数据库保留的逻辑内容可能只有几百 MB，但“插入 → WAL → 索引 → prune/checkpoint”的循环会造成远高于文件大小的物理写入量，所以只看 &lt;code&gt;du ~/.codex&lt;/code&gt; 会严重低估 SSD 压力。其他官方 issue 也记录了 streaming 时约 5 MiB/s、峰值约 16 MiB/s 的持续写入，以及数分钟内 WAL 增长到上百 MB的情况。&lt;/p&gt;
&lt;p&gt;官方仓库记录的关键缓解是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Codex &lt;code&gt;0.142.0&lt;/code&gt;：停止记录每个 Responses WebSocket event，并过滤 noisy targets；&lt;/li&gt;
&lt;li&gt;Codex &lt;code&gt;0.143.0&lt;/code&gt;：停止持久化 bridged log events。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;报告者称这几项改动减少了约 85% 的日志。因此本文的最低建议是：&lt;strong&gt;不要继续运行低于 &lt;code&gt;0.143.0&lt;/code&gt; 的 Codex；优先升级到当前 latest，并在升级后实际监控。&lt;/strong&gt; “减少 85%”不等于所有 SQLite/WAL 写入问题都已永久消失。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;codex --version

# npm 安装
npm install -g @openai/codex@latest

# Homebrew 安装
brew upgrade --cask codex
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;检查日志文件大小：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;du -h ~/.codex/logs_2.sqlite* 2&amp;gt;/dev/null
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;PowerShell：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Get-ChildItem &quot;$HOME\.codex\logs_2.sqlite*&quot; |
  Select-Object Name,Length,LastWriteTime
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Linux 可以在使用 Codex 时观察：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo iotop -oPa
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;macOS 可在 Activity Monitor 的 Disk 页面观察 Codex/Code Helper 写入，或用 &lt;code&gt;fs_usage&lt;/code&gt; 做短时间诊断。重点不是某一刻 WAL 有多大，而是&lt;strong&gt;空闲或普通 streaming 时是否仍持续高速写盘&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;如果暂时无法升级且明确观察到该问题，官方 issue 中的临时方案是在完全退出 Codex 后，用 SQLite trigger 阻止诊断日志插入：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sqlite3 ~/.codex/logs_2.sqlite \
  &apos;CREATE TRIGGER IF NOT EXISTS block_log_inserts BEFORE INSERT ON logs BEGIN SELECT RAISE(IGNORE); END;&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;恢复诊断日志：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sqlite3 ~/.codex/logs_2.sqlite \
  &apos;DROP TRIGGER IF EXISTS block_log_inserts;&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这会牺牲本地诊断日志，不是正式修复。应当优先升级，并在操作数据库前完全退出 Codex、备份重要工作。更早的复现和 workaround 见 &lt;a href=&quot;https://github.com/openai/codex/issues/17320&quot;&gt;#17320&lt;/a&gt;，Desktop/WAL 的另一组数据见 &lt;a href=&quot;https://github.com/openai/codex/issues/24275&quot;&gt;#24275&lt;/a&gt;。&lt;/p&gt;
&lt;h3&gt;常驻 Agent 的更新更像运维&lt;/h3&gt;
&lt;p&gt;OpenClaw、Hermes 和自托管 Multica 会运行 daemon/gateway。更新前额外确认：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;配置、记忆、Skills、凭据和数据库有备份；&lt;/li&gt;
&lt;li&gt;release notes 是否包含配置迁移；&lt;/li&gt;
&lt;li&gt;当前任务是否可以安全中断；&lt;/li&gt;
&lt;li&gt;更新后 daemon/gateway 是否已重启并报告新版本；&lt;/li&gt;
&lt;li&gt;聊天渠道、cron、webhook 与 agent runtime 是否仍健康。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;OpenClaw 的 &lt;code&gt;update --dry-run&lt;/code&gt; 和 Hermes 的 &lt;code&gt;update --check&lt;/code&gt; 都适合先只读预检；生产环境不要默认追 &lt;code&gt;dev&lt;/code&gt; 或 beta channel。&lt;/p&gt;
&lt;h2&gt;L2：具有记忆和调度功能的 Agent&lt;/h2&gt;
&lt;p&gt;OpenClaw 和 Hermes 都可以写代码，也都能调用 subagent，但它们更接近&lt;strong&gt;长期运行的个人 agent 平台&lt;/strong&gt;。它们不是“另两个 Claude Code”：重点从一次仓库任务转向跨会话记忆、定时运行、消息渠道和常驻 Gateway。&lt;/p&gt;
&lt;h3&gt;OpenClaw&lt;/h3&gt;
&lt;p&gt;OpenClaw 强调 Gateway、工作区、Skills、定时/自动化和多聊天渠道。它适合运行在个人电脑或服务器上，从 Telegram、Discord、Slack 等入口接收任务。&lt;/p&gt;
&lt;p&gt;系统要求是 Node 22.19+、23.11+ 或 24+。推荐安装方式：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# macOS / Linux / WSL2
curl -fsSL https://openclaw.ai/install.sh | bash

# Windows PowerShell
iwr -useb https://openclaw.ai/install.ps1 | iex
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装器会进入 onboarding；已有 Node 环境也可以用 npm 安装。详细方式见 &lt;a href=&quot;https://docs.openclaw.ai/install&quot;&gt;OpenClaw 安装文档&lt;/a&gt; 和 &lt;a href=&quot;https://github.com/openclaw/openclaw&quot;&gt;官方仓库&lt;/a&gt;。&lt;/p&gt;
&lt;h3&gt;Hermes Agent&lt;/h3&gt;
&lt;p&gt;Hermes 是 Nous Research 的 autonomous agent，重点是 persistent memory 和内置 learning loop：它会从经验中创建、改进 Skills，并能够跨会话积累对用户和任务的理解。官方还强调定时任务、跨聊天渠道、隔离 subagents，以及 local、Docker、SSH、Singularity、Modal 等 sandbox backend。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Linux / macOS / WSL2 / Termux
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

# Windows PowerShell
iex (irm https://hermes-agent.nousresearch.com/install.ps1)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装后可用 &lt;code&gt;hermes setup --portal&lt;/code&gt; 完成模型与工具配置。官方资料：&lt;a href=&quot;https://hermes-agent.nousresearch.com/docs/&quot;&gt;Hermes 文档&lt;/a&gt;、&lt;a href=&quot;https://nousresearch.net/hermes-agent/&quot;&gt;Nous Research 产品页&lt;/a&gt;、&lt;a href=&quot;https://github.com/NousResearch/hermes-agent&quot;&gt;官方仓库&lt;/a&gt;。&lt;/p&gt;
&lt;h3&gt;两者怎么选&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;th&gt;OpenClaw&lt;/th&gt;
&lt;th&gt;Hermes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;核心心智&lt;/td&gt;
&lt;td&gt;自托管个人助理与 Gateway&lt;/td&gt;
&lt;td&gt;会持续学习的个人 autonomous agent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;突出能力&lt;/td&gt;
&lt;td&gt;多渠道接入、工作区、广泛集成、daemon&lt;/td&gt;
&lt;td&gt;记忆、Skills 学习循环、调度、隔离执行&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;运行方式&lt;/td&gt;
&lt;td&gt;本机/服务器常驻 Gateway&lt;/td&gt;
&lt;td&gt;本机、服务器、容器或云 sandbox&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;适合&lt;/td&gt;
&lt;td&gt;想快速搭一个跨渠道个人助理&lt;/td&gt;
&lt;td&gt;希望 agent 长期积累习惯与可复用能力&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;它们拥有比 coding CLI 更长的生命周期和更广的权限面。不要一上来就给它邮箱、浏览器登录态、SSH key、云账号和无限 shell 权限。先用单独账号、最小权限、隔离容器和可审计日志做实验。&lt;/p&gt;
&lt;h2&gt;L3：Agent 分布式调度平台&lt;/h2&gt;
&lt;p&gt;Multica 与上面五个项目的关系最容易被误解。它不是第六个模型，也不是又一个终端 coding agent；它是一个 &lt;strong&gt;open-source managed agents platform&lt;/strong&gt;。这一层关心的是跨机器 runtime、任务队列、状态、路由、团队和复用，而不是某一轮对话如何生成代码。&lt;/p&gt;
&lt;p&gt;可以把层次画成：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;人类 / 团队
    ↓ 创建 Issue、分派、评论、审查
Multica（任务、Squad、Runtime、状态、Autopilot、Skills）
    ↓ 调度
Claude Code / Codex / OpenCode / OpenClaw / Hermes / 其他 CLI
    ↓ 执行
本地机器 / Worktree / 云主机 / 自托管 Runtime
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Multica daemon 会检测机器 PATH 上可用的 agent CLI。你在 board 上把 issue 分配给一个 agent 后，系统负责 enqueue、claim、start、complete/fail 等生命周期，实时展示进度；Squad 用一个稳定的团队入口把工作路由给成员，Autopilot 则用 cron、webhook 或手动触发重复任务。&lt;/p&gt;
&lt;h3&gt;安装&lt;/h3&gt;
&lt;p&gt;macOS/Linux：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;brew install multica-ai/tap/multica
# 或
curl -fsSL https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Windows PowerShell：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;irm https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.ps1 | iex
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后连接 Cloud 并启动 daemon：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;multica setup
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果要自托管完整服务，则需要 Docker，并按 &lt;a href=&quot;https://github.com/multica-ai/multica/blob/main/SELF_HOSTING.md&quot;&gt;Self-hosting 文档&lt;/a&gt; 部署。&lt;/p&gt;
&lt;p&gt;Multica 的价值在 agent 数量超过一两个之后才明显：它把散落在不同终端、不同机器、不同供应商中的执行过程，变成可分派、可观察、可复用的团队工作流。官方资料：&lt;a href=&quot;https://github.com/multica-ai/multica&quot;&gt;Multica 仓库&lt;/a&gt;、&lt;a href=&quot;https://github.com/multica-ai/multica/blob/main/README.zh-CN.md&quot;&gt;中文 README&lt;/a&gt;。&lt;/p&gt;
&lt;h2&gt;非必要不跑命令行：让一个 Agent 安装其他 Agent&lt;/h2&gt;
&lt;p&gt;Harness 时代，一个合理的期待是：用户不必手动复制本文几十条命令。只要机器上已经有一个可用的 coding agent，就应该让它读取安装 runbook、检测环境、展示计划，然后代为执行。&lt;/p&gt;
&lt;p&gt;但这里存在一个无法消除的 bootstrap：&lt;strong&gt;如果新机器上一个 agent 都没有，第一次仍要通过图形安装器、WinGet/Homebrew，或一条官方安装命令装好 seed agent。&lt;/strong&gt; 之后就可以“用 agent 安装 agent”。&lt;/p&gt;
&lt;h3&gt;1. Clone 这份 runbook&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;git clone https://github.com/qiulinfan/qiulinfan.github.io.git
cd qlblog
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;仓库中的 &lt;a href=&quot;https://github.com/qiulinfan/qiulinfan.github.io/blob/main/install/agent-stack.md&quot;&gt;&lt;code&gt;install/agent-stack.md&lt;/code&gt;&lt;/a&gt; 是给人和 agent 共同阅读的安装说明。&lt;code&gt;AGENTS.md&lt;/code&gt; 与 &lt;code&gt;CLAUDE.md&lt;/code&gt; 会引导 Codex、OpenCode、Claude Code 找到它。&lt;/p&gt;
&lt;h3&gt;2. 用你已有的 agent 打开仓库&lt;/h3&gt;
&lt;p&gt;三选一即可：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;codex
# 或 claude
# 或 opencode
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后直接输入：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;请完整阅读 install/agent-stack.md。
先只读检测我的操作系统、架构、shell、WSL、包管理器、Node/npm 版本，
以及已经安装的 agent。不要立即安装。

检测后给我一个计划，列出：
1. 已安装和缺失的工具；
2. 建议使用 native Windows 还是 WSL2；
3. 每个安装动作的官方来源、是否需要管理员权限；
4. 哪些动作会安装 daemon、gateway、登录项或定时任务；
5. Codex 是否至少为 0.143.0，以及如何监控 logs_2.sqlite 的写盘。

等我确认具体产品和层级后再执行。每安装一个工具，都验证 binary 路径和版本。
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3. 按层级授权，而不是说“全部装上”&lt;/h3&gt;
&lt;p&gt;推荐分三次：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;第一步只安装 L1：Claude Code、Codex、OpenCode。不要安装常驻服务。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;用一段时间以后再决定：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;现在评估 L2。比较 OpenClaw 和 Hermes 对我的需求；只安装我选中的一个，
先不要接入聊天账号，也不要启动 daemon/gateway，直到再次得到我的确认。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后才考虑调度平台：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;现在安装 Multica CLI，但不要运行 multica setup，也不要部署自托管服务。
先展示它将创建的配置、daemon 和网络连接，等我确认。
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;4. 为什么不提供“一键全自动脚本”&lt;/h3&gt;
&lt;p&gt;因为六个项目跨越三个权限层级：L1 修改代码，L2 可能常驻并连接私人渠道，L3 可能在多台机器调度它们。一个无确认的安装脚本无法理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你想用 native Windows 还是 WSL2；&lt;/li&gt;
&lt;li&gt;已有工具是 npm、Homebrew 还是 installer 管理；&lt;/li&gt;
&lt;li&gt;是否允许后台服务和开机启动；&lt;/li&gt;
&lt;li&gt;API key、ChatGPT/Claude 订阅与模型 provider 如何选择；&lt;/li&gt;
&lt;li&gt;Multica 用 Cloud 还是自托管；&lt;/li&gt;
&lt;li&gt;哪些账号和目录允许 agent 访问。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以这里的自动化边界是：&lt;strong&gt;agent 负责检测、查官方文档、执行和验证；人负责选择层级、授权持久化和提供凭据。&lt;/strong&gt; 这比一条 &lt;code&gt;install-everything.sh&lt;/code&gt; 慢一分钟，但安全得多，也更容易维护。&lt;/p&gt;
&lt;h2&gt;我的建议组合&lt;/h2&gt;
&lt;h3&gt;个人开发者，先求稳定&lt;/h3&gt;
&lt;p&gt;先选 Claude Code 或 Codex 之一作为主力，再保留 OpenCode 用于跨 provider 实验。不要同时维护三套复杂配置。&lt;/p&gt;
&lt;h3&gt;Windows + Linux 工具链&lt;/h3&gt;
&lt;p&gt;把仓库和三个 CLI 都放进 WSL2。Windows 浏览器仍可完成 OAuth，VS Code/Cursor 可以通过 Remote WSL 连接同一个文件系统。&lt;/p&gt;
&lt;h3&gt;多模型研究者&lt;/h3&gt;
&lt;p&gt;以 OpenCode 为统一界面，固定一组任务分别测试 Claude、OpenAI 和其他模型。比较时保存配置、模型版本、权限和提示词，否则结果不可复现。&lt;/p&gt;
&lt;h3&gt;想做 24/7 自动化&lt;/h3&gt;
&lt;p&gt;先在隔离 VPS 或容器里试 OpenClaw/Hermes，不要直接部署到存放全部私人数据的日常电脑。为每个外部服务创建最小权限凭据。&lt;/p&gt;
&lt;h3&gt;小团队管理多个 Agent&lt;/h3&gt;
&lt;p&gt;把 Claude Code、Codex、OpenCode 当作 worker，把 Multica 当作任务与运行时控制平面。代码 review 和最终合并仍然保留人类责任。&lt;/p&gt;
&lt;h2&gt;安全清单&lt;/h2&gt;
&lt;p&gt;无论选哪一个，至少做到：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;安装脚本来自官方 HTTPS 域名或官方 GitHub 仓库；&lt;/li&gt;
&lt;li&gt;对 &lt;code&gt;curl | bash&lt;/code&gt;、&lt;code&gt;irm | iex&lt;/code&gt; 有顾虑时，先下载并阅读脚本再执行；&lt;/li&gt;
&lt;li&gt;不把 API key 写进仓库、聊天记录、Notebook 输出或 core dump；&lt;/li&gt;
&lt;li&gt;默认开启审批和沙箱，从最小权限开始；&lt;/li&gt;
&lt;li&gt;给 GitHub、云平台、聊天渠道创建独立且可撤销的 token；&lt;/li&gt;
&lt;li&gt;自动化 push、发消息、发邮件、部署和删除资源前保留人工确认；&lt;/li&gt;
&lt;li&gt;定期检查 agent 创建的定时任务、daemon、Skills、MCP server 和日志；&lt;/li&gt;
&lt;li&gt;把 AI 生成的 diff 当作未经审查的外部贡献。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;结语&lt;/h2&gt;
&lt;p&gt;Claude Code、Codex、OpenCode 解决的是“&lt;strong&gt;这个仓库里的工作如何完成&lt;/strong&gt;”；OpenClaw、Hermes 解决的是“&lt;strong&gt;这个长期在线的个人 agent 如何记忆、接收和执行任务&lt;/strong&gt;”；Multica 解决的是“&lt;strong&gt;很多 agent 如何像团队成员一样被分派、观察和管理&lt;/strong&gt;”。&lt;/p&gt;
&lt;p&gt;与其寻找一个包打天下的产品，不如先选对层级，再组合工具。对大多数开发者，最健康的起点仍然是：一个主力 coding agent、清楚的权限边界、可复现的测试，以及一个愿意认真看 diff 的人。&lt;/p&gt;
</content:encoded></item></channel></rss>