<?xml version="1.0" encoding="UTF-8"?>  
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">  
    <channel>  
        <title></title>  
        <description>王俊博客：记录软件开发经验，促进知识传播与创新。
</description>  
        <link>https://www.wangjun.dev</link>  
        <atom:link href="https://www.wangjun.dev/feed.xml" rel="self" type="application/rss+xml" />  
          
            <item>  
               <title>像高级工程师一样用 Claude，而不是当聊天机器人</title>  
               <description>&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#引言两种用法之间的鸿沟&quot; id=&quot;markdown-toc-引言两种用法之间的鸿沟&quot;&gt;引言：两种用法之间的鸿沟&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#第一步搞清楚你正在和哪个-claude-对话&quot; id=&quot;markdown-toc-第一步搞清楚你正在和哪个-claude-对话&quot;&gt;第一步：搞清楚你正在和哪个 Claude 对话&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#第二步停止提示开始简报&quot; id=&quot;markdown-toc-第二步停止提示开始简报&quot;&gt;第二步：停止”提示”，开始”简报”&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#第三步用努力控制而不是碰运气&quot; id=&quot;markdown-toc-第三步用努力控制而不是碰运气&quot;&gt;第三步：用努力控制，而不是碰运气&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#第四步学会-claude-code真正的杠杆在这里&quot; id=&quot;markdown-toc-第四步学会-claude-code真正的杠杆在这里&quot;&gt;第四步：学会 Claude Code——真正的杠杆在这里&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#plan-mode计划模式&quot; id=&quot;markdown-toc-plan-mode计划模式&quot;&gt;Plan mode（计划模式）&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#checkpoints检查点&quot; id=&quot;markdown-toc-checkpoints检查点&quot;&gt;Checkpoints（检查点）&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#permission-modes权限模式&quot; id=&quot;markdown-toc-permission-modes权限模式&quot;&gt;Permission modes（权限模式）&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#subagents子智能体&quot; id=&quot;markdown-toc-subagents子智能体&quot;&gt;Subagents（子智能体）&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#第五步给-claude-正确的上下文而不是全部上下文&quot; id=&quot;markdown-toc-第五步给-claude-正确的上下文而不是全部上下文&quot;&gt;第五步：给 Claude 正确的上下文，而不是全部上下文&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#projects项目&quot; id=&quot;markdown-toc-projects项目&quot;&gt;Projects（项目）&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#artifacts工件&quot; id=&quot;markdown-toc-artifacts工件&quot;&gt;Artifacts（工件）&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#第六步用-mcp-把-claude-接到你的真实工具上&quot; id=&quot;markdown-toc-第六步用-mcp-把-claude-接到你的真实工具上&quot;&gt;第六步：用 MCP 把 Claude 接到你的真实工具上&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#第七步像-review-初级工程师的-pr-一样-review因为它就是&quot; id=&quot;markdown-toc-第七步像-review-初级工程师的-pr-一样-review因为它就是&quot;&gt;第七步：像 review 初级工程师的 PR 一样 review——因为它就是&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#一个现实的端到端工作流&quot; id=&quot;markdown-toc-一个现实的端到端工作流&quot;&gt;一个现实的端到端工作流&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#把高级用户和聊天用户分开的五个习惯&quot; id=&quot;markdown-toc-把高级用户和聊天用户分开的五个习惯&quot;&gt;把高级用户和聊天用户分开的五个习惯&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;引言两种用法之间的鸿沟&quot;&gt;引言：两种用法之间的鸿沟&lt;/h2&gt;

&lt;p&gt;大多数人在 Claude 里输入的方式，就像在操作一个搜索框：”帮我写一个做 X 的函数。”复制，粘贴，祈祷它能编译。&lt;/p&gt;

&lt;p&gt;有经验的工程师是另一种用法：把 Claude 当成一个能读仓库、规划工作、执行命令、修改文件、最后交给你一份可审查 diff 的智能体——而真正上线的代码，决定权始终在你手里。&lt;/p&gt;

&lt;p&gt;这两种工作流之间的差距是巨大的。而在 2026 年，围绕 Claude 的工具链已经快到这个程度：&lt;strong&gt;“聊天机器人”的心智模型，现在成了拖累大多数人进步的头号因素。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;这篇文章是第二种用法的实操指南。没有 hype，没有”AI 将取代开发者”的论调，只有今天怎么从 Claude 拿到高级工程师级输出的具体方法。&lt;/p&gt;

&lt;h2 id=&quot;第一步搞清楚你正在和哪个-claude-对话&quot;&gt;第一步：搞清楚你正在和哪个 Claude 对话&lt;/h2&gt;

&lt;p&gt;谈技巧之前，先把模型选对。用错档次，是最常见的浪费时间和金钱的方式。&lt;/p&gt;

&lt;p&gt;2026 年中的产品线，你需要关注的是：&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;模型&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;定位&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;价格（输入/输出，每百万 token）&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Claude Sonnet 5&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;免费/Pro 版默认，原生 1M token 上下文，日常主力&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;发布价 $2/$10（8月31日前），之后 $3/$15&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Claude Opus 5&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;困难 agentic 编码和企业级工作，默认高推理强度，有 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;xhigh&lt;/code&gt; 档&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;—&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Claude Haiku 4.5&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;快速便宜，适合分类、简单转换等高吞吐低延迟任务&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;—&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Claude Fable 5&lt;/strong&gt;（Mythos 级）&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Opus 之上的一档，用于最难、最长周期的推理，价格约为 Opus 两倍&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;大多数团队用不上&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;实操规则就一句话：&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Sonnet 5 干大多数活。Opus 5 留给真正困难或长周期的任务。Haiku 用于便宜的批量调用。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;一个值得知道的坑：Sonnet 5 和 Opus 4.7+ 用了新的 tokenizer，同样的文本可能比老模型多消耗大约 1.0–1.35 倍的 token。Anthropic 把 Sonnet 5 的发布价定在让你切换后成本大致持平的水平，但如果你在盯账单，别假设 token 数和上个季度完全一样。&lt;/p&gt;

&lt;h2 id=&quot;第二步停止提示开始简报&quot;&gt;第二步：停止”提示”，开始”简报”&lt;/h2&gt;

&lt;p&gt;高级工程师不会丢给初级员工一句话就走人。他们会给上下文、约束条件，以及”完成”的定义。&lt;/p&gt;

&lt;p&gt;对 Claude 也该这样。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;弱提示：&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Add caching to this API client.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;高级工程师级别：&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;You are working in an existing Swift package. Do not restructure the module.

Task: Add a lightweight in-memory response cache to APIClient.

Constraints:
- Cache only GET requests.
- TTL should be configurable, default 60 seconds.
- Thread-safe. Assume concurrent access.
- No new third-party dependencies.
- Keep the public API backward compatible.

Definition of done:
- Existing tests still pass.
- Add unit tests for cache hit, cache miss, and expiry.

Before writing code, list your plan and the files you will touch.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;第二个版本有效，是因为它给了 Claude 一个好工单给人类时同样给的东西：&lt;strong&gt;范围、边界和验收标准。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;最后那行”先列出你的计划再写代码”，是整篇文章里杠杆最高的一条习惯。下面展开讲。&lt;/p&gt;

&lt;h2 id=&quot;第三步用努力控制而不是碰运气&quot;&gt;第三步：用努力控制，而不是碰运气&lt;/h2&gt;

&lt;p&gt;近几代模型把固定的”思考 token 预算”换成了&lt;strong&gt;自适应推理&lt;/strong&gt;：Claude 自己评估问题有多难，决定投入多少思考。&lt;/p&gt;

&lt;p&gt;你用一个&lt;strong&gt;努力等级&lt;/strong&gt;（effort level）来引导它，而不是一个原始 token 预算——把它想象成一个从 low 到 max 的滑块。&lt;/p&gt;

&lt;p&gt;实践中，&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;xhigh&lt;/code&gt; 介于 high 和 max 之间：它用于需要额外推理、但不值得花到最大预算的困难任务。Opus 5 默认就是高努力，并针对最难的问题暴露了一个 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;xhigh&lt;/code&gt; 档。&lt;/p&gt;

&lt;p&gt;实践中的用法：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Standard / high&lt;/strong&gt; → 大多数编码、重构和日常问题&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;xhigh&lt;/strong&gt; → 棘手的 Bug、纠结的架构决策、微妙的并发问题&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;max&lt;/strong&gt; → 只留给真正艰难的一次性问题，你心甘情愿为额外算力付费&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;在 Claude Code 里的模式是：&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;/effort xhigh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;然后交给它那个困难任务。&lt;/p&gt;

&lt;p&gt;大多数人犯的错误是”为了保险起见”把所有事情都开到最大努力。那只会更慢、更贵，没有任何收益。让努力匹配难度，就像你会派资深工程师解决难题、派初级工程师解决简单问题一样。&lt;/p&gt;

&lt;h2 id=&quot;第四步学会-claude-code真正的杠杆在这里&quot;&gt;第四步：学会 Claude Code——真正的杠杆在这里&lt;/h2&gt;

&lt;p&gt;如果你只在聊天窗口里用 Claude，你大概只用了它 20% 的能力。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code&lt;/strong&gt; 是 Anthropic 的智能体编码工具。它跑在你的终端、桌面应用或 IDE 里，能读文件、执行命令、改代码，通过一个智能体循环调用外部工具、积累上下文、管理长会话。下面这些功能，是真正改变你工作方式的。&lt;/p&gt;

&lt;h3 id=&quot;plan-mode计划模式&quot;&gt;Plan mode（计划模式）&lt;/h3&gt;

&lt;p&gt;Plan mode 是一个只读状态：Claude 能读和分析文件，但在你批准之前，它物理上无法编辑、写入或执行命令。&lt;/p&gt;

&lt;p&gt;它会探索你的代码库并提交一份编号计划——&lt;strong&gt;不执行任何东西&lt;/strong&gt;。这是在你让它碰文件之前划定工作范围的理想方式。&lt;/p&gt;

&lt;p&gt;用 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Shift+Tab&lt;/code&gt;（按两次）或 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/plan&lt;/code&gt; 切换。&lt;/p&gt;

&lt;p&gt;工作流：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;进入计划模式&lt;/li&gt;
  &lt;li&gt;描述功能或 Bug&lt;/li&gt;
  &lt;li&gt;读计划，纠正它的错误假设&lt;/li&gt;
  &lt;li&gt;然后才让它动手实现&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;这一个习惯，就能避免大多数”AI 失控重写了我半个项目”的灾难。&lt;/p&gt;

&lt;h3 id=&quot;checkpoints检查点&quot;&gt;Checkpoints（检查点）&lt;/h3&gt;

&lt;p&gt;Claude Code 会在每次修改前自动给工作区拍快照，你可以按两次 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Esc&lt;/code&gt; 或运行 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/rewind&lt;/code&gt; 瞬间回滚。可以只回滚代码、只回滚对话，或者两者都回滚。&lt;/p&gt;

&lt;p&gt;这是你的安全网。正是它让你敢批准大胆的重构而不害怕，因为”撤销”覆盖的是数小时的工作，而不是一次编辑。&lt;/p&gt;

&lt;h3 id=&quot;permission-modes权限模式&quot;&gt;Permission modes（权限模式）&lt;/h3&gt;

&lt;p&gt;默认模式在每次写文件和执行 shell 命令前都会询问。其他模式用监督换速度。还有一个 Auto 模式，由一个独立的分类器审查每个动作，放行安全的、拦截有风险的。&lt;/p&gt;

&lt;p&gt;我的建议是：&lt;strong&gt;凡是重要的活，把权限收紧。&lt;/strong&gt; 全自动的便利，不值得一个智能体在你的仓库里执行破坏性命令。已经有不少公开的恐怖故事，讲编码智能体在权限给得太松时删掉了数据。&lt;/p&gt;

&lt;h3 id=&quot;subagents子智能体&quot;&gt;Subagents（子智能体）&lt;/h3&gt;

&lt;p&gt;Claude Code 可以派生子智能体并行工作，现在它们默认在后台运行，主会话可以继续干活，它们在后台跑。&lt;/p&gt;

&lt;p&gt;对于大活，动态工作流可以从 Claude 写的脚本编排大量子智能体，实现代码库规模的迁移。第一天你不需要这个。但知道它存在，会改变你规划大型重构的方式：不再是串行长跑，而是把工作扇出去。&lt;/p&gt;

&lt;h2 id=&quot;第五步给-claude-正确的上下文而不是全部上下文&quot;&gt;第五步：给 Claude 正确的上下文，而不是全部上下文&lt;/h2&gt;

&lt;p&gt;更多上下文不等于更好。&lt;/p&gt;

&lt;p&gt;技巧是给 Claude &lt;strong&gt;正确的那一片&lt;/strong&gt;。两个功能让这件事变简单。&lt;/p&gt;

&lt;h3 id=&quot;projects项目&quot;&gt;Projects（项目）&lt;/h3&gt;

&lt;p&gt;在 claude.ai 里，Projects 保存你的文件。当内容接近上下文上限时，Projects 会自动切换到检索模式——Claude 搜索项目，只拉取它需要的片段。这会大幅提高有效容量，而且不需要手动配置。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;用 Projects 存：&lt;/strong&gt; 你反复回来处理的代码库、产品规格、风格指南或领域文档。&lt;/p&gt;

&lt;h3 id=&quot;artifacts工件&quot;&gt;Artifacts（工件）&lt;/h3&gt;

&lt;p&gt;Artifacts 在侧边栏渲染代码、文档、图表和交互内容，带实时预览。2026 年起你可以原地编辑一个 artifact：选中你想改的部分，输入指令，Claude 内联修改。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;用 Artifacts 做：&lt;/strong&gt; 迭代一个组件、脚本、图表或小工具，你想直接看到渲染结果并就地微调。&lt;/p&gt;

&lt;p&gt;心智模型就一句话：&lt;strong&gt;Projects 是长期记忆，Artifacts 是工作台。&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;第六步用-mcp-把-claude-接到你的真实工具上&quot;&gt;第六步：用 MCP 把 Claude 接到你的真实工具上&lt;/h2&gt;

&lt;p&gt;这一步把玩具和工作流区分开。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP（Model Context Protocol）&lt;/strong&gt; 是一个开放标准，把 Claude 接到外部系统上——GitHub、数据库、浏览器、内部服务。MCP server 负责集成，Claude 负责推理该怎么用它。&lt;/p&gt;

&lt;p&gt;实际例子：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;接一个 GitHub MCP server，让 Claude 能读 issue、开 PR、查 CI&lt;/li&gt;
  &lt;li&gt;接一个只读的数据库 MCP server，让 Claude 能对着真实 schema 回答问题&lt;/li&gt;
  &lt;li&gt;在 Chrome 里用 Claude，让它读 console 错误、网络请求和 DOM 状态来帮你调试&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;一句重要的提醒：&lt;strong&gt;一个 MCP 工具是一个真实的能力，不是一个建议。&lt;/strong&gt; 暴露&lt;strong&gt;最窄&lt;/strong&gt;的实用工具，尽量用只读的，任何破坏性操作都要过人工批准。如果你不会在第一天把裸凭据交给一个新员工，就不要把它暴露成一个无防护的 MCP 工具。&lt;/p&gt;

&lt;h2 id=&quot;第七步像-review-初级工程师的-pr-一样-review因为它就是&quot;&gt;第七步：像 review 初级工程师的 PR 一样 review——因为它就是&lt;/h2&gt;

&lt;p&gt;心态转变是串联一切的关键。&lt;/p&gt;

&lt;p&gt;Claude 很快，而且经常很出色。它有时也会自信地犯错，能产出那种”看起来够对、错得够隐蔽”的输出——瞄一眼能过、上生产就炸的那种 Bug。&lt;/p&gt;

&lt;p&gt;所以把每一次有意义的修改，都当成一个才华横溢的初级工程师提交的 PR：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;读 diff，别只看摘要。&lt;/strong&gt; 摘要是它对自己工作的叙述。diff 才是真正发生了什么。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;自己跑测试。&lt;/strong&gt; 不要凭一句”测试通过了”就信。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;在一个新会话里让它 review 自己的代码。&lt;/strong&gt; 和写代码的会话分开跑一次 review，能降低它只是自我验证错误逻辑的概率。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;对钱、认证和持久化格外小心。&lt;/strong&gt; 任何碰到财务数据或凭据的东西，人工 review 没得商量。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Claude Code 里有一条命令就是干这个的——一次报告正确性 Bug 的代码审查 pass。用它，但把它当第二意见，不是准予放行的盖章。&lt;/p&gt;

&lt;h2 id=&quot;一个现实的端到端工作流&quot;&gt;一个现实的端到端工作流&lt;/h2&gt;

&lt;p&gt;这些零件在一个普通功能上是怎么拼起来的：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;在仓库里打开 Claude Code。默认 &lt;strong&gt;Sonnet 5&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;进入&lt;strong&gt;计划模式&lt;/strong&gt;，用范围、约束和完成定义描述功能&lt;/li&gt;
  &lt;li&gt;读计划，在写任何代码之前修正错误假设&lt;/li&gt;
  &lt;li&gt;让它&lt;strong&gt;开着权限&lt;/strong&gt;实现，这样你批准每次文件写入&lt;/li&gt;
  &lt;li&gt;真遇到困难问题，升到 &lt;strong&gt;Opus 5&lt;/strong&gt;，&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;xhigh&lt;/code&gt; 努力档&lt;/li&gt;
  &lt;li&gt;跑测试。读 diff&lt;/li&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;提交——署上你的名字，因为你 review 过了&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;注意你在做什么：你不在打字写代码，你在&lt;strong&gt;指挥和审查&lt;/strong&gt;。这才是高级工程师的动作。&lt;/p&gt;

&lt;h2 id=&quot;把高级用户和聊天用户分开的五个习惯&quot;&gt;把高级用户和聊天用户分开的五个习惯&lt;/h2&gt;

&lt;p&gt;如果你只记一条：&lt;/p&gt;

&lt;ol&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; 别把所有东西都开到 max&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;收紧权限。&lt;/strong&gt; 尤其是破坏性和敏感操作&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;review diff。&lt;/strong&gt; 你是最后一道防线，不是模型&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;2026 年用 Claude 拿到 10 倍产出的人，没有秘密提示词。他们跑着一套纪律化的工作流：&lt;strong&gt;激进地委派，无情地验证，把人的手放在真正重要的部分上。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;2026 年的 Claude 真的有能力做高级工程师级的工作。而你能否拿到高级工程师级的结果，完全取决于你怎么驱动它。&lt;/p&gt;
</description>  
               <pubDate>Fri, 07 Aug 2026 00:00:00 +0800</pubDate>  
               <link>https://www.wangjun.dev/2026/08/claude-senior-engineer-not-chatbot/</link>  
               <guid isPermaLink="true">https://www.wangjun.dev/2026/08/claude-senior-engineer-not-chatbot/</guid>  
               </item>  
          
            <item>  
               <title>Apple 把 MacBook 变成了 Linux 开发机：WWDC 26 被忽略的重磅发布</title>  
               <description>&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#引言所有人都错过的那条新闻&quot; id=&quot;markdown-toc-引言所有人都错过的那条新闻&quot;&gt;引言：所有人都错过的那条新闻&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#两年铺垫从-containerization-框架到-container-10&quot; id=&quot;markdown-toc-两年铺垫从-containerization-框架到-container-10&quot;&gt;两年铺垫：从 Containerization 框架到 container 1.0&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#第一步wwdc-25-的-containerization-框架&quot; id=&quot;markdown-toc-第一步wwdc-25-的-containerization-框架&quot;&gt;第一步：WWDC 25 的 Containerization 框架&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#第二步container-102026-年-6-月-11-日&quot; id=&quot;markdown-toc-第二步container-102026-年-6-月-11-日&quot;&gt;第二步：container 1.0，2026 年 6 月 11 日&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#第三步wwdc-26-的-container-machine&quot; id=&quot;markdown-toc-第三步wwdc-26-的-container-machine&quot;&gt;第三步：WWDC 26 的 Container Machine&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#上手实操今天就能用起来&quot; id=&quot;markdown-toc-上手实操今天就能用起来&quot;&gt;上手实操：今天就能用起来&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#安装&quot; id=&quot;markdown-toc-安装&quot;&gt;安装&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#创建你的第一个容器机&quot; id=&quot;markdown-toc-创建你的第一个容器机&quot;&gt;创建你的第一个容器机&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#跑一条一次性命令&quot; id=&quot;markdown-toc-跑一条一次性命令&quot;&gt;跑一条一次性命令&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#进入交互式-shell&quot; id=&quot;markdown-toc-进入交互式-shell&quot;&gt;进入交互式 Shell&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#构建一台真正的开发机&quot; id=&quot;markdown-toc-构建一台真正的开发机&quot;&gt;构建一台真正的开发机&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#用-ssh-连上你的编辑器&quot; id=&quot;markdown-toc-用-ssh-连上你的编辑器&quot;&gt;用 SSH 连上你的编辑器&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#跑一套真实的服务栈&quot; id=&quot;markdown-toc-跑一套真实的服务栈&quot;&gt;跑一套真实的服务栈&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#多发行版并行&quot; id=&quot;markdown-toc-多发行版并行&quot;&gt;多发行版并行&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#需要知道的坑&quot; id=&quot;markdown-toc-需要知道的坑&quot;&gt;需要知道的坑&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#内存是粘滞的&quot; id=&quot;markdown-toc-内存是粘滞的&quot;&gt;内存是粘滞的&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#还没有-gpu-和-usb-透传&quot; id=&quot;markdown-toc-还没有-gpu-和-usb-透传&quot;&gt;还没有 GPU 和 USB 透传&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#家目录默认读写挂载是安全暴露&quot; id=&quot;markdown-toc-家目录默认读写挂载是安全暴露&quot;&gt;家目录默认读写挂载是安全暴露&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#docker-compose-缺位&quot; id=&quot;markdown-toc-docker-compose-缺位&quot;&gt;Docker Compose 缺位&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#这对你的工作流意味着什么&quot; id=&quot;markdown-toc-这对你的工作流意味着什么&quot;&gt;这对你的工作流意味着什么&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#apple-到底在下一盘什么棋&quot; id=&quot;markdown-toc-apple-到底在下一盘什么棋&quot;&gt;Apple 到底在下一盘什么棋&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;引言所有人都错过的那条新闻&quot;&gt;引言：所有人都错过的那条新闻&lt;/h2&gt;

&lt;p&gt;WWDC 26 的 Keynote 上，Apple Intelligence 拿了最长的时段，Vision Pro 拿了最炫的 Demo，新的设计语言拿走了所有营销预算。&lt;/p&gt;

&lt;p&gt;而整个大会对开发者来说最有分量的发布，被埋在 Session 389 里——一个叫 Michael 的工程师，在一间小房间里，讲了一整场连标题卡片都没有的演讲。&lt;/p&gt;

&lt;p&gt;这个发布叫 &lt;strong&gt;Container Machine&lt;/strong&gt;。它是一个原生运行在 macOS 26 上的 Linux 环境：启动时间不到一秒，自动挂载你的家目录，使用你 Mac 上的用户名，支持任何 OCI 兼容镜像——也就是你在 Docker Hub 上拉过的所有东西。它免费、开源、随操作系统内置。&lt;/p&gt;

&lt;p&gt;如果你是一名开发者，曾经为了在 Mac 上测试服务器代码而维护一台 Linux 虚拟机，或者花钱买过 Docker Desktop，或者被 Orbstack 的授权条款折腾过，又或者桌上始终放着一台破旧的 Ubuntu 笔记本专门用来”跑 Linux 的活”——Apple 刚刚把所有这些基础设施变得多余了。&lt;/p&gt;

&lt;p&gt;你的 Mac，现在是一台一等公民的 Linux 开发机。不是”一台跑着虚拟机的 Mac”，而是一台 Linux 开发机。缝隙几乎消失了。&lt;/p&gt;

&lt;h2 id=&quot;两年铺垫从-containerization-框架到-container-10&quot;&gt;两年铺垫：从 Containerization 框架到 container 1.0&lt;/h2&gt;

&lt;p&gt;要理解 Container Machine，得先看它脚下的一年功夫。&lt;/p&gt;

&lt;h3 id=&quot;第一步wwdc-25-的-containerization-框架&quot;&gt;第一步：WWDC 25 的 Containerization 框架&lt;/h3&gt;

&lt;p&gt;2025 年 6 月，Apple 同时开源了两样东西：一个叫 &lt;strong&gt;Containerization&lt;/strong&gt; 的 Swift 框架，和一个叫 &lt;strong&gt;container&lt;/strong&gt; 的 CLI 工具。&lt;/p&gt;

&lt;p&gt;Containerization 是一个底层框架——负责镜像管理、容器执行、网络、存储，以及一套完全用 Swift 编写的 Linux init 系统。&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;container&lt;/code&gt; CLI 是面向开发者的封装：一个长得像 Docker 的命令行工具，可以拉取 OCI 镜像、运行它们、管理它们。&lt;/p&gt;

&lt;p&gt;让这一切成立的关键架构决策是：&lt;strong&gt;每个容器一台轻量虚拟机&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;Docker Desktop 和 Podman 是另一条路：它们启动一台大型 Linux 虚拟机，然后在里面跑你所有的容器。容器共享内核、共享网络接口（这就是为什么你必须用 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-p 8080:8080&lt;/code&gt; 做端口映射）、共享文件系统挂载面。&lt;/p&gt;

&lt;p&gt;Apple 的 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;container&lt;/code&gt; 工具则为每个容器启动一台全新的轻量 Linux VM：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;启动时间亚秒级&lt;/li&gt;
  &lt;li&gt;每个容器拥有独立的 IP 地址——不需要端口映射，直接访问容器的 IP 就行&lt;/li&gt;
  &lt;li&gt;每个容器只挂载你显式共享的目录&lt;/li&gt;
  &lt;li&gt;如果你停止了所有容器，你的机器上就不会运行任何 Linux——没有后台守护进程吃资源&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;安全上的影响是实打实的。在 Docker Desktop 模型里，如果一个容器被攻破，共享的 VM 内核就是其他所有容器的爆炸半径。在 Apple 模型里，每个容器独占一台 VM，爆炸半径就是一个容器。&lt;/p&gt;

&lt;p&gt;隐私上的影响同样真实。在 Docker Desktop 模型里，你把宿主机目录绑定进容器时，这个目录会先挂载到共享 VM 里，只要允许，其他容器都能看到它。在 Apple 模型里，目录直接挂进目标容器的 VM，不会进入任何其他地方。&lt;/p&gt;

&lt;p&gt;这套架构的核心叫 &lt;strong&gt;vminitd&lt;/strong&gt;——一个静态链接的 Swift 二进制，在每个轻量 VM 里以 PID 1 的身份运行。没有 libc、没有核心工具、没有动态库，用 Swift 的 Static Linux SDK 对着 musl 编译。每个容器 VM 的攻击面，是能承载你工作负载的最小的 Linux 用户态。&lt;/p&gt;

&lt;p&gt;这是 2025 年 6 月的事，是地基。&lt;/p&gt;

&lt;h3 id=&quot;第二步container-102026-年-6-月-11-日&quot;&gt;第二步：container 1.0，2026 年 6 月 11 日&lt;/h3&gt;

&lt;p&gt;一年后，经历了从 0.1（2025 年 6 月）到 0.8（2026 年 2 月）共二十个小版本，Apple 在 2026 年 6 月初发布了 &lt;strong&gt;container 1.0&lt;/strong&gt;。生产就绪，标准 OCI 镜像兼容性验证完毕，Bug 数量降到个位数，性能基准在大多数指标上和 Docker Desktop、Orbstack 持平，内存吞吐上领先。&lt;/p&gt;

&lt;p&gt;如果你只看新闻到这一步，你会以为 Apple 造了一个更快的 Docker。并没有。他们造的是真正那个发布的地基。&lt;/p&gt;

&lt;h3 id=&quot;第三步wwdc-26-的-container-machine&quot;&gt;第三步：WWDC 26 的 Container Machine&lt;/h3&gt;

&lt;p&gt;这才是改变开发者体验数学的那部分。&lt;/p&gt;

&lt;p&gt;一个容器机（container machine）是一个被赋予了两种它本不该有的属性的容器：&lt;strong&gt;持久化&lt;/strong&gt;，和&lt;strong&gt;深度宿主机集成&lt;/strong&gt;。Apple 在 Session 里的表述很准确：它”像容器一样快而轻量，像虚拟机一样持久，加上宿主机集成，容器机用起来就像 macOS 的原生功能”。&lt;/p&gt;

&lt;p&gt;拆开看这些词背后的含义：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;持久化意味着容器机有状态。&lt;/strong&gt; 你周二在里面 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;apt install&lt;/code&gt; 的工具，周三还在。你周三在容器家目录里写的脚本，周四还在。这不同于普通容器——普通容器里，除了显式挂载的卷，其他东西一重启就蒸发。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;自动用户映射。&lt;/strong&gt; 容器机里的用户名和你 Mac 上的用户名一致。你的 Mac 账号叫 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mike&lt;/code&gt;，你在容器机里登录也是 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mike&lt;/code&gt;。UID/GID 一致，权限模型跨宿主机/访客边界直接工作。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;自动家目录共享。&lt;/strong&gt; 你的 Mac 家目录默认挂载进容器机——在同一路径下。你在 Mac 的 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/projects/web-server&lt;/code&gt; 里编辑的文件，就是容器机里 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cargo build&lt;/code&gt; 读到的那个文件。没有同步、没有 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker cp&lt;/code&gt;、没有卷挂载声明。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;工作目录继承。&lt;/strong&gt; 你在 Mac 终端里位于 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/projects/web-server&lt;/code&gt;，敲下 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;container machine run&lt;/code&gt;，进入的就是 Linux 环境里的同一路径。”等等，我现在在容器里的哪里？”这种认知开销消失了。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;真正的 init 系统。&lt;/strong&gt; systemd 能工作。你可以把 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;postgres&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;redis&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nginx&lt;/code&gt; 跑成正经的系统服务，而不是被包裹的进程。你最终部署到的 Linux 服务器栈，本地模拟时行为完全一致。&lt;/p&gt;

&lt;p&gt;如果你用过 Windows Subsystem for Linux 2，这个对比很贴切。The Register 的评价是”一个 WSL 式的东西”，这个说法公允。执行模型和安全模型不同，但开发者体验的目标是一样的。&lt;/p&gt;

&lt;h2 id=&quot;上手实操今天就能用起来&quot;&gt;上手实操：今天就能用起来&lt;/h2&gt;

&lt;p&gt;下面是从零开始用 Container Machine 的全部命令。&lt;/p&gt;

&lt;h3 id=&quot;安装&quot;&gt;安装&lt;/h3&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;brew &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;container
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;就这一条。不想走 Homebrew 的话，也可以直接去 &lt;a href=&quot;https://github.com/apple/container/releases&quot;&gt;apple/container 的 releases 页面&lt;/a&gt; 拿安装包。&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;container&lt;/code&gt; 和 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;container machine&lt;/code&gt; 是同一个 CLI 的两个子命令，Container Machine 不需要单独安装——macOS 26 上随 container 1.0 一起提供。&lt;/p&gt;

&lt;h3 id=&quot;创建你的第一个容器机&quot;&gt;创建你的第一个容器机&lt;/h3&gt;

&lt;p&gt;先用最轻量的基础镜像 Alpine 验证一切正常：&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;container machine create &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;--name&lt;/span&gt; dev &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;--default&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
  alpine:latest
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;这条命令做三件事：从 Docker Hub 拉取 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;alpine:latest&lt;/code&gt; 的 OCI 镜像；基于它创建一个名为 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dev&lt;/code&gt; 的容器机；&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--default&lt;/code&gt; 把 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dev&lt;/code&gt; 设为默认机器，之后的命令就不用每次都指定。&lt;/p&gt;

&lt;p&gt;验证一下：&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;container machine list
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;你会看到你的机器、它的 IP 地址、CPU 分配（默认 7 核）和内存分配（默认是你系统内存的一半）。&lt;/p&gt;

&lt;h3 id=&quot;跑一条一次性命令&quot;&gt;跑一条一次性命令&lt;/h3&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;container machine run &lt;span class=&quot;nb&quot;&gt;uname&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;这行会打印 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Linux ... GNU/Linux&lt;/code&gt;——证明你在 Linux 环境里。对比一下在 Mac 终端直接跑 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uname -a&lt;/code&gt;，打印的是 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Darwin&lt;/code&gt;。两个不同的内核，一套工作流。&lt;/p&gt;

&lt;h3 id=&quot;进入交互式-shell&quot;&gt;进入交互式 Shell&lt;/h3&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;container machine run
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;不带任何参数。你现在就在 Linux 里了，坐在你启动时所在的同一个工作目录。你的 Mac 家目录在，你的用户名一样，你的文件都在。&lt;/p&gt;

&lt;h3 id=&quot;构建一台真正的开发机&quot;&gt;构建一台真正的开发机&lt;/h3&gt;

&lt;p&gt;Alpine 做概念验证没问题，真干活还是想要一个更完整的发行版。下面这个 Dockerfile 给你一个可用的 Ubuntu 24.04 开发环境：&lt;/p&gt;

&lt;div class=&quot;language-dockerfile highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; ubuntu:24.04&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;RUN &lt;/span&gt;apt-get update &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt-get &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\
&lt;/span&gt;  build-essential &lt;span class=&quot;se&quot;&gt;\
&lt;/span&gt;  git &lt;span class=&quot;se&quot;&gt;\
&lt;/span&gt;  curl &lt;span class=&quot;se&quot;&gt;\
&lt;/span&gt;  wget &lt;span class=&quot;se&quot;&gt;\
&lt;/span&gt;  vim &lt;span class=&quot;se&quot;&gt;\
&lt;/span&gt;  htop &lt;span class=&quot;se&quot;&gt;\
&lt;/span&gt;  systemd &lt;span class=&quot;se&quot;&gt;\
&lt;/span&gt;  &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;rm&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-rf&lt;/span&gt; /var/lib/apt/lists/&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# 真正的 init，让 systemd 管理的服务能工作&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;CMD&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; [&quot;/sbin/init&quot;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;用 container 工具构建它：&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;container build &lt;span class=&quot;nt&quot;&gt;-t&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;local&lt;/span&gt;/ubuntu-dev &lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;再把它变成一个持久化的容器机：&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;container machine create &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;--name&lt;/span&gt; ubuntu-dev &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;--default&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;local&lt;/span&gt;/ubuntu-dev
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;这就是你常驻的 Linux 机器。从此以后，你装进去的任何东西——&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nodejs&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;postgres&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;redis&lt;/code&gt;、语言工具链、自定义工具——重启后都在。&lt;/p&gt;

&lt;h3 id=&quot;用-ssh-连上你的编辑器&quot;&gt;用 SSH 连上你的编辑器&lt;/h3&gt;

&lt;p&gt;开发者社区反馈最多的坑是：在 Mac 侧编辑、Linux 侧运行时，VS Code 的热重载和调试断点不干净。文件系统桥是可靠的，但文件监听事件不会传播。&lt;/p&gt;

&lt;p&gt;解决办法在 Apple 自己的文档里，两分钟搞定：不要通过宿主机挂载编辑，改成通过 SSH 连接编辑器。&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;# 获取 IP&lt;/span&gt;
container machine list
&lt;span class=&quot;c&quot;&gt;# 直接 SSH 进去&lt;/span&gt;
ssh &amp;lt;your-username&amp;gt;@&amp;lt;container-machine-ip&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;然后在 VS Code 里装 Remote-SSH 插件，指向这个 IP。现在你是在容器机的网络内编辑文件。热重载正常了，断点正常了，文件监听正常了。&lt;/p&gt;

&lt;p&gt;这一个动作，把 Container Machine 从”适合测试”变成了”适合日常使用”。&lt;/p&gt;

&lt;h3 id=&quot;跑一套真实的服务栈&quot;&gt;跑一套真实的服务栈&lt;/h3&gt;

&lt;p&gt;这是让整套架构物有所值的工作流。你可以在一个容器机里跑 Postgres + Redis + 你的应用，用 systemd 管理服务，然后从 Mac 的浏览器直接访问。&lt;/p&gt;

&lt;p&gt;在容器机内部：&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt-get &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; postgresql redis-server
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;systemctl &lt;span class=&quot;nb&quot;&gt;enable&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--now&lt;/span&gt; postgresql redis-server
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;这行 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl enable --now&lt;/code&gt; 就是魔法所在。Container Machine 有真正的 init 系统，所以 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl&lt;/code&gt; 确实干它该干的事。Postgres 起来了，Redis 起来了，容器机重启后它们还活着，行为就像真实 Linux 服务器上的服务。&lt;/p&gt;

&lt;p&gt;从 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;container machine list&lt;/code&gt; 拿到 IP 后，打开 Mac 上的 Safari，访问 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;http://&amp;lt;ip&amp;gt;:&amp;lt;port&amp;gt;&lt;/code&gt;，你就在访问一套远程 Linux 服务器式的服务栈了——只不过它一秒启动、共享你的家目录。&lt;/p&gt;

&lt;h3 id=&quot;多发行版并行&quot;&gt;多发行版并行&lt;/h3&gt;

&lt;p&gt;你不局限于一台容器机。Ubuntu、Alpine、Fedora 可以同时跑：&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;container machine create &lt;span class=&quot;nt&quot;&gt;--name&lt;/span&gt; ubuntu-dev &lt;span class=&quot;nb&quot;&gt;local&lt;/span&gt;/ubuntu-dev
container machine create &lt;span class=&quot;nt&quot;&gt;--name&lt;/span&gt; alpine-test alpine:latest
container machine create &lt;span class=&quot;nt&quot;&gt;--name&lt;/span&gt; fedora-check fedora:40
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;指定机器执行命令：&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;container machine run &lt;span class=&quot;nt&quot;&gt;--machine&lt;/span&gt; alpine-test &lt;span class=&quot;nb&quot;&gt;uname&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;这就是跨发行版测试变得轻松的那部分架构。如果你的项目需要在 Ubuntu 和 Alpine 上都跑通，你在 Ubuntu 机器上编译，立刻在 Alpine 机器上测试，全程不用离开终端。&lt;/p&gt;

&lt;h2 id=&quot;需要知道的坑&quot;&gt;需要知道的坑&lt;/h2&gt;

&lt;p&gt;有三件事，没提前看到的话一定会绊倒你。&lt;/p&gt;

&lt;h3 id=&quot;内存是粘滞的&quot;&gt;内存是粘滞的&lt;/h3&gt;

&lt;p&gt;容器机默认占用你系统内存的一半，空闲时不会还给 macOS。如果构建过程内存飙升，这部分内存会一直被占用，直到你重启容器机。这是 Orbstack 最受好评的功能之一（动态内存释放），Apple 还没跟上。如果你在 16GB 的 Mac 上创建三台容器机，那就是 8GB 的分配问题。建议在创建时用 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--memory&lt;/code&gt; 给每台机器设明确的内存上限：&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;container machine create &lt;span class=&quot;nt&quot;&gt;--memory&lt;/span&gt; 4g &lt;span class=&quot;nt&quot;&gt;--name&lt;/span&gt; dev &lt;span class=&quot;nb&quot;&gt;local&lt;/span&gt;/ubuntu-dev
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;还没有-gpu-和-usb-透传&quot;&gt;还没有 GPU 和 USB 透传&lt;/h3&gt;

&lt;p&gt;如果你的工作流涉及 CUDA、GPU 加速的 ML 推理，或者需要在 Linux 里访问 USB 设备，Container Machine 目前还不适合你。这两项都有开放的 issue，盯着 GitHub 看进展。&lt;/p&gt;

&lt;h3 id=&quot;家目录默认读写挂载是安全暴露&quot;&gt;家目录默认读写挂载是安全暴露&lt;/h3&gt;

&lt;p&gt;把整个 Mac 家目录挂进 Linux 很方便，但代价是：Linux 里跑的任何东西——包括一个恶意的 npm 包或受污染的镜像——都能读到你的 SSH 密钥、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/.aws/credentials&lt;/code&gt;、你的一切。可以用 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--home-mount readonly&lt;/code&gt; 把挂载变成只读，或者用 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--home-mount none&lt;/code&gt; 完全关闭。任何你要跑不可信代码的容器机，都建议这么做。目前还没有按文件夹的挂载粒度。&lt;/p&gt;

&lt;h3 id=&quot;docker-compose-缺位&quot;&gt;Docker Compose 缺位&lt;/h3&gt;

&lt;p&gt;如果你看过 2026 年初的社区讨论，会知道 Compose 是 container 0.x 唯一明显的缺口。到 macOS 26 的 container 1.0，这个缺口还在。Apple 没有提供 Compose 等价物。社区在填补——至少有三个第三方封装在活跃开发中——但还没有一个达到 Docker Compose 的成熟度。&lt;/p&gt;

&lt;p&gt;目前的务实做法是：多服务负载就跑成单容器机 + systemd 管理服务，这个方案很干净。如果你真的需要每个服务一台机器的 Compose 式编排，可以写个 shell 脚本，每个服务跑一条 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;container machine create&lt;/code&gt;，再用 IP 把它们串起来。&lt;/p&gt;

&lt;p&gt;这个问题会被解决的，是几个月的事，不是几年。&lt;/p&gt;

&lt;h2 id=&quot;这对你的工作流意味着什么&quot;&gt;这对你的工作流意味着什么&lt;/h2&gt;

&lt;p&gt;过去十年，”在 Mac 上为 Linux 开发”的工作流大致是：装 Docker Desktop、忍受它的内存占用和授权费、写 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker-compose.yml&lt;/code&gt;、在共享 VM 里跑服务、挂载需要的卷、祈祷文件监听能传播、容忍各种缝隙。&lt;/p&gt;

&lt;p&gt;Container Machine 把这条工作流压缩成三条命令和一个 Dockerfile。缝隙变小了。”我是在 macOS 还是 Linux”的认知开销消失了——你的终端看起来一样、用户名一样、家目录一样、编辑器一直开着。你敲下 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;container machine run&lt;/code&gt;，shell 底下的内核就变了。&lt;/p&gt;

&lt;p&gt;按我的统计，实际的效率提升：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;不再有 Docker Desktop 的开销，回收 2-4GB 基础内存&lt;/li&gt;
  &lt;li&gt;不再有”文件去哪了”——宿主机目录就是容器目录&lt;/li&gt;
  &lt;li&gt;本地开发不再需要端口映射，每台机器有自己的 IP&lt;/li&gt;
  &lt;li&gt;用真正的 systemd 做本地服务级测试，测的就是要部署的&lt;/li&gt;
  &lt;li&gt;不出终端就能做跨发行版测试&lt;/li&gt;
  &lt;li&gt;通过 SSH 做编辑器侧热重载（一次性配置，之后一直生效）&lt;/li&gt;
  &lt;li&gt;亚秒级冷启动意味着你可以随手 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;container machine create&lt;/code&gt; 做一次性实验&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;如果你往 Linux 服务器上部署任何代码——除非你全职写 iOS 应用，否则大概率是的——你在 2026 年 6 月 8 日的工作流，不该是 2026 年 6 月 25 日的工作流。工具变了，该动了。&lt;/p&gt;

&lt;h2 id=&quot;apple-到底在下一盘什么棋&quot;&gt;Apple 到底在下一盘什么棋&lt;/h2&gt;

&lt;p&gt;退一步看这些命令。&lt;/p&gt;

&lt;p&gt;Apple 花了两年时间构建开发者基础设施，只做一件事：&lt;strong&gt;让 Mac 成为做 Linux 服务器端开发最高产的地方&lt;/strong&gt;。他们本不必做这些。可以把容器留给 Docker，可以给 Orbstack 套个漂亮的壳然后说搞定。他们自己动手了，用 Swift 写，为 Apple Silicon 优化，安全模型超过现有玩家。&lt;/p&gt;

&lt;p&gt;他们在争取的，是那批为了正经服务器端工作而流失回 Linux 笔记本的开发者。Framework 笔记本那拨人，”我需要真 Linux 跑 CI”那拨人，”Docker Desktop 太重”那拨人。Apple 想让这些开发者留在 Mac 上，为此愿意花两个 WWDC 的工程资本。&lt;/p&gt;

&lt;p&gt;而且这招正在奏效。性能基准有竞争力，架构比替代品更安全，集成比 Windows 上的 WSL 更紧密，价格是零。&lt;/p&gt;

&lt;p&gt;你桌上的 MacBook，现在是一台一等公民的 Linux 开发机。不是在营销意义上，而是在字面意义上——你可以从这台设备上交付生产级的 Linux 服务器软件，不需要第二台机器。&lt;/p&gt;

&lt;p&gt;这就是 WWDC 26 真正改变的东西。这是大多数报道漏掉的东西。这是一个 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;brew install&lt;/code&gt; 就能解锁的生产力。&lt;/p&gt;

&lt;p&gt;如果你团队里还有工程师在维护一台单独的 Linux 机器专门”跑服务器那摊事”，或者还在给 Docker Desktop 付费——把这套搭建命令发给他们，这就是全部的上手曲线。&lt;/p&gt;
</description>  
               <pubDate>Fri, 07 Aug 2026 00:00:00 +0800</pubDate>  
               <link>https://www.wangjun.dev/2026/08/apple-container-machine-macos-26/</link>  
               <guid isPermaLink="true">https://www.wangjun.dev/2026/08/apple-container-machine-macos-26/</guid>  
               </item>  
          
            <item>  
               <title>30个Agent工程核心概念，每个开发者都得知道</title>  
               <description>&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#问题的根源工具跑得比思想快&quot; id=&quot;markdown-toc-问题的根源工具跑得比思想快&quot;&gt;问题的根源：工具跑得比思想快&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#第一层核心构建块&quot; id=&quot;markdown-toc-第一层核心构建块&quot;&gt;第一层：核心构建块&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#1-agent&quot; id=&quot;markdown-toc-1-agent&quot;&gt;1. Agent&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#2-执行模型think---act---observe&quot; id=&quot;markdown-toc-2-执行模型think---act---observe&quot;&gt;2. 执行模型（Think - Act - Observe）&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#3-agent状态&quot; id=&quot;markdown-toc-3-agent状态&quot;&gt;3. Agent状态&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#4-常见agent模式&quot; id=&quot;markdown-toc-4-常见agent模式&quot;&gt;4. 常见Agent模式&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#第二层工具与能力&quot; id=&quot;markdown-toc-第二层工具与能力&quot;&gt;第二层：工具与能力&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#5-10-工具层概念&quot; id=&quot;markdown-toc-5-10-工具层概念&quot;&gt;5-10. 工具层概念&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#第三层记忆架构&quot; id=&quot;markdown-toc-第三层记忆架构&quot;&gt;第三层：记忆架构&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#11-15-记忆层概念&quot; id=&quot;markdown-toc-11-15-记忆层概念&quot;&gt;11-15. 记忆层概念&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#第四层安全框架&quot; id=&quot;markdown-toc-第四层安全框架&quot;&gt;第四层：安全框架&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#16-20-安全层概念&quot; id=&quot;markdown-toc-16-20-安全层概念&quot;&gt;16-20. 安全层概念&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#第五层何时不该用agent&quot; id=&quot;markdown-toc-第五层何时不该用agent&quot;&gt;第五层：何时不该用Agent&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#工程化的建议&quot; id=&quot;markdown-toc-工程化的建议&quot;&gt;工程化的建议&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#入门路径&quot; id=&quot;markdown-toc-入门路径&quot;&gt;入门路径&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#成本意识&quot; id=&quot;markdown-toc-成本意识&quot;&gt;成本意识&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#选型原则&quot; id=&quot;markdown-toc-选型原则&quot;&gt;选型原则&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#我的判断&quot; id=&quot;markdown-toc-我的判断&quot;&gt;我的判断&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;问题的根源工具跑得比思想快&quot;&gt;问题的根源：工具跑得比思想快&lt;/h2&gt;

&lt;p&gt;Agent工程领域每周都有新工具、新框架、新模型上市，每个都号称颠覆一切。如果你试图追着每个工具跑，你会发现你花在切换工具上的时间比真正使用工具多得多。&lt;/p&gt;

&lt;p&gt;但底层逻辑没那么复杂：跑在表面的是工具名，藏在下面的是几个反复出现的核心概念。一个工具叫它”skill”，另一个叫它”rule”，再另一个叫它”workflow”或”agent instruction”——它们解决的往往是同一个基本问题。理解了这些概念，任何新Agent工具你都能一眼看穿它在做什么。&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;不要追每个工具，追工具背后的思想。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;第一层核心构建块&quot;&gt;第一层：核心构建块&lt;/h2&gt;

&lt;h3 id=&quot;1-agent&quot;&gt;1. Agent&lt;/h3&gt;

&lt;p&gt;Agent这个词现在到处都在用，但含义已经模糊了。简单来说，AI Agent是一个不会回答一次就停下来的LLM——它在循环中运行：理解目标、决定下一步、使用工具、读取结果、再决定下一步。&lt;/p&gt;

&lt;p&gt;对比一下：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;普通聊天机器人：&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;你提问 → 它回答&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Agent：&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;你给目标 → 它思考下一步 → 使用工具 → 检查结果 → 继续直到任务完成&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Agent不是产生一个最终答案，而是产生一连串行动链。每个行动依赖之前的结果。编码是最清晰的例子：你让Agent调试一个失败的测试，它可能检查错误、打开相关文件、修改代码、再次运行、看到另一个错误、再修复，直到测试通过。&lt;/p&gt;

&lt;h3 id=&quot;2-执行模型think---act---observe&quot;&gt;2. 执行模型（Think - Act - Observe）&lt;/h3&gt;

&lt;p&gt;Agent循环的核心模式只有三步：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Think（思考）&lt;/strong&gt; → &lt;strong&gt;Act（行动）&lt;/strong&gt; → &lt;strong&gt;Observe（观察）&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;模型读取当前对话、查看目标、检查可用上下文，决定下一步做什么。然后执行行动——通常是调用工具（读文件、运行命令、搜索数据库、调用API、使用MCP）。最后观察结果并决定是否继续。&lt;/p&gt;

&lt;h3 id=&quot;3-agent状态&quot;&gt;3. Agent状态&lt;/h3&gt;

&lt;p&gt;Agent在循环之间需要持续跟踪的信息：对话历史、已完成步骤、中间结果、已发现的错误。状态管理是Agent设计的核心挑战之一——太简洁会丢失上下文，太详细会撑爆上下文窗口。&lt;/p&gt;

&lt;h3 id=&quot;4-常见agent模式&quot;&gt;4. 常见Agent模式&lt;/h3&gt;

&lt;p&gt;所有Agent框架本质上只有四种工作模式：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;反思（Reflection）&lt;/strong&gt; — Agent对自己的输出做自我检查。生成代码后让另一个LLM实例审查。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;工具使用（Tool Use）&lt;/strong&gt; — Agent动态选择调用哪个工具。读文件、写代码、搜索网络、执行命令。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;规划（Planning）&lt;/strong&gt; — Agent把复杂任务分解为子步骤。如”写一个博客文章”被分解为”搜索主题→写大纲→填内容→校对”。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;多Agent协作（Multi-Agent）&lt;/strong&gt; — 不同Agent扮演不同角色协同工作。一个写代码、一个测试、一个管理任务。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;第二层工具与能力&quot;&gt;第二层：工具与能力&lt;/h2&gt;

&lt;h3 id=&quot;5-10-工具层概念&quot;&gt;5-10. 工具层概念&lt;/h3&gt;

&lt;p&gt;工具是Agent与外部世界交互的接口。核心概念包括：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;工具定义&lt;/strong&gt; — 描述工具的名称、参数、返回值的schema。Agent根据描述决定何时调用。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;工具调用&lt;/strong&gt; — Agent生成结构化调用请求→系统执行→返回结果。格式通常是JSON或function calling。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;MCP（Model Context Protocol）&lt;/strong&gt; — 标准化的工具通信协议，让不同Agent和工具之间互相发现和调用。已成为Agent工具生态的事实标准。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;知识检索&lt;/strong&gt; — Agent搜索向量数据库或外部知识库获取相关上下文。RAG（Retrieval-Augmented Generation）是其典型实现。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;代码执行沙箱&lt;/strong&gt; — Agent生成的代码在隔离环境中运行，防止越权操作。Docker容器、Firecracker微VM都是实现方式。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;文件操作&lt;/strong&gt; — 读/写/搜索文件系统的标准工具。注意权限边界：Agent不应该能写系统关键文件。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;第三层记忆架构&quot;&gt;第三层：记忆架构&lt;/h2&gt;

&lt;h3 id=&quot;11-15-记忆层概念&quot;&gt;11-15. 记忆层概念&lt;/h3&gt;

&lt;p&gt;记忆决定了一个Agent能做多复杂的持续任务。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;短期记忆&lt;/strong&gt; — 当前会话上下文窗口内的信息。随Token过期自然消失。适用于单次任务的中间状态。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;长期记忆&lt;/strong&gt; — 跨会话持续存在的知识。通常通过外部存储实现：向量数据库、SQLite、JSON文件。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;工作记忆&lt;/strong&gt; — Agent在单次任务中需要记住的中间状态。如调试过程中已经检查过的文件列表。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;记忆检索&lt;/strong&gt; — Agent主动搜索记忆存储获取相关信息的过程。搜索质量直接决定Agent的”经验”是否有效。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;记忆写入策略&lt;/strong&gt; — 什么时候应该把信息存入长期记忆？每次交互都写会造噪音，关键转折点才写需要识别机制。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;第四层安全框架&quot;&gt;第四层：安全框架&lt;/h2&gt;

&lt;h3 id=&quot;16-20-安全层概念&quot;&gt;16-20. 安全层概念&lt;/h3&gt;

&lt;p&gt;安全不是功能的对立面，是Agent投产的入场券。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;护栏（Guardrails）&lt;/strong&gt; — 定义Agent不能做什么。结构化的约束条件而非模糊的建议：明确列出被禁止的操作（”不能执行系统命令”、”不能写/etc/passwd”）。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;沙箱隔离&lt;/strong&gt; — Agent代码执行在隔离环境中运行。容器级别（Docker）、内核级别（Firecracker/KVM）或进程级别（子进程权限降级）。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;人工审批（Human-in-the-Loop）&lt;/strong&gt; — 高风险操作需要人类确认。写文件可以自动执行，但删除数据库、下单购买必须审批。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;审计日志&lt;/strong&gt; — Agent的每次操作记录。不是事后调试用，是在Agent运行时就能实时监控它正在做什么。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;权限边界&lt;/strong&gt; — Agent能接触什么数据、不能接触什么数据。最小权限原则：Agent只需要完成任务所需的最小数据子集。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;第五层何时不该用agent&quot;&gt;第五层：何时不该用Agent&lt;/h2&gt;

&lt;p&gt;这个部分经常被忽略，但比前面所有内容加起来还重要。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;用提示词就够的场景：&lt;/strong&gt; 格式化日期、转换JSON、重命名文件、生成简短答案。Agent的每个循环都消耗时间，每次工具调用都花钱。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;用脚本就够的场景：&lt;/strong&gt; 固定的步骤流程、已知的输入输出映射。一个Python脚本比Agent循环便宜100倍。&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;使用Agent的场景只有一个：任务不可预测，下一步依赖上一步的结果。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;比如”调试这个失败的测试”——你可能不知道测试失败的原因，需要先看错误日志才能决定下一步。Agent的价值在于灵活性，而不是自动化本身。&lt;/p&gt;

&lt;h2 id=&quot;工程化的建议&quot;&gt;工程化的建议&lt;/h2&gt;

&lt;h3 id=&quot;入门路径&quot;&gt;入门路径&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;理解Think→Act→Observe循环&lt;/strong&gt;：这是所有Agent的基石。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;掌握两种工具使用方式&lt;/strong&gt;：预定义函数调用 vs MCP动态发现。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;从单一Agent开始&lt;/strong&gt;：不要一上来就搭多Agent系统。先让一个Agent可靠地完成单一任务。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;加上安全层&lt;/strong&gt;：护栏、沙箱、审批流。投产之前先想好失败时的回退路径。&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;成本意识&quot;&gt;成本意识&lt;/h3&gt;

&lt;p&gt;Agent不是免费的。每个循环消耗时间，每次工具调用花费token。一个调试任务可能调用5次工具、消耗15万token。对于每天跑100次的自动化场景，月Token成本可能远超预期。&lt;/p&gt;

&lt;h3 id=&quot;选型原则&quot;&gt;选型原则&lt;/h3&gt;

&lt;p&gt;不看工具名，看它解决问题的维度：如果你的Agent在执行时卡壳，先检查安全护栏是否太严，再考虑记忆配置，最后才是换模型。大多数Agent框架问题出在配置而非模型能力上。&lt;/p&gt;

&lt;h2 id=&quot;我的判断&quot;&gt;我的判断&lt;/h2&gt;

&lt;p&gt;最让我认同的是”不要追每个工具，追工具背后的思想”——工具几周一换，但底层概念几个月甚至几年不变。理解了Agent循环、工具调用、记忆架构、安全护栏这四大支柱，任何新框架都只是这些概念的不同排列组合。&lt;/p&gt;

&lt;p&gt;不过我也注意到一个问题：30个概念中对”什么时候不该用Agent”的强调比大多数同类文章多得多，这也正是该领域最普遍的错误。Agent不是万能药，很多时候一个JSON格式化脚本比Agent循环便宜100倍。&lt;/p&gt;

&lt;p&gt;另一个值得关注的细节是，当你真正开始写Agent代码时，最大困难不是写循环或工具调用，而是让Agent可靠地决定”什么时候停下来”。好的Agent设计 = 好的循环入口 + 好的循环出口。”什么时候算完成任务”的判断逻辑往往比”如何执行任务”更难设计。&lt;/p&gt;

&lt;p&gt;适合：刚开始接触Agent工程的开发者。
不适合：已经熟悉Agent基础概念的资深工程师。&lt;/p&gt;
</description>  
               <pubDate>Mon, 13 Jul 2026 00:00:00 +0800</pubDate>  
               <link>https://www.wangjun.dev/2026/07/30-core-agentic-engineering-concepts/</link>  
               <guid isPermaLink="true">https://www.wangjun.dev/2026/07/30-core-agentic-engineering-concepts/</guid>  
               </item>  
          
            <item>  
               <title>Claude Code循环实战：从零搭建自动化工作流</title>  
               <description>&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#从手动到自动&quot; id=&quot;markdown-toc-从手动到自动&quot;&gt;从手动到自动&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#loop-readiness-check什么时候值得搭循环&quot; id=&quot;markdown-toc-loop-readiness-check什么时候值得搭循环&quot;&gt;Loop Readiness Check：什么时候值得搭循环？&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#最小可行claude-loop&quot; id=&quot;markdown-toc-最小可行claude-loop&quot;&gt;最小可行Claude Loop&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#文件结构&quot; id=&quot;markdown-toc-文件结构&quot;&gt;文件结构&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#taskmd--任务定义&quot; id=&quot;markdown-toc-taskmd--任务定义&quot;&gt;TASK.md — 任务定义&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#loop_instructionsmd--操作指令&quot; id=&quot;markdown-toc-loop_instructionsmd--操作指令&quot;&gt;LOOP_INSTRUCTIONS.md — 操作指令&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#progressmd--持久状态&quot; id=&quot;markdown-toc-progressmd--持久状态&quot;&gt;PROGRESS.md — 持久状态&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#verification-by-separation校验分离&quot; id=&quot;markdown-toc-verification-by-separation校验分离&quot;&gt;Verification by Separation：校验分离&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#定时调度loop-命令&quot; id=&quot;markdown-toc-定时调度loop-命令&quot;&gt;定时调度：/loop 命令&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#permission-boundaries安全边界&quot; id=&quot;markdown-toc-permission-boundaries安全边界&quot;&gt;Permission Boundaries：安全边界&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#实战要点&quot; id=&quot;markdown-toc-实战要点&quot;&gt;实战要点&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#从最小版本开始&quot; id=&quot;markdown-toc-从最小版本开始&quot;&gt;从最小版本开始&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#checker的能力上限&quot; id=&quot;markdown-toc-checker的能力上限&quot;&gt;Checker的能力上限&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#progressmd-的读写竞争&quot; id=&quot;markdown-toc-progressmd-的读写竞争&quot;&gt;PROGRESS.md 的读写竞争&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#总结&quot; id=&quot;markdown-toc-总结&quot;&gt;总结&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;从手动到自动&quot;&gt;从手动到自动&lt;/h2&gt;

&lt;p&gt;大多数人用Claude Code的方式还是手动的：写一个提示→等它回答→检查结果→决定下一轮问什么。单次任务没问题，但一旦工作变成&lt;strong&gt;重复的、有状态的、需要多轮校验&lt;/strong&gt;的，更好的抽象不是更好的提示词，而是一个循环（Loop）。&lt;/p&gt;

&lt;p&gt;A Claude loop is a repeatable workflow around the model. It defines:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;什么触发执行&lt;/li&gt;
  &lt;li&gt;Claude应该读什么上下文&lt;/li&gt;
  &lt;li&gt;它被允许做什么&lt;/li&gt;
  &lt;li&gt;输出如何验证&lt;/li&gt;
  &lt;li&gt;状态存在哪里&lt;/li&gt;
  &lt;li&gt;何时停止、重试、或升级到人工处理&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;模型仍然负责推理和工具调用，但循环提供了操作框架。&lt;/p&gt;

&lt;h2 id=&quot;loop-readiness-check什么时候值得搭循环&quot;&gt;Loop Readiness Check：什么时候值得搭循环？&lt;/h2&gt;

&lt;p&gt;不是所有事情都值得搭Loop。在开始之前，先问自己几个问题：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;任务是否涉及多步决策？&lt;/strong&gt; 如果只需要三步以内就能搞定，手动更快。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;是否涉及外部工具调用？&lt;/strong&gt; 读文件、写文件、执行命令——这些是Loop的典型场景。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;输出需要验证吗？&lt;/strong&gt; 如果输出错了不会立刻发现，说明需要内置验证。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;有一个明确的完成标准吗？&lt;/strong&gt; 没有完成标准的Loop会无限运行。&lt;/p&gt;

&lt;p&gt;三步以上且有明确完成标准，才值得搭Loop。&lt;/p&gt;

&lt;h2 id=&quot;最小可行claude-loop&quot;&gt;最小可行Claude Loop&lt;/h2&gt;

&lt;p&gt;一个最小的Loop由四个文件构成，放在项目的 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.claude/loops/你的循环名/&lt;/code&gt; 目录下。&lt;/p&gt;

&lt;h3 id=&quot;文件结构&quot;&gt;文件结构&lt;/h3&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;.claude/loops/your-loop/
├── TASK.md              # 做什么
├── LOOP_INSTRUCTIONS.md # 怎么做（含验证规则和停止条件）
├── PROGRESS.md          # 持久化状态
└── outputs/             # 每次执行的产出物
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;taskmd--任务定义&quot;&gt;TASK.md — 任务定义&lt;/h3&gt;

&lt;p&gt;描述要完成的目标和验收标准：&lt;/p&gt;

&lt;div class=&quot;language-markdown highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;gh&quot;&gt;# 任务：定期检查依赖更新&lt;/span&gt;

&lt;span class=&quot;gu&quot;&gt;## 目标&lt;/span&gt;
每周一检查项目依赖是否有安全更新，自动更新并跑测试。

&lt;span class=&quot;gu&quot;&gt;## 验收标准&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; 发现过期的依赖并列出
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; 更新到最新兼容版本
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; 跑完整测试套件确认无回归
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;loop_instructionsmd--操作指令&quot;&gt;LOOP_INSTRUCTIONS.md — 操作指令&lt;/h3&gt;

&lt;p&gt;核心文件。定义worker和checker的职责分工：&lt;/p&gt;

&lt;div class=&quot;language-markdown highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;gh&quot;&gt;# Loop 指令&lt;/span&gt;

&lt;span class=&quot;gu&quot;&gt;## Worker 职责&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;1.&lt;/span&gt; 读取 TASK.md，了解本次目标
&lt;span class=&quot;p&quot;&gt;2.&lt;/span&gt; 读取 PROGRESS.md，了解当前进度
&lt;span class=&quot;p&quot;&gt;3.&lt;/span&gt; 执行一轮任务操作
&lt;span class=&quot;p&quot;&gt;4.&lt;/span&gt; 更新 PROGRESS.md，记录做了什么
&lt;span class=&quot;p&quot;&gt;5.&lt;/span&gt; 把所有产出物写入 outputs/ 目录

&lt;span class=&quot;gu&quot;&gt;## Checker 职责&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;1.&lt;/span&gt; 读取 TASK.md 的验收标准
&lt;span class=&quot;p&quot;&gt;2.&lt;/span&gt; 检查 worker 的输出是否达标
&lt;span class=&quot;p&quot;&gt;3.&lt;/span&gt; 如果达标：在 PROGRESS.md 标记完成，停止循环
&lt;span class=&quot;p&quot;&gt;4.&lt;/span&gt; 如果不达标：在 PROGRESS.md 记录问题，触发下一轮

&lt;span class=&quot;gu&quot;&gt;## 停止条件&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; 任务完成（checker 确认达标）
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; 重试超过 5 次
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; 遇到无法自动修复的错误 → 输出人工介入指令
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;progressmd--持久状态&quot;&gt;PROGRESS.md — 持久状态&lt;/h3&gt;

&lt;p&gt;这是Loop区别于普通prompt的关键。状态文件让每次执行都能看到前一次干了什么：&lt;/p&gt;

&lt;div class=&quot;language-markdown highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;gh&quot;&gt;# 进度追踪&lt;/span&gt;

&lt;span class=&quot;gu&quot;&gt;## 当前轮次：0&lt;/span&gt;

&lt;span class=&quot;gu&quot;&gt;## 完成项&lt;/span&gt;
（空）

&lt;span class=&quot;gu&quot;&gt;## 发现&lt;/span&gt;
（空）

&lt;span class=&quot;gu&quot;&gt;## 待办&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; [ ] 初始运行

&lt;span class=&quot;gu&quot;&gt;## 决策记录&lt;/span&gt;
（空）
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;每次循环执行后，模型更新这个文件，写入当前轮次、完成了什么、发现了什么、待办项和决策记录。即使模型上下文窗口有限，也能通过读写文件延续跨轮次的工作。&lt;/p&gt;

&lt;h2 id=&quot;verification-by-separation校验分离&quot;&gt;Verification by Separation：校验分离&lt;/h2&gt;

&lt;p&gt;这是最核心的模式：把「执行者」和「检查者」分开。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Worker&lt;/strong&gt; 负责执行任务、写结果。它可以犯错，允许试错。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Checker&lt;/strong&gt; 负责审阅Worker的输出、判断是否达标、决定是否需要重做。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这种角色分离的好处是：执行者不需要同时判断自己的输出是否正确——这是人类开发者也遵循的模式（写代码的人和Code Review的人分开）。&lt;/p&gt;

&lt;p&gt;在单个文件里就能实现这种分离：LOOP_INSTRUCTIONS.md 中分别定义worker和checker的指令块。&lt;/p&gt;

&lt;h2 id=&quot;定时调度loop-命令&quot;&gt;定时调度：/loop 命令&lt;/h2&gt;

&lt;p&gt;Claude Code 的 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/loop&lt;/code&gt; 命令可以设置定时执行频率：&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;/loop every 24h    # 每天跑一次
/loop every 7d     # 每周跑一次
/loop at 9:00     # 每天早上9点
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&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;/ul&gt;

&lt;h2 id=&quot;permission-boundaries安全边界&quot;&gt;Permission Boundaries：安全边界&lt;/h2&gt;

&lt;p&gt;Loop自动化不等于让机器无限制操作。需要在 LOOP_INSTRUCTIONS.md 中定义明确的权限边界：&lt;/p&gt;

&lt;div class=&quot;language-markdown highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;gu&quot;&gt;## 权限&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; ✅ 读取：src/、tests/、package.json、requirements.txt
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; ✅ 写入：outputs/ 目录、PROGRESS.md
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; ❌ 写入：.env、config/production.json、.git/
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; ❌ 执行：git push、npm publish、rm -rf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;这些边界确保Loop在失控时不会造成破坏。&lt;/p&gt;

&lt;h2 id=&quot;实战要点&quot;&gt;实战要点&lt;/h2&gt;

&lt;h3 id=&quot;从最小版本开始&quot;&gt;从最小版本开始&lt;/h3&gt;

&lt;p&gt;不要一开始就想做全自动。从「一个文件 + 一个校验」的极简版开始：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;建目录和 TASK.md&lt;/li&gt;
  &lt;li&gt;写 LOOP_INSTRUCTIONS.md（含worker和checker）&lt;/li&gt;
  &lt;li&gt;跑一次看看&lt;/li&gt;
  &lt;li&gt;再加 PROGRESS.md 做状态持久化&lt;/li&gt;
  &lt;li&gt;再加定时调度&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;checker的能力上限&quot;&gt;Checker的能力上限&lt;/h3&gt;

&lt;p&gt;Checker的能力上限就是Claude本身的能力上限。如果worker搞不定的复杂任务，换同一个模型做checker也很难发现问题。真正需要强校验的场景，应该引入：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;不同模型做checker（比如worker用Sonnet，checker用Opus）&lt;/li&gt;
  &lt;li&gt;人工审核作为回退&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;progressmd-的读写竞争&quot;&gt;PROGRESS.md 的读写竞争&lt;/h3&gt;

&lt;p&gt;如果Loop同时有多个实例在跑（定时任务和手动触发重叠），PROGRESS.md的状态可能被覆盖。生产级用法应该加时间戳分隔或单向状态机。&lt;/p&gt;

&lt;h2 id=&quot;总结&quot;&gt;总结&lt;/h2&gt;

&lt;p&gt;Claude Loop的核心价值不在于让模型全自动运行，而在于为重复性工作搭建一个可控的自动化框架。按照”手动测试→搭最小Loop→加校验→加状态→加调度”的顺序逐步建设，不要一步到位。&lt;/p&gt;

&lt;p&gt;你每天用Claude Code处理重复性任务超过30分钟吗？如果是，花两小时搭第一套Loop，成本一两天就能回收。&lt;/p&gt;
</description>  
               <pubDate>Wed, 01 Jul 2026 00:00:00 +0800</pubDate>  
               <link>https://www.wangjun.dev/2026/07/claude-code-loops-practical-guide/</link>  
               <guid isPermaLink="true">https://www.wangjun.dev/2026/07/claude-code-loops-practical-guide/</guid>  
               </item>  
          
            <item>  
               <title>Claude Code 5个高阶技巧，90%的开发者不知道</title>  
               <description>&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#引言&quot; id=&quot;markdown-toc-引言&quot;&gt;引言&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#hack-1-claudemd-是项目简报不是设置文件&quot; id=&quot;markdown-toc-hack-1-claudemd-是项目简报不是设置文件&quot;&gt;Hack 1: CLAUDE.md 是项目简报，不是设置文件&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#hack-2-hook-强制执行-claudemd-只能请求的事&quot; id=&quot;markdown-toc-hack-2-hook-强制执行-claudemd-只能请求的事&quot;&gt;Hack 2: Hook 强制执行 CLAUDE.md 只能请求的事&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#hack-3-ultrathink-一个词改变-claude-回答前做的事&quot; id=&quot;markdown-toc-hack-3-ultrathink-一个词改变-claude-回答前做的事&quot;&gt;Hack 3: ultrathink 一个词改变 Claude 回答前做的事&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#hack-4-compact-加焦点指令不做盲压缩&quot; id=&quot;markdown-toc-hack-4-compact-加焦点指令不做盲压缩&quot;&gt;Hack 4: /compact 加焦点指令，不做盲压缩&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#hack-5-子-agent-保持主-session-干净&quot; id=&quot;markdown-toc-hack-5-子-agent-保持主-session-干净&quot;&gt;Hack 5: 子 Agent 保持主 Session 干净&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#五步实操计划&quot; id=&quot;markdown-toc-五步实操计划&quot;&gt;五步实操计划&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;引言&quot;&gt;引言&lt;/h2&gt;

&lt;p&gt;在 Claude Code 终端里输入 “ultrathink”，你的模型会在回答前获得大约 32,000 个 token 的推理预算。在 claude.ai 网页聊天里输入同样的词，什么都不会发生。&lt;/p&gt;

&lt;p&gt;这个差距——Claude Code 实际能做什么 vs 大多数开发者知道它能做什么——正是这五个技巧存在的地方。&lt;/p&gt;

&lt;p&gt;大多数开发者用 Claude Code 的方式是在循环里跑：打一个提示，Claude 改文件，再打一个提示。这是聊天模式，大概只用到了 20% 的能力。&lt;/p&gt;

&lt;p&gt;剩下的 80% 没有被隐藏，只是文档化得不够好。&lt;/p&gt;

&lt;h2 id=&quot;hack-1-claudemd-是项目简报不是设置文件&quot;&gt;Hack 1: CLAUDE.md 是项目简报，不是设置文件&lt;/h2&gt;

&lt;p&gt;创建 CLAUDE.md，把项目信息放进去，Claude 在每次会话开始时读取它——这是最常见的建议。&lt;/p&gt;

&lt;p&gt;但大多数教程跳过的是：&lt;strong&gt;你放什么进去至关重要，而且大多数人放得太多了。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CLAUDE.md 里的指令是&lt;strong&gt;建议性&lt;/strong&gt;的。Claude 大概 80% 的情况下会遵守。这个数字不是猜的——Anthropic 自己的最佳实践文档说，如果 Claude 没有某条指令也能做对，就删掉那条指令。它是噪音。&lt;/p&gt;

&lt;p&gt;正确使用 CLAUDE.md 的方式是把当做一个给新承包商的&lt;strong&gt;简报&lt;/strong&gt;：技术栈、项目结构、什么不能碰、编码约定。不是政策，不是规则——那些放别的地方（见 Hack 2）。&lt;/p&gt;

&lt;p&gt;几条实用测试：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;「如果删了这一行，Claude 会犯错吗？」&lt;/strong&gt; 如果不会，删掉。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;「这个能放到另一个文件里，等 Claude 需要时才读吗？」&lt;/strong&gt; 如果能，移过去，用 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@filename&lt;/code&gt; 引用。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;「这是规则还是偏好？」&lt;/strong&gt; 规则放 Hook，偏好放这里。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CLAUDE.md 太长时，埋在底部的指令开始被忽略。&lt;strong&gt;更短不是懒惰——是确保重要的东西真正被记住的方式。&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;hack-2-hook-强制执行-claudemd-只能请求的事&quot;&gt;Hack 2: Hook 强制执行 CLAUDE.md 只能请求的事&lt;/h2&gt;

&lt;p&gt;这是改变你思考如何控制 Claude Code 的那一个技巧。&lt;/p&gt;

&lt;p&gt;CLAUDE.md 里的每条指令都是一个&lt;strong&gt;请求&lt;/strong&gt;。Claude 读到它，尝试遵守，偶尔不遵守。这对风格偏好没问题，但对「永远不要 force-push 到 main」或「改完文件一定跑 linter」来说不行。&lt;/p&gt;

&lt;p&gt;Hook 解决了这个问题。&lt;/p&gt;

&lt;p&gt;它们是&lt;strong&gt;确定性&lt;/strong&gt;的。100% 触发，没有例外。不是因为 Claude 决定遵守——因为它们是代码，不是指令。&lt;/p&gt;

&lt;p&gt;Claude Code Hook 在 Agent 生命周期的特定节点运行：工具运行前、完成后、提交提示时、Claude 完成响应后。最有用的是 &lt;strong&gt;Stop hook&lt;/strong&gt;——Claude 每完成一轮对话、等待你下一次输入时触发。&lt;/p&gt;

&lt;p&gt;这个 hook 在每次 Claude 回应后运行。&lt;strong&gt;不需要指令。不需要指望 Claude 记住。&lt;/strong&gt; 每次编辑自动过 linter，报错回到会话里，Claude 修复它们。&lt;/p&gt;

&lt;p&gt;Hook 能做的四件实用的事：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Claude 等待权限时发送桌面通知，让你可以走开&lt;/li&gt;
  &lt;li&gt;在写入敏感文件（.env、.git/）之前拦截&lt;/li&gt;
  &lt;li&gt;Claude 写完任何文件后立即运行格式化&lt;/li&gt;
  &lt;li&gt;自动跑测试套件，失败结果喂回会话&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Hook 配置在 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.claude/settings.json&lt;/code&gt;，可以是 Shell 脚本、Python 脚本或 HTTP 调用。一旦设好，它们在每个会话里安静地后台运行，不需要你多想。&lt;/p&gt;

&lt;h2 id=&quot;hack-3-ultrathink-一个词改变-claude-回答前做的事&quot;&gt;Hack 3: ultrathink 一个词改变 Claude 回答前做的事&lt;/h2&gt;

&lt;p&gt;当你正常问 Claude Code 一个问题时，它读你的提示然后开始生成响应。&lt;strong&gt;思考和输出在同一个流里发生。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Extended thinking 把这两个阶段分开。&lt;/p&gt;

&lt;p&gt;Claude 先推理问题，探索方法，考虑边界情况，然后才写回答。你看到更好的推理，因为模型在提交答案之前&lt;strong&gt;确实做了推理&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;Claude Code 有触发短语，分配不同的思考预算：&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;短语&lt;/th&gt;
      &lt;th&gt;推理 Token 预算&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;“think” 或 “think about it”&lt;/td&gt;
      &lt;td&gt;基础&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;“think hard” 或 “think deeply”&lt;/td&gt;
      &lt;td&gt;更多&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;“ultrathink”&lt;/td&gt;
      &lt;td&gt;约 32,000 tokens&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;一个词。放在你 prompt 的任何位置。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;注意：&lt;/strong&gt; 这只在 Claude Code 终端里有效。在 claude.ai 网页聊天里输入 “ultrathink” 什么都没发生。这是 Claude Code 特定的功能，不是通用的 Claude 技巧。&lt;/p&gt;

&lt;p&gt;使用前的两个诚实提醒：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Extended thinking 比标准响应消耗更多 token。个人项目差异可以忽略，团队每天几十个任务就积少成多了。把它留给值得的问题：架构决策、已经花了你几个小时的 bug、触及关键路径的重构。&lt;/li&gt;
  &lt;li&gt;简单任务上没用。用 ultrathink 重命名一个变量只是更慢更贵。&lt;strong&gt;匹配思考级别和问题复杂度。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;不要把 ultrathink 加到每个 prompt 里。留给那些已经花了你时间的问题。&lt;/p&gt;

&lt;h2 id=&quot;hack-4-compact-加焦点指令不做盲压缩&quot;&gt;Hack 4: /compact 加焦点指令，不做盲压缩&lt;/h2&gt;

&lt;p&gt;这是列表里最小的改动，也是改善日常工作最明显的。&lt;/p&gt;

&lt;p&gt;Claude Code 有上下文窗口限制——一次能保持在工作记忆里的内容有限。长会话会填满它，性能下降。&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/compact&lt;/code&gt; 压缩对话历史来腾空间。&lt;/p&gt;

&lt;p&gt;大多数人跑 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/compact&lt;/code&gt; 然后接受 Claude 产生的任何总结。会话继续，但 Claude 已经丢失了那些重要的细节。&lt;/p&gt;

&lt;p&gt;更好的版本：&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;/compact focus on the auth refactor and the schema changes we made to users table
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;这一句话告诉 Claude 压缩时保留什么。不是笼统的整场会话总结，而是保留那些重要的决策，丢掉那些来回对话的噪音。&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;做了什么决策（选了 Postgres 而不是 Redis、决定暂时不加索引）&lt;/li&gt;
  &lt;li&gt;还有什么在进行中&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;compact 总结会成为会话剩下的「记忆」。给它好的输入，它会产生 Claude 真正能用的东西。&lt;/p&gt;

&lt;h2 id=&quot;hack-5-子-agent-保持主-session-干净&quot;&gt;Hack 5: 子 Agent 保持主 Session 干净&lt;/h2&gt;

&lt;p&gt;这是架构级别的技巧。设置时间最长，回报也最大。&lt;/p&gt;

&lt;p&gt;当 Claude Code 在你的主 session 里做探索性工作时——读几十个文件理解代码库、跑搜索追踪 bug、扫描测试输出——所有这些都会填满你的上下文窗口。等 Claude 完成探索时，你的上下文已经半满，全是研究时才需要的文件内容。&lt;/p&gt;

&lt;p&gt;子 Agent 通过隔离工作解决了这个问题。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;子 Agent 是一个独立的 Claude 实例&lt;/strong&gt;，有自己的上下文窗口、系统提示和工具权限。在 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.claude/agents/&lt;/code&gt; 里定义：&lt;/p&gt;

&lt;div class=&quot;language-markdown highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;gh&quot;&gt;# .claude/agents/code-reviewer.md
---
&lt;/span&gt;name: code-reviewer
description: Reviews code quality and security. Use proactively after code changes.
model: claude-sonnet-4-6   # 便宜的模型做审查，Opus 留给主工作
tools:
&lt;span class=&quot;p&quot;&gt;  -&lt;/span&gt; Read
&lt;span class=&quot;p&quot;&gt;  -&lt;/span&gt; Glob
&lt;span class=&quot;gh&quot;&gt;  - Grep
---
&lt;/span&gt;你是一个资深代码审查者。关注安全漏洞、实现可能漏掉的边界情况、
以及任何违反团队约定的内容。返回带行号的具体问题列表。
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;这个文件存在后，Claude Code 自动把审查任务路由给子 Agent。审查在隔离的上下文里完成，返回总结，你的主 session 保持专注在构建上。&lt;/p&gt;

&lt;p&gt;比并行更重要的一点：&lt;strong&gt;子 Agent 防止失败尝试污染上下文。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;当 Claude 试了某事但没有成功时，失败的尝试会在上下文里积累。它们会把未来的回答往错误的方向拉。把探索性工作推给子 Agent，意味着你的主 session 永远不会看到那些死胡同。&lt;/p&gt;

&lt;p&gt;几个实际好用的子 Agent 用途：&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;（独立的 Agent 检查实现是否真的解决了问题）&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;代码审查&lt;/strong&gt;（路由到便宜的模型，Opus 留在主工作上）&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;日志分析&lt;/strong&gt;（筛选长输出，返回相关部分）&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;五步实操计划&quot;&gt;五步实操计划&lt;/h2&gt;

&lt;p&gt;今天就能做的五步：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;第一步&lt;/strong&gt;：打开你的 CLAUDE.md，删掉所有 Claude 没有也能做对的指令。大多数 CLAUDE.md 里至少 30% 是无用指令。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;第二步&lt;/strong&gt;：选一条必须执行的规则（如「改文件后跑 lint」），移到 Hook 里。测试确认 100% 触发。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;第三步&lt;/strong&gt;：这周遇到硬问题时，在 prompt 末尾加上 “ultrathink” 再试一次。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;第四步&lt;/strong&gt;：下次 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/compact&lt;/code&gt; 时加 focus。对比有焦点和无焦点的压缩结果。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;第五步&lt;/strong&gt;：建一个 code-review 子 Agent，指向便宜的模型。Claude 会自动在改代码后触发审查。&lt;/p&gt;

&lt;p&gt;从第一步开始。大多数 CLAUDE.md 文件至少 30% 的指令是 Claude 不需要的。把那些删掉，剩下的指令会更可靠。&lt;/p&gt;
</description>  
               <pubDate>Wed, 01 Jul 2026 00:00:00 +0800</pubDate>  
               <link>https://www.wangjun.dev/2026/07/claude-code-5-hacks-developers-miss/</link>  
               <guid isPermaLink="true">https://www.wangjun.dev/2026/07/claude-code-5-hacks-developers-miss/</guid>  
               </item>  
          
            <item>  
               <title>Agent Harness实战：用Markdown文件搭AI工作框架</title>  
               <description>&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#agent--模型--harness&quot; id=&quot;markdown-toc-agent--模型--harness&quot;&gt;Agent = 模型 + Harness&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#harness的五个子系统&quot; id=&quot;markdown-toc-harness的五个子系统&quot;&gt;Harness的五个子系统&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#1-指令instruction&quot; id=&quot;markdown-toc-1-指令instruction&quot;&gt;1. 指令（Instruction）&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#2-工具tools&quot; id=&quot;markdown-toc-2-工具tools&quot;&gt;2. 工具（Tools）&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#3-环境environment&quot; id=&quot;markdown-toc-3-环境environment&quot;&gt;3. 环境（Environment）&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#4-状态state&quot; id=&quot;markdown-toc-4-状态state&quot;&gt;4. 状态（State）&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#5-反馈feedback&quot; id=&quot;markdown-toc-5-反馈feedback&quot;&gt;5. 反馈（Feedback）&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#仓库即规范&quot; id=&quot;markdown-toc-仓库即规范&quot;&gt;仓库即规范&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#验证块十分钟最高roi的投入&quot; id=&quot;markdown-toc-验证块十分钟最高roi的投入&quot;&gt;验证块：十分钟最高ROI的投入&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#如何给agent画一张好地图&quot; id=&quot;markdown-toc-如何给agent画一张好地图&quot;&gt;如何给Agent画一张好地图&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#入口文件要短&quot; id=&quot;markdown-toc-入口文件要短&quot;&gt;入口文件要短&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#知识放在代码旁边&quot; id=&quot;markdown-toc-知识放在代码旁边&quot;&gt;知识放在代码旁边&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#删除冗余指令&quot; id=&quot;markdown-toc-删除冗余指令&quot;&gt;删除冗余指令&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#补充与反思&quot; id=&quot;markdown-toc-补充与反思&quot;&gt;补充与反思&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#最让我认同的观点&quot; id=&quot;markdown-toc-最让我认同的观点&quot;&gt;最让我认同的观点&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#一个被弱化的点&quot; id=&quot;markdown-toc-一个被弱化的点&quot;&gt;一个被弱化的点&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#实用建议&quot; id=&quot;markdown-toc-实用建议&quot;&gt;实用建议&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#总结&quot; id=&quot;markdown-toc-总结&quot;&gt;总结&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;agent--模型--harness&quot;&gt;Agent = 模型 + Harness&lt;/h2&gt;

&lt;p&gt;大多数人把AI Agent用不好归结为「模型不够聪明」。换个更强的模型试试就好了？实战中真正拖后腿的往往不是模型的理解能力，而是模型&lt;strong&gt;工作的环境&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;作者的核心论点很简单：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent = 模型 + Harness（操作框架）&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;到了一定复杂度之后，Harness才是真正的瓶颈。好消息是，构建一个好的Harness不需要复杂的框架或代码层面的编排——只需要在仓库里放好几个Markdown文件。&lt;/p&gt;

&lt;h2 id=&quot;harness的五个子系统&quot;&gt;Harness的五个子系统&lt;/h2&gt;

&lt;p&gt;经过多个项目实践后，作者把Harness拆解为五个子系统。缺任何一个，Agent用起来都会别扭——就像一辆没有仪表盘或刹车的车。&lt;/p&gt;

&lt;h3 id=&quot;1-指令instruction&quot;&gt;1. 指令（Instruction）&lt;/h3&gt;

&lt;p&gt;一个入口文件（AGENTS.md 或 CLAUDE.md），包含：&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;/ul&gt;

&lt;h3 id=&quot;2-工具tools&quot;&gt;2. 工具（Tools）&lt;/h3&gt;

&lt;p&gt;给Agent足够的权限去做实事。禁用Shell「为了安全」导致Agent连 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pip install&lt;/code&gt; 都做不了，就像雇了一个工程师然后没收了他的键盘。&lt;/p&gt;

&lt;p&gt;原则是&lt;strong&gt;最小权限&lt;/strong&gt;，不是&lt;strong&gt;零权限&lt;/strong&gt;。&lt;/p&gt;

&lt;h3 id=&quot;3-环境environment&quot;&gt;3. 环境（Environment）&lt;/h3&gt;

&lt;p&gt;一个能自我描述的环境：锁定依赖、固定运行时版本、可复现的容器。Agent如果在一个broken的环境里挣扎，它的注意力会浪费在错误的战场上。&lt;/p&gt;

&lt;h3 id=&quot;4-状态state&quot;&gt;4. 状态（State）&lt;/h3&gt;

&lt;p&gt;记录完成了什么、进行中什么、卡住了什么。让工作跨会话延续。最简单的实现就是PROGRESS.md文件。&lt;/p&gt;

&lt;h3 id=&quot;5-反馈feedback&quot;&gt;5. 反馈（Feedback）&lt;/h3&gt;

&lt;p&gt;这是&lt;strong&gt;ROI最高的子系统&lt;/strong&gt;——给Agent明确的命令来判断自己的输出是否正确。这个子系统决定了Agent是「猜自己完成了」还是「可以自己检查」。&lt;/p&gt;

&lt;p&gt;如果只加一个子系统，加这个。&lt;/p&gt;

&lt;h2 id=&quot;仓库即规范&quot;&gt;仓库即规范&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;If it isn’t in the repository, it does not exist to the agent.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;这句是整个文章最核心的一句话。一个AI Agent在一个结构混乱的仓库里，就像一个有才华的新员工没有任何入职培训——精力都浪费在找方向上了。&lt;/p&gt;

&lt;p&gt;但如果你给它一张清晰的地图——一个入口路由文件、与代码同位的文档、准确的验证命令——同一个模型可以从20%的成功率跳到接近完美。&lt;/p&gt;

&lt;p&gt;真实项目中，大量知识存在于：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Slack 聊天记录&lt;/li&gt;
  &lt;li&gt;早已过时的 Confluence 页面&lt;/li&gt;
  &lt;li&gt;零散的代码注释&lt;/li&gt;
  &lt;li&gt;两三个核心成员的脑子里&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;每一条对Agent来说都是盲区。每个盲区都迫使它做一次猜测。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;测试方法：&lt;/strong&gt; 打开一个全新的Agent会话，只给它仓库，问五个关于项目的问题。如果它答不出或答错，说明你的仓库作为规范不合格。&lt;/p&gt;

&lt;h2 id=&quot;验证块十分钟最高roi的投入&quot;&gt;验证块：十分钟最高ROI的投入&lt;/h2&gt;

&lt;p&gt;在AGENTS.md里放一个验证命令块，十分钟的工作能改变一切：&lt;/p&gt;

&lt;div class=&quot;language-markdown highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;gu&quot;&gt;## Verification Commands&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; Tests:        pytest tests/ -x
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; Type check:   mypy src/ --strict
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; Lint:         ruff check src/
&lt;span class=&quot;p&quot;&gt;-&lt;/span&gt; Full check:   make check   # runs all of the above
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;作者把所有验证路由到 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;make targets&lt;/code&gt;。这样Agent不需要猜项目用npm、yarn、poetry还是pipenv——Harness提供一个&lt;strong&gt;统一入口&lt;/strong&gt;。&lt;/p&gt;

&lt;h2 id=&quot;如何给agent画一张好地图&quot;&gt;如何给Agent画一张好地图&lt;/h2&gt;

&lt;h3 id=&quot;入口文件要短&quot;&gt;入口文件要短&lt;/h3&gt;

&lt;p&gt;AGENTS.md控制在200行以内。不是所有信息都塞进去——它只做路由和核心规则。&lt;/p&gt;

&lt;h3 id=&quot;知识放在代码旁边&quot;&gt;知识放在代码旁边&lt;/h3&gt;

&lt;p&gt;数据库Schema写在SQL迁移文件里而不是单独的文档里。API路由写在路由定义文件旁边而不是Wiki里。Agent不需要翻Wiki，它只需要翻代码。&lt;/p&gt;

&lt;h3 id=&quot;删除冗余指令&quot;&gt;删除冗余指令&lt;/h3&gt;

&lt;p&gt;每条指令加入前问自己：「如果删了这一行，Claude会犯错吗？」如果不会，删掉。CLAUDE.md底部的指令经常被忽略——保持简短才是真正让重要内容生效的方式。&lt;/p&gt;

&lt;h2 id=&quot;补充与反思&quot;&gt;补充与反思&lt;/h2&gt;

&lt;h3 id=&quot;最让我认同的观点&quot;&gt;最让我认同的观点&lt;/h3&gt;

&lt;p&gt;作者关于反馈子系统的判断是整篇文章最有价值的部分。给Agent一个能自己验证的命令，比给它一万字的指令文件有用得多。因为Agent能自己回答「我做对了没有」，不需要每次都等你检查。&lt;/p&gt;

&lt;h3 id=&quot;一个被弱化的点&quot;&gt;一个被弱化的点&lt;/h3&gt;

&lt;p&gt;作者假设Agent能自动发现并理解Markdown文件的结构。实际上，对于文件多、层次深的仓库，即使有AGENTS.md做入口，Agent仍然可能在导航过程中丢失上下文。入口文件控制在200行以内、硬规则放在最前面，是目前实践中最有效的缓解措施。&lt;/p&gt;

&lt;h3 id=&quot;实用建议&quot;&gt;实用建议&lt;/h3&gt;

&lt;p&gt;如果你正在用Claude Code或类似Agent工具做开发，花一小时改善仓库的AGENTS.md和验证体系，是本周ROI最高的技术投资。&lt;/p&gt;

&lt;p&gt;从反馈子系统开始——先让Agent能自己验证结果。不要一上来就想搭完整的五子系统。&lt;/p&gt;

&lt;h2 id=&quot;总结&quot;&gt;总结&lt;/h2&gt;

&lt;p&gt;Harness的核心思路——用Markdown文件做Agent的工作框架——可以在任何项目中直接复用，不需要重写任何代码。五个子系统中，反馈的ROI最高，也最容易见效。&lt;/p&gt;

&lt;p&gt;从今天开始：打开你的AGENTS.md，删掉30%不需要的指令，加一个 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;make check&lt;/code&gt; 的统一验证入口。Agent的工作质量会立刻提升。&lt;/p&gt;
</description>  
               <pubDate>Wed, 01 Jul 2026 00:00:00 +0800</pubDate>  
               <link>https://www.wangjun.dev/2026/07/agent-harness-markdown-framework/</link>  
               <guid isPermaLink="true">https://www.wangjun.dev/2026/07/agent-harness-markdown-framework/</guid>  
               </item>  
          
            <item>  
               <title>NotebookLM不只是摘要工具：20个你可能不知道的高阶用法</title>  
               <description>&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#大多数人只用了10&quot; id=&quot;markdown-toc-大多数人只用了10&quot;&gt;大多数人只用了10%&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#一批判性思考类&quot; id=&quot;markdown-toc-一批判性思考类&quot;&gt;一、批判性思考类&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#1-反向解释检验法&quot; id=&quot;markdown-toc-1-反向解释检验法&quot;&gt;1. 「反向解释」检验法&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#2-同行评审&quot; id=&quot;markdown-toc-2-同行评审&quot;&gt;2. 同行评审&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#3-那又怎样过滤器&quot; id=&quot;markdown-toc-3-那又怎样过滤器&quot;&gt;3. 「那又怎样」过滤器&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#4-找出支撑性假设&quot; id=&quot;markdown-toc-4-找出支撑性假设&quot;&gt;4. 找出支撑性假设&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#二深度理解类&quot; id=&quot;markdown-toc-二深度理解类&quot;&gt;二、深度理解类&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#5-为特定受众翻译&quot; id=&quot;markdown-toc-5-为特定受众翻译&quot;&gt;5. 为特定受众翻译&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#6-生成追问清单&quot; id=&quot;markdown-toc-6-生成追问清单&quot;&gt;6. 生成追问清单&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#7-角色转换对话&quot; id=&quot;markdown-toc-7-角色转换对话&quot;&gt;7. 角色转换对话&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#8-术语词典&quot; id=&quot;markdown-toc-8-术语词典&quot;&gt;8. 术语词典&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#三决策与行动类&quot; id=&quot;markdown-toc-三决策与行动类&quot;&gt;三、决策与行动类&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#9-转化为决策&quot; id=&quot;markdown-toc-9-转化为决策&quot;&gt;9. 转化为决策&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#10-辩论准备单&quot; id=&quot;markdown-toc-10-辩论准备单&quot;&gt;10. 辩论准备单&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#11-一页纸挑战&quot; id=&quot;markdown-toc-11-一页纸挑战&quot;&gt;11. 一页纸挑战&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#12-写给未来自己的笔记&quot; id=&quot;markdown-toc-12-写给未来自己的笔记&quot;&gt;12. 写给未来自己的笔记&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#四查漏补缺类&quot; id=&quot;markdown-toc-四查漏补缺类&quot;&gt;四、查漏补缺类&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#13-找出过时内容&quot; id=&quot;markdown-toc-13-找出过时内容&quot;&gt;13. 找出过时内容&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#14-矛盾检测&quot; id=&quot;markdown-toc-14-矛盾检测&quot;&gt;14. 矛盾检测&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#15-映射所有角色&quot; id=&quot;markdown-toc-15-映射所有角色&quot;&gt;15. 映射所有角色&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#16-找出缺失的部分&quot; id=&quot;markdown-toc-16-找出缺失的部分&quot;&gt;16. 找出缺失的部分&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#17-找出现成的类比&quot; id=&quot;markdown-toc-17-找出现成的类比&quot;&gt;17. 找出现成的类比&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#五后续跟进类&quot; id=&quot;markdown-toc-五后续跟进类&quot;&gt;五、后续跟进类&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#18-生成后续阅读清单&quot; id=&quot;markdown-toc-18-生成后续阅读清单&quot;&gt;18. 生成后续阅读清单&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#19-创建对比&quot; id=&quot;markdown-toc-19-创建对比&quot;&gt;19. 创建对比&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#20-找出会改变你想法的事&quot; id=&quot;markdown-toc-20-找出会改变你想法的事&quot;&gt;20. 找出会改变你想法的事&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#几个让效果翻倍的小技巧&quot; id=&quot;markdown-toc-几个让效果翻倍的小技巧&quot;&gt;几个让效果翻倍的小技巧&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;大多数人只用了10&quot;&gt;大多数人只用了10%&lt;/h2&gt;

&lt;p&gt;大多数人用NotebookLM的方式是：上传一个PDF，点一下「总结」按钮，看三个要点，然后关掉。我也这么干了几个月，才意识到自己只用了这个工具大概10%的能力。&lt;/p&gt;

&lt;p&gt;NotebookLM不是一个摘要器。它更像一个研究伙伴——你喂给它的所有材料它都读完了，就等着你问更好的问题。问题在于，没人告诉你那些更好的问题长什么样。&lt;/p&gt;

&lt;p&gt;下面是我实际用过的20个prompt，附上每个场景的使用说明。&lt;/p&gt;

&lt;h2 id=&quot;一批判性思考类&quot;&gt;一、批判性思考类&lt;/h2&gt;

&lt;h3 id=&quot;1-反向解释检验法&quot;&gt;1. 「反向解释」检验法&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;用错误的方式向我解释这个概念。什么是常见的误解？&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;这是我偶然发现的一个技巧，后来成了最爱。知道一个想法的”错误版本”，往往比知道正确版本更能让你真正理解它。你读到误解时心里会想”哦，我明白为什么会有人这么想了，但实际上——”，然后你对正确答案的理解就更深了一层。&lt;/p&gt;

&lt;h3 id=&quot;2-同行评审&quot;&gt;2. 同行评审&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;如果你是同行评审，要找这篇论文的漏洞，你会标记什么？&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;我们习惯只让AI正面解释事物。反过来问问——让AI找出弱点。你会对论证的实际可靠程度有更诚实的判断，不会再对站不住脚的东西点头称是。&lt;/p&gt;

&lt;h3 id=&quot;3-那又怎样过滤器&quot;&gt;3. 「那又怎样」过滤器&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;对每个主要观点，告诉我它在实践中为什么重要。如果不重要，直接说出来。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;不是每个想法分量都一样。普通摘要把它们同等对待。这个prompt强制排序，而「如果不重要就直说」是关键部分——它允许模型告诉你某件事没什么大不了，而模型通常倾向于回避这个判断。&lt;/p&gt;

&lt;h3 id=&quot;4-找出支撑性假设&quot;&gt;4. 找出支撑性假设&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;哪个假设如果错了，整个论证就会崩塌？&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;每个论证都依赖某个它从未真正证明的前提。这个prompt就是去找那个前提的。很多时候，找到这个假设比理解论证本身更有用，因为它直接告诉你如果想测试整套体系是否站得住，应该从哪里下手。&lt;/p&gt;

&lt;h2 id=&quot;二深度理解类&quot;&gt;二、深度理解类&lt;/h2&gt;

&lt;h3 id=&quot;5-为特定受众翻译&quot;&gt;5. 为特定受众翻译&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;把核心发现改写给[12岁小孩/忙碌的高管/非英语母语者]看。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;同一个材料用三种不同受众去试，你会发现解释的方式每次都变。如果你需要向别人解释某个东西，这个技巧能帮你先找到最能打动的版本。&lt;/p&gt;

&lt;h3 id=&quot;6-生成追问清单&quot;&gt;6. 生成追问清单&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;关于这个主题，我应该问哪些我可能没想到的问题？&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;有时候最有用的输出不是答案，而是你没想到的更好的问题。&lt;/p&gt;

&lt;h3 id=&quot;7-角色转换对话&quot;&gt;7. 角色转换对话&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;基于这个材料，把它写成两个持不同观点的人之间的对话。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;对话比平铺直叙更容易理解复杂观点。而且用这种方式回顾你已经读过的东西也很有趣。&lt;/p&gt;

&lt;h3 id=&quot;8-术语词典&quot;&gt;8. 术语词典&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;提取所有技术术语，用通俗语言定义，按出现频率排序。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;频率排序比你以为的重要得多。出现最多的术语最值得先搞懂，其他的可以遇到了再查。&lt;/p&gt;

&lt;h2 id=&quot;三决策与行动类&quot;&gt;三、决策与行动类&lt;/h2&gt;

&lt;h3 id=&quot;9-转化为决策&quot;&gt;9. 转化为决策&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;基于这个材料，我实际上应该做什么？给我选项，不只是信息。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;很多材料描述了情况但从不告诉你该怎么办。这个prompt填补了这个空白。有时候答案是「什么都不做」，这本身也很有价值。&lt;/p&gt;

&lt;h3 id=&quot;10-辩论准备单&quot;&gt;10. 辩论准备单&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;我要和一个持反对意见的人讨论这个。给我他们可能的反对论点以及我该如何回应。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;我在知道有人要质疑的会议前用这个。老实说，在家庭聚餐前也很有用。&lt;/p&gt;

&lt;h3 id=&quot;11-一页纸挑战&quot;&gt;11. 一页纸挑战&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;如果你只能用一张幻灯片总结这个，上面应该放什么？&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;极限优先级。能通过这个筛选的才是真正核心的东西。&lt;/p&gt;

&lt;h3 id=&quot;12-写给未来自己的笔记&quot;&gt;12. 写给未来自己的笔记&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;写一个6个月后给我自己的笔记，提醒我这是关于什么的、为什么重要。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;第一次用觉得有点花哨，但它迫使你做到极限压缩。六个月后，这条笔记是重新回到材料的最快路径。&lt;/p&gt;

&lt;h2 id=&quot;四查漏补缺类&quot;&gt;四、查漏补缺类&lt;/h2&gt;

&lt;h3 id=&quot;13-找出过时内容&quot;&gt;13. 找出过时内容&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;这个材料里哪些说法最可能已经过时了？为什么？&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;NotebookLM不能实时查证，但它很擅长标记哪些类型的声明最容易过期。在引用旧资料前值得跑一遍。&lt;/p&gt;

&lt;h3 id=&quot;14-矛盾检测&quot;&gt;14. 矛盾检测&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;这个材料里有没有自相矛盾的地方？在哪里？&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;长文档，尤其是委员会写的那种，自相矛盾的频率比你想象的高。这个prompt能快速找到它们。&lt;/p&gt;

&lt;h3 id=&quot;15-映射所有角色&quot;&gt;15. 映射所有角色&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;列出所有提到的人、组织或实体，用一句话说明每个的角色。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;密集的报告里经常有十几个参与者，看到第三页就记不清谁是谁了。这个prompt一次性解决。&lt;/p&gt;

&lt;h3 id=&quot;16-找出缺失的部分&quot;&gt;16. 找出缺失的部分&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;你觉得这个材料应该覆盖但实际没覆盖的内容是什么？&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;对识别空白很有用，尤其是那些声称有范围但读着读着范围悄悄变窄的研究论文或报告。&lt;/p&gt;

&lt;h3 id=&quot;17-找出现成的类比&quot;&gt;17. 找出现成的类比&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;这个材料里有类比或隐喻吗？如果没有，建议一个合适的。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;有时作者已经在第12页埋了一个很好的解释工具。有时没有，你需要自己搭一个。&lt;/p&gt;

&lt;h2 id=&quot;五后续跟进类&quot;&gt;五、后续跟进类&lt;/h2&gt;

&lt;h3 id=&quot;18-生成后续阅读清单&quot;&gt;18. 生成后续阅读清单&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;基于这个材料，接下来值得研究什么主题或问题？&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;这就把一份文档从终点变成了起点。老实说，这才是整个操作的核心。&lt;/p&gt;

&lt;h3 id=&quot;19-创建对比&quot;&gt;19. 创建对比&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;这个材料的观点和这个主题的传统看法有什么不同？&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;这样我就能判断什么东西是真正新的，什么只是换了个包装的老观点。在炒作密集的材料上很省时间。&lt;/p&gt;

&lt;h3 id=&quot;20-找出会改变你想法的事&quot;&gt;20. 找出会改变你想法的事&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;如果存在什么证据，会让这个论证崩塌？&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;这是我发现自己是否真的相信某事、还是只是没质疑过它的最好方式之一。&lt;/p&gt;

&lt;h2 id=&quot;几个让效果翻倍的小技巧&quot;&gt;几个让效果翻倍的小技巧&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;多来源一起上传。&lt;/strong&gt; NotebookLM真正的强项是跨文档分析，单一份PDF发挥不出它的10%。一个Source和五个Source的差距是质的。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;对格式要具体。&lt;/strong&gt; 「给我一个表格」或「五条要点」能得到你直接能用的东西。模糊的请求得到模糊的答案。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;不要满足于第一个回答。&lt;/strong&gt; 追问它，让它深挖，为别人重写。这个工具是为来回对话设计的，第一个输出很少是最好的。&lt;/p&gt;

&lt;p&gt;如果你有比这些更好用的prompt，我很想听听。欢迎在评论区分享。&lt;/p&gt;
</description>  
               <pubDate>Wed, 01 Jul 2026 00:00:00 +0800</pubDate>  
               <link>https://www.wangjun.dev/2026/07/20-notebooklm-hacks-most-people-never-try/</link>  
               <guid isPermaLink="true">https://www.wangjun.dev/2026/07/20-notebooklm-hacks-most-people-never-try/</guid>  
               </item>  
          
            <item>  
               <title>手把手搭建个人Agentic系统：LLM就是新CPU</title>  
               <description>&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#为什么你需要自己的agentic系统&quot; id=&quot;markdown-toc-为什么你需要自己的agentic系统&quot;&gt;为什么你需要自己的Agentic系统&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#一个大-prompt-搞不定一切&quot; id=&quot;markdown-toc-一个大-prompt-搞不定一切&quot;&gt;一个大 Prompt 搞不定一切&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#llm-os-架构揭秘&quot; id=&quot;markdown-toc-llm-os-架构揭秘&quot;&gt;LLM OS 架构揭秘&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#实战用-llmlight-搭建多agent系统&quot; id=&quot;markdown-toc-实战用-llmlight-搭建多agent系统&quot;&gt;实战：用 LLMlight 搭建多Agent系统&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#安装与环境准备&quot; id=&quot;markdown-toc-安装与环境准备&quot;&gt;安装与环境准备&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#核心架构&quot; id=&quot;markdown-toc-核心架构&quot;&gt;核心架构&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#基本用法示例&quot; id=&quot;markdown-toc-基本用法示例&quot;&gt;基本用法示例&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#rag-集成&quot; id=&quot;markdown-toc-rag-集成&quot;&gt;RAG 集成&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#评分与验证机制&quot; id=&quot;markdown-toc-评分与验证机制&quot;&gt;评分与验证机制&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#上下文管理策略&quot; id=&quot;markdown-toc-上下文管理策略&quot;&gt;上下文管理策略&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#什么时候该用-agentic-系统&quot; id=&quot;markdown-toc-什么时候该用-agentic-系统&quot;&gt;什么时候该用 Agentic 系统？&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#值得关注的细节&quot; id=&quot;markdown-toc-值得关注的细节&quot;&gt;值得关注的细节&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;为什么你需要自己的agentic系统&quot;&gt;为什么你需要自己的Agentic系统&lt;/h2&gt;

&lt;p&gt;如果你还在把 ChatGPT 当写作工具用，你可能已经错过了最本质的变化。LLM 的真正角色不是「生成器」，而是&lt;strong&gt;计算核心&lt;/strong&gt;。Andrej Karpathy 提出的 &lt;strong&gt;LLM Operating System（LLMos）&lt;/strong&gt; 框架给出了一个非常直观的类比：&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;传统计算机&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;LLMos&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;CPU&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;大语言模型（LLM）&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;字节&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Token&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;RAM&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;上下文窗口&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;硬盘&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;检索系统&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;软件接口&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Prompt&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;这个类比揭示了 Agentic 系统的核心思想：&lt;strong&gt;你的 LLM 不是一个写手，而是一个 CPU。&lt;/strong&gt; Token 就是新的字节，上下文窗口就是新的内存。当我们摆脱「用 LLM 写文章」的思维，进入「用 LLM 做计算」的范式，视野就完全不一样了。&lt;/p&gt;

&lt;p&gt;当然，挑战也随之而来。小模型虽然有隐私、便携和成本优势，但上下文窗口更小、推理能力有限。在本地跑 Agentic 系统面临的问题包括：Agent 之间如何通信？哪些任务应该用确定性逻辑、哪些用概率模型？如何防止幻觉？如何保证评分的一致性？&lt;/p&gt;

&lt;p&gt;这些问题的答案，不在于某个精巧的单条 Prompt，而在于&lt;strong&gt;精心设计的流水线&lt;/strong&gt;——分块策略、检索系统、嵌入模型、排序机制、结构化 Prompt、评分工作流、多个专业化 Agent 的协同。这就是本篇文章要讲的内容。&lt;/p&gt;

&lt;h2 id=&quot;一个大-prompt-搞不定一切&quot;&gt;一个大 Prompt 搞不定一切&lt;/h2&gt;

&lt;p&gt;一个常见的错误是：把整份文档丢进 LLM，期望它一次搞定所有事情。这种「单片式」方法有四个根本性缺陷：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;上下文窗口饱和。&lt;/strong&gt; 即使模型支持 200K 的上下文，当文档内容、系统指令、评分标准、输出格式约束全部塞进去，关键信息会被隐式压缩或忽略，推理结果自然不如人意。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;任务纠缠。&lt;/strong&gt; 一次 Prompt 要求模型同时执行完全不同的认知操作——提取数据、解释上下文、应用规则、保持跨段一致性、生成结构化反馈。没有机制的分离，输出必然浅层或自相矛盾。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;结构缺失。&lt;/strong&gt; 单次 Prompt 输出一个结果，没有中间检查点，没有推理步骤。如果最终答案不对，你无法追踪断链的位置。这使得系统几乎不可调试、不可验证。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt 不稳定。&lt;/strong&gt; 哪怕措辞的微小变化，也可能显著改变评分和反馈质量。&lt;/p&gt;

&lt;p&gt;复杂任务的本质是迭代式的——需要阅读、交叉引用、验证、修正判断。把所有这些步骤压缩成一次变换，就移除了人脑判断时天然依赖的结构。&lt;strong&gt;解决方案是把大系统分解成更简单的部件&lt;/strong&gt;：多个小型本地 LLM 各自承担专门任务，协同完成复杂目标。&lt;/p&gt;

&lt;h2 id=&quot;llm-os-架构揭秘&quot;&gt;LLM OS 架构揭秘&lt;/h2&gt;

&lt;p&gt;如果我们把 LLM 视为新计算范式的 CPU，那么围绕它需要构建完整的外设系统：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;上下文窗口 = RAM。&lt;/strong&gt; 这是临时工作内存，容量有限，读写速度快。当文档超过窗口大小时，就需要外部的存储和检索机制来补充。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;检索系统 = 硬盘。&lt;/strong&gt; RAG（检索增强生成）就是你的外部存储。通过嵌入模型将文档向量化，形成可搜索的知识库。查询时找到最相关的片段，再注入上下文窗口。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent = 专用处理器。&lt;/strong&gt; 每个 Agent 是一个小型 LLM，配以专门的指令和任务定义。一个 Agent 负责检索，一个负责质量评估，一个负责结构化输出，一个负责最终总结。它们通过结构化的通信协议协同工作。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt = 软件接口。&lt;/strong&gt; 就像操作系统为应用程序提供 API 一样，LLMos 中的 Prompt 是组件之间的标准化通信协议。结构良好的 Prompt 就像定义良好的 API 契约。&lt;/p&gt;

&lt;h2 id=&quot;实战用-llmlight-搭建多agent系统&quot;&gt;实战：用 LLMlight 搭建多Agent系统&lt;/h2&gt;

&lt;p&gt;现在进入动手环节。我们将使用 Python 库 &lt;strong&gt;LLMlight&lt;/strong&gt; 构建一个轻量级的多 Agent 系统，全部在本地运行，保护你的数据隐私。&lt;/p&gt;

&lt;h3 id=&quot;安装与环境准备&quot;&gt;安装与环境准备&lt;/h3&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;pip &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;llmlight
&lt;span class=&quot;c&quot;&gt;# 或者如果使用 uv&lt;/span&gt;
uv pip &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;llmlight
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;LLMlight 的核心理念是「用结构化 Prompt 把小型本地模型组织成团队」。它内置了对 Ollama、llama.cpp 等本地推理引擎的支持。&lt;/p&gt;

&lt;h3 id=&quot;核心架构&quot;&gt;核心架构&lt;/h3&gt;

&lt;p&gt;一个典型的 LLMlight 系统包含以下组件：&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;主控制器（Orchestrator）
  ├── 检索 Agent：从文档库中找到相关信息
  ├── 推理 Agent：对检索结果进行分析和推理
  ├── 评分 Agent：评估输出质量和一致性
  └── 输出 Agent：格式化最终结果
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;基本用法示例&quot;&gt;基本用法示例&lt;/h3&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;llmlight&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;AgenticSystem&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Agent&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# 创建一个检索 Agent
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;retriever&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Agent&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;retriever&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;qwen2.5:7b&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;c1&quot;&gt;# 可使用任何 Ollama 支持模型
&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;system_prompt&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;你是一个文档检索专家。从给定的知识库中找到与用户问题最相关的信息。&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;temperature&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;0.1&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# 创建一个推理 Agent
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;reasoner&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Agent&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;reasoner&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;qwen2.5:7b&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;system_prompt&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;你是一个分析推理专家。基于检索到的信息，进行逻辑分析和推理。&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;temperature&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;0.3&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# 组建系统
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;system&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;AgenticSystem&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;agents&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;retriever&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;reasoner&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;orchestrator_model&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;qwen2.5:14b&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;  &lt;span class=&quot;c1&quot;&gt;# 控制器可用稍大的模型
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# 执行任务
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;result&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;system&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;分析这份技术文档中的安全风险&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;rag-集成&quot;&gt;RAG 集成&lt;/h3&gt;

&lt;p&gt;要让系统能处理私有文档，需要集成检索增强生成：&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;llmlight&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;VectorStore&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Chunker&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# 文档分块
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;chunker&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Chunker&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;chunk_size&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;512&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;overlap&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;chunks&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;chunker&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;chunk&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;document_text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# 构建向量存储
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;store&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;VectorStore&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;embedding_model&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;bge-small-zh-v1.5&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;store&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;add_documents&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;chunks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# 在 Agent 中使用
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;retriever&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;with_retrieval&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;store&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;top_k&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;评分与验证机制&quot;&gt;评分与验证机制&lt;/h3&gt;

&lt;p&gt;一个常被忽略但至关重要的组件是&lt;strong&gt;评分 Agent&lt;/strong&gt;。它的任务是在最终输出之前，对推理结果进行质量检查：&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;scorer&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Agent&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;scorer&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;qwen2.5:7b&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;system_prompt&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;评估以下分析的质量，从三个维度打分（1-10）：
1. 事实准确性：与检索到的信息是否一致
2. 逻辑连贯性：推理过程是否清晰
3. 完整性：是否覆盖了关键方面
返回 JSON 格式评分结果。&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;temperature&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;0.1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;output_format&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;评分 Agent 的存在让系统从「黑箱输出」变成了「可审计的流程」。如果某个输出分数低于阈值，系统可以自动触发重试或回退到更保守的策略。&lt;/p&gt;

&lt;h3 id=&quot;上下文管理策略&quot;&gt;上下文管理策略&lt;/h3&gt;

&lt;p&gt;本地模型的一个主要限制是上下文窗口较小。以下是一些实用的管理策略：&lt;/p&gt;

&lt;ol&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;：对中间结果进行摘要化处理，减少 token 消耗&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;优先级队列&lt;/strong&gt;：根据相关性评分动态管理上下文中的段落优先级&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# 分层检索示例
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;summary_agent&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Agent&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;summarizer&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;...)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;detail_agent&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Agent&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;detail_analyzer&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;...)&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# 第一层：获取文档概要
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;summary&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;summary_agent&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;总结本文档的核心内容&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# 第二层：基于概要定位关键段落
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;key_sections&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;retriever&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;search&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;top_k&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# 第三层：深入分析选定段落
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;analysis&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;detail_agent&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;key_sections&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;什么时候该用-agentic-系统&quot;&gt;什么时候该用 Agentic 系统？&lt;/h2&gt;

&lt;p&gt;Agentic 系统不是万能的。在以下场景中收益最大：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ 适合用的场景：&lt;/strong&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;/ul&gt;

&lt;p&gt;&lt;strong&gt;❌ 不适合的场景：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;简单的单次问答（一个 Prompt 就够）&lt;/li&gt;
  &lt;li&gt;对延迟敏感的场景（多 Agent 通信有额外开销）&lt;/li&gt;
  &lt;li&gt;需要 100% 确定性的场景（概率模型永远有不确定性）&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;值得关注的细节&quot;&gt;值得关注的细节&lt;/h2&gt;

&lt;p&gt;最让我在意的一个判断是：&lt;strong&gt;Agentic 系统的价值不在模型参数量的增加，而在工程架构的精细度。&lt;/strong&gt; 很多人以为多 Agent 就是多调几个 API，真正困难的地方在于：分块策略如何设计？嵌入模型怎么选？Agent 之间如何通信？失败重试怎么做？评分阈值设多少？&lt;/p&gt;

&lt;p&gt;另一个容易被忽略的问题是：&lt;strong&gt;小模型组队 &amp;gt; 大模型单挑。&lt;/strong&gt; 实验表明，3-4 个 7B 参数的模型组成的 Agent 团队，在很多任务上的表现可以超过单个 70B 模型，而且成本更低、速度更快、可解释性更好。这是因为每个小模型专注于特定任务，避免了认知资源的稀释。&lt;/p&gt;

&lt;p&gt;不过我也注意到一个需要谨慎的地方：&lt;strong&gt;Agent 之间的通信增加了系统的延迟和不确定性。&lt;/strong&gt; 每一次 Agent 调用都可能引入新的波动，需要设计完善的验证和回退机制。&lt;/p&gt;

&lt;p&gt;目前我的判断是：Agentic 系统是当前 AI 应用最有价值的范式之一。它把 LLM 从「聊天工具」提升到了「计算平台」的层面。但工程化的成熟度还远不如传统软件——可观察性、调试工具、标准化协议都还在早期。如果你愿意投入精力打磨流水线，这可能是 2026 年回报率最高的 AI 技能投入。&lt;/p&gt;
</description>  
               <pubDate>Tue, 30 Jun 2026 00:00:00 +0800</pubDate>  
               <link>https://www.wangjun.dev/2026/06/personal-agentic-system-guide/</link>  
               <guid isPermaLink="true">https://www.wangjun.dev/2026/06/personal-agentic-system-guide/</guid>  
               </item>  
          
            <item>  
               <title>Claude Code Subagent 是什么？从零搞懂这个核心概念</title>  
               <description>&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#一个让我困惑了很久的问题&quot; id=&quot;markdown-toc-一个让我困惑了很久的问题&quot;&gt;一个让我困惑了很久的问题&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#claude-code-里的agent其实有-4-种含义&quot; id=&quot;markdown-toc-claude-code-里的agent其实有-4-种含义&quot;&gt;Claude Code 里的「Agent」其实有 4 种含义&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#subagent-为什么存在&quot; id=&quot;markdown-toc-subagent-为什么存在&quot;&gt;Subagent 为什么存在？&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#构建第一个-subagent&quot; id=&quot;markdown-toc-构建第一个-subagent&quot;&gt;构建第一个 Subagent&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#最小示例&quot; id=&quot;markdown-toc-最小示例&quot;&gt;最小示例&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#字段说明&quot; id=&quot;markdown-toc-字段说明&quot;&gt;字段说明&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#subagent-vs-skill最容易被混淆的边界&quot; id=&quot;markdown-toc-subagent-vs-skill最容易被混淆的边界&quot;&gt;Subagent vs Skill：最容易被混淆的边界&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#最佳实践&quot; id=&quot;markdown-toc-最佳实践&quot;&gt;最佳实践&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#description-怎么写&quot; id=&quot;markdown-toc-description-怎么写&quot;&gt;Description 怎么写？&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#工具限制为什么重要&quot; id=&quot;markdown-toc-工具限制为什么重要&quot;&gt;工具限制为什么重要&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#context-隔离&quot; id=&quot;markdown-toc-context-隔离&quot;&gt;Context 隔离&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#agent-teams更上一层&quot; id=&quot;markdown-toc-agent-teams更上一层&quot;&gt;Agent Teams：更上一层&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#什么时候不该用-subagent&quot; id=&quot;markdown-toc-什么时候不该用-subagent&quot;&gt;什么时候不该用 Subagent&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#值得关注的细节&quot; id=&quot;markdown-toc-值得关注的细节&quot;&gt;值得关注的细节&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;一个让我困惑了很久的问题&quot;&gt;一个让我困惑了很久的问题&lt;/h2&gt;

&lt;p&gt;第一次看到 Claude Code 启动 subagent 时，我的第一反应是：这不就是跑了个更精准的 Prompt 吗？&lt;/p&gt;

&lt;p&gt;看着它在十几个文件里穿梭，最后返回一份干净的摘要，很酷，但我其实没搞懂到底发生了什么。后来我发现很多人都有类似的困惑——他们把 subagent 理解成「带额外步骤的 Skill」，甚至是「写得更聪明的 Prompt」。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;这个认知模型是错的。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Agent 确实和 Skill 一样用 Prompt 驱动，但关键区别在于：&lt;strong&gt;Agent 不在你的主会话里运行。&lt;/strong&gt; 它有自己的上下文窗口、自己的系统 Prompt、自己的工具权限、自己的运行环境。它独立工作，然后返回结果。&lt;/p&gt;

&lt;p&gt;这篇文章从零开始讲清楚 Claude Code subagent——它到底是什么、怎么构建、什么时候该用、什么时候不该用。&lt;/p&gt;

&lt;h2 id=&quot;claude-code-里的agent其实有-4-种含义&quot;&gt;Claude Code 里的「Agent」其实有 4 种含义&lt;/h2&gt;

&lt;p&gt;在深入之前，必须先理清概念。Claude Code 语境下，「Agent」这个词至少指 4 种不同的东西：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Claude Code 本身就是一个 Agentic 环境。&lt;/strong&gt; Anthropic 把 Claude Code 定义为 agentic coding assistant——有工具、有执行循环、能跨多步自主规划和操作。你在用它的时候，就已经身处一个 Agent 环境了。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Subagent 是可自定义的 Agent 原语。&lt;/strong&gt; 当从业者说「我在 Claude Code 里构建了一个 Agent」时，几乎都是在指 subagent。它有专属的上下文窗口、自定义系统 Prompt、独立工具权限。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Agent Teams 是独立的多会话特性。&lt;/strong&gt; Subagent 在单个会话内工作；Agent teams 跨多个会话协调。它们是独立的 Claude Code 实例，通过共享任务列表和消息通信。目前处于实验阶段，默认关闭。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Claude Agent SDK 是第四层。&lt;/strong&gt; 是 Claude Code 底层工具循环的 Python/TypeScript 可编程接口，用于构建自定义 Agent 应用。&lt;/p&gt;

&lt;p&gt;本文聚焦的是 &lt;strong&gt;subagent&lt;/strong&gt;（第 2 点）。&lt;/p&gt;

&lt;h2 id=&quot;subagent-为什么存在&quot;&gt;Subagent 为什么存在？&lt;/h2&gt;

&lt;p&gt;核心原因只有一个：&lt;strong&gt;LLM 的上下文窗口是有限的。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;每一个工具调用、每一次文件读取、每一次分析和中间结果——全都会落在上下文窗口里。随着会话增长，窗口里塞满了中间产物。这些产物在生成结果时需要，但生成完成后就成了噪声。这种噪声会降低模型性能——这就是所谓的 &lt;strong&gt;Context Rot（上下文腐烂）&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;Subagent 就是为了解决这个问题而存在的。&lt;/p&gt;

&lt;p&gt;一个 subagent 在自己的上下文窗口里运行，消耗自己的 Token 预算。主会话只收到一份摘要。官方文档说得很直白：&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Subagent 可能读取几十个文件或运行大量搜索，但你的主会话只收到一份摘要。因为 subagent 的工作不消耗主会话上下文。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;举个例子：你要排查测试套件为什么挂了。在主会话里做这个排查意味着要读 20 个文件、grep 错误模式、检查测试配置、扫描最近的提交——所有这些都会塞进你的上下文窗口。等排查完了，你已经消耗了成千上万 Token，而且大部分中间信息对你接下来的工作毫无帮助。&lt;/p&gt;

&lt;p&gt;Subagent 改变了这个问题的结构。它在自己的上下文里跑完整个排查流程，返回一条干净的结果：「测试失败原因是 CI 配置中缺少环境变量。受影响的 3 个测试和修复方案如下。」主线程从未被搜索上下文撑爆。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;上下文隔离是首要原因，还有三个次级原因：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;专业化&lt;/strong&gt;：Subagent 有自己的系统 Prompt。一个专注于代码评审的 Agent，配以团队标准指令，比一个什么都知道的通用助手更可靠。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;约束执行&lt;/strong&gt;：你可以精确指定 subagent 能用的工具。一个只读的研究 Agent 不能写文件、不能跑命令——风险轮廓和主助手完全不同。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;成本控制&lt;/strong&gt;：Subagent 可以使用不同的模型。把轻量任务路由到 Haiku 而主会话用 Sonnet，是很多人在被账单吓到之后才会发现的实用技巧。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;构建第一个-subagent&quot;&gt;构建第一个 Subagent&lt;/h2&gt;

&lt;p&gt;一个 subagent 就是一个带 YAML frontmatter 的 Markdown 文件。&lt;/p&gt;

&lt;p&gt;它存放在两个位置之一：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.claude/agents/&lt;/code&gt;（项目目录）—— 团队可共享的 Agent&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/.claude/agents/&lt;/code&gt;（用户目录）—— 个人跨项目 Agent&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;最小示例&quot;&gt;最小示例&lt;/h3&gt;

&lt;div class=&quot;language-yaml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nn&quot;&gt;---&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;code-reviewer&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;description&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Re一次代码变更的质量、安全和最佳实践。在重大代码变更后主动使用。&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;tools&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Read, Glob, Grep&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;sonnet&lt;/span&gt;
&lt;span class=&quot;nn&quot;&gt;---&lt;/span&gt;

&lt;span class=&quot;s&quot;&gt;You are a code reviewer. When invoked, read the changed files and provide&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;specific, actionable feedback on code quality, security, and best practices.&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;Focus on what matters. Don&apos;t restate what the code does — say what&apos;s wrong&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;or good about it. Flag security issues first, then logic problems, then style.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;字段说明&quot;&gt;字段说明&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;name&lt;/strong&gt;：唯一标识符，小写，只能连字符。用于日志和内部引用。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;description&lt;/strong&gt;：&lt;strong&gt;最重要的字段。&lt;/strong&gt; Claude 依据它来决定是否把任务委派给这个 Agent。用行为式语言描述——Agent 做什么、什么时候用。&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Use proactively&lt;/code&gt; 是一个关键信号——告诉 Claude 无需用户明确请求即可主动激活。不加这个短语的话，Agent 只在被直接调用时响应。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;tools&lt;/strong&gt;：限制该 Agent 能访问的工具。上面的评审者只能读取文件和搜索——不能编辑、不能跑命令、不能发网络请求。这是有意的设计。只读评审者不会意外修改它正在审查的代码。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;model&lt;/strong&gt;：将 Agent 路由到特定模型。可选值：&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sonnet&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;opus&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;haiku&lt;/code&gt;，或完整模型 ID。省略则默认 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;inherit&lt;/code&gt;（继承主会话模型）。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;完整的可选前置字段还包括：&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;permissionMode&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;maxTurns&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;skills&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mcpServers&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;effort&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;memory&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hooks&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;disallowedTools&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;color&lt;/code&gt; 等。&lt;/p&gt;

&lt;h2 id=&quot;subagent-vs-skill最容易被混淆的边界&quot;&gt;Subagent vs Skill：最容易被混淆的边界&lt;/h2&gt;

&lt;p&gt;如果你觉得上面的 subagent 看起来很像一个 Skill——你既对也不对。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;相同点：&lt;/strong&gt; 都是用 YAML frontmatter + Markdown body 定义的文件，都可以指定 tools 和模型。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;核心区别：&lt;/strong&gt;&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;维度&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Skill&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Subagent&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;运行位置&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;主会话上下文&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;独立上下文窗口&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;上下文消耗&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;占用主会话 Token&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;不占用主会话 Token&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;工具权限&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;继承主会话&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;独立声明和限制&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;返回结果&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;直接注入对话流&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;返回摘要到主会话&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;系统 Prompt&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;与主 Prompt 融合&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;完全隔离的独立 Prompt&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;适用场景&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;格式塔式的简单任务&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;需要大量文件交互的复杂任务&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;一个实用的判断标准：&lt;strong&gt;如果任务需要读 5 个以上文件、做多步搜索、或者需要完全隔离的上下文——用 subagent。如果只是格式转换、模板生成、单文件分析——用 Skill。&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;最佳实践&quot;&gt;最佳实践&lt;/h2&gt;

&lt;h3 id=&quot;description-怎么写&quot;&gt;Description 怎么写？&lt;/h3&gt;

&lt;p&gt;这是最容易被低估的字段。好的 description 应该是行为式的，像这样：&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Reviews PR diffs before merge. Calling this means the caller 
wants a thorough review with security-first analysis.
Use proactively after any significant code change.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;而不是描述式的：&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;A code review tool.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Claude 会读取 description 来决定是否把任务委派给这个 Agent。写得越清晰、越行为化，它在正确时刻被调用的概率就越高。&lt;/p&gt;

&lt;h3 id=&quot;工具限制为什么重要&quot;&gt;工具限制为什么重要&lt;/h3&gt;

&lt;p&gt;只授予 Agent 实际需要的工具，有两个原因：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;安全性&lt;/strong&gt;：一个只读 Agent 不能意外破坏代码&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;可预测性&lt;/strong&gt;：工具越少，行为越可控&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;代码评审 Agent 只需要 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Read, Glob, Grep&lt;/code&gt;；数据库迁移 Agent 可能需要 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Write, Bash, Read&lt;/code&gt;；研究 Agent 可能需要 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Read, Glob, Grep, Search&lt;/code&gt;。&lt;/p&gt;

&lt;h3 id=&quot;context-隔离&quot;&gt;Context 隔离&lt;/h3&gt;

&lt;p&gt;Subagent 的最佳使用模式是：&lt;strong&gt;把大量文件读取和搜索操作塞进 subagent，主会话只处理结果。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;看一个实际的例子。用 subagent 做端到端测试分析：&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;The subagent reads 15-20 test files, checks CI logs, 
grep for error patterns. Returns a 3-paragraph summary.
Main session: uses the summary to decide next steps.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;主会话从未接触那 20 个文件的上下文负担。这是 subagent 最核心的价值。&lt;/p&gt;

&lt;h2 id=&quot;agent-teams更上一层&quot;&gt;Agent Teams：更上一层&lt;/h2&gt;

&lt;p&gt;Subagent 在单会话内工作。当任务需要跨多个文件、跨多个步骤、甚至跨多个代码库时，&lt;strong&gt;Agent Teams&lt;/strong&gt; 可能更合适。&lt;/p&gt;

&lt;p&gt;Agent Teams 是独立的 Claude Code 实例，它们通过共享任务列表和消息相互通信。当前处于实验阶段（通过 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ANTHROPIC_AGENT_TEAMS=1&lt;/code&gt; 环境变量启用），但已经可以看到它的价值所在。&lt;/p&gt;

&lt;p&gt;什么时候该用 Agent Teams？你的任务需要多个专业角色并行工作时——比如一个 Agent 在重构后端，另一个在更新前端类型，第三个在写文档。它们各自运行在自己的会话中，共享一个任务蓝图，相互通知进度。&lt;/p&gt;

&lt;h2 id=&quot;什么时候不该用-subagent&quot;&gt;什么时候不该用 Subagent&lt;/h2&gt;

&lt;p&gt;Subagent 不是万能的。以下场景请谨慎：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;任务太简单。&lt;/strong&gt; 如果只需要单文件分析或格式转换，一个 Skill 就够了。引入 subagent 的上下文切换开销不划算。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;需要实时交互。&lt;/strong&gt; Subagent 独立运行，你无法在它执行过程中插手。如果任务需要反复确认方向，留在主会话更合适。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;对延迟敏感。&lt;/strong&gt; Subagent 启动有固定开销（加载上下文、初始化工具）。毫秒级响应的场景不适合。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;频率极高的重复任务。&lt;/strong&gt; 如果每 30 秒就要跑一次的监控检查，subagent 的上下文创建成本会累积。&lt;/p&gt;

&lt;h2 id=&quot;值得关注的细节&quot;&gt;值得关注的细节&lt;/h2&gt;

&lt;p&gt;最让我认同的一个判断是：&lt;strong&gt;Subagent 不是「更聪明的 Skill」，而是一种架构模式——上下文隔离。&lt;/strong&gt; 理解了这个本质区别，很多决策就变得清晰了。&lt;/p&gt;

&lt;p&gt;不过我也注意到一个被弱化的问题：&lt;strong&gt;Subagent 的调试比主会话更困难。&lt;/strong&gt; 它在自己的黑箱里运行，你无法看到它的中间推理过程。如果返回的结果质量不符合预期，排查原因比在主会话中要费劲得多。&lt;/p&gt;

&lt;p&gt;另一个容易被忽略的点：&lt;strong&gt;Description 字段的战术价值。&lt;/strong&gt; 很多人把它当作可有可无的副注，实际上它是决定你 Agent 被 Claude 主动发现和调用的关键入口。写得好，你的 Agent 会在恰当时刻被自动激活；写得差，再强大的逻辑也无人问津。&lt;/p&gt;

&lt;p&gt;目前我的建议是：从代码评审 Agent 开始入手体验——限制工具为只读，提供明确的评审标准，观察它如何独立分析代码变更。这是理解 subagent 最佳实践的最短路径。&lt;/p&gt;
</description>  
               <pubDate>Tue, 30 Jun 2026 00:00:00 +0800</pubDate>  
               <link>https://www.wangjun.dev/2026/06/claude-code-subagents-deep-dive/</link>  
               <guid isPermaLink="true">https://www.wangjun.dev/2026/06/claude-code-subagents-deep-dive/</guid>  
               </item>  
          
            <item>  
               <title>Mistral Vibe：一个活在终端里的 AI 编码助手</title>  
               <description>&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#从补全代码到编排整个开发工作流&quot; id=&quot;markdown-toc-从补全代码到编排整个开发工作流&quot;&gt;从补全代码到编排整个开发工作流&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#为什么值得关注&quot; id=&quot;markdown-toc-为什么值得关注&quot;&gt;为什么值得关注&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#思维模型终端的原生智能层&quot; id=&quot;markdown-toc-思维模型终端的原生智能层&quot;&gt;思维模型：终端的原生智能层&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#安装与配置&quot; id=&quot;markdown-toc-安装与配置&quot;&gt;安装与配置&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#第一步安装-vibe&quot; id=&quot;markdown-toc-第一步安装-vibe&quot;&gt;第一步：安装 Vibe&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#第二步验证-mcp-运行时&quot; id=&quot;markdown-toc-第二步验证-mcp-运行时&quot;&gt;第二步：验证 MCP 运行时&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#第三步创建配置&quot; id=&quot;markdown-toc-第三步创建配置&quot;&gt;第三步：创建配置&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#第四步启动&quot; id=&quot;markdown-toc-第四步启动&quot;&gt;第四步：启动&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#核心特性&quot; id=&quot;markdown-toc-核心特性&quot;&gt;核心特性&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#-自动补全代码库导航器&quot; id=&quot;markdown-toc--自动补全代码库导航器&quot;&gt;@ 自动补全：代码库导航器&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#-前缀终端命令执行&quot; id=&quot;markdown-toc--前缀终端命令执行&quot;&gt;! 前缀：终端命令执行&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#代码库分析&quot; id=&quot;markdown-toc-代码库分析&quot;&gt;代码库分析&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#代码生成&quot; id=&quot;markdown-toc-代码生成&quot;&gt;代码生成&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#对话压缩&quot; id=&quot;markdown-toc-对话压缩&quot;&gt;对话压缩&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#mcp-服务器vibe-的超级能力&quot; id=&quot;markdown-toc-mcp-服务器vibe-的超级能力&quot;&gt;MCP 服务器：Vibe 的超级能力&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#数据库集成&quot; id=&quot;markdown-toc-数据库集成&quot;&gt;数据库集成&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#浏览器集成playwright&quot; id=&quot;markdown-toc-浏览器集成playwright&quot;&gt;浏览器集成（Playwright）&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#文件系统-mcp&quot; id=&quot;markdown-toc-文件系统-mcp&quot;&gt;文件系统 MCP&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#并行-agent&quot; id=&quot;markdown-toc-并行-agent&quot;&gt;并行 Agent&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#谁应该用-mistral-vibe&quot; id=&quot;markdown-toc-谁应该用-mistral-vibe&quot;&gt;谁应该用 Mistral Vibe&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#适合&quot; id=&quot;markdown-toc-适合&quot;&gt;适合&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#不适合&quot; id=&quot;markdown-toc-不适合&quot;&gt;不适合&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#我的感受&quot; id=&quot;markdown-toc-我的感受&quot;&gt;我的感受&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;从补全代码到编排整个开发工作流&quot;&gt;从补全代码到编排整个开发工作流&lt;/h2&gt;

&lt;p&gt;你在一个遗留系统现代化项目上干了三周。COBOL 代码库 5 万行，文档基本没有，团队在问”AI 真的能帮上忙吗？”&lt;/p&gt;

&lt;p&gt;大多数 LLM 能做到的事：自动补全一个函数，或者建议一个重构。但你真正需要的是：能遍历 50 个文件、理解它们的依赖关系、从网上获取现代架构模式、生成等价的 Python 代码、写测试、并编排整个迁移过程——而你保持心流状态不被打断。&lt;/p&gt;

&lt;p&gt;Mistral Vibe 就是这样——一个终端原生的 AI 编码助手，不只是写代码片段。它能操作你的整个开发环境，通过 MCP 服务器连接外部工具，并在并行 Agent 之间分配任务。&lt;/p&gt;

&lt;h2 id=&quot;为什么值得关注&quot;&gt;为什么值得关注&lt;/h2&gt;

&lt;p&gt;AI 编码工具改变了我们写函数的方式，改变了我们编辑文件的方式。Mistral Vibe 改变的是我们编排整个开发工作流的方式。&lt;/p&gt;

&lt;p&gt;区别在于&lt;strong&gt;范围和自主性&lt;/strong&gt;。一个 IDE 插件看到的是你当前文件，可能再加几个相邻文件。Vibe 在项目级别工作——它分析你的整个代码库、查询数据库获取 schema 上下文、抓取在线文档辅助决策、运行测试套件、并生成有意义的 git commit 信息。&lt;/p&gt;

&lt;p&gt;而且关键的是：Vibe 在你需要的任何地方运行。本地笔记本、气隙数据中心、欧洲主权云。你的专有代码从不接触外部基础设施。&lt;/p&gt;

&lt;h2 id=&quot;思维模型终端的原生智能层&quot;&gt;思维模型：终端的原生智能层&lt;/h2&gt;

&lt;p&gt;把终端想象成指挥中心。有 git、pytest、docker、kubectl、psql——每个都有独特的接口和怪癖。你是指挥，手动编排着几十个工具。Vibe 成为你的&lt;strong&gt;编排层&lt;/strong&gt;。你描述目标，它协调执行。&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;你：&quot;把所有 Flask 路由重构为 FastAPI 异步处理器，跑测试，分析失败，建议修复&quot;
Vibe：[读取 47 个文件] [重写 23 个函数] [执行 pytest] [分析 14 个失败] [用 file:line 引用建议修复]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;没有上下文切换。没有管理工具参数的心智负担。只有持续的辅助心流。&lt;/p&gt;

&lt;h2 id=&quot;安装与配置&quot;&gt;安装与配置&lt;/h2&gt;

&lt;h3 id=&quot;第一步安装-vibe&quot;&gt;第一步：安装 Vibe&lt;/h3&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;pip &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;mistral-vibe
vibe &lt;span class=&quot;nt&quot;&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;第二步验证-mcp-运行时&quot;&gt;第二步：验证 MCP 运行时&lt;/h3&gt;

&lt;p&gt;MCP 服务器需要 Python 或 Node.js 运行时：&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;# Python 服务器&lt;/span&gt;
uvx &lt;span class=&quot;nt&quot;&gt;--version&lt;/span&gt;  &lt;span class=&quot;c&quot;&gt;# 如果缺失：pip install uv&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# Node.js 服务器&lt;/span&gt;
npx &lt;span class=&quot;nt&quot;&gt;--version&lt;/span&gt;  &lt;span class=&quot;c&quot;&gt;# 如果缺失：从 nodejs.org 安装&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;第三步创建配置&quot;&gt;第三步：创建配置&lt;/h3&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;mkdir&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-p&lt;/span&gt; ~/.vibe
&lt;span class=&quot;nb&quot;&gt;touch&lt;/span&gt; ~/.vibe/config.toml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;打开 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/.vibe/config.toml&lt;/code&gt;：&lt;/p&gt;

&lt;div class=&quot;language-toml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;default&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;devstral-2&quot;&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;agent&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;enable_parallel&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;  &lt;span class=&quot;c&quot;&gt;# 先串行，后续再开&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;max_concurrent_agents&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;第四步启动&quot;&gt;第四步：启动&lt;/h3&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;vibe
&lt;span class=&quot;c&quot;&gt;# ✓ Mistral Vibe ready&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;试试这些命令：&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;/status   # 查看 token 使用情况
/help     # 显示所有命令
/model    # 当前模型
/exit     # 退出（或 Ctrl+D）
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;核心特性&quot;&gt;核心特性&lt;/h2&gt;

&lt;h3 id=&quot;-自动补全代码库导航器&quot;&gt;@ 自动补全：代码库导航器&lt;/h3&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@&lt;/code&gt; 符号是你的代码库导航器：&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;# 克隆一个项目
git clone https://github.com/pallets/flask
cd flask/examples/tutorial
vibe

# 在 Vibe 内部
&amp;gt; 这个项目里有什么？@ [按 TAB 查看所有文件]
&amp;gt; 分析 @flaskr/auth.py 并解释认证流程
&amp;gt; 对比 @flaskr/db.py 与现代 SQLAlchemy 异步模式
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;为什么用&lt;/strong&gt;：当你导航不熟悉的代码库或需要引用特定文件而不输入完整路径时——省去了运行 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ls&lt;/code&gt; 或 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;find&lt;/code&gt; 的上下文切换。&lt;/p&gt;

&lt;h3 id=&quot;-前缀终端命令执行&quot;&gt;! 前缀：终端命令执行&lt;/h3&gt;

&lt;p&gt;在 Vibe 内部直接执行 shell 命令：&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; !pytest -v  # 测试运行，输出显示
&amp;gt; 测试失败了。分析输出并告诉我哪里出问题了。
&amp;gt; !git status
&amp;gt; 审查我的未提交变更并建议合适的 commit 信息。
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;为什么用&lt;/strong&gt;：当需要运行命令并立即让 Vibe 解释结果时——消除了终端和 AI 助手之间的复制粘贴。&lt;/p&gt;

&lt;h3 id=&quot;代码库分析&quot;&gt;代码库分析&lt;/h3&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; 分析整个项目结构并创建 README.md，包括：
&amp;gt; - 架构概览
&amp;gt; - 设置说明
&amp;gt; - API 端点
&amp;gt; - 测试方法
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Vibe 读取所有文件，理解关系，生成文档。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;为什么用&lt;/strong&gt;：当接手遗留项目或生成不存在的文档时——Vibe 读取整个结构并从代码模式推断架构。&lt;/p&gt;

&lt;h3 id=&quot;代码生成&quot;&gt;代码生成&lt;/h3&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; 创建一个新的 FastAPI 用户注册端点，包含：
&amp;gt; - 使用 pydantic 进行邮箱验证
&amp;gt; - 使用 bcrypt 进行密码哈希
&amp;gt; - 使用 SQLAlchemy 异步进行数据库插入
&amp;gt; - 正确的错误处理和日志记录
&amp;gt; - 成功后返回 JWT token
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;为什么用&lt;/strong&gt;：当实现样板密集型功能或遵循已建立的模式时——Vibe 生成生产就绪的代码，包含错误处理、验证和日志记录。&lt;/p&gt;

&lt;h3 id=&quot;对话压缩&quot;&gt;对话压缩&lt;/h3&gt;

&lt;p&gt;长时间对话消耗 token。Vibe 支持对话压缩——压缩选项可以保留你的工作上下文，同时削减 70-80% 的 API 账单。&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; /compact
# 压缩前：24,587 tokens → 压缩后：4,892 tokens（节省 80%）
# 保留历史记录中定义的所有变量和函数
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;为什么用&lt;/strong&gt;：在多小时的会话中工作时，token 成本会累积——压缩可保留工作上下文，同时大幅降低账单。&lt;/p&gt;

&lt;h2 id=&quot;mcp-服务器vibe-的超级能力&quot;&gt;MCP 服务器：Vibe 的超级能力&lt;/h2&gt;

&lt;p&gt;MCP（Model Context Protocol）服务器才是 Vibe 真正的杀手锏。它们将 AI 连接到实时外部系统，从根本上扩展了能力边界。&lt;/p&gt;

&lt;h3 id=&quot;数据库集成&quot;&gt;数据库集成&lt;/h3&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;# 安装 PostgreSQL MCP 服务器&lt;/span&gt;
pip &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;mcp-postgres

&lt;span class=&quot;c&quot;&gt;# 在 ~/.vibe/config.toml 中配置&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-toml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;mcp_servers&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;]]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;postgres&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;command&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;python&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;-m&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;mcp_postgres&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;postgresql://user:pass@localhost:5432/mydb&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;配置后，你可以这样做：&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; 查看数据库 schema，找出所有没有索引的表，并生成迁移文件。
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Vibe 连接数据库，检查 schema，分析查询模式，生成添加索引的建议——全部在终端内完成。&lt;/p&gt;

&lt;h3 id=&quot;浏览器集成playwright&quot;&gt;浏览器集成（Playwright）&lt;/h3&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;# 安装&lt;/span&gt;
npx @playwright/mcp@latest
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-toml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;mcp_servers&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;]]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;playwright&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;command&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;npx&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;@playwright/mcp@latest&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; 打开我们的 staging 环境，截图 404 页面，然后记录一个 Jira ticket。
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;文件系统-mcp&quot;&gt;文件系统 MCP&lt;/h3&gt;

&lt;div class=&quot;language-toml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;mcp_servers&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;]]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;filesystem&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;command&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;npx&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;args&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;-y&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;@modelcontextprotocol/server-filesystem&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;/path/to/projects&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; 在 docs/ 中查找所有提到旧 API 端点的文件，并生成迁移清单。
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;并行-agent&quot;&gt;并行 Agent&lt;/h2&gt;

&lt;p&gt;Vibe 支持并行 Agent 执行，显著加速复杂任务：&lt;/p&gt;

&lt;div class=&quot;language-toml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;agent&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;enable_parallel&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;max_concurrent_agents&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;启动后，Vibe 自动识别可以并行化的子任务：&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;gt; 更新三个微服务的依赖版本，并运行每个服务的测试套件
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Vibe 会生成三个独立的 Agent 并行工作：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Agent 1：更新 auth-service 依赖 + 运行测试&lt;/li&gt;
  &lt;li&gt;Agent 2：更新 billing-service 依赖 + 运行测试&lt;/li&gt;
  &lt;li&gt;Agent 3：更新 notification-service 依赖 + 运行测试&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;监控进度：Vibe 显示每个 Agent 的实时状态，所有 Agent 完成后自动汇总结果。&lt;/p&gt;

&lt;h2 id=&quot;谁应该用-mistral-vibe&quot;&gt;谁应该用 Mistral Vibe&lt;/h2&gt;

&lt;h3 id=&quot;适合&quot;&gt;适合&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;全栈工程师&lt;/strong&gt;：需要跨前端、后端、数据库和基础设施工作的开发者。Vibe 的 MCP 集成意味着你需要什么，它就能连接什么，不限于单个文件或语言。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;DevOps/SRE 工程师&lt;/strong&gt;：在基础设施配置和 kubernetes 清单中工作的工程师。Vibe 操作你的终端——kubectl、docker、terraform、ansible 都在原生环境中。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;遗留系统现代化团队&lt;/strong&gt;：迁移 COBOL、Fortran 或 Java 单体应用的团队。Vibe 不需要配置复杂的项目级索引——它读取你的 repo，理解架构，然后开始工作。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;不适合&quot;&gt;不适合&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;期望自动补全 IDE 体验的开发者&lt;/strong&gt;：如果你希望在输入时获得实时代码建议，Vibe 不是 Copilot 的替代品。它不取代你的 IDE——它增强你的终端会话。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;单文件编辑为主的开发者&lt;/strong&gt;：如果大部分工作只涉及孤立的单文件更改，IDE 插件已经够用了。Vibe 的价值始于多文件项目理解和编排。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;我的感受&quot;&gt;我的感受&lt;/h2&gt;

&lt;p&gt;Mistral Vibe 不是一个提示工程工具，不是一个对话界面，也不是一个自动补全引擎。它是一个完整的终端原生开发环境——将你的 CLI 从”执行命令”升级为”编排工作流”。&lt;/p&gt;

&lt;p&gt;最让我惊讶的不是它能读代码库或多文件重构——这些其他工具也能做。让我印象深刻的是 MCP 服务器架构带来的扩展性：数据库集成、浏览器自动化、文件系统搜索、Jira/GitHub 集成——这些东西传统上需要写定制脚本和适配器才能做到，Vibe 通过 MCP 协议标准化了。&lt;/p&gt;

&lt;p&gt;如果你已经在终端里工作，Vibe 是你终端能力的自然进化：从手动编排工具，到用语言编排工具，再到让 AI 为你编排工具。这不是一个”辅助工具”，这是一个新的工作范式。&lt;/p&gt;
</description>  
               <pubDate>Tue, 23 Jun 2026 00:00:00 +0800</pubDate>  
               <link>https://www.wangjun.dev/2026/06/mistral-vibe-coding-assistant-terminal/</link>  
               <guid isPermaLink="true">https://www.wangjun.dev/2026/06/mistral-vibe-coding-assistant-terminal/</guid>  
               </item>  
          
    </channel>  
</rss>
