# 保哥笔记 — AI编程与工具链 > 本分片含 35 篇文章,按发布日期倒序。全部分片索引见 https://zhangwenbao.com/llms-full.md **站点**:https://zhangwenbao.com/ **分类**:AI编程与工具链 **生成**:2026-09-12 16:00:11 CST --- ## 子代理省的从来不是时间,是上下文,可你派活那一刻账就已经算错了 - URL:https://zhangwenbao.com/subagent-spawn-decision-and-model-routing.html - 分类:AI编程与工具链 - 发布:2026-07-31 | 更新:2026-07-31 - 摘要:子代理不是加速器是上下文隔离。窗口、缓存门槛、权限继承三个硬约束,加五问派活清单与模型路由三维度。 - 关键词:缓存,子代理,成本优化 > **TLDR**:摘要:子代理最流行的那套用法是“探路派便宜模型、执行派贵模型”,而做这套工具的厂商自己已经把这条默认改了——官方内置的探索型子代理从某个版本起不再固定跑最便宜那档,改成继承主会话的模型并封顶,理由写在文档里:它永远不比你已经选的那个更贵,也不会更便宜到看不懂地形。更麻烦的是另一条被忽略的硬约束:最便宜那一档模型的上下文窗口只有旗舰档的五分之一,而子代理最经典的用法恰恰是往里塞几十万词元的日志。同样反直觉的还有缓存——三档模型的起缓存门槛不是一个数,最便宜那档的门槛是最贵那档的八倍,很多子代理的固定前缀正好卡在中间,主会话里能缓存,挪进子代理就静默失效且不报错。这篇把派活这件事拆成五个可以按顺序问的问题,给出装得下、判断力、缓存复用三条路由维度,并解释同一个派活接口为什么会同时存在两种完全相反的经济学。 > 摘要:子代理最流行的那套用法是“探路派便宜模型、执行派贵模型”,而做这套工具的厂商自己已经把这条默认改了——官方内置的探索型子代理从某个版本起不再固定跑最便宜那档,改成继承主会话的模型并封顶,理由写在文档里:它永远不比你已经选的那个更贵,也不会更便宜到看不懂地形。更麻烦的是另一条被忽略的硬约束:最便宜那一档模型的上下文窗口只有旗舰档的五分之一,而子代理最经典的用法恰恰是往里塞几十万词元的日志。同样反直觉的还有缓存——三档模型的起缓存门槛不是一个数,最便宜那档的门槛是最贵那档的八倍,很多子代理的固定前缀正好卡在中间,主会话里能缓存,挪进子代理就静默失效且不报错。这篇把派活这件事拆成五个可以按顺序问的问题,给出装得下、判断力、缓存复用三条路由维度,并解释同一个派活接口为什么会同时存在两种完全相反的经济学。 先摆两组打架的数据。 一组来自实践社区的共识:把子代理当上下文垃圾回收用,探路派便宜模型、执行留给贵模型,端到端成本能降一半以上。 另一组来自做这套系统的厂商自己的工程复盘:他们把研究型任务做成多智能体架构之后,词元消耗是普通对话的十五倍,换来的是相对单个旗舰模型高出九成的表现。 一个在省钱,一个在花钱,用的是同一个派活接口。 这不是谁错了。这是两件被同一个词盖住的不同的事,而分不清它们,正是大多数团队的词元账单失控的起点。 ## 子代理到底在替你省什么? 先把最容易搞混的一条讲清楚:子代理省的不是墙上时钟的时间,是主会话的上下文占用。 这不是我的个人偏好,官方文档里写得相当直白。在Claude Code关于创建自定义子代理的那篇文档 (https://code.claude.com/docs/en/sub-agents)里,“该用主会话还是该用子代理”那张对照里,“延迟”被明确放在了该留在主会话的那一侧,理由的原话是:子代理从零开始,可能需要时间去收集上下文。 厂商自己没把它当加速器。这句话值得抄在显示器上。 那它当什么用?同一篇文档开头给的定位是:当一个附带任务会用搜索结果、日志或者你之后再也不会引用的文件内容淹没主对话时,用子代理——它在自己的上下文里干完那摊活,只把摘要交回来。 ## 合适的形状:输入大、输出小、无状态 这三条要同时成立,缺一条价值就掉一大截。 - 输入大。子代理要读的东西比它要还的东西多一个数量级以上。读三个文件回答一句话,值;读一个文件回答一句话,不值。 - 输出小。能压成结构化摘要。如果输出的形状要看它读到什么才能定,说明你还没想清楚要它干什么。 - 无状态。它不需要知道主会话此刻的假设,主会话之后也不需要它的中间过程。 反过来读这三条,就得到了不该拆的场景。最典型的是迭代式排查:你在追一个问题,形成假设、验证、修正,每一步喂下一步。这里派子代理会把工作记忆切断——它继承不到你刚形成的那个假设,而摘要按定义就不包含那个假设。 第二典型的是父会话稍后还要再读一遍的情况。子代理返回“这五个文件要紧”,然后父会话把这五个文件全打开重读——同一份内容付了两次钱。这种事比想象中常见得多,而且在账单上完全看不出来,因为两笔都是正常的读取。 ## 被隔离掉的到底是什么东西 “污染”这个词用得有点笼统,值得拆一下。子代理隔离的其实不是无用信息,而是那些会让后续判断变差的中间产物——试错时读过又证明无关的十几个文件、检索时命中又被排除的一堆候选、报错重试留下的三份几乎相同的堆栈。 这些东西的共同点是:它们在当时是必要的,事后是负担,而且模型不会自己把它们标记成过期。站内那篇讲上下文工程真正的杠杆是删不是加 (https://zhangwenbao.com/context-engineering-subtraction-practice.html)的文章里有一条实证结论正好接在这儿——上下文变长带来的退化不是一条平滑曲线,是撞悬崖,有的模型在某个长度突然塌方;而且伤害大小取决于问题与目标信息的语义相似度。 把这两条合起来读就得到一个不太舒服的推论:你在短上下文里跑通的验证,对长上下文没有预测力。所以“这条流程我试过没问题”这句话,在会话跑长之后是不作数的——而子代理正是为数不多能把这条曲线按住的手段。 ## 为什么“并行更快”这个直觉在生产里几乎总是错的? Cognition团队2025年6月12日那篇被反复引用的《别造多智能体》 (https://cognition.com/blog/dont-build-multi-agents),作者Walden Yan给的两条原则原文很短: > Share context, and share full agent traces, not just individual messages. Actions carry implicit decisions, and conflicting decisions carry bad results. 翻成人话是:要共享上下文,而且要共享完整的执行轨迹而不只是单条消息;每一个动作都夹带着隐含的决策,而互相冲突的决策一定带来糟糕的结果。 他给的反例是造一个像素小鸟游戏:一个子任务的智能体误解了指令,做了一个类似超级马里奥的背景;另一个子任务的智能体做的小鸟角色风格完全不搭。最后主体被迫把这两个各自跑偏的产物整合起来。 他对失败原因的判断是:决策变得太分散,上下文没法被充分共享。他给的最简方案是单线程线性架构;任务太长装不下时,再引入一个专门的模型把行动与对话的历史压缩成关键细节。 ## 唯一的判据:交接契约能不能在派活之前写死 那个像素小鸟的例子里,真正出错的不是并行本身,是“背景该是什么风格”这个决策没有被任何人做出来,于是两个子代理各自做了一遍,做的还不一样。 由此得到一条能直接用的判据:只有当你在派活之前就能把每个子代理的返回结构写出来,才用并行派工。写不出来,说明有决策还没做,那就先在主会话里把它做掉。 站内那篇拆多智能体协作怎么配、三种并行方案怎么选 (https://zhangwenbao.com/claude-code-agent-teams.html)的文章讲的是配置层面的怎么做,这条判据补的是要不要做——两件事分开问,顺序别反。 ## 第三方框架把这件事拆成了两种拓扑 这条判据不是某一家的私货。LangGraph官方文档把多智能体系统归纳成监督者与交接两类拓扑 (https://langchain-ai.github.io/langgraph/agents/multi-agent/),区别正好落在决策权归谁:监督者模式里,由一个中心节点决定下一步交给谁,子节点只管干活;交接模式里,每个智能体自己决定要不要把控制权移交给另一个,以及移交时带上什么。 把它和前面那条判据对上就很清楚了:监督者模式要求你在设计期就把分工写死,交接模式把这个决定推迟到运行时。写得死的用监督者,写不死的说明你对任务的理解还不够,那用交接模式也只是把没做的决定丢给模型去做,而模型做这个决定的依据比你少。 这也解释了为什么那么多多智能体项目在演示里很漂亮、上生产就散架:演示用的是路径固定的任务,任何一种拓扑都跑得通;生产里的任务路径不固定,于是设计期写死的那份分工开始和实际需要的分工对不上,而没有人会在中途去改它。 ## 那厂商自己为什么反着来? 现在回到开头那组打架的数据,因为它是这篇文章里最值得琢磨的地方。 Anthropic工程博客那篇复盘自家多智能体研究系统怎么造出来 (https://www.anthropic.com/engineering/multi-agent-research-system)的文章给了几个很硬的数字:这套系统由一个旗舰档的主导智能体做规划,并行拉起三到五个次级档的子智能体,各自独立检索、各自评估工具结果、把发现交回主导者综合,最后还有一道单独的引用核对;内部评测里它比单个旗舰档模型高出九成以上。代价是词元消耗大约是普通对话的十五倍。 还有一个更值得注意的发现:在他们的浏览类评测里,光是词元用量这一个变量就解释了约八成的表现方差,工具调用次数和模型选择只解释剩下那部分。 把这两件事放在一起,事情就清楚了:他们不是在省钱,他们是在用钱买表现。而社区那套“子代理降本六成”的做法,目的是省钱。同一个接口,两个方向相反的目标。 ## 两种经济学,两套账 | 隔离噪声型 | 并行探索型 | 目的 | 让主会话不必背负这段上下文 | 用更多并行推理换更好的结果 | 典型形状 | 输入大、输出小、路径确定 | 输入不大、路径不确定、需要广度 | 成功指标 | 总成本下降,质量不掉 | 质量上升,成本可接受 | 词元走向 | 降 | 大幅升 | 用便宜模型 | 常常合适 | 常常是错的 | 做错的信号 | 成本没降 | 质量没升 | 这张表最有用的是最后一行。两种用法的失败长得完全不一样,所以只看总账单是判断不出来的。一条隔离噪声型的线,账单降了两成就算成功;一条并行探索型的线,账单降了两成大概率说明它根本没跑起来。 ## “词元用量解释八成方差”这句话该怎么读 那个八成的数字很容易被读成“多花钱就有用”,但它真正的含义要更刺一点。 它说的是:在那组评测里,一个系统表现好不好,主要不取决于它用了什么模型、调了几次工具,而取决于它总共处理了多少词元。工具调用次数和模型选择加起来只解释剩下的那部分。 这条对做架构的人有两个后果,方向相反: - 好消息是,并行确实有效——多个独立上下文窗口同时推理,加起来的处理量是单个窗口做不到的,这就是那九成提升的物理来源。 - 坏消息是,如果表现主要由处理量决定,那么任何以减少处理量为目标的优化,都是在拿表现换成本。“既省钱又提质”这种话在这个维度上不太成立,你只能在某一段区间里做得比别人更有效率。 所以这两派的分歧其实可以调和成一句话:省词元的做法能省的是无效处理量,省不到有效处理量头上。子代理隔离噪声,省的是主会话反复重读那堆废弃中间产物的量,这部分本来就没产生价值;而并行探索增加的是有效处理量,它买的是覆盖面。前者该省,后者省不得,把两者混成同一笔账才是问题所在。 ## 那条被两边都跳过的判据 社区那套建议是“调度用便宜模型,叶子节点用贵模型”,理由是调度只是路由和状态跟踪;厂商的做法正好相反,主导者用旗舰档。两边都对,因为它们说的“调度”不是一件事。 判据可以浓缩成一句:这个调度器要不要决定“问题是什么”。 - 如果它只是把已经定义好的三件事分给三个人,然后等结果拼起来——那是路由,便宜模型足够。 - 如果它要把一个模糊的问题拆成若干个可以并行的子问题,还要在结果回来之后判断哪些可信、哪些矛盾、缺了什么再派一轮——那是全场最难的一步,省在这里等于省错了地方。 厂商那套研究系统属于后者:把一个开放式的研究请求拆成子查询,本身就是整个任务里认知负荷最高的动作。社区那套博客写作管线属于前者:选题、调研、写作、配图这四步是人事先定死的。 ## 便宜模型探路这条默认路由,厂商自己已经改了 这一节是我核材料时最意外的一处。 官方内置了一个叫Explore的只读探索型子代理,用来在不改动任何东西的前提下搜索和理解代码库。早期版本它固定跑在最便宜那一档模型上——这正是社区那条“探路派便宜模型”建议的来源。 但从版本2.1.198起,这条默认被改掉了。现在的行为是:Explore继承主会话的模型,并且在官方接口上封顶在旗舰档——文档给的理由原话是,这样Explore永远不会跑在比你已经为这个会话选定的那个模型更贵的模型上。主会话跑在中档,Explore就跑中档;主会话跑在最便宜那档,Explore也跑那档。 注意这个改动的方向:默认值从“尽可能便宜”变成了“不比你贵”。这两句话听起来差不多,实际差得很远——前者是成本优先,后者是一致性优先,成本封顶。 ## 为什么会往这个方向改 文档没有解释动机,但从工程上不难推:便宜模型探回来的那份地形图,执行那一步的模型未必看得懂。 探路子代理的输出是一份高度压缩的摘要,压缩的过程本身就是一次判断——哪些细节值得留、哪些可以扔。压缩得越狠,对压缩者的判断力要求越高。一个能力档次明显低于执行者的模型做这件事,扔掉的可能恰恰是执行那一步唯一需要的那条线索。 这个失败模式在账单上完全看不见:探路那一步很便宜,执行那一步也正常完成了,只是结果差一点。你会以为是执行模型不行。 顺便,官方文档也保留了退路:你自己定义一个同名的子代理就能覆盖内置的那个,并且自己指定模型字段。所以想继续走便宜路线是可以的,只是这件事从默认变成了显式选择——它逼你为这个决定负责,这个变化本身比默认值是什么更重要。 ## 最便宜的那一档,装得下你要它读的东西吗? 这是我认为整个话题里最被忽略的一格,而且它是一道硬墙,不是一个权衡。 几乎所有讲子代理的材料都会举同一个例子:派一个便宜模型去扫几十万词元的日志,定位失败模式,返回一段堆栈。这个例子有个问题——按当前的模型阵容,最便宜那一档根本装不下几十万词元。 按官方模型总览页给出的规格 (https://platform.claude.com/docs/en/about-claude/models/overview),旗舰档和中档的上下文窗口都是一百万词元级别,而最便宜那一档是二十万。差五倍。 档位 | 上下文窗口 | 相对单价 | 适合的子代理形状 | 旗舰档 | 百万级 | 最高 | 需要判断力的生成、要做取舍的评审、要决定问题是什么的调度 | 中档 | 百万级 | 中 | 长文档结构化抽取、搜索并摘要、跨文件检索 | 最便宜档 | 二十万级 | 最低 | 批量分类过滤、确定性格式转换、短输入高吞吐 | 这张表右边那一列和左边那一列合在一起看,会看出一件相当反直觉的事:子代理最经典的用法是往里塞大输入,而最便宜的那一档恰好是窗口最小的那一档。这两件事在方向上是打架的。 所以“扫大日志派便宜模型”这条建议,在今天要么得改成中档,要么得先分片再派。分片这件事本身又有成本——它需要一个知道该按什么维度分的东西,而那又是判断力。 ## 被截断的失败长什么样 更麻烦的是超窗的失败方式。它通常不表现为报错,而表现为子代理只读到了前面一部分就开始回答,而且答得挺像样。它不知道自己没读完。 站内那篇讲词元估算工具那把尺子刻的是哪一代分词器的口径 (https://zhangwenbao.com/token-counter-tokenizer-generation-gap-window-cost-guide.html)的文章里有一条结论正好接在这儿:本地估出来的词元数和真实口径能差出五成,也就是说你以为塞了十五万,实际可能已经过线。派活之前先量一遍,别靠估。 ## 窗口这一格该放在哪一层去看 站内那篇讲智能体骨架的六层该按什么顺序建 (https://zhangwenbao.com/agent-harness-layers-build-order.html)的文章有一条结论可以直接借过来:真正撑住稳定性的是评估与容错这两层,而它们通常被排在最后。窗口这件事就是典型的容错层问题——它不是能力问题,是边界问题,而边界问题只有装了传感器才看得见。 具体到子代理,最省事的传感器是一行断言:派活之前把输入量一遍,超过目标模型窗口的八成就直接抛错,别让它跑。宁可失败得很响,也别成功得很安静。这一行代码的性价比,比这一整节讲的所有选型考虑加起来都高。 ## 冷启动税到底是多少,为什么它不是一个固定数字? 每派一次子代理都有固定开销:系统提示重新计算、项目规则文件重新加载、工具描述重新注入。社区常给的经验值是每次三五千词元,低于一万词元的有效工作量就不划算。 这个量级大体没问题,但“固定开销”这个说法不准确——它不固定,而且不均匀。 官方文档里有一条几乎没人引用的说明:内置的Explore和Plan这两个子代理会跳过项目规则文件和父会话的版本控制状态,理由是让研究保持快速和廉价;而其余所有内置子代理,以及你自己写的每一个自定义子代理,两样都会加载。 换句话说,免税待遇只发给两个官方子代理。你自己写的那七八个专家子代理,每一个每一次派活都要把整份项目规则文件重新读一遍。项目规则文件写到三千词元,七个子代理各派一次,光这一项就是两万一千词元,而这些内容主会话里本来就有一份。 站内那篇讲项目规则文件不是写得越详细越好、最优行数是多少 (https://zhangwenbao.com/claudemd-minimalist-guide.html)的文章原来的论据是注意力稀释,这里给了它第二条更算得清的理由:规则文件的长度会被子代理的数量乘一遍。 ## 缓存那一格才是真正的分水岭 但冷启动税还不是最贵的那部分。最贵的是缓存。 按官方提示缓存文档给出的价格倍率 (https://platform.claude.com/docs/en/build-with-claude/prompt-caching),缓存写入是基础输入价的1.25倍,缓存读取只有0.1倍。也就是说一段稳定前缀只要被复用一次以上,成本就降到了原来的十分之一附近。主会话之所以跑几十轮还不至于破产,很大程度上靠的是这一格。 问题是缓存是按模型分区的。你为了省钱把子代理换成另一档模型,等于换到了一个空的缓存分区——那段本来能按十分之一计价的前缀,在子代理这边要按1.25倍重新写一遍。 然后是这篇文章里我最想让人记住的那个数字。同一份文档里列了各模型的最小可缓存前缀,而这个数不是单调的: 档位 | 最小可缓存前缀 | 低于门槛时的表现 | 旗舰档 | 512词元 | 静默不缓存,不报错 | 中档 | 1024词元 | 静默不缓存,不报错 | 最便宜档 | 4096词元 | 静默不缓存,不报错 | 最便宜那一档的起缓存门槛,是最贵那一档的八倍。 这件事的后果很具体:一个子代理的固定前缀——它自己的系统提示加上工具描述——很容易落在一两千词元这个区间。这个长度在旗舰档和中档都能进缓存,挪到最便宜那一档就进不去了,而且没有任何提示。你以为省了钱,实际是把一段本来能按十分之一计价的内容,换成了每次全价重算。 怎么查?文档给的办法很直接:看返回里的缓存读取词元数。如果重复派活很多次它一直是零,那就是没进缓存,去比对长度和门槛。 顺带还有一条同源的坑:同一份文档的失效层级表里写着,工具定义只要变动,工具、系统、消息三层缓存全部作废。所以那种“按任务动态增删工具”的设计,看着灵活,代价是每改一次就把整条会话的缓存清零一次。 ## 把一次真实的派活算成数字 抽象的倍率不如一笔具体的账好使。假设一个搜索型子代理,固定前缀是系统提示八百词元加工具描述一千二百词元,共两千词元;项目规则文件三千词元;每次工作输入两万词元,输出五百词元。一天派四十次。 配置 | 每次固定前缀怎么计价 | 四十次的固定前缀总量 | 留在主会话(前缀已缓存) | 不重复,缓存读取 | 约2000词元按0.1倍读一次 | 子代理用同档模型 | 前缀5000词元,首次1.25倍写入,之后0.1倍读取 | 1次写入加39次读取 | 子代理降到最便宜档 | 前缀5000词元过了4096门槛,同上但单价更低 | 1次写入加39次读取 | 子代理降档且不加载规则文件 | 前缀2000词元,低于4096门槛,静默不缓存 | 40次全价重算 | 看最后一行。它是四种配置里看起来最省的那个——模型最便宜、前缀最短、规则文件也没加载——实际是唯一一个每次都要全价重算固定前缀的。为了省钱做的三件事,最后一件把前两件的收益抵消掉了,而且没有任何提示。 这个坑之所以隐蔽,是因为它的三个成因单独看每一个都是对的:换便宜模型对、精简前缀对、不加载不需要的规则文件也对。是它们凑在一起才越过了那条门槛线,而门槛线在文档的另一页上。 顺带说,这类“单独审查每一项都合规、凑一起才出事”的故障,在站内做过基础设施排查的那几篇里反复出现过。它的通用特征是:没有任何一个环节可以被指认为犯错的那一环,所以复盘会开完通常没有结论。 ## 那到底该按什么路由模型? 社区那套说法是“按决策复杂度路由,不按输入体量”。这句话本身没错,但只够一半——它假设了所有模型都装得下、缓存行为都一样,而上面两节说明这两个假设都不成立。 补全之后是三个维度,按顺序问: - 装得下吗?把实际输入量量一遍,超过最便宜那档的窗口,这一档直接出局,不用讨论价格。 - 输出需要判断力吗?需要取舍、需要从零碎证据里综合、需要决定问题是什么的,往上走一档。只需要准确不需要创造的,中档就够。确定性的分类和格式转换,最便宜那档最划算。 - 这段前缀会被复用多少次?只派一次的,缓存不用考虑;一天要派几十次的,先确认前缀长度过了那一档的门槛,过不了就把前缀补厚,或者干脆别降档。 第三条听起来很怪——为了让缓存生效而故意把提示词写长——但账是这么算的:把一段一千八百词元的前缀补到四千一百词元,多出来的部分第一次全价写入,之后每次按十分之一读取。派活超过三次就回本了。这不是优雅的做法,是门槛设成阶梯就一定会产生的套利空间。 ## 成本模型里最容易漏的两项 常见的单次派活成本公式是:冷启动开销乘输入单价,加上工作输入乘输入单价,再加输出乘输出单价。这个公式漏了两项,而漏掉的这两项恰恰在生产里占比最大: - 缓存分区切换的损失。本来能按0.1倍读取的部分,换模型后按1.25倍重写。前缀越长,这一项越大。 - 父会话重读的重复计费。子代理读过、父会话又读一遍的那部分,在两边都是正常读取,账单上没有任何标记。 观测上我建议记两个比值,按子代理分桶:开销词元除以工作词元,以及缓存读取词元除以总输入词元。第一个长期高于0.3,说明委派策略有问题;第二个长期接近零,说明你的子代理压根没吃到缓存。站内那篇拆订阅档、团队版与接口计费到底怎么算、省钱机制在哪 (https://zhangwenbao.com/claude-code-pricing-guide.html)的文章可以配着看,那篇讲的是账面价格,这里讲的是这些价格在多代理结构下怎么被放大或抵消。 ## 工具权限继承那一格,最容易漏的是什么? 子代理会继承一样很多人低估的东西:工具权限。官方文档对内置子代理的表述是,每一个都继承父会话的权限,再叠加额外的工具限制。 标准防御是最小权限白名单:搜索型子代理只给读文件和搜索,写注释型子代理只给读和改文件、不给命令执行。这条大家都知道。 但有一格几乎所有人都漏:技能工具。文档里写得很清楚——如果不把技能这个工具从子代理的工具清单里去掉(或者放进禁用列表),子代理在执行过程中仍然可以自己发现并调用项目级、用户级和插件提供的技能。 这一格为什么危险,稍微推一下就明白:你给一个子代理配了只读权限,觉得很安全;但它能调用的某个技能内部可能会执行命令、写文件、发网络请求。你限制的是它直接能做什么,没限制它能借谁的手。 这条在提示注入的场景下尤其要紧。如果一段注入指令从外部内容——比如抓回来的网页、用户提交的评论——钻进了子代理的输入,它就能借技能这条路触发父会话本来会拦下来的操作。站内那篇讲从安全评审到权限模型与提示注入防御 (https://zhangwenbao.com/claude-code-security.html)的文章给了完整的防御面,这里只补一句:白名单要连技能一起白名单,只列工具是漏的。 ## 一份能直接照着走的派活检查清单 把前面几节压成五个按顺序问的问题。任何一步答“否”就停在主会话里做。 - 有效输入是不是超过一万词元?低于这个量级,冷启动税吃掉全部收益。 - 输出能不能压到两千词元以内,且结构在派活前就写得出来?写不出来,说明还有决策没做。 - 父会话之后需不需要看原始证据?需要,就别拆——摘要漏掉的那个细节往往就是根因。 - 目标模型装得下这些输入吗?量一遍,别估。 - 这段前缀会被复用几次,过了那一档的缓存门槛没有?高频复用的,缓存这一格的权重高于单价。 还有一条不属于清单但值得单列的经验:同一形态的任务在主会话里处理过至少三次之后,才值得抽成一个固定的专家子代理。专家化过度的代价是七个子代理各自维护一份提示词,每个一个月被调用两次,质量在你不知道的情况下缓慢漂移。这跟微服务拆早了是完全一样的病。 ## 这套东西落到独立站运营的活上是什么样? 上面全是工程语言,落到实际业务上其实很好对号入座。 任务 | 该不该拆 | 理由 | 扫三百个产品页找出缺结构化数据的 | 拆 | 输入大输出小,判据确定,中档或最便宜档都行 | 读竞品站二十篇文章总结定位差异 | 拆 | 典型的读得多说得少,但输出需要判断,走中档 | 把一批产品描述改写成统一口吻 | 不拆 | 输入不大,且口吻一致性需要同一个上下文里连着做 | 排查某个页面为什么掉排名 | 不拆 | 迭代式假设验证,摘要会切断工作记忆 | 批量给旧文补内链 | 看情况 | 候选池检索可以拆,具体插哪句不能拆 | 每天扫一遍站点日志找异常 | 拆,但注意窗口 | 日志量常常超过最便宜档的窗口,要么分片要么升档 | 最后那一行是本文两条主线交汇的地方,也是我见过最多人踩的一格:它看起来是最标准的子代理场景,恰恰因为标准,大家会直接照抄“派便宜模型”这条建议,然后撞上窗口。 ## 一个美妆站的真实返工 去年年底帮一个做护肤的出海站搭产品页批改流水线,第一版设计得挺漂亮:五个专家子代理,分别管标题、描述、成分表、结构化数据、内链,全部派最便宜那档,主会话负责调度和合并。 跑了两周,两个毛病同时冒出来。 第一个是内容打架。成分表那个子代理按法规口径把某个成分写成了标准名,描述那个子代理按营销口径写成了俗名,同一个页面上两个名字。这就是那条“互相冲突的决策带来糟糕结果”的原话在电商页面上的样子——没有任何一个子代理做错了,是“该用哪个口径”这个决策从来没有人做过。 第二个是账。五个子代理各自的固定前缀都在两千词元上下,全都卡在最便宜那档的门槛下面,四十个页面跑一轮就是两百次全价重算。当时没意识到,只觉得比预期贵。 返工的做法很朴素:五个砍成两个。第一个负责“读”——把页面现状、法规口径、竞品同类表述一次性读完,返回一份统一的事实清单;第二个负责“写”——拿着这份清单一次性把五处全改了,中间不再拆。口径冲突消失了,因为它现在只在一个上下文里被决定一次。 成本也降了,但降的原因跟我们最初以为的完全不一样:不是因为用了便宜模型,是因为派活次数从五次降到两次,而且合并后的前缀过了缓存门槛。 这件事之后我给自己定了条规矩:拆子代理之前先问一遍,被拆开的这几件事之间有没有共享的判断。有的话,那个判断必须在拆之前做完,或者干脆别拆。 还有一件事值得连起来看。本批另一篇讲内容自动化的触发器该挂在业务事实上、产出要有回执 (https://zhangwenbao.com/content-automation-trigger-and-receipt.html)的文章,讲的是流水线层面的可发现性;这篇讲的是流水线内部单个环节的派活决策。两者是同一件事在两个尺度上的表现——没有回执你不知道整条线好不好,没有那两个比值你不知道单次派活值不值。两个尺度都装了仪表,才谈得上调优。 ## 保哥的一句话总结 子代理是个动力工具,大多数任务不需要动力工具。默认留在主会话,能说出“我要隔离掉哪一段污染”或者“我要并行探索哪几条互不相干的路”才派活。说不出来的时候派出去的那些,通常不是在解决问题,是在把问题换个地方发生。 ## 常见问题解答 ## 子代理和技能到底怎么选? 判据只有一条:父会话需不需要对中间推理过程保持无感知。需要隔离的,用子代理;不需要隔离、只是想复用一段指令的,用技能。技能跑在父会话的上下文里,它是提示词扩展,不产生隔离;子代理是独立的一次调用,有自己的上下文窗口和系统提示。官方文档在“该用子代理还是主会话”那节之后专门补了一句,想要可复用的提示词或工作流就考虑技能,说的是同一件事。 ## 把调度器换成便宜模型,一定能省钱吗? 不一定,取决于这个调度器要不要决定问题是什么。如果它只是把已经定义好的几件事分发下去、等结果拼起来,那是路由,换便宜模型通常有效;如果它要把一个模糊的问题拆成可并行的子问题,还要判断回来的结果哪些可信、缺了什么再派一轮,那这一步是全场认知负荷最高的,省在这里省错了地方。做这套系统的厂商在自家研究型产品里用的正是旗舰档做主导者。 ## 为什么我给子代理换了便宜模型,账单反而涨了? 最常见的两个原因都跟缓存有关。一是缓存按模型分区,换模型等于换到空分区,本来能按十分之一读取的前缀要按1.25倍重新写入;二是最便宜那一档的最小可缓存前缀是四千多词元,是旗舰档的八倍,很多子代理的固定前缀落在中间,在主会话能缓存、挪过去就静默失效。查法是看返回里的缓存读取词元数,长期为零就是没进缓存。 ## 项目规则文件要不要给子代理加载? 官方的做法是分开对待:内置的探索型和计划型子代理会跳过规则文件和父会话的版本控制状态,其余内置子代理和所有自定义子代理都会加载。这意味着规则文件的长度会被子代理的数量乘一遍,写到三千词元、七个子代理各派一次,光这一项就两万多词元。所以子代理用得多的项目,规则文件更该精简,这跟注意力稀释是两条独立成立的理由。 ## 子代理的工具白名单,除了工具还要限制什么? 技能。这是最容易漏的一格:如果不把技能这个工具从子代理的工具清单里去掉或者加进禁用列表,子代理在执行过程中仍然可以自己发现并调用项目级、用户级和插件提供的技能。后果是你限制了它直接能做什么,但没限制它借别人的手做什么——某个技能内部可能会执行命令或者发网络请求。有外部内容进入子代理输入的场景下,这条尤其要紧。 ## 怎么知道自己的委派策略是不是坏的? 按子代理分桶记两个比值。第一个是开销词元除以工作词元,长期高于0.3说明拆得太碎,冷启动税占了主导;第二个是缓存读取词元除以总输入词元,长期接近零说明子代理压根没吃到缓存。这两个数都能从接口返回的用量字段里直接算出来,不需要额外埋点,但默认没人看,得自己接一个看板。 ## 权威参考资料 ## Token估算工具那把尺子刻得很准,只是刻的是上一代分词器的口径 - URL:https://zhangwenbao.com/token-counter-tokenizer-generation-gap-window-cost-guide.html - 分类:AI编程与工具链 - 发布:2026-07-27 | 更新:2026-07-27 - 摘要:同一份中文内容用两代分词器各数一遍:这款工具对上一代词表中位只差6.2%,对新一代却系统性多报51.2%。文中给出成因、可直接套用的换算倍数,以及官方精确计数端点怎么用。 - 关键词:API成本,Token优化,上下文窗口 > **TLDR**:摘要:这款工具的估算不是不准,是准得偏心。拿站内120篇长文做对照,它给的中间档相对GPT-4那代词表的中位偏差只有6.2%,97.5%的文章落在它给的上下界之间——承诺的一成五误差兑现得干干净净。问题出在换代之后。同样这120篇,换成GPT-4o那代词表再数一遍,它系统性多报51.2%,而且没有一篇的真实值落进它给的区间。它把新旧两档口径都画在了同一边,新的那一端从来没够着过。 > 摘要:这款工具的估算不是不准,是准得偏心。拿站内120篇长文做对照,它给的中间档相对GPT-4那代词表的中位偏差只有6.2%,97.5%的文章落在它给的上下界之间——承诺的一成五误差兑现得干干净净。 问题出在换代之后。同样这120篇,换成GPT-4o那代词表再数一遍,它系统性多报51.2%,而且没有一篇的真实值落进它给的区间。它把新旧两档口径都画在了同一边,新的那一端从来没够着过。 先说这款工具的定位,免得后面的话听着像挑刺。它是一个纯前端的启发式估算器:把文本按汉字、英文字母、数字、空白、其余符号分成五类,各自乘一个折算系数加起来,给出低中高三个数,再顺手算一下占各种上下文窗口的比例和调用成本。全程不上传,商业提示词也能放心往里粘。 这个设计取向是对的。浏览器里塞不下真正的词表文件——那些东西动辄几兆,为了估个数把它们全下载下来不划算。工具的使用说明里也把这一层交代得很坦白,甚至主动写了一节叫“这款工具做不到什么”,把不精确、不区分模型、不算图片音频四条限制都列了。 能主动写限制的工具不多。所以我这次没打算去证明它不准,而是想验证一件更具体的事:它承诺的那个误差范围,到底兑不兑现。 ## 这把尺子到底是怎么刻的? 要验证承诺,先得知道承诺是怎么算出来的。我把页面里那段脚本抽了出来,逐行读完,再用另一种语言原样复刻了一遍。 ## 五类字符,一把算盘 它的分类逻辑很干脆:汉字与中日韩字符走一个正则,英文字母走一个,数字走一个,空白走一个,剩下的全部归进“符号”这一类。五个计数乘各自的系数,相加取整,一个数就出来了。 这里有个细节值得先记下:字符总数用的是JavaScript字符串的长度属性。这个属性数的是UTF-16码元,不是我们直觉里的“字”。后面会看到,这一条埋了几个坑。 ## 三档系数摊开看 三个档位的差别,全在五个系数上: 字符类别 | 下界 | 中间档 | 上界 | 汉字与中日韩 | 每字1.00 | 每字1.25 | 每字1.60 | 英文字母 | 每4.4个1个 | 每4.0个1个 | 每3.6个1个 | 数字 | 每3.0位1个 | 每2.5位1个 | 每2.0位1个 | 符号与标点 | 每个0.55 | 每个0.70 | 每个0.95 | 空白 | 每个0.28 | 每个0.28 | 每个0.28 | 空白那一行三档全一样,说明作者认为空格的折算不随词表变化。这个判断后面会被数据部分证实。 页面上对三档的解释是:下界代表“对中文更友好的新词表”,上界代表“早期词表或代码密集”,中间那档最接近实际。这句话是整篇文章的引信——它把新旧两代词表分别指派给了区间的两端。 ## 那个悄悄乘1.18的开关 五类字符算完之后还有一步:如果文本命中了一组代码特征的正则,三个档位分别再乘1.12、1.18、1.25。这个开关是全局的,不按比例——一篇中文文章末尾贴了两行示例代码,整篇的估算都会被抬起来。 触发条件是六个模式取或:行尾是花括号或分号、出现function加空格、出现箭头函数符号、出现const加空格、出现import加空格、出现形如尖括号包字母的标签,以及模板字符串的插值起始符。这一组模式选得很有倾向性,第七节会专门算这笔账。 ## 先把复刻校准了再往下走 猜算法容易翻车,所以我做了交叉验证:在浏览器里点“加载示例”按钮,让工具用它自带的那段提示词跑一次,再把同一段文本喂给我的复刻版。 两边的输出逐字段对上了:字符数491,下界274,中间档348,上界458,代码特征命中。五个数字一个不差。往后所有的批量结果,都建立在这次校准之上。 ## 它承诺的误差一成五,实测兑现了吗? 先给结论:兑现了,而且兑现得比我预想的漂亮。 ## 对照组用真正的词表 启发式估算的对照组只能是真分词器。我用了两个:一个是cl100k_base,另一个是o200k_base。这两个名字不是我编的口径,OpenAI官方的计数教程里有一张明确的对照表——cl100k_base对应gpt-4-turbo、gpt-4、gpt-3.5-turbo,o200k_base对应gpt-4o、gpt-4o-mini。前者是2022年底那一代,后者是2024年那一代。 语料我没有构造,直接从站里拉了120篇真实长文,去掉标签只留正文,每篇3000字以上。这些都是中文为主、夹杂英文术语和少量代码块的内容,跟大多数人往这个工具里粘的东西形态接近。 ## 对上一代词表,它准得让人意外 120篇跑完,中间档相对cl100k_base的中位偏差是 +6.2%,均值 +7.3%。最小的一篇只差 -1.1%,最大的一篇 +32.7%。 更关键的是分布:114篇落在正负15%以内,占95.0%;117篇的真实值落在它给的上下界之间,占97.5%。工具的FAQ里那句“与真实分词器的差距通常在一成到一成五之间”,在这一档上是句实话。 一个不加载任何词表、纯靠五个系数硬算的估算器能做到这个水平,说明那几个系数不是拍脑袋填的,是照着真实数据调过的。这一点值得先讲清楚,因为接下来的内容会显得没那么友好。 ## 唯一那三篇例外,坏在同一件事上 没落进区间的三篇,偏差最大的是站内那篇拆JS在线运行工具异步输出去哪了 (https://zhangwenbao.com/js-runner-async-console-linenum-blocking-guide.html)的教程,中间档13392,真实10089,多报32.7%。原因不难猜:那篇正文里贴了大量JavaScript代码,代码特征开关被打开,整篇乘了1.18。 这三篇的共同点是代码块占比高。也就是说,那个乘1.18的开关,在它最该发挥作用的场景里反而把误差推大了。这个线索先记着。 ## 换一代分词器,同一份内容为什么差出五成? 把对照组换成o200k_base,同样这120篇,同样的工具输出,数字整个变了脸。 ## 五成一,不是五个百分点 中位偏差从 +6.2% 跳到 +51.2%,均值 +51.9%。最保守的一篇也多报了35.9%,最离谱的一篇多报80.5%。 但真正让我停下来的不是51这个数,是另一个数:120篇里,落在正负15%以内的有0篇,真实值落进上下界之间的也是0篇。不是大部分没落进,是一篇都没有。 一个区间如果只是偏了,会有零星几个样本擦边命中。整整120篇全部出界,说明这不是精度问题,是这把尺子的量程整个平移了。 ## 它的区间画在了同一边 把每汉字的实际消耗单独拎出来看,事情就清楚了。汉字超过500个的那120篇里,cl100k_base的实测中位是每字1.269个token,区间1.166到1.444;o200k_base的实测中位是每字0.897,区间0.825到1.086。 再对照工具的三档:下界1.00、中间1.25、上界1.60。中间档1.25几乎正压在cl100k的1.269上,这就是它对上一代如此精准的原因。而o200k的0.897,比它的下界还低一截——工具标着“对中文更友好的新词表”的那一端,恰恰够不到真正对中文更友好的那一代。 打个不太严谨的比方:这就像一份按2015年汇率表做的报关单模板,公式列得一点没错,只是表老了。你照着填,每一步都合规,最后那个数就是不对。 ## 更麻烦的是,换代不只有一个方向 工具的说明里有一句判断:“新一代分词器对中文更友好,同样一段中文,用较新的词表切出来的token数比早期词表少三成左右。”从cl100k到o200k,1.269降到0.897,正好降了29.3%——这句话准得可以当结论引用。 问题是它被当成了一条规律。而Anthropic的官方文档里写着完全相反的一段:Claude 4.7及之后的模型换了新的分词器,同样的输入文本产生的token数比早先的模型大约多三成,文档还专门提醒不要拿旧模型上量到的数字去估成本和窗口占用,要按你打算用的那个模型重新数一遍。 同一年里,一家的新词表让中文便宜了三成,另一家的新词表让同样的文本贵了三成。“新的一定更省”从来不是一条定律,它只是过去某一次换代的方向。工具把这个方向刻进了系数,于是它的下界永远只往一边留余量。 ## 那个标着对中文更友好的下界,一次都没够着 找到病灶之后,我第一反应是这东西应该很好修:把下界的汉字系数往下挪一点就行。结果被实测打了脸,这一节讲的就是打脸的过程。 ## 说明书写的是少三成,代码写的是少两成 先看一个对不上的地方。中间档是每字1.25,说明里承诺新词表“少三成左右”,那下界按理应该落在1.25乘0.7,也就是0.875。而代码里写的是1.00——相对中间档只降了20%。 而o200k的实测中位是0.897,离0.875只差0.022,离1.00差0.103。也就是说,这款工具的文字描述比它自己的代码更接近事实。作者对现实的判断是对的,落到系数上的时候少走了一步。 ## 我以为改一个数就修好了,实测说不行 顺着这个思路,我做了个反事实测试:只把下界的汉字系数从1.00改成0.875,其余四个系数原样不动,再跑一遍那120篇。 结果是2篇。落进区间的从0篇变成2篇,覆盖率从0%变成1.7%。这个数字远低于我的预期,说明汉字系数只是问题的一部分,不是全部。这条论点我原本已经写进提纲了,实测之后只能改写。 ## 把误差拆开,看每类字符各背多少锅 与其猜,不如把账拆了。我按五类字符做了一次误差归因:工具的中间档比o200k多出来的那65万个token,分别是哪一类贡献的。 字符类别 | 对超出量的贡献 | 占比 | 汉字与中日韩 | +696808 | +107.2% | 符号与标点 | -62785 | -9.7% | 空白 | +15142 | +2.3% | 英文字母 | +3227 | +0.5% | 数字 | -873 | -0.1% | 汉字那一项占了107.2%,超过百分之百,因为标点那一项是负的——工具把标点算便宜了,反过来抵掉一部分。其余三类加起来影响不到3%。 所以病灶确实在汉字系数上,只是它错的幅度比“少走一步”大得多。1.25要降到0.76上下才对得上o200k,而不是0.875。我先前那个反事实之所以只修好2篇,就是因为改的幅度还不够一半。 ## 照实测反解一遍,五个系数应该是多少 既然要给数,就给到底。我拿那120篇做了一次最小二乘拟合,反解出每类字符在两种口径下的真实单价: 字符类别 | 工具中间档 | cl100k实测 | o200k实测 | 汉字与中日韩 | 1.250 | 1.090 | 0.761 | 英文字母 | 0.250 | 0.131 | 0.210 | 数字 | 0.400 | 0.238 | 0.462 | 符号与标点 | 0.700 | 1.756 | 1.131 | 空白 | 0.280 | -0.135 | 0.052 | 这组系数在同一批语料上的自检成绩:cl100k口径的绝对偏差中位1.6%,120篇里有114篇落在正负5%以内;o200k口径中位1.8%,117篇落在正负5%以内。 三个地方值得单独说。第一,符号与标点的真实单价是1.1到1.8,而工具按0.70算,等于把中文正文里最密集的那类非汉字字符打了对折。第二,空白的系数接近零甚至为负,说明空格基本被并进了相邻的token里,不额外收费——工具那个三档不变的0.28,方向上是多收了。第三,英文和数字这两栏在两种口径下方向相反,这也是为什么下一节要把它们分开讲。 ## 这组数字该怎么用,以及不该怎么用 提醒一句:这是在以中文为主的语料上拟合出来的整篇口径系数,不是逐字符的真值。汉字那一项因为占绝对多数,拟合得最稳;英文、数字、标点在这批语料里占比小,彼此还有共线性,单看某一栏的绝对值意义有限。 拿它来做什么合适?拿来解释误差的来源、以及给中文长文做整篇修正,是靠谱的。拿来给一份纯英文的产品文案做逐类换算,就别用了——那批语料里根本没有这种形态。 ## 英文被高估,数字被低估,各错各的方向 把语料换成非中文的形态,误差不是变大变小的问题,是换了方向。 ## 四个字母一个token,这条经验值老了 工具中间档按每4.0个字母1个token算,下界4.4、上界3.6。我拿四段不同风格的英文实测了一下: 英文类型 | 实际字母/token | 中间档偏差 | 通用散文 | 4.68 | +46.3% | 电商产品描述 | 3.67 | +31.0% | 术语与长词密集 | 8.10 | +123.8% | 含品牌名与网址 | 3.41 | +20.5% | 四段全部高估,最少两成,最多一倍还多。注意最后一列的偏差不只来自字母那一项——同一段文本里的空格和标点也在往上加——但方向是一致的:对英文内容,这个工具的整个区间都压在真实值上方。 我特意做了一段混合英文再验一次:454个字母,cl100k实际92个token,等于每4.93个字母1个token。工具给的下界128、中间140、上界155,真实值92连下界的边都摸不到。 ## 长词不等于生僻词,这一条恰好写反了 工具的说明里写着:“常见词往往整词一个token,生僻词和长词会被切成好几段。”前半句对,后半句里的“长词”得单拎出来。 那段术语密集的英文之所以能做到8.10个字母才1个token,正是因为里头全是Internationalization、characterization、normalization这类长词。它们长,但一点也不生僻——词根和后缀都是高频子词,分词器两三刀就切完了。子词切分这套做法本来就是为了这个设计的:Sennrich那篇2016年的论文标题直接写着用子词单元处理罕见词,把没见过的长词拆成见过的碎片,而不是每个字母单独算。 真正会被切碎的是随机串:订单号、哈希值、拼错的单词、生造的品牌名。它们长得像词但从没一起出现过,只能一小段一小段地拼。所以判断一段英文贵不贵,看的不是词长,是这些字符组合有没有一起出现过很多次。 ## 数字本身还行,坏在中间那些点和冒号 数字这一栏工具按每2.5位1个token算。单看纯数字串,这个折算相当接近:现代分词器把长数字按三位一组切,123是1个,1234是2个,1234567是3个。平均下来就在2.5到3位之间。 坏事的是分隔符。实测几个常见形态: - 19:31:22一个时间戳,5个token——两个冒号各占一个 - 103.39.225.35一个IP地址,7个token——三个点各占一个 - 3.14159 4个token,小数点单独一个 - ¥12,800.50 6个token,货币符号、千分位逗号、小数点各一个 工具把这些点、冒号、逗号统统归进符号那一类,按0.70折算,而它们每一个都是实打实的1个token。日志、报表、订单数据这类内容里分隔符密度很高,估算就会往低了走。我那段混着订单号、IP和耗时的样本,工具给36,真实53,少报了32.1%。 ## 顺手一条反直觉的:加空格反而更便宜 很多人压提示词的时候会顺手把空格删掉,觉得字符少了就是省了。实测正好相反: - token counting带空格,2个token - tokencounting去掉空格,4个token - token_counting用下划线,3个token - token-counting用连字符,3个token 因为空格是被并进后一个词里的, counting连着前面那个空格正好是词表里的一个完整条目;一旦粘在一起,分词器不认识这个组合,只能硬拆成四段。省下1个字符,多付2个token,这笔账划不来。 ## 哪几类字符是它算不准的重灾区? 五类字符里,最容易被忽略的是那个叫“符号”的兜底类。它不是垃圾桶,里面装的恰恰是中文写作最常用的那批字符。 ## 全角标点:中文正文里最密集的非汉字 工具的汉字正则覆盖四个区段:常用汉字、扩展A、日文假名、谚文音节。全角标点一个都不在里面——逗号在U+FF0C,句号在U+3002,顿号、分号、冒号、问号、感叹号、书名号、全角括号全部落到符号那一类,按0.70折算。 而实测下来,这些标点在两种词表里每一个都是整整1个token,一个不多一个不少。我把12个常用中文标点连着写,工具算9,cl100k实际12。 这里有个小小的讽刺:工具自带示例的提示词里,第五条要求写的是“中文与英文数字之间不加空格,标点使用全角”。它教用户多用全角标点,而它自己把全角标点按七折收。 ## emoji:一个字符被数成两个符号 前面提过字符总数用的是UTF-16码元。MDN那份文档说得很直白:JavaScript用UTF-16编码,每个Unicode字符可能占一个或两个码元,所以长度属性返回的值不一定等于实际的字符数;文档还专门点名了三类需要留神的内容——emoji、数学符号,以及冷僻的汉字。 落到这个工具上就是:一个火箭emoji占2个码元,两个都不匹配汉字正则,于是变成2个符号,中间档算出1.4个token,取整1。真实是多少?cl100k要3个,o200k要2个。 组合emoji更夸张。那个由三个人加两个零宽连接符拼起来的一家三口,UTF-16长度是8,工具算6个token,cl100k实际要13个。少报了一半还多。 ## 冷僻字与扩展区:正则内外都不准 MDN点名的第三类更有意思,因为它在这个工具里有两种不同的坏法。 字符 | 在汉字正则内 | 工具算 | cl100k实际 | 龘 | 是 | 1 | 2 | 䶮(扩展A) | 是 | 1 | 3 | 𠮷(扩展B) | 否 | 1 | 4 | 前两个在正则里,按每字1.25算,取整还是1,实际要2到3个。第三个在正则外——扩展B区的字是代理对,两个码元,正则的四个区段都是基本多文种平面内的范围,够不着——于是它被当成2个符号,算出1.4取整1,实际要4个。 常用汉字之所以只要1个token,是因为词表里给它们留了位置;冷僻字没这个待遇,只能按UTF-8的字节一个个拼,三字节的字就是3个token起。做古籍、姓名库、生僻商品名这类内容的,这一栏的误差会明显放大。 ## 这些加起来影响有多大 说完误差方向,得给个量级,不然容易被当成鸡蛋里挑骨头。在那120篇中文长文里,符号这一项整体是把估算往低了拉的,贡献是负9.7%——它部分抵消了汉字那一项的高估。 换句话说,在常规中文内容上,这几个坑互相打了个折。真正会露出来的是特殊形态:emoji密集的社媒文案、生僻字多的名录、点和冒号密集的日志。这些内容用它估,得心里有数。 ## 检测到代码特征这个开关按什么判? 第一节留了个线索:那个乘1.18的开关。现在把它拆开。 ## 它认的是一个语言家族,不是代码 那组正则里的关键词是function、箭头符号、const、import、行尾分号或花括号、尖括号标签。这几样凑在一起,画像非常清楚:它认的是JavaScript这一系。 我拿十二种常见片段各跑了一遍: 语言 | 是否触发 | 中间档相对cl100k | JavaScript | 触发 | +21% | CSS | 触发 | +14% | Go | 触发 | 0% | Rust | 触发 | -17% | JSON | 触发 | +64% | Python(含import) | 触发 | +8% | Python(不含import) | 不触发 | -12% | SQL | 不触发 | +26% | Shell | 不触发 | -31% | YAML | 不触发 | -19% | Markdown表格 | 不触发 | -4% | 同一段Python代码,加一行import就触发,去掉那行就不触发。SQL、Shell、YAML这三种在运维和数据场景里最常见的形态,全部漏网。 ## 更要紧的是,触发跟准不准没什么关系 看上表第三列:Go触发了,偏差正好是0;Rust触发了,反而还低估17%;JSON触发了,偏差冲到 +64%。而Shell没触发,低估了31%——它才是最需要上调的那一个。 JSON那一格最能说明问题。上调之前中间档是15,真实11,已经高估39%;上调之后变成18,高估变成64%。这个开关在实测的十二种形态里,没有一次把误差改小到值得。原因也不难理解:符号密度高确实会让token变多,但那个影响已经体现在符号计数本身了,再整篇乘一次等于收了两遍。 ## 反过来,中文里提一句就中招 假阳性这一侧更好复现。以下每一句都是纯中文,每一句都会让整篇估算上调18%: - 这个function的作用是把中文切成词。 - 流程是:抓取 => 清洗 => 入库。 - 这里的const值写死在了页面里。 - 把词表import进来要几兆。 - 在

标签里写正文。 写技术类内容的人躲不开这几个词。我在站里那120篇中扫了一遍,有6篇命中,全是工具教程类的文章,正文里引了代码片段——这几篇属于该上调的。但只要在一篇纯策略文里提一句“流程是抓取到清洗到入库”,并写成箭头,整篇的账就被抬高了一档。 ## 窗口占用条为什么和它自己的说明打架? 前面聊的都是估得准不准。这一节的问题不一样:它算得对不对。 ## 说明书第二节写得很清楚 工具的使用说明第二节第一句是:“窗口大小是输入加输出的总额度,不是只算输入。”下面还建议留三成余量,理由是模型回复、多轮历史、系统提示词、工具定义都挤在同一个窗口里。 这段话没有任何问题。有问题的是它下面那五根进度条。 ## 把输出改到7000,条子纹丝不动 我在页面里做了个直接的测试。先点“加载示例”跑一次,8K窗口那一格显示4.2%,绿色。这时候底下的“预计输出token”填的是默认值800。 然后我把那个数字改成7000,触发它的重算事件。成本面板立刻跟着变了,而8K窗口那一格还是4.2%,一动没动。 按它自己说明书里的口径算一下:输入348加输出7000,一共7348,占8192的89.7%——早该进橙色警告区了。但页面上是绿的。 那个输出数字就在同一屏往下滚三厘米的地方,它已经拿去算钱了,只是没拿去算窗口。像是同一个人管着两个抽屉,抽屉之间不通气。 ## 成本面板也少了半张脸 顺着成本这一块再看,还有三处。 第一,估算给了三档区间,还专门写了一句“把这个区间当作规划的余量比盯着某个具体数字更稳妥”,可成本面板只用中间那一档。拿一份5670字的中文测算:按下界算1000次是28.28,按中间档32.37,按上界38.16——区间两端差了9.88,占中间值的31%,而面板上只有32.37这一个数。 第二,四个输入框都写了最小值0,但那是HTML属性,不走表单提交就不生效。我把“预计输出token”填成负5000,面板老老实实算出单次输出成本负0.075、一千次合计负73.96。负数成本这东西,报给老板大概能提前下班。 第三,“调用次数”填0,面板显示的是“1次合计”。代码里那个取整之后接了个默认值1,0被当成空值换掉了,页面没有任何提示。 ## 照着它的红灯去拆内容,会不会白拆? 前面两节各自成立,合起来会产生一个更实际的后果:窗口那五根条子给出的绿黄红判定,可能和真实情况对不上。 ## 十一档里有四档判反了 我用同一段中文按不同长度重复,从1890字到11340字排了十一档,每一档比两个判定:工具怎么说,按o200k加上800输出实际是多少。 中文字数 | 工具算8K占用 | 工具判定 | 实际判定 | 4725 | 69.1% | 绿 | 绿 | 5670 | 82.9% | 橙色警告 | 绿 | 6615 | 96.7% | 橙色警告 | 橙色警告 | 7560 | 110.5% | 红色超出 | 橙色警告 | 8505 | 124.3% | 红色超出 | 橙色警告 | 9450 | 138.2% | 红色超出 | 橙色警告 | 10395 | 152.0% | 红色超出 | 红色超出 | 十一档里四档不一致,而且全部是同一个方向:工具比实际紧张。 ## 两种翻转,代价不一样 5670字那一档是虚惊:工具报橙色,你以为快撑爆了,实际才用掉六成三。代价是你会去做一次没必要的精简。 7560到9450那三档更贵。工具报“超出”,你的第一反应是把内容切开分两次调用,或者换一个窗口更大的模型。而实际上o200k口径下这些内容加上输出还有一到两成的余量,一次就能跑完。多切一刀就是多一次调用、多一份系统提示词,还多一道把结果拼回去的活儿。 要是这个判断被写进了自动化流程里——比如按窗口占用自动决定走不走分块检索——那就不是多花点钱的事了,是整条链路的行为被一个偏了五成的估算带着走。做检索增强的时候这一层尤其要注意,切不切、切多大,取决于的是真实token数,不是估算值;关于切块本身有多少种切法、每种切出来差多少,RAG分块预览器那篇 (https://zhangwenbao.com/rag-chunk-preview-strategy-overlap-selfcontained-scoring-guide.html)拆得更细。 ## 放到真实规模上是多少钱 抽象的百分比不好感受,换个具体场景:把站里这120篇长文当成一批要改写的输入,一次跑完。 工具面板给的输入token合计是1941630。cl100k实际1815944,o200k实际1278968。按每百万3块的输入单价折:面板5.82,cl100k口径5.45,o200k口径3.84。 只看这个数字不算多,但注意比例:按o200k结算,面板把输入预算多报了34%。120篇是小批量,把它乘到几万篇的量级,或者用在一个需要向上申请预算的项目里,三分之一的偏差就不是小数了——尤其是这个偏差还是单向的,永远往贵了报。 好消息是它偏得很稳定,这就意味着可以修。 ## 这工具到底该怎么用才不亏? 写到这儿该给操作了。前面挑出来的问题没有一条否定它的价值——它解决的是“我完全没有量的概念”这个真问题,而这个问题绝大多数团队还真没解决。只是用法得调一调。 ## 先量级,后精确,中间隔一道修正 把它当成三步流程里的第一步,而不是唯一一步: - 拿它过一遍,只看数量级。是几千还是几万,会不会撑爆窗口,这一层它给得又快又稳。 - 按你实际要用的模型乘一个系数,把口径拉回来。系数下面就给。 - 真要签预算或者写进自动化,去调官方的计数接口。这一步只在决策要花钱的时候做。 这个顺序的好处是,前两步花不了一分钟,第三步只在必要时才做。反过来把第三步提前,等于每改一版提示词就要跑一次接口,得不偿失。 如果你的用量集中在订阅制的编程助手上,这三步之外还要看清楚订阅档位与接口计费的分界在哪儿——Claude Code到底要花多少钱 (https://zhangwenbao.com/claude-code-pricing-guide.html)那篇把Pro、Max、Team和接口四种口径拆开算过一遍,跟本文的估算这一层刚好互补。日常想随时盯住上下文用掉多少,也可以在终端里挂一个实时显示上下文与Token占用的状态栏 (https://zhangwenbao.com/claude-hud-guide.html),比每次手动粘进估算器省事。 ## 两个修正系数,直接拿去用 拿那120篇算的比值,中位数是这样的: - 工具的中间档 乘0.94,约等于cl100k口径(GPT-4、GPT-3.5那一代) - 工具的中间档 乘0.66,约等于o200k口径(GPT-4o那一代) 两个数字都有离散:前者在0.75到1.01之间,后者在0.55到0.74之间。所以别把它当精确换算,当成一次量纲对齐就行——把一个稳定偏高五成的数拉回真实附近,比继续按原样报预算强得多。 这两个系数是在中文为主的长文上算的。纯英文内容要往下调得更多,因为前面看到英文那一栏工具高估得更狠;代码密集的内容如果触发了那个1.18的开关,也要额外往下再折一点。 ## 要精确,就去问模型本人 Anthropic的接口里有一个专门的计数端点,路径是messages下的count_tokens,接受和发消息一模一样的结构——系统提示词、工具定义、图片、PDF都能算进去。返回的就是这次请求的输入token数。 两个细节值得知道。一是这个端点免费,只按用量层级限每分钟请求数,起步档就有2000次每分钟,跟发消息的限额是分开算的。二是官方把它的结果称为估算,说实际创建消息时用的token数可能有小幅出入,因为里面可能包含系统自动加的token——但那部分不计费。 另外补一句前面提过的:如果你用的是Claude 4.7之后的模型,官方明确提醒不要拿更早模型上量到的数字来估成本和窗口,因为那一代换了分词器,同样的文本大约多三成。要比就用这个端点把同一份请求按两个模型各数一次,直接对比两个返回值。 ## 顺带一个能省钱的写法:写得越常规越便宜 这一条是我在拆分词边界的时候顺手测出来的,跟工具本身没关系,但对天天写提示词的人更有用。 同样19个汉字,我写了两个意思几乎一样的版本,用o200k数: - “搜索引擎优化的核心是内容质量和用户体验”——13个token,每字0.684 - “搜寻引擎优选之要旨系文稿品第暨用者感受”——20个token,每字1.053 字数一样,语言一样,词表一样,价格差54%。因为第一句里的“搜索”“优化”“核心”“内容”“质量”“用户”“体验”在词表里都是现成的整块,第二句里那些生造的书面语只能一个字一个字地拼。 推论很直接:提示词写大白话比写文绉绉的公文体便宜,而且大白话模型还理解得更好,这是少见的两头都占的事。想省钱先别急着删字,先把生僻表达换成常用说法。日常用编程助手时还有一批更琐碎的省法,十个常见坑里的省Token部分 (https://zhangwenbao.com/claude-code-mistakes.html)整理过一份。 ## 真正的省钱杠杆,多半不在输入这一侧 最后说个容易搞错优先级的地方。用工具的默认配置跑它自带的示例:输入348个token、输出800个,输入单价3、输出单价15。单次输入成本0.00104,单次输出成本0.01200——输出那一头是输入的11.5倍。 换句话说,在这个配置下就算你把提示词砍掉一半,省下的也不到总成本的4%。工具说明里“约束输出长度通常比压缩输入更有效”这句话是对的,而且比它写的还要更对。 比这更狠的是另外两条。重复调用同一段长系统提示词的,走提示词缓存;不要求实时返回的批量任务,走批量接口——Anthropic官方文档写的是成本降低50%,大多数批次不到一小时就跑完。这两条的效果,往往比在提示词里抠几百个token大得多。想把这类账系统性算清楚的,可以顺着AI团队Token失控那笔账 (https://zhangwenbao.com/ai-team-token-rate-limit-cost-control-aggregation-review.html)再往下看一层,那篇讲的是聚合服务和自建之间怎么权衡。 ## 什么时候它依然是最好的选择 说了这么多,得把它的长处也落到实处。 一是快。我喂了一份7.56万字符的中文进去,15毫秒出结果;再喂56.7万字符,91毫秒。这个量级的文本,任何需要网络往返的方案都比不了。 二是不上传。竞品分析的资料、还没发布的产品文案、客户给的原始需求,这些东西粘进一个会往服务器发请求的页面,本身就是个风险。纯前端计算这一点在商业场景里的价值,比多准五个百分点重要。 三是它把窗口占用和成本测算摆在了同一屏。虽然那两块各有前面说的毛病,但“一份内容同时看量、看窗口、看钱”这个信息组织方式是对的,比开三个页面分别算强。想顺手看看还有哪些同类工具,全部免费工具那一页 (https://zhangwenbao.com/tools/)都在。 ⚡ 动手试试:Token估算与成本测算 粘一段内容就出三档token估算、五种上下文窗口的占用比例,以及按你自己填的单价算出来的调用成本。单价不内置,永远不会过时。全部在浏览器里算,内容不上传。 保哥自研免费在线工具,浏览器打开就能用。 → 打开Token估算与成本测算 (https://zhangwenbao.com/tools/token-counter.php) ## 常见问题解答 ## 这个工具估出来的数,我到底该不该信? 看你用的是哪一代模型。拿站内120篇中文长文实测,它的中间档相对cl100k_base(GPT-4、GPT-3.5那一代)的中位偏差只有6.2%,95%的文章落在正负15%以内,承诺完全兑现。但换成o200k_base(GPT-4o那一代),中位偏差变成 +51.2%,120篇里没有一篇落进它给的上下界。实用做法是:先用它看数量级,再按模型乘一个系数——cl100k口径乘0.94,o200k口径乘0.66。 ## 它的下界写着对中文更友好的新词表,为什么反而够不着新词表? 因为下界的汉字系数定在了每字1.00,而o200k实测中位是0.897,整个区间的下沿比目标高了一档。有意思的是它的文字描述是对的——说明里写“新词表比早期词表少三成左右”,中间档1.25少三成正好是0.875,很接近实测值。误差归因下来,工具比o200k多报的部分有107.2%来自汉字这一项,其余四类基本互相抵消。 ## 新一代分词器是不是一定更省token? 不是,这正是工具那个区间失效的根本原因。从cl100k到o200k,中文确实降了29.3%,跟工具说明里写的“少三成”对得上。但Anthropic的官方文档写着,Claude 4.7及之后的模型换了新分词器,同样的输入文本产生的token数比早先的模型大约多三成,还专门提醒不要拿旧模型量到的数字估成本和窗口。同一年里两个方向都发生过,所以“新的更省”只能当成某一次换代的事实,不能当规律。 ## 窗口占用那几根条子为什么不算输出token? 代码里那几根条子只用了输入的估算值,页面下方“预计输出token”那个输入框没有参与计算。实测把它从800改到7000,成本面板立刻变了,8K窗口那一格还是4.2%纹丝不动——按输入加输出算应该是89.7%,早该进警告区。而工具自己的使用说明第二节第一句就写着窗口是输入加输出的总额度。用的时候把输出数自己加上去再判断。 ## 它说我的内容超出窗口了,要不要马上拆开? 先别急。我按不同长度排了十一档做对照,有四档的判定和实际对不上,而且全是同一个方向——工具比实际紧张。7560到9450字那三档,工具报红色超出,按o200k口径加上输出实际还有一到两成余量,一次就能跑完。多切一刀意味着多一次调用、多一份系统提示词,还多一道拼接。建议把工具的估算乘0.66,再加上你预计的输出token,然后自己跟窗口大小比一次。 ## 检测到代码特征这个提示,是按什么判的? 它匹配的是一组JavaScript家族的特征:function、箭头符号、const、import、行尾花括号或分号、尖括号标签。实测十二种片段,SQL、Shell、YAML、Markdown表格以及不含import的Python全部漏网;而纯中文句子里只要出现这几个词,比如写一句“这里的const值写死在了页面里”,整篇也会被上调18%。更关键的是,触发与否跟准不准没什么关系——JSON触发之后偏差从 +39% 被推到 +64%。 ## 为什么中文标点和emoji的估算偏差特别大? 因为它们都落进了那个叫“符号”的兜底类,按每个0.70折算。而实测中文全角标点每一个都是整整1个token,逗号、句号、顿号、书名号无一例外。emoji更绕:字符总数用的是UTF-16码元,一个火箭占2个码元,被当成2个符号算出1个token,实际cl100k要3个;那个一家三口的组合emoji工具算6个,实际13个。扩展B区的冷僻汉字同理,𠮷被算成1个,实际要4个。 ## 有没有办法让同样的内容少花点钱? 有三条,效果依次递增。第一条是改写法:同样19个汉字,用常用词组写是13个token,换成生造的书面语变成20个,差54%——写大白话比写公文体便宜,而且模型还理解得更好。第二条是约束输出长度:按工具默认配置,输出那一头的成本是输入的11.5倍,砍一半提示词省下的不到总额的4%。第三条是走缓存和批量接口,Anthropic官方文档写的批量处理是成本降低50%,多数批次一小时内完成。 ## 权威参考资料 ## MCP还有必要装吗?CLI加Skill已经接管了Agent工具链的主干 - URL:https://zhangwenbao.com/cli-skill-vs-mcp-agent-toolchain.html - 分类:AI编程与工具链 - 发布:2026-07-23 | 更新:2026-07-30 - 摘要:MCP还有必要装吗?核对官方原文拆穿被引错的词元数字,讲清三笔架构开销、Skill为什么才是真正的替代层、微软让MCP分发技能的反转,以及五条迁移判据与测量方法。 - 关键词:MCP,上下文工程,Agent开发,Skills,扩展机制 > **TLDR**:摘要:说MCP被抛弃的那批文章,引的是同一个数字,而那个数字被读错了。GitHub官方原话是合并Projects工具集省下约两万三千词元、降幅五成,不是整个服务从五万降到两万三;由此推算出来的两百五十倍差距,是二次加工的产物。真实情况更有意思:Anthropic自己给的解法不是弃用协议,而是让模型写代码去调它,一个案例把十五万词元压到两千;微软则把Skill放上层、MCP压下层,还让MCP服务反过来对外公布Skill。这篇把三笔账、四种误读和一套可执行的迁移判据摆清楚。 > 摘要:说MCP被抛弃的那批文章,引的是同一个数字,而那个数字被读错了。GitHub官方原话是合并Projects工具集省下约两万三千词元、降幅五成,不是整个服务从五万降到两万三;由此推算出来的两百五十倍差距,是二次加工的产物。真实情况更有意思:Anthropic自己给的解法不是弃用协议,而是让模型写代码去调它,一个案例把十五万词元压到两千;微软则把Skill放上层、MCP压下层,还让MCP服务反过来对外公布Skill。这篇把三笔账、四种误读和一套可执行的迁移判据摆清楚。 先说一件容易被跳过的小事。GitHub在2026年1月28日的更新日志里写了一句话 (https://github.blog/changelog/2026-01-28-github-mcp-server-new-projects-tools-oauth-scope-filtering-and-new-features/):他们把Projects这一组工具合并成三个函数,因此减少了约两万三千词元的用量,降幅五成。 这句话被引用了成百上千次,引着引着就变了形——变成了“GitHub官方MCP服务光是描述自己的工具就吃掉五万词元,后来砍到两万三”。再往下一步,有人拿这个五万去除以一份技能文件的两百词元,得出两百五十倍的差距,这个倍数至今还在中文技术圈里流传。 问题是,那个五成的基数是Projects这一个工具组,不是整台服务器。官方那句话从头到尾没有给出全量工具定义的总词元数。整条推论链的第一块砖,是读者自己垫上去的。 纠这个错不是为了替MCP辩护。恰恰相反:真实的证据比编出来的更有说服力,而且指向的结论也更精确——MCP没有死,它被从“默认集成方式”这个位置上挪走了,挪它的不是CLI,是Skill那一层。下面把账重新算一遍。 ## 一个被引错的数字,是怎么滚成共识的? 值得花一节讲这个,因为同样的滚雪球每个月都在发生,而且下一个雪球你多半也拦不住——除非手上有一套拆的办法。 这颗雪球的成长路径大概是四步。第一步,官方发一句带百分比的话,句子里有个隐含的基数。第二步,二手报道把百分比留下、把基数丢掉,写成“整台服务从五万降到两万三”。第三步,有人拿这个凭空出现的五万,去除以另一个来源、另一种口径的两百,得出两百五十倍。第四步,这个倍数因为好记、好转发,反过来成了论证的前提。 四步走完,原始那句话里唯一可核实的东西——降幅五成——反而没人提了。 ## 三个问题就能把这类数字拆开 下次再看到某个惊人的倍数,按顺序问三句话,基本能筛掉九成的水分。 第一句,分子和分母是同一次测量吗?这里显然不是:五万来自一台服务的工具定义,两百来自一份技能文件的元数据,两者既不同来源也不同口径。 第二句,百分比的基数写清楚了没有?官方原文里那个五成,基数是Projects这一组工具,不是全部工具。基数一换,结论就换。 第三句,这个数字在你自己的环境里可测吗?这条最狠。工具定义占多少词元,你自己翻一次会话日志就知道,根本不需要引用任何人。凡是能在自己机器上十分钟测出来的东西,就别引二手数字,尤其别引带倍数的二手数字。 这套拆法不只对协议之争有用。AI这个领域每周都在生产“提升X倍”“节省Y成”的句子,能自己动手测的人和只会转发的人,判断力的差距会越拉越大。 ## MCP到底贵在哪,贵的是哪一部分? 2025年大半年,MCP被包装成Agent时代的通用接口:一个协议连接所有工具和所有模型。这个故事能卖出去,因为它解决的是2024年的真问题——那时候模型不太会用工具,标准化的结构描述确实帮了大忙。 到2026年,问题反转了。模型已经很会用工具,付不起的是描述工具的方式。这笔成本不是一笔,是三笔,而且互相叠加。 ## 第一笔:词元房租,每个会话预收一次 MCP的设计是把工具目录预先灌进模型上下文。动态发现要求模型先知道有什么可用,这不是缺陷,是设计本身;但它同时就是税。 扎心的不是绝对值,是收费方式:进门先交,交完这次会话可能一条相关工具都不会调。一份按需加载的技能文件则是触发才读,不触发就一个词元都不花。 有一组被反复引用的社区实测:同时挂三台服务器,工具定义在二十万词元的窗口里占掉了十四万三,也就是七成多。这个数字来自个人配置而非官方基准,具体多少取决于你挂了什么,但量级上没人反驳过。GitHub自己也在文档里提供了按工具组开关的参数,理由写得很直白——只启用你需要的工具组,可以帮助模型做工具选择,同时减小上下文体积 (https://github.com/github/github-mcp-server/blob/main/docs/server-configuration.md)。厂商愿意在文档里教你怎么少装,本身就说明这笔开销是真的。 更要命的是这笔房租的计价方式跟你的实际用量脱钩。一台服务挂上去,它的定义在每一轮对话里都要重新过一遍模型;你这次会话是在改一段CSS还是在查订单,它一视同仁地收。用得越少的服务,单位价值越差,而人最容易忘掉的恰恰是那些用得少的服务。 ## 第二笔:模型实打实变笨 上下文成本有一层比账单更疼的二阶伤害。每一千词元的工具描述,就是模型少一千词元的注意力放在你真正的问题上;工具列表越长,选错工具的概率越高。 这不是玄学,是可测量的。同一个任务,把无关工具组关掉再跑一遍,你会看到调用路径变短、绕路变少。注意力是Agent系统里最稀缺的资源,而工具目录把它花在了管道上。 这里有个容易被忽略的机制:工具选错之后的代价不是一次性的。选错工具会返回一个不对路的结果,这个结果又留在上下文里,成为下一轮推理的依据。一次糟糕的工具选择会污染后面所有轮次,而不是被简单地重试掉。这就是为什么把工具目录砍窄,往往比调提示词见效更快。 验证方法很简单,不用信任何人:把同一个任务在两种配置下各跑三遍,一次挂满,一次只留必需的那一组,对比总词元数、工具调用次数和最终是否一次做对。三组数据出来,该关哪些就一目了然了。 ## 第三笔:逼模型说外语 这一笔最有意思,因为它不是工程问题,是语言学问题。 大模型的训练语料里装着几十亿行shell命令和它们的输出:问答站、代码仓库的问题区、持续集成日志、配置文件、教程。Agent敲一条命令行的时候,它在做一件见过几百万次的事,连报错长什么样、人类怎么排错都见过。 调一个MCP工具时,它在照着三十秒前才第一次出现在自己上下文里的结构描述干活。一边是母语,一边是趴在工作台上现翻说明书。让模型用命令行,不是在教它新技能,是在给它已有的技能让路。 母语还自带一套工具箱。输出可以用管道预过滤,只有相关的那几行进上下文;报错是它见过一百万次的纯文本;调试就是把命令原样粘进自己的终端,亲眼看它怎么挂。MCP出错时你在翻别人服务的日志,命令行出错时命令本身就是复现步骤。 管道这一条尤其被低估。一次接口调用可能返回几千行结构化数据,全量进上下文既贵又稀释注意力;同样的活儿在命令行里是一次调用接两三个过滤器,回来五行。过滤发生在模型外面,而不是让模型读完再自己挑,这是两种成本结构。 这也解释了一个现象:很多人第一次把某台服务换成命令行时,体感提升远大于省下来的词元数。因为省词元只是账面收益,真正改变体感的是模型不再需要在一大坨返回值里翻找,一次就答对了。 ## 为什么Anthropic自己给的解法不是弃用协议? 如果说协议有原罪,最有资格宣判的应该是它的作者。而作者给的方案,恰恰不是让你卸载。 Anthropic在工程博客里承认了两件事:工具定义会撑爆上下文窗口,中间结果也要一路穿过模型再传给下一步。他们给的做法是把MCP服务当成代码接口而不是直接调用的工具 (https://www.anthropic.com/engineering/code-execution-with-mcp)——让Agent写一小段代码去调,用文件系统去发现有哪些工具、只加载真正要用的那几个定义,再在执行环境里把大结果过滤完才回传。 官方给的对照案例很硬:一条把云端表格数据同步进客户系统的流程,原来要十五万词元,改成代码执行之后是两千,节省98.7%。 这个方案该怎么读,决定了你会不会做错决策。它不是“协议不行”,而是协议不该直接贴着模型的上下文窗口用,中间需要垫一层代码。而一旦你接受要垫一层代码,那么这一层是用宿主语言写的脚本,还是用现成的命令行工具,就只剩下工程口味的差别了。这也是命令行路线能站住的真正原因——它就是那层代码最便宜的现成实现。 ## 站内运营的活儿卡在协议层,是什么手感? 大人物的观点不值钱,讲三个具体的卡点更实在。这三件事全是独立站运营里最平常的活,失败模式各不相同,但结局一样。 ## 第一种:它把你和你本来就有的东西隔开了 要抓自家站点的搜索表现数据。浏览器里天天登着后台,看起来最顺手的方案是让Agent直接开浏览器点进去。 结果服务起的是一个全新配置的浏览器实例:没有cookie,没有登录态。想着那就登录一次,自动化检测把登录流程拦了。改成接管你真实的浏览器,标签页定位又飘,点击落在了错误的页面上。 跟这层抽象搏斗四十分钟之后,换成几十行脚本直连已登录浏览器的调试端口,一次跑通。问题不在于那台服务做得差,而在于它在你和一个你本来就拥有的资源之间,砌了一堵隔离墙。 ## 第二种:它是别人家的商业模式 批量出图这条线原来走的是一个托管聚合服务,替你代理上游的生图接口。某天它停服了。不是变慢,不是降级,是没了,所有经过它的流程当场全灭。 修复方案是一百行出头的脚本直连上游接口,先按高分辨率出图再降采样成网页用的尺寸。比原来更快,还支持了代理层从没暴露过的参数,依赖只剩下环境里的一个密钥。 这段脚本现在已经活得比它替代的那层“基础设施”久了。原因很朴素:脚本的依赖清单是运行时加一个接口,托管服务的依赖清单里包含别人家公司的商业模式。 ## 第三种:往下挖一层,浏览器根本不该出场 第一种卡点之后退一步问自己:为什么要驱动浏览器?搜索表现和流量数据都有官方接口,都支持服务账号认证。 最终方案是一个用服务账号认证的无界面脚本,定时跑,数据落成本地文件让Agent直接读。没有浏览器,没有会过期的登录态,也没有中间层。这个教训可以推广:相当一部分服务包装的东西,往下挖一层本来就有可脚本化的接口。 三次失败,一个诊断:中间那一层要么是故障点,要么是会消失的依赖,而它下面那层——命令行、脚本、官方接口——永远可用。有个说法把这个性质讲得很准:服务断开时你从自动降级为手动,但流程知识还在。前提是流程知识写在你自己的文件里,而不是编码在别人的工具描述里。 ## 离场的那批人,究竟说了什么? 2026年一季度这波退潮和普通的社交媒体唱衰不一样,关键看是谁在退。但也正因为这些话被反复转述,误差累积得特别快。逐条对一遍原文,结论会温和不少,也准确不少。 流传的版本 | 原文实际是什么 | YC总裁公开宣布MCP已死 | 他说的是吃上下文、要手动开关、认证难用,然后半夜写了个命令行包装器;抱怨的是体验,不是判死刑 | Perplexity全面弃用MCP | 是内部去优先,且主要针对本地进程那种接法,回到接口与命令行;不等于对外主张全行业照办 | Sentry创始人说MCP服务没必要存在 | 原话是“许多MCP服务不需要存在”,他同时自己还常驻着两台服务、配十来个技能文件 | Anthropic承认协议失败 | 承认的是全量工具定义撑不住规模,给的解法是垫一层代码,不是弃用 | 最有代表性的是那条被引用最多的原帖 (https://x.com/garrytan/status/2031910564344262988):抱怨吃上下文、抱怨要来回开关、抱怨认证,然后花三十分钟撸了一个浏览器自动化的命令行包装器,结果团队告诉他别家早就做过一个了。这条帖子真正传达的信息是“现有集成方式的体验烂到值得我自己动手”,而不是“协议本身是错的”。 那位Sentry创始人的完整立场更值得抄:技能教你怎么做菜,协议提供让你做菜的器具。一个自己还在跑两台服务的人说“许多服务不需要存在”,这句话的重点在“许多”,不在“存在”。 为什么这类话特别容易被放大?因为“谁在退”这个框架本身就带传播增益。当初下注最重的人出来抱怨,比一百个旁观者点评更有戏剧性,于是转述者会本能地把语气往极端调——抱怨变成宣判,去优先变成弃用,许多变成全部。 读这类消息有个笨办法很管用:只看当事人自己现在还在用什么,不看他说了什么。说话是立场,配置是事实。上面这四条里,凡是能查到当事人现状的,现状都比言论温和得多。 ## 真正替代MCP的不是命令行,是Skill这一层 多数对比文章漏掉一个关键:光有命令行并没有掀翻什么。掀翻它的是命令行加一层知识文件。 技能文件写的是流程知识:跑哪些命令、什么顺序、边界情况怎么办、什么时候该停下来问人。它是写给模型看的作业指导书。技能文件该怎么组织、frontmatter有哪些字段可用 (https://zhangwenbao.com/claude-code-skill-patterns.html)是另一个话题,这里只谈它在架构里占的位置。 位置很清楚:Skill接管了协议的编排价值,命令行接管了它的执行价值,两头一夹,常规场景下协议就没剩下多少事了。 ## 工具描述和作业指导书,差的不是格式是体裁 为什么同样是给模型看的文字,一个要几万词元还讲不清,另一个几百词元就够?因为它们承载的东西根本不是一类。 工具描述回答的是“这个函数接受什么参数、返回什么结构”。它擅长表达接口,不擅长表达顺序、条件和禁忌。你没法在一个参数说明里写清楚“先查库存再改价格,改完必须回读确认,如果库存为零就停下来问人”。 作业指导书回答的是“遇到这类活该怎么办”。顺序、判断、边界、什么时候该停,全都是它的母语。2025年那批几万词元的工具定义,本质上是被压缩得很烂的作业指导书——用错了体裁,再多字数也说不明白。 换了体裁之后还白捡三个好处:改行为等于改一份文本再提交一次版本管理,反馈回路以分钟计;团队里不写代码的人也能读、能审、能提意见;出问题时你看到的是一份人话流程,不是一堆参数签名。 ## 国内的动向和硅谷同频,而且跑得更实 飞书在2026年3月底开源了官方命令行工具——注意,是命令行,不是又一台MCP服务。它用Go写成,MIT许可,覆盖日历、消息、文档、表格、多维表格、任务、邮件、会议等18个业务域,两百多条精选命令,把两千五百多个开放接口收在下面。 更说明问题的是配套形态:它内置了26个可直接安装的Agent技能,一条命令装进主流编程Agent。当一家头部协作平台选择用命令行加技能的形态对接Agent生态,而不是发一台服务器,这就不再是社区偏好,是厂商拿研发预算投的票。 顺手校准一个数字:早期报道普遍写的是11个业务域、19个技能,那是它刚开源时的规模;到2026年年中已经扩到18个域、26个技能,星标一万六千以上。引用开源项目的规格时,别把发布当天的快照当常量用。 ## 技能文件的代价也要摆出来 文字作业指导书不是代码,做不到百分之百确定性执行。模型会读漏一步、跳过一条护栏、在你要求照章办事的地方自作主张。 可行的硬规矩是:凡是必须精确的步骤,写成脚本让技能去调用;技能文件的文字只负责需要判断力的部分。判断归技能,精确归脚本。如果一个流程零容忍偏差、又完全不需要判断,那它根本不该是技能,该是一个定时任务。 ## 微软把这套东西落成了什么形状? 终局长什么样,目前最可信的预览来自微软,而且它给出的答案比“Skill在上、MCP在下”这个流行说法更精细。 他们的技能执行器由四个部件拼成 (https://devblogs.microsoft.com/foundry/dotnet-ai-skills-executor-azure-openai-mcp/):技能加载器从目录里发现并解析技能文件,把前置元数据和正文分开;模型服务负责对话与函数调用;协议客户端连接一台或多台MCP服务,发现它们的工具并路由执行请求;执行器本身负责跑那个Agent主循环。 技能文件在这里被解析成一个对象,带名称、描述、标签,正文整段作为指令。前置元数据里有两个字段特别值得抄:一个声明这条技能在什么文件模式下被激活,一个声明它期望用到哪些工具。 ## 真正的反转在这里 如果故事只到“Skill在上、MCP在下”,那还只是分层。微软后来又让MCP服务反过来对外公布技能 (https://devblogs.microsoft.com/agent-framework/discover-agent-skills-from-mcp-servers-in-net/):技能不再只能放在本地磁盘,也可以住在一台MCP服务上,服务通过一份索引文档把自己有哪些技能广播出来,框架再经由认证过的连接把技能正文取回来。 这一步把叙事整个掰了个方向。协议从“工具的传输层”变成了“知识的分发通道”——它不再只是Skill脚下的水管,也可以是Skill的货架。那些断言协议会被技能取代的文章,恰恰没料到两者能这么长。 对做独立站和外贸的团队,这一层的现实意义是:你未来要接的第三方能力,很可能不再以“装一台服务、灌几十个工具定义”的形式交付,而是以“订阅一份技能索引”的形式交付。选型时该问的不是对方有没有MCP服务,而是对方的能力以什么粒度、什么时机进你的上下文。 ## 为什么这个反转能成立,而不是又一次概念套壳 因为它把两件本来被混在一起的事分开了:能力的传输,和能力的说明书。 过去这两件事绑死在一起——你连上一台服务,它把工具描述一股脑塞给你,说明书就是传输的一部分,想要前者必须先吃下后者。分开之后,服务只在真正要执行的那一刻被调用,说明书按需取回,什么时候进上下文由你这边决定。 这一步对企业采购的意义比对个人开发者大。供应商可以继续维护它的服务和授权体系,而客户拿到的上下文开销从“每次会话固定支出”变成“按需支出”,两边的诉求第一次不冲突了。之前那种非此即彼的争论,很大程度上是因为没人把这两件事拆开谈。 顺带说一句选型上的提醒:看到某个平台同时提供服务与技能两种接法时,别默认技能一定更省。要看它的技能文件是不是真的按需加载、正文有多长、有没有把一整本手册塞进一个文件里。体裁对了不等于分量对了。 ## 什么情况下MCP仍然是更优解? 宣告某个技术已死的文章大多败在从不给对方摆事实。这里反过来说,而且理由是结构性的,不是怀旧。 - 没有shell,命令行论就不成立。网页版助手、移动端Agent、锁死的企业沙箱,很多根本摸不到命令行。对它们来说“直接跑一条命令就行”是一句没有意义的话,而基于HTTP的协议传输恰恰能进这些环境。这不是小众市场,大部分面向消费者的AI产品都在这个范畴里。 - 工具池真的高频变化时,动态发现是真价值。一个开放生态里的Agent,用户在运行时接入自己的第三方服务,这时带结构描述的协议就是比一个文件夹的文档强。2025年的错误不是造了这个协议,而是把动态发现当成了静态工具集的默认方案。 - 托管授权和审计边界。脚本连上你已登录的浏览器时,继承的是你的完整会话——方便,但也正是让安全团队睡不着的那种全量授权。远程服务配托管授权,给企业的是细粒度令牌、可撤销、每次调用留痕。 还要对命令行路线的另一面诚实:给Agent一个shell,等于给它任意命令执行的能力。威胁模型里一旦有提示词注入,受限的协议面反而变成了优点。这条张力怎么处理,和选服务时怎么辨认真实包名与授权范围 (https://zhangwenbao.com/best-mcp-servers-claude-code.html)是同一类工程判断。 还有一条跨平台的现实:技能文件里的命令通常默默假设了某一种操作系统,搬到另一套环境上要返工,而协议描述不挑系统。团队里有人用Mac有人用Windows的时候,这条比想象中更烦人。 注意这些赢面的共性:全都是环境约束——没shell、工具不稳定、凭证不能落地、跨系统。没有一条是“在命令行存在且能用的前提下,协议集成得更好”。这就是降级而非死亡的准确含义。 ## 混合式才是大多数团队最后落到的形状 把上面两组理由摞在一起,得到的不是二选一,而是分层:作业指导书在上,命令行和脚本是默认执行层,协议是前两层够不到时的兜底传输。 这个形状有个很实际的好处——它让替换成本降到了单层。上游服务停服,你换一条执行路径,作业指导书基本不动;模型换代,你换模型,作业指导书还是不动。把知识和传输解耦之后,传输就变成了大宗商品,而大宗商品是按成本竞争的。 ## 这周就能跑一遍的迁移判据 理论说完,给可以直接抄的作业。逐条核对你在跑的每一台服务: - 官方命令行或可脚本化接口已经存在。存在,就说明这台服务只是在你的Agent和它本可直达的东西之间做翻译。 - 你的Agent摸得到shell。摸得到,命令行论全额适用。 - 流程是可重复的。你翻来覆去调的就是那三五个工具、相似的顺序,却在为静态例行公事支付动态发现的价格。 - 词元开销远超使用率。服务加载了成千上万词元的定义,你只用其中五分之一的工具。翻一下会话日志,这条可测量。 - 服务需要人伺候。认证反复重配、常驻进程要管、动不动关了再开试试。 命中三条以上,就写一份技能文件指向命令行,断开服务,然后对比迁移前后每任务的词元数。技能文件通常只需要四段:用哪个工具、带真实输出的标准命令示例、失败模式和兜底、模型不许越过的硬边界。 ## 四段各该写什么,写多长 把这四段写成什么样,直接决定这份文件是资产还是负担。给一份可以照着填的骨架。 第一段:用哪个工具、怎么确认它装好了。写清楚工具名、版本要求,以及一条用来自检的命令。这一段的作用是让模型在开工前就知道环境对不对,而不是在第三步才因为找不到命令而乱猜。 第二段:带真实输出的标准命令示例。这是四段里最值钱的一段。别只写命令,要把它跑出来的真实输出粘一小段进去。模型见过输出长什么样,解析和判断的准确率会明显不一样;只给命令不给输出,等于让人闭着眼睛接球。 第三段:失败模式和兜底。列出你已经踩过的坑:认证过期长什么样、限流报什么错、哪个参数在某些情况下会静默失效。每条配一句该怎么办。这一段会随时间越写越长,也正是这份文件唯一会增值的部分。 第四段:硬边界。明确写出模型不许做的事——不许改这几个目录、不许在没确认前执行删除、不许把密钥打进日志。注意这一段是提示而不是强制,真正不能出错的边界还得靠权限配置兜底,文字只负责让它不去试。 总长度控制在一百行以内是个不错的目标。超过这个数,通常意味着你把三件事塞进了一份文件,该拆了。 ## 按迁移收益排个先后 一次全迁是最容易翻车的做法。按下面这张表挑,先动收益大风险小的那几台。 这类集成 | 先动还是后动 | 理由 | 代码托管、云平台、容器编排 | 最先动 | 官方命令行成熟到过分,模型对它们的命令熟到不用教 | 自家数据库与内部接口 | 早动 | 本来就是你自己的接口,中间那层纯粹是翻译 | 协作平台与办公套件 | 看有没有官方命令行 | 有就动,没有则等,别自己撸一个包装器长期维护 | 浏览器自动化 | 看用途 | 要登录态和真实会话就走脚本,要跨环境一致性就留着协议 | 需要托管授权的第三方服务 | 最后动或不动 | 凭证不落本地这件事,脚本路线暂时给不了同等保证 | 还有一类不该动:你一个月只用一两次、而且每次用法都不一样的服务。它的词元开销本来就摊得很薄,写一份技能文件的维护成本反而更高。迁移的收益跟使用频次成正比,跟用法的固定程度成正比,跟你能不能自己修它成正比。 ## 每任务词元到底怎么量才算数 迁移前后各测一遍,听起来简单,实际很容易测出一个自己骗自己的数字。三个常见陷阱。 第一,只测一次。同一个任务跑三遍,词元数波动两三成是常事,单次对比毫无意义。至少各跑三遍取中位数,任务本身也要固定,别一次查订单一次改标题。 第二,只测总量不看构成。总量降了,可能只是这次它少绕了一次弯,跟你的改动无关。要分开看两块:固定开销,也就是任务开始前上下文里已经躺着多少;变动开销,也就是执行过程中新增了多少。迁移主要削的是前者,如果前者没动,说明服务其实没断干净。 第三,忘了算技能文件本身。技能文件被触发之后也要进上下文,它不是免费的。真正的对比是“协议的固定开销”对“技能文件的触发开销加脚本调用的输出量”,而不是拿几万词元去比一份文件的元数据。把这一项算进去,倍数会缩水,但结论通常还是成立——只是从两百倍变成十几倍,而十几倍已经足够改变决策了。 ## 别省掉测量这一步,也别只测词元 词元下降是最好写的那个数字,但它未必是最重要的。保哥自己迁移时真正改变判断的,是故障恢复时间:脚本坏了,把命令一粘就看到报错;服务那条路坏的时候,人在翻别人家的日志。可调试性才是复利,而它从来不体现在账单上。 还有一个反直觉的观察值得记下来:把工具目录砍窄之后,模型的表现提升往往比省下来的钱更值钱。这一点在算token账时容易被漏掉——省下的两万词元是一次性的加法,而选对工具带来的路径缩短是每一轮都在生效的乘法。同样的账在浏览器这个具体场景里也成立,四种让模型看页面的方式各自要花多少词元 (https://zhangwenbao.com/claude-code-screenshot-mcp-frontend-debug.html)那篇里量过一遍,量级差异同样在两个数量级上。 ## 如果只能记一句 把立场写成一句可以被证伪的话:到2026年底,“怎么把Agent接到某个系统”的默认答案会变成“它有命令行吗”,只有这个问题答“没有”时,协议才出场。 今天新起一个Agent项目,从技能加命令行开始;撞上前面那三种环境约束的那天,再加服务,别提前。至于三种扩展机制彼此的边界怎么划,MCP、Skills与Hooks各管哪一段 (https://zhangwenbao.com/mcp-vs-skills-claude-code.html)那篇写得更细,可以当配套读。 ## 常见问题解答 ## MCP是不是已经死了,还值得学吗? 值得,但学的重点要换。它没死,是从默认集成方式降级成了几种可选传输之一。真正过时的是“遇到集成需求先想有没有现成服务”这个反射。现在该先问有没有命令行或可脚本化接口,没有再考虑协议。协议本身的概念——工具发现、结构化描述、托管授权——在没有shell的环境里依然是唯一解。 ## 那个流传很广的250倍差距到底靠不靠谱? 不靠谱,至少它的推导过程站不住。它把GitHub官方“合并Projects工具组省下约两万三千词元、降幅五成”读成了“整台服务从五万降到两万三”,再拿这个五万去除以技能文件的两百词元。官方从没公布过全量工具定义的总词元数。方向没错——按需加载确实比预先灌入省得多,但具体倍数请以你自己会话日志里的实测为准。 ## 技能文件不能保证百分之百执行,那关键流程怎么办? 把需要判断的部分留给技能文件,把不能出错的部分写成脚本让它调用。判断归技能,精确归脚本。如果一个流程既零容忍偏差又不需要任何判断,那它根本不该交给Agent,该做成定时任务。这个分工也是技能文件不至于越写越长的关键。 ## 给Agent开shell安全吗,会不会被提示词注入利用? 风险真实存在,给shell等于给任意命令执行能力。可行的收敛有三层:用允许与拒绝名单把可执行命令和可读写路径框死,把密钥放进环境变量而不是让它读凭证文件,在工具调用前挂一道钩子做硬拦截。反过来说,这也正是受限协议面在高危环境里的价值所在——不是所有场景都该用同一套接法。 ## 已经装了七八台服务,要不要一次全迁走? 不要。按迁移判据逐台评估,命中三条以上的先动,一次动一台,每台迁完记录每任务词元数和一次故障恢复的耗时。全量替换的风险在于你会同时失去多个可回退的参照,一旦出问题分不清是哪一处改动引起的。 ## 公司里有人坚持“协议是标准,不能不用”,怎么谈? 把话题从立场换成成本。请对方一起看两个可测量的东西:一是每个会话里工具定义占了多少词元、其中多少工具实际被调用过;二是最近三次这条集成出故障时,定位问题花了多久。这两个数字摆出来之后,讨论通常会自动从要不要标准,变成这条集成到底值不值那个价。 ## 权威参考资料 ## AI Agent卡在六成成功率不动,问题不在你正在调的那一层 - URL:https://zhangwenbao.com/agent-harness-layers-build-order.html - 分类:AI编程与工具链 - 发布:2026-07-23 | 更新:2026-07-30 - 摘要:六层Agent骨架是对的分类,却是错的施工顺序。评估与容错这两层撑起约八成稳定性,本文给出倒序施工法、三套拆法的正面对照、传感器该装哪几个,以及判断建不建的两根决策轴。 - 关键词:AI Agent,AI编程,上下文工程,Agent开发,工程方法论 > **TLDR**:摘要:把AI Agent架起来跑的那套外围系统,业界现在管它叫harness,中文可以叫骨架。流行的讲法是六层:上下文、工具、执行、记忆、评估、容错,然后按这个顺序建。这个顺序是反的。真实的贡献分布严重不平等——评估和容错这两层加起来撑住了大约八成的稳定性,而它们通常被排在最后,甚至被当成可有可无的打磨。更麻烦的是,业界至少有三套互不兼容的拆法,其中只有一套能回答“下一步该改哪儿”。这篇把三套摆在一起对照,给出倒着建的顺序、每一层的真实投入产出、传感器具体装哪些、以及三种情况下干脆别建。最后用两篇2026年6月的论文说明一件事:骨架不是永久护城河,它是一扇会关的窗。 > 摘要:把AI Agent架起来跑的那套外围系统,业界现在管它叫harness,中文可以叫骨架。流行的讲法是六层:上下文、工具、执行、记忆、评估、容错,然后按这个顺序建。这个顺序是反的。真实的贡献分布严重不平等——评估和容错这两层加起来撑住了大约八成的稳定性,而它们通常被排在最后,甚至被当成可有可无的打磨。更麻烦的是,业界至少有三套互不兼容的拆法,其中只有一套能回答“下一步该改哪儿”。这篇把三套摆在一起对照,给出倒着建的顺序、每一层的真实投入产出、传感器具体装哪些、以及三种情况下干脆别建。最后用两篇2026年6月的论文说明一件事:骨架不是永久护城河,它是一扇会关的窗。 先说一个让人不太舒服的观察。 过去大半年里,我见过的AI Agent项目卡住的位置高度一致:成功率停在六成到七成之间,怎么调都不动。团队的反应也高度一致——回头去改提示词,去精简那份规则文件,去换一个更贵的模型。三件事轮着做,一个月过去,成功率纹丝不动。 问题不在他们改的那些地方。问题是他们没有任何一个仪表能告诉他们,到底哪一层坏了。 ## 六层框架是对的分类,却是错的施工顺序 现在讲AI Agent工程,几乎所有的图都长一个样:上下文(模型看到什么)、工具(模型能做什么)、执行(步骤怎么串)、记忆与状态(跨轮次记什么)、评估与观测(到底做对没有)、约束与容错(出错了怎么办)。六个盒子从上往下排成一列,箭头依次往下指。 作为分类,这套框架没问题。它把散落在各处的实践收进了一个能讲清楚的范畴里,这本身就有价值——就像“测试夹具”这个词在上世纪九十年代末稳定下来之前,每家公司对测试运行器、Mock、断言库、集成框架都有自己的叫法,等这个伞形概念被接受之后,那些散落的实践才第一次作为一个整体被设计。 问题出在,几乎所有人都把这张图当成了施工顺序图。从上往下读,读出来的意思是:先做上下文,再做工具,再做执行,再做记忆,最后加评估和容错。 这正是大多数团队的实际做法,也正是他们卡在六七成好几个月的原因。 ## 这六层的权重为什么严重不平等? ## 前四层全是盲操作 把六层拆开看一件事:哪几层能产生反馈,哪几层不能。 第一层你调上下文,Agent的行为变了,然后呢?你没有任何依据判断它是变好了还是只是变了。第二层你加一个工具,你在假设它会被正确调用。第三层你画一套执行流程,你在假设每一步真的能跑通。第四层你上记忆,你在假设记住的那些东西确实有用。 这里顺带说一句工具那一层的常见误解:很多人以为工具越全越好,实际恰恰相反,工具目录的质量在于精选而不在于覆盖。站内那篇拆协议服务、技能与钩子三种扩展机制该怎么选 (https://zhangwenbao.com/mcp-vs-skills-claude-code.html)的文章讲的就是这个取舍,它和这里的第二层是同一件事的两种说法。 四层全是在假设。没有评估和容错,你是关着仪表盘在飞——你对前四层做的每一个改动都是赌博,赢了不知道为什么赢,输了不知道输在哪。 第五层和第六层不是叠在前四层之上的优化项,它们是让你能判断前四层有没有效的那副眼镜。没有这副眼镜,前四层的每一次调优都只是在换一种方式瞎。 ## 一张按周记录下来的贡献表 下面这组数据来自一条在生产环境连续跑了六十天的AI编程流水线,每周只加一层,逐周记录同一批真实任务上的成功率变化。 层 | 这一周具体做了什么 | 成功率提升 | 投入工时 | 一·上下文 | 精简规则文件,收紧文件选择器 | +12% | 2周 | 二·工具 | 从22个工具里砍掉14个,只留8个 | +8% | 1周 | 三·执行 | 计划、执行、复查三段式模板 | +6% | 1周 | 四·记忆 | 跨会话偏好、草稿区 | +3% | 2周 | 五·评估 | 单测风格的适应度函数、指标看板 | +22% | 1周 | 六·容错 | 验证关卡、带上下文重试、回滚 | +18% | 2周 | 这张表值得读两遍。第五层给出的提升接近第一层的两倍,工时只用了一半。第六层给出的提升是第四层的六倍,工时完全一样。 五和六加起来是40个百分点,其余四层加起来是29个百分点。这就是“八成稳定性来自后两层”这个说法的来源——不是修辞,是记账。 ## 一个被指标救回来的项目 保哥这两年帮客户看过不少这类项目,其中有一个印象特别深。 那是一家做户外装备的独立站,想用Agent自动给站内几百个产品页补结构化数据和内链。做了六周,通过率卡在62%。上下文调过两次,模型换过三次,工具加了两个新的,纹丝不动。团队已经在开会讨论要不要砍掉这个项目了。 后来花了一个下午加了第五层,就是一组极其朴素的检查:改完之后页面还能不能正常渲染、结构化数据能不能通过校验、站内链接有没有指向404、改动行数是不是异常的大、改动内容和需求描述的语义相似度够不够。加起来两百来行脚本,谈不上任何技术含量。 一天之内,看板告诉了他们一件此前完全看不见的事:四成的失败,是有效的改动打坏了一条不相关的内链。Agent确实在做正确的内容改动,但每跑三次就会把某篇相关文章的交叉引用弄挂。之前所有的上下文调优都没碰到这块,因为他们根本不知道有这个问题存在。 花两天修链接处理逻辑,通过率从62%跳到84%。上下文、工具、模型,一个都没动。 这里的教训不是“凡事都要测量”这种正确的废话。教训是:瓶颈几乎从来不在你以为的地方,而没有仪表你永远找不到它。六周的前三层调优没找到这个bug,两天的第五层找到了。 ## 倒着建:从容错和评估往回走 所以正确的顺序是反的。推荐的施工序列是六到一: - 先做容错。失败是默认状态,不是异常状态。如果Agent不能从一次错误的工具调用里恢复,上下文调得再漂亮也白搭。先把验证关卡和回滚路径接上去。 - 再做评估。不可衡量的东西不可改进。先建看板,再谈优化。 - 第三是工具。有了评估之后,工具是性价比最高的行为改造手段。工具选错是会复利的,但没有评估就改工具,改的是运气。 - 第四是上下文。上下文调优边际递减而且极易过度工程。有评估你才知道什么时候该停手。 - 第五是执行编排。显式的流程编排只在底层组件稳定之后才有回报。 - 记忆放最后,而且经常根本不做。这是过度建设最严重的一层,半小时以内的任务里它几乎从来不是瓶颈。 ## 今天下午就能试的三十分钟启动法 如果你手上正好有个卡住的Agent,下面这五步是一次性动作,不需要重构任何东西: - 挑出过去一周观察到的三个失败模式。就三个,不要贪多。 - 每个写一个二十行的校验器。不用聪明,硬编码判断完全可以:构建过了没?接口调用返回200没?输出符合结构没? - 接进Agent的循环。失败时把校验器的输出当成重试提示喂回去:“这次输出不合格,原因是X,按这个约束重来”。 - 跑二十次有代表性的任务,看哪个校验器触发得最频繁。 - 触发最频繁的那个,就是你的下一个bug。它在哪一层修就在哪一层修——但你不打开校验器,永远不知道它在哪一层。 整套倒序哲学就是这一个循环:容错、评估、诊断、修真正的瓶颈,然后重复。 如果你打算把这套循环真的写成代码而不是停在纸面上,站内那篇用官方软件开发工具包几行代码搭一个Agent的实战 (https://zhangwenbao.com/claude-agent-sdk-guide.html)可以当起点,校验器和重试提示都是接在那个循环的同一个位置上。 ## 三套互不兼容的拆法,只有一套能回答下一步改哪儿 这里要说一件很少被摆到台面上的事:所谓的“骨架”,业界至少有三套完全不同的拆法,而且它们互相对不上。 ## 第一套:按部件列清单 2026年3月10日,LangChain的Vivek Trivedy发了一篇拆解Agent骨架解剖结构的文章 (https://www.langchain.com/blog/the-anatomy-of-an-agent-harness),正式给出了那个后来传得最广的公式:Agent等于模型加骨架。文章列了十三个组件:系统提示、工具与技能与协议服务及其描述、随包提供的基础设施、编排逻辑、钩子与中间件、文件系统、命令行与代码执行、沙箱、记忆与检索工具、压缩、工具调用卸载、技能的渐进披露、规划与自校验。 这篇文章里最扎人的一句话不是公式,是它给出的一条观察:在Terminal-Bench 2.0的榜单上,同一个模型跑在不同骨架里,分数差得很远,而且官方自家工具里的成绩明显低于其他骨架。文中还提到,只改骨架、一行模型都不换,就能把排名从三十名开外推进前五。 ## 第二套:按层级排栈 就是本文开头那六层。它的优点是好教好记,缺点是前面已经说透了:它长得像施工顺序,但不是。 ## 第三套:按作用时机和确定性排2×2 2026年4月2日,Thoughtworks的Birgitta Böckeler在Martin Fowler的网站上发了一篇面向编码Agent使用者的骨架工程指南 (https://martinfowler.com/articles/harness-engineering.html),给了一套和前两套都不同的切法。 她先做了一个划分:内骨架是模型厂商随产品发给你的那一层(Agent软件开发工具包、编码工具本身),外骨架是你自己在上面搭的那一层(规则文件、协议服务、自定义技能)。这个划分立刻回答了一个预算问题——内骨架是白送的,你花的每一分钱都只该花在外骨架上。 然后是真正好用的那个2×2。横轴是作用时机: - 引导是前馈控制,预判Agent的行为,在它动手之前把它引到正确方向上。原文的说法是,引导“提高Agent第一次就做对的概率”。 - 传感器是反馈控制,在Agent动完手之后观察结果、让它自我修正。原文特别加了一句:传感器“在产生专门为大模型消费而优化的信号时,威力尤其大”。 纵轴是确定性: - 计算型——确定性、快,跑在CPU上。测试、静态检查、类型检查、结构分析,毫秒到秒级出结果,结果可靠。 - 推断型——语义分析、AI代码评审、大模型当裁判,跑在GPU上,更慢更贵,结果更不确定。 四个格子填满是这样:编码约定属于推断型前馈(规则文件、技能),代码批量改写属于计算型前馈(重构配方),结构测试属于计算型反馈(架构约束测试),评审指令属于推断型反馈(技能)。 ## 为什么第三套赢了 三套摆在一起,差别就出来了:前两套是按部件分类的,部件清单回答不了“下一步该改哪儿”;第三套是按作用机制分类的,所以它能。 拿一个具体故障走一遍。假设你的Agent总是漏掉某个必填字段。用十三个组件的清单,你会陷进“该改系统提示还是该加个工具还是该写个钩子”的三选一里,三个都说得通。用六层,你会在“这算上下文问题还是执行问题”里打转。用2×2,你只问两个问题:这是应该在它动手前拦住的,还是应该在它动完手后抓住的?这件事有没有确定性的判据?两个问题各一个答案,格子就定了,改哪儿也就定了。 ## 把2×2变成一套四步定位动作 光有分类还是抽象的,下面这四步是我把它用起来之后固化下来的动作,遇到任何一个反复出现的故障都可以照着走一遍。 - 先写下那句“它又干了什么”。要具体到能复述:不是“它写得不好”,而是“它把描述写到了一百八十个字”“它把内链指到了一个已删的分类页”。写不具体,说明你还没观察够,后面三步都没法做。 - 问第一个问题:这件事有没有确定性判据?字数、返回码、结构是否合法、必填字段在不在——有,就走计算型;只能靠“读起来像不像话”判断的,才走推断型。这一步最容易犯的错是把明明能数出来的东西交给裁判去感觉。 - 问第二个问题:拦在前面更划算,还是抓在后面更划算?判断依据是重做一次的代价。改一行描述,重做很便宜,那就抓在后面;跑一整套多语言生成再发现语种搞混了,重做很贵,那就拦在前面。 - 落格子,然后只改那一个格子。两个答案交出来就是一个格子,改动限定在那个格子里,改完把这个故障加进回归集。关键在于最后半句——不进回归集的修复,下个月一定会以另一种形式回来。 这套动作有个附带的好处:它逼你承认有些故障你其实无从判断。当第二步答不上来的时候,真正的问题不是选计算型还是推断型,而是你对“做对了”的定义还没写下来。这种情况比想象中常见,而且从来不会自己好转。 顺带说一句,Böckeler那篇还给了第三个维度:骨架按管的东西分三类——可维护性骨架(内部代码质量,目前最成熟)、架构适应度骨架(性能要求、可观测性标准)、行为骨架(功能正确性)。她对最后一类的原话是“我们还有很多事要做”。前面那个户外站的案例正好落在这一类:内链被打坏,不是代码质量问题,是行为正确性问题,而这恰好是三类里最不成熟的那一类。 ## 传感器具体该装哪几个? Böckeler在2026年5月27日又发了一篇专讲可维护性传感器的实操文章 (https://martinfowler.com/articles/sensors-for-coding-agents.html),把“该装什么”落到了具体工具上。这一节的信息密度很高,值得逐条抄下来。 ## 会话进行中就该跑的(全是计算型) 类型检查器、代码静态检查(配自定义输出格式,好让Agent自己纠)、静态安全扫描、依赖关系检查器(管目录结构和依赖方向)、带覆盖率的测试套件、增量变异测试、提交前的密钥泄露检查。 ## 接进流水线之后重跑的 同一批计算型传感器,在干净的基础设施上再跑一遍。这一步不是冗余,是因为本地环境的脏状态会让不少问题在会话里被掩盖过去。 ## 按更慢的周期跑的(推断型为主) 安全审阅、数据处理方式审阅、依赖新鲜度报告、模块化与耦合度审阅。前两个纯粹靠提示词跑,后两个是计算加推断的混合。 ## 三种接进循环的方式,两种不好使 这是全文最实用的一段。Böckeler试了三种接法: - 写进规则文件里让Agent自己去跑。她的原话是“相当不可靠”,还补了一句非常真实的抱怨——她得反反复复问Agent,为什么一次都没跑过那些检查。 - 挂钩子。文件修改时触发,或者接在提交前。可用,但她提醒要盯着别太吵。 - 写成自定义扩展。她的评价是“看起来挺有前途”,但用量还不够下结论。 第一条值得放大讲。把校验写进指令,和把校验写进机制,是两件事。写进指令的东西,模型会看心情执行;写进机制的东西,模型没得选。这条经验和站内那篇讲给循环工程装刹车的实战 (https://zhangwenbao.com/agent-loop-engineering-guardrails.html)是完全一致的结论——那篇里的掉沟检测之所以有效,正是因为它们是硬编码的计数器,不是写在提示词里的君子协定。 ## 阈值别设成二选一 还有一个特别聪明的设计细节:她配置静态检查的时候,没有把阈值做成“要么改要么加豁免注释”的二选一,而是允许Agent在它认为这次重构确实没必要的时候,把阈值稍微往上调一点。 这个设计的道理是:卡死的阈值只会训练出满屏的豁免注释,那时候你的传感器就等于关了。给一点可协商的空间,反而能让规则活着。 最后她自己留了一句警告,我觉得比前面所有工具清单都值钱:“我忍不住会想,这是不是也会带来一种虚假的安全感,一种质量的错觉。”传感器装满了,不等于质量真的上去了——它只等于你现在能看见一部分问题。 ## 没有验证面的话,从零怎么建一个? 前面反复说“先建验证面”,但很多人卡在这句话上:我做的就是内容,哪来的测试和类型检查? 这是个真问题,也是个被高估的问题。验证面不等于单元测试,它的定义宽得多——任何一个能在不看人脸色的前提下、对一次输出给出“合格/不合格”的判断,都是验证面。按这个定义,内容类的工作里能拿来当验证面的东西其实相当多,只是没人把它们收拢过。 ## 先捡那些能数出来的 成本最低、见效最快的一批,全都是纯计算:描述字数在不在区间内、标题里的核心词有没有被改写掉、标点是不是混进了半角、结构化数据能不能通过校验器、新加的内链是不是全部返回200、图片有没有alt、同一批稿子里有没有出现重复标题。每一条都是几行代码,加起来一个下午写得完。 别小看这一批。前面那个户外站的故事里,把项目从判死刑救回来的正是这一类里最不起眼的一条——内链是否404。 ## 再补那些能对照的 第二批稍微费一点事,但价值更高:这次输出和需求描述的语义相似度、这次输出和站内已有文章的重复度、这次改动的规模是不是异常(一个只该改标题的任务却动了三百行,那多半出事了)。这批是计算加推断的混合,也是最容易发现“做了但做错了”的一批。 ## 最后才是需要人的那一档 确实有一部分东西没法自动判断:这段话是不是像人写的,这个论断成不成立,这个例子有没有说服力。这一档的正确做法不是放弃,而是把它压缩成抽检——不是每篇都看,而是固定比例随机抽,抽到不合格就回头查前两批传感器为什么没拦住。抽检的价值不在抽检本身,在于它持续告诉你自动化那部分漏了什么。 保哥的经验是,这三档建完,大部分内容流水线的成功率就已经能从“大概能用”推到“可以放着跑”了,而这中间一行提示词都没改过。 ## 记忆层是最容易过度建设的一层 这一节单独拎出来,因为它是我见过最贵的一个坑。 记忆工程看起来很高级:向量库、语义索引、回合摘要、偏好学习,每一个词都很有面子。但这也是大多数团队砸进四到六周、最后只换回三个百分点的地方。 三条可以直接抄的规矩: - 任务每次半小时以内,跳过记忆。把偏好写死在一次性的系统提示里,更快、更便宜、还不会腐烂。 - 真需要跨会话状态,先用平文件或者最简单的键值存储。向量库和向量化在九成场景里都属于过早优化。 - 长任务里,干净交接比持久记忆强。与其让一个Agent在塞满噪音的上下文里挣扎,不如带着显式的状态摘要交给一个全新的Agent接力。持久上下文会累积噪音,而恢复本质上是一个“需要干净上下文”的问题——当前这个Agent已经背了太多包袱,它看不见自己的bug。 还有一个反直觉的地方:那份写给Agent看的规则文件,也属于容易过度建设的范畴。站内那篇讲规则文件不是写得越详细越好、以及最优行数在哪 (https://zhangwenbao.com/claudemd-minimalist-guide.html)的实证复盘,结论和这里完全同构——加得越多,能被真正执行的比例越低。 唯一的例外是真的需要在几周里学习特定用户模式的场景,比如一个要学会公司内部黑话的客服Agent。除此之外,记忆都该往后放。 关于上下文该怎么减不该怎么加,站内那篇讲上下文工程真正杠杆在删不在加的复盘 (https://zhangwenbao.com/context-engineering-subtraction-practice.html)写得更细,那组“五千词元打赢十万词元”的对照实验,本质上讲的也是同一件事。 ## 哪三种情况下干脆别建? 写到这里得踩一脚刹车。这篇不是在推销骨架工程,所以有必要把“不该建”的情形单独说清楚。 ## 情况一:你的任务是探索性的,不是生产性的 如果你在用Agent做头脑风暴、起草、摸可能性,那么骨架机制伤大于帮。裸跑保留了模型的发散空间。等你确实从“探索”跨过“可重复生产”那道门槛之后再建也不迟。 ## 情况二:你根本没有验证面 补一句和安全有关的:验证面缺失还有一个更贵的版本,就是把权限也一起省掉了。站内那篇从安全评审到权限边界与提示注入防御的实战 (https://zhangwenbao.com/claude-code-security.html)讲的那几道边界,本质上就是第六层里“不许它做什么”的那半边——这半边不属于优化项,属于底线。 第五层是承重层。如果你的任务没有测试、没有类型、没有静态检查、没有可观察的副作用、没有可对比的基线、没有人工抽检闭环——那你建不出有意义的骨架,就算你想建也建不出来,因为没有任何东西可以拿来验证。先建验证面,再建骨架。 这一条对内容和SEO类的Agent尤其致命。很多人上来就让Agent批量改标题、批量写描述,然后问为什么效果不稳定——因为整条链路上没有一个地方能判断“这次改得对不对”。站内那篇讲AI内容流水线为什么会被降权、三处人工节点该卡在哪里 (https://zhangwenbao.com/ai-content-pipeline-deindex-anti-spam-3-human-checkpoints.html)的复盘,讲的就是验证面缺失的代价。 ## 情况三:你坐在投资象限的橙色区 这个要展开说。 ## 建还是不建,该看哪两根轴? 把整件事压成一个决策面,两根轴就够:任务重复度有多高,以及距离下一代模型发布有多近。 | 当前模型代(近期无大版本) | 即将换代(30天内) | 高重复度 | 绿区·满投 六层全建,回报会复利。这是黄金窗口。 | 黄区·选择性缓投 只建第五、六层。跳过那些下一代模型会顺手吸收掉的补丁。 | 低重复度 | 红区·不投 裸跑。一次性脚本摊不平骨架成本。 | 橙区·设计期 不建实现。读发布说明、研究模式、磨判断力,等一个周期。 | 压成一条可以口算的启发式:未来六个月内同一条流水线会跑超过五十次,并且这个窗口里没有已知的模型换代——建。任一条件不成立,往下降一格。两条都不成立,直接放弃实现,把预算转到阅读上。 国内团队最常见的误判是坐在橙区却在按绿区做事:为一个两个月后就会过期的内部一次性工具,精雕细琢一套多层骨架。橙区的正确动作听起来有点残忍——别建,去读。把预算花在能深读发布说明、看懂能力差量、能复述骨架迁移模式的工程师身上。这种阅读能力是跨代复利的,那套精雕细琢的实现不是。 ## 它是一扇会关的窗,不是一条护城河 最后这一节要说的,是这个话题里最容易被两边同时说错的地方。 ## 每吃掉一层,就解锁更高一层 怀疑派最强的那把刀是:模型变强会把骨架吃掉。这把刀有真凭实据。厂商自己的复盘几乎就在承认这件事——上一代模型有“上下文快满时急着收尾”的失败模式,于是有了专门的上下文重置补丁;下一代模型这个毛病基本消失,补丁就没用了。同样,早期需要用硬约束逼模型“每轮只做一件事”,规划能力上来之后,这条约束反而帮倒忙,直接被删掉了。 但把这个模式外推成“骨架终将归零”是错的。错在把骨架当成一块面积固定、随时间缩小的东西。 数据指向相反方向:每一层被吸收掉的骨架,都解锁了此前根本够不着的任务复杂度。上下文焦虑一被治好,团队立刻就去挑战更难的全栈拆解了。骨架不是在缩小,是在随模型能力上移——它迁移到海拔更高的问题上去了。 时代 | 骨架当时在处理什么 | 已经被模型吃掉的 | 早期 | 单轮正确性、基础工具调用 | 上下文窗口基本款、简单工具结构 | 中期 | 上下文焦虑、强制分步、独立评估Agent | 长上下文连贯性、基础任务拆解 | 当下 | 跨任务编排、持久记忆、跨系统交接、自评估护栏 | 单任务规划、单功能点执行约束 | 下一代 | 多日工作流、组织级集成、Agent之间的协商 | 今天大部分评估与恢复模式 | ## 更尖锐的版本:骨架是因模型而异的 2026年6月8日的一篇论文把这件事推到了更不舒服的位置。Self-Harness这篇提出了让Agent改造自己骨架的范式 (https://arxiv.org/abs/2606.09498),作者的出发点是:不同模型行为不同,所以有效的骨架设计本质上是因模型而异的;而骨架目前基本还靠人类专家手工做,这个范式在模型越来越多样、迭代越来越快的时候扩展性很差。 他们做的事情是一个三段循环:弱点挖掘(从执行轨迹里找出这个模型特有的失败模式)、骨架提议(针对这些失败生成多样但最小的骨架改动)、提议验证(只有通过回归测试的改动才被接受)。在Terminal-Bench 2.0上拿三个不同家族的基座模型试,保留集通过率分别从40.5%涨到61.9%、23.8%涨到38.1%、42.9%涨到57.1%。 这组数字里最值得看的其实不是涨幅,是起点:同一套初始骨架,三个模型的成绩分别是40.5%、23.8%、42.9%,最高和最低差了将近19个百分点。这就是“骨架是因模型而异的”最直白的证据。它同时意味着一件让人扫兴的事——你在网上看到的任何一份“通用骨架最佳实践”,都有一个由它作者当时用的那个模型决定的天花板。 论文还有一句补充值得引:定性分析显示,这套方法产出的不是泛泛的通用指令,而是把模型特有的弱点变成了具体可执行的骨架改动。换句话说,能自动化的部分是“针对性”,不是“通用性”。 ## 把状态挪出模型,学术上也成立 另一条2026年6月的证据来自检索方向。Harness-1这篇论文把搜索Agent的状态外置到了环境侧 (https://arxiv.org/abs/2606.02373),作者的论证是:把常规的状态管理塞进策略里是错的,因为强化学习被迫同时优化两件事——语义搜索决策,以及那些环境本来能更可靠维护的记账工作。 他们的做法是让骨架去维护环境侧的工作记忆:候选池、带重要性标记的精选集、紧凑的证据链接、验证记录、压缩去重后的观察、以及按预算渲染的上下文;策略只保留语义决策——搜什么、留哪些、验什么、什么时候停。在覆盖网页、金融、专利和多跳问答的八个检索基准上,平均精选召回率0.730,比次强的开源检索子代理高11.4个百分点,而它只是个两百亿参数的模型。论文特别提到,收益在留出的迁移基准上尤其明显。 提炼成一句能带走的话:凡是环境能可靠维护的记账,就不该让模型去记。让模型记账不只是多花点词元,是往它的优化目标里混进了一件本不该由它承担的事。 顺带说一句,这个词现在已经进了维基百科关于Agent骨架的词条 (https://en.wikipedia.org/wiki/Agent_harness),而且词条里明确写着这个说法的归属是有争议的——一派记在那位在博客里随口起了个名的独立开发者头上,另一派记在LangChain那篇解剖文章头上。词条还顺手做了一件好事:它把这套东西的前身指了出来,推理与行动交替的循环范式来自一篇经过同行评审的框架论文,模型调用外部工具的能力则更早就有工作演示过。一个七周传遍全行业的新词,底下压着的是好几年的旧地基。 ## 常见问题解答 ## 骨架工程和上下文工程、提示词工程是什么关系? 层级关系。提示词工程优化的是单次交互,上下文工程管的是某一时刻模型看到什么,骨架设计的是整个运行环境,前两者都是它的组成部分。有一个区别值得单独记:被包裹的那个组件是非确定性的,所以骨架从一开始就要按“模型会编造一个动作、或者会谎报任务已完成”来设计恢复路径,这跟包裹一个确定性组件完全是两回事。 ## 小团队没资源,六层里最先建哪一个? 第六层的最小可用版本:挑三个最常见的失败模式,每个写二十行硬编码校验,失败时把校验结果当重试提示喂回去。这一步通常一个下午能做完,而它会立刻告诉你第五层该测什么。反过来先建第五层也行,但先有恢复路径,你在调试期间会少丢很多次工作成果。 ## 怎么判断我该继续加骨架还是该停手? 看指标是不是还在动。上下文调优有明显的边际递减,指标连着两三轮改动都在噪声范围内浮动,就是该停的信号。这也是为什么评估必须先建——没有指标,你分不清“已经到顶了”和“方向错了”。 ## 用不同模型要不要重做骨架? 大部分不用重做,但要重测。前面那组数据说明同一套骨架在不同模型上的成绩能差近19个百分点,所以换模型之后至少要把评估集重跑一遍,看哪几个校验器的触发频率发生了变化——变化最大的那几个,就是这个模型和上一个模型的行为差异所在。 ## 推断型传感器(大模型当裁判)可靠吗? 在文件和函数级别,计算型传感器更有效;跨文件的问题上,原始数据本身很嘈杂,没有语义解释反而不太可用,这时候推断型才有它的位置。实践上的做法是分工而不是二选一:能用确定性判据的地方绝不用裁判,剩下确实需要语义判断的部分再交给裁判,并且给它可对照的基线。 ## 这套东西对做SEO和独立站运营的人有什么用? 用处比想象中直接。任何一条“让AI批量处理内容”的流水线,都是一个Agent系统:批量写描述、批量补内链、批量生成产品文案、批量做多语言。它们卡住的原因跟编程Agent一模一样——没有验证面,所以没有仪表,所以每次改动都是赌博。先建校验(描述长度、关键词是否原样保留、内链是否404、结构化数据是否通过),再谈提示词怎么写,顺序反了就会一直在原地打转。 ## 权威参考资料 ## 斯坦福CS146S换了新大纲,被删掉的那几讲比新加的更有信息量 - URL:https://zhangwenbao.com/stanford-cs146s-self-study-2026.html - 分类:AI编程与工具链 - 发布:2026-07-23 | 更新:2026-07-30 - 摘要:CS146S官网已挂出新版课程描述,删掉的两讲全是绑产品的内容。本文给出逐讲判断、作业仓库停更八个月的真实状态、两周与六周两条路线,并纠正Semgrep那组被抬高七倍的数字。 - 关键词:Claude Code,AI编程,Vibe Coding,上下文工程 > **TLDR**:摘要:斯坦福CS146S(The Modern Software Developer)已经在官网挂出新一期的课程描述,核心主题换成了MCP、agent skills、规格驱动开发、循环工程和软件工厂。而2025年秋那版大纲里的“现代终端”“一句话建应用”不见了。被删掉的那几讲,比新加的更有信息量——删的全是产品名,留的全是工程判断。另一个自学者必须知道的事实:作业仓库有3819颗星,但最后一次代码推送停在2025年11月10日,也就是说大纲已经换代、作业还是上一版的。下面给出逐讲取舍、两条自学路线、Final Project的替代方案,以及一处被广泛传错的安全实测数据。 > 摘要:斯坦福CS146S(The Modern Software Developer)已经在官网挂出新一期的课程描述,核心主题换成了MCP、agent skills、规格驱动开发、循环工程和软件工厂。而2025年秋那版大纲里的“现代终端”“一句话建应用”不见了。被删掉的那几讲,比新加的更有信息量——删的全是产品名,留的全是工程判断。另一个自学者必须知道的事实:作业仓库有3819颗星,但最后一次代码推送停在2025年11月10日,也就是说大纲已经换代、作业还是上一版的。下面给出逐讲取舍、两条自学路线、Final Project的替代方案,以及一处被广泛传错的安全实测数据。 先把最常被搜索的三件事在开头答完。 第一,这门课是真的。斯坦福CS146S,课程名The Modern Software Developer,讲师Mihail Eric,3学分,2025年秋首开,斯坦福课程公告里有独立条目 (https://bulletin.stanford.edu/courses/2274401)。 第二,材料基本免费。官网、幻灯片、阅读清单、8周作业代码全部公开,唯一拿不到的是嘉宾演讲的完整录像。 第三,别按顺序啃。这是本文最想说的一句——大学课表是为有学分、有截止日期、有成绩单的在校生设计的,不是为下班后挤时间的工程师设计的。任何超过六周的自学计划,都会悄悄变成一个已放弃的计划。 搜索答案给完了。接下来是摘要给不了的东西:这门课在2026年自己改了什么,改动背后的行业信号,以及一份逐讲的取舍判断。 ## CS146S现在到底是什么状态? 这一节的信息在网上流传的版本大多已经过期,所以我直接去了一手源。 课程官网 (https://themodernsoftware.dev/)目前挂着的是新一期的课程描述,不再是2025年秋那版。页面上的确定信息: - 学分:3学分 - 先修:CS111/CS161等价的编程经验,推荐修过CS221或CS229 - 形式:每周讲座 + 动手编码课 + 业界嘉宾演讲 + 期末项目 - 教室:420-041,讲师答疑时间周五12:00到12:30 - 助教:两个位置目前都还是待定 助教还没定这条挺有意思——它说明筹备还在进行中,嘉宾阵容和具体周次安排大概率会再变。所以如果你打算跟新一期,别现在就把整个学期的计划排死。 那份公开的先修要求也值得认真对待。这门课默认你有CS111级别的编程底子加基本工具经验。如果你从来没有用编码Agent真正交付过一个东西,冷启动硬啃这门课是收藏夹吃灰的标准路径。先补一周上手型入门,再进场。 ## 新旧两版大纲之间,被删掉的是什么? 这是我认为整件事里最值钱的一段观察。 2025年秋那版的十讲结构,大致是这么排的:大语言模型与提示词 → Agent解剖与MCP → 上下文工程 → Agent协作模式 → 现代终端 → 测试与安全 → 代码审查 → 一句话建应用 → 部署后运维 → 软件工程的未来。 而官网现在的课程描述,点名的核心主题是这五个:MCP、agent skills、规格驱动开发、循环工程、软件工厂。学习目标写的是:设计Agent驱动的工作流、把工具和技能组合成可靠的开发系统、用软件工厂的原则更快更大规模地构建和演进软件。 两版并排看,加进来的东西很显眼。但更有信息量的是被拿掉的: 2025秋版的主题 | 在新描述里的处境 | 我的读法 | 现代终端(Warp等) | 消失 | 产品评测型内容,保质期以月计 | 一句话建应用(v0、Lovable等) | 消失 | 同上,且这类产品一年换三次定价 | 提示词工程 | 不再单列 | 被吸收进上下文与规格这两个更大的框架 | Agent解剖与MCP | 保留并前置 | 协议层的东西被证明是耐久的 | 上下文工程 | 保留 | 课程里最不容易过时的一讲 | 测试、安全、代码审查 | 并入“可靠的开发系统” | 从独立议题变成系统属性 | — | 新增:规格驱动开发 | 把需求翻译成可执行规格,成了独立能力 | — | 新增:循环工程 | 人机分工从“怎么下指令”移到“怎么设计迭代循环” | — | 新增:软件工厂 | 从单人产出转向流水线产出 | 把这张表读透,能得到一条比任何课程笔记都有用的原语:一门课两版大纲之间被删掉的东西,比被加进来的东西更有信息量。 加进来的东西可能只是追热点,删掉的东西一定是有人认真判断过“这个不值得占用十分之一个学期”。而这次删掉的两讲,恰好都是绑在具体产品上的内容。 ## “软件工厂”这个词该怎么理解 三个新主题里,软件工厂最容易被当成噱头,但它其实是整套变化的落点。 前面两个——规格驱动、循环工程——解决的都是“怎么让一次交付更可靠”。软件工厂问的是下一个问题:当一次交付已经可靠了,怎么让第二次、第十次交付不用重新组织一遍? 换成做独立站的语言就很好懂。你用Agent做出了第一个落地页,这是手工业;你把选题、生成、审查、上线这几步固定成一条能重复跑的线,每次只换输入,这才是工厂。差别不在单次产出的质量,在于第二次要不要重新想一遍流程。 保哥这两年做内容管线的体会是,绝大多数人卡在从手工业到工厂那一步,而不是卡在第一次做不出来。第一次做出来靠的是热情,做成流水线靠的是把每一步的输入输出定义清楚——那是纯粹的工程活,一点都不性感,但省下来的时间是成倍的。课程把它列成核心主题,说明这个判断已经不只是从业者的经验之谈了。 ## 这个信号对自学者意味着什么 它直接决定了你该把时间花在哪儿。工具名的保质期以月计,工程判断的保质期以年计。2025年秋那版材料里,会过时的部分恰好就是新版删掉的那部分;两个核心模块讲的上下文失效模式、自主度检查点、安全审查闸门,从那时到现在一个都没变。 所以“2025年秋的材料是不是已经过时了”这个高频疑虑,答案是:过时的部分正好是你本来就该跳过的部分。 ## 三条新主题在中文世界的对应资源 新增的三个主题里,有两个我已经单独拆过,可以直接当作课程之外的补充读物。 规格驱动开发那条腿,最成熟的落地形态是OpenSpec这类工具。我在Claude Code、OpenSpec、Superpowers三件套是刚需还是过度工程 (https://zhangwenbao.com/claude-code-openspec-superpowers.html)里做过一次比较刻薄的评估——结论是这套方法在多人协作和长周期项目上确实值,但单人小项目用它是纯负担。课程把它列成核心主题,说明学界的判断偏向前者。 循环工程那条腿更新,讲的是把人机分工从“怎么把这一轮指令写好”上移到“怎么设计一个能自己跑、又能被人叫停的循环”。给Agent装上刹车之后那张跑了一整夜的账单才真正消失 (https://zhangwenbao.com/agent-loop-engineering-guardrails.html)那篇里讲了护栏的具体形态——迭代上限、上下文轮换阈值、掉沟检测的三个触发器。这些东西以前属于“老手的经验”,现在被写进了大学课表。 至于MCP和agent skills这对,课程把它们并列在第一句,本身就是个态度。这两者的关系在2026年上半年被吵得很凶,我在MCP、Skills、Hooks三大扩展机制怎么选 (https://zhangwenbao.com/mcp-vs-skills-claude-code.html)里逐条对过官方文档——简单说,它们解决的不是同一层问题,把它们当竞品对比是提错了问题。 ## 作业仓库为什么八个多月没动了? 这一条是我在准备这篇时顺手查出来的,但它的实用价值可能是全文最高的一条。 作业代码仓库 (https://github.com/mihail911/modern-software-dev-assignments)的公开数据是这样的: - 3819颗星、925个fork,热度确实很高 - 创建于2025年8月7日,最后一次代码推送是2025年11月10日 - Python项目,用Conda加Poetry管理,官方说明写的是Python 3.12 - 开着31个未关闭的issue - 没有LICENSE文件 - 仓库描述里明确写着这是2025年秋那一期的作业 三个结论: 一,大纲和作业已经对不上了。课程描述换成了MCP、skills、规格驱动、循环工程、软件工厂,而作业还停在上一版的八周结构。你照着仓库跑,跑的是旧课。这不影响作业本身的价值(下面会说哪几个作业依然值得做),但你得知道自己在做的是什么。 二,没有LICENSE不等于随便用。公开可读和可再分发是两回事。缺少许可证的默认状态是“保留所有权利”,个人学习没问题,把它当成公司内训材料分发、或者把代码抄进商业项目,就得先问一句。这一点在源自大学的开源材料里非常常见,也非常容易被忽略。 三,31个未关闭的issue加上八个多月零推送,说明维护是停滞的。遇到环境问题别指望有人回你,Python 3.12加Poetry这套依赖,隔了大半年很可能已经装不动了。做心理准备:把环境跑起来这件事本身,可能就要吃掉你第一个晚上。 ## 顺手给一套判断课程材料新鲜度的动作 这套动作对任何一份挂在GitHub上的教学材料都适用,花不到三分钟: - 看最后一次推送时间,不是看星数。星数只反映它曾经火过,推送时间反映它现在还活着没有。一份三年前的高星仓库和一份上个月更新的低星仓库,后者对你更有用。 - 看未关闭issue里最新几条在问什么。如果全是“装不上依赖”,说明环境已经烂了;如果是内容层面的讨论,说明还有人在认真用。 - 看有没有LICENSE。决定你能用到什么程度。 - 把仓库描述和课程官网当前的描述对一遍。这一步最容易被跳过,也最容易发现问题——本文最重要的那个发现就是这么来的。 第四步值得单独强调。课程官网、作业仓库、社交媒体的宣传,这三处经常处在不同的时间线上,而大多数人只看其中一处就下结论。把它们对一遍,通常能省掉后面一整周的白工。 ## 哪几讲值得花时间,哪几讲可以快进? 下面这张表是我最希望有人在开始之前递给我的。星级是我的判断,不是斯坦福的,理由在后面展开。 讲次 | 主题 | 判断 | 性价比最高的练习 | 2026年用什么工具做 | 1 | 大模型与提示词 | ★★☆ 必要地基,别恋战 | 同一提示词跑10次,量化输出方差 | 任意前沿模型API | 2 | Agent解剖与MCP | ★★★ 全课最该动手的作业 | 徒手写一个MCP服务端,不用框架不用脚手架 | MCP官方SDK | 3 | 上下文工程 | ★★★ ROI最高的一讲 | 写一页设计文档喂给Agent,和裸提示词跑同一任务做对照 | 项目规则文件 | 4 | Agent协作模式 | ★★★ 从写代码到管Agent的分水岭 | 用带检查点的方式指挥Agent交付一个真实功能 | 计划模式 | 5 | 现代终端 | ★☆☆ 终端老手直接跳(新版已删) | 不必做 | — | 6 | 测试与安全 | ★★★ 玩具和产品之间的闸门 | 对自己的仓库跑安全扫描,人工数真假阳性 | 静态扫描器加Agent复审 | 7 | 代码审查 | ★★☆ 和第6讲捆着学 | 对抗式审查一个AI写的PR,找出它自己没发现的3个问题 | 第二个Agent当评审 | 8 | 一句话建应用 | ★★☆ 好玩,但课在“差距”上(新版已删) | 生成一个应用,然后列出所有不能上生产的理由 | 任意应用生成器 | 9 | 部署后运维 | ★★☆ 读就行,除非运维是本职 | 用“Agent值班”的视角读SRE导论 | 纯阅读周 | 10 | 软件工程的未来 | ★☆☆ 播客级内容,通勤听 | 不必做 | — | 先看星级的分布形状。价值集中在第2到第4讲和第6到第7讲,也就是课程的中段;两头——开头的入门铺垫、结尾的趋势畅想——恰恰是自学者热情耗尽的地方,也恰恰是最可压缩的部分。 这个形状和新版大纲的改动方向是一致的:中段被保留和扩写,两头被删或者被压。两个独立来源指向同一个判断,这比任何单方面的推荐都可信。 ## 第2讲那个作业为什么值得单独喊一声 徒手写一个MCP服务端——不套模板,也不让Agent帮你搭脚手架——是给Agent祛魅最快的路径。 亲手写完工具列表握手、亲眼看着模型(有时是错误地)决定调用你的哪个工具之后,整个Agent生态就不神秘了。协议本身的官方入门文档 (https://modelcontextprotocol.io/docs/getting-started/intro)并不长,一个晚上足够走完。 这个作业最大的副产品是它会永久改变你写工具描述的方式。在服务端那一侧亲眼确认过之后,你会开始把每一条description都当提示词来写——因为它就是提示词。这件事读一百篇文章都不如自己写一遍。 ## 上下文工程那一讲为什么ROI最高? 只精读一讲的话,选这讲。它是“从编码Agent拿到稳定输出的人”和“每次都在抽奖的人”之间的分界线。 这一讲的阅读清单至今仍是这个主题下最好的一份选材,尤其是Drew Breunig那篇长上下文失效模式 (https://www.dbreunig.com/2025/06/22/how-contexts-fail-and-how-to-fix-them.html)——它给你经历过却叫不出名字的故障逐个命了名。四种,各有各的相貌: - 污染:一个幻觉或错误进了上下文,之后被反复引用。症状是你纠正过的东西卷土重来。 - 分心:上下文长到模型过度关注历史,反而忽略了训练里学到的东西。症状是它开始机械重复前面的模式。 - 混淆:上下文里多余的信息被模型拿去生成了低质量回答。症状是输出里混进了另一个模块的约定。 - 冲突:新累积进来的信息或工具,和已有内容互相矛盾。症状是在两个方案之间反复横跳。 能把这四种分开,你就有了一套诊断语言。没有诊断语言的时候,所有故障看起来都是“它今天有点笨”,而你唯一的动作就是重开一轮。 ## 那个对照实验,一个下午就能跑完 配套练习强烈建议照做:从积压需求里挑一个真实功能,写一页设计文档(约束、非目标、相关文件、业务规则),让同一个Agent把任务跑两遍——一遍带文档,一遍裸提示词,然后diff两次输出。 这个实验的典型结果是:裸提示词那版会凭空发明一个数据模型,和两层目录之外的既有模型直接冲突;带文档那版不会。一个下午,这门课的中心论点就摆在你自己的终端里,不需要相信任何人。 如果你做完之后想往下挖,上下文工程的减法实战 (https://zhangwenbao.com/context-engineering-subtraction-practice.html)那篇是这一讲的延伸——里面有可复现的基准数字、四种失效模式的现场排查顺序,以及一套先卸载再摘要的阈值打法。课程讲的是这门学科存在,那篇讲的是它在2026年长成了什么样。 ## 第4讲那条自主度光谱,比任何工具都活得久 第4讲的耐久内容只有一样:自主度光谱。它回答的是全行业都在绕圈的问题——给Agent多大自主权、检查点设在哪。 光谱给的答案不复杂:简单任务放手跑,中等任务能省八成时间但要人工收尾,复杂任务必须分段审查。真正难的不是记住这三档,而是判断手上这个任务属于哪一档。 我用下来最好使的判据是问一句:如果它做错了,我要花多久才能发现?五分钟内能发现的(跑不起来、测试红了),放手;要到下个迭代才发现的(数据写歪了、边界条件漏了),分段审查。这个判据比“任务复不复杂”准得多,因为复杂度是关于任务的,而可发现性是关于你的系统的——后者才是决定风险的那个变量。 这一讲的作业是全程指挥Agent、而不是亲手敲代码地交付一个完整项目,正好接在第3讲写的设计文档后面。两个作业是连着的,别拆开做。 ## 安全那两讲里,有一组数字被传错了 第6和第7讲当一个整体学,它们合起来是全课最清醒的部分。而它们的核心阅读材料里,有一组数字在中文和英文世界都被反复传错,错得还挺严重。 流传的版本是:“Semgrep用编码Agent扫11个大型开源项目,Claude Code找出了46个真实漏洞,但误报率86%。” 翻Semgrep那篇原始实测 (https://semgrep.dev/blog/2025/finding-vulnerabilities-in-modern-web-apps-using-claude-code-and-openai-codex/)会发现,46这个数字的含义完全不是这样: > Claude Code报告了46个漏洞,真阳性率14%、误报率86%。作为对照,Codex报告了21个,真阳性率18%、误报率82%。 也就是说,46是它报出来的条数,不是真实漏洞数。按14%的真阳性率算,真正成立的大约只有6条。原始说法把结论抬高了七倍多。 ## 原文里还有几组更值得看的数字 被传丢的部分反而更有用: - 两个Agent合计产出400多条安全发现,由Semgrep的安全研究团队逐条人工复核,其中约20个是高危漏洞。 - Claude Code最擅长的是越权访问(IDOR)类问题,真阳性率22%。 - 它最不擅长的是跨文件跨函数的污点追踪:SQL注入真阳性率只有5%,XSS只有16%。 - 实测用的是Claude Code v1.0.32配Sonnet 4、Codex v0.2.0配o4-mini——都是2025年的版本。 最后那条尤其重要。拿一年前的版本得出的结论,今天照抄是危险的;但反过来,说“现在的模型肯定好多了”同样没有证据。正确的姿势是把这组数字当成量级参考,然后在你自己的仓库上跑一遍拿到当下的数。 ## 它到底告诉了我们什么 剥掉被夸大的部分,这组数据的真实含义反而更清晰,而且更有指导性:AI安全审查真实到值得用,又不可靠到绝不能当唯一闸门。 那个5%和16%的分布尤其值得琢磨。模型擅长的是单点能看出来的问题(越权访问基本上看一个接口就够了),不擅长的是要串起好几个文件才能确认的问题(污点从入口流到危险函数)。而后者恰恰是电商站最高发的那一类——用户提交的评论、问答、富文本,每一个都是跨越了好几层才落到渲染或者查询上。 把这一讲落到实处,我在Claude Code安全实战 (https://zhangwenbao.com/claude-code-security.html)里写过一整套可执行的配置:权限白名单、密钥外置、用生命周期钩子做硬闸。课程讲的是为什么,那篇讲的是怎么配。 ## 怎么在自己仓库上测出当下的数 转述的百分比不值得信,你自己跑出来的值得。整个流程半天能走完: - 挑一个你写过、但已经放了几周的仓库。放几周很关键——刚写完的代码你还记得所有假设,会不自觉地帮它辩护。 - 先跑一遍传统静态扫描器,把结果存下来当基线。不要先跑Agent,否则你的判断会被它的叙述带走。 - 再让Agent做一遍审查,要求它每条给出文件、行号和触发路径。没有触发路径的发现一律先标灰——这是筛掉大部分误报最省力的一道闸。 - 人工逐条判真假,记下总数和真阳性数。这一步不能外包,也不能跳。 - 按类型分组统计。你会发现自己的分布和公开实测未必一致,因为它取决于你的代码风格和技术栈。 第五步往往是最有价值的。公开实测告诉你这个工具的平均能力,只有你自己的数据能告诉你它在你的代码上是什么能力——而后者才是你要用来做决策的那个数。跑一次,你对“AI安全审查靠不靠谱”这个问题的答案就从别人的转述变成了自己的结论。 ## 自学该走两周速通还是六周完整? 在校生用十周,是因为学期就是十周。你没有学期约束,也没有让慢节奏对学生生效的那两样东西——外部截止日期和成绩单。 所以路线只给两条,用一个问题分流:你用编码Agent交付过真实的东西吗? — | 两周速通 | 六周完整 | 适合谁 | 已经每周指挥Agent干活 | 还没用Agent交付过真实的东西 | 前置 | 无 | 先花约1周跟上手型入门 | 第1到2讲 | 只扫阅读材料,半天 | 阅读加MCP服务端作业,3到4天 | 核心闭环 | 第3讲到第4讲到第6/7讲,三个连续练习块 | 同样三块,摊开到几周 | 项目 | 一个真实仓库,两个专注的周末 | 相同 | 后三讲 | 按兴趣选,可不做 | 选修一讲 | 核心闭环那一行是不许跳的:第3讲写设计文档做对照实验(一个晚上)→ 第4讲带检查点交付一个真实功能(两到三个晚上)→ 第6和7讲对自己的仓库做扫描加对抗式审查(一个晚上)。其余全部可选。 如果分流问题的答案是“还没有”,那就先别碰CS146S。先补那一周入门,再走六周路线进场。想找一条已经本土化过的上手路径,用Vibe Coding做SEO工具的8步实战 (https://zhangwenbao.com/vibe-coding-seo-tool-tutorial.html)是我为完全没交付过东西的人写的,做完一个能跑的小工具再回来,体感完全不同。 ## 三种最常见的放弃姿势 路线本身不难,难的是走完。见过的放弃姿势基本是这三种,每一种都有对应的拆解办法: 第一种:从第1讲开始按顺序读,读到第3讲热情耗尽。这是最普遍的一种,因为前两讲的内容对有经验的人来说是复习,而复习是最消耗意志力的活动——你既学不到东西,又觉得跳过不踏实。办法很简单:直接从第3讲开始,把第1到2讲当成需要时再回头查的参考。 第二种:卡在环境上。作业仓库停更了大半年,依赖装不上是大概率事件。这时候人会误以为是自己的问题,然后花一个晚上和Poetry搏斗,第二天就不想打开电脑了。办法是:如果30分钟装不上,直接放弃跑官方作业,用你自己的项目做同样的练习。练习的价值在动作本身,不在那份代码。 第三种:只做输入不做输出。读完所有材料、收藏所有链接,然后什么都没变。这一种最隐蔽,因为过程中的感受一直很好。判据是:如果你这周没有产出一段自己跑过的diff,那这周你没在学这门课。 三种放弃姿势有个共同点——它们都发生在“动手”之前。课程设计者把八成分数压在期末项目上,本身就是对这件事的预判。 ## 自学者反而占的一个便宜 在校生必须按当期指定的工具选型走,因为作业要对着规格评分。你可以自由替换——第4讲用你真实在用的Agent跑,第6讲的扫描直接指向你自己的代码库。 只要替换是有意识的,自学版CS146S比学分版更贴近你的工作。这也是为什么前面那条“作业仓库停更了”其实没那么致命:你本来就不该照着评分标准做作业,你该照着自己的项目做。 ## Final Project占总评八成,自学者拿什么替代 一门课把分数排成期末项目八成、周作业一成半、课堂参与半成,等于明说它不相信“读”能产生这项能力。 这个设计我完全同意,所以话也说直白:十讲全读完但什么都没做,你没上过这门课,你只是读了一篇关于它的长文。 替代方案要和真项目同构——用一个仓库把整条管线走通。规格是这样的: - 挑一个你真心希望它存在的东西。自学里稀缺的是动力,不是信息。这一条比后面四条加起来都重要。 - 生成任何代码之前先写设计文档:约束、非目标、相关文件、业务规则。对应第3讲。 - 用带显式检查点的方式指挥Agent构建,而不是一口气收下一个巨型diff。对应第4讲。 - 宣布完成之前先过闸门:安全扫描加对抗式Agent审查,修掉真问题。对应第6到7讲。 - 部署到带最低限度日志的环境。对应第8到9讲,降低深度即可。 整套流程两个专注的周末装得下。它把这门课从词汇表变成肌肉记忆,还会留给你任何阅读都给不了的东西:一份“我的Agent工作流在哪一步断掉”的具体记忆——你真正的学习发生在那里。 保哥自己做这个替代项目的时候选的是一个拖了很久没做的内部看板。第四步那道闸门当场就打了脸:对抗式审查扫出11条,3条是真的,其中一处未校验的重定向就在我记得当时“审过”的代码里。任何阅读材料的教育效果,都比不上发现自己亲手批准过的漏洞。 ## 2026年该用什么工具做这些练习? 课程材料里的工具选型有一部分是2025年秋的快照,直接照抄会踩到已经变了的东西。给一份替换建议: 练习 | 课程原设定 | 2026年的做法 | 注意什么 | 提示词方差实验 | 任意前沿模型API | 不变 | 跑10次是下限,schema漂移经常要更多样本才看得出 | 徒手写MCP服务端 | MCP官方SDK | 不变,但用最新版SDK | 包名和传输方式在2026年上半年有过调整,别抄老教程 | 上下文对照实验 | 项目规则文件 | 不变 | 规则文件要短,长了会稀释你想验证的那条 | 带检查点交付功能 | 计划模式 | 加上循环护栏 | 迭代上限和掉沟检测,新版大纲把这块单列成了循环工程 | 安全扫描 | 静态扫描器加Agent复审 | 不变,但自己数真假阳性 | 别信任何转述的误报率,用你自己仓库的数 | 对抗式代码审查 | 第二个Agent当评审 | 换独立上下文的子代理 | 同一个窗口里自审等于自己给自己打分 | 最后一行值得多说一句。让同一个Agent在同一个会话里审查自己刚写的代码,它会带着写代码时的全部假设去审——那些假设恰恰是漏洞的来源。换一个独立上下文的子代理,是最低成本的“换个人看”。 想把整条工具链摸清楚再动手的,Claude Code从安装到工作流的完整指南 (https://zhangwenbao.com/claude-code-complete-guide.html)是一条更省事的路径,它讲的是主线骨架;CS146S讲的是骨架背后的判断依据。两个一起看,比只看其中一个划算得多。 ## 这门课对不写代码的人有用吗? 这个问题问的人不少,值得单独答一段,因为答案是“有用,但要换一种读法”。 做SEO、做独立站运营、做内容的人,大多不会去徒手写MCP服务端,也不会关心Poetry怎么装。但这门课的中段——上下文工程、自主度光谱、审查闸门——讲的其实不是编程,是怎么和一个不太可靠但很能干的协作者一起干活。这件事和写不写代码没关系。 ## 三条能直接搬走的原则 第一,先写规格再动手,这条在内容生产上比在编程上更成立。让Agent写一篇文章,直接给标题和裸提示词,它会给你一篇看起来很像那么回事、但每一段都是安全废话的东西。先写一页约束(读者是谁、不写什么、必须包含哪几个事实、语气边界),产出质量的差别是量级的。这就是第3讲那个对照实验,只是把代码换成了文章。 第二,检查点比自主度重要。自主度光谱那一讲的核心不是“该给多大权限”,而是“检查点设在哪”。批量改100篇文章的时候,正确的形状不是一口气跑完再看,而是跑3篇停下来验一次——因为前3篇里出现的系统性偏差,会在后97篇里原样复制。 第三,输出必须过闸门,而且闸门不能是它自己。第6到7讲讲的是安全扫描和对抗式审查,换到内容场景就是事实核查和第二双眼睛。让同一个Agent检查自己刚写的东西,它会带着写作时的全部假设去检查——那些假设恰恰是错误的来源。 这三条合起来,其实就是把软件工程里已经验证过几十年的东西,搬到一个新的协作对象身上。课程真正教的不是工具,是分工。而分工这件事,在哪个行业都通用。 ## 这份手册的边界在哪儿? 三个诚实的限定,说清楚比藏着好。 第一,逐讲判断基于2025年秋的公开材料。新一期的具体周次安排、嘉宾阵容和作业还没公布。以往的模式看,工具选型那几讲大概率会换,两个核心模块大概率原样保留——但这是推测,不是事实。 第二,作业仓库的状态会变。我核对时它停在2025年11月10日、31个未关issue、无LICENSE。新学期开始前后很可能会有一次大更新,值得在开工前自己去看一眼最新推送时间。这类会过期的事实,最好养成核对而不是引用的习惯。 第三,这份手册刻意用深度换导航。每个核心讲值得的篇幅都远超“一句判断加一个练习”。用这一页决定把时间花在哪儿,用课程材料本身去把时间花掉。做AI相关的自养工具是同一个道理——我在Vibe Coding重塑SEO工作流 (https://zhangwenbao.com/vibe-coding-seo-competitive-advantage.html)那篇里反复强调过,工具清单救不了你,跑通一遍才行。 ## 常见问题解答 ## 斯坦福CS146S 2026年还开吗? 课程官网目前挂着新一期的课程描述,教室420-041、讲师答疑周五12:00到12:30这些信息都已经列出,两个助教位置还是待定状态。课程描述本身已经换代,核心主题变成了MCP、agent skills、规格驱动开发、循环工程和软件工厂。因为筹备还在进行中,具体的周次安排和嘉宾阵容大概率还会调整,别现在就把整个学期的计划排死。 ## CS146S的课程材料是免费的吗,国内能访问吗? 官网、幻灯片、阅读清单和8周作业代码全部公开免费,官网和GitHub都能直接打开。拿不到的是嘉宾演讲的完整录像,散见于视频平台,需要自己解决网络条件。需要注意的是作业仓库没有LICENSE文件,缺少许可证的默认状态是保留所有权利——个人学习没问题,但当成公司内训材料分发或者把代码抄进商业项目之前,最好先确认一下。 ## CS146S的作业仓库还能用吗? 能用,但要有心理准备。仓库有3819颗星、925个fork,热度很高;可是最后一次代码推送停在2025年11月10日,至今八个多月零提交,还开着31个未关闭的issue。它对应的是2025年秋那一版的八周结构,而课程描述已经换代,所以大纲和作业目前是对不上的。依赖用Conda加Poetry管理、Python 3.12,隔了大半年很可能已经装不动,把环境跑起来本身可能就要吃掉一个晚上。 ## 只有一个周末,CS146S该学哪一讲? 第3讲上下文工程,并且必须做配套实验,不能只读。具体做法:从积压需求里挑一个真实功能,写一页设计文档(约束、非目标、相关文件、业务规则),让同一个Agent把任务跑两遍,一遍带文档一遍裸提示词,然后diff两次输出。典型结果是裸提示词那版会凭空发明一个和既有代码冲突的数据模型。一个下午,这门课的中心论点就摆在你自己的终端里。 ## Semgrep用编码Agent找漏洞那组数据到底是多少? 流传最广的说法“Claude Code找出46个真实漏洞、误报率86%”是把结论抬高了七倍多。原文说的是Claude Code报告了46个漏洞,真阳性率14%、误报率86%,也就是真正成立的大约6条;Codex报告21个,真阳性率18%。两者合计400多条发现,人工复核后约20个是高危。分类型看,Claude Code在越权访问上真阳性率22%,但在需要跨文件跨函数污点追踪的类型上很弱——SQL注入只有5%、XSS只有16%。测试用的是2025年的版本。 ## 没用过编码Agent,能直接学这门课吗? 不建议。官网写明的先修是CS111或CS161等价的编程经验,推荐修过CS221或CS229,课程默认你已经有基本的工具经验。如果你从来没有用编码Agent真正交付过一个东西,冷启动硬啃是收藏夹吃灰的标准路径。正确顺序是先花大约一周跟一个上手型入门,做出一个能跑的小东西,再走六周完整路线进场。 ## 自学怎么替代占八成分数的期末项目? 用一个真实仓库把整条管线走通,五步:挑一个你真心希望它存在的东西;生成任何代码之前先写设计文档,包含约束、非目标、相关文件和业务规则;用带显式检查点的方式指挥Agent构建,而不是一口气收下巨型diff;宣布完成之前先过闸门,做安全扫描加对抗式Agent审查并修掉真问题;最后部署到一个带最低限度日志的环境。两个专注的周末装得下,它会留给你一份“我的工作流在哪一步断掉”的具体记忆。 ## 权威参考资料 ## Claude Code截图MCP怎么配?四种读页面方式的token账与调试循环 - URL:https://zhangwenbao.com/claude-code-screenshot-mcp-frontend-debug.html - 分类:AI编程与工具链 - 发布:2026-07-23 | 更新:2026-07-30 - 摘要:让Claude Code看页面有四种办法,成本差两个数量级。本文算清每种办法各自能回答什么、要花多少,讲透长页面截图为什么是陷阱,并给出可直接照抄的截图封顶配置与安全参数。 - 关键词:MCP,Claude Code,Token优化,浏览器自动化,前端调试 > **TLDR**:摘要:让模型看页面有四条路——无障碍快照、视口截图、整页截图、定向脚本,成本能差出两个数量级。快照适合驱动页面,调CSS和布局却几乎答不上来;整页截图看着最便宜,是因为它已经被压成一条纸带。2026年还多了一层变化:Claude 4.7及之后的模型走高分辨率档,同一张图的视觉token最多翻三倍,截图省钱这个前提被削掉了一半。这篇把四条路的账重新算一遍,给出可以自己套的视觉token公式、两个浏览器MCP的官方装法与裁剪开关,以及一套先问数字、最后才看像素的调试循环。 > 摘要:让模型看页面有四条路——无障碍快照、视口截图、整页截图、定向脚本,成本能差出两个数量级。快照适合驱动页面,调CSS和布局却几乎答不上来;整页截图看着最便宜,是因为它已经被压成一条纸带。2026年还多了一层变化:Claude 4.7及之后的模型走高分辨率档,同一张图的视觉token最多翻三倍,截图省钱这个前提被削掉了一半。这篇把四条路的账重新算一遍,给出可以自己套的视觉token公式、两个浏览器MCP的官方装法与裁剪开关,以及一套先问数字、最后才看像素的调试循环。 移动端流量占比长期趴在8%上下,这个数字在一个技术向站点里不算离谱,于是它在数据面板里躺了大半年没人动。真去查的那天,事情反而简单得让人生气:一段十几行的脚本,回来一个79 token的结果,直接点名了肇事者——390px的视口里塞着一个427px宽的表格,外加三十多个小于44px的点击目标。 但这不是过程的开头。开头是老老实实照着工具说明先跑了一次无障碍快照,烧掉一万多token,关于这个bug一个字也没学到。原因说破了很朴素:无障碍树里根本没有“宽度”这个概念,它描述的是结构与可操作性,不是像素。 这篇就是那趟弯路的复盘。它要回答的问题很窄:当你让Claude Code去看一个页面,你到底在为什么付钱,以及怎么才能少付一点。 先立个版本锚点,免得数字被当成常量:chrome-devtools-mcp当前是1.6.0,2026年7月14日发布;Playwright MCP当前是0.0.78。前者从5月底的1.1.1到7月中的1.6.0,六周走了六个版本;后者做了一年多还停在0.0.x。工具面在动,所以下面所有数字看的是量级关系。 ## 让模型“看”一个页面,到底有几种办法? 拿同一个URL在同一个视口下把四种方式各跑一遍,把结果落到磁盘再量,能得到一张分化极大的表。注意最后一列——它比token数更重要。 方式 | 量级 | 它真正能回答什么 | 无障碍快照 | 一万token级 | 页面结构、有哪些元素可点可填。样式一概不知 | 视口截图 | 两千token级 | 长什么样、有没有明显错位。读不出精确值 | 整页截图 | 几百token级 | 长页面上基本什么也答不了,下文单开一节 | 定向脚本 | 几十token级 | 你问的那几个数,一个不多 | 这四条路不是替代关系,是分工。真正的浪费不在于用了贵的那条,而在于用贵的那条去回答它答不了的问题——花一万多token买回一句“页面结构看起来正常”,钱花了,问题还在原地。所以下面每一节都先讲这条路能回答什么,再讲它花多少。 ## 无障碍快照贵在哪 快照的成本跟页面复杂度正相关。它要把可访问性树摊平成文本,每个可交互元素带上角色、名称和一个唯一标识。一篇长文章、一个商品列表页、一个后台表格,节点数轻轻松松上千,摊开就是上万token。 贵得有道理。快照给每个元素分配的那个uid,是后续点击和填写能够寻址的唯一凭据。没有它,模型面对的就是一堆无法指认的像素。Playwright MCP自己的截图工具里甚至写着一句警告:你不能基于截图执行操作,要操作请回去拿快照。 ## 截图能回答什么,不能回答什么 截图擅长的是“看起来对不对”这一类判断:字体渲染有没有崩、两块内容有没有压在一起、层级扫一眼清不清楚。这些问题没有任何脚本能替代,因为它们的判据本身就在视觉里。 截图不擅长的是给数字。你能看出“有东西太宽了”,但你没法从一张图片里读出427px。想让模型基于截图去推断具体尺寸,等于让它拿肉眼估长度,然后你再拿这个估值去改CSS——错误会从第一步就开始累积。 ## 定向脚本为什么最便宜 因为它把“提问”和“取值”合并成了一件事。你不是先把整个页面搬进上下文再让模型从里面找答案,而是直接在页面里跑一段只返回答案的代码。 () => { const de = document.documentElement; const wide = []; document.querySelectorAll('pre,table,img,iframe').forEach(el => { const r = el.getBoundingClientRect(); if (r.width > de.clientWidth + 1) wide.push({ tag: el.tagName, w: Math.round(r.width) }); }); return { viewport: de.clientWidth, overflow: de.scrollWidth > de.clientWidth, wide }; } 回来的是一个几十字符的对象,把视口宽度、有没有横向溢出、以及具体哪个标签宽多少一次性说清。谷歌给这个服务写的设计原则里有一句更抽象的表述:返回语义摘要,一句“LCP是3.2秒”好过五万行JSON。定向脚本就是把这条原则用到了布局上。 这里面藏着一个更值得记住的判断:成本不取决于页面有多大,取决于你把多少东西搬进了上下文。同一个商品详情页,快照要一万多,脚本要几十,页面本身没有任何变化。差的是你有没有先把问题想清楚。这也解释了为什么“先问一个具体问题”这件事在人机协作里的收益,比在纯人工排查里高得多——人翻页面是免费的,模型不是。 代价当然也有。定向脚本要求你会写一点DOM查询,也要求你对页面结构有基本假设。好在这两样都不需要多深,上面那段代码几乎是通用模板,换个选择器就能问别的问题。真正的门槛不在语法,在于愿意先停下来把“我到底想知道什么”写成一句话。 ## 官方都说优先用快照,为什么调前端时不该听? 两家官方在这件事上口径一致。Chrome DevTools MCP把它写进工具说明,Playwright MCP把它当设计目标写进README,说的都是优先用结构化快照,绕开对截图和视觉模型的依赖。 他们没说错。他们回答的是另一个问题。 “优先用快照”这条规则服务的是驱动页面:填表单、走结账流程、点开某个折叠面板、跑一遍注册链路。这类任务的核心诉求是可寻址性,快照是唯一能提供它的东西,多花的token换来的是动作能落地。 前端调试不是驱动页面。当你问“这个表格在手机上为什么撑破了”,你要的是一组数:元素宽度、容器宽度、计算出来的max-width、父级有没有overflow。快照一个都没有,截图也没有。两个默认选项都在做同一件事——把整页倾倒进上下文——而对这类任务,倾倒本身就是错的。 把这条分界线记成一句话可能更好用:要动它,用快照;要量它,用脚本;要看它,才用截图。这三件事在工具面上长得很像,在成本上差两个数量级。 ## 整页截图便宜得可疑,这笔账到底该怎么算? 回头看上面那张表,整页截图是最便宜的图片。这个便宜是假的,而且它的失败方式非常安静,值得单独拆开。 ## 视觉token到底怎么算出来的 Claude看图不是按像素,是按块。官方视觉文档给出的公式 (https://platform.claude.com/docs/en/docs/build-with-claude/vision)是:图片被切成28×28像素的方块,每一块算一个视觉token,所以一张图的成本是宽除以28向上取整,乘以高除以28向上取整。 这个公式很值钱,因为它让截图成本从玄学变成了算术。你可以在按下截图之前就知道这一下要花多少,而不是事后看账单猜。 ## 高分辨率档把这笔账改了多少 这里是2026年最容易踩空的一处。很多讲截图省token的资料还停在“长边超过1568像素会被等比缩小”这一条上,那是标准档的规则。官方文档现在写的是两档: 分辨率档 | 适用模型 | 最长边 | 视觉token上限 | 高分辨率档 | Claude 4.7及之后的模型 | 2576 px | 4784 | 标准档 | 其余模型 | 1568 px | 1568 | 高分辨率是这些模型上的自动行为,不需要beta头,也没有客户端开关可关。官方原话是,高分辨率图片消耗的视觉token可能达到同一张图在标准档下的大约三倍。同一份文档给的对照表,把这个差距摊得很清楚: 原始尺寸 | 标准档缩到 | 标准档token | 高分辨率档缩到 | 高分辨率档token | 1000×1000 | 不缩 | 1296 | 不缩 | 1296 | 1920×1080 | 1456×819 | 1560 | 不缩 | 2691 | 2000×1500 | 1269×952 | 1564 | 不缩 | 3888 | 3840×2160 | 1456×819 | 1560 | 2576×1449 | 4784 | 规律一眼就出来了:图越大,高分辨率档的惩罚越重。1920×1080差1.7倍,4K直接差3.1倍。标准档因为封顶在1568 token,图再大成本也不涨;高分辨率档把天花板抬到4784,于是大图真的会把这个额度吃满。 顺着这条规律推一步,结论有点反直觉:过去那条“截图比快照便宜”的经验,正在被模型自己的升级慢慢磨掉。快照的成本跟着页面复杂度走,没变;截图的成本跟着分辨率走,涨了。两条曲线在靠近。而定向脚本那几十个token,跟这两件事都无关——它是唯一不受这次变化影响的选项。 ## 长页面的正确截法 现在回到整页截图。一篇长文章截下来是2544×27358这个量级。套公式:标准档按最长边压到1568,宽度只剩146像素;高分辨率档压到2576,宽度是240像素。 两个数都是一条纸带。它便宜是因为它已经被毁掉了——模型收到一个看不清的东西,不会报错,然后自信地告诉你页面看着挺正常。更荒谬的是在高分辨率档下,你还要为这条更宽一点的纸带多付两倍半的钱。 长页面的正确做法有三条,按优先级排:能用脚本回答的先用脚本;需要看的地方滚到那个位置截一张视口图;只关心某个组件就传它的uid只截那一块。别在文章级长页面上用整页截图,然后以为自己看过了。 ## 两个浏览器MCP怎么装,各自什么时候上? 两个都值得装。与其说它们是竞品,不如说是两种不同的仪器——一台示波器和一台游标卡尺,你不会问哪个更好。 ## Chrome DevTools MCP 谷歌出品,当前1.6.0,仓库 (https://github.com/ChromeDevTools/chrome-devtools-mcp)拿到4.78万星、3200多个fork。工具面按官方README的分类是9组共52个:输入自动化10个、导航6个、模拟2个、性能3个、网络2个、调试8个、内存12个、扩展5个、第三方2个,另加2个WebMCP工具。 claude mcp add chrome-devtools --scope user npx chrome-devtools-mcp@latest 需要Lighthouse跑分、带LCP与INP洞察的性能追踪、堆快照排内存泄漏、调浏览器扩展的时候用它。内存那一组独占12个工具,这个配比本身就说明了它的定位。 ## Playwright MCP 微软出品 (https://github.com/microsoft/playwright-mcp),当前0.0.78,需要Node 18及以上。 claude mcp add playwright npx @playwright/mcp@latest 需要Firefox或WebKit这类非Chrome内核、要填复杂表单、要控制Cookie和存储、要写测试断言的时候用它。如果报浏览器缺失,补一条npx playwright install chromium。装完两个都用/mcp验一眼。 两条命令里的--scope user值得多看一眼。官方MCP文档 (https://code.claude.com/docs/en/mcp)把作用域分成三档:不写就是当前项目私有,写user是跨所有项目生效,还有一档是写进项目配置文件跟着仓库走给团队共用。浏览器这类工具属于个人调试习惯,装user档最省事,否则每换一个仓库就要重装一遍。 ## 三个会白白花掉你时间的坑 写文件的路径不是随便给的。很多人第一次传一个临时目录的绝对路径进去,直接被拒。真实机制比“只能写工作区”更精确:当MCP客户端没有协商roots能力时,写文件的工具默认被限制在操作系统临时目录;客户端协商了roots,就以那些根目录为准。官方留了一个--allowUnrestrictedPaths开关来关掉这层限制,但它明确标注只在连接可信本地客户端时用。 缩窗口不等于模拟手机。把窗口拉到390×844,然后让页面自报宽度,回来的很可能是一千多——有头Chrome的窗口有最小尺寸,而缩窗口缩的是窗口,不是视口。要真机尺寸得走设备模拟: emulate(viewport: "390x844x3,mobile,touch") 之后页面才会报390,溢出bug才会浮出来。移动端能不能查出东西,几乎全押在这一个区别上。 有头浏览器会抢焦点。在macOS上,每一条调试协议命令——哪怕是只读的列页面、截图——都会把浏览器拽到你编辑器前面。除非你确实要盯着屏幕看,否则加--headless跑。 无头模式下视口是有天花板的。官方给--viewport参数标了一句容易漏掉的说明:无头模式下最大尺寸是3840×2160。平时用不到,但当你想一次性截一张超宽的仪表盘、或者模拟某台大屏设备时,会撞上这条限制而且不一定有明确报错。真要那么宽,拆成几张视口图更稳。 ## 一张截图凭什么能废掉整个会话? 这是最值得提前防的失败模式,因为它的后果不是“变慢”,是“直接终结”。 官方对图片有两道硬限制:单张图片任一边不得超过8000像素;而当一次请求里的图片超过20张时,会触发更严格的单图尺寸限制,官方给的稳妥做法是把每张图的每一边压到2000像素以内。踩过去会拿到一个400错误,明确告诉你某张图片的尺寸超了上限。 残忍的地方在于,那张超限图片已经进了对话历史。之后每一次请求都会带着它重发一遍,于是每一次都以同样的方式失败。这不是一个可以重试解决的错误,它是一次不可逆的污染。而且写文件也不一定能救——如果客户端后来试图把这个文件加载进上下文窗口,问题原样复现。 更麻烦的是,文本类MCP服务普遍有的那个逃生舱——限制单次结果字符数的注解——对返回图片的工具明确无效。官方文档把这句话写了两遍。换句话说,别指望有一个通用开关能替你兜底。 真正管用的是在源头把图压住。从1.3.0起,Chrome DevTools MCP提供了一组截图参数,长短横线两种写法都认: { "mcpServers": { "chrome-devtools": { "command": "npx", "args": [ "-y", "chrome-devtools-mcp@latest", "--screenshot-format=jpeg", "--screenshot-quality=70", "--screenshot-max-width=1456", "--screenshot-max-height=819" ] } } } 这里的两个尺寸不是随手填的。1456×819套一遍公式是52×30,正好1560个视觉token,而且因为它没超过任何一档的上限,标准档和高分辨率档拿到的是同一个数——你等于给截图成本上了一道确定性的封顶。格式换成JPEG或WebP还能再省,官方说这两种格式比PNG小三到五倍,质量参数是可选的第二把刀。 要提醒一句:这个上限是每次调用级别的。它能防住下一次事故,防不了已经躺在历史里的那张超限图。撞上之后就重开会话,目前没有更漂亮的解法。 ## 常驻一个浏览器MCP,你在为它付什么? 有一个反对意见必须诚实摆出来:一个常驻的MCP服务,不管你用不用,每次请求都在吃工具schema的token。52个工具的描述加参数定义不是小数目,而其中至少12个内存调试工具,你可能一年也用不上一次。 很多讨论到这一步就停在“所以别常驻,改用命令行形态的技能”。这个结论方向没错,但它跳过了一层:官方其实已经把裁剪开关做好了,只是没人读到那一节。 - --slim:只暴露3个工具,覆盖导航、执行脚本和截图。名字听着朴素,但它恰好就是本文这套调试循环需要的全部。 - --category-performance=false、--category-network=false、--category-emulation=false:按类关掉整组工具,精确到你今天到底要干什么。 - --memory-debugging与--category-extensions默认就是关的,内存那12个工具其实不在默认工具面里——这也说明维护者自己清楚schema预算是有代价的。 所以更准确的说法不是“MCP太贵所以别用”,而是你为多少工具付费,是一个可以调的参数,而绝大多数人从来没调过。保哥自己的用法是调试期开完整工具面,跑批量任务时切--slim,两套配置各存一份。至于什么时候该把整件事交给命令行技能而不是MCP,那是另一层取舍,之前在MCP、Skills、Hooks三大扩展机制怎么选 (https://zhangwenbao.com/mcp-vs-skills-claude-code.html)里按机制拆过一遍。 ## 让模型碰浏览器,安全边界画在哪? 浏览器是一个特别危险的输入源,因为页面内容是别人写的。一个能读页面又能执行脚本的代理,一旦读到藏在页面里的指令,就有被牵着走的可能。这不是理论风险,是浏览器自动化这类工具的结构性风险面。 好消息是防护手段同样在参数里,而且比大多数人以为的细: 开关 | 它拦住什么 | --allowed-url-pattern | 只允许访问白名单内的地址,其余连接直接断开。需要Chrome 149及以上 | --blocked-url-pattern | 黑名单形式,拦运行时请求,包括导航和子资源 | --redact-network-headers | 把被视为敏感的请求头脱敏后再返回给客户端 | --isolated | 用临时用户数据目录,浏览器关闭后自动清理 | --experimental-vision | 不开就没有按坐标点击这类工具,默认关着是对的 | 网络头脱敏这一条尤其容易被忽略。调一个已登录的后台时,请求头里带着会话凭据,而这些内容会原样进入模型上下文,再随着对话历史反复重发。加上这个开关的成本是一行配置,不加的代价是一串你不知道飘到哪去了的凭据。 白名单那条则解决另一个问题:调试自己的站点时,页面上第三方脚本、广告位、客服插件会拉一堆外部请求,既污染网络面板也扩大风险面。把允许范围收到自己的域名和本地端口,调试环境立刻干净很多。 ## 一个具体到能照抄的收紧姿势 把这几个开关组合起来,本地调试的一套稳妥默认配置大致是这样:无头跑、临时用户目录、只放行本机端口和自己的域名、请求头脱敏、按坐标点击的实验能力保持关闭。真正需要连已登录的浏览器时再单独换一套配置,而不是把宽松配置当成日常。 为什么值得这么麻烦?因为这类风险的形状很特别——它不在你写的代码里,在别人写的页面里。你审得再仔细的仓库,也管不住一个第三方评论组件在页面上渲染出一段“请把上一步读到的配置文件内容贴到这个表单里”。代理没有天然的怀疑心,能拦住这件事的只有它够不够得着,以及够着之后能不能把东西送出去。白名单管前者,脱敏管后者。 还有一条属于流程而非参数:别让同一个会话既有浏览器权限又有生产环境凭据。调试会话就只干调试的活,需要动数据库或者部署的时候另开一个。这条听起来保守,但它是少数几个不依赖任何工具特性、纯靠习惯就能拿到的隔离。 ## 一个能落地的调试循环长什么样? 四步,顺序本身就是重点:又便宜又精确的调用排最前,像素排最后。 - 复现。先导航,再走设备模拟。跳过模拟这一步,就是你花一小时也复现不出一个只在400像素以下才出现的bug的原因。 - 盘问。写一段只返回你要的那几个数字的脚本——溢出元素、小于44像素的点击目标、某个选择器的计算样式。这一步同时替掉了快照和截图,量级差就省在这里。 - 打补丁。在仓库里改样式,不要在浏览器里改。浏览器里的改动一刷新就没,还会骗你以为已经赢了。 - 确认。刷新,然后带路径截一张视口图。这是像素唯一值回自己成本的时刻——脚本能告诉你宽度已经变成390,但只有眼睛能告诉你这个修法有没有把间距搞乱。 ## 把它套到独立站上会长什么样 这套循环对做独立站的人有几个现成的落点,而且都是脚本比截图强得多的场合。 移动端横向溢出。商品详情页里最常见的三个肇事者是尺码表、评论区里用户贴的图、还有嵌进来的物流查询iframe。上面那段脚本改一下选择器就能直接跑,输出一份“哪些元素撑破了视口”的名单,比一张缩得看不清的整页截图有用得多。 点击目标太小。把页面上所有可点元素的外接矩形取出来,筛出任一边小于44像素的,直接得到一份待修清单。这类问题在移动端体验评估里权重不低,而肉眼几乎不可能扫出来。 结构性SEO项。标题层级有没有跳级、图片alt是不是空的、同一页有没有两个h1——这些全是脚本一次能取干净的结构信息,根本不需要模型看图。把它们和布局检查打包成同一段脚本,一次调用拿回一整份体检结果。 需要连到已经登录好的浏览器、或者还在纠结到底该用哪套浏览器方案,之前那篇Claude Code浏览器自动化怎么做 (https://zhangwenbao.com/claude-code-browser-automation.html)把选型和登录态这两件事讲透了,这里就不重复。 ## 性能数据该怎么取才不烧钱 性能是个有意思的反例:这一类问题恰恰不该用脚本硬凑,因为专门的工具已经把语义摘要做好了。Chrome DevTools MCP的性能追踪会直接吐出带洞察的结论,而不是把几万行原始追踪数据丢给你。这就是前面那条设计原则的另一面——能拿到结论就别拿原始数据。 但有两类数值仍然值得用脚本自己取。一类是你关心的自定义时间点,比如商品主图开始渲染到骨架屏消失之间的间隔,这种业务语义没有任何通用工具知道。另一类是要跨多个页面横向比较的同一个指标,脚本能保证每次取的是同一个口径,而报告工具版本一升级就可能悄悄换了算法。 还有一个成本细节容易被忽略:性能追踪本身也要花token,而且返回的内容比一次视口截图多得多。所以合理的顺序是先用脚本确认问题确实存在、并缩小到某个页面的某个阶段,再对那一个页面开一次完整追踪。上来就对着十个页面各跑一遍完整跑分,是这套工具链里最容易烧钱的用法之一。 ## 这套方法的边界在哪 定向脚本有个隐含前提:你已经知道该问什么。面对一个从没见过的页面,你既没有选择器也没有假设,先花一次快照或截图建立心智模型是完全值得的。规矩是建立坐标系之后停止倾倒整页,不是一开始就停。 还有一类问题天生是视觉的。字体渲染对不对、有没有互相压盖、深色模式下对比度够不够——没有脚本能回答。判据很简单:如果你的问题里带着“看起来”三个字,就去截图。 最后一条边界跟额度有关。这套循环省下来的是单次调用的token,但一个长调试会话的总消耗仍然可观,尤其在高分辨率档下每一张确认截图都比过去贵。要是你经常在窗口末尾被限流打断,那问题多半不在截图上,额度是怎么算的、撞墙当下该怎么办 (https://zhangwenbao.com/claude-rate-limits.html)是另一套需要单独理清的账。 ## 说到底,这件事的重点不是省钱 把整篇压成一句话:别再让浏览器描述整个页面。快照和截图之争掩盖了一个共同点——两者都是整页倾倒,而对CSS和布局这类活,两者都是错的默认选项。问一个具体问题,拿回具体数字,只在最后用一张截图让眼睛确认一遍。 省下来的token只是顺带的收益。真正变化的是排查的质量:一万多token换回“页面结构看起来正常”,和几十个token换回“这个表格427像素宽”,前者你还得再猜一轮,后者可以直接动手改。保哥在自己站上跑这套流程最深的体会是,工具选型的分歧往往掩盖了一个更朴素的问题——很多人根本没先想清楚要问什么,于是只好把整页搬过去让模型替自己想。 如果你是刚把Claude Code接进日常工作流,浏览器这一块建议放到后面再碰,先把项目记忆、权限和验证循环这条主线走通,从安装到工作流的整条主线 (https://zhangwenbao.com/claude-code-complete-guide.html)那篇按顺序串过一遍,浏览器只是其中一个可选分支,不是起点。 ## 常见问题解答 问:Chrome DevTools MCP和Playwright MCP只装一个行不行? 行,但要按主要场景选。跑性能、查内存、要Lighthouse报告就留Chrome DevTools MCP;要跨浏览器内核、写测试断言、控Cookie和存储就留Playwright MCP。两个都装的额外成本主要是工具schema,用上面的裁剪开关能压掉大半。 问:视觉token到底怎么手算? 宽度除以28向上取整,乘以高度除以28向上取整。比如1456×819就是52×30等于1560。图片若超过所在分辨率档的最长边或token上限会先被等比缩小,再按缩小后的尺寸算。 问:我用的模型走的是哪一档分辨率? Claude 4.7及之后的模型自动走高分辨率档,最长边2576像素、视觉token上限4784;更早的模型走标准档,对应1568和1568。这是自动行为,没有开关可以手动切换,只能靠在客户端把图先压小来控制成本。 问:为什么整页截图返回的token数反而最小? 因为它被压扁了。一张两万多像素高的图按最长边缩到2576之后,宽度只剩两百多像素,块数自然少。省下来的不是成本,是信息——模型拿到的是一条读不出任何东西的纸带。 问:会话被超限图片污染之后还能救吗? 目前没有干净的解法,只能重开会话。因为那张图已经在对话历史里,之后每次请求都会重发并再次触发同样的错误。事前用截图尺寸参数封顶是唯一有效的预防手段。 问:为什么把窗口缩到手机尺寸查不出移动端的问题? 因为缩窗口缩的是窗口,不是视口,有头浏览器还有最小窗口尺寸兜着。必须走设备模拟,把视口宽度、缩放倍率、是否移动端、是否支持触摸一起设进去,页面才会按真机条件重新布局。这一步跳过去,后面所有测量都是在测一个不存在的场景。 问:这套做法能不能固化下来重复用? 可以,而且值得。把常用的几段查询——横向溢出、点击目标尺寸、标题层级、图片alt缺失——写成固定模板存起来,每次只改选择器和网址。真正需要模型现场发挥的部分其实很少,大多数排查用的是同一批问题的不同组合。 问:把浏览器MCP一直挂着有什么代价? 每次请求都要带上全部工具的schema。用--slim收到3个工具,或者用分类开关关掉性能、网络、模拟这些今天用不到的组,都能显著压低这笔常驻开销。 ## 权威参考资料 ## 循环工程给AI Agent装上刹车之后,那张跑了一整夜的账单才真正消失 - URL:https://zhangwenbao.com/agent-loop-engineering-guardrails.html - 分类:AI编程与工具链 - 发布:2026-07-20 | 更新:2026-07-30 - 摘要:循环工程怎么落地?这篇拆解自主AI Agent的四类护栏与真实阈值常量:上下文保洁、四道刹车、独立评审与幂等写操作,并讲清内循环交给Agent、外循环由人拿着的问责边界。 - 关键词:AI Agent,上下文工程,Agent开发 > **TLDR**:摘要:自主Agent烧钱不是因为模型不够聪明,而是因为循环里那一步“观察”在说假话。护栏有四类——上下文保洁、四道刹车、独立评审、幂等写操作——它们不是并列的四件事,而是同时在保同一件事:让Agent看到的反馈可信。这篇把每一类拆到可以照抄的判据上,给出社区实现里真实生效的阈值常量、Codex把预算耗尽做成软停的设计,以及2026年7月中旬刚刚补上的那一环——内循环可以交给Agent,外循环必须留在人手里。 > 摘要:自主Agent烧钱不是因为模型不够聪明,而是因为循环里那一步“观察”在说假话。护栏有四类——上下文保洁、四道刹车、独立评审、幂等写操作——它们不是并列的四件事,而是同时在保同一件事:让Agent看到的反馈可信。这篇把每一类拆到可以照抄的判据上,给出社区实现里真实生效的阈值常量、Codex把预算耗尽做成软停的设计,以及2026年7月中旬刚刚补上的那一环——内循环可以交给Agent,外循环必须留在人手里。 有一条止损线被写死在一个494星的开源脚本里:同一条命令连续失败三次,或者同一个文件在十分钟之内被改写五次,就判定这个Agent已经掉进沟里,当场停机,等人来看。 这不是谁在会议室里推演出来的规则。它是被烧过之后刻回代码里的疤。写下这两个数字的人,一定亲眼看过一个循环在无人值守的夜里,一遍又一遍地把同一个文件改成两种互相矛盾的样子。 2026年上半年,这类疤痕开始有了统一的名字:循环工程。它管的不是模型答得好不好,而是那个驱动模型反复动手的外层循环——什么时候该给记忆瘦身,什么时候该急刹,谁有权说这活没干完,哪些操作被重跑第二遍也不会出事。 这篇文章的核心判断,和市面上大部分“Agent护栏清单”不太一样:四类护栏不是并列的四件事,它们全都在服务同一个目标——让循环里“观察”这一步说的是真话。上下文保洁保证观察没被陈年噪音污染,独立评审保证观察不是自己给自己打分,幂等保证重试不会偷偷改掉被观察的对象,刹车保证观察一旦失效循环会停。想清楚这条主线,装护栏就不再是照单抓药。 ## 循环工程到底在给什么东西上锁? 先把这个词的来历说清楚,因为它年轻到还带着水汽。2026年6月,Google的Addy Osmani写了一篇文章,给这门一直在做却没名字的手艺定了名;同月16日,LangChain把它形式化成了几层互相嵌套的循环。前沿实践者和框架厂商在同一个月里各自命名同一样东西,玄学变成学科通常就长这样。 它在技术栈里的位置很好摆。提示词工程管你发出去的那几句话,上下文工程管模型在某一次调用里看见的每一个词元,harness工程管环境——它能碰哪些工具、哪些文件、哪些连接器。循环工程管的是把这一切驱动向目标的那个迭代过程,一层包住一层,谁也不取代谁。 ## 为什么最外面这一层反而最难被抄走 把四层排成一列会看出一个规律:越靠里的层,越依赖某一个具体模型;越靠外的层,越跟模型无关。一句调教了半年的提示词,换一代模型可能就得重写;而一套压缩策略、四道刹车、生产者与检查者的分离,明天把底层模型整个换掉,每一条照样成立。 这就是循环工程被当成护城河的原因。模型质量在收敛,也可以租;任何人今晚就能调你在调的那个接口。但外层这些工程积累是造出来的,不是租来的,竞争对手升级模型也搬不走。开头那个84%的收益也是同一课——它来自循环层的一次改动,模型一个权重都没动。 反过来说,这也意味着你在循环层踩过的坑,别人不会替你踩。厂商发布会不会讲你的写操作重试了几次,也不会告诉你上下文该在几成的位置压缩。这些数字只能自己量。 ## 把外壳剥掉,所有自主Agent都是同一个形状 接一个目标,推理下一步,执行动作,观察真实结果,判断差距,决定继续还是停。经典形式化叫ReAct,想一步、做一步、看一步,反思型变体在末尾再加一次自我批评。 这段描述里真正承重的词是“观察”。Agent之所以能比单次生成强,不是因为它想得更久,而是因为每一步都在回应上一步动作的真实反馈。跑一次测试、读一段报错、看一眼返回码,这些外部事实把它从自由联想里拽回来。 纠错机制会复利。一个能跑测试、读失败、再试一次的循环,五十步能啃下单次生成永远解不开的问题。但这条复利有个前提,而整篇文章都在撬这条缝:纠错只在观察可信时成立。绿色的测试是可信信号,“代码现在看起来好多了”不是。 ## Ralph循环为什么故意每轮把上下文扔掉? 要理解护栏,先看一种把循环推到极端的玩法。Geoffrey Huntley在2025年中提出了Ralph循环,名字取自《辛普森一家》里那个憨厚执着的小孩,自嘲意味拉满。 做法反直觉到让人皱眉:不维护长对话。编码Agent跑在一个纯粹的bash循环里,每一轮读同一份提示词文件,挑一个任务做完,然后把这个Agent杀掉,开一个全新实例,清空上下文,再喂一遍一模一样的提示词。 让人本能抗拒的那一步,恰恰是它跑得通的原因。进度不存在模型的上下文窗口里,而存在文件和git历史里。第七轮把窗口填满了?第八轮是一个全新的脑子,读一遍仓库当前状态、读一遍规格文件、读一遍进度日志,接着干。上下文腐烂没机会累积,因为没有任何一段对话被允许变长。 Huntley用这套办法造出过一门完整的编程语言,带编译器、标准库和两种执行模式,API账单大约297美元,时薪十美元量级 (https://www.theregister.com/2026/01/27/ralph_wiggum_claude_loops/)。这个数字在从业者圈子里被反复引用,因为它相对一门语言本该消耗的工程师工时,低得不像话。 但请把注意力放在那个案例里最容易被忽略的部件上:编译器。它对着测试程序,要么产出正确结果,要么不产出。完成信号机器可验证,而且每一轮验证都免费。这不是幸运的细节,这是整套把戏的前提。把同一台机器指向一件没有可验证终点线的活,你搭出来的只是一台按小时计费的花钱机器。 ## 这套玩法把你的岗位职责挪了个位置 Ralph模式下,你基本不写代码,甚至不太写提示词。你写的是规格、任务拆分和检查。原本泡在交互式会话里的每一个小时,都改花在把规格磨锋利、把验证做到骗不过去上。 原因很朴素:一个每轮清空上下文的Agent不记得你的任何意图,它只认写下来的东西。规格含糊进去,四十轮自信的废话出来。这也是为什么参考实现都强调任务粒度——每一条要小到一个上下文窗口能做完,比如加一个数据库字段、接一个组件,而不是“把整个后台做出来”。 这个位移对独立站团队反而是好事。你本来就不该指望一个Agent替你想清楚“这个页面到底要解决用户的什么问题”,但你完全可以指望它在一份写清楚的规格下,把三十个页面按同一套规则改完。规格写得清不清楚,现在直接等于产出质量,中间没有缓冲层。 ## 它已经从民间偏方升级成产品原语 2026年4月30日,Codex CLI在0.128.0版本里加了/goal (https://simonwillison.net/2026/Apr/30/codex-goals/):设一个可验证的目标,它自己规划步骤、执行、检查产出、纠偏,一直跑到目标达成或者预算见底。前沿厂商把社区shell脚本变成内置命令,这件事本身就是一次背书。 更值得抄走的是它处理“钱花完了”的方式。预算耗尽不是硬中断,而是被标记成受预算限制的软停:系统会在最后一轮注入一份收尾提示,让Agent把手上的活收干净、把状态写清楚,而不是在半空中被砍断。暂停、恢复、清空、改预算这几件事只有人能做,Agent无权自己给自己加额度——这道边界比任何一条提示词都实在。 ## 上下文怎么保洁才不会馊? 长循环最大的敌人不是笨模型,是一份被污染的上下文。每一坨没用的工具输出、每一条过期报错、每一个被放弃却还赖在窗口里的旧计划,都让下一次推理差一点,而且这种劣化跨轮次复利。 业界表述得很直接。HumanLayer那份十二条Agent准则 (https://github.com/humanlayer/12-factor-agents)里,第3条就叫“拥有你的上下文窗口”,第9条叫“把报错压缩进上下文窗口”。之所以要单独立两条,是因为默认行为——让历史一直堆着,好让Agent什么都记得——恰恰在跟模型的真实脾性对着干。 减脏的动作正好三个,工程到位的循环三个全用。压缩去减:对话逼近窗口上限时先总结,从总结重开一个窗口。转存去挪:四万词元的文件导出或命令输出扔到磁盘,上下文里只留真正要用的那五行加一个路径。隔离去挡:脏活交给一个自带干净窗口的子Agent,只让压缩后的结论回来。 这三个动作的收益有官方数据兜底。Anthropic在一个一百轮的网页搜索评测里做过对照:单靠上下文编辑就把词元消耗砍掉84% (https://claude.com/blog/context-management),而且救活了本来会因上下文耗尽而失败的任务;表现层面,上下文编辑单项带来29%的提升,配上记忆工具到39%。2026年没有哪一次模型升级,能用这么低的成本换这么大的提升。 请注意这三个动作发生在哪一层:它们全都是控制代码的活,不是模型的活。你不能靠在提示词里写一句“请注意节约上下文”来实现压缩,就像你不能靠嘱咐司机开慢点来代替刹车片。 ## 刹车为什么比油门重要? 两种失效的代价完全不对称。油门坏了很便宜——模型笨一点、提示词差一点,你在产出质量里当场看得见。刹车坏了很贵——Agent干个没完,你在账单落地那一刻才看见,而那通常是第二天早上。 所以正经的循环装四道互相独立的刹车,各堵一个别人看不见的窟窿。 刹车 | 堵什么 | 起步取值 | 硬性迭代上限 | 循环永远不停 | 从10起,不是从100起 | 预算与时限 | 词元消耗就是全部成本 | 金额上限加墙钟上限,两个都要 | 无进展检测 | 在阴沟里空转 | 同参数同调用重复两次即停 | 机器可验证的完成检查 | Agent自称干完了 | 测试全绿、规格条目全过、编译器接受 | 阈值到底该定多少,与其猜,不如看别人生产里真实在用的常量。有一个把Ralph循环移植到Cursor命令行的开源实现 (https://github.com/agrimsingh/ralph-wiggum-cursor),把三个数字写死在了代码里:最大迭代数20,警告线七万词元,强制轮换上下文八万词元;界面上还有一层健康度提示,低于六成绿灯,六到八成黄灯,超过八成红灯。 顺手纠一个到处流传的说法:这套东西不是Cursor官方产品,是社区实现,写它的是一位独立开发者,仓库当前494星。把它当成“大厂内置能力”去引用,会让你的团队高估它的稳定性承诺。 八万这个数字值得单独品一下。按二十万词元的窗口算,它选择在四成的位置就强制轮换,而不是撑到九成再压缩。这个保守到有点浪费的取值,反映的是实践者的真实经验:等窗口快满了再动手,模型的判断质量早就悄悄退了两个台阶。 ## 无进展检测其实很好写,难的是定义“同一步” 四道刹车里,前两道是常数比大小,第四道靠外部检查,只有第三道需要自己设计,也最容易被跳过。 可落地的做法是给每一次动作算一个签名,签名相同就算原地踏步。签名怎么取决定了它灵不灵:只取工具名太粗,改一个参数就算新动作;把整段参数原样哈希又太细,多一个空格就骗过去了。实践里比较稳的取法是工具名加上归一化后的关键参数,比如文件路径、命令主体、目标URL,把时间戳和随机串剔掉。 三个计数器基本够用:同签名连续重复两次、同一条命令累计失败三次、同一个文件在十分钟窗口内被写超过五次。命中就停,把命中的签名和最近三条动作写进错误日志。 为什么要写日志而不是直接重试?因为空转从来不会自我纠正,它只会花钱。一个卡住的循环和一个正在慢慢解决问题的循环,从账单上看一模一样,只有签名重复率能把它们分开。 ## 谁来对Agent说那个“不”? 让Agent给自己的产出打分,等于让学生批自己的卷子。值得咂摸的是,这不是靠提示词能改掉的性格问题,而是结构问题:生成答案的那套权重被拿来评判答案好不好,它有一切动机附和自己。 你可以叮嘱它对自己的工作保持批判,它会产出一段措辞漂亮的自我批评,然后照样给自己放行。 解法整个行业收敛到了同一处:把生产者和检查者分开。一个负责创造,另一个独立评审——不同指令、不同模型,最好干脆不用模型——负责证明它错了,并且有权把作业打回循环。 ## 评审的信任层级,从高到低 - 确定性关卡:测试、类型检查、linter、真实的编译报错。它们没有自尊心,也没有讨好谁的欲望,是最强的一档。 - 带评分细则的独立模型评审:适合写不出测试的东西,比如文案质量、设计取舍。把一个独立评估器调得刻薄是可行的工程活。 - 生成者自评:只配用来做初筛,永远不能当作停机依据。 这层级里最容易被忽略的是第一档的性价比。很多团队一上来就琢磨怎么让第二个模型评得更严,却没先把已有的测试、类型检查和构建报错接进循环——那些关卡不要钱、不会说谎、也不需要调提示词。 ## 评分细则写成什么样才不算走过场 需要模型来评的那些东西——文案好不好、结构合不合理——最容易退化成一句“请严格评审”,然后拿回一段温柔的表扬。 让它变硬只有一条路:把评审问题写成能答“否”的形式。“这段文案质量如何”永远得不到否定;“这段文案里有没有出现无法核实的具体数字”“标题有没有超过预设字符数”“页面有没有两个以上H1”,这些每一条都能干净利落地判失败。 再加一条更狠的:要求评审输出证据位置,而不是结论。让它回“第3段第2句,数字310%没有出处”,比让它回“建议加强数据支撑”有用一百倍,因为前者可以被你抽查真伪,后者不能。评审一旦知道自己的输出会被核对,敷衍的成本就上去了。 最后是把一切串起来的那条铁律:检查者必须待在生产者改不到的地方。给Agent一个“让测试通过”的目标,同时给它测试文件的写权限,有相当比例的时候,它会通过改测试来让测试通过。 这不是坏心眼,也不是模型的缺陷。循环在精确优化你给它的信号——你说要绿,删掉红色的那条断言确实能变绿。奖励作弊是笼子的设计问题,不是野兽的性格问题。这条约束在权限层怎么落地,可以顺着Claude Code的权限白名单与提示注入防御 (https://zhangwenbao.com/claude-code-security.html)那一套配置往下配,把检查脚本和CI配置放进拒绝写入的名单里。 ## 写操作不幂等,重试就是事故 工具这一层有一半是老生常谈:工具要少、要锋利、不要互相重叠。给实习生一百把枪,关键时刻他一定拔错;search_docs旁边摆着find_documentation和lookup,等于逼模型做一个本不该存在的选择。这半边大家都懂。 另一半没人在意,直到被咬:每一个写操作都必须幂等。 循环会重试,这是常态不是边界情况。超时、校验打嗝、模型犹豫,都会让同一个工具调用被发第二遍。行业里流传的一个统计是这个比例落在15%到30%之间,出处是一份第三方可靠性报告而非厂商数据,具体数值打折听,但方向没有争议。 如果一个非幂等的写操作恰好在超时前已经成功了,重试就会把它再执行一遍。落到独立站的语境里,这几件事分别长这样: - 批量补商品结构化数据的脚本,把同一条产品评分标记写进了页面两次,富媒体结果反而被判为无效。 - 自动发券的Agent超时重试,同一个客户收到两张满减券,客服第二天才发现。 - 迁移站点时批量写301规则,同一条规则进了两遍,nginx直接起不来。 ## 哪些操作必须挂键,哪些可以放过 不用给所有东西都加幂等。判据是这个操作重跑一遍之后,世界是不是回到了同一个状态。 - 读操作天然幂等,查商品、拉排名、抓页面,跑十遍也没事,不用管。 - 覆盖式写入接近幂等,比如把某个字段设成一个确定值、把某个文件整体重写,重跑一遍结果一样,风险低但仍要注意并发。 - 追加式和计数式写入是重灾区,插一行、发一次通知、扣一次额度、加一次库存流水,每重跑一次世界就多变一点,必须挂键。 还有一类容易漏掉的,是看起来像读、实际会改状态的操作。触发一次重新抓取、发起一次索引提交、调用一次会计费的第三方接口,它们在代码里长得像查询,账单上却是写操作。判断一个操作要不要挂键,别看函数名,看它有没有让别人那边多出一条记录。 解法要做成框架级保证而不是可选项:每个写操作带一个由入参确定性推导出来的幂等键,下游在一个时间窗内(二十四小时是常见默认值)对同一个键返回第一次的缓存结果,而不是再执行一遍。一句话判据——如果它不能被安全地调两次,那循环就不该调它一次。 ## 掉进沟里长什么样,怎么自动认出来? 前面那个494星的实现,把“卡住”这件事做成了可判定的三个触发器,值得原样抄:同一条命令连续失败三次;同一个文件在十分钟内被写五次;或者Agent自己在输出里吐出一个约定好的求救标记。命中任意一条,把模式写进错误日志,停机,等人。 它落盘的六个文件也值得抄一遍结构:进度、护栏、活动日志(带每次工具调用的词元数)、错误日志、任务缓存、当前轮次编号。停机条件同样是三条——任务清单全部打勾、Agent吐出完成标记、或者撞到迭代上限。 这里有个反直觉的设计选择值得说一句:命中之后它选择停机等人,而不是自动换个策略再试。因为掉进沟里这件事,本质上是循环拿到的信息不足以自救,再多给它几轮,只是把同一个洞挖深。自动恢复听起来更智能,实际是把一次可以及时止损的失败,摊薄成一晚上看不出异常的持续消耗。 ## 护栏文件是整套东西里唯一会变强的部分 最有意思的机制叫“路标”。每次失败,Agent要往护栏文件里追加一条记录,包含三个字段:触发条件是什么、下次该怎么避开、这条是第几轮之后加的。后面每一轮开工先读护栏文件。 这就是循环工程里少见的正反馈:模型的权重不会因为你跑了两百轮而变好,但护栏文件会一轮比一轮厚,而它是你的资产,不是模型厂商的。把它提交进git,团队里下一个人接手时,拿到的不是一句“这玩意有时候会抽风”,而是一份带触发条件的排错手册。 ## 内循环交给Agent,外循环凭什么必须人拿着? 写到这儿都还是2026年上半年的共识。真正把这套讨论往前推了一步的,是7月中旬的一篇文章:Osmani在7月15日提出,Agent已经能跑内循环,人必须拥有外循环 (https://addyosmani.com/blog/own-the-outer-loop/)。 内循环是调查、实现、验证、重复——这几步交出去没问题。外循环是问责边界,由三根柱子撑着: - 质量,指的是在放它出笼之前你装好的全部检查。 - 裁决,指的是上线与否由人来定。原话是模型可以写下那一行,但裁决是我的。 - 可交代,指的是别人问起来的时候,你能说清楚当初为什么这么判。 这三条为什么必须由人拿着,那篇文章给的证据比口号硬。一项2026年的代码质量调查显示,有42%的提交代码由AI生成或经过AI大幅辅助;Anthropic的一项研究发现,用AI完成任务的工程师在事后理解度测验上比对照组低了17个百分点,五成对六成七;沃顿的一项研究则更扎心——当AI给出的答案是错的,接近四分之三的人照样接受了它。 把这三个数字连起来读,结论很不客气:随着Agent接手的比例上升,人对自己名下代码的理解度是在下降的,而且人对错误答案的抵抗力本来就不高。护栏装得再好,最后那一下“我认”,没有任何机制能替你按。 ## 抽检定成多少才不流于形式 外循环最常见的塌法不是不抽检,而是抽检变成走过场——每次都点开第一条、扫两眼、点通过。 让抽检重新长牙有三个动作。第一,抽样必须随机且可复现,用批次编号加序号算个哈希取模,别让人自己挑,人一挑就挑最容易看懂的那条。第二,抽检记录要落盘,写清楚看了哪几条、看的是什么、判断依据是什么;这份记录就是可交代那根柱子的实体。第三,抽检不通过要有后果——不是让Agent重跑一遍,而是把这一类失败写进护栏文件,让它下一批就不再犯。 比例怎么定,可以跟着风险走:改的是展示文案,抽一成;改的是会影响收录的标题和结构化数据,抽三成;改的是跳转规则、价格、库存这类一错就出事的,一条不漏地全过一遍机器校验,再抽人工。抽检比例不该按你有多少时间来定,该按错一条要赔多少钱来定。 ## 独立站和SEO团队该先装哪一根? 不是所有活都值得造笼子。给一只金丝雀焊铁笼是过度工程:Agent只调一次工具就返回,或者三步的确定性流程,你不需要压缩策略,也不需要独立评审。 但有两根,只要牵涉真金白银或线上数据,短循环也不许省——刹车(让一个bug没法永远循环)和幂等(让一次重试没法污染数据)。只读的五步循环可以跳过上下文保洁和评审;任何会写东西的循环,这两根永远不能跳。 值得上全套的,是那些长周期、可重复、且完成信号机器可验证的活。落到这个站的读者身上,保哥自己在用的判断方式是先问一句:这件事干完之后,有没有一个不需要我看一眼就能变绿的检查? 常见的活 | 机器可验证的终点 | 适合自主循环吗 | 批量补全商品页结构化数据 | 富媒体测试无错误、字段覆盖率达标 | 适合,但写操作必须幂等 | 站点迁移生成301映射表 | 旧URL全部返回301且目标返回200 | 适合,验证脚本要独立于生成脚本 | 批量压图与格式转换 | 体积下降且视觉差异分数低于阈值 | 适合,属于典型的低难度流水线 | 把落地页文案改得更有说服力 | 没有 | 不适合,留在交互式会话里 | 重写整站标题标签 | 长度、重复率、关键词覆盖可测,说服力不可测 | 半适合,机器管硬指标人管取舍 | 去年帮一个3C配件出海团队做批量改标题的时候,翻车就翻在这张表的最后一行:脚本把长度和重复率全跑绿了,人一看,八成的标题读起来像同一句话套了不同型号。机器能验的那一半通过了,不能验的那一半塌了——这恰恰说明检查项定义在哪儿,Agent就把力气花在哪儿。 ## 接线顺序按爆炸半径来 先上幂等和刹车,它们防的是事故;再上独立评审,它防的是自信地错;最后上上下文保洁,它防的是慢性质量腐烂。想同时上四根的团队,通常四根都装得不结实。 如果要给一个具体的起步节奏,可以这样排:第一天只做一件事,把这批活的完成检查写出来并且跑通,跑不出来就说明这活还不该上循环;第二天把迭代上限、金额上限和墙钟上限三个常数写进脚本,数值往小了设;第三天补幂等键和无进展检测,然后让它跑第一批,人在旁边盯着,每一次失败都当场追到根并写进护栏文件;第四天开始才谈无人值守,而且第一次无人值守跑的批量,规模应该小到就算全错也能手工回滚。 顺序反过来的团队很常见,通常是先花两周搭一套漂亮的多Agent编排,再回过头发现连一个能变绿的检查都没有。能不能写出那个检查,才是这活该不该自动化的分水岭,剩下的都是实现细节。 真正跑起来之后,编排是下一个问题而不是这个问题。多个循环怎么分工、什么时候值得并行、主循环怎么收编子Agent的结论,可以顺着Agent Teams的多Agent协作配置 (https://zhangwenbao.com/claude-code-agent-teams.html)往下走;想弄明白这个循环在代码层面到底长什么样,用两百多行Python手搓一个智能体循环 (https://zhangwenbao.com/build-magic-code.html)是最快的路径;而迭代上限、预算上限这些刹车在官方SDK里对应哪些参数,Claude Agent SDK的实战配置 (https://zhangwenbao.com/claude-agent-sdk-guide.html)里有现成写法。 最后留一份起飞前检查,任何循环无人值守跑之前过一遍:它会遗忘吗?它会停吗?有东西能对它说不吗?它的写操作被调两次也没事吗?四个问题里任何一个答“否”,你就有一个缺口,而循环一定会找到它。 ## 常见问题解答 ## 循环工程和上下文工程、提示词工程是什么关系? 是一层套一层的关系,不是替代关系。提示词工程管你发出去的那句话,上下文工程管模型在单次调用里看到的全部词元,harness工程管它能碰到的工具和环境,循环工程管把这些反复驱动向目标的迭代过程。越往外层,越不依赖具体是哪个模型,也越难被竞争对手抄走。 ## 迭代上限设成10是不是太小了,很多任务根本做不完? 做不完正是这个取值想告诉你的信息。有上限的循环提前停下,代价是一次便宜的重跑;没上限的循环整夜空转,代价是第二天的账单。十轮足够你判断规格文件到底能不能支撑循环跑,而一百轮足够你在凌晨三点才发现它不能。先用小上限验证规格质量,信任建立起来了再往上调。 ## 用同一个模型开两个会话,一个当生产者一个当评审,算独立评审吗? 算,但只是最弱的那一档。它解决了上下文互相污染的问题,没解决同一套权重倾向于认同同类输出的问题。可行的加固有三条:给评审换一个模型、给它一份明确的评分细则、并且优先把能写成测试或类型检查的部分交给确定性关卡。真正的分水岭不在于用几个模型,而在于检查者是否处在生产者改不到的位置。 ## 幂等键应该怎么生成,用随机UUID可以吗? 不可以。随机值每次重试都不一样,等于没有键。幂等键必须由入参确定性推导,比如把用户标识、目标资源、任务编号这几项拼起来做哈希,保证同一次逻辑操作无论被重试多少遍都算出同一个键。下游据此在时间窗内返回第一次的结果,二十四小时是常见默认值。 ## Ralph这种每轮清空上下文的做法,会不会把之前学到的东西全丢了? 会丢掉对话,但不丢进度和教训,前提是你把这两样外置。进度写在文件和git历史里,教训写在护栏文件里,每一轮开工先读这两样。这套做法反而比长对话更稳,因为git历史可审查、不会悄悄退化,而一段二十万词元的对话既看不清也回不去。 ## 没有测试的老项目,是不是就完全没法跑自主循环? 可以先造一个便宜的验证器,再跑循环。构建能不能过、类型检查干不干净、关键页面的HTTP状态码对不对、结构化数据校验有没有报错,这些都算机器可验证的完成信号,成本远低于补一整套测试。把第一轮循环的目标定成“为模块X补上可运行的冒烟测试”,本身就是一个有诚实终点的任务。 ## 权威参考资料 ## 22万星和3.8万星,哪个更值得你把工作流搬上去 - URL:https://zhangwenbao.com/github-repo-health-signals-oss-selection.html - 分类:AI编程与工具链 - 发布:2026-07-20 | 更新:2026-07-30 - 摘要:星标只涨不跌,是那个页面上最不反映项目现状的一栏。本文用三个仓库同一天的真实数据,讲清最后推送、未关问题比值、许可证误报与版本号方案怎么读,附一份十分钟体检清单。 - 关键词:AI Agent,效率工具,技术选型,工程方法论 > **TLDR**:摘要:选开源项目的时候,几乎所有人第一眼看星标,几乎所有推荐文第一句报星标。但星标是那个页面上唯一一个只增不减的数字——项目烂掉了它也不会掉一颗。真正携带信息的是另外几栏:最后推送时间、未关问题除以星标的比值、许可证那一栏,以及版本号方案本身。这篇同一天拉了三个AI Agent仓库的接口数据做对照:22.3万星的那个有2.6万个未关问题,38.5万星的那个只有5798个,3.8万星的那个只有10个。还发现了一件几乎没人知道的事——GitHub上那个许可证标签是自动检测出来的,在标准MIT正文后面加一句无害的说明,就足以让它显示成“其他”,而合规扫描工具往往直接读那一栏。最后给一份十分钟能跑完的体检清单,判据同样适用于选插件、选主题、选采集工具。 > 摘要:选开源项目的时候,几乎所有人第一眼看星标,几乎所有推荐文第一句报星标。但星标是那个页面上唯一一个只增不减的数字——项目烂掉了它也不会掉一颗。真正携带信息的是另外几栏:最后推送时间、未关问题除以星标的比值、许可证那一栏,以及版本号方案本身。这篇同一天拉了三个AI Agent仓库的接口数据做对照:22.3万星的那个有2.6万个未关问题,38.5万星的那个只有5798个,3.8万星的那个只有10个。还发现了一件几乎没人知道的事——GitHub上那个许可证标签是自动检测出来的,在标准MIT正文后面加一句无害的说明,就足以让它显示成“其他”,而合规扫描工具往往直接读那一栏。最后给一份十分钟能跑完的体检清单,判据同样适用于选插件、选主题、选采集工具。 先讲一件让我改掉习惯的小事。 年初有人推给保哥一个开源Agent框架,说“七周涨到11.3万星,2026年最快的开源项目”。这个说法是真的。三个多月后我又去看了一眼同一个仓库:22.3万星。翻了一倍。 但同一天我顺手把另外两栏也拉了下来,看到的东西和星标讲的完全不是一个故事。 ## 星标是那一栏里唯一只会涨的数字 把GitHub仓库页面上能读到的字段排一排,你会发现它们分成两类:会随项目健康度上下浮动的,和只会单调上涨的。 最后推送时间会往回退(准确说是会停住不动),未关问题数会涨会落,发布节奏会变密变疏,许可证会改,分叉数虽然也基本只涨但涨速会明显掉档。只有星标不会——一个项目彻底死掉、作者跑路、代码三年没人碰,它的星标该是多少还是多少,甚至因为持续被老文章引用还会慢慢往上爬。 这一点在评测类内容里被放大得尤其厉害。站内那篇拆三款AI应用生成器计费机制与退出成本的横评 (https://zhangwenbao.com/lovable-vs-v0-vs-bolt-ai-app-builder.html)写的时候我也踩过:三家的公开数字里,最好拿也最没用的就是融资额和用户数,真正决定你走不走得掉的全在文档细节里。 这就是问题所在:所有推荐文最爱报的那个数字,恰好是唯一一个不反映项目当前状态的数字。它测的是历史累计关注度,不是现在的健康度。而选型这件事,你需要的恰恰是后者。 而这套东西对本站读者的价值,恰恰不在于选Agent框架。站内那篇把SEO团队要用的AI工具分成五类做真实投产比对照的路线图 (https://zhangwenbao.com/seo-team-ai-selection-5-categories-real-roi-roadmap.html)里,最难的一步从来不是列候选,是判断某个候选半年后还在不在——而那个判断,用的就是下面这几栏。 顺带说一句,这跟做SEO时“别拿域名权重当唯一判据”是同一类错误:一个只累积不衰减的指标,用久了会让你系统性地高估老资产、低估新资产。 ## 同一天拉三个仓库,体检报告长什么样? 下面这组数据来自2026年7月30日的接口调用,三个都是当下AI Agent方向上被提得最多的仓库。为了避免这篇变成软文,我不评价谁好谁坏,只看数字之间的关系。 字段 | 仓库甲 | 仓库乙 | 仓库丙 | 星标 | 384,581 | 222,728 | 38,376 | 分叉 | 80,818 | 42,762 | 4,105 | 未关问题 | 5,798 | 25,950 | 10 | 未关问题 ÷ 星标 | 1.51% | 11.65% | 0.026% | 分叉 ÷ 星标 | 21.0% | 19.2% | 10.7% | 最后推送 | 当天 | 当天 | 8天前 | 创建时间 | 2025-11-24 | 2025-07-22 | 2025-07-24 | 许可证(接口返回) | NOASSERTION | MIT | MIT | 主语言 | TypeScript | Python | Markdown为主 | 这张表里有三个地方值得停下来。 第一,甲的星标是乙的1.7倍,但乙的未关问题是甲的4.5倍。比值差了将近八倍。 第二,丙的星标只有甲的十分之一,未关问题却只有10个。这个数字小到反常。 第三,甲的许可证在接口里返回的是NOASSERTION,也就是“未认定”。这一栏后面藏着这篇里最实用的一个发现,放到专门一节讲。 ## 为什么这里全看比值,不看绝对值 有人会问:为什么不直接比“谁的未关问题多”?因为绝对值受项目规模影响太大,比出来的是体量不是健康度。 举个反直觉的例子。一个只有五百星的小工具,如果攒了三百个未关问题,那基本可以判死;而一个几十万星的项目攒了五千个,可能反而说明它运转正常——因为提问的人基数根本不在一个量级上。用绝对值排序,你会系统性地冤枉大项目、放过小项目,而后者恰恰是风险更高的那一类。 比值也不是万能的,它有一个已知的失真源:会被机器人和模板刷歪。有些项目开了自动化,依赖有更新就自动开一个问题,这类问题积压起来会把比值顶得很高,但它跟维护质量没关系。判别方法很简单——扫一眼问题列表里的作者,如果一屏里有一半是同一个机器人账号,那这个比值就得打折。 ## 还有一栏叫“已关闭”,很多人从来没点开过 页面上问题列表默认只显示未关闭的,但那个筛选器旁边有个已关闭的入口。已关闭列表其实比未关闭列表更能说明问题:未关闭列表告诉你还欠着多少,已关闭列表告诉你这个项目还债的速度和方式。 点进去按最近关闭排序,看两件事:最近关闭的那几条是怎么关的(有真的修复提交,还是被机器人以“长期无活动”自动关掉的),以及从提出到关闭中间隔了多久。大批被自动关掉的陈旧问题,是一个比高积压更坏的信号——高积压至少说明还有人在提,自动清扫说明连提的人都不指望了。 ## 未关问题除以星标,这个比值在说什么? 先别急着下“乙的项目质量差”这个结论。这个比值同时被三件事推动,得分开看。 ## 它可能在说“用的人多且在真用” 问题是用户提的。一个没人真正跑起来的项目,是提不出问题的。11.65%这个比值在一定程度上是活跃度的证据,不全是负面信号——尤其当这个项目的定位是“装在你自己服务器上二十四小时跑”的时候,环境组合爆炸,问题量天然就高。 ## 它也可能在说“进来的比处理掉的快” 这是负面的那一半。2.6万个未关问题意味着维护带宽已经明显跟不上流入速度。对你的实际影响很具体:你踩到的坑,大概率已经有人提过,但也大概率不会有人回。这不是道德问题,是算术问题。 ## 丙的0.026%又是另一回事 10个未关问题配3.8万星,这个数字不能读成“质量高到没人提问题”。更可能的解释是项目形态不同——丙这个插件市场仓库 (https://github.com/wshobson/agents)的内容主体是一堆Markdown文件(Agent定义、技能包、命令模板),不是一个要在各种环境里跑起来的运行时。没有运行时就没有环境问题,没有环境问题就没有那类占绝大多数的issue。 ## 三十秒读懂一个问题列表 比值只是个入口,真正有信息量的是列表本身。按最新排序之后,把前十条快速扫一遍,只做三件事: - 数一下有几条是“装不上”。安装类问题占比高,说明这个项目的门槛已经在往上飘,而作者没顾上。这一条对你影响最直接——你也要装。 - 看有没有官方账号出现在回复里。不是看回复数量,是看回复里有没有维护者。二十条讨论全是用户互相猜,和三条回复里有一条来自维护者,是完全不同的两个项目状态。 - 看最新一条和最老一条的间隔。如果前十条跨了两天,说明流入很猛;如果跨了三个月,说明这个项目已经安静下来了——安静未必是坏事,但你得知道自己在选一个什么节奏的东西。 这三件事加起来不到一分钟,得到的信息量比盯着比值算半天大得多。数字告诉你规模,内容告诉你性质,而选型需要的几乎全是性质。 所以这个比值的正确用法不是横向排名,是纵向自比:同一个仓库,半年前的比值和现在的比值哪个高?以及,看最近关闭的那几个问题,间隔是多久。后者比比值本身更硬——比值告诉你积压有多深,关闭间隔告诉你水管还通不通。 ## 如果一定要看星标,看增速别看存量 存量是历史累计,增速是当下判断。同样是十万星,过去三个月涨了两万和过去三个月涨了两百,是两个完全不同的项目,而页面上显示的数字一模一样。 增速也没那么难拿——把同一个仓库的星标数隔一两周记两次,差值就是最粗糙但也最诚实的增速。真要做得细一点,接口里能按时间取到加星记录,画出曲线之后有三种形状值得认识:台阶形(某天突然一竖,多半是被大号推荐或者上了热榜,之后回落到平线)、斜坡形(持续缓慢上升,这是真实采用的样子)、平台形(涨到某个数就横住了,说明它的目标人群已经吃完了)。 台阶形最需要警惕,因为它对应的往往正是那些“七周涨到多少万星”的标题。一次热榜带来的星标,和一年里持续有人用出来的星标,在数字上没有任何区别,但在预测力上差着一个量级。 ## 最后推送时间为什么比星标可靠? 因为它是唯一一个会往坏了走的公开字段。星标只涨,分叉基本只涨,问题数可以靠批量关闭做漂亮,只有“最后一次推送是什么时候”这一栏没法粉饰——要么有人在写代码,要么没有。 实际用起来有两个注意点。 这一栏还能顺手救你一次:很多推荐文里的包名、命令、配置项其实已经改过了,而文章不会自己更新。站内那篇整理最值得装的服务怎么选、真实包名与避坑清单 (https://zhangwenbao.com/best-mcp-servers-claude-code.html)的时候,被淘汰掉的候选里有一半就是因为包名早就换了而各处教程还在抄旧的。 第一,别把最后推送和最后提交搞混。推送时间会被一些无关操作刷新(比如只改了README、或者机器人提了个依赖升级)。所以看到“今天推送”之后还要往下走一步,翻一眼最近几次提交都在动什么文件。全是文档和依赖锁文件的,等于没动。 第二,八个月是个很有用的门槛。这不是拍脑袋——生态里的主要依赖大致每季度动一次,语言运行时每年动一到两次,八个月足够攒下一堆装不上的坑。之前研究一门课程的配套作业仓库时就撞过这个:星标接近四千,看着挺可靠,一查最后推送停在八个多月前,而课程大纲本身已经换了新版——课程官网、作业仓库、社交宣传,三处经常处在不同的时间线上。这三条时间线各走各的,谁也不等谁。 ## 许可证那一栏,为什么显示的可能不是真的? 这一节是我这次最意外的收获。 前面表里的甲,接口返回的许可证是NOASSERTION,网页上显示成“Other”。按常识,这意味着它用了某种非标准的自定义许可证,企业采用前要走法务。 我把这个仓库的LICENSE文件 (https://github.com/openclaw/openclaw)拉下来看了一眼——是一字不差的标准MIT许可证。版权行、授权段、免责段,全都是模板原文。唯一的差别是文件末尾多了两行: > Third-party notices for incorporated or adapted code are recorded in THIRD_PARTY_NOTICES.md. 翻译过来就是“第三方代码的声明记在另一个文件里”。一句完全无害、甚至相当负责任的补充说明。 ## 机制是这样的 GitHub那一栏不是人填的,是自动检测出来的。官方关于给仓库加许可证的文档 (https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository)写得很清楚:它用一个叫Licensee的开源Ruby包,把仓库的LICENSE文件跟一份已知许可证的短名单做比对。名单之外,或者比对不上,就归到“其他”。 文档里还有一句非常明确的官方建议:“要让你的许可证被检测到,请简化你的LICENSE文件,把复杂的部分记到别处,比如仓库的README里。”原文归因的失败原因是“多个许可证或其他复杂情况”。甲这个仓库恰好就撞在了“其他复杂情况”上——它把第三方声明的指引写进了LICENSE,而不是README。 GitHub自己在同一页上加了免责声明,说这些信息是“按现状提供”的,不做任何保证,并建议有疑问去咨询专业人士。换句话说,官方从来没说过那一栏是权威的,是我们自己默认它权威。 ## 为什么这件事有实际后果 因为读那一栏的往往不是人,是流水线。企业里的依赖合规扫描、开源治理平台、采购审批表,很多都直接消费接口返回的许可证标识符。一个返回NOASSERTION的依赖,在这些流程里会被自动标红,然后走人工评审,然后卡两周——而它实际上就是MIT。 反过来的风险同样存在:检测通过不等于真的能用。Licensee比对的是LICENSE这一个文件,仓库里某个子目录带着完全不同的许可证、或者引入了传染性协议的代码,它都看不见。所以这一栏的正确读法是——它显示“其他”,多半是文件写法问题,不是许可证问题;它显示MIT,也只说明根目录那个文件是MIT。两个方向上都不该当结论。 最后一个可以当段子记的细节:决定这一栏怎么显示的那个Licensee项目本身 (https://github.com/licensee/licensee),只有903颗星。几十万星的项目在页面上顶着什么许可证标签,是由一个九百星的小工具说了算的。 ## 版本号方案一换,半年前的建议连语法都不成立了 这条是从一次打脸里学来的。 四月份有篇写得相当认真的评测,结尾给了条建议:“如果你想等更稳定的版本,建议等v0.12,预计五月中下旬。”这句话在当时完全合理,那个项目正在v0.10。 问题是,这个项目现在的发布列表 (https://github.com/NousResearch/hermes-agent)里最新的标签叫v2026.7.20。往前翻是v2026.7.7.2、v2026.7.7、v2026.7.1、v2026.6.19、v2026.6.5。它已经从语义化版本整个切到了日期版本。不存在v0.12,也永远不会存在——那条建议现在连语法都不成立了。 ## 版本号方案本身就是一个信号 这件事比“某条建议过期了”更有意思的地方在于:版本号方案的选择,本身就在告诉你这个项目怎么看待自己。 - 语义化版本(主.次.修)在承诺兼容性契约:主版本不变,你的集成就不该坏。用它的项目通常有明确的公开接口和相对稳定的用户群。 - 日期版本(年.月.日)不承诺任何兼容性,只承诺新鲜度。用它的项目通常迭代极快、接口还在动、并且默认你会一直跟着升。 - 从前者切到后者,是一个明确的表态:我们不打算再维持版本承诺了,请跟着走。 所以看到日期版本的时候,你要问的不是“哪个版本稳”,而是“我能不能接受两周一次的跟进节奏”。这两个问题的答案完全不同。 ## 顺带看一眼发布节奏 同一份发布列表还告诉了我另外两件事:大版本大约两周一发,中间夹着修补版本(7月7日发了一个,第二天马上跟了一个7.7.2);而几个大版本的说明文字长度分别是五万二、四万、四万五千个字符。 两周一发、每次四五万字的变更说明,这个组合读出来是:功能推进极快,但你不跟就会掉队;而且每次跟进要读的东西不少。如果你的团队没有专人盯这个,那么“它很活跃”对你来说其实是成本不是收益。 ## 创建时间那一栏,能戳破哪些叙事? 这一栏几乎从来没人看,但它是唯一一个能对上官方叙事的字段。 回到开头那个“七周从零涨到11.3万星”的说法。这个说法把起点定在2026年2月底。而接口返回的仓库创建时间是2025年7月22日——比叙事起点早了七个月。 这中间的七个月去哪了?可能性无非几种,每一种都有对应的排查动作: - 先私有开发,后转公开。最常见。仓库创建于私有阶段,公开那天才开始涨星。判据:翻最早的几次提交,看时间是否连续;如果最早的提交和创建时间同期、且一路密集到公开日,那就是这种情况。这不是问题,只是说明“七周从零”这个说法省略了准备期。 - 改过名或转移过。GitHub保留原仓库的创建时间,但会把旧地址重定向到新地址。判据:看主题标签里有没有别的项目名残留——这个仓库的标签里就同时挂着好几个明显是旧名字的词。这种情况要额外注意:你在网上搜到的旧名字资料,可能对应的是完全不同的一个版本。 - 从别的项目分叉出来后断开了关系。判据:接口里的分叉标记是否为假、上游字段是否为空。都为空但代码风格明显承袭另一个项目的,值得多看两眼。 不管是哪一种,结论都一样:创建时间和官方叙事起点差得越多,就说明有一段历史没被讲出来,而那段历史里往往藏着你最该知道的东西——比如它原来叫什么、原来的用户为什么走了、旧文档还有多少在网上飘着。 反过来的情况同样值得警惕:如果创建时间晚于你在网上看到的最早讨论,那多半是仓库被重建过。重建意味着历史问题、历史讨论、历史提交全都不在这儿了,你搜到的那些“已解决”的帖子可能指向一个已经不存在的地址。 ## 分叉数和订阅数各自在测什么? 这两栏很少有人认真读,但它们测的东西不一样,而且都比星标具体。 分叉除以星标大致反映“看客里有多少人真的动了手”。前面那张表里,甲21.0%、乙19.2%、丙10.7%。丙明显低,这跟它的形态吻合——它的用法是装插件,不是改代码,所以不需要分叉。而甲和乙都在两成左右,说明这两个项目的用户里有相当比例是要自己改的。这个比值高,意味着你也大概率得改。预算要按这个来估,不是按“装上就能用”估。 订阅数(也就是关注仓库动态的人数)测的是另一件事:有多少人愿意持续接收这个项目的通知。乙的订阅数是838。相对22.3万星来说,这个数字非常小。它说明绝大多数人是点了个星就走了,并没有真的跟进。星标里有多少是“先收藏着”而不是“我在用”,这一栏给了个粗略的答案。 ## 把这套判据搬到你真正要选的东西上 写到这里得说,我知道大部分读这篇的人不会去选AI Agent框架。但这套判据是通用的,只要目标托管在GitHub上就能用,而做独立站的人几乎天天在选这类东西。 ## 选WordPress插件的时候 插件目录页会显示“最后更新”和“兼容到某某版本”,但那两栏是作者手填的,改一下日期就能刷新。去仓库看最后推送时间,两者对不上的时候,以仓库为准。另外一定要翻最近几条未关问题——如果最新的几条都在问“新版本装不上”而且没人回,那这个插件的实际状态跟目录页显示的不是一回事。站内那篇讲备份方案五个维度对照与真实选型 (https://zhangwenbao.com/wordpress-backup-5-dimension-updraftplus-duplicator-snapshot-disaster-recovery.html)的复盘里,被淘汰掉的几个候选就是栽在这一步。 ## 选主题或建站框架的时候 重点看分叉除以星标。这个比值高,说明大家都在改它——那你也得改,别指望开箱即用。还要看许可证那一栏,主题类项目的许可证情况比插件复杂得多,因为它们经常打包了字体、图标、演示图片,而这些资产的授权跟代码本身的授权常常不是一回事。这时候接口返回“其他”反而是个有用的提醒:值得点进LICENSE文件亲眼看一遍。关于建站底座该怎么选,站内那篇从SEO角度横评几种内容管理系统的分析 (https://zhangwenbao.com/cms-platform-choice-seo-real-impact-wordpress-typecho-hugo-sanity.html)可以配着看。 ## 选采集或数据类工具的时候 这一类最该看问题的关闭间隔而不是问题总数。采集工具的生命线是跟着目标站点的改版走的,目标站一改结构它就废。所以你要确认的是“坏了之后多久有人修”,而这个答案只能从最近几个已关闭问题的时间戳里读出来。星标在这里几乎没有参考价值——被采的站不会因为工具星标高就不改版。 ## 如果它根本没有公开仓库怎么办 越来越多的AI工具是纯服务形态,没有开源仓库可查。这时候整套判据要换一批观察点,但问的还是同样三个问题。 “最后一次有人动它”的替代观察点是变更日志和文档更新时间。变更日志停更三个月以上的服务,多半已经进维护模式了。有个更隐蔽的判据:看它的文档里还在不在提已经过时的模型名或版本号——文档里挂着半年前的型号,说明没人在维护那套文档,而没人维护文档的服务,接口大概率也没人维护。 “遇到问题之后发生了什么”的替代观察点是社区渠道。看它的社群或论坛里,官方账号最近一次回复用户是什么时候,以及回复的是不是实质问题。这一步比看“有没有工单系统”有用得多。 “授权条款有没有亲眼看过”在服务形态下更重要,因为条款可以单方面改。要额外关注两件事:数据用不用于训练,以及停服之后你的数据怎么导出。这两条通常写在服务条款的中后段,而不是价格页上。 ## 这套清单最容易被误用的地方 最后提个醒,免得走到另一个极端。这五步是排除法,不是打分法。它擅长的是快速淘汰掉那些明显不该选的,不擅长在两个都健康的候选里分出高下。 两个候选都通过体检之后,决定选哪个的因素完全在另一个维度上:它解决的是不是你真正的问题、迁走的成本有多高、你的团队会不会用。把体检指标拿来当排序依据,是这套方法最常见的误用——就像不能靠体检报告选朋友一样,体检只能告诉你谁明显不行。 ## 一份十分钟能跑完的体检清单 把上面所有东西压成动作,一次接口调用加三次点击就够: - 拉一次接口。一条命令就能拿到星标、分叉、未关问题、最后推送、许可证、创建时间、订阅数、主语言全部字段,仓库接口的官方文档 (https://docs.github.com/en/rest/repos/repos)里写得很清楚,不需要认证也能读公开仓库。这一步比在网页上翻半天快得多,而且拿到的是结构化的。 - 算两个比值。未关问题÷星标、分叉÷星标。前者看积压深度,后者看你要不要准备改代码。 - 点进问题列表,按最新排序,看前五条在问什么。这一步无可替代。比值告诉你有多少积压,这五条告诉你积压的是什么性质——是功能请求还是“装不上”。 - 点进发布列表,看版本号方案和最近三次的间隔。方案告诉你它承不承诺兼容,间隔告诉你你要付出多少跟进成本。 - 点开LICENSE文件本身看一眼,不看那个自动检测出来的标签。三十秒的事,能省掉后面两周的合规扯皮。 还有一件值得顺手做的事:如果你选的是Agent相关的东西,先确认它的资产格式绑不绑死在某一个工具上。站内那篇写同一套Agent资产能不能跨工具搬家的实测 (https://zhangwenbao.com/agent-skills-cross-harness-portability.html)把五家的能力差异逐行对过一遍,结论是能不能搬跟项目活不活跃是两个独立的风险,得分开评。至于托管型和自建型该怎么选,站内那篇拆官方托管智能体真实用法与避坑的文章 (https://zhangwenbao.com/claude-managed-agents.html)可以配着读。 五步走完,你对这个项目的判断会比“它有多少星”准确一个数量级。而且这五步跟项目属于哪个领域完全无关——选Agent框架、选插件、选主题、选一个命令行小工具,动作一模一样。 保哥自己现在的习惯是:看到推荐文里第一句报星标的,就默认作者没做过这五步。这个启发式的准确率高得有点让人失望。 ## 常见问题解答 ## 星标是不是完全没用? 不是完全没用,是被严重误用了。它有一个正当用途:判断这个项目有没有过临界规模——几百星和几万星之间确实有质变,涉及到有没有中文资料、有没有人在论坛回答问题、出了事能不能搜到别人的解法。但一旦过了这个门槛,星标继续涨对你的决策就不再增加任何信息了。三万星和三十万星之间的差别,对你能不能用好它几乎没有影响。 ## 未关问题很多的项目就不能用吗? 能用,但要调整预期。正确的心态是把它当成“社区版软件”而不是“产品”:你踩到的坑要自己解决,不要指望提问会有回音。如果你的团队有能力读源码、能自己打补丁,高积压其实不是障碍;如果你指望官方支持,那这个比值就是个很硬的否决项。 ## 接口返回NOASSERTION,到底能不能用? 先点进LICENSE文件看一眼,多数情况下答案会在三十秒内出现。如果正文就是标准协议、只是多了几句附加说明,那基本可以按那个标准协议理解,但企业场景下建议把这个情况写进你的合规记录里,免得下次扫描又被卡。如果正文确实是自定义条款,那就得逐条读,尤其注意有没有“不得用于商业用途”“不得提供竞品服务”这类限制——这类条款在最近两年的项目里出现得越来越多。 ## 怎么快速判断一个项目是不是快死了? 三个信号同时出现基本可以定性:最后推送超过半年、最近几条未关问题都是“装不上”且无人回复、发布列表最后一条也停在半年前。单独一个信号都可能有别的解释(比如项目已经成熟到不需要频繁改动),三个一起出现就没什么别的解释了。 ## 一个项目星标停涨了,是不是就该换掉? 不是。星标停涨最常见的原因是这个项目的目标人群已经吃透了——需要它的人都已经知道它了,没有新增关注很正常。真正该触发换掉决定的是另外三个:最后推送停住、你提的问题没人回、以及它挡住了你要做的下一件事。前两个是它的问题,第三个是你的问题,而第三个通常才是真正的换掉理由。 ## 为什么不看贡献者人数? 因为这一栏的噪声比信号大。贡献者列表里会混进大量只提过一次拼写修正的人,而这些人和真正在维护的人在列表里长得一模一样。想看这个维度,更可靠的读法是看最近三个月的提交里,作者一共有几个不同的人——如果九成提交出自一个人,那这个项目的实际状态是单人项目,跟贡献者列表上挂着两百人没有关系。单人项目不是不能用,但你要按单人项目的风险来准备。 ## 这套判据对不在GitHub上的项目怎么办? 思路可以整个搬过去,只是取数的地方变了。核心永远是那三件事:最后一次有人动它是什么时候、用户遇到问题之后发生了什么、以及授权条款你有没有亲眼看过。码云、自建的代码托管、甚至一个只提供下载的官网,这三件事都能找到对应的观察点,只是要多花点时间。 ## 做SEO和独立站,最该把这套判据用在哪儿? 用在所有会长期跑在你站上的东西上:插件、主题、缓存方案、采集工具、结构化数据生成器。判断依据的排序是——最后推送时间第一,最近问题的性质第二,许可证第三,星标最后。特别提醒一点:跟搜索引擎打交道的那类插件(站点地图、结构化数据、重定向管理)对新鲜度的要求比其他插件高一档,因为搜索引擎那边的规则一直在动,而一个半年没更新的结构化数据插件,输出的很可能已经是过时的格式了。 ## 权威参考资料 ## 换掉Claude Code那天,你攒的那套Agent资产还剩多少 - URL:https://zhangwenbao.com/agent-skills-cross-harness-portability.html - 分类:AI编程与工具链 - 发布:2026-07-14 | 更新:2026-07-30 - 摘要:一份源同时供五个Agent工具消费,能力对照逐行摊开:技能几乎全兼容,工具白名单与生命周期钩子搬不走且静默失效。附8KB截断上限、模型映射陷阱与迁移前四件事。 - 关键词:AI Agent,Claude Code,Claude Skills,开发技巧,技术选型 > **TLDR**:摘要:如果你已经给团队攒了一批Agent资产——写描述的技能、查死链的子代理、批量改标题的斜杠命令——那么有个问题迟早要回答:换掉现在这个工具的那天,这批东西还剩多少能用?业界最大的那个Agent插件市场给了一份可以逐行核对的答案:一份源文件,同时供五个不同的运行工具消费,而且明确拒绝走最小公约数路线。逐行读它的能力对照表能看到,技能本身几乎全兼容,真正搬不动的是三类东西——逐个代理的工具白名单、生命周期钩子、以及待办追踪。更麻烦的是,工具白名单被丢弃的时候是静默的:你以为限制住了,实际上没有。这篇把五家的差异、两个会直接截断的硬上限、两档完全不同的安装路径全部摊开,最后给一份迁移前该做的四件事。顺带说一个让人不太舒服的发现:那份分层模型策略把SEO归进了最便宜的一档。 > 摘要:如果你已经给团队攒了一批Agent资产——写描述的技能、查死链的子代理、批量改标题的斜杠命令——那么有个问题迟早要回答:换掉现在这个工具的那天,这批东西还剩多少能用?业界最大的那个Agent插件市场给了一份可以逐行核对的答案:一份源文件,同时供五个不同的运行工具消费,而且明确拒绝走最小公约数路线。逐行读它的能力对照表能看到,技能本身几乎全兼容,真正搬不动的是三类东西——逐个代理的工具白名单、生命周期钩子、以及待办追踪。更麻烦的是,工具白名单被丢弃的时候是静默的:你以为限制住了,实际上没有。这篇把五家的差异、两个会直接截断的硬上限、两档完全不同的安装路径全部摊开,最后给一份迁移前该做的四件事。顺带说一个让人不太舒服的发现:那份分层模型策略把SEO归进了最便宜的一档。 先说清楚这篇要解决的焦虑是什么。 你花了三个月,把日常那些重复动作固化成了Agent资产:一个专门写商品描述的技能、一个专门查内链是否失效的子代理、一套跑多语言页面的斜杠命令。它们现在跑得挺好。 然后你开始隐隐不安:这批东西是不是绑死在这一个工具上了?如果半年后团队要换,或者公司统一采购了别家,这三个月是不是白干? 这个问题以前没有可核对的答案,现在有了。 ## 一份源,五个目标,这件事是怎么做到的? 目前生态里规模最大的那个Agent插件市场仓库 (https://github.com/wshobson/agents),最近把自己重新定义成了“多运行环境插件市场”。数字上是94个插件、203个代理、175个技能、109个命令,外加16个多代理编排工作流。 但真正值得关注的不是这些数字,是它的组织方式:只有一份源,放在Claude Code的Markdown格式里;其余五个运行环境的产物,全部由适配器生成。 它在文档里给了一句立场非常明确的话:每个运行环境拿到的都是符合它自己习惯的原生产物,而不是最小公约数式的翻译。 这句话是整件事的关键。做跨平台兼容有两条路:一条是砍到所有平台都支持的那个交集,出来的东西哪儿都能跑但哪儿都不好用;另一条是给每个目标单独生成它的原生形态,代价是维护成本和一堆不对称的边界情况。这个仓库选了后者,而恰恰因为选了后者,它被迫把五家的能力差异一条条写下来——那份对照表,就成了现在能拿到的最完整的一份跨工具可移植性清单。 ## 这件事两年前做不到,现在为什么能了 值得停一下想想:为什么现在能有一份源供五家消费,而两年前不行。 答案不在技术上,在格式上。这五家在两件事上意外地收敛了:一是都接受用带前置元数据的Markdown来定义代理和技能,二是都接受把项目级指令放在一个约定俗成的文件里。只要这两件事一致,剩下的差异就都只是字段名和目录结构的问题——那是适配器能解决的,而语义层面的分歧不是。 这个收敛本身也说明了一件事:这些工具的差异化竞争,已经从“怎么描述任务”转移到了“怎么执行任务”。描述层大家趋同,执行层各显神通。对使用者来说这是好消息,因为你花时间最多的正是描述层。 另一个附带结论是,越靠近描述层的资产越保值,越靠近执行层的资产越容易作废。这条判据可以直接拿来指导你把时间花在哪儿。想把描述层的东西写扎实,站内那篇讲技能怎么写才好用、一套经得起用的设计模式 (https://zhangwenbao.com/claude-code-skill-patterns.html)整理的那些写法基本是通用的,不绑定具体工具。 ## 五家的能力矩阵,差异都在哪几行? 下面这张表按它的跨运行环境能力矩阵文档 (https://github.com/wshobson/agents/blob/main/docs/harnesses.md)整理,只保留会影响你迁移决策的行。 能力 | Claude Code | Codex | Cursor | OpenCode | Gemini | 技能(原生格式) | 支持 | 支持 | 支持 | 支持 | 支持(自动发现) | 子代理(Markdown原生) | 支持 | 要转成TOML | 支持 | 支持(前置元数据不同) | 支持 | 斜杠命令 | 支持 | 被转成技能 | 支持 | 支持 | 转成TOML | 插件市场 | 支持 | 没有 | 支持 | 没有 | 没有 | 并行子代理 | 支持 | 支持 | 支持 | 支持 | 支持 | 逐代理工具白名单 | 支持 | 只有沙箱模式 | 只有只读开关 | 支持(权限块) | 支持 | 待办追踪工具 | 支持 | 没有 | 没有 | 支持 | 没有 | 派生子代理的工具 | 支持 | 只能在正文里点名 | 支持 | 支持 | 用@语法 | 协议服务 | 支持 | 支持 | 支持 | 支持 | 支持 | 生命周期钩子 | 支持 | 没有 | 没有 | 支持(脚本插件) | 没有 | 技能正文硬上限 | 无 | 8 KB | 无 | 无 | 无 | 把这张表读透,会得到一个和直觉相反的结论。 技能这一行,五家全绿。也就是说,你写的那些“知识包”——什么时候该怎么做、模板长什么样、有哪些坑——迁移风险基本为零。这是好消息,因为技能通常也是你花时间最多的那部分。 真正搬不动的是三行:逐代理工具白名单、待办追踪、生命周期钩子。这三样有个共同点,它们都不是“知识”,而是“约束”。你写下来的经验能跟着走,你设下的边界不能。 这个规律值得单独拎出来记:可移植的是你告诉它怎么做的部分,不可移植的是你限制它不许做什么的部分。而后者往往才是让流水线敢无人值守跑的那半边。站内那篇讲技能和子代理到底有什么区别、一个共享上下文一个独立窗口 (https://zhangwenbao.com/claude-skill-vs-subagent.html)的拆解可以配着看——技能之所以最容易搬,恰恰因为它本质上只是一份被按需加载的文档。 ## 降级是静默的,这才是真正的风险 上面那张表还只是静态能力对比。真正危险的是降级发生的时候你收不到任何通知。 那份文档给了一张“优雅降级”表,把源里的每种写法在四个目标环境下会变成什么逐条列了出来。挑最要命的几条: - 你在代理里写了工具白名单——在Codex里被丢弃,换成一个“只读沙箱”的启发式猜测;在Cursor里直接丢弃,因为Cursor不认这个字段;在OpenCode里被翻译成权限拒绝块;只有Gemini原样透传。 - 你给代理起名叫某个常见的通用词——在Codex里会被自动加上插件名前缀做命名空间隔离,其他三家原样保留。这意味着同一份配置在Codex和别处,代理的实际名字是不一样的,你正文里如果按名字引用过它,那段引用在一半环境里会失效。 - 你在正文里用了待办追踪——Codex、Cursor、Gemini都没有对应物,文档给的处理是“原样留着”。也就是说,那段指令会被当成普通文字读进去,模型可能会假装自己在维护一个待办列表,而实际上什么都没记。 - 你写了个颜色标记——五家全丢。这条无害,但它说明适配器确实在逐字段做决策。 第一条和第三条的组合,构成了这篇里我最想强调的风险: > 你以为你给这个代理上了工具白名单,所以敢让它无人值守跑。搬到另一个环境之后白名单没了,而它照跑不误,也没有任何报错。 保哥去年帮一个客户做站内批量改造的时候就吃过类似的亏:换了一套跑批工具之后,原本限制“只改草稿不动已发布”的那道配置没跟着过来,一次批量跑下去动了三十几篇线上文章。所幸有备份,但那一天的心情不太好形容。 这不是那个仓库的设计缺陷,恰恰相反,它把这件事白纸黑字写出来了,已经比绝大多数迁移方案负责得多。问题在于会去读这份表的人太少,大部分人会在装完发现“能跑”之后就不再深究了。 ## 怎么主动把静默降级逼出来 静默降级最难受的地方在于,正常使用的时候一切看起来都好。要发现它,只能主动去撞。 做法是准备一组本该失败的用例——注意是本该失败,不是本该成功。这跟平时写测试的直觉相反,但在这里是唯一有效的方式: - 让一个只该读文件的代理去尝试写一个文件。预期是被拒绝,如果它写成功了,说明白名单没生效。 - 让一个不该出网的代理去请求一个外部地址。预期是被拦,成功了就是漏了。 - 跑一个会触发钩子阈值的批量操作。预期是中断等确认,一路跑完就是钩子没接上。 - 在正文里按名字引用一个代理,看它在各个环境里是不是都能被正确解析——前面提过,有的环境会给代理名加前缀,加了前缀之后按原名引用就找不到了。 这四条跑一遍不到二十分钟,但它们是唯一能把“配置写了但没生效”这类问题抓出来的手段。而这类问题的特点是:不主动去撞,它可以安安静静地存在好几个月,直到某一天以一种非常昂贵的方式暴露出来。 顺带说一句,这套“用本该失败的用例去验边界”的思路不限于Agent迁移。换缓存插件之后验一遍该缓存的有没有被缓存、该绕过的有没有绕过;换重定向管理之后验一遍旧链接还跳不跳——判据完全一样。 关于权限边界为什么不能当成优化项,站内那篇从安全评审到权限与提示注入防御的实战 (https://zhangwenbao.com/claude-code-security.html)讲得更细。这里只补一句:迁移之后,安全相关的配置必须重新验证一遍,不能假设它跟着搬过去了。 ## 两个会直接截断的硬上限 整份文档里最具体、也最容易在实操中撞上的是两个数字。 ## 技能正文8 KB Codex对单个技能正文有8 KB的硬上限。超了会在加载时被截断——不是报错,是截断。适配器的处理方式是把超限的内容拆到一个引用文件里去,但如果你是手工搬运而不是走适配器,那么超出的那部分就是直接消失,而你不会收到任何提示。 8 KB大概是多少?中文按UTF-8编码一个汉字三字节,8 KB差不多是两千七百字。一份写得比较细的技能文档,加上几段示例,很容易就过线了。 这条还有个连带影响:它意味着技能要按“能被截断”来组织——最重要的判据写在最前面,示例和边缘情况放后面。这个写法在没有上限的环境里也不吃亏,因为渐进披露的机制本来就鼓励这么写。 ## 一份超长的技能该怎么拆 撞上限之后最省事的做法是砍内容,但那通常会把有用的东西砍掉。更好的做法是按“被读到的概率”重新排版。 一份技能里的内容大致分三类,按优先级排: - 触发判据和硬约束——什么情况下用它、绝对不能做什么。这部分必须在最前面,因为它是被截断之后唯一还留着的部分。 - 标准流程——正常路径怎么走。放中间。 - 示例、边缘情况、背景解释——放最后,或者干脆拆到引用文件里去。这部分体积最大而被读到的概率最低。 拆的时候有个容易犯的错:把示例整段挪走,却忘了正文里还写着“参见下面的例子”。挪走之后那句话就指向了空气,而模型看到这种悬空引用的反应通常是自己编一个。检查方法很土但有效——拆完之后把正文通读一遍,凡是出现“下面”“如下”“参见”的地方,确认它指的东西还在不在。 ## 上下文文件32 KiB 同样是Codex,对那份上下文文件有32 KiB的上限。这个数字看起来宽松,但考虑到很多团队的规则文件是一路加出来的,撞线的概率并不低。 ## 上下文文件那一栏,五家给出了同一个数 这是整份文档里最让我意外的一行。 五个运行环境的上下文文件叫法各不相同——Claude Code叫一个名字,Codex、Cursor、OpenCode都用AGENTS.md这个开放格式 (https://agents.md/),Gemini又叫另一个名字。文件名不统一,这在意料之中。 但推荐上限这一栏,五家写的是同一个数:150行、500词元。 五个由完全不同团队做的产品,在“这份文件该写多长”这件事上给出了完全一致的建议,这个巧合的信息量不小。它至少说明这个数不是某一家的产品偏好,而是大模型读长指令时那个共同的注意力衰减规律决定的。 站内那篇讲规则文件不是写得越详细越好、最优行数在哪 (https://zhangwenbao.com/claudemd-minimalist-guide.html)的实证复盘得出的结论和这个数字高度吻合。两条独立来源指向同一个数,那基本就可以当成硬约束用了。 换算成中文:500词元大概是三百到四百个汉字。这意味着你那份规则文件的正文,应该短到能一屏看完。剩下的东西全部下沉到技能里去,靠按需加载而不是常驻。至于规则文件和给人看的说明文档该怎么分工,站内那篇讲两者区别、一个给AI一个给人的对照 (https://zhangwenbao.com/claudemd-vs-readme.html)把边界划得比较清楚。 ## 装法分两档:能一步装的和必须先编译的 这一节是纯操作层面的,但它直接决定了你的迁移成本。 那个仓库做了一个我觉得挺聪明的取舍:只把小体积的注册表文件提交进仓库,转换出来的那些庞大的技能和代理目录树全部忽略掉,让用户本地重新生成。文档里管这叫“精简权衡”。 后果是安装路径分成两档: - 能一步装的:Codex和Cursor。因为提交进仓库的那些注册表直接指向源目录,这两家能顺着指针把源文件读进去,一条命令搞定。Codex这个终端编码代理 (https://github.com/openai/codex)甚至能在仓库就是当前目录的时候自动发现它。 - 必须先编译的:Gemini和OpenCode。没有从地址一步安装这条路,必须先把仓库克隆下来,跑一次生成命令,再从本地路径装。Gemini这个命令行代理 (https://github.com/google-gemini/gemini-cli)的扩展安装走的就是本地路径这一条。 这个差别对评估迁移成本很关键:能一步装意味着可以让每个同事自己装;必须先编译意味着你得准备一套内部分发流程。后者的实际工作量,通常比“换一个工具”这句话听起来大一个量级。 还有个细节值得学:那个仓库在持续集成里加了一道检查,提交的注册表和源文件对不上就直接失败。这是个很实在的设计——一份源多份产物这种结构,最常见的事故就是改了源忘了重新生成,让机器去盯比让人去记靠谱得多。 ## 模型别名怎么映射? 这一栏藏着一个容易忽略的成本问题。 你在代理里写的模型别名,会被适配器映射成各家自己的型号。同一个别名在五家的落点是这样的: 源里写的 | Codex | Cursor | OpenCode | Gemini | 顶配档 | 映射到该家旗舰型号 | 改写成“继承” | 改写成完整型号标识 | 映射到该家专业型号 | 最长时程档 | 同样映射到旗舰型号 | 改写成“继承” | 改写成对应完整标识 | 同样映射到专业型号 | 注意Cursor那一列:它把所有模型指定全部改写成“继承”,也就是跟着用户在界面里选的模型走。这意味着你精心设计的分档策略——重要的用贵模型、琐碎的用便宜模型——在Cursor里整个失效了,全都跑在用户当前选的那个上。 如果用户选的是最贵那档,你的成本会静默上涨;如果选的是最便宜那档,你那些依赖强推理的代理会静默变笨。两个方向的失效都不报错。 还有一个更细的坑:Codex那一列把“顶配”和“最长时程”两个不同的档位映射到了同一个型号。源里的两档区分在那边被压平了,你以为还在分档,实际上没有。 ## 它把SEO放进了最便宜的那一档 这一节跟迁移没关系,但我看到的时候确实愣了一下。 那个仓库公布了一份分层模型策略,从0到4五档。第0档给最长时程的自主工作,比如大规模迁移、跑好几小时的任务;第1档给架构、安全、代码评审这类生产关键任务;第2档交给用户自己选;第3档给文档、测试、调试;第4档,也就是最便宜最快的那一档,写的是“快速运维任务、SEO、部署、内容”。 SEO和部署、内容一起,被归进了“快速操作”。 我不打算把这解读成什么行业歧视——从它的代理清单看,那些标着SEO的代理确实多数是执行型的:生成描述、批量补标签、检查基础项。用便宜快的模型跑这些,是完全正确的工程决策。 但这个归类暴露了一个更普遍的认知:SEO在工具生态里被默认成了一件“照着规则填空”的事。 而实际做过的人都知道,SEO里真正难的那部分长什么样:这两个页面该不该合并、这个词值不值得做、这次流量掉了是算法更新还是自己改坏了、这批AI生成的内容会不会被判成垃圾。这些判断的共同点是——你得把好几个互相独立的信息源串起来,才能得出结论。 而“需要跨多个来源串起来才能确认”这个特征,恰好也是安全审计那一类任务的特征,也就是被放进第1档的那些。同一种认知难度,因为顶着不同的名字,被分进了最贵和最便宜两档。 实操上的启示很直接:如果你要用这类插件市场里的SEO组件,先看它给这个代理指定了哪一档模型,再决定要不要覆盖。纯执行型的保持便宜档没问题,凡是涉及判断的那些,该往上调就往上调——省下的那点钱,赔不起一次判断失误。站内那篇讲AI都用来写稿、真正拉开差距的其实是判断层 (https://zhangwenbao.com/ai-judgment-layer-vs-execution-layer-seo.html)的分析,讲的正是这条分界线。 ## 拿一条真实的流水线走一遍会怎样? 前面全是逐行对照,容易看着看着就抽象了。这一节把它落到一个具体场景上。 假设你在做一个跨境独立站,有一千两百个商品页要补多语言描述。保哥手上这类项目做过不少,典型的资产构成是这样的六件: - 一份写描述的技能,里面写了品类词该怎么处理、哪些表述在目标市场是雷区、句长控制在什么范围。 - 一份本地化技能,写清楚每种语言的度量单位、日期格式、货币符号位置。 - 一个校验子代理,专门检查生成结果:字数在不在区间、核心词有没有被改写掉、有没有把品牌名翻译掉。 - 一条斜杠命令,把上面三个串起来跑一批。 - 一个工具白名单,限定这批代理只能读文件和调翻译接口,不许写数据库、不许发网络请求到别的地方。 - 一个提交前钩子,任何一次写入超过五十条就中断,等人确认。 ## 搬完之后剩下什么 按前面那张表逐条对: - 前两件(技能)——全须全尾搬过去。这也是你花时间最多的两件,好消息。唯一要做的是量一下体积,本地化那份如果把五六种语言的规则都写在一起,很可能超过8 KB。 - 第三件(子代理)——能搬,但格式要转。在Codex里要变成另一种配置格式,在OpenCode里前置元数据的写法不一样。走适配器就是自动的,手工搬就要注意。 - 第四件(斜杠命令)——在Codex里会变成技能。这是这条流水线里第一个实质性的行为变化:原本你敲一下它必然执行,现在变成模型看情况触发。对一条要跑一千两百次的批量任务来说,这个变化不可接受。 - 第五件(工具白名单)——在两家直接消失。而它恰恰是你敢让这批代理连着跑几个小时的原因。 - 第六件(钩子)——在三家直接消失。那道“超过五十条就停下来等人”的保险,没了。 六件资产,两件完好、一件要转格式、三件受损。而受损的那三件,全都集中在“保证这件事按预期发生”这个维度上。 ## 受损的那三件,各自该怎么补 好消息是三件都有替代方案,只是要把它们从工具内部挪到工具外部。 命令变技能的那一条,补法是把入口挪到工具外面:写一个脚本,由脚本按批次去调用,而不是靠模型自觉触发。这样触发的确定性重新回到你手里,代价是要多维护一个脚本。 工具白名单没了的那一条,补法是在环境层面上收权限:跑这批任务的时候用一个受限的凭据,数据库连接给只读、翻译接口之外的出网直接在网络层拦掉。把约束从“应用配置”下沉到“运行环境”,是所有跨工具迁移里最保险的一招——环境不认得你在用哪个工具,所以它的限制不会因为换工具而失效。 钩子没了的那一条,补法是把闸门挪到写入端:不让代理直接写库,改成先写一个待应用的变更文件,再由另一个进程读这个文件去应用,条数校验放在那个进程里。多一个中转步骤,换回一道不会跟着工具走的保险。 三条补法有个共同的形状:把约束从工具里挪到工具外。这样做的额外好处是,下次再换工具的时候,这三件事一件都不用重做。站内那篇讲AI内容流水线为什么会被降权、三处人工节点卡在哪 (https://zhangwenbao.com/ai-content-pipeline-deindex-anti-spam-3-human-checkpoints.html)的复盘讲的就是这几道外部闸门具体该设在什么位置。 ## 一个反直觉的结论 走完这一遍,会发现迁移成本的分布跟大部分人预期的正好相反。 大家担心的通常是“我写的那些提示词和经验是不是白写了”,而这部分恰恰是最安全的。真正要重做的是那些当初写起来最快、最不起眼的几行配置——一行工具白名单、一个钩子、一条命令定义。写得越快的东西,越可能是绑得最死的东西,因为它之所以能写得那么快,正是因为那家工具替你把复杂性都吸收掉了。 ## 怎么给自己的任务分档 与其接受别人给的分档,不如自己重分一遍。判据其实只有一个问题:做这个判断,需不需要把两个以上互相独立的信息源拼起来? 按这个问题过一遍常见的SEO任务,分档结果和那份现成的表出入不小: - 只看一处就能决定的——描述超没超字数、标题里有没有核心词、图片缺不缺替代文字、结构化数据格式合不合法。这些确实该用最便宜最快的档,而且用贵的也不会更准。 - 要看两处的——这个页面和那个页面是不是在抢同一个词、这批新内容和站内已有内容重不重。要同时持有两份材料并做比较,便宜档已经开始吃力。 - 要看三处以上的——流量掉了是算法更新、自己改坏了、还是季节性;这个词值不值得做要同时看搜索量、竞争度、你自己的内容储备和转化路径。这一档跟安全审计是同一个认知难度,就该用同一档模型。 这个分法的好处是它跟任务名字无关,只跟结构有关。一个叫“SEO检查”的任务可能落在第一档,另一个也叫“SEO检查”的任务可能落在第三档——用名字分档必然分错,用结构分档才分得对。 顺带说一个反向的省钱技巧:第三档任务里有相当一部分工作量其实是第一档的(收集材料、整理格式),可以拆成两步,用便宜模型把材料备齐,只把最后那个判断交给贵模型。实测下来这种拆法通常能省掉六成以上的开销,而结论质量没有可察觉的下降。 ## 迁移之前该做的四件事 把上面所有东西压成动作。假设你现在真的要把一批Agent资产从一个工具搬到另一个: ## 一、先把资产按“知识”和“约束”分成两堆 知识那堆——技能、模板、经验文档——基本能整批搬走,先不用管。约束那堆——工具白名单、权限设置、钩子、待办追踪——假设它们全部搬不过去,逐条列出来,然后在目标环境里找对应物。找不到对应物的,要么换一种实现方式,要么把对应的自动化降级成有人值守。 ## 二、量一遍长度 把每份技能的正文体积过一遍,超过8 KB的先拆。把规则文件的行数数一遍,超过150行的先精简。这两件事在迁移前做是十分钟的活,迁移后发现内容被截断了再回头查,是一整天的活。 ## 三、把模型指定全部显式化 别依赖别名映射。搬过去之后,逐个代理确认它实际跑在哪个型号上——尤其是那些你特意指定了贵模型的。前面说过,有的环境会把你的指定整个改写成“跟着用户选”,这种失效不会报错。 ## 四、准备一组能验证“搬对了”的用例 这一步最容易被跳过,也最不该跳过。挑五到十个有代表性的任务,在旧环境里跑一遍记下输出,搬完之后在新环境里跑同一批,逐个对照。 重点不是看结果对不对,是看那些本该被拦住的操作有没有被拦住——故意让它去碰一个白名单外的工具,看它是被拒绝了还是顺利执行了。这一条测的正是前面那个静默降级的风险,而它是唯一能测出来的方式。 ## 常见问题解答 ## 技能真的能一份写完到处用吗? 正文内容基本可以,边界条件不行。除了8 KB上限,还有一个细节:工具名的大小写各家不一样——有的用大驼峰,有的严格要求全小写,有的干脆建议正文里不要出现任何工具词汇、改用动作动词描述。所以最稳的写法是在技能正文里尽量别提具体工具名,改成描述你要它做什么,把工具的事交给环境去解决。这个写法迁移成本最低,而且在单一环境里也不吃亏。 ## 为什么不干脆用最小公约数,写所有平台都支持的东西? 因为最小公约数很小。看那张表就知道,五家全绿的只有技能、并行子代理和协议服务这三行,其余全是不对称的。真按交集写,你会失去工具白名单、钩子、待办追踪、插件市场——也就是把整个约束层丢掉。这个代价比多维护几份适配器大得多。 ## 哪一类资产最值得优先固化? 技能。理由有三条:它五家全兼容、它承载的是你真正积累下来的经验、而且它有一个开放标准在推进。Agent Skills这个开放标准 (https://agentskills.io/home)已经有多个框架声明兼容,往这个方向投入的资产,未来的迁移面会越来越宽。相反,最不值得深度投入的是那些绑死在某一家专有机制上的东西。 ## 斜杠命令被转成技能,会有什么实际影响? 触发方式变了。斜杠命令是你显式敲出来的,模型必须执行;技能是靠描述匹配触发的,模型可能不触发。一个原本百分之百会跑的东西,变成了一个大概率会跑的东西。如果这个命令承担的是流程里的关键一步(比如发布前必跑的检查),转换之后就需要在别处补一道硬保障,不能指望它自觉。 ## 一次装多少个插件合适? 越少越好,按任务装、用完卸。这个仓库自己的架构说明也是这个态度:每个插件是独立可组合的,装一个插件只加载它自己的组件,不加载整个市场。但即便如此,装得越多路由越模糊——当四个插件都声称自己管“建一个后端服务”的时候,模型选哪个基本靠运气。正确的心智模型是把它当目录查,不是当框架装。 ## 多个插件同时装,路由会乱到什么程度? 会比想象中乱。问题不在插件本身冲突,在于描述重叠:当四个插件的描述里都写着自己擅长“搭建后端服务”,模型选哪个基本没有稳定规律,同一句话问两遍可能走两条路。 更麻烦的是这种不稳定不会报错,只会表现为“今天效果好、明天效果差”,而你会误以为是模型的问题。实用的判别方法是:同一个任务连着问三遍,看它是不是每次都走同一条路。不是的话,先去卸插件,别去改提示词。 ## 该不该为了可移植性,主动放弃某些好用的功能? 大部分情况下不该。可移植性是保险,不是目标——为了保险而放弃日常效率,账通常算不过来。保哥的做法是分两档:日常提效的东西该用什么用什么,不考虑迁移;但凡是流程里的关键闸门,一律做成不依赖具体工具的形式。前者坏了你损失的是效率,后者坏了你损失的是数据。两者的容错空间完全不同,所以标准也该不同。 ## 怎么判断一个新工具值不值得迁过去? 先别看功能表,先看它认不认那两份开放格式——上下文文件的格式和技能的格式。认,说明你已有的资产至少有一部分能直接落地,迁移是增量的;不认,意味着你要从零重建,那这个决定就不是“换个工具”而是“重做一遍”,评估标准得整个换掉。这一条比任何功能对比都更能决定迁移的实际代价。 ## 对做独立站的人,这套东西最实际的用法是什么? 两条。第一,把你已有的重复动作先写成技能,不要写成命令或者钩子——技能是可移植性最好的那一档,等于给自己留了后路。第二,凡是涉及“不许它做什么”的部分,别只写在配置里,同时在流程外面加一道:发布前的人工确认、写库前的字段校验、批量操作的条数上限。这些外部保障不依赖任何一家工具,也就不会在换工具的时候跟着丢。 ## 权威参考资料 ## Codex App怎么用?并进ChatGPT桌面端后的工作流、计费与避坑 - URL:https://zhangwenbao.com/openai-codex-app-guide.html - 分类:AI编程与工具链 - 发布:2026-07-14 | 更新:2026-07-30 - 摘要:Codex并进ChatGPT桌面端之后怎么用?讲清平台门槛与六层配置优先级、工作树三选一与交接机制的真实用法、代币与接口价的换算关系,以及四笔容易让额度提前见底的隐藏消耗。 - 关键词:Claude Code,AI编程,开发技巧,Codex,终端代理 > **TLDR**:摘要:Codex不再是一个单独下载的应用,它成了ChatGPT桌面端里与聊天、办公并列的一种模式,所有付费档位都含,免费档也能用。真正值得先搞清楚的有三件:并行开发用的工作树不是自动创建的,你得在开对话时手动选,还要挑起始分支;配置也不止用户目录那一个文件,一共六层优先级外加一道项目信任门;计费单位换算下来是一枚代币约合四美分的接口价值,而缓存过的输入只要十分之一。这篇按装、配、跑、算的顺序把这四件事讲透,附官方给的六条省额度办法和一份踩坑清单。 > 摘要:Codex不再是一个单独下载的应用,它成了ChatGPT桌面端里与聊天、办公并列的一种模式,所有付费档位都含,免费档也能用。真正值得先搞清楚的有三件:并行开发用的工作树不是自动创建的,你得在开对话时手动选,还要挑起始分支;配置也不止用户目录那一个文件,一共六层优先级外加一道项目信任门;计费单位换算下来是一枚代币约合四美分的接口价值,而缓存过的输入只要十分之一。这篇按装、配、跑、算的顺序把这四件事讲透,附官方给的六条省额度办法和一份踩坑清单。 一个产品在半年里换了三次形状,通常说明它的团队自己也在找位置。2026年7月9日,OpenAI把原本独立的Codex桌面应用并进了重写的ChatGPT桌面端,Codex成了与Chat、Work并列的一种模式;老的那个ChatGPT桌面应用改名叫Classic。 合并这件事本身,有一个比任何公告都硬的旁证:开发者文档站上那条Codex定价页的地址,现在会308永久重定向到ChatGPT的学习文档域名下。产品并了,文档也跟着搬了家——这种改动不会为了做样子而做。 下面这篇不打算复述发布会讲了什么。它想回答的是几个更实际的问题:这东西装在什么机器上、配置到底读哪些文件、那个被吹得最响的并行能力究竟怎么用、以及每个月的钱花在了哪里。 ## 合并之后,Codex到底还算不算一个独立产品? 算,也不算。准确的说法是:Codex是一个智能体内核,穿了四套衣服。 入口 | 形态 | 擅长 | ChatGPT桌面端的Codex模式 | 图形界面 | 并行开对话、看差异、审查合并请求 | Codex命令行 | 终端,开源 | 脚本化、接持续集成、定时任务 | Codex云端 | 浏览器 | 派活出去,回头再收 | 编辑器插件 | 嵌在IDE里 | 写代码时随手唤起 | 四个入口读同一份仓库约定文件、共享用户级配置、消耗同一份订阅额度。所以在桌面端学会的东西,换到命令行一点不浪费,反过来也一样。这个判断很重要,因为它直接决定了后面所有取舍的形状——你不是在选产品,你是在选一个界面。 OpenAI愿意做这次合并,背后是一组挺反常的用户构成:官方公开过的数字里,Codex的周活从2026年初的六十万一路涨到年中的五百万级别,而其中约两成用户根本不是开发者,非开发者这一群的增速还是开发者的三倍。市场、财务、法务的人自发在用一个为工程师做的工具,这就是它最终被塞进消费级旗舰应用的原因。 ## 这次合并对你意味着什么 抛开商业叙事,合并留下三个实际后果,每一个都会影响你怎么用它。 第一,它的路线图现在向一个消费级产品汇报。这不是坏话,是需要计入预算的变量:接下来几个季度的功能取舍,会更多考虑那两成非开发者,而不是你。把它当成一个会持续变形的东西来用,别把关键流程焊死在某个界面细节上。 第二,早期的合并构建确实丢了一批东西。临时聊天、语音模式、深度研究、自定义助手在合并初期缺席,聊天历史被塞进一个只显示三四条的小弹窗。如果这些对你重要,把改名为Classic的旧应用留着并行用一段——虽然把一个还在用的产品命名成经典版,读起来确实很像一张弃用通告。 第三,也是最容易被忽略的:macOS上应用标识变了。从原本的ChatGPT标识换成了Codex标识,钉在旧标识上的设备管理策略、白名单、自动化脚本会悄无声息地失效。管设备的人请先更新策略,再让同事更新应用,顺序反了会有一段时间的合规空窗。 ## 还有一个混乱是产品自己造出来的 合并之后最高频的吐槽不是缺功能,是分不清Work模式和Codex模式。在两者之间来回切,很多任务下界面几乎没有变化,官方也没把差异讲透。 在这块体验被修好之前,一条能用的土规则是:跟仓库相关的活走Codex模式,因为只有它有工作树和差异审查;文档、表格、调研这类走Work模式。别指望那个切换按钮会给模型换个脑子,它换的主要是这一套围绕代码的工作台。 ## 装之前要先确认哪几件事? 硬件门槛会直接排除一批人,所以放在最前面。桌面端只支持Apple Silicon的macOS和Windows;官方下载页给macOS标的就是Apple Silicon,Intel机器出局。没有Linux版本,也没有任何时间表。Linux用户到这里就可以打住,直接去用命令行版本——同一个智能体、同样的额度,只是没有图形界面。 安装本身没什么可讲的:下载、用ChatGPT账号登录、指向一个项目文件夹。值得单说的是登录这一步——它不要接口密钥。计费直接挂在你已有的订阅上,这是它和绝大多数智能体工具最大的上手差异,也是它敢说边际成本为零的底气。 还有一件该在跑第一个正经任务之前做的事:检查仓库里的约定文件。如果之前给命令行版写过,桌面端读的就是同一份;没有的话,先把构建命令、测试命令、目录约定写进去。这一步跳过去,后面每一次对话都要重新解释一遍项目长什么样,而这些解释是要花钱的。 ## 第一天就该顺一遍的四件事 装完到跑第一个真任务之间,有四件事值得花十分钟顺一遍,它们决定了后面几个月的体验。 一是选好权限姿势。和命令行一样,桌面端的智能体跑在文件与网络访问受限的沙箱里,要提权会先问你。第一次上手别急着把审批调到从不询问,先用默认跑几个任务,看清楚它在什么时候会伸手要权限,再决定放宽哪一格。 二是把项目按信任分级。自己的仓库标受信任,克隆来试的陌生仓库保持默认。这一步的收益在下一节会讲清楚,但现在先形成习惯成本最低。 三是想清楚本地还是云端。桌面端区分本地环境和云端环境:本地是智能体在你机器上干活,云端是任务跑在服务商的基础设施上。云端能让你在手机上派活、回来再审,但它和本地消息吃同一份额度窗口,这一点后面单独展开。 四是先跑一个你已经知道答案的任务。这条听起来多余,实际上是最省时间的:拿一个你自己十分钟能做完、且知道正确结果长什么样的活让它做一遍。你要看的不是它做没做对,是它的提权时机、差异呈现方式、以及审查界面用起来顺不顺手。这些没法从任何评测里读到。 ## 配置真的只有一个文件吗? 流传最广的说法是用户级设置放在主目录下的~/.codex/config.toml,三个入口共享。这话没错,但它只说了六分之一。 官方配置文档 (https://developers.openai.com/codex/config-file/config-basic)给出的解析顺序是六层,从高到低: - 命令行参数与临时覆盖 - 项目配置文件.codex/config.toml,从仓库根目录往当前工作目录逐级读,最近的那一层赢 - 用参数选中的档案文件 - 用户配置~/.codex/config.toml - 系统配置,类Unix上是/etc/codex/config.toml - 内建默认值 ## 那道最容易被忽略的信任门 第二层有个前置条件:项目级配置只在你把这个项目标记为受信任时才加载。标记为不受信任,Codex会跳过整个项目级目录,包括项目本地配置、钩子和规则;用户级和系统级的仍然照常加载。 这个设计的意义比它看起来大。克隆一个陌生仓库跑一下,这是每个人每周都在做的事,而仓库里可以躺着一份把审批策略调松、把沙箱模式调到完全放开的配置。信任门就是拦这个的。反过来说,如果你发现自己精心写的项目配置似乎没生效,第一个该查的不是语法,是这个项目有没有被标成受信任。 ## 受管机器上还有一层 企业环境里还有一份要求文件,组织可以用它强制约束,比如禁止把审批策略设成从不询问、禁止把沙箱模式开到完全放开。这一层是员工改不掉的。管设备队伍的人如果只知道那个用户目录里的文件,会误以为个人配置能覆盖一切——实际上顺序正好反过来,组织约束在最外面。 ## 一线程一工作树这个说法,到底哪里不对? 这是本文最想纠正的一处。二手介绍里流传最广的版本大致是:你在项目里新开一个对话,Codex就悄悄为它建一个Git工作树,你什么都不用管,对话关掉自动清理。 听起来很美,也确实是很多人决定装它的理由。但官方文档 (https://developers.openai.com/codex/environments/git-worktrees)写的不是这样。 ## 它实际上是三选一 开新对话的时候,你要在输入框下方选这个对话跑在哪: 位置 | 含义 | 本地 | 直接在你当前的项目目录里干活 | 工作树 | 把改动隔离在一个Git工作树里 | 云端 | 跑在配置好的云环境里 | 选了工作树,还要再选一件事:基于哪个分支创建。可以是主干、某个特性分支,也可以是带着未暂存改动的当前分支。提交之后Codex才会建出工作树,而且默认让你工作在分离头指针状态。 另外两条限制也得说清楚:工作树只在桌面端的Codex模式里有,命令行和插件都没有;而且它要求项目本身在一个Git仓库里,因为它底层就是Git工作树。 ## 真正的新东西叫交接 比自动创建更值得关注的,是官方给的那个交接流程——在本地检出和工作树之间搬运一整个对话,Git层面的操作由Codex代劳。 为什么需要它?因为Git有一条硬约束:同一个分支同一时间只能在一个地方检出。你在工作树上检出了某个分支,本地检出就不能再检它,反过来也一样。手工来回倒腾这件事,是并行开发里最容易把自己绕晕的一步。交接把这段体力活自动化了。 顺着这个机制,官方给的心智模型也很清爽:本地是前台,工作树是后台。需要你盯着调、要跑依赖、要人工验证的活留在前台;能排队后台跑的丢进工作树,回头再交接回来审。真要说这个应用有什么设计得漂亮的地方,是这一条,不是那个并不存在的自动创建。 ## 定时任务会自己去后台 还有一处二手资料普遍没提:Git仓库里的定时任务可以跑在专用的后台工作树上,避免和你手头正在做的事冲突;而在非版本控制的项目里,定时任务就直接在项目目录里跑。这个差别对排定时活的人是实打实的——前者可以放心让它半夜跑,后者你得先确认自己不在同一个目录里改东西。 顺带一提,如果你更熟悉终端那一侧的并行方案,把两边的模型对照着看会更快理解,之前那篇一个仓库并行跑多个AI任务 (https://zhangwenbao.com/claude-code-worktree.html)讲的是同一件事的另一种实现路径。 ## 什么时候该开工作树,什么时候纯属添乱 知道了它是手动的,下一个问题就变成了什么时候值得手动那一下。 适合开工作树的活有三个共同特征:耗时长、不需要你中途介入、改动面可能很大。大范围重构、批量补测试、把某个依赖升个大版本,这些丢进工作树最合适——它们跑起来要几十分钟,期间你完全可以在本地干别的,而且万一跑歪了,丢掉整个工作树比在主目录里回滚干净得多。 不适合的也很清楚:改一行配置、调一个样式、修一个明确的小报错。这类活开工作树是纯粹的仪式开销,你得选分支、等它建、跑完还要交接回来,总时间比直接在本地改长得多。 中间还有一类容易判断错的:需要跑起来才能验证的活。比如改完要启动开发服务器看效果、要连本地数据库跑一遍。工作树是一份独立检出,依赖和环境变量不会自动跟过去,得先给它配好本地环境的初始化脚本。愿意配就留在工作树,不愿意配就老老实实在本地做——半配不配是最难受的状态。 ## 并行到底能开几路 技术上没有硬性上限,但有两条现实约束。一条是你自己的注意力:轮流审三份差异,比实时盯着一个智能体思考要高效得多,可这个优势在第四第五份之后会迅速衰减,因为你开始记不清哪个改动属于哪条线。 另一条是磁盘。每个工作树都是一份完整的文件检出,只共享Git元数据。一个几百兆的前端仓库开五路,就是几个G。有人报告过应用会在文档目录里自建文件夹,叠加上没清理的工作树,磁盘杂物能积累得超出想象。干完的对话及时关掉让清理跑起来,别留十几个活工作树过夜。 ## 那些看着像内建的能力,其实是什么? 桌面端最吸引眼球的两个能力,是能自己开网页的浏览器和能操作图形界面的电脑使用。很多介绍把它们讲得像开箱即用,实际上两个都是要单独安装的插件。 ## 内置浏览器 它给你和模型一个共享的网页视图,可以预览页面、留视觉批注,也可以让模型代你在站点上操作。快捷键是macOS上的Cmd+Shift+B、Windows上的Ctrl+Shift+B。 两个容易踩空的地方:第一,它用的是一份独立的浏览器档案,不会自动共享你现有的标签页和登录状态,需要账号就得在里面重新登一次;想用你日常那个Chrome的档案,得改装Chrome扩展那条路。第二,浏览器在命令行和编辑器插件里都不可用,只有桌面端和网页版有。 官方在这一节写了一句很克制但很重要的提醒:把页面内容当作不可信的上下文来对待。这不是免责声明,这是提示注入的正式说法——页面上任何一段文字都可能是写给模型看的指令。 ## 电脑使用 官方文档 (https://developers.openai.com/codex/computer-use)说得很直白:它能看见并操作macOS或Windows上的图形界面,用在命令行工具和结构化集成都够不着的地方——查一个桌面应用的状态、改某个应用的设置、复现一个只在图形界面里出现的问题。 装它要给权限。macOS上要授予屏幕录制和辅助功能两项,前者让它看见,后者让它操作;Windows上则要保证目标应用在活动桌面上可见。设置里有一个应用授权面板,批准过的应用会进入一个始终允许列表。 这份权限清单本身就是风险提示。一个能看你屏幕、能点任何东西的智能体,一旦任务里混进恶意内容,横向移动的空间非常大。按任务授权具体应用、永远不给全局授权,是唯一说得过去的用法;密码管理器和网银标签页离它越远越好。 ## 一枚代币到底值多少钱? 这是最值得算清楚的一节,因为算完之后很多选择会自己浮出来。 ## 先看官方费率表 官方计费文档 (https://learn.chatgpt.com/docs/pricing)给的是每百万词元消耗多少代币,注意中间那一列——缓存过的输入只要正常输入的十分之一。 模型 | 输入 | 缓存输入 | 输出 | GPT-5.6 Sol | 125 | 12.5 | 750 | GPT-5.6 Terra | 62.5 | 6.25 | 375 | GPT-5.6 Luna | 25 | 2.5 | 150 | GPT-5.4 mini | 18.75 | 1.875 | 113 | GPT-Image-2生图 | 200 | 50 | 750 | ## 拿接口价一除,汇率就出来了 把这张表和接口定价页 (https://developers.openai.com/api/docs/pricing)并排看:Sol每百万输入词元5美元、缓存输入0.5美元、输出30美元;Terra是2.5、0.25、15;Luna是1、0.1、6。 逐格一除,全部落在同一个数上:1枚代币等于4美分的接口价值。125对5美元、12.5对0.5美元、750对30美元,Terra和Luna同样闭合,连GPT-5.4 mini那个看起来不整的113也是112.5四舍五入的结果。这不是巧合,是刻意设计的整齐——你的订阅本质上是一笔按高倍率预付的接口余额。 官方还给了另一个能直接用的数:GPT-5.6平均每条消息消耗5到40枚代币。换算过来就是每条消息0.2到1.6美元的接口等值。拿这个去比每月20美元的订阅,杠杆倍率高得有点离谱——这也解释了为什么按接口密钥自己跑同样的量,账单会比订阅难看很多。 要提醒的是,官方明确说这些额度和代币数都是平均速率,不是保证值。同一份文档还写了一句很实在的话:看起来相似的任务消耗可能差很多,模型选择、上下文、推理、工具调用、检索、缓存都会影响用量,光看提示词长度估不准。 ## 三个模型该怎么分工 官方给的定位是:Sol用在质量和推理深度最要紧的时候,比如复杂分析和高阶工作流;Terra是日常默认,能力和性价比平衡得最好;Luna为速度和低成本优化,适合轻量或者高吞吐的活。 把费率叠上去,这个建议会变得更锋利:Luna每词元的开销只有Sol的五分之一。而修测试、小重构、批量改脚本这类日常活,质量差距很少配得上五倍的烧钱速度。一个能直接照抄的默认是:Terra当主力,杂活批量跑Luna,Sol留给那些你本来会交给资深工程师的任务。 ## 额度是按模型分行的,不是按档位一个数 流传的说法里,Plus档常被简化成一句“每五小时大约二十到一百一十条”。这个数字本身没错,但它只是Terra那一行。官方的额度表是一个矩阵: 模型 | Plus与Business | Pro 5倍 | Pro 20倍 | GPT-5.6 Sol | 15–90 | 75–450 | 300–1800 | GPT-5.6 Terra | 20–110 | 100–550 | 400–2200 | GPT-5.6 Luna | 50–280 | 250–1400 | 1000–5600 | GPT-5.4 mini | 60–350 | 300–1750 | 1200–7000 | 换个模型,可用条数能差五倍以上。所以“额度不够用”这句抱怨,很多时候真正的意思是“一直在用Sol干Luna就能干的活”。 还有两列在表里全是不可用,容易让人误会:云端对话和代码审查那两列目前没有公布具体数字。但脚注写得很清楚,本地消息和云端对话共享同一个五小时窗口,另有周级别的限额叠在上面。至于代码审查,只有通过代码托管平台跑的那种才单独计入——你在本地让它审一遍差异,走的还是通用额度。 ## 三类用户的账单大概长什么样 把上面的数字组合一下,能拼出三张有代表性的账单。这些是量级估算,不是承诺。 一个人做独立站,每天两三个小时。典型用法是改模板、调样式、写点脚本、批量处理商品数据。这类活八成可以跑Luna,Plus档每五小时50到280条,基本用不完。每月20美元封顶,这是性价比最高的一档,没有升级的必要。 小团队做产品,每人每天高强度用。主力跑Terra,复杂设计和疑难排查偶尔上Sol。这时候Plus的20到110条会开始紧张,尤其是下午连着开三条并行线的时候。判断要不要升Pro的标准不是感觉,是看用量面板:如果每周有三次以上撞到窗口上限并且被迫等待,升档换来的时间比省下的钱值钱。 要接自动化和定时任务。这一类不该走订阅,该走接口密钥。原因不是价格,是权限姿势——命令行的执行命令默认只读、需要显式提权,这才是自动化该有的样子,而图形界面既做不到也没法被程序驱动。混合用是完全正常的:人工交互走订阅,机器跑的活走密钥,两边的账分开看反而更清楚。 如果你还在同时评估另一家的订阅,两边的限额机制其实差别不小,五小时窗口与周限额到底怎么算 (https://zhangwenbao.com/claude-rate-limits.html)那篇把另一侧的双层窗口拆得比较细,对照着看能少踩不少想当然的坑。 ## 档位价目与两个容易看漏的条款 订阅档从免费到定制一共六档:免费0美元、Go每月8美元、Plus每月20美元、Pro从每月100美元起(5倍或20倍,20倍是200美元)、Business每用户每月20美元、企业与教育版联系销售。 Business那一档有两个附加条件常被漏掉:20美元是两人起、按年付的价格,按月付是每用户25美元。团队做预算时按25算,签合同时再谈年付,比反过来安全。 另外Pro档还独占一个研究预览阶段的快速模型GPT-5.3-Codex-Spark,跑在专用低延迟硬件上,用量走一条单独的限额,接口暂时不提供。想清楚这一点再决定要不要升Pro——它不只是额度乘个系数。 ## 官方自己给的省额度办法有哪几条? 与其自己琢磨,不如直接看官方在计费文档里列的那几条。它们排得很实在,而且有两条明显是站在自家产品对立面说话的。 - 控制提示词体积。指令要精确,但把不必要的上下文删掉。 - 限制素材范围。只给相关文件,能缩小来源或时间范围就缩小。 - 让产出匹配需求。先定受众、格式和长度,把必须做的和锦上添花的分开。 - 缩小仓库约定文件。大项目可以把约定文件按目录嵌套,控制每次注入多少上下文。 - 少挂几个工具服务。官方原话是每一个都会给消息追加上下文、吃掉更多额度,不用的时候就禁用掉。 - 日常任务换小模型。换到更小的档能明显拉长本地消息的可用条数。 倒数第二条尤其值得停一下。一个服务商在自己的计费文档里主动劝你少挂它自家生态的扩展,这种自曝短处的坦白不常见,也基本可以当作定论——常驻扩展的上下文开销是真实的、可观的、而且你付了钱。这一点在别的智能体工具上同样成立,只是很少有人把它写进官方文档。 ## 把这六条翻译成能执行的动作 官方的表述偏原则,落到具体操作大概是这样几件事。 约定文件那条最容易见效。很多人的仓库约定文件写了几百行,把编码规范、目录说明、历史决策全塞了进去,而这些内容每一次对话都要重新交一遍钱。按目录嵌套之后,前端目录下的对话只加载前端那一份,后端同理,单次注入量能砍掉一大半。判断该不该留的土办法:这一行如果模型不知道,它会做错吗?不会就删。 素材范围那条对做内容和数据的人尤其重要。让它读整个导出的商品表,和让它读筛选后的三百行,产出质量差别不大,费用差好几倍。养成先筛后问的习惯,比任何模型选择的技巧都省钱。 产出匹配需求那条最反直觉:输出比输入贵得多。看那张费率表,输出的单价是输入的六倍。所以“顺便再帮我写份文档”这种随口追加,成本远高于它听起来的样子。先说清楚要多长、给谁看、什么格式,能挡掉大量没人会读的字。 ## 缓存那一列才是最大的杠杆 六条建议里官方没有明说、但从费率表能直接读出来的一条是:让上下文稳定下来,比让上下文变小更划算。缓存过的输入只按十分之一计费,这意味着同一份约定文件、同一批参考代码在连续几轮里反复出现时,第二轮之后基本是白送的。 反过来说,每次都换一批文件、每次都重开一个新对话,等于主动放弃这个折扣。一个很小的习惯改变能吃到它:同一个主题的活尽量在一个对话里连着做完,而不是做一件开一个新窗口。这条对长任务的省钱效果,往往比换小模型还明显。 还有三条属于用量监控而非节流。撞到额度上限时不必升档,可以单独买代币继续;也可以拿接口密钥跑额外的本地对话,按接口价计费。命令行里敲/status能看当前会话的剩余额度,网页后台有完整的用量面板。 ## 四笔容易莫名其妙见底的账 第一笔是云端与本地共享同一个五小时窗口。把活派到云端买不来额外容量,只买来额外的并行度。此外还有周级别的限额叠在上面。 第二笔是生图。官方文档原话是生图消耗额度的速度平均快3到5倍,取决于质量和尺寸;对照上面那张费率表也能看出来,生图模型的输入费率是Sol的1.6倍。一场设计密集的会话吃掉一整个窗口,一点都不夸张。语音也一样:桌面语音有单独的时长额度,Plus大约15到30分钟,而在按代币计费的工作区里大约每分钟6枚代币,通过语音起的任务照样吃你的Codex额度。语音这块的实现也挺有意思:对话本身由一个实时模型托着,真正在应用里起任务和协调的是Terra,所以你用嘴派的活,账还是记在同一本上。 第三笔是速度配置。官方写得很明确:提速档会让所有适用模型的代币消耗率上升,快速模式对支持的模型按更高费率计。这一条很容易在赶工期时被无意识地打开,然后到月底才发现额度提前一周就没了。 第四笔最隐蔽:额度是和其他智能体功能共享的。官方文档里点名了一个当前正在共享的例子——Plus和Pro上的ChatGPT表格功能。也就是说,同事拿它处理一份大表,吃掉的是同一份预算。团队按人头分配额度时,别只按写代码的人数算。 还有一条不算消耗但值得知道:代码审查的额度是单独计的,而且只在通过代码托管平台跑的时候才计入——比如在合并请求里提及机器人、或者给仓库开了自动审查。你在本地让它审一遍差异,走的还是通用额度。 如果你同时也在另一家的订阅上花钱,两边的计费哲学值得对照着看一遍,之前那篇订阅、接口与省钱机制全拆解 (https://zhangwenbao.com/claude-code-pricing-guide.html)把另一侧的账算过一遍,两边合起来看更容易判断自己该把预算放哪。 ## 桌面端、命令行和另一家的终端智能体该怎么分? 先说桌面端和命令行的关系。它们是同一个智能体,所以这不是选型,是分工: 维度 | 桌面端Codex模式 | Codex命令行 | 平台 | macOS(Apple Silicon)、Windows | macOS、Linux、Windows | 工作树 | 开对话时可选,带交接流程 | 要自己手动管 | 审查 | 差异内联编辑、合并请求面板 | 终端里看差异 | 脚本化与持续集成 | 做不到 | 可以,最小权限沙箱 | 浏览器与电脑使用 | 装插件后可用 | 没有 | 结论其实很短:桌面端是驾驶舱,命令行才是能被脚本驱动的引擎。两边共享配置和额度,所以“都用”是最正经的答案——命令行当骨干接自动化,桌面端当指挥室做审查。 至于要不要从另一家的终端智能体迁过来,保哥的判断是:如果你的工作流已经建在扩展机制、钩子和软件开发工具包上,这次合并没有造出值得搬家的能力差距。真正的不对称是分工上的——一边把免终端的图形体验做得更好,另一边把终端原生的可编程性做得更深。按你平时住在哪一边选,别按发布会的热闹选。想看两个内核在架构层面的完整对照,两个终端编程代理的架构与工作流对比 (https://zhangwenbao.com/claude-code-vs-codex.html)那篇拆得更细。 ## 做出海和独立站的人,这东西能落到哪 那两成非开发者用户不是统计噪声,它指向一批很具体的用法。运营侧最现成的三个:把重复的数据清洗写成定时任务丢进后台工作树,每天早上回来收结果;让它在内置浏览器里跑一遍下单流程,检查改版后结账链路有没有断;用小模型批量处理商品文案的格式化与字段补齐,这种活跑Luna完全够用,跑Sol就是纯浪费。 要注意的边界也很清楚:涉及客户数据、支付凭据、后台管理系统的操作,别交给能看屏幕点鼠标的那个能力。它强大的地方和它危险的地方是同一处。 还有一个用法把那两成非开发者的价值讲得最清楚:让不写代码的同事自己改掉那些本来要排队等开发的小东西——落地页上的错别字、指错的链接、没更新的促销日期。这类活占了不少团队开发排期的比例,技术难度却接近于零。做法是给运营同事开一个权限收紧的项目,改动全部走差异审查再合并。 这里的关键不是模型多聪明,是那道审查关口。有差异面板,改动就是可见、可否决、可回溯的;没有它,同样的能力就是在生产环境裸奔。所以在团队里推这个东西,先把审查流程立起来再放权限,顺序反了迟早出事。 ## 一个更朴素的判断标准 要不要装它,其实不用等评测。三个问题自问一遍就有答案:你已经在给ChatGPT付费了吗?你需要同时推进几条互不干扰的改动吗?你更愿意在图形界面里审查差异,还是在终端里? 三个都是肯定,装它的边际成本接近于零,值得试;只要有一个是否定,先别急。尤其是第一个——如果你还没有订阅,为了这个应用去开一档,性价比远不如把同样的钱花在你已经熟悉的那套工具上。工具的价值高度依赖于你已经建好的习惯,而不是它的功能清单有多长。 还有一层容易被忽略的判断:这个产品六个月变了三次形态,第三次还是被并进了一个消费级应用。把非关键的活交给它、把关键流程留在更稳定的地方,是这个阶段最省心的姿势。等它的形状稳下来,再考虑要不要往深里绑。 ## 常见问题解答 问:Codex桌面端支持Linux吗? 不支持,官方也没有公布过任何计划。只有Apple Silicon的macOS和Windows两个平台。Linux用户请用命令行版本,同一个智能体、同一份配置、同一份订阅额度,区别只是没有图形界面。 问:每个对话真的会自动创建工作树吗? 不会。开对话时要在本地、工作树、云端三者里手动选一个,选了工作树还要指定基于哪个分支创建,默认工作在分离头指针状态。工作树只在桌面端的Codex模式里可用,而且项目必须在Git仓库中。 问:一枚代币值多少钱? 约合4美分的接口价值。用官方费率表除以对应的接口定价,几个模型的输入、缓存输入、输出三档全部落在这个数上。缓存过的输入只按正常输入的十分之一计费,这是最容易被忽略的省钱杠杆。 问:额度用完了必须升档吗? 不必须。个人档位撞到上限后可以单独购买代币继续用;也可以用接口密钥跑额外的本地对话,按接口价计费。工作区类的账户则可以购买工作区代币。换用更小的模型同样能立刻拉长可用条数。 问:把任务派到云端能省本地额度吗? 不能。云端对话和本地消息共享同一个五小时窗口,另外还有周级别的限额。派到云端买到的是并行度和不占用本机资源,不是额外容量。 问:项目里的配置文件为什么没生效? 大概率是这个项目没有被标记为受信任。不受信任的项目会跳过整个项目级目录,包括本地配置、钩子和规则,只保留用户级和系统级配置。此外受管设备上还有一层组织强制的要求文件,个人配置改不掉它。 问:内置浏览器能用我已经登录的Chrome吗? 默认不能。它用的是一份独立的浏览器档案,不共享你现有的标签页和会话,需要账号得在里面重新登录。要用日常Chrome的档案,走Chrome扩展那条路。 问:升级到Pro只是额度乘个系数吗? 不只是。除了5倍或20倍的额度,Pro还独占一个研究预览阶段的快速模型,跑在专用低延迟硬件上并走单独的限额,接口侧暂不提供。如果你在意的是响应速度而不只是条数,这一条比倍率更值得算。 ## 权威参考资料 ## Lovable、v0、Bolt怎么选?三款AI应用生成器的计费机制与退出成本 - URL:https://zhangwenbao.com/lovable-vs-v0-vs-bolt-ai-app-builder.html - 分类:AI编程与工具链 - 发布:2026-07-08 | 更新:2026-07-30 - 摘要:这三个不是同一产品的三个牌子,是三个物种。本文按官方定价页核对全部价格与额度,拆开三种计费模式各自的翻车姿势、导出代码后仍然拿不到的四层绑定,以及最新一版代码安全报告揭示的漏洞分布。 - 关键词:Vibe Coding,独立站,代码安全,选型 > **TLDR**:摘要:不会写代码、这周就要把能用的东西摆到用户面前,选Lovable;团队在Vercel上跑Next.js且在乎代码评审,选v0,但要注意它的付费起步档已经从20美元涨到30美元;要浏览器里的完整开发环境或者要做移动端,选Bolt。会用终端的工程师三个都别买。真正决定这笔钱花得值不值的不是功能清单,是三件事:计费单位挂在什么东西上、你的应用长大之后成本曲线往哪走、以及离开的时候要付多少。文中所有价格与额度都按官方定价页逐条核对过。 > 摘要:不会写代码、这周就要把能用的东西摆到用户面前,选Lovable;团队在Vercel上跑Next.js且在乎代码评审,选v0,但要注意它的付费起步档已经从20美元涨到30美元;要浏览器里的完整开发环境或者要做移动端,选Bolt。会用终端的工程师三个都别买。真正决定这笔钱花得值不值的不是功能清单,是三件事:计费单位挂在什么东西上、你的应用长大之后成本曲线往哪走、以及离开的时候要付多少。文中所有价格与额度都按官方定价页逐条核对过。 这个赛道现在的声量已经大到失真。一家成立不到三年的公司,年化收入冲到5亿美元规模,估值传闻在半年里翻了一倍,连搜索框里拼错名字的人都在暴涨。热闹归热闹,掏钱之前得先把一件事想明白:你买的到底是什么。 把这三家的营销页并排看,你会觉得它们在卖同一样东西——用自然语言生成一个能跑的应用。但把账单摊开看,它们卖的是三样不同的东西,而且三条成本曲线的形状完全不同。这篇按速查手册写,不按测评写:先说物种差异,再逐个拆计费,最后讲交接和退出。 ## 这三个真的是竞品吗? 先给结论:不是。它们是三个不同的物种,而网上对这三家的差评,追根溯源大多是选错了物种,不是产品本身烂。 三家20到30美元的趋同定价强化了“它们是竞品”这个错觉。拆开看,它们回答的是三个不同的问题: | 它回答的问题 | 工作单位 | Lovable | 我有产品想法但不会写代码,帮我做出能用的应用 | 一个产品决策 | v0 | 我要在Vercel生态里做生产级前端 | 一个合并请求 | Bolt | 我要一个跑在浏览器标签页里的完整开发环境 | 一个代码库 | 有一样东西三家已经不比了:代码质量。底层都是前沿模型,输出质量在2025年就趋同了。还在分化的只剩两样——包在模型外面的工作流,以及项目变大之后各家怎么收你的钱。这篇的主菜全在这两样上。 ## 先用免费档摸清楚各家的脾气 在掏钱之前,三家的免费档其实足够让你判断物种合不合适。把官方给的限额并排放,差异一目了然: | 免费档给什么 | 它先卡住你的地方 | Lovable | 每天5枚credit,每月上限约30枚 | credit,一个带图落地页就要1.7枚 | v0 | 每月5美元额度 | 每天7条消息的硬上限 | Bolt | 每天30万词元、每月100万词元 | 页面强制带品牌标识、上传限10MB | 三家卡你的地方不一样,这本身就是信息。v0卡的是对话次数,说明它假设你每次提问都经过思考;Bolt卡的是词元总量,说明它默认你会频繁迭代;Lovable卡的是任务份额,说明它把一次完整的产品动作当成计价单元。免费档的形状,就是付费档逻辑的缩影。 用免费档做判断的正确姿势不是比谁生成得好看,而是拿同一个具体需求各跑一遍——比如“一个带邮箱订阅的产品预告页”——然后看三件事:它把代码藏起来还是摊开、改一处细节要来回几轮、以及你能不能看懂它选了哪些第三方服务。这三件事决定了后面几个月你过得舒不舒服,生成质量反而不决定。 如果你的问题其实更上游,也就是还没定“到底用什么建站”,那么这三个都只是众多选项里的一类,之前那篇SaaS托管、自建、AI建站还是纯代码 (https://zhangwenbao.com/independent-site-builder-platform-choice-saas-wordpress-ai-code-seo.html)把四条路的取舍拆得更完整,先看那篇再回来选牌子会更省时间。 ## Lovable为什么是最好的孵化器,却不该住在里面? Lovable在这篇里占的篇幅最大,因为它的营销和现实之间的落差最大——而且是两个方向上的落差。 先说好的那一面。据行业报道,它在2026年中的年化收入约5亿美元,员工只有一百多人。这种收入结构说明了一切:钱不是开发者掏的,是全球那批有想法但不会执行的人掏的。按“非技术创始人的孵化器”这个标准评价,它是品类里最好的产品,每一分钱都挣得名副其实。 顺带把一个容易被传歪的数字校准一下:2025年12月完成的那轮3.3亿美元B轮,对应估值约66亿美元,这是有官方博客背书的。至于132亿这个数,来自2026年7月初的报道,说的是正在谈的一轮,截至本文更新时仍未见官宣关闭。引用它的时候记得带上“在谈”两个字。 ## credit到底是怎么扣的 官方定价页 (https://lovable.dev/pricing)把消耗示例写得很实在,这几个数比任何评测都有用: 你说的话 | 它做的事 | 扣多少 | 把按钮改成灰色 | 更新按钮样式 | 0.50 | 去掉页脚 | 移除页脚组件 | 0.90 | 加上注册和登录 | 加鉴权页面与逻辑,更新路由 | 1.20 | 做个带图的落地页 | 生成落地页、3张图、主题与5个区块 | 1.70 | Pro档每月25美元,给100枚credit外加每天赠送;免费档每天5枚、每月上限30枚左右;Business档每月50美元,加的是团队管控。未用完的月度credit在订阅有效期内可以顺延,每日赠送的那部分不顺延,每24小时清零。 ## 那个几乎没人提的固定档模式 官方其实给了两种构建模式,而流传的介绍里基本只讲了第一种: - 默认模式:credit消耗随任务复杂度浮动,就是上面那张表。 - 计划模式:每条消息固定1枚credit。 这个区别在项目变大之后会变成救命稻草。因为默认模式最被诟病的那条曲线——应用越复杂、每次修改要带的上下文越多、单次扣得越狠——在固定档下被拉平了。项目小的时候用默认模式更省,项目大到单次动辄扣两三枚的时候,切固定档反而划算。 这也是评估这类工具时一个通用的提醒:厂商往往已经给了缓解手段,只是没放在营销页的第一屏。在抱怨账单之前,先把定价页的常见问题一条条读完,比读十篇测评有用。 ## 第二条成本曲线藏在托管里 还有一笔更隐蔽的账。Pro和Business订阅除了credit,还含一份用于构建与托管的赠额。而官方明确写着:当应用的访问量或体积达到一定规模,会在赠额之外产生费用,这笔费用从你的credit余额里扣。 把这句话翻译成人话:你的应用越成功,它吃你的credit越多——而且吃的还是你原本用来继续开发的那份。这不是黑幕,托管确实要成本,但它决定了一个正确的心智模型:这笔钱是为冲刺付的,不是为长跑付的。 团队用的话还有一个实用设置值得先打开:工作区的所有者和管理员可以设一个默认的月度credit上限,还能按成员单独覆盖。不设的话,一个人一晚上就能把整个团队的额度用光,这种事在共享额度的产品里屡见不鲜。 ## 国内视角的三条硬约束 官网访问没问题,但付费需要国际信用卡;底层后端服务的国内访问延迟明显,面向国内用户的应用体验会打折;部署产物默认在海外节点,备案无从谈起。 所以它适合做面向海外用户的产品验证或者内部演示。要做国内C端产品,要么验证完导出代码部署到国内云,要么直接看后面讲的国产替代。最差的选择是用海外工具的默认部署链路去服务国内用户,等于把产品体验押在一条你完全不可控的网络路径上。 ## Bolt的账单为什么会复利? Bolt藏着整个品类里最少被讲透的一个事实。先说它是什么,再揭这个底。 ## 浏览器里跑真实Node.js是怎么做到的 技术上Bolt是三者中最有意思的。它背后的容器技术是在浏览器里实现的一整套Node.js运行时——本质上是在浏览器沙箱里跑一台微型虚拟机,不用远程服务器,也不用等容器启动。文件树全部可见、任何文件可以手改、有终端。 三个工具里只有它用起来像IDE而不是聊天产品,这也精确圈定了它的物种:想要AI的速度、但不愿意放弃代码可见性的开发者。 ## Expo那条移动端路径,走到哪一步会停 它还握着整个品类最清晰的差异化能力:移动端。通过与Expo的官方合作,它能脚手架出带路由和样式方案的React Native项目,几分钟内扫码就能在真机上跑起来。另外两家完全没有原生移动端路径。 但边界要说清楚,因为营销页不会说:浏览器里的运行时跑不了Xcode、Android Studio和云构建管线。它给你的是React Native代码,不是签名后的安装包。上架应用商店仍然要在自己机器上配构建服务。“不写代码从想法到应用商店”这句话只在前八成路程上成立,对最后两成保持沉默。 ## 现在揭底:它按项目体积收钱,不按需求大小 Bolt的词元消耗跟项目大小挂钩,不跟你这次要改什么挂钩。它的大部分开销花在把项目文件同步进模型上下文——同样是改一行字,第六周的花费远高于第一周,纯粹因为代码库长大了。 官方定价 (https://bolt.new/pricing)是Pro档每月25美元、起步每月1000万词元,未用完的付费词元顺延一个月;Teams档每人每月30美元;年付最高能省28%。听着很多,但中等规模项目单条消息就能消耗六位数词元。它用词元顺延和差异同步来缓解,但曲线的本质不变:它在项目小的时候便宜,恰好在项目开始成功的时候变贵。 ## 免费档和Pro档的真实边界不在词元上 定价页上还有一组常被跳过的数字,对独立站主反而更关键:免费档每天30万词元、每月100万词元、单文件上传10MB、托管站点最多约33.3万次网络请求,而且页面会带品牌标识。Pro档取消每日词元上限、上传放宽到100MB、请求配额提到100万次,并且解锁自定义域名、可选数据库供应商、扩展的数据库容量与AI图片编辑。 请求配额这一条值得单独盯:它是第三条“应用成功了才开始收你钱”的曲线。一个真有流量的落地页,几十万次请求消耗得比想象中快。把Bolt当草稿机用,这条完全够;把它当正式托管,迟早要面对这笔账。 国内访问方面,Bolt的架构反而是优势:计算跑在本地浏览器里,网络依赖比另外两家轻,主要瓶颈在模型请求和包管理源,而后者可以换国内镜像。 ## 浏览器运行时能跑什么,跑不了什么 把Node.js塞进浏览器很酷,但这个架构有几条绕不过去的边界,值得在选它之前想清楚。 能跑的是纯JavaScript和TypeScript生态里的绝大多数东西:常见的前端框架、服务端渲染、接口路由、包管理、开发服务器、热更新。跑不了的是任何依赖原生二进制的东西——需要本机编译的模块、图像处理库的原生绑定、以及非JavaScript的后端语言。想用Python写个数据处理服务,这条路直接封死。 这条边界解释了它的用户画像为什么这么清晰。它服务的是全栈JavaScript这一支,而这一支恰好覆盖了独立站、落地页、轻量后台这些最常见的需求。超出这个范围,它的优势立刻变成限制。 ## 它正在往企业采购那一侧挪 还有一个变化值得留意,因为它会改变这个工具未来的形状:从2026年年中起,Bolt开始把云厂商的应用市场作为采购渠道,并推进与主流办公套件的集成。团队档里那几条不太起眼的能力——私有包仓库支持、按包注入设计系统知识、集中计费与成员权限管控——都是同一个方向的信号。 对个人用户来说这没什么影响,对团队采购的人却是个提醒:当一个工具开始认真做企业采购,它的定价结构和功能优先级往往会跟着往上走。现在这个价位能拿到的东西,未必会一直留在这一档。 ## v0改版之后,到底变成了什么? v0的篇幅最短,不是因为它最弱——在自己的生态位里它可能是三者中最专业的——而是因为它的决策没有中间地带。你是Vercel和Next.js的团队,它就是最优解;不是,就别碰。 ## 每个对话是一个分支,不是一段聊天 这个产品在2026年2月变了,而且变得很关键。它在更早的两年里一直被定型为“React组件生成器”,说实话当时这个定型是公允的。改版之后 (https://vercel.com/blog/introducing-the-new-v0)它是另一个物种:沙箱运行时对齐真实部署环境、原生代码托管集成、编辑器风格的界面、数据库连接,以及最有战略意味的一条——可以导入已有代码库,不再只能从零生成。 Git语义是它最硬的差异点。每个会话自动开一条新分支,命名带哈希后缀,它从不直接写主干,产出永远是一个可以走正常流程评审的合并请求;合并之后由平台自动重建和重新部署。 这一条恰好化解了AI生成工具最恶心的问题——产出物锁在一个团队没人能审的花园里。一个跑在Vercel上的团队,设计师或产品经理打开它描述一个新的设置页,工程师收到的是一个正常的合并请求,而不是一段“你去看看这个链接”。 ## 它的定价已经不是流传的那个数了 这是本篇需要最先纠正的一处。网上大量对比文里写的还是“每月20美元的Premium档”,而官方定价页 (https://v0.app/pricing)现在的档位是: 档位 | 价格 | 含什么 | Free | 0美元 | 每月5美元额度,每天7条消息上限 | Plus | 每用户每月30美元 | 每用户每月30美元额度,每天登录再送2美元 | Business | 每用户每月100美元 | 同样额度,加默认不用于训练 | Enterprise | 定制 | 单点登录、角色权限、优先资源 | Premium这个档名已经不存在了,付费起步价从20涨到了30美元。常见问题里甚至还留着一条“Ultra档去哪了”,说明档位结构近期动过不止一次。拿旧价格做预算的团队,签单时会发现对不上。 另一个几乎没人提的变化是它公布了自有模型的分档价目:从轻量档的每百万输入词元1美元、输出5美元,一路到最高速档的输入10美元、输出50美元,中间还有缓存写入和缓存读取两档单价。这意味着v0的额度不再是黑箱,你可以自己估算一次生成大概要花多少。这在三家里是独一份的透明度。 ## 代价有两个,都真实 第一是生态引力。没有合同意义上的锁定,但一切默认假设都是Next.js加Vercel,想用它做部署到国内云或者其他云的项目,等于逆流游泳。 第二是国内的一个致命细节:生成的项目默认部署到平台自有域名,而这个域名在国内长期无法直接访问。很多人快速做了个落地页发到群里,才发现国内同事全部打不开。解法是绑自定义域名加配置解析,但这已经超出了非技术用户的舒适区。国内业务用它写组件、拿代码可以,别指望它的部署链路。 ## 一条企业用户才会注意的分界 v0的档位表里有一行容易被跳过:付费的高一档明确写着默认不用于训练,最高档进一步承诺数据永不用于训练。这条在个人用户眼里可能无关痛痒,但对代做客户项目的人、或者手上有商业敏感逻辑的团队,它是能不能用的前提。 值得注意的是三家在这件事上的表述颗粒度差别很大,而颗粒度本身就说明了它们各自主要在服务谁。把这一行写进档位表的产品,是在对企业采购流程说话;只在服务条款里含糊带过的,说明它现在还不需要过那一关。做决策时可以把它当成一个成熟度指标来读。 ## 三种计费模式,三种翻车姿势? 功能清单放一边,计费模式才是三个产品真正分道扬镳的地方。这张表不比功能,比翻车姿势: | Lovable | v0 | Bolt | 付费起步 | 25美元/月 | 30美元/用户/月 | 25美元/月 | 计费单位 | 按任务扣credit | 词元折算额度 | 词元 | 成本驱动 | 任务复杂度 | 模型档位乘生成量 | 项目体积(文件同步) | 翻车姿势 | 应用变复杂后每次修改都贵 | 跑完才知道花了多少 | 同样的修改越到后期越贵 | 额度顺延 | 月度credit可顺延,每日赠送不顺延 | 按月度周期结算 | 付费词元顺延一个月 | 团队档 | 50美元/月 | 100美元/用户/月 | 30美元/人/月 | 第二条曲线 | 托管赠额超出后扣credit | 额度外按需购买 | 网络请求配额 | 三家共用一条规律:入门定价是围绕第一周的用量设计的,而单位进度成本都随应用成熟而上涨。这不算黑幕——上下文确实贵,他们只是把前沿模型的成本传导给你——但它决定了正确的用法:为冲刺付费,不为马拉松付费。 三个工具的最佳状态都在项目生命周期的前两到四周。开工前就规划好退出点,这个价格没毛病;拖到第四个月还在里面维护生产应用,你就在用聊天机器人的人体工学,付外包公司的价钱。 ## 把这张表变成一条预算线 光看单价意义不大,把它折算成一次验证的总成本才有用。按三到四周的验证冲刺算,一个人的开销大致是这样:Lovable 25到50美元(Pro一档通常够,复杂一点可能要补买credit);v0 30到60美元(额度用完按需购买,复杂的多文件生成几个回合就能吃掉一大块);Bolt 25到50美元(前期便宜,后两周开始明显变贵)。 拿这个数去和外包对比,结论不用多算:一个MVP外包出去动辄三五万人民币起,而且交付周期以月计。所以这类工具真正的价值不在省钱,在把验证的最小成本从万元级压到百元级,从而让你敢多试几个想法。用这个视角看,纠结三家谁便宜十美元完全是找错了变量。 但同一个算法反过来也成立:一旦项目进入维护期,每月固定的几十美元加上不断上翘的单位成本,一年下来就是四位数人民币,换来的还是一套你不能完全掌控的架构。验证期它便宜得不讲道理,维护期它贵得同样不讲道理——这两句话不矛盾,它们说的是曲线的两端。 ## 代码归你所有,为什么不等于架构自由? 三家都支持代码托管同步,营销页都写着“代码归你所有”。技术上没错,实践上误导,这是最值得拆掉的一个误区。 拿到仓库只是容易的那两成,你拿不到的是架构独立性。Lovable生成的不是“恰好用了某个后端服务的React应用”——它的登录流程、行级安全策略、存储规则、边缘函数全部编织在那个后端的特定模型里,换后端远不止导出几张表,是重新架构。v0的产出默认遵循Next.js约定,最顺滑的归宿是它自家平台。Bolt最可迁移,标准框架的普通代码,这也是它成为开发者之选的又一个理由——但即便是它,项目也继承了AI在第一分钟替你选的那些服务绑定。 一个能长期用的原则:评估这类工具,看离开的成本,别看加入的成本。加入花25美元,带着一个成功的产品离开要花一次真正的工程改造。这个不对称才是真实价签——说句公道话,这也正是那个百亿级估值背后的完整商业模式:离开成本就是护城河。 ## 真要走的时候,具体卡在哪几步 把“迁移很难”说得具体一点,会更有用。按实际难度排,离开时要处理的东西大致是四层。 第一层是代码,最容易。三家都能同步到代码托管平台,克隆下来就是标准项目结构。这一步一两个小时能搞定,也是唯一一层符合“代码归你所有”这句宣传的。 第二层是数据,中等难度。导出数据表本身不难,麻烦的是表结构往往是AI在第一分钟替你定的,字段命名、关联关系、索引都未必符合你后面的需求。迁移的同时通常要顺手重构一遍模型,这才是真正花时间的地方。 第三层是鉴权与权限,很难。登录流程、会话管理、行级安全策略这些不是代码,是配置在后端服务里的规则集。换一个后端就得整套重写,而且这部分一旦写错就是安全事故,不能靠“先跑起来再说”。 第四层是那些你根本不知道存在的绑定。文件存储走了哪个服务、邮件从哪发、支付回调指向哪、定时任务挂在哪——这些都是AI在你没参与的情况下替你选的。找齐它们的唯一办法是逐个功能走一遍,看哪里会报错。 结论很直接:迁移的工作量跟你在生成器里待的时间成正比,跟你对它的了解成反比。所以最省钱的做法不是等到不得不走的时候再动,而是从第一天就保持一份“它替我选了什么”的清单,边做边记。这份清单十分钟能开始写,将来能省掉几周。 ## AI写出来的代码到底有多不安全? 这一节很多对比文会含糊带过,但对要上线收钱的人来说,它比功能差异重要得多。 常被引用的那个数字是“约45%的AI生成代码存在漏洞”。这个数没错,但它来自2025年的报告;2026年3月发布的春季版 (https://www.veracode.com/blog/spring-2026-genai-code-security/)更新了口径,也给出了远比一个百分比有用的分布。 ## 先看总量:两年过去,安全性纹丝不动 累计测过150多个大模型,整体安全通过率约55%,也就是说仍有约45%的样本带着漏洞。同期的语法正确率超过95%。报告里那句话说得很重:能跑的代码和能安全跑的代码之间的差距不只是在持续,而是在拉大。 ## 再看分布:模型学会了防最出名的那一类 真正有价值的是按漏洞类别拆开之后的样子: 漏洞类别 | 安全通过率 | SQL注入 | 82% | 不安全的加密算法 | 86% | 跨站脚本 | 15% | 日志注入 | 13% | 这张表的信息量比那个45%大得多。模型已经基本学会防SQL注入了,却几乎完全不防跨站脚本和日志注入。一个合理的解释是:SQL注入是过去二十年被写进每一本教材、每一篇博客的经典问题,训练语料里的正确示范铺天盖地;后两类的知名度低得多,语料里的坏示范反而更多。 为什么这对独立站主格外要命?因为跨站脚本的高发地恰好是电商站最离不开的那几块——用户评论、问答区、商品描述里嵌的富文本、第三方评价插件回填的内容。这些地方每一处都在把不受控的输入渲染进页面,而这正是模型最不擅长设防的那一类。 分语言看还有一处值得知道:Java的通过率只有29%,Python 62%、C# 58%、JavaScript 57%。 ## 你正好落在中间那一档,这意味着什么 这三个生成器的产出基本都在JavaScript和TypeScript生态里,也就是57%那一档——不是最差的,但离能免检上线还差得远。四成多的样本带漏洞,换算过来就是你每做十个功能,大概有四个里藏着至少一处该修的东西。 Java那个29%反而值得多想一层。它未必是因为语言本身更不安全,更可能是因为Java的典型场景是企业级后端,代码里的鉴权、序列化、模板渲染更密集,能出错的地方本来就多。这提示了一个更通用的规律:通过率跟你让它写什么强相关,跟它用什么语言写反而是次要的。 套到实际使用上,结论是:让它生成展示型页面、静态内容、简单表单,风险相对可控;一旦你说的是“加个登录”“接个支付”“做个后台管理”,那就是踏进了通过率最低的那片区域。需求描述里出现权限、支付、上传、用户输入这四个词里的任何一个,都该自动触发一次人工复核。 还有一个反直觉的观察:这几年模型的语法正确率一路冲到95%以上,而安全通过率两年纹丝不动。这个剪刀差本身就是风险来源——代码看起来越专业,人越容易略过审查。过去初级开发者写的东西,缩进都不整齐,你自然会警惕;现在生成的代码格式漂亮、命名规范、注释齐全,反而更容易被一路点到底直接合并。 ## 那该怎么办 结论不是“别用”,是把安全审查当成流程里的固定一环,而不是出事之后的补救。三件成本很低的事:涉及支付、用户数据、文件上传的代码,上线前必须人工过一遍;把富文本渲染的地方单独列出来逐个确认转义;用现成的静态扫描工具接进代码托管,让它在合并前跑。 更根本的一点是心态:这类工具的目标用户,恰恰是最没有能力发现这些问题的那批人。能力和风险的错配才是这个品类真正的结构性问题,而它不会因为模型再强一点就自动消失。 ## 独立站上线前值得逐条走一遍的六项 把上面那张漏洞分布表翻译成检查动作,对做电商和内容站的人大致是这六条: - 所有渲染用户输入的位置逐个确认转义,尤其是评论、问答、商品描述里的富文本,这是通过率只有15%的那一类。 - 日志里不要直接拼接用户输入,这是通过率13%的那一类,而且它的危害不在页面上,在你事后排查时被喂进假记录。 - 文件上传要限类型、限大小、限存储路径,生成器默认给的规则通常是最宽松的那种。 - 支付回调必须验签,别信任何“回调里带了订单号就当成功”的实现。 - 把接口密钥、数据库连接串从代码里挪到环境变量,检查有没有被顺手提交进仓库。 - 接一个静态扫描工具进代码托管,让它在合并前自动跑,这一步几乎零成本却能兜住大半。 前两条之所以排在最前面,是因为它们同时满足两个条件:模型最不擅长防,而电商站又最躲不开。剩下四条属于通用工程卫生,但生成器的用户群恰恰是最不熟悉这些的一批人,所以更值得白纸黑字列出来。 ## 什么时候三个都不该用? 大多数对比文章不写这一节,因为写了就没法挂返佣链接。但对一大类读者,正确答案确实是“都不用”。 边界线可以这样画:应用生成器打包卖三样东西——AI编码模型、托管环境、以及把代码藏起来的聊天抽象层。模型已经不是差异点,所以你真正花钱买的是环境和抽象层。如果这两样你本来就有,那这个打包对你就是纯粹的开销。 具体来说,满足以下任何一条就跳过这三个生成器: - 你已经每天在用编码智能体。终端原生的智能体配一个数据库服务的连接器,能复刻Lovable九成的后端接线,而且是在你自己的机器、自己的仓库、自己的评审流程里。 - 项目是存量改造,不是从零开始。三家里只有v0勉强支持导入已有代码库,而智能体生来就是干这个的。 - 这个应用是你的长期核心产品。架构决策、测试、持续集成、可观测性——聊天抽象层全都做不好。 - 有合规、备案或数据本地化要求。托管生成器的便利,恰恰是监管要求你必须自己掌握的那部分控制权。 反过来也要诚实:如果动手的人是设计师、产品经理、或者永远不会打开终端的创始人,终端智能体再强也与他无关。对这些人,抽象层不是开销,它就是产品本身。工具判断本质上是用户判断。三种编程范式在架构上的根本差异,终端代理、编辑器内嵌与多代理指挥中心的对比 (https://zhangwenbao.com/claude-code-vs-cursor-vs-windsurf.html)那篇拆得更细,那是这条边界线的另一侧。 ## 国产替代:用户在国内就看这里 面向国内用户的产品,三个海外工具的短板会叠加放大:付费门槛、访问延迟、默认域名不可达、备案无从谈起。这时候国产方案值得认真看——有的支持自然语言直接生成小程序,这个国内高频需求三个海外工具完全覆盖不了;有的对标“想法到上线”的全链路,背靠国内云生态,备案链路顺;还有一类严格说是智能体搭建平台而非应用生成器,但很多“我要个AI应用”的需求本质上是智能体需求,在那类平台上成本更低。 判断标准很简单:用户在哪,工具就在哪。海外用户用海外工具加自定义域名;国内用户要么用国产平台,要么把海外工具只当代码草稿机——生成完导出,部署自己来。 挑国产方案时值得多问四个问题,它们比生成质量更能决定这个东西能不能真正上线:备案链路顺不顺(能不能在同一家云上一站办完)、支付能不能接进来(主流支付渠道的商户资质与回调)、小程序这条路给不给走(很多国内需求的入口根本不是网页)、数据落在哪(涉及个人信息就要面对本地化存储的合规要求)。这四条里任何一条卡住,生成得再漂亮也上不了线。 ## 还有一条被忽略的中间路线 非此即彼之外其实有第三条路,而且成本很低:把生成器当设计稿工具,把落地交给终端智能体。 具体做法是用免费档或最低档快速生成几版界面和交互,把它当成会动的原型给团队和客户看、拿反馈、定方案;真正要写进自己代码库的时候,把界面截图和生成的组件代码作为参考素材,让终端智能体在你自己的技术栈里重新实现一遍。 这条路的好处是把两边的长处都占了:生成器最擅长的其实是把模糊想法变成可视化的东西,而这一步恰恰是终端智能体最弱的环节——它能写对代码,但很难在你说不清要什么的时候替你拿主意。反过来,工程规范、测试、部署这些又是智能体的主场。 代价是多一道翻译工序,所以它只在两种情况下划算:你的技术栈本来就不是它默认的那套,或者这个项目从一开始就确定要长期维护。如果两条都不占,直接用生成器一路做到验证结束更省事。 ## 从原型到生产:那条必须提前排期的交接管线 所以真正该推荐的不是“选一个工具”,而是“设计一条带交接点的管线”: - 验证阶段(第1到3周)。用生成器把想法变成能给真实用户点的东西,拿真反馈。这一段就该快,不必纠结代码好坏。 - 交接阶段(第3到4周)。导出或同步到代码托管,做一次安全与架构评审,人工或用智能体都行。上一节那张漏洞分布表就是这一步的检查清单。 - 建设阶段(第2个月起)。换终端智能体补测试、接持续集成、做重构,把基础设施迁到自己可控的地方。 整条管线杠杆最大的一步,是按时执行第二阶段的交接——赶在成本曲线上翘之前、赶在没人记录的架构决策固化之前。把生成器当一次性草稿用的团队,长期看总是赢过想把它用成永久平台的团队。 顺带说一句,如果你的目标就是一个内容站或者独立站而不是应用,这条管线里的第一阶段其实有更省事的替代路线,用AI终端一句话生成完整站点 (https://zhangwenbao.com/wordpress-studio-code-ai-terminal-natural-language-site-builder.html)那篇讲的就是成熟建站生态里的同类做法,底层跑的是同一批模型,但产出物天然就在你自己的技术栈里。 ## 一个反直觉的观察 盯着这个赛道十八个月,最反直觉的结论是:它们不是在取代开发者,而是在制造有史以来通往软件工程的最宽漏斗。数以百万计被验证过的原型,最终全都需要工程师提供那些聊天抽象层给不了的东西——测试、架构、可观测性、合规。 保哥自己给客户的建议向来是同一句:按物种选工具,按用户选物种。别问哪个最好,先问你是谁、你的用户在哪、以及这个东西你打算养多久。想动手做点自己的小工具再决定,用对话式编程做一个SEO小工具 (https://zhangwenbao.com/vibe-coding-seo-tool-tutorial.html)那篇的八步流程可以当作一次低成本的实地体验。 ## 常见问题解答 问:完全不会写代码,三个里该选哪个? 选Lovable。它是唯一把数据库、登录鉴权、文件存储和一键部署打包成一条龙的,工作单位是产品决策而不是代码。前提是接受一个结局:验证成功之后要把仓库交接给工程师,而不是永远住在里面。 问:v0现在到底多少钱? 付费起步档是每用户每月30美元,含同额度的月度用量,另有每天登录赠送的部分;再上一档是每用户每月100美元。流传甚广的每月20美元Premium档已经不存在了,用旧数字做预算会对不上。 问:Bolt的账单为什么越到后期越贵? 因为它的词元消耗跟项目体积挂钩,而不是跟你这次要改什么挂钩。大部分开销花在把项目文件同步进模型上下文,所以同样一处小改动,第六周比第一周贵得多。项目超出原型规模就该导出走人。 问:代码能导出,是不是就没有锁定风险? 不是。导出的只是文件,你拿不到的是架构独立性——鉴权流程、行级安全策略、存储规则、边缘函数往往深度编织在特定后端服务的模型里,换后端等于重新架构。评估这类工具要看离开的成本,不是加入的成本。 问:AI生成的代码能直接上线收钱吗? 不能免检上线。最新一版行业报告显示整体安全通过率约55%,而且分布极不均匀:SQL注入的通过率有82%,跨站脚本只有15%、日志注入只有13%。电商站的评论、问答、富文本描述恰好是跨站脚本高发区,上线前必须人工过一遍。 问:做面向国内用户的产品,这三个能用吗? 能用但别用它们的默认部署链路。付费要国际信用卡,托管节点在海外,备案无从谈起,其中一家的默认部署域名国内还长期不可达。可行的做法是只把它当代码草稿机,生成完导出到国内云自己部署,或者直接选国产平台。 问:什么时候该跳过生成器直接上编码智能体? 满足四条里的任何一条就该跳过:你已经每天在用编码智能体、项目是存量改造、这个应用是长期核心产品、有合规或数据本地化要求。生成器卖的是环境和抽象层,这两样你本来就有的话,它对你就是纯开销。 问:这三个工具的最佳使用周期是多久? 项目生命周期的前两到四周。三家的入门定价都是围绕第一周的用量设计的,而单位进度成本随应用成熟而上涨。开工前就把交接点定下来,比事后被账单教育要便宜得多。 ## 权威参考资料 ## 上下文工程真正的杠杆是删不是加,5000 token打赢了10万 - URL:https://zhangwenbao.com/context-engineering-subtraction-practice.html - 分类:AI编程与工具链 - 发布:2026-06-22 | 更新:2026-07-30 - 摘要:调教编码Agent的最大杠杆是删token而非加token。Sourcegraph实测precision@5从0.140升到0.478,5000 token精准检索打败10万token摘要。附诊断表、卸载阈值与预算分配法。 - 关键词:Claude Code,AI编程,Token优化,上下文工程,上下文窗口 > **TLDR**:摘要:调教编码Agent最大的杠杆是删token,不是加token。Sourcegraph在370个真实企业代码库任务上测出来:拿5000 token精准检索的Agent,比拿10万token代码库摘要的表现更好;precision@5从0.140升到0.478。但这个实验有个被广泛忽略的细节——赢的那一侧不是本地grep,是把源码整个搬走、只留13个检索工具的MCP方案。下面把腐烂机制、四种失效模式的辨认方法、先卸载后摘要的阈值打法,以及三个看着像进步的伪技巧,一次讲透。 > 摘要:调教编码Agent最大的杠杆是删token,不是加token。Sourcegraph在370个真实企业代码库任务上测出来:拿5000 token精准检索的Agent,比拿10万token代码库摘要的表现更好;precision@5从0.140升到0.478。但这个实验有个被广泛忽略的细节——赢的那一侧不是本地grep,是把源码整个搬走、只留13个检索工具的MCP方案。下面把腐烂机制、四种失效模式的辨认方法、先卸载后摘要的阈值打法,以及三个看着像进步的伪技巧,一次讲透。 大多数人调Agent的功夫,都花在了加法上:把指令文件越写越长,把可能用得上的文件统统塞进窗口,给整个仓库挂上向量索引。背后是同一个直觉——喂得越饱,Agent越强。 2026年最硬的几组证据说的恰恰相反。而且不是模棱两可的相反,是同一个任务、同一个模型、上下文多了20倍,结果反而更差。 这篇不打算再讲一遍上下文工程的定义。它只论证一件事:上下文窗口是一份要花的预算,不是一个要装满的桶——而预算里杠杆最大的那个动作,几乎总是减法。顺带把几组被反复转述、但转述过程中已经变形的实验数据,还原成它们本来的样子。 ## 为什么“喂得越饱越强”是反的? 先看那个最常被引用的结论。Sourcegraph的上下文工程指南 (https://sourcegraph.com/blog/context-engineering)里有一句原话:在同一个编码任务上,拿着10万token代码库摘要的Agent,表现比拿着5000 token精准检索的更差。 体积让了20倍的先手,还是输了。机制不复杂:10万token的摘要没有给模型更多可用信息,只给了更多可分心的东西;5000 token精准检索赢,是因为里面每一个token都在承重。 但真正决定要不要相信这个结论的,是它背后那组可复现的数字。Sourcegraph把实验做成了一个叫CodeScaleBench的基准,370个软件工程任务,全部取自真实的企业级代码库。同一个编码Agent跑两种配置,结果是这样的: 指标 | 基线(本地源码+grep/file/read) | 结构化代码检索 | 文件召回率 | 0.127 | 0.278 | precision@5 | 0.140 | 0.478 | F1@5 | 0.099 | 0.262 | 精度翻了三倍多,改的只是取什么,不是取多少。下游效果更夸张:一个Kubernetes单体仓库的任务,基线撞上了两小时超时,换成结构化检索之后89秒完成、得分0.90;一次跨文件重构,基线用了96次工具调用、84分钟,换过来是5次调用、4.4分钟。 把96对5这组数字再读一遍。这是减法论证里最深的一层:精度不只是改善答案,它直接压缩轮数;轮数少了,对话里堆积的垃圾就少,窗口给后面的轮次留得就干净。精度是会复利的。 膨胀也复利,只是方向相反。今天放进来的每个垃圾token,都会喂出一个更糊涂的轮次,明天生产更多垃圾。 ## “及时检索”具体是个什么动作 结论好记,落地容易走样。所谓及时检索,不是换一个更聪明的搜索算法,而是把“决定读哪个文件”这个动作,从你手上交回给Agent。 预加载的心智模型是:我先判断哪些文件相关,打包递给它。及时检索的心智模型是:我只给它一份目录和一个读取工具,它自己判断该拆哪个包。 差别在哪儿?在于你的判断是提问之前做的,它的判断是看过前几步结果之后做的。一行文件引用加一个读取工具,在Agent真正判定这个文件相关之前,几乎零成本;而你预判错的每一个文件,都是全价买单还倒扣注意力。 有一个很实用的自查:如果你正在写“把下面这些文件的内容也一并附上”,先停三秒——你是真的知道它需要,还是只是不确定它不需要?后者就是分心的来源。不确定的东西应该做成它取得到的,而不是它必须看的。 另一件常被搞反的事:及时检索并不意味着次数越少越好。基线那96次工具调用之所以糟糕,不是因为次数多,而是因为每次都取回一堆无关的东西,于是不得不再取一次。轮数是精度的结果,不是可以直接优化的目标——盯着轮数硬压,只会逼出一个一次性抓一大把的策略,正好回到加法那条路上。 ## 那组实验,究竟是谁赢了谁? 这一节是我在别处没见人写过的,也是这组数据被转述时最常丢掉的部分。 大多数二手引用把它概括成“结构化代码检索打败了grep”。这个说法不算错,但它把最有意思的那半掐掉了。翻CodeScaleBench的实验设置 (https://sourcegraph.com/blog/codescalebench-testing-coding-agents-on-large-codebases-and-multi-repo-software-engineering-tasks)会发现,赢的那一侧的完整配置是:Agent不在本地持有源码,改成调用13个检索工具,而这13个工具是通过MCP暴露的。 换句话说,2026年关于“上下文该做减法”的最硬一组实证,是靠MCP拿到的。 这个细节之所以重要,是因为同一年的舆论主线恰好是“MCP是不是该被CLI加Skill取代”。我在MCP、Skills、Hooks三大扩展机制怎么选 (https://zhangwenbao.com/mcp-vs-skills-claude-code.html)那篇里拆过这场争论的来龙去脉。而这里出现了一个反直觉的交叉:被诟病“常驻吃上下文”的协议,在这个实验里恰恰是省上下文的那一方。 怎么理解这个矛盾?关键在于账算到哪一层。MCP的成本是工具定义常驻窗口;MCP的收益是把整个代码库挪出窗口。当代码库有几百万行、而13个工具定义只有几千token的时候,这笔交易的方向非常清楚。当你挂的是十几台各自带着几十个工具的服务、而要处理的只是一个单文件改动时,方向就反过来了。 所以真正的原语不是“MCP好”或者“MCP差”,而是:判断一个机制该不该用,得看它换掉了什么,而不是它本身占多少。只算成本不算它替你搬走了什么,就会得出一堆看着严谨、方向却是错的结论。 ## 怎么判断一笔上下文交易划不划算 把这条原语做成可算的式子并不难。任何一个占用常驻上下文的机制,划算与否取决于两个量的比: - 它的常驻成本:工具定义、指令片段每一轮都要付的那部分。 - 它替你挪出窗口的量×这些内容原本被读到的频率。 13个工具定义大概几千token,换掉的是一个动辄百万行的代码库——这笔交易几乎不用算。而挂十几台服务、每台带几十个工具,常驻成本可能上万token,换回来的却只是“万一要用”的可能性,这就是纯亏。 注意第二项里那个频率因子,它是最容易被忽略的。一个替你搬走了大量内容、但那些内容一次都用不到的机制,收益是零而不是很大——你只是把从来不会被读的东西,从窗口里换成了从来不会被调的工具。这种“看起来做了优化,其实两边都是死重”的情况,在堆了一堆集成的项目里非常常见。 实操上的粗判据:一台服务如果在最近十次任务里被调用不到两次,就该从常驻改成按需加载。这个数字没什么理论依据,但它足以砍掉大部分明显不划算的常驻项,而且执行成本只是翻一下调用日志。 ## 上下文腐烂到底是怎么坏的? “上下文腐烂”这个词现在满天飞,但绝大多数复述都把它讲成了一条平滑的曲线:输入越长,效果越差,像电池慢慢没电。 Chroma那份原始研究 (https://www.trychroma.com/research/context-rot)说的不是这个。他们在18个前沿模型上做了受控实验,最重要的发现有两条,而且两条都比“越长越差”更有用。 ## 第一条:退化是非均匀的,是撞悬崖不是滑坡 模型不会随输入变长而线性变差。它们是撞墙——有的模型在32K还好好的,到64K突然塌方;有的一路撑住,然后毫无预兆地垮掉。 这条对工程实践的意义很直接:你在8K上下文里跑通的验证,对64K完全没有预测力。那种“先小规模验证,成了再放大”的常规做法,在长上下文这件事上是失效的。要验就得在你真实的上下文长度上验。 ## 第二条:伤害的大小取决于问题和目标的语义距离 当要找的信息和提问之间语义相似度高时,长上下文的伤害小;相似度一低,退化速度立刻加快。 这条解释了一个很常见的困惑:为什么同样是塞满窗口,有时候Agent表现正常,有时候直接失智。区别不在你塞了多少,而在你要它找的东西和它手上的提问长不长得像。 落到做法上:如果任务本身就是“从一堆不相关的东西里找出那个隐含相关的”,比如排查一个症状和成因完全不像的线上问题,那这类任务对上下文洁净度的要求要比普通任务高一个量级。别在这种任务上省事。 研究里还测了干扰项的影响——语义上相似但实际无关的内容,会明显把模型带偏。这也是为什么“多塞点保险”这个直觉完全反了:你买的不是保险,是打了折的注意力。 ## 长上下文失效有几种,各自怎么认? 知道会坏还不够,得能在现场认出是哪种坏法。Drew Breunig那篇长上下文失效模式 (https://www.dbreunig.com/2025/06/22/how-contexts-fail-and-how-to-fix-them.html)给了一套至今没被超越的分类,四种,各有各的相貌: 失效模式 | 机制 | 现场症状 | 该拉哪根杠杆 | 污染 | 一个幻觉或错误进入了上下文,之后被反复引用 | Agent坚持一个不存在的函数名/接口,你纠正一次它下一轮又用回去 | 开新会话,或把那段消息从历史里摘掉重来 | 分心 | 上下文长到模型过度关注历史,反而忽略了训练里学到的东西 | 前十轮很聪明,第三十轮开始机械重复前面的模式,不再想新办法 | 压缩历史,保留意图和产物,丢掉过程 | 混淆 | 上下文里多余的信息被模型拿去生成了低质量回答 | 输出里混进了另一个模块的约定、另一个环境的配置 | 收紧检索范围,把不相关的文件逐出 | 冲突 | 新累积进来的信息或工具,和上下文里已有的内容互相矛盾 | Agent在两种做法之间反复横跳,或者在相似工具间犹豫不决 | 砍工具集,消除重复;统一指令文件里打架的规则 | 这张表最大的用处是逼你先诊断再动手。四种失效对应四根完全不同的杠杆,用错了不但不解决问题,还会把成本推上去。 最容易搞混的是分心和混淆。判据是这样的:分心的Agent在重复自己,混淆的Agent在引用别人。前者要压缩,后者要收紧检索——反过来做,两边都会更糟。 ## 现场排查该按什么顺序走 四种失效在真实会话里经常同时出现,所以顺序比清单重要。我实际用的排查路径是这样的: - 先问是不是污染。成本最低、危害最大。判据是“我纠正过的东西有没有卷土重来”。只要出现一次回滚,后面所有诊断都不用做了——先把那段历史清掉,因为污染会伪装成另外三种。 - 再问是不是冲突。看Agent在不在两个方案之间反复横跳,或者在功能相近的工具间犹豫。这一步查的是你的配置,不是它的状态,所以可以离线做。 - 然后区分分心和混淆。用上面那条“重复自己还是引用别人”的判据。 - 最后才考虑加东西。如果前三步都排除了,问题很可能真的是信息不够——但按我的经验,走到第四步的概率不到三成。 把顺序反过来做,是这个领域最常见的时间浪费:一上来就补资料,结果补进去的东西被已有的污染带偏,症状加重,然后你以为是补得还不够多。加法在诊断阶段是有害的,因为它同时改变了症状和病因,让你没法归因。 ## 该删的时候,怎么删才不丢信息? Agent跑得够长,再聪明的检索也挡不住对话被填满。减法从选修变成必修,问题只剩一个:怎么删而不毁掉信息。 2026年的生产框架已经收敛出一套带明确阈值的打法,LangChain在Deep Agents文档里给的方案 (https://docs.langchain.com/oss/python/deepagents/context-engineering)是目前最干净的样本。三条规则,顺序不能乱: - 任何单条超过2万token的工具返回,卸载到文件系统,在上下文里替换成一个文件路径加前10行预览。 - 会话越过模型窗口的85%,就把较早的工具调用截断成指向磁盘内容的指针。 - 只有当卸载已经不够用时才摘要——生成一份包含会话意图、产物、下一步的结构化摘要,同时把原始消息写到磁盘作为权威记录。 这个顺序本身就是课程。卸载是无损减法——内容还在,只是改用路径引用;摘要是有损的,而且失败方式很阴:摘要悄悄丢掉了那条唯一重要的约束,三轮之后Agent跑偏了,没人知道为什么。 ## 还有另一半卸载,几乎没人提 关于卸载,绝大多数转述只讲了工具返回那一半。文档里还有对称的另一半:工具调用的入参也要卸载。 典型场景是写文件和编辑文件。你让Agent写一个800行的文件,这次工具调用的入参里就带着这800行的完整内容,然后它会一直躺在对话历史里。而这份内容已经落到磁盘上了——历史里那一份是纯冗余,一个字的信息量都没多出来,却要在接下来每一轮都被重新读一遍。 这一半为什么容易被漏掉?因为它反直觉:大家的心智模型里,“上下文膨胀”是Agent读进来的东西造成的,很少有人意识到Agent写出去的东西同样会在历史里留下等重的副本。跑重构、跑批量改文件的任务,这一项经常是最大的单一开销。 ## 压缩到什么程度算过头 给一个可操作的判据:如果要压缩,就得让“大海捞针式恢复”可测试。当Agent后来发现需要那条被摘要掉的细节时,它还取得回来吗?取不回来,就是压狠了。 实操上可以这么验:压缩之后,故意问Agent一个只有被压掉那段才答得出的问题。答得出,说明摘要保住了要害;答不出,把摘要模板里的字段补一条。这个动作花不了五分钟,但它是压缩策略里唯一有反馈信号的环节。 摘要模板本身也值得固定下来。让模型自由发挥写摘要,它会写成一篇读后感;给它字段,它才会写成一份交接单。我用下来最稳的四个字段是: - 意图:这次会话到底要达成什么,用一句话。跑偏最先丢的就是这条。 - 已产出:改了哪些文件、建了哪些东西,只列路径不贴内容。 - 硬约束:过程中确认过的、不能违反的规则。这是最容易被摘掉又最致命的一类。 - 下一步:当前卡在哪儿、下一个动作是什么。 缺了“硬约束”那一条,就是前面说的阴险失败:Agent接着干,语气还很自信,只是它已经不知道那个字段不能为空了。 ## 常驻开销才是账单上最贵的那一栏 前面讲的都是工作集——它会变、会被逐出。但有两个科目每一轮都坐在窗口里,这让它们成为收益最高的下刀处。 ## 工具定义 你暴露的每一个工具定义,每一轮都占着上下文;每一对功能近似的工具,都逼模型烧一轮去纠结选哪个。这不是零头——带着相互冲突假设的臃肿工具集,是有据可查的浪费轮数、把Agent搞糊涂的根源,也正是前面那张表里“冲突”那一行的主要来源。 规则很简单:只暴露覆盖当前任务的、最小的一组无歧义工具,并按需动态加载工具组,而不是一次性挂上你拥有的每一台服务。Agent在写后端代码时,作用域里的设计稿工具纯粹是税。 ## 指令文件 CLAUDE.md和AGENTS.md会被拼接进每一轮,是大多数团队预算里被纵容得最厉害的科目。400行的指令文件把整个架构重讲一遍,每一行都在每一轮被永久征税,不管当前任务碰不碰那个子系统。 精简原则只有一句:永远加载的文件里,只放稳定的、全项目通用的规则——约定、硬约束、那几条“到处都别这么干”。所有任务相关的东西,推到Agent按需加载的文件里去。 一个短短的根文件写着“鉴权逻辑在src/auth/,动它之前先读src/auth/README.md”,胜过200行重述那个二十次任务里只碰一次的鉴权流程。更细的分层组织方式,我在CLAUDE.md记忆术的四级作用域拆解 (https://zhangwenbao.com/claudemd-memory-guide.html)里写过一整套,同一套逻辑也支撑着持久记忆系统——常驻层保持极小,可检索层承载大头。 顺带说一句子代理。Skill和子代理的核心区别 (https://zhangwenbao.com/claude-skill-vs-subagent.html)正是上下文归属:Skill共享主窗口,子代理拿的是独立窗口。所以把一个会产生大量中间输出的探索型任务丢给子代理,本身就是一次卸载——脏活在别的窗口里干完,回来的只有结论。这是减法思路的一个结构性用法,比任何压缩技巧都干净。 ## 上下文预算该怎么分配? 减法是战略,预算是记账。把窗口当成一份有明细科目的账,你的工作就是分配——每一个花在过期堆栈上的token,都是从Agent真正要改的那个文件那里挪走的。 科目一共三类: - 固定开销:系统提示词、指令文件、工具定义。纯负担,压到最低。 - 工作集:及时检索到的代码、最近N轮对话、已卸载内容的路径指针。保持精准,过期即逐出。 - 预留余量:给下一个工具结果和推理留出的空间。 把它落成一张真实的账更有说服力。假设一个20万token的窗口,一个中等复杂度的重构任务,我会这么分: 科目 | 预算 | 里面装什么 | 失控的信号 | 固定开销 | 不超过1万 | 系统提示词、精简后的指令文件、当前任务需要的那几个工具定义 | 还没开始干活,窗口已经用掉8%以上 | 工作集 | 12万到14万 | 及时检索到的定义和调用点、最近若干轮对话、已卸载内容的路径指针 | 里面出现了三轮之前就不再提及的文件 | 预留余量 | 不低于3万 | 留给下一个工具返回和这一轮的推理 | 压缩总是在工具返回的瞬间被触发 | 右边那一栏比左边的数字更有用。预算是不是合理,不看你分了多少,看它以什么方式被突破。固定开销超标说明你在指令文件和工具集上偷懒;工作集里躺着老文件说明逐出策略没生效;压缩总在工具返回那一刻被触发,说明余量留少了。 余量为什么值得单列一栏?因为一个把窗口跑到99%满的Agent没有余地思考——下一个大的工具返回,会逼它在最糟糕的时刻仓皇压缩,而仓皇压缩恰恰是最容易丢掉关键约束的时候。 预留余量这件事没法靠感觉,得能看见。给Claude Code装一个实时状态栏 (https://zhangwenbao.com/claude-hud-guide.html)是成本最低的办法,上下文占比和token消耗直接摆在眼前;把黄色预警线提前到七成,而不是等它变红。看不见的预算是管不住的,这一条在任何领域都成立。 Anthropic在官方那篇为AI智能体做有效上下文工程 (https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents)里给的框架是同一套骨架,并且明确提出了结构化笔记模式:Agent把草稿写到上下文窗口之外的文件里,需要时再读回来,长期记忆在真正用到之前不占预算。这和前面那条“先卸载再摘要”是同一个原理的不同表达。 ## 三种模型的窗口,账要分开算 上面那张表按20万窗口算。但2026年常用的几档窗口差得很远,同一套比例直接套过去会出问题。 窗口越大,固定开销的占比越不值得优化,工作集的纪律反而越重要。1万token的指令文件在20万窗口里是5%,在100万窗口里是0.5%——后者你完全没必要为它花时间。但工作集不是这样:窗口翻五倍,Chroma测出的那道悬崖并不会跟着往后挪五倍,因为退化跟的是绝对长度和干扰项密度,不是你用掉了窗口的百分之几。 所以有一条很反直觉的推论:换了更大窗口的模型之后,该收紧的是工作集,而不是放松。大窗口给你的是“不会硬性截断”的安全感,不是“可以多塞”的许可证。100万token的窗口是容量上限,不是使用目标——把它当目标的人,通常在第三十轮就会发现Agent开始胡说八道,然后归咎于模型不行。 还有一个容易被忽略的成本项:缓存。很多服务对命中缓存的输入按一折左右收费,而缓存命中的前提是前缀稳定。这意味着把变动频繁的内容放在上下文前部,会让后面所有稳定内容的缓存全部失效。顺序不只影响注意力,还直接影响账单——固定的放前面,易变的放后面,这个排序习惯几乎零成本,收益却是每一轮都在的。 ## 哪些“最佳实践”其实在帮倒忙? 2026年一些说得最自信的建议,其实在悄悄拖后腿。它们有个共同点:全是加法,而且全都让人觉得很有生产力。 伪技巧一:为了保险把窗口塞满。这是白交上下文腐烂税——用每个主流模型家族上都测到过的注意力退化,换一份不存在的保险。而且按Chroma的发现,你还不知道自己离那道悬崖还有多远。 伪技巧二:把整个仓库嵌入向量库,然后称之为上下文工程。散文可以,代码不行。代码有结构——定义、引用、调用图,理解这种结构的检索会碾压把源文件当token袋子的检索,precision@5那组三倍多的差距就是证据。而且你还额外背上了一套要和不断变化的代码库保持同步的基础设施。 伪技巧三:不看状态、按固定节奏压缩。“每N轮压一次保持整洁”会扔掉Agent可能还需要的细节,还在窗口只用了30%的时候白白引入目标漂移风险。预算逼你压的时候再压,不要定时压。 顺便处理一个流传很广的数字:不少文章会引用“企业Agent失败中有65%源于上下文漂移”。这个数字我没能找到可核实的一手出处,多数引用都指向另一篇同样没给出处的二手文章。方向可能是对的,但把它当成论据写进技术方案,属于给自己埋雷。凡是找不到署名负责的一手来源的百分比,最好只当氛围不当依据。 ## 这套东西用在独立站运营上,具体怎么落? 上面全是编码Agent的语境。但真正让保哥觉得这套方法值钱的,是它在内容和SEO这类活儿上同样成立,而且成立得更明显——因为这类任务的上下文天然更脏。 ## 场景一:跑站点审计 让Agent审一个几百页的站,最常见的错误做法是把全站爬取结果一次性喂给它。这是典型的“10万token摘要”——信息全在,但每一条的权重都被稀释了,模型会挑最显眼的几条讲,剩下的当没看见。 正确的形状是及时检索:先给它页面清单和一个查询工具,让它按判断去取。判据是——如果你发现自己在准备一份“它可能用得上”的资料包,那你多半正在制造分心。 ## 场景二:批量改内容 这是前面说的“入参卸载”最容易咬人的地方。一次性让Agent改30篇文章,每篇的原文和改写稿都会以工具入参的形式沉在历史里,跑到第十几篇的时候窗口就开始告急,而输出质量的下滑往往先于任何显式报错。 做法是把批量任务拆成独立会话,或者交给子代理,每篇改完只回传一个结果摘要。不要让第30篇的判断建立在前29篇的全文之上——那29篇对它没有任何帮助,只有干扰。 ## 场景三:把项目约定沉淀成指令文件 做自养工具的人特别容易把指令文件写成项目说明书。我在用Vibe Coding重塑SEO工作流 (https://zhangwenbao.com/vibe-coding-seo-competitive-advantage.html)那篇里提过一个反复出现的现象:工具越用越顺手,指令文件也越写越长,然后某一天Agent开始忽略你写在第300行的那条规则。 保哥自己也栽过:给一个内容生产脚本写的指令文件从最初的40行长到280行,某天发现它开始忽略“标题不要用冒号拼接”这条——那条规则在第190行,前面堆着一大段和当次任务毫无关系的数据库字段说明。把无关部分挪进按需加载的文件之后,规则立刻又生效了,一个字都没改。 那不是它不听话,是那条规则已经被前面299行稀释掉了。指令文件的容量不是无限的,写第N条规则的时候,你其实在削弱前面N-1条的权重。这句话值得贴在每一个AGENTS.md的开头。 ## 场景四:跨会话的项目记忆 做长期项目的人迟早会遇到这个需求:每开一个新会话都要把项目背景重讲一遍,很浪费。于是自然而然想到——把背景写进永远加载的那个文件里。 这正是把常驻层撑爆的最常见路径。正确的分层是常驻层只放索引,检索层承载内容:根文件里写“客户约定见docs/clients/,历史决策见docs/decisions/”,而不是把约定和决策本身抄进去。 判断标准很简单:问自己这条信息在十次任务里会被用到几次。十次里用到八九次的,进常驻层;只在特定任务里才碰的,进检索层。会犹豫的,一律进检索层——因为常驻层的每一行都是复利支出,而检索层的内容不用到就不花钱。 顺带一个反模式:把整个项目的历史决策记录塞进常驻层,理由是“怕它重复踩坑”。实际效果通常是它开始给出四个月前才成立的建议,因为那些记录里的时效性没人维护。过期的常驻上下文比没有上下文更危险,它会让Agent自信地做错事。 ## 什么时候这一整套都不该上? 取舍要诚实说清楚:对短的一次性任务,这套机制全都不值。 任务是“给这个函数加个空值检查”“把这段文案的语气改得客气一点”,那么一个带着那一个文件的朴素提示词,胜过任何检索流水线、压缩方案或记忆系统。你花在搭上下文管线上的时间,够你手动做完二十次。 上下文工程是给长时程Agent的纪律;在两轮的任务上,它纯是负担。让仪式感匹配时程——这句话应该和前面那些技巧一起记住,因为过度工程化在这个领域造成的浪费,一点不比上下文膨胀少。 判断门槛可以粗暴一点:Agent要跑超过10轮、或者会读超过5个文件,才值得动用这一套。低于这个量级,好好写提示词、把对的文件递给它,到此为止。想系统补齐整条主线的,Claude Code从安装到工作流的完整指南 (https://zhangwenbao.com/claude-code-complete-guide.html)是更合适的入口,那篇讲的是骨架,这篇讲的是骨架上最容易断的那一节。 ## 三句话收尾 第一,把上下文窗口当预算管,默认做减法:及时检索、代码优先用结构化检索、先卸载再摘要、工具集和指令文件都保持精简、永远预留余量。 第二,先诊断再施法。污染、分心、混淆、冲突四种失效对应四根不同的杠杆。一股脑同时上向量库、摘要流水线和300行指令文件然后祈祷,只会加成本、不解决问题。 第三,数据要读到实验设置那一层。“5K打赢100K”只是标题,底下那句“赢的一方把源码整个搬出了窗口”才是可迁移的原语。转述会磨掉细节,而工程判断恰恰活在细节里。 模型会一直变强,token预算永远有限。知道什么该留在预算之外,才是区分“能发布的Agent”和“只会空转的Agent”的那项技能。 ## 常见问题解答 ## 上下文工程和提示词工程到底有什么区别? 提示词工程优化的是一条消息的措辞,是施加在单轮上的手艺。上下文工程管的是整个循环里到底有哪些token进入了窗口——读一个文件进来800行,跑一次测试进来5000行堆栈,grep一把进来40个匹配,这些没有一个是谁写的提示词,它们是堆积出来的。提示词工程是上下文工程的子集。附赠一个免费诊断:Agent第一轮很稳、第三十轮崩掉,那不是提示词问题,是上下文管理问题。 ## 5000 token打败10万token,这个结论可信吗? 可信,但要读到实验设置那一层。Sourcegraph的CodeScaleBench用了370个来自真实企业代码库的任务,基线是本地源码加grep、file、read这类标准工具,对照组是把源码搬出窗口、改用13个检索工具。结果是文件召回率0.127升到0.278,precision@5从0.140升到0.478,F1@5从0.099升到0.262。需要注意的是,赢的那一侧不是笼统的结构化检索,而是一套通过MCP暴露的检索工具——这个细节在多数转述里被抹掉了。 ## 上下文腐烂是不是就是越长越差? 不完全是。Chroma在18个前沿模型上的受控实验给出了两条更精确的结论:一是退化非均匀,模型是撞悬崖不是滑坡,有的在32K还正常、64K突然塌方;二是伤害大小取决于要找的信息和提问之间的语义相似度,相似度越低退化越快。实践含义是,短上下文里跑通的验证对长上下文没有预测力,要验就得在真实长度上验。 ## 卸载和摘要该按什么顺序做? 先卸载,再摘要,顺序不能反。参考LangChain在Deep Agents里给的阈值:单条工具返回超过2万token就写到文件系统,上下文里只留路径加前10行预览;会话越过模型窗口的85%时截断较早的工具调用;只有当卸载已经腾不出空间了才摘要。原因是卸载无损而摘要有损——摘要一旦丢掉了那条唯一重要的约束,三轮之后Agent跑偏,没人知道为什么。 ## 工具调用的入参也需要卸载吗? 需要,而且这一项经常被完全忽略。写文件、编辑文件这类操作,会把整份文件内容作为入参留在对话历史里,而这份内容已经落到磁盘上了,历史里那一份是纯冗余。跑重构或者批量改文件的任务时,这往往是最大的单一开销。大家的心智模型里上下文膨胀是读进来的东西造成的,很少有人意识到写出去的东西会在历史里留下等重的副本。 ## CLAUDE.md写多长算合适? 没有绝对行数,但有一条判据:只放稳定的、全项目通用的规则,任务相关的一律推到按需加载的文件里。因为这个文件会被拼接进每一轮,每一行都在被永久征税。一个短根文件写着“鉴权逻辑在src/auth/,动它之前先读src/auth/README.md”,胜过200行重述那个二十次任务只碰一次的流程。还有个反直觉的推论:写第N条规则的时候,你其实在削弱前面N-1条的权重。 ## 什么情况下不该做上下文工程? 短的一次性任务全都不该。给一个函数加空值检查、改一段文案的语气,一个带着那一个文件的朴素提示词,胜过任何检索流水线、压缩方案或记忆系统。粗暴的门槛是:Agent要跑超过10轮、或者会读超过5个文件,才值得动用这一套。低于这个量级,过度工程化造成的浪费不比上下文膨胀少。 ## 权威参考资料 ## Claude Code怎么搭SEO自动化工作流?claude-seo技能实测与自建 - URL:https://zhangwenbao.com/claude-code-seo-automation-workflow.html - 分类:AI编程与工具链 - 发布:2026-06-02 | 更新:2026-06-02 - 摘要:不堆Claude Code的功能清单,只讲一个老SEO怎么把它用成自动化产线:claude-seo能省下大量重复扫描却有水土不服,真正的杠杆是自建SKILL.md,再配上每周审计、内容刷新、排名周报四个实战场景,以及国内网络与订阅的真实门槛。 - 关键词:SEO自动化,Claude Code,SEO工作流 摘要:Claude Code真正改变SEO工作流的地方,不是“帮你写一段脚本”,而是它能照着你写好的技能文件,自己读站、跑代码、调API,把技术审计、内容诊断、周报这些每周固定要熬的活批量跑完。最快上手的路子是先装开源技能claude-seo跑一周建立手感,但它有几处国内会卡壳的坑;真正的长期杠杆,是你照着自己网站的脾气写一份SKILL.md,把这套判断力沉淀成可复用、可定时、可交接的产线。这篇按“装环境 → 实测claude-seo → 自建技能 → 串成流水线 → 划清边界”的顺序,把一个国内能落地的AI SEO工作流讲透。 做SEO这行,工具从来不缺。Screaming Frog爬一遍、Ahrefs导一堆词、GSC拉一摞数据,最后还得回到Excel里手动拼。强是真强,可问题也明摆着:每周固定要花的那几个小时,几乎都耗在“把数据从一个工具搬到另一个工具,再人肉对照判断”这种没什么创造性的环节上。 做SEO这行,最想砍掉的就是这段重复劳动。不是说判断不重要——恰恰相反,判断最重要,所以更不该把脑子浪费在搬运数据上。2026年这一年,让我觉得这件事终于能落地的,是Anthropic的Claude Code。它不是又一个聊天框,而是一个住在你终端里、能真正“动手”的智能体:读你本地的文件、跑Python、调外部接口、并行开好几个子任务,最后把结论拼给你。配上它的技能(Skills)系统,你等于可以给它装一颗“SEO大脑”,让它按你定的章法自己干活。 下面这套流程,不需要你是程序员——代码它来写、来跑、来debug,你负责说清楚要什么、看懂结果、做最后拍板。但你得懂基本的SEO逻辑,否则它跑得再快,方向错了也是白搭。 ## SEO自动化到底卡在哪一步? 先把病灶说清楚,才知道Claude Code解的是哪一段。传统SEO自动化的痛点,其实就三条: - 工具是散的。爬虫一个、外链工具一个、数据分析一个、报告又一个,每个之间靠人手搬运。一次完整的站点诊断,光在不同后台之间切换、导出、合并,就能磨掉大半天。 - 规则是死的。市面上的SaaS给你的是固定模板,可一个本土外贸站、一个SaaS落地页、一个内容博客,该看的指标、该排的优先级完全不一样。模板化的输出经常给你一堆“正确的废话”。 - 胶水代码是要命的。真想把几个工具串起来自动化,得自己写脚本、维护API、处理报错。写一次能用,三个月后接口一变就崩,维护成本压根算不过来。 这三条卡的其实是同一个地方:缺一个能听懂人话、又能动手干活、还能随网站情况随机应变的“中枢”。Claude Code补的正是这一段。你用中文跟它说“帮我看看这个站的Core Web Vitals和E-E-A-T有哪些硬伤,按影响排个序”,它会自己决定抓哪些页、跑什么检测、调哪个接口,最后给你一份带优先级的清单。把散件接起来的胶水,它自己写、自己改。 这跟“SEO自动化的边界在哪、哪些能交给工具哪些不能”是同一个命题的两面,这里只先记住一句:能自动化的是“执行”,不能自动化的是“判断和担责”。 ## Claude Code凭什么值得SEO上车? 市面上能写代码的AI不少,为什么单挑Claude Code来做SEO自动化?核心就一句:它真有“用电脑”的能力,而不只是“说代码”的能力。 网页版的对话模型,你问它要个脚本,它吐给你一段文本,跑不跑得通、报不报错,得你自己复制粘贴去试。Claude Code不一样,它直接在你的项目目录里: - 读、写、改你本地的文件和代码库,改完能立刻跑给你看; - 执行Python、Node脚本,报错了它自己读traceback、自己修; - 调用外部接口,比如Google Search Console、PageSpeed Insights,把真实数据拉进来分析; - 并行开好几个子代理(agent),一个查技术、一个看内容、一个评GEO,最后汇总; - 通过技能系统加载你写好的playbook,按固定章法办事。 对SEO来说,这几条凑在一起的意义是:你第一次有了一个“既懂数据分析、又会写代码、还不嫌活累”的执行层。它跟付费SaaS的关键区别在成本结构——SaaS是按月按席位收你钱,功能给到哪是别人说了算;Claude Code是你一个订阅打底,能力边界由你写的技能决定,想要什么自己加。 当然,工具再利,也得先会用基本功。Claude Code本身有一堆命令和上下文管理的门道,用顺了效率差好几倍。这部分单独写过用了一年最终留下的几个核心命令 (https://zhangwenbao.com/claude-code-six-core-commands-minimalist-workflow.html),这里不展开,免得跟本文的自动化主线打架——你可以把那篇当作上车前的“驾照”,本文当作“上路跑长途”。 ## 国内怎么把Claude Code装上、跑起来? 这一步看着简单,国内用户其实最容易在这儿劝退。下面把真实门槛和命令都摆出来,别等装到一半才发现卡住。 ## 官方安装命令(2026年现行版) macOS / Linux / WSL,推荐用原生安装脚本,零依赖、后台自动更新: curl -fsSL https://claude.ai/install.sh | bash Windows用户,用PowerShell(建议管理员权限): irm https://claude.ai/install.ps1 | iex 装完验证版本,再进你的项目目录启动: claude --version cd /path/to/your-seo-project claude 如果你更习惯npm,也可以走 npm install -g @anthropic-ai/claude-code,但官方主推的是原生安装,自动更新这一条对长期用很省心。 ## 国内落地的三个真实门槛 这才是重点,也是官方文档不会跟你讲的,下面这几个坑得提前知道: - 账号与订阅。Claude Code要绑Claude的Pro、Max、Teams、Enterprise或者Anthropic Console账号,免费额度跑不动真正的自动化。重度使用建议直接上Max——并行跑审计很吃额度,Pro经常半路就提示限流。订阅支付对国内用户是第一道坎,得自己解决境外支付方式,这块各人情况不同,本文不展开。 - 网络。无论装Claude Code本身,还是后面要拉GitHub上的开源技能、调Google的接口,全程都要稳定的境外网络。不是“能打开网页”那种偶尔通,而是脚本连续跑十几分钟不断流。网络不稳,是后面claude-seo审计最常见的失败原因,没有之一。 - 本地环境。装Python 3.10及以上,Claude Code会自动调用。建议在项目根目录建一个 .claude/ 文件夹放你的自定义技能,后面会用到。 把这三关过了,你就有了一个能干活的底座。接下来分两条路:先用现成的开源技能快速见效,再自己造技能补短板。 ## claude-seo这个开源技能,到底值不值得装? 社区里已经有人把常用的SEO能力打包成了开源技能——AgriciDaniel的claude-seo仓库 (https://github.com/AgriciDaniel/claude-seo)。保哥实测跑了不止一周,下面有褒有贬,按真实体验说。 ## 它到底能干什么? 这不是个玩具。它一次能调起25个子技能、18个专业子代理并行干活,覆盖面相当全: - 技术SEO:抓取、索引、Core Web Vitals信号、站点结构; - 内容质量(E-E-A-T):经验、专业、权威、可信四个维度逐项打分; - 结构化数据:检测、校验、生成Schema.org标记; - GEO / AEO(AI搜索优化):评估段落的“可被引用性”——它会量化答案块的自包含程度(官方说最优是134到167个词的独立答案块)、问题式标题层级、归因密度,还会看你在维基百科、Reddit、YouTube、LinkedIn上的实体存在感; - 本地SEO、国际化hreflang、电商SEO、图片优化、竞品分析等等。 它会自动识别你的网站类型(SaaS、本地商户、电商、内容站),然后输出一个0到100的健康分,外加一份分了Critical / High / Medium / Low优先级的行动计划。这份计划最值得认可的一点是:每条建议都带“可证伪”的验证方法——不是空喊“你要优化标题”,而是告诉你怎么检验这条做了到底有没有用。它是MIT许可、开源免费的,不跳过可选的Google API和扩展时,甚至能完全离线跑。 ## 怎么装、怎么跑? 最快的是插件方式(需要Claude Code 1.0.33及以上版本): /plugin marketplace add AgriciDaniel/claude-seo /plugin install claude-seo@agricidaniel-claude-seo 如果你想看源码、改技能,走手动安装。Unix / macOS / Linux: git clone --depth 1 https://github.com/AgriciDaniel/claude-seo.git bash claude-seo/install.sh Windows PowerShell: git clone --depth 1 https://github.com/AgriciDaniel/claude-seo.git powershell -ExecutionPolicy Bypass -File claude-seo\install.ps1 装完启动Claude Code,跑一条全站审计: claude /seo audit https://your-site.com 常用命令列几个高频的,输入 /seo 能看到全部27个: 命令 | 用途 | /seo audit | 全站审计,并行调度子代理 | /seo page | 单页深度分析 | /seo technical | 技术SEO专项 | /seo content | E-E-A-T与内容质量 | /seo schema | 结构化数据检测与生成 | /seo geo | AI Overviews / 生成式引擎优化 | /seo local | 本地SEO(GBP、引用、评价) | ## 实测下来,它强在哪? 跑下来,有几点确实超预期: - 速度是降维打击。一次全站审计官方说10到15分钟,实测确实在这个区间。同样的活,人工要4到8小时,请代理机构要1到3周。这不是“快一点”,是把一个下午压缩成一杯咖啡的时间。 - 行动计划能落地。前面说的“可证伪”不是噱头。每条建议有观察依据、有依赖条件、有验证方法、有预期影响,你拿着就能直接派活,不用再翻译成人话。 - GEO这块挺超前。它把“内容能不能被AI引用”拆成了可量化的指标,这正是2026年最该补的功课。传统工具大多还停在“关键词密度”,它已经在算答案块的可引用性了。 还有个容易被忽略的细节:它给的报告不是一大坨文字,而是结构化的——总健康分、按维度拆开的得分、按优先级分组的问题清单,层次很清楚。可以把跑出来的Critical项直接贴进任务看板,团队照着派活,中间几乎不用再翻译成人话。对带团队的人来说,这种开箱即用的结构化输出,有时候比多几个检测项还值钱。它识别站点类型也比较准,给内容站和给电商站的建议明显不是一套模板,这点比很多只会套通用清单的工具强。 ## 那坑又在哪,怎么别踩? 夸完了,泼几盆冷水。这几个坑,国内用户基本都会撞上: - 网络是头号杀手。审计要连续抓页、调接口十几分钟,境外网络一抖,任务就半路挂掉,还经常报得不明不白。实测经验是:先用 /seo page 拿单页试通,再上 /seo audit 跑全站,别一上来就梭哈。 - PageSpeed公共接口会限流。跑性能那部分常撞Google PSI的429(请求过多)。想拿稳定的实验室数据,最好自己配一个Google API key,否则性能维度的结论时有时无。 - Google API配置有门槛。想接Search Console、CrUX这些真实数据,得自己去Google Cloud建项目、配凭证,对不熟后台的人不算友好。它有 /seo google setup 引导,但前置的境外账号和网络还是绕不开。 - 中文内容的适配要留个心眼。它的E-E-A-T、可引用性那套评分,底层规则更贴合英文内容生态。中文站、尤其面向国内搜索的内容,它的某些建议要打个折扣,不能照单全收——比如它推荐的实体平台是维基百科、Reddit,放到国内场景就得换成对应的权威源。 - 它给的是初稿,不是定稿。所有自动审计的结论,本质是“高质量的怀疑对象”,不是“已经核实的事实”。最终要不要改、怎么改,必须人工过一遍。这点后面单独讲。 一句话总结保哥的态度:claude-seo是绝佳的“起步器”,能帮你省掉80% 的重复扫描工作,但别把它当“自动驾驶”。先用它跑一周数据、建立手感,然后——重点来了——进入下一步,写属于你自己的技能。 ## 为什么说自建技能才是真正的杠杆? 现成技能再全,也是按别人对SEO的理解写的。你的网站有自己的脾气:什么样的页面算重要、内链该怎么连、品牌词怎么处理、哪些是你行业独有的坑——这些只有你自己最清楚。把这套判断力写进一份技能文件,才是把你脑子里那套判断变成“可复用产线”的关键一步。 如果你想先系统搞懂技能体系本身——官方都内置了哪些技能、怎么组合,这块单独拆解过官方技能的用法和它们在SEO自动化里的位置 (https://zhangwenbao.com/claude-skills-guide.html),那篇偏“认识零件”,本文这节偏“自己造零件”,配着看效果最好。 ## 一个技能长什么样? 每个技能就是一个文件夹,核心是一份 SKILL.md。它的结构非常简单:开头一段YAML元信息(夹在两行 --- 之间),告诉Claude Code“这个技能是干嘛的、什么时候该用”;下面是Markdown正文,写清楚它该怎么干。 --- name: seo-content-optimizer description: 分析页面的 E-E-A-T、技术 SEO 与 GEO 优化潜力,结合 GSC 数据发现低竞争关键词机会,输出带优先级的行动计划。 --- 两个字段最关键:name 必须是小写字母、数字、连字符(最多64个字符),它就是你之后用 / 调用的命令名;description(最多1024个字符)是整份文件里最重要的一行——Claude Code靠它判断什么时候该自动加载这个技能,所以要把“做什么 + 什么时候用 + 关键能力”写具体,越具体触发越准。官方对这两个字段的规范,Claude Code的Skills文档 (https://code.claude.com/docs/en/skills)讲得最权威。 ## 一份可以直接抄的中文技能模板 下面这份是保哥按国内SEO场景改过的“内容优化 + 关键词机会”技能,建在你项目里的 skills/seo-content-optimizer/SKILL.md,可以直接拿去改: --- name: seo-content-optimizer description: 深度分析单页或批量页面的内容质量(E-E-A-T)、技术 SEO 问题、GEO 优化潜力,结合 GSC 数据或竞品对比,发现低竞争高意图关键词机会。输出结构化优先行动计划、可执行建议与代码片段。面向中文站点优化。 --- # SEO 内容优化器 + 关键词机会技能 ## 角色与目标 你是一位有十年经验的资深 SEO 策略师兼技术专家,服务对象是中国的外贸独立站、SaaS 出海团队和内容站。目标是把页面从“能排名”提升到“稳定排名 + AI 搜索可见”。 ## 工作流程(严格遵循) 1. 信息收集 - 给 URL,就抓取页面(含 JS 渲染);给 GSC 导出的 CSV,就解析查询、点击、展示、平均排名。 - 自动判断页面类型(博客、产品、落地页、列表页)。 - 抓取前三到五名竞品做对比。 2. 多维度并行分析 - 内容质量:第一手经验、作者信息、引用来源、更新频率。 - 技术 SEO:标题、meta、H 标签结构、内链、图片 alt、schema、Core Web Vitals 信号。 - GEO/AEO:问题式标题、段落可引用性、归因密度、对 AI Overviews 的适配。 - 关键词机会:从 GSC 里挑出低竞争、高意图、当前排第 4 到 20 位的词,结合竞品内容缺口给建议。 3. 输出 - 总体评分(0 到 100)。 - 优先级行动计划(Critical / High / Medium / Low)。 - 每条含:问题描述、影响评估、修复步骤、预期提升、验证方法。 - 给出优化后的标题、meta、H1 到 H2 建议和内容大纲;需要时生成 JSON-LD。 - 最后给“本周可执行清单”:三到五项 ROI 最高的动作。 ## 约束 - 面向中文读者,术语克制,能用中文就别堆英文。 - 尊重 robots.txt 与网站服务条款。 - 所有数据标注来源,结论需人工二次确认后执行。 - 实体推荐用国内可达的权威源,不照搬维基百科、Reddit。 ## 输出格式 必须用 Markdown,配表格和代码块,禁止泛泛而谈,每条建议都要可验证。 存好之后,在Claude Code里直接调用: /seo-content-optimizer 分析 https://your-site.com/blog/example 它会自动加载这份技能,按你定的流程一步步走。注意看最后那段约束——“实体推荐用国内可达的权威源”这一条,就是专门用来堵claude-seo那个“默认推荐维基百科Reddit”的水土不服的。这就是自建技能的价值:别人的技能解决通用问题,你的技能解决你的问题。 ## 让Claude Code帮你生成更多技能 最省事的一招:你压根不用自己手写SKILL.md。直接在对话里跟它说需求,让它生成。比如: > “帮我建一个新技能,名叫seo-weekly-report,功能是每周从GSC和GA4拉数据,生成一份包含‘流量下降最快的页面、新出现的机会关键词、下周内容建议’的Markdown周报,并能导出成可以直接发给客户的PDF,要求支持定时触发。” 它会把完整的SKILL.md写出来,你只需要微调。想进一步对齐Anthropic官方的写法,可以参考 Anthropic官方的Agent Skills仓库 (https://github.com/anthropics/skills)里的范例,照着学结构最快。 ## 怎么把这些零件串成一条自动化流水线? 单个技能是“零件”,把它们按业务流程接起来、再挂上定时触发,才叫“产线”。给你四个实战场景,从简单到复杂。 ## 场景一:每周技术审计 + 告警 目标是每周一早上自动跑一遍全站审计,发现Critical级问题就推到飞书或邮箱。拆成三步: - 用claude-seo的 /seo audit 出报告; - 让Claude Code写一段Python,把命令行调用包起来,再用系统的定时任务(cron)每周一触发; - 脚本把关键问题摘要通过邮件或机器人webhook推出去。 给Claude Code的prompt可以直接这么说: > “用Python写个脚本,调用claude命令行跑 /seo audit,把输出转成带图表的PDF,再通过SMTP发到我邮箱。域名用命令行参数传进来。” ## 场景二:旧内容刷新流水线 输入一个老文章URL,自动分析它现在的表现、找出下滑原因、生成优化版本和对应schema,最后吐出一份可以直接复制回CMS的Markdown。这条线特别适合内容站做存量盘活——把发布过两三年、排名在掉的文章批量过一遍,比埋头写新文性价比高得多。 具体怎么跑?先用一个技能从GSC里筛出“曾经有排名、近90天点击在掉”的页面清单,再让内容优化技能逐条过:比对当前内容和现在排在前面的竞品差在哪、哪些信息已经过时、缺了哪些该有的实体和数据,然后给出补充建议和新的schema。最后人工挑高价值的几篇定稿、回填。一轮下来,往往能从几十篇里捞出几篇“改一改就能回到首页”的低垂果实,这比从零写新文的确定性高得多,也更容易跟老板解释ROI。 ## 场景三:关键词研究 + 内容规划 把GSC导出的CSV喂进去,结合竞品分析,让它产出一份内容日历:每个选题配上建议标题、目标字数、该连哪几篇内链、用什么schema类型。相当于把“拍脑袋排选题”换成“数据驱动排产”。 ## 场景四:排名追踪 + 自动周报 接SerpAPI或DataForSEO这类扩展,把历史排名记进本地SQLite,让Claude Code定期生成洞察周报——“本周上升最快的是这几页,可能的原因是……”。这一类“调接口、攒数据、生成自定义报表”的活,正是Claude Code的拿手戏,用它做GSC报表这条线单独写过完整的实战拆解 (https://zhangwenbao.com/claude-code-gsc-custom-seo-reports.html),想深挖报表这条线可以接着看那篇。 ## 调度方案怎么选? 方案 | 适合谁 | 说明 | crontab | 有自己Linux / macOS机器的 | 最直接,写一行定时规则即可 | GitHub Actions | 新手、不想维护服务器的 | 云端定时跑,配置门槛低,推荐起步 | n8n / Make.com | 要跟其他系统联动的 | 可视化编排,触发Claude Code当一个节点 | 提醒一句:定时自动跑出来的报告,依然只是“初稿”。流水线负责把数据准备好、把建议列出来,最后那一下“改不改、怎么改”的扳机,永远握在人手里。 ## 哪些SEO活能交给它,哪些千万别交? 这一节比前面所有技巧都重要。工具用得越顺,越容易上头,把不该交的也交出去。这里划三条线。 ## 可以放心交出去的:执行类 - 全站爬取、技术问题扫描、死链与重定向排查; - 结构化数据的检测、校验、生成; - 数据拉取、清洗、合并、生成报表; - 批量改meta、生成sitemap、跑性能检测。 这些活有明确的对错标准、可重复、出了错也容易回滚,交给机器又快又稳。 ## 必须人工把关的:判断类 - 内容的事实与口碑。AI生成或改写的内容,事实对不对、有没有踩品牌调性、会不会得罪用户,必须真人看过。这点得反复强调——AI给的是“高质量的怀疑对象”,不是“已核实的事实”。 - 策略级决策。要不要进某个细分市场、品牌词怎么布局、内容矩阵怎么搭,这些牵一发动全身的判断,工具能给参考,不能替你拍板。 - 对“可证伪建议”的复核。哪怕审计报告写得头头是道,落地前也要抽查几条验证一下,别被流畅的表达骗了。 举个真实会遇到的情况:审计报告判定某个落地页“内容单薄、建议大幅扩写”,听起来没毛病。可那个页面本来就是个高转化的短表单页,访客就是冲着留资来的,硬塞两千字进去反而拖垮转化。工具看的是“内容维度够不够”,看不到“这个页面在转化漏斗里扮演什么角色”——这种只有人能补上的业务上下文,恰恰是它最该交回给你拍板的地方。把这类判断也甩给工具,迟早要出事。 ## 碰都别碰的:违规类 这条没得商量。所有自动化都必须守robots.txt、守网站服务条款、控制请求频率(加sleep或走官方API,别把人家服务器爬挂)。不爬付费墙、不做任何违反Google搜索质量指南的操作。自动化是用来提速的,不是用来钻空子的——黑帽那套,迟早把站玩死。关于“工具的能力边界”和“人该守在哪一环”,自动化边界那篇 (https://zhangwenbao.com/seo-automation-tasks-tools-workflows-2026.html)有更系统的拆解。 ## 几个能少踩坑的实操心得 - Prompt要极致具体。给它角色、步骤、输出格式、约束条件,别指望一句“帮我优化SEO”能出好结果。 - 先小范围验证再全量。新技能先拿一两个页面试通,确认逻辑对了再批量跑,省得错误成规模。 - 用环境变量管密钥。API key放 .env 并加进 .gitignore,别硬写进代码、别提交到仓库。 - 报错直接贴回去。脚本跑挂了,把完整报错粘给Claude Code,它自己会debug,比你瞪着traceback发呆快。 - 压住幻觉。明确要求它“只基于抓取到的真实HTML和GSC数据回答”,别让它脑补。 - 成本要算账。复杂任务拆成小技能、减少单次token消耗;不那么烧脑的步骤可以指定用更轻的模型,把额度省给真正难的环节。 ## 常见问题解答 ## 不会编程,能用Claude Code做SEO自动化吗? 能。代码它来写、来跑、来修,你只要会用中文把需求说清楚。但你得懂基本的SEO逻辑——什么是好标题、内链该怎么连、E-E-A-T是什么。工具负责执行,方向和判断还得你来。一句话:它降低的是“写代码”的门槛,没降低“懂SEO”的门槛。 ## claude-seo和自己写技能,到底先用哪个? 先用claude-seo。它能立刻帮你省掉大量重复扫描,用一周就能建立对这套工作流的手感。等你摸清它哪里好用、哪里水土不服,再动手写自己的技能去补短板。顺序反了——一上来就自己造轮子,你连参照系都没有。 ## 数据安全吗?会不会泄露给第三方? 核心操作都在你本地终端跑,文件不会主动上传。只有你显式调用某个云端接口(比如Google API)时,相应数据才会出去。敏感信息一律用环境变量管理、加进 .gitignore,别硬编码进脚本,这是底线。 ## Claude Code和Cursor、Windsurf比有什么不同? 它们都能写代码,但Claude Code更强调“agentic执行力”和技能系统——它擅长照着你定的章法,长期、自动、可复用地干活。做一次性的代码补全,几个工具差别不大;做需要沉淀成产线的SEO自动化工作流,Claude Code的技能系统更顺手。 ## 大概要花多少钱? 主要是Claude的Pro或Max订阅,外加少量可选的第三方API(比如SerpAPI、DataForSEO)调用费。重度跑自动化建议上Max。整体比一堆按月按席位收费的SEO SaaS便宜,而且能力上限由你自己定,不受别人功能阉割的限制。 ## 国内用起来最大的障碍是什么? 不是技术,是境外网络和订阅支付。装环境、拉开源技能、调Google接口全程都要稳定的境外网络,审计任务连续跑十几分钟,网络一抖就挂。订阅又得解决境外支付。这两关过了,剩下的都好说。 ## 权威参考资料 ## AI编程改变了什么?35岁老工程师的5大反直觉真相 - URL:https://zhangwenbao.com/ai-coding-35-engineer-reversal-three-routes.html - 分类:AI编程与工具链 - 发布:2026-05-14 | 更新:2026-05-16 - 摘要:AI编程让会写代码和能写好系统彻底解耦后,35岁后端老兵的处境到底变成什么样?保哥用一年实测把那些没人愿意说的5个反直觉真相、3类职业出路与7个高频疑问一次说清。 - 关键词:AI编程,Vibe Coding,职业发展 > **TLDR**:摘要:AI编程把会写代码和能写好系统彻底解耦后,35岁后端老兵的处境到底变成什么样?本文说清那些没人愿意明说的五个反直觉真相——真正稀缺的是知道什么不能乱写、老程序员的五种隐藏负债、真正的危险不是35岁而是只剩CRUD,再给三类职业出路和转型成工程师傅的路径。 > 摘要:AI编程把会写代码和能写好系统彻底解耦后,35岁后端老兵的处境到底变成什么样?本文说清那些没人愿意明说的五个反直觉真相——真正稀缺的是知道什么不能乱写、老程序员的五种隐藏负债、真正的危险不是35岁而是只剩CRUD,再给三类职业出路和转型成工程师傅的路径。 过去一年里保哥同时用Cursor、Claude Code (https://zhangwenbao.com/claude-code-tips.html)和Codex写真实项目——从SEO爬虫调度到Typecho主题二开到网站内容批量重写流程。一年前对"35岁程序员到底有没有春天"的判断和大多数人一样:AI编程 (https://en.wikipedia.org/wiki/Vibe_coding)会加速洗掉老程序员。一年实测之后这个判断反过来了——AI编程不是把老人推下牌桌,是把"写代码"和"做系统"拆开了。拆开之后老程序员手里那部分东西突然就值钱了。 但这个翻盘不是年龄送的,也不是行业施舍的——它只属于已经积累过的人。这篇文章把那些没人愿意说的5个反直觉真相摆出来,告诉你哪些人会被重新定价、哪些人会继续被淘汰、明天具体能做什么。 ## 35岁危机的旧逻辑在AI编程时代已经失效 过去10年中国互联网的"35岁危机"成因其实非常具体。它不是抽象的年龄歧视,而是一个非常机械的等式: 导致35岁危机的旧公式 | 核心机制 | 公司买的是产能 | 薪水买的是你每天写的代码行数和上线的功能数 | 年轻人加班便宜 | 同等代码量25岁工程师工资是35岁的一半 | 新框架不停涌出 | 老人学新东西的边际速度比年轻人慢 | 组织扁平化 | 35岁如果没升中层,就成了"高薪写代码"的尴尬位置 | 项目周期短 | 大多数互联网项目18个月一波,积累反而成了沉没成本 | 这5条加起来35岁的人确实没年轻人划算。保哥见过不止10个case:35岁的资深工程师工资是年轻人的1.8到2.2倍,但产出代码量只比年轻人多30%到50%——HR算这个账算到吐血。 AI编程进来之后这个等式有一个变量被直接挤掉了——"代码量"不再是稀缺资源。Cursor (https://cursor.com/)配合一个还算靠谱的工程师可以一天写出过去三天的代码量。当代码本身变得便宜,公司买的就不再是"产能",而是"判断": > 判断什么该写、什么不该写、写错了能不能在线上崩盘前抓出来。 源文说"AI编程把'会写代码'和'能把系统做成'这两件事彻底分开了"——这句判断本身是对的,但要补充一点:分开之后,第一件事的价格在崩,第二件事的价格在涨。两个价格的差距,是35岁老程序员手里的隐藏期权。能不能行权,看自己。 ## AI把"会写代码"和"能写好系统"彻底解耦了 过去一年用Cursor写真实项目,对这个解耦看得越来越清楚。具体表现: 过去一个中等复杂度的功能——比如"加一个用户登录页+后端鉴权+数据库表"——需要一个懂Spring Security/JWT/MySQL索引/前端表单校验的工程师写一天。现在只需要一个能描述清楚业务需求、知道大概的安全约束、能阅读AI生成代码的人,1到2小时就出来一个可跑的版本。 但这个"2小时上线"的版本能撑多久?要看场景: 项目规模 | AI写代码能撑多久 | 失分点 | 纯CRUD小工具(<500行) | 几乎一辈子 | 无明显失分 | 中等流量业务系统(500-5000行) | 3到6个月 | 出问题后定位特别难 | 核心交易/支付/账户系统(5000-50000行) | 1周到1个月 | 并发竞争、事务一致性、异常处理、数据迁移全是雷 | 多服务协作复杂系统(>50000行) | 第一天就在埋坑 | 看不见的跨模块约束失分 | 所以源文那句"AI最擅长局部补全,最不擅长在复杂约束里长期保持一致性"是对的。这个曲线下,老程序员的价值就出现了:他们能判断当前系统处在哪一段,能在AI开始失分前介入。年轻人没经历过系统崩盘,他们看到的AI输出"看起来很合理"——而老程序员看到的是"3个月后这块会爆"。 SEO/建站圈也有类似现象。Vibe Coding实战:用Cursor开发SEO工具 (https://zhangwenbao.com/vibe-coding-seo-tool-tutorial.html)里演示了一个非工程师怎么用AI写小工具——这是好事,但要看到背后另一面:能写小工具不等于能维护工具,更不等于能把工具升级成产品。维护和升级这块就是老程序员的传统主场。 ## 真正稀缺的不是写得快,是知道什么不能乱写 10多年SEO顾问生涯里有一个反复出现的现象——客户找乙方开发网站,乙方派两种人来: > 一种是按需求文档堆代码的"码农";一种是先问你"你这个功能是不是真要、不要是不是有更便宜的方案"的"工程师"。前者交付得快,后者交付得慢——但半年后前者交付的网站已经在改第三版,后者交付的还在跑。 AI编程时代这个差距被放大了。"按文档堆代码"AI比任何码农都快,没有任何人能跟AI拼这个速度。但"先问你这个功能是不是真要"——AI做不好。Cursor会试图实现一切被要求的事情,包括那些自相矛盾、性价比低、有更简单替代方案的。AI没有"质疑用户"的倾向,它的训练目标是"满足用户"。 所以老程序员真正稀缺的能力是"知道什么不该写"。这种能力具体分解: - 识别假需求——客户说要的功能可能其实是另一个问题的错误解决方案 - 判断技术债——这个看似合理的快速方案是不是会在3个月后变成系统负担 - 避免过度抽象——年轻工程师常见的"为了未来扩展先封装10层",老人知道大部分扩展永远不会发生 - 预判失控点——哪个模块在用户量翻10倍时会先崩盘,哪个数据库表在数据量翻100倍时要拆 - 知道哪些原则在哪些场景下不适用——经典书上写的设计模式,老人知道哪些是装饰品、哪些是救命稻草 这些能力共同点是什么?它们都不是"会做什么",而是"不会做什么"。它们是负面知识——知道什么应该避免。这种负面知识在AI编程时代变得稀缺,因为AI天然没有"避免"的倾向,AI是穷举式的,会试图实现一切被要求的事情。 ## 老程序员的5种隐藏负债:哪些经验在AI时代反而扣分 这一节是给老程序员的逆耳话——不是所有35岁以上的经验都加分。跟身边10多个工程师朋友聊下来,下面这5类负债最常见: 负债 | 问题表现 | 替代姿势 | 把"我写得快"当核心竞争力 | 10年前比新人快3倍,现在Cursor配新人比你快10倍,"快"已经不值钱 | 把核心竞争力从"快"转到"判断"与"治理" | 对新工具有"经验税"心理 | 不愿学Cursor、Claude Code (https://docs.claude.com/en/docs/claude-code/overview),认为"老工具够用" | 每月试一项新工具,承认换工具的相对收益对老人更高 | 把"懂老架构"当不学新架构的借口 | 不知道LLM调用、Embedding、RAG、Agent,判断坐标系缺一块 | 把这些新概念纳入自己的架构判断词汇表 | 抗拒"和AI协作"这种新工作方式 | 态度是"我自己写更快",在中等任务上已经输一半速度 | AI时代是程序员带AI,不是程序员vs AI | "我看不上脏活"心态 | 不愿意做需求评审/写文档/code review/带新人 | 这些恰恰是AI替代不了的护城河,主动接 | 这5种负债的共同点是"用过去的成功姿势对抗未来的环境"。35岁以上的工程师如果能在这5点上诚实自检并主动调整,翻盘的概率会高很多。 ## AI时代真正的危险:不是35岁,是只剩CRUD 源文里有一句话非常认同: > 真正危险的不是35岁,而是你有没有形成架构判断力、抽象能力、系统治理能力。 把这句话再展开一层——真正会被AI淘汰的工程师,不分年龄,但有共同特征: - 过去5年的工作核心是"按需求文档堆代码"——业务复杂度、技术决策、架构演进基本不参与 - 能解决的问题AI都能解决,AI不能解决的问题你也不能 - 没有形成"专家直觉"——遇到bug只会按搜索引擎的提示挨个试 - 对所在业务的领域知识停留在表面——能写代码但不理解这个代码服务的业务为什么这样运作 - 跨模块协作经验稀薄——只会写自己负责的那一块,不知道上下游怎么连接 这种特征的工程师不分25岁35岁还是45岁,都危险。25岁有这5个特征反而更危险——还有20年职业生涯要走,而起点已经是"AI能替代"的位置。 说真心话,国内有相当大比例的中级工程师属于这一类。不是因为能力差,是因为公司从来没给过他们"做系统"的机会。互联网外包、传统企业IT、政企项目、低代码厂商——这些环境下大部分工程师的工作就是"按需求文档堆代码"。当AI能用更便宜的成本完成同样产出时,这些岗位的需求量会快速萎缩。 保哥手头有个朋友38岁在一家二线传统企业IT部门做了15年,95%是按业务需求修改一个老系统,从来没有从零设计过任何模块、没有做过架构决策、没有写过设计文档。AI出来之后他发现自己负责的那个老系统的运维工作量大幅下降了——因为很多bug AI能直接定位修复。他的危机不是来自年龄,是来自"15年的工作没有积累出迁移性"。这是35岁危机的最痛真相,但很少有人愿意明说。 前面讲的"老程序员翻盘",是有前提的——前提是过去那些年真的积累了"做系统"的能力,而不是15年都在按文档堆代码。如果是后者,本文的乐观判断不适用,请直接跳到下一节看出路。 ## 老程序员怎么转型成AI时代的"工程师傅" 源文里那个比喻特别精准: > 以后比拼的不是"你会不会写代码",而是"你能不能带着一群不稳定的AI实习生,把一个复杂系统做下去"。 把这个"师傅"角色具体化一下,分成5个核心动作: - 写好"约束文档"——AI实习生跟人类实习生最大的区别是不会主动揣摩你的意图,你给什么它做什么。所以必须写比过去更细致的"上下文文档"——技术栈选择、代码风格、命名规则、目录结构、错误处理范式、性能要求、安全约束。每个新项目先花2到3小时写一份CLAUDE.md或者类似的指南文件,AI生成代码时直接参照 - 设计任务拆分粒度——AI不擅长在单次对话里handle"开发一个完整的支付系统"这种宏任务,但擅长handle"在这个具体的Service类里加一个退款接口、参考既有的XXX接口模式"这种小任务。师傅的核心动作是把宏任务拆成几十个粒度合适的小任务 - review代码的速度要快——必须能在5分钟内判断50行AI生成代码的正确性。这是大多数老程序员被忽视的能力,写10倍快了但review速度没变快,整体效率就被卡住 - 建立测试和回归矩阵——AI生成的代码不能像人写的代码那样依靠"工程师有羞耻心"做基本保证。所以必须有比过去更扎实的自动化测试套件来锁定关键行为 - 掌控架构决策的最终拍板权——具体代码可以让AI写,但"用什么数据库、用什么框架、要不要拆服务、用同步还是异步"必须由有经验的人拍板 这5个动作的共同点是它们不是单纯的"技术活",而是"工程治理活"。机器优先架构实战指南:AI代理时代网站必须重构的底层逻辑 (https://zhangwenbao.com/machine-first-architecture-ai-agent-website.html)讲的是从被AI读的角度怎么设计内容,思路上和"师傅怎么带AI实习生"是同一种结构思维——把环境塑造好让AI自己跑得对。 ## 35-45岁后端老兵的3类职业出路 抛开抽象判断,把身边10多个35岁以上工程师朋友最后的实际选择归类成3条出路。每条都有自己的代价和门槛,没有绝对最优解。 出路 | 核心动作 | 主要代价 | 适合什么人 | 留在体系内做"工程师傅" | 从"高薪写代码"转到"带AI和年轻工程师把系统做对" | 跟HR/老板谈职责调整,接受KPI模糊期;中小公司养不起 | 大厂老员工,公司有足够工程体量值得养"治理岗" | 独立工程师/小团队lead | 1人配3个AI实习生,独立咨询/外包/SaaS小产品/工作室 | 自己做获客/财务/扛现金流;不是所有人都适合 | 偏混合人格,有2到3个稳定客户线索,能撑12个月现金流 | 横向跨界(工程+另一个领域) | 老工程师转SEO顾问/产品经理/技术写作/管理咨询/独立投资 | 需要在另一个领域有实际积累 | 有其他兴趣或非技术背景沉淀的人 | 3条路怎么选?关键看3个问题:①现在的现金流压力多大(高就别走第二类);②是技术型人格还是混合型人格(纯技术留第一类,混合走第三类);③愿不愿意做"获客、销售、市场"这种工程师传统鄙视链下游的事(不愿意就别走第二类)。把这3题答清楚,3条路大致就能筛出1到2条候选。 SEO圈跨界这条路是保哥自己走过的——SEO圈95%的从业者没有工程背景,懂工程的SEO顾问能解决他们一辈子都解决不了的技术难题。这种跨界比纯技术更难被AI替代,因为护城河不是技术也不是行业知识,是两者交叉处的隐含理解。SEO圈目前的岗位分布和入行成本可以参考2026入行SEO的5类岗位:技能图谱、薪资区间和真实踩坑 (https://zhangwenbao.com/seo-career-guide-2026-roles-skills-salary-pitfalls.html),能帮你判断是不是适合往这个方向跨界。 ## 非工程师也开始用AI写代码:老程序员真正的反向竞争 这是源文没讲但观察到一个特别重要的趋势——越来越多非工程师身份的人在用AI写代码做实际生产工具。SEO圈这一年大量同行开始用Cursor/Claude Code做爬虫、做关键词工具、做内容批量处理脚本。他们不是工程师出身,但能用AI完成中等复杂度的工程任务。 这件事对35岁老工程师的意义是双面的: 双面性 | 对老工程师的影响 | 市场总盘子扩大 | 过去需要请工程师才能做的事现在很多非工程师自己就能做,懂技术的人能做的事情边界在扩大——可以转身做SEO顾问、增长经理、产品经理这些跨界角色,因为工程底子让你有优势 | 低端工程岗位需求被切走 | 以前公司请2-3个初级工程师做内部工具/爬虫/批量处理,现在公司内部的非工程师自己就能用AI做出来。低端工程就业市场会萎缩 | 所以反向竞争是真实的——35岁老程序员要警惕的不仅是"年轻工程师比你便宜",更是"非工程师用AI已经能做80%初级工程的活"。但如果能往"系统治理、复杂决策、长期演进"方向爬一格,就处在AI和非工程师都够不到的位置,反而越来越安全。 ## 中年程序员避坑:5个真实误区 列5个看到最高频的中年程序员误区,每个用一句话讲清楚为什么错。 把"我有10年经验"当万能挡箭牌。10年经验如果是"同一年用了10次",那不是10年经验,是1年经验重复10次。重要的不是工龄而是"在工龄里你解决过多少不同复杂度的真问题"。诚实自检——你过去10年里有多少时间是在做有挑战性的新东西、多少时间是在维护老系统? 觉得"AI编程是小孩子玩具,不是真工程"。这是最危险的轻视。AI写的代码bug多、性能差、维护性差,看起来不是"真工程"。但当你认真用它3个月并且配套写测试和约束文档之后会发现,它的产出质量是可以驯化的,关键看你怎么带它。轻视AI编程的人3年内大概率会被认真用它的人甩开2倍以上的生产力差距。 不愿意放下"工程师身份的优越感"。中年工程师常见姿态是觉得做产品/做运营/做销售是"职业向下"。AI编程时代这个鄙视链已经反过来——纯技术岗位被AI压缩,跨界岗位才是真正稀缺的。如果还守着"我是工程师我不做那些事"的姿态,3年后市场上的位置会变小一大块。 觉得现在转型晚了。35岁、40岁、45岁的人都会有"是不是来不及了"的疑虑。观察到的真相是——这个时代变化太快,"什么时候开始"已经不像10年前那么重要,"开始之后用什么速度迭代"更重要。一个45岁的人如果用对了方法+保持每月学一项新东西的节奏,2年之内可以站到80%同龄人前面。晚不晚不是问题,是不是真的开始才是问题。 过度依赖AI让自己的判断力退化。这条是反向警告——AI编程很好用,但如果完全交出"思考过程"只看结果,判断力会退化。建议每次让AI生成代码后强制自己手动review一遍,并且每周至少有2小时是不开AI纯手写代码,保持基础肌肉记忆。让AI做高速档但不要让AI做你的大脑。这条对老程序员尤其重要——核心资产就是判断力,判断力一旦退化整个资产就贬值了。 ## 常见问题解答 ## 35岁失业了现在学AI编程来得及吗 来得及,但要分清"学AI编程"具体是学什么。学Cursor/Claude Code这类工具的基本操作,2到4周可以上手到能用的程度。学怎么用AI写中等复杂度项目,需要3到6个月的有意识练习。学怎么做"AI工程师傅"——能带AI完成生产级项目——需要1到2年。失业场景下的最小动作:第1个月集中学工具基本操作+用AI完成3到5个小项目;第2到3个月尝试用AI承接小型外包项目或自己做一个小SaaS;第4个月开始有真实case可以包装求职简历。3到4个月内一定能让自己重新找到工作或者跑出第一笔自由职业收入。 ## 老程序员要不要重学Cursor、Claude Code这类新工具 必须学。这不是选择题是确定题。这类工具的学习曲线对老工程师其实很友好——不需要学新语言,只需要学新的工作方式。具体路径:第1周下载Cursor免费版试用,挑一个熟悉的项目(一个小工具或者一个老脚本)让Cursor帮你改进;第2周尝试用Cursor写一个全新的小项目,从需求到部署一气呵成;第3周开始尝试用Cursor做日常工作的一部分(比如写报告、处理数据、生成测试用例);第4周做总结,对比自己使用前后的效率差。一个月之后应该有体感地判断这工具在你的工作流里能提多少效率。 ## 35岁该转管理还是继续走技术 这个问题没有标准答案,关键看人格类型和现金流情况。如果是"喜欢解决具体问题、不喜欢处理人际复杂度"的纯技术人格,AI编程时代继续走技术路线是OK的——往"AI工程师傅"方向爬,做技术专家、独立工程师、技术顾问都行。如果是"既会写代码又能搞定人和事"的混合人格,转管理或者做创业方向更有放大效应。要警告一个常见误区——很多人转管理不是因为想转,是因为觉得"不转就老了"——这种被动转管理通常做得不好,因为没有真心想做管理的人很难做好管理。诚实问自己一句:你是真的想带团队,还是只是想逃离写代码的焦虑? ## 我35岁但过去几年没积累过架构经验怎么办 这是最难的一种情况。诚实地说,这种情况下"翻盘"的难度比有积累的人高出一档,但也不是没办法。最现实的路径是:不要硬挤"高级架构师"赛道——卷不过有积累的人;找一个"工程+你已经熟悉的非技术领域"的交叉位置(比如工程+教育、工程+财税、工程+某个行业流程)——用已经熟悉的领域知识做护城河弥补架构经验的缺失;用1到2年时间集中突破一个具体的中等复杂度技术领域(比如数据工程、安全审计、性能优化),做出可量化的case;适当下调薪资预期1到2年,换取进入有真实复杂度环境的机会。这条路不轻松但走得通。 ## 每天用AI写代码会让我的代码能力退化吗 会,但可控。退化的具体表现:①基础语法逐渐生疏,需要查文档的频率升高;②对底层细节(指针、内存、并发原语)的直觉变差;③解bug时的第一反应是问AI而不是自己想。这些都不是不可逆,关键是建立"反退化练习"——每周保留2到4小时纯手写代码不开AI、每月做1次没有AI辅助的技术深度学习(看一本经典书或者啃一个开源项目源码)、每季度做1次"完全靠自己"的小项目。这些反退化练习就像运动员的核心训练,平时看起来没用,关键时刻保你不崩盘。 ## 团队里35岁老人和25岁年轻人怎么分工 最好的分工不是"老人做架构年轻人写代码",而是"老人做决策和验证年轻人做执行和探索"。具体分两层:决策层——老人主导技术选型、架构决策、code review、需求评审;执行层——年轻人带AI完成具体功能开发、跑测试、做日常维护。这样年轻人保持学习曲线和动手能力,老人发挥判断力和经验,AI承担产能负载。三方分工的关键是老人不能完全脱离代码——脱离了就会被架空,必须保持"能上能下"的能力。差的团队是老人完全脱离代码只画架构图、年轻人苦哈哈写代码不被赋权——这种团队往往老人逐渐失去话语权,年轻人因为没有学习机会而流失。 ## 自由职业是中年程序员的好出路吗 看情况。自由职业最大的优势是直接把判断力定价——不再受公司薪资体系约束。AI编程时代这条路的可行性比5年前高很多。但要诚实承认它的代价:①现金流不稳定,前6到12个月通常很挣扎;②获客是大多数工程师不擅长的事,要么自己学要么找partner;③社保、税务、合同、客户管理这些非技术的事会吃掉你30%的时间;④没有同事,长期会有孤独感和判断力孤立感。适合自由职业的人特征:现金流储备能撑12个月、有2到3个稳定的初始客户线索、愿意主动学销售和沟通、能在没有外部督促下保持自律。如果这4条只满足1到2条,先不要急着辞职,可以从兼职接单开始。 ## 权威参考资料 ## Vibe Coding重塑SEO工作流:自养工具的杠杆与10步实操 - URL:https://zhangwenbao.com/vibe-coding-seo-competitive-advantage.html - 分类:AI编程与工具链 - 发布:2026-05-12 | 更新:2026-05-18 - 摘要:会vibe coding的SEO正在拉开差距。本文讲清它压缩的是想法到原型的延迟而非编程门槛,界定一次性分析与生产系统的边界,拆解爬虫不限速、schema断实体图、密钥暴露等冷门坑,并给可持续使用的纪律。 - 关键词:SEO自动化,SEO工具,Vibe Coding > **TLDR**:摘要:vibe coding给SEO团队的真正优势不是省了程序员,是把一个想法变成能跑的工具的延迟,从几周排期压到几小时——SEO的瓶颈从来不是没点子,是点子排不进开发队列。会用它的SEO能自己做掉GSC大文件处理、关键词聚类、日志爬虫分析、批量schema、内链图诊断这类一次性和内部活,把真工程师留给模板和基础设施。但它有明确的雷区:生成的爬虫默认不限速会打挂站、schema常漏实体连接、API密钥可能被写进前端,而且三个月后没人敢动那段代码。把它用在原型和一次性分析上是杠杆,拿它建会改信息架构的生产系统就是技术债工厂。 > 摘要:vibe coding给SEO团队的真正优势不是省了程序员,是把一个想法变成能跑的工具的延迟,从几周排期压到几小时——SEO的瓶颈从来不是没点子,是点子排不进开发队列。会用它的SEO能自己做掉GSC大文件处理、关键词聚类、日志爬虫分析、批量schema、内链图诊断这类一次性和内部活,把真工程师留给模板和基础设施。但它有明确的雷区:生成的爬虫默认不限速会打挂站、schema常漏实体连接、API密钥可能被写进前端,而且三个月后没人敢动那段代码。把它用在原型和一次性分析上是杠杆,拿它建会改信息架构的生产系统就是技术债工厂。 上个月保哥帮一个北美家居DTC客户排查内链结构,需要把GSC里近半年三十多万行的查询数据,和Screaming Frog (https://www.screamingfrog.co.uk/seo-spider/)导出的两万个URL做关联,捞出那些"高展现、低点击、却没有任何内链指向"的页面——这种页面是流量潜力被自己埋掉的重灾区。这活搁以前只有两条路:要么求客户那边的工程师排期,回复通常是"下个迭代看看",约等于两周后;要么自己在Excel里手动炼狱,三十万行还没打开表格就卡死了。那天用Cursor (https://www.cursor.com/)把关联逻辑、阈值、输出格式描述了一遍,四十分钟出了个能跑的脚本,当天就拿到了那批被内链遗忘的高潜力页清单,客户当周就开始改。这就是vibe coding对SEO最直接、也最容易被讲浅的改变——它动的根本不是"SEO会不会写代码",是"想法到结果之间那段要命的排期"。 ## vibe coding给SEO的,到底是什么优势? 先把优势的本质讲准,否则很容易把它理解成"SEO现在也能写代码了"这种浅层结论,然后用错地方。vibe coding就是用自然语言向AI编码工具(Cursor、Claude (https://docs.claude.com/en/docs/claude-code/overview) Code、Replit、v0这一类)描述你要什么,它把代码写出来,你跑、看、再用自然语言迭代。它对SEO真正的杠杆,在于一句话:把"想法→可用原型"之间的延迟,从周和月的量级,压到小时的量级。 这件事为什么是分水岭,得回到这个行当一个憋了十几年的老痛点:SEO的瓶颈从来不是没想法。随便一个干了几年的SEO,脑子里常年存着十几个"要是有个小工具能批量看XX、能自动比对YY就好了"的念头。这些念头九成九都死在同一个地方——它需要写代码,而在任何一个有产品线的公司里,一个内部SEO小工具的开发优先级,大概排在第八百位,永远被排在收入功能后面。结果就是想法烂在脑子里,或者用人肉硬扛,扛到没人愿意再提需求。 这里值得把"延迟压缩"这件事再算笔账,因为它的复利效应被严重低估了。一个想法从产生到验证,传统路径的延迟主要不在写代码本身,在三个环节:说服别人这值得做、排进队列等资源、来回沟通需求。这三段加起来,一个内部工具想法的平均"想到到验证"延迟,据实际观察通常是四到八周,而且大部分想法根本走不到验证就死在第一段。vibe coding几乎把这三段全砍掉了——你不需要说服任何人,不需要排队,需求就在你自己脑子里不用传递。延迟从周级压到小时级,表面是快了几十倍,实际影响是质变:当验证成本低到几小时,你会愿意去试那些"大概率不成、但万一成了很值"的想法,而这类高风险高回报的想法,恰恰是真正拉开差距的来源。延迟高的时候,你只敢把宝贵的开发资源压在"看起来很稳"的想法上,而看起来很稳的想法,通常回报也平庸。 vibe coding把这条死亡链路从中间斩断了:验证一个想法,不再需要先说服工程团队相信它值得做、不再需要排进迭代、不再需要等。SEO自己几个小时就能做出一个能验证假设的原型,验证成立再谈下一步。整个"想到、验证、落地"的循环,从以季度计,直接压缩到以天计。所以会用和不会用这件事拉开的差距,根本不在技术高低,在迭代速度——会用的人一周能真刀真枪试五个想法、砍掉四个、留一个继续打磨;不会用的人一个季度才推动得了一个想法进开发,还不一定排得上。一年下来,前者试过两百个想法,后者试过四个,复利差距大到没法追。 这里要提醒一个反向的认知误区,免得读者从一个极端滑到另一个极端:迭代速度快,不等于做的东西就一定对。vibe coding降低的是"试错的成本",不是"判断的门槛"——它让你能快速做出一个东西,但那个东西是不是解决了真问题、那个分析结论可不可信,依然完全取决于你的SEO判断力和验证习惯。一个判断力差的人用了vibe coding,只是从"慢慢地做错事"变成"飞快地做错一堆事",还误以为自己很高产。所以这件事真正放大的,是判断力本身:判断力强的人,迭代速度的杠杆让他的优势指数级放大;判断力弱的人,同一个杠杆让他的错误也指数级放大。工具是中性的,它只负责放大,不负责纠偏。 ## 哪些SEO活适合用vibe coding,哪些碰都别碰? 这是用好它的第一道、也是最重要的一道分界线,绝大多数翻车都源于这条线没划清:没分清哪些活能vibe、哪些活一旦vibe了就是给自己埋雷。判断标准其实可以精确到一句话——看这段代码万一出错,后果是"可回滚的一次性损失",还是"会沿着信息架构扩散开的系统性损失"。 适合vibe coding | 为什么安全 | 绝对别用vibe coding | 为什么危险 | 一次性数据处理(GSC大文件、日志解析) | 跑完即弃,错了重跑一遍,产出不进生产 | 站点生产模板(URL结构、渲染策略) | canonical、hreflang、内链、sitemap、语义HTML、渲染方式是涟漪型决策,事后改要重构路由甚至重做整个信息架构 | 内部分析工具(内链图、关键词聚类) | 产出是给人看的中间结果,人会复核再决定 | 会批量改信息架构的脚本 | 一次写错全站受影响,回滚成本极高,有时根本回滚不了 | 想法验证原型 | 目的是尽快证伪,本来就不追求工程质量 | 面向用户的高并发功能 | 性能、安全、边界没人兜底,出事直接在用户侧爆 | 取数脚本(SERP、搜索量、API拉取) | 输出是一份数据,不是线上行为 | 直接写生产库的自动化批改 | 静默失败时无声破坏数据,等发现时已经晚了好几周 | 为什么生产模板这一类绝对不能vibe,值得把机制讲透,否则总有人觉得"我小心点不就行了"。问题不在于你够不够小心,在于这类决策是涟漪型的:canonical指向哪、hreflang怎么配对、内链怎么分布、sitemap怎么分组、用什么渲染策略、HTML语义结构怎么搭——这六样里任意一样,一旦定下来就会沿着所有页面模板扩散,后面每加一个页面都在复用这个决策。等你三个月后发现当初vibe出来的渲染策略让关键内容进不了首屏,改它就不是改一个文件,是回头重构路由、重写组件、有时甚至要把整个信息架构推倒重来,代价是当初"省下"那点时间的几十倍。vibe coding的代码有个隐蔽特性:它解决你描述的那个点解决得很快,但它不会主动替你考虑这个点和整个架构其余部分的耦合,而生产模板恰恰是耦合最深的地方。所以这条线不是"小心就能跨",是"结构上就不该跨"。 一句话把这条线钉死:vibe coding适合"精度不致命、可回滚、不进生产"的活,绝不适合"一处错全站塌、且事后极难补救"的活。开头那个家居客户的内链关联分析,为什么敢放心vibe?因为它产出的就是一张清单,交给人看、人来决定改哪些,脚本本身从头到尾不碰线上一个字节。如果当时图省事,让脚本"分析完顺手把建议的内链直接写进生产库",那就是把一次性分析的便利,押在了系统性损失的风险敞口上——这两件事的风险根本不在一个量级,省下的那点时间不够赔的。 ## 一个SEO能在几天里vibe出哪些真有用的工具? 讲点具体的,空谈优势没意义。下面这些都是SEO日常真会反复用到、用vibe coding几小时到一两天就能出可用版本、而且都稳稳落在上面那张表安全区里的活。 处理大到Excel直接打不开的导出。GSC十六个月的完整数据、几十万行的Screaming Frog爬取、上百万行的服务器访问日志——这些用表格工具是灾难,但把逻辑描述清楚后,一个脚本几十秒跑完。最高频的用法是从原始日志里把Googlebot的真实抓取行为筛出来:哪些URL被高频抓取却没带来任何流量(抓取预算被浪费)、哪些重要页好几周没被抓过一次(收录风险)——这是任何第三方工具都给不全的一手数据,因为它来自你自己的日志。 把几千个关键词聚类并映射到页面。手工分词、分意图,几千个词能分到人崩溃。用向量化加聚类,几千个词自动分成主题簇,再算每个簇和现有页面的主题距离,直接给你两张清单:哪些簇没有任何对应页面(实打实的内容缺口)、哪两个页面在抢同一个簇(自我竞争,互相拉低排名)。 内链图诊断。把全站链接关系建成一张有向图,自动跑出孤岛页、内链权重的畸形分布、锚文本过度集中在哪几个词。再进一步,用页面向量算两两之间的主题相似度,给出"这两个页面高度相关却没有互链"的具体建议——这正是结构化内链该补的位置,而怎么用结构化数据把这类相关关系固化到页面里、让它对SEO真正生效,见用SignificantLink和RelatedLink结构化数据提升内链 (https://zhangwenbao.com/significantlink-relatedlink-schema-internal-linking.html)。 批量生成并注入schema、揪出近重复内容簇。按页面类型批量产出对应的结构化数据、通过接口灰度铺到多页;用产品描述的向量相似度做聚类,把"换了个名字其实是同一段"的近重复簇揪出来——电商站尤其需要这个,这种簇是稀释主题、内部互相抢排名的隐形杀手,人工一个一个看根本看不过来。再补两个实际用得最顺手、却很少被列进"vibe coding用例"的活。一个是"把多个数据源对账成一张可信底表":GSC的查询、爬虫的页面清单、CMS导出的内容元数据、第三方工具的关键词数据,这几份东西字段对不齐、口径不一致是常态,人工对账极其耗时且容易错。让脚本按URL或关键词做主键关联,顺手标出"GSC有但站点已删""爬到但GSC零展现"这类对不上的异常,一张干净底表出来,后面所有分析都站在可信地基上——这活产出是给人看的表,绝对安全,但价值极高,因为脏数据带来的错误判断,比没数据还危险。另一个是"一次性的批量诊断":比如全站标题和H1是否一致、是否有大批页面缺meta description、结构化数据是否成片缺失,这种"盘一次现状"的活,vibe一个脚本半小时跑完,比逐页人工抽查全面得多,而且因为只读不写,零风险。 这些之所以又快又安全,是因为它们的产出要么是给人复核的清单,要么是可灰度、可回滚的结构化数据,出了错不会沿着信息架构扩散。 ## 为什么"几天造个工具"反而常常埋雷? 说完糖,得说刀,而且这把刀比大多数人以为的钝刀要锋利。vibe coding最危险的地方,不是它写不出能跑的代码——它几乎总能写出"看起来能跑"的代码——而是坑恰好埋在你不会去看的地方。下面这几个,是保哥自己踩过和帮客户收过的,基本都是教程不会讲的: - 生成的爬虫默认不带速率限制。你说"帮我抓这批URL的标题和H1",模型给的代码十有八九没有任何速率控制、没有并发上限、没有失败退避重试。拿去抓客户自己的站,瞬时并发能把一个没做好防护的中小站直接打到大面积5xx,你成了自己客户的DDoS源;拿去抓别人的站,IP当场被对方封掉,后面什么都干不了。这几行防护代码模型不会主动加,你不在提示里点名要,它就当你不需要。 - 生成的schema能过测试,但实体图是断的。模型给的结构化数据,字段填得齐,Rich Results Test也亮绿灯,但它经常漏掉@id以及实体之间的引用关系。结果是:单个页面的schema看起来"完全正确",整站的实体图却是一盘互不相连的散沙,你拿不到知识图谱本该累积的那部分实体权威——而且这个问题不会报错,测试工具也不报,它只是悄悄让你少拿分。 - API密钥被写死,甚至暴露在前端。让它做个调SERP接口的小工具,它会非常自然地把key明文硬编码进代码里,如果是个带页面的工具,还可能直接写在前端能看到的地方。你高高兴兴把这个好用的小工具分享给同事或者发到群里,key也就跟着一起泄出去了,等收到接口异常计费才发现。 - 相似度内链工具把模板样板文字也算进了相似度。用余弦相似度找"该互链的相关页",如果没有显式地先把导航、页脚、侧边栏、CTA这些全站重复的样板文字剔除掉,算出来的相似度会被这些样板严重拉高,最后给你的是一堆"全站页面互相都很相似、应该到处互链"的废建议。这个坑极其隐蔽,因为工具不报错,它只是一本正经地给了你错的答案,你不验证根本看不出来。 还有两个更阴的坑,踩过的人才知道有多疼。一个是时区和编码:让它处理GSC导出和日志,它默认按运行环境的本地时区和编码解析,你在不同机器上跑同一个脚本,得出的"某天抓取量"可能整体错位一天,或者中文URL被解析成乱码导致整批关联失败——而它不会报错,只会安静地给你一份错位的结果。另一个是分页和限额:调外部接口拿数据,模型给的代码常常只取了第一页就以为拿全了,GSC接口默认单次返回有上限,SERP接口也有每页条数限制,它不主动做翻页聚合,你以为分析的是全量,其实只分析了前一千行,结论方向都可能是反的。这两个坑和前面四个一样,共同特征是"不报错的错"——代码跑完了,绿的,有输出,但输出是错的,而且错得很有迷惑性。 这几个坑有一个共性:AI乐于帮你写功能,也同样乐于在你看不见的地方省掉防护、断掉连接、给出看似合理实则错误的结果,而且全程不报错、不提醒。所以vibe出来的任何东西,都必须当成"一个很快但不靠谱的实习生交上来的初稿"来逐项验,绝不能当成"它能跑就说明它对"。怎么从一开始就在提示和流程里把这些坑显式规避掉、把vibe这件事做规范,有一篇实操单独讲过,见用Cursor开发SEO工具的Vibe Coding实战 (https://zhangwenbao.com/vibe-coding-seo-tool-tutorial.html)。 ## vibe-coded工具三个月后为什么没人敢动? 比"当下写错"更深、更要命的问题是"维护债"。一个vibe出来的工具,上线那天跑得好好的,三个月后会变成全团队没人敢碰的黑箱——这几乎是必然结局,除非你从第一天就把它当工程项目对待。 原因有两层,第二层尤其致命。第一层是隐含假设没人记得。vibe coding的时候,你和模型之间存在一大堆没被写下来的默契:这个字段一定有值、那个接口返回结构永远固定、这批URL一定是某个格式、这个目录下文件一定按时间命名。三个月后,这些假设没有任何人记得了——包括你重新去问的那个AI自己也不记得,因为当初的对话上下文早没了。这时候改一行就崩,没人知道为什么崩,也没人敢动,工具就这么僵在那。这里有个特别值得记的反直觉点:vibe出来的代码,可读性往往比人写的还差,原因恰恰是它"太能写了"。人写代码受限于自己的理解,会本能地把逻辑拆到自己能看懂;模型不受这个限制,它能一口气生成一大段能跑但层层嵌套、隐含一堆未言明前提的代码,你当时只验证了"它跑通了"就放过,没人真正逐行读懂过。三个月后要改,你面对的不是一段你写过、只是忘了细节的代码,而是一段从来没有任何人真正理解过的代码——这比维护遗留代码还难,遗留代码至少当初有人懂过。务实的纪律是:任何打算留超过一次性使用的vibe产物,必须有人逐段读懂并写下它的关键假设,读不懂的部分要么让它重新解释到你懂、要么不许它留下来。 第二层是静默失败,这一层能造成真实损失。设想一个每天自动跑的内链建议脚本:某一天,它依赖的SERP接口悄悄改了返回字段名,脚本拿到的是空数据。关键在于——它不报错。它老老实实地按照"空"继续往下算,然后一本正经地输出一份"建议大批量删除现有内链"的结果,如果这个脚本还被设成自动执行,它就真的把内链删了,而你要等到两三周后流量出现异常,才反推回来发现是它干的。没有告警的自动化,根本不是自动化,是一颗设了引信的定时炸弹。 插一个真实场景,说明它有多隐蔽。一个跑了两个多月、看起来岁月静好的关键词聚类脚本,产出一直被当成内容规划的依据。直到有人偶然交叉核对,才发现它依赖的向量化接口在某次升级后,对超过一定长度的输入会静默截断而不报错——长一点的关键词只拿前半段去算相似度,聚类结果早已系统性偏了快两个月,基于它做的好几轮内容规划全建在沙子上。要害不在"接口会变",接口当然会变;要害在于,如果当初脚本在"输入被截断"这种边界上有一行断言、出问题会主动喊一声,它第一天就暴露了,而不是错满两个月才被偶然撞见。 静默失败之所以是最危险的一类,是因为它违反了人对自动化的根本预期:人会默认"没报警就是没事"。一个会崩、会报错、会发红色告警的脚本,反而是安全的,因为它出问题时你立刻知道、立刻能停;真正吃人的是那种出了问题还一脸正常继续跑、还在持续产出"看起来合理"的错误结果的脚本,等你从下游某个反常指标反推回来,它可能已经安静地错了一个月,污染了一个月的决策。所以判断一个vibe产物能不能转长期跑,核心不是看它功能对不对,是看它"错的时候会不会喊"——会喊的,补补还能用;不会喊的,功能再全也是定时炸弹,而且这颗炸弹的引信长度等于"你多久才会偶然发现它错了"。这就是为什么对长期跑的东西,告警不是附加功能,是它的本体:一个不会在出错时主动喊停并通知你的自动化,本质上不具备"可被信任地无人值守"这个属性。 这就是为什么"几天能vibe出一个工具"是优势,而"把vibe出来的工具当生产系统裸跑"是灾难,两者只隔着一层工程纪律。一个要长期跑的SEO自动化,要的从来不是"能跑",是这么几样硬东西:幂等且可重放(同样的输入跑两次结果必须一致、且任何一步都能回滚)、关键步骤有断言(数据为空、行数比上次骤降、格式不符就主动报错停下,而不是带病继续算)、告警是它的核心功能而不是事后补丁、还要有成本闸防止某天接口异常把调用量和账单打爆。这套工程纪律,和"快速vibe一个原型"完全是两种模式,什么时候必须从前一种切到后一种、切的时候具体要补哪些东西,有一篇按软件工程视角系统拆过,见SEO自动化为什么总烂尾:按软件工程做才跑得久 (https://zhangwenbao.com/seo-automation-engineering-ci-maintenance-architecture.html)。 ## 信息怎么被"看见",为什么是被低估的SEO优势? 前面都在讲工具,这一层讲的是更值钱、也更少人意识到的一块优势:信息被视觉化呈现的方式本身,就是一种SEO竞争力。一个能让用户一眼就拿到答案、还能自己动手筛的页面或组件——一个交互式的对比、一个可按条件筛选的表、一个把复杂决策拆成三步选择的小工具——它命中的是"格式精确契合用户意图"这一层信号,而这层信号在AI和现代搜索里被放大了,不是可有可无的装饰。 过去这种"用交互界面即刻回答意图"的东西很贵:要产品设计、要前端开发、要排进迭代,只有大站做得起,中小站只能用一大段文字硬扛同一个意图,体验天然差一截,行为信号也跟着差。vibe coding做的事,是把这种东西的实现成本直接砍掉了一个数量级——一个SEO自己花一两天,就能给一个高意图页面做出一个真能帮用户做决定的交互组件,而不是再写八百字去解释一件本该一目了然的事。这不是锦上添花,它直接影响这个页面在SERP里的格式契合度、用户停留与交互这些真实行为信号。举个具体到能照做的例子:一个高意图的"X怎么选"页面,传统做法是写三千字把各种维度讲清楚,用户读完还得自己在脑子里把信息组装成一个决定。换个做法,用一两天vibe一个轻量的交互组件——用户勾几个关键约束(预算、场景、硬性要求),组件即时给出一个收窄到两三个选项的建议加理由。同一个意图,后者的体验、停留、完成度全面碾压前者,而且它天然产出可被结构化的内容(每个选项及其适配条件本身就是高质量、可被AI抽取的单元)。注意这类组件之所以适合vibe coding,是因为它落在前面那张表的安全区:它是一个相对独立的前端交互件,不改信息架构、不写生产库、出错也只影响这一个页面可灰度回滚——它恰好是"高价值且低风险"的那种活,这正是vibe coding的最佳着力点。能识别出"哪些SEO价值点恰好落在vibe coding的安全区里",这个判断力本身就是优势的一部分。 把"信息怎么呈现"从"那是设计和前端的事"重新理解成"那是SEO的事",再用vibe coding把它的实现成本打下来——这是目前真正能拉开差距、但绝大多数团队还没反应过来的一块。先动起来的人,吃的是认知差加成本差的双重红利。 ## SEO团队该怎么把vibe coding用成可持续优势,而不是技术债工厂? 把前面所有东西收成一套能直接执行的纪律。核心就一句话,记住它比记住任何工具名都重要:原型和生产是两种东西,绝不能让原型偷偷长成生产。几乎所有vibe coding酿成的技术债,根子都是这一句没守住。 - 物理隔离原型与生产。vibe出来的东西默认身份就是"一次性、给人复核",不允许它直接写线上库、不允许它无人值守裸跑、不允许它接生产流量。它要想转正常驻,必须先走完下面的规范化流程,没有例外。 - 每个vibe产物过一张固定的验证清单。不管多急,固定问这四件事:有没有速率控制和失败退避?有没有把密钥写死或暴露在能被看到的地方?关键数据为空或异常时,它是报错停下还是带病继续?输出是否已经把模板样板这类已知噪声显式剔除?这四项里任意一项不过,这个产物的结果就不准用于任何会影响线上的决策。 - 明确设一条"该交给真工程师"的红线。当一个原型满足以下任意一条——需要无人值守长期跑、需要写生产数据、会影响信息架构、要面向用户——它就已经长过了"good enough"这个尺寸,必须由工程按幂等、断言、告警、成本闸正经重写一遍,而不是继续在那段没人看得懂的原型代码上打补丁续命。 - 成功的原型要被规范化,不是直接上线。原型证明了"这个想法确实有价值"之后,正确动作是把它当成一份需求文档交付出去重写,而不是把那段验证用的vibe代码塞进crontab就不管了。要时刻分清:原型的价值是"它验证了这个想法值得做",从来不是"这段代码可以这样用一辈子"。 - 守住任务边界。哪些SEO任务值得自动化、自动化到什么程度有明确的投入产出边界,不是所有"能自动化"的都"该自动化",有些活人工反而更快更稳,这条边界单独梳过,见2026年SEO自动化的10个任务边界与工具栈 (https://zhangwenbao.com/seo-automation-tasks-tools-workflows-2026.html)。 这套纪律里还有一个最容易被跳过、却最该坚持的动作:给每个值得留下来的vibe产物,写一个"它能做什么、不能做什么、依赖哪些假设、什么情况下结果不可信"的一页纸说明。听起来像走形式,但它解决的正是前面所有问题的总根源——隐含假设没人记得。这一页纸花不了十分钟,却是三个月后那个工具能不能被信任、能不能被接手的唯一凭据。判断一个团队是不是真把vibe coding用成了优势,有个很准的外部信号:看他们留下来的工具,有没有这一页纸。没有的,工具再多也只是一堆迟早集中爆雷的债;有的,才是真的把试错速度沉淀成了组织能力。 保哥自己这两年的用法其实很简单,一句话:把vibe coding当成一台"超级快的草稿机"。一切探索性的、一次性的、给自己看的活,全用它,迭代飞快,错了就重来,不心疼;但凡某个原型被验证"这个值得长期跑下去",立刻停手,把它当一个正式的工程项目从头重做,该上的幂等、断言、告警、成本闸一个不能少。靠这套节奏,这两年给客户做掉了一大堆原本要排期好几个月的分析和内部工具,没有一个变成后来没人敢碰的黑箱。说到底,vibe coding是不是你的优势,根本不取决于你会不会让AI写代码——这个门槛已经低到人人都会——只取决于你分不分得清哪些该快、哪些必须慢。分得清的人,它是杠杆;分不清的人,它就是一座以肉眼可见速度堆高的技术债工厂。 ## 常见问题解答 ## 不懂编程的SEO能靠vibe coding做出可用工具吗? 能做出一次性分析和内部工具,这正是它的价值所在。但你需要会判断输出对不对、会问关键问题(有没有限速、密钥是否暴露、空数据是否报错)。不懂编程不影响用它做草稿,但不会验证就直接信结果,迟早出事。 ## vibe coding做的SEO工具能直接上生产吗? 不能直接上。原型证明想法有价值后,要当需求交给工程按幂等可重放、关键步骤断言、告警、成本闸重写。把没人看得懂的vibe代码塞进定时任务裸跑,是最典型的技术债来源,迟早静默失败无声破坏数据。 ## 哪些SEO任务最适合用vibe coding快速做? 精度不致命、可回滚、不进生产的活:GSC大文件和日志解析、关键词聚类映射、内链图与孤岛页诊断、近重复内容簇检测、取数脚本。共性是产出给人复核或可灰度回滚,出错只是一次性损失不会沿信息架构扩散。 ## vibe coding生成的代码最常见的隐患有哪些? 四个高频坑:爬虫默认不限速会打挂站或被封、schema过测试但漏@id导致实体图断裂、API密钥被硬编码甚至暴露前端、相似度内链工具没剔除模板样板算出全站互链废建议。模型不主动加防护,你不问就没有。 ## 为什么vibe出来的工具几个月后就没人敢改? 两层原因:一是vibe时大量隐含假设没写下来,几个月后没人(包括AI)记得,改一行就崩;二是静默失败,依赖的API改字段返回空,脚本不报错继续算出错误结果,很久才被发现。没有告警的自动化是定时炸弹。 ## vibe coding会取代SEO团队里的开发吗? 不会,它改变分工而非取代。SEO用它做探索、一次性和内部工具,把开发资源从这些琐碎需求里解放出来,专注模板、基础设施、可扩展性这些真工程。会改信息架构、面客高并发、需长期无人值守的部分,仍必须工程师按工程纪律来。 ## 权威参考资料 ## AI团队Token失控:月费2999的聚合服务到底值不值 - URL:https://zhangwenbao.com/ai-team-token-rate-limit-cost-control-aggregation-review.html - 分类:AI编程与工具链 - 发布:2026-05-09 | 更新:2026-06-01 - 摘要:聚合服务真的能救Token失控吗?保哥用一年zhangwenbao项目实测后给出4层成本控制优先级、5家主流聚合横评、DIY路由层ROI拆解与7个常见浪费陷阱。文章含独立性声明。 - 关键词:LLM,Claude Code,AI编程,API成本 > **TLDR**:摘要:AI团队Token失控,月费2999的聚合服务真能救吗?本文用一年实测给出答案——未赚钱先烧Token的根因不在Token本身。文中给四层成本控制优先级(先做Prompt再考虑聚合)、五家主流聚合服务横评、DIY模型路由层的ROI拆解和七个常见浪费陷阱,帮你把钱花在真正降本的地方。 > 摘要:AI团队Token失控,月费2999的聚合服务真能救吗?本文用一年实测给出答案——未赚钱先烧Token的根因不在Token本身。文中给四层成本控制优先级(先做Prompt再考虑聚合)、五家主流聚合服务横评、DIY模型路由层的ROI拆解和七个常见浪费陷阱,帮你把钱花在真正降本的地方。 独立性声明:本文不收任何AI聚合服务厂商的推广费,下面提到的所有产品保哥都没拿过返佣,列举只是为了帮读者建立"市场全景"的判断坐标系。这一行声明很重要,请读者继续读时心里有数。 过去一年保哥运营zhangwenbao.com的内容批量重写流程,每天平均用Claude Sonnet和Haiku跑大量真实任务,每月Token账单从最早期的失控到现在的可预算,前后压过一遍——一手数据足够把"AI团队烧Token"这件事讲得更具体一点。最近圈里很多朋友讨论AI聚合服务:月烧8000元接口费、限流卡进度、多家账单管不过来,于是去找Token Plan、火山方舟、302.AI这类聚合方案救场。这件事可以看得再深一层——很多团队的Token问题,不是"接入方式"的问题,是更上游的产品和工程问题。聚合服务能救一部分,但救错地方就是花钱买"看起来在解决"。 ## "未赚钱先烧Token"的真正根因不在Token "AI团队还没赚钱就先被Token拖死"这个说法真实存在,但归因常常归错了。绝大多数团队Token失控的根因不在"用了哪家厂商",而在更上游的3件事: 根因 | 具体表现 | 解法属于哪一层 | 产品形态没找到PMF就重度调用 | 试错阶段就把高Token消耗的功能上线了 | 产品层(不是接入层) | Prompt写得粗糙 | 同任务比优化后多3到10倍Token | 工程层(不是接入层) | 调用频率失控 | 后端循环没设限流和去重,一次操作AI被调几十次 | 工程层(不是接入层) | zhangwenbao的GEO批量重写流程,初期版本一个月Token账单接近1800元,后来发现里面有约40%是无效消耗——同一个prompt模板重复发送、prompt里塞了不必要的上下文、调用结果没缓存。把这3件事修了之后,同样产能的月账单降到了900元上下,砍掉一半。这还没动模型层,只动了工程层。 如果你团队月烧8000元Token就着急上聚合服务,请先停下来回答一个问题:这8000元里有多少是"业务真需要"的、多少是"工程没做好"的。在工程层没收紧之前换聚合服务,本质是用月费2999换一份"账单看起来更整齐"的体验——成本结构没改变,只是换了张账单皮。 更扎心的判断是:如果你团队的AI业务还没有清晰的客单价模型——也就是不知道每一次AI调用对应能赚回多少——那"月烧多少Token"这个数字本身就是失控的代名词。聚合服务再便宜也救不了一个商业模式没跑通的应用。 ## AI团队Token失控的5个真实场景 跟身边10多个AI项目的朋友聊过Token失控的具体表现,归纳下来基本是这5类场景反复出现: 场景 | 典型表现 | 修复手段 | 长上下文综合症 | Prompt里塞10万字产品文档/几千行历史对话/整个DB schema,80%Token浪费在重复传输 | 上下文压缩 + prompt cache(不是换厂商) | 循环调用爆炸 | "对每个用户的每条订单调用AI",10万订单=10万次调用;失败重试不收敛会引爆几十万次 | 调用层工程治理:并发上限+重试上限+去重 | 粗放Prompt | 同任务不同写法Token差3到10倍。某客服AI项目从2200 token压到380 token | Prompt工程——运营也能做,不用专门工程师 | 模型选错档 | 简单分类用Sonnet 4或GPT-4 Turbo——杀鸡用牛刀,成本差5到20倍 | 任务分级 + 模型路由 | 多账户分散 | 团队5人各开Claude/OpenAI/文心/智谱/DeepSeek账户,5份充值5份账单 | 这是聚合服务最擅长解决的——但前提是Token绝对值够大 | 识别出自己属于哪一类比"选哪家聚合服务"重要得多。前4类聚合服务都救不了,第5类聚合服务才是直接有效的。 ## 限流的真技术机制:换厂商解不了根问题 "被限流"很多人理解得很粗——以为限流就是"调用次数太多"。其实限流分得很细,常见有4维: 限流维度 | 定义 | 常见受影响业务 | RPM | 每分钟请求数上限 | 大批量分类、高频小请求 | TPM | 每分钟Token吞吐上限 | 内容批处理、长文章生成 | 并发限流 | 同时进行中的请求数 | 客服多用户并发应答 | 组织级 | 整个组织/账户当日/月度配额 | 超过就当月停服 | 不同业务被卡在不同维度上。换聚合服务只解决"组织级配额上限"——也就是组织级限流——但前3维基本不解。 真正解限流的工程手段有这几条: - 指数退避重试——被限流后等2秒、4秒、8秒再重试,避免雪崩 - 多Key轮询——同一厂商开多个API Key负载均衡,配额翻倍 - 多厂商fallback——主力厂商限流时自动切到备用厂商(这是聚合服务的核心价值之一) - 请求合并——把多个小请求合并成一个大请求,减少RPM但增加单次TPM - 异步队列+削峰——前端用户请求进队列,后端按Token容量节奏消费,把流量曲线抹平 - 缓存层——结果级缓存让重复请求不进AI 这6条里聚合服务直接解决的只有第3条"多厂商fallback"。如果你的限流痛点不是这一条,换聚合服务收效非常有限。 zhangwenbao批量重写时被Claude官方限流过几次,最后通过2个动作解决——开多个API Key做轮询、把单批次任务拆成更小粒度并加2秒延迟。后续3个月再没被限流过,没换厂商也没上聚合服务。 ## 成本控制4层优先级:先做Prompt再考虑聚合 这一节是文章主轴——AI团队成本控制不是"找便宜厂商"那么浅。可执行的成本控制动作按4层优先级排,建议按这个顺序逐层做: 优先级 | 动作 | 工作量 | 典型ROI | 第一层 | Prompt工程压缩(指令简化/few-shot缩减/结构化输入/砍礼貌用语/迁移到system prompt) | 1-3天 | 30%-70% | 第二层 | 缓存策略(Anthropic prompt caching / OpenAI automatic caching / Redis应用层缓存) | 3-5天 | 命中后约30%-40%再降 | 第三层 | 模型分级和路由(Haiku/DeepSeek处理简单任务,Sonnet处理中等,Opus仅复杂任务) | 1周 | 平均单价降5-10倍 | 第四层 | 聚合服务或DIY路由层(多家厂商管理/限流fallback/账单统一) | 月费或1-2周工程 | 解结构性问题 | zhangwenbao项目优化Prompt时把一个原本3200 token的复杂指令砍到了1100 token,输出质量基本不变,单这一个动作把月Token成本拉低了38%。Prompt工程能做到的范围比绝大多数人以为的大得多。 Anthropic的prompt caching (https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching)、OpenAI的automatic caching (https://platform.openai.com/docs/guides/prompt-caching)都已经能让prompt里固定的部分在5分钟到1小时内复用,命中后的成本只有原价的10%左右。配合Redis做应用层结果缓存(同样输入直接返回历史结果)又能砍掉一大块。zhangwenbao项目里prompt cache + Redis双层缓存命中率大约35%。具体怎么用好prompt cache取决于业务结构,Claude Code高效开发20技巧实战速查指南 (https://zhangwenbao.com/claude-code-tips.html)里把用Claude Code 1年踩过的优化点都写过一遍。 把任务按复杂度分级路由能让平均Token单价降5到10倍。GEO测试场景下用Critic评估器代替大模型评估也是同一思路,GEO测试成本砍60%:Critic评估器如何用更少预算做更好的优化 (https://zhangwenbao.com/geo-critic-model-cost-saving.html)展开过具体的部署。 前3层做完之后再考虑第4层。如果团队Token绝对值在月3000元以下,前3层就能解决80%的问题,第4层基本不用上。如果月Token超过5000元且确实需要多家厂商组合,第4层才开始有真ROI。具体的成本结构对比可以看GEO优化成本经济学:140倍成本差异下的方案选择指南 (https://zhangwenbao.com/geo-optimization-cost-autogeo-api-mini.html)里的拆分方法。 ## 国内5家主流AI聚合服务横评 这一节把当下国内可见的几家主流聚合服务排开做客观对比,每家都列优势和局限——不替任何一家背书。截至2026年5月的市场情况如下: 聚合服务 | 背景与定位 | 主要优势 | 主要局限 | 适合谁 | 七牛云Token Plan | 七牛云转型AI Infra,包月模式 | 包月预算可控,团队协作友好 | 海外模型覆盖弱;低用量不划算 | 月Token稳定在3000元以上的团队 | 火山方舟(字节) | 字节官方平台,按量计费 | 字节生态深度集成,价格便宜 | 模型选择以国产为主 | 已在字节生态内、主消费豆包的应用 | 阿里百炼 | 阿里官方一站式 | 阿里云生态高,企业级支持完善 | 主要绑通义系列,跨厂商弱 | 已用阿里云生态的中大型团队 | 302.AI | 第三方独立聚合 | 模型品种最丰富,海外覆盖好 | 稳定性略差,部分海外模型政策风险 | 需要试用多家海外模型的独立开发者或小团队 | OpenRouter (https://openrouter.ai/docs/quickstart)(海外) | 海外背景聚合平台 | 海外模型覆盖最全,价格透明 | 国内访问需稳定网络;不支持国产主流 | 海外业务为主、主消费GPT/Claude的团队 | 横评的核心结论是没有"最好"的聚合服务,只有"最适合你业务结构"的服务。判断标准三条: - 主要用国产还是海外模型 - 团队规模和月Token预算 - 是否已经绑定了某个云厂商生态 把这3个问题答清楚,选型基本就明确了。 ## 聚合服务月费2999到底什么时候值得 聚合服务普遍提供包月套餐,价格从几百到几千不等。以月费2999为基准做ROI拆解——什么情况划算、什么情况是浪费。 > 聚合服务真正提供的价值不是单一的"省钱",而是账单统一 + 密钥统一 + 限流fallback + 团队协作这4样东西的打包。每一项都有等价的非聚合替代方案——你可以自己写脚本对账、自己写路由层做fallback、自己写权限管理做配额。但这些自建方案需要工程时间(粗估10到30小时一次性投入加上每月维护几小时)。 那月费2999值不值?取决于团队的工程时间成本和Token绝对值。算一笔账: 月Token区间 | 聚合服务月费2999值不值 | 建议 | <3000元 | 不划算(月费翻倍) | 先做前3层优化 | 3000-8000元 | 持平(看是否愿把工程时间花在AI Infra) | 自己评估时间成本 | 8000-30000元 | 聚合服务核心目标客群 | 上聚合服务,收益放大 | >30000元 | 聚合服务企业版或直接和厂商谈合同 | 跳过普通包月 | 另一个隐藏维度是"现金流模式"。包月对预算敏感的早期创业团队有心理优势——知道月底要付多少而不是惊喜账单。但对成熟团队来说包月反而锁死了灵活性,按量计费可以根据业务季节性弹性调整。 说到底"月费2999值不值"不是产品问题是匹配问题——团队在那个Token绝对值的甜区、且时间成本和现金流要求都对得上,才值得。不在这3个条件交集里就是花钱买心理安慰。 ## 不上聚合的另一条路:DIY模型路由层 如果不想付月费但又确实需要"多厂商管理"这套能力,自己写一个模型路由层是完全可行的方案。AI编程时代这件事的工程量比3年前低很多——Cursor配合一个有经验的工程师,10到20小时可以搭出一个能用的版本。zhangwenbao项目就是DIY路线,关键组件如下: 组件 | 说明 | 建议工时 | 统一接口适配层 | 把各厂商API请求/响应格式统一成内部格式(LiteLLM/LangChain adapter可省工) | 10小时 | 多Key轮询+限流fallback | 每家厂商配置2-3个API Key轮询,被限流时切下一个Key或厂商 | 3-5小时 | 账单聚合+成本归因 | 记录厂商/模型/token数/成本,按业务/项目/用户归因 | 5小时 | 缓存层 | prompt cache + Redis结果缓存(prompt hash为key) | 2-3小时 | 合起来一周左右的工程时间,搭出来的东西基本能替代月费2999的聚合服务大部分功能。代价是要持续维护——AI厂商API升级、新模型接入、限流规则变化都需要跟。 诚实地说DIY路线不是免费的——一周工程时间和每月几小时维护时间也是钱,按一线工程师人天1500元算就是7500元以上的一次性投入加上每月600元维护。所以DIY对比聚合的真选择是"一次性投入加持续维护对比月度订阅",看团队现金流模型偏好哪种。zhangwenbao选DIY是因为Token业务规模和单人团队的工程能力都对得上,换一个10人团队可能聚合反而便宜。 ## 不同规模AI团队的Token策略 抛开抽象分析,按当前团队规模和Token预算给出直接的策略建议。这4档基本覆盖绝大多数读者。 团队规模 | 月Token预算 | 核心动作 | 个人开发者/副业 | <500元 | 直接用官方API + 免费额度。重点压Prompt和加缓存。聚合和DIY都overkill | 小团队(2-5人) | 500-3000元 | 开企业账户 + 简单内部记账脚本。核心动作仍是Prompt工程和缓存层。聚合还没必要 | 中型团队(5-20人) | 3000-20000元 | 聚合服务甜区。要么花月费上聚合,要么投1-2周工程时间搭DIY路由层。决策依据是团队的工程能力 | 中大型团队(>20人) | >20000元 | 聚合服务企业版 + 和厂商谈大客户合同。内部一定要有专门的AI Infra小组(1-3人) | 规模升级时不要跳级——从个人到中型不要直接跳过小团队阶段的"工程治理"步骤,否则后面会回头补课。每一档都有它的核心动作,做完再升档。 ## AI团队常见的7种Token浪费陷阱 列7个看到最高频的浪费陷阱,每个都是真实代价。 陷阱 | 问题 | 修复 | 在循环里同步调用AI | 没设并发上限和重试上限,一次错误就引爆几万次调用 | 所有循环调用必须设并发上限+最大重试+结果缓存 | 用大模型做小事 | 简单分类用Sonnet 4或GPT-4 Turbo,成本是Haiku/DeepSeek的5-20倍 | 建立任务复杂度评估,简单任务一律降档 | Prompt塞大段不用的上下文 | 整个产品文档/历史对话/数据库schema塞进每次调用,80%Token浪费 | 只传当前必需上下文,长上下文用prompt cache | 忽视输出Token的成本 | 有些场景输出Token是大头(如长文章生成),输出比输入贵2-3倍 | max_tokens严格设置,不让AI自由发挥 | 测试和开发环境没分账 | 开发同学调试触发几千次调用,账单里看不出来 | 开发/测试/生产环境用不同API Key,账单分账 | 没有错误监控 | 调用因业务变更开始返回错误,但代码里有"失败重试3次"——错误静默吃掉Token | 错误率监控+告警,错误率突破阈值就触发fallback | 把AI当主流程而不是辅助 | 本来用代码或规则引擎就能解决的事硬要用AI,成本是非AI方案的100倍以上 | 每次引入AI调用前问一句"这件事能不能用代码完成" | 这7个陷阱里前3个是Token浪费的大头,能识别并修复任意一个都能让月账单降一档。 讲到这里整套AI团队Token管理的视角应该比"选哪家聚合服务"清晰多了——成本控制是一整套流程的事,聚合服务只是其中一个层级的工具。如果还想看保哥在自己zhangwenbao项目上对类似工程化拆解的展开,Claude Skills全解析:17个官方技能深度拆解与SEO自动化实战指南 (https://zhangwenbao.com/claude-skills-guide.html)把按任务类型分配模型的思路讲得更细。 ## 常见问题解答 ## 聚合服务真的能省钱吗 不能直接省,能间接省。聚合服务自身的折扣空间不大——绝大部分聚合服务给到的"折扣价"其实是和官方价格接近的,因为他们要赚自己的差价。聚合服务真正的省钱效应在4个隐性维度:减少多账户管理时间、减少限流卡进度造成的业务损失、统一账单降低对账时间、团队配额管理减少超额风险。如果团队这4块的隐性成本之和大于聚合服务月费,那确实省钱。但是单看"Token单价比官方便宜多少"——别期待惊喜。 ## "4折模型价格"这种说法是真的还是营销噱头 多数情况是营销噱头。真实情况是:聚合服务可以拿到模型厂商的大客户折扣再分给用户,但折扣最多通常在7到8折范围。所谓"4折最低"基本是2种情况——特定冷门模型或者过期版本的清仓折扣、按某种使用条件(比如月最低用量5000元以上)才解锁的折扣,多数中小团队拿不到。如果你看到"4折最低"这种宣传,重点看附加条件,多数情况会发现你不在折扣覆盖范围内。 ## 月烧8000元Token该不该上聚合服务 该考虑但不一定要上。月8000元是聚合服务甜区的入口,但要先看成本结构。如果这8000元里大部分是"工程层粗糙"造成的(参考本文第2节5个场景),先做Prompt工程和缓存优化能把它压到4000元以下,那时候上不上聚合都不急。如果这8000元是真实业务需求带来的,且团队有多家厂商管理压力,那聚合服务确实能优化总体体验。结论:先压再考虑,不要遇到失控就上聚合。 ## DeepSeek和Claude性价比谁更高 看任务类型。DeepSeek(V3和R1系列)在中文理解、代码生成、数学推理上性价比极高,单价大约是Claude Sonnet的1/10到1/5。但在长文生成、复杂多轮对话、创造性写作上Claude Sonnet 4.6和Opus 4.7的输出质量仍然明显更好。务实做法是按任务分级路由——简单任务走DeepSeek,复杂任务走Claude。zhangwenbao项目的批量内容重写主力是Claude Sonnet(质量保证),周边任务(分类、关键词提取、链接抓取)用DeepSeek或者Haiku。这套混合分级让平均Token单价降到了主力模型的35%左右。 ## Prompt工程能压多少成本 30%到70%是合理预期。具体取决于初始Prompt有多粗糙。优化几个核心Prompt时实测的压缩比:①重写流程的主prompt从3200 token压到1100 token(65%压缩)②内容分类prompt从800 token压到180 token(77%压缩)③SEO建议prompt从2400 token压到900 token(62%压缩)。这些压缩都不损失输出质量——只是去掉了冗余说明、不必要的示例、礼貌用语。如果团队从来没认真做过Prompt工程,第一波优化大概率能拿到50%以上的压缩。这是Token成本控制ROI最高的一个动作。 ## 本地小模型fallback现实可行吗 对中小团队不太现实。本地部署Llama或Qwen的小模型听起来很美——成本就是电费——但实操层有几个隐性门槛:①需要专门的GPU服务器,单卡A100月成本5000到15000元,多卡更贵②本地小模型质量明显低于云端中型模型,多数业务场景达不到生产标准③模型更新和维护需要专门工程师④本地推理性能远低于云端,并发扛不住。这4个加起来比直接用云API贵2到5倍。本地小模型现实可行的场景是:高并发但任务很简单的场景(比如分类)、有数据隐私强约束的场景(不能调云端)、大型公司有专门的AI Infra团队。中小团队80%以上的场景,云端API直接是更便宜更稳定的选择。 ## AI应用早期怎么控制Token预算 3个核心动作。第一动作是给整个AI预算设硬上限——按月度账单设置告警和断流阈值,超过预算就切到降级路径(用更便宜模型、用规则代码替代、用缓存兜底)。第二动作是按调用路径分账——后端的每个AI调用入口打tag标记业务模块,每月看哪个模块花得最多、哪个模块产出最少。第三动作是每周做一次Token账单review——前几个月每周必看,养成"对Token成本敏感"的工程文化。这3个动作做好了,预算失控的风险能压到很低。早期最忌讳的是"AI能用就行不计成本"——这个心态3个月后必爆雷。 ## 权威参考资料 ## Claude Managed Agents是什么?官方托管智能体的真实用法与避坑 - URL:https://zhangwenbao.com/claude-managed-agents.html - 分类:AI编程与工具链 - 发布:2026-04-25 | 更新:2026-06-04 - 摘要:Claude Managed Agents是Anthropic官方的托管智能体方案,把agent循环、工具执行、沙箱容器、状态持久化打包成REST接口,让Claude在云端或自托管沙箱里自主干活、通过SSE流式回传。 - 关键词:MCP,AI智能体,Anthropic SDK > **TLDR**:摘要:Claude Managed Agents是Anthropic官方推出的“托管智能体”——你不用再自己写agent循环、自己搭沙箱、自己实现工具调用,它把这一整套运行容器(harness)打包成几个REST接口,Claude在云端安全沙箱里自主读文件、跑命令、搜网页、调MCP,结果通过SSE流式回传。它围绕Agent、Environment、Session、Events四个概念组织,所有请求带managed-agents-2026-04-01这个beta头,SDK会自动加。这篇讲清它是什么、四个概念怎么串、真实的SDK代码怎么写、内置工具到底有哪些(很多二手教程这块是错的)、什么时候该用它而不是自己拿Agent SDK搭循环,以及它的限制和计费维度。 > 摘要:Claude Managed Agents是Anthropic官方推出的“托管智能体”——你不用再自己写agent循环、自己搭沙箱、自己实现工具调用,它把这一整套运行容器(harness)打包成几个REST接口,Claude在云端安全沙箱里自主读文件、跑命令、搜网页、调MCP,结果通过SSE流式回传。它围绕Agent、Environment、Session、Events四个概念组织,所有请求带managed-agents-2026-04-01这个beta头,SDK会自动加。这篇讲清它是什么、四个概念怎么串、真实的SDK代码怎么写、内置工具到底有哪些(很多二手教程这块是错的)、什么时候该用它而不是自己拿Agent SDK搭循环,以及它的限制和计费维度。 ## Managed Agents到底解决了什么问题? 要搞懂Managed Agents,得先承认一个现实:把大模型变成一个能自主干活的agent,难的从来不是调模型,而是调模型外面那一圈“脚手架”。你得写一个循环,让模型说“我要调这个工具”、你执行、把结果塞回去、再让它接着想;你得给它一个能安全跑命令的沙箱,不然它rm -rf一下把你环境删了;你得管会话状态、管上下文压缩、管长任务跑几个小时中间断了怎么续。这些活儿,统称harness(运行容器),每个想做agent的人都得重复造一遍,又琐碎又容易出错。 Managed Agents干的事,就是把这一整圈脚手架托管起来。官方文档Managed Agents概览 (https://platform.claude.com/docs/en/managed-agents/overview)把它和传统的Messages API摆在一起对比得很清楚:Messages API给你的是“直接对模型提示词”的细粒度控制,适合你想亲手攥住agent循环每一步的场景;而Managed Agents给你的是“一个预先搭好、可配置的agent运行环境”,适合长时间运行、异步推进的任务。一句话——Messages API是发动机,Managed Agents是连发动机带底盘带驾驶舱的整车。 这背后是一个挺重要的行业判断:随着agent变成主流,竞争的焦点正从“谁的模型强”往“谁的运行容器好用”那一层移。自己手搓一个生产级harness的成本越来越高,把它交给平台、自己专注业务逻辑,对大多数团队是更划算的选择。Managed Agents就是Anthropic在这一层给出的官方答案。 举个出海团队会遇到的场景你就有体感了。假设你做跨境独立站,想搭一个“每天自动巡检全站、抓竞品改价、跑一轮SEO体检再出报告”的agent。这活儿的特点是:要跑很久(几十个页面挨个抓、分析)、要安全地跑命令和访问网络(不能在你的生产服务器上裸跑)、还得能中断续跑(半夜跑崩了不能从头来)。如果自己搭,你得搞一台沙箱机器、写一套任务队列、处理断点续传、防着agent把环境搞坏——光这套基础设施就够一个工程师忙好几周。用Managed Agents,这些全是平台现成的,你把精力放在“巡检逻辑怎么定、报告怎么出”这些真正产生价值的业务上就行。这就是“托管”二字对一个小团队的实际意义:把不产生差异化价值的脏活累活外包出去。 ## Agent、Environment、Session、Events,这四个概念怎么串? Managed Agents整个体系就建立在四个核心概念上,把它们的关系理顺,后面的代码你看一眼就懂: - Agent(智能体):定义“这是个什么样的助手”——用哪个模型、系统提示词是什么、能用哪些工具、挂哪些MCP服务和技能。它创建一次、给个ID,之后被反复引用。 - Environment(环境):定义“它在哪儿跑”——是用Anthropic托管的云端沙箱,还是跑在你自己基础设施上的自托管沙箱。这一层管网络策略、沙箱配置。 - Session(会话):一个Agent在某个Environment里的具体一次运行实例,干一件具体的活、产出具体的结果。同一个Agent可以开很多Session。 - Events(事件):你的应用和agent之间来回传的消息——你发的用户输入、工具结果、它回的文本、状态更新,全是事件。事件历史在服务端持久化,随时能拉全。 用一个比方:Agent是“岗位说明书”,Environment是“办公室”,Session是“这位员工今天上班处理的某个具体工单”,Events是“你和他之间的每一句对话和每一次交接”。说明书写一次,办公室配一次,工单可以开无数个,每个工单里的往来都被完整记录。理清这四层,你会发现它跟自己拿Agent SDK从零搭循环的心智模型很不一样——那条路是你亲手写循环,可以参考Claude Agent SDK实战 (https://zhangwenbao.com/claude-agent-sdk-guide.html)那篇;而Managed Agents是把循环也托管了,你只管发事件、收事件。 ## 真实的代码长什么样?别信那些虚构的API 这一节要格外认真讲,因为网上不少介绍Managed Agents的二手文章,API是凭空编的——什么client.managed_agents.create(tools=["file_system","shell"])之类,看着挺顺,实际跑不通。这里按官方快速上手文档 (https://platform.claude.com/docs/en/managed-agents/quickstart)把真实流程过一遍,全部可复现。 先装SDK。注意,不需要装什么单独的agents包,就是标准的Anthropic SDK: pip install anthropic 第一步,创建一个Agent。模型用当前的claude-opus-4-8,工具用内置工具集agent_toolset_20260401: from anthropic import Anthropic client = Anthropic() agent = client.beta.agents.create( name="Coding Assistant", model="claude-opus-4-8", system="You are a helpful coding assistant.", tools=[ {"type": "agent_toolset_20260401"}, ], ) print(agent.id, agent.version) 第二步,创建一个Environment,告诉它在云沙箱里跑、网络放开: environment = client.beta.environments.create( name="quickstart-env", config={ "type": "cloud", "networking": {"type": "unrestricted"}, }, ) print(environment.id) 第三步,引用前两步的ID开一个Session: session = client.beta.sessions.create( agent=agent.id, environment_id=environment.id, title="Quickstart session", ) print(session.id) 第四步,打开事件流,发一条用户消息,然后边收边处理事件: with client.beta.sessions.events.stream(session.id) as stream: client.beta.sessions.events.send( session.id, events=[{ "type": "user.message", "content": [{"type": "text", "text": "写个脚本算斐波那契前20项并存进文件"}], }], ) for event in stream: match event.type: case "agent.message": for block in event.content: print(block.text, end="") case "agent.tool_use": print(f"\n[调用工具: {event.name}]") case "session.status_idle": print("\n完成。") break 看清楚这套真实结构:方法挂在client.beta.agents、client.beta.environments、client.beta.sessions下面,是分层的;交互是事件驱动加SSE流式的,不是一次请求一次响应。而那些虚构的managed_agents.create把所有东西揉成一个扁平调用,恰恰错在没有体现Agent、Environment、Session的分层。判断一篇Managed Agents教程靠不靠谱,看它有没有把这三层分开就行。所有请求都要带managed-agents-2026-04-01这个beta头,好在SDK会自动加,你不用手写。 ## 内置工具到底有哪些?这块二手资料错得最多 源头一错,下游全错,内置工具就是重灾区。很多文章把Managed Agents的内置工具写成“文件系统、Shell、Playwright浏览器、代码执行、KV记忆存储”这么一长串,听着很全,但跟官方对不上。 官方文档明确的内置工具集(也就是agent_toolset_20260401这个类型一次性启用的那套)其实是这几样: - Bash:在沙箱里跑shell命令。 - 文件操作:在沙箱里读、写、编辑、glob、grep文件。 - 网页搜索与抓取:搜索网络、抓URL内容。 - MCP服务:连接外部工具提供方。 看出区别没有?官方是Bash加文件操作加网页搜索抓取加MCP这四类,而不是二手资料里那种“浏览器自动化加独立代码执行器加KV存储”的拼盘。代码执行本身是通过Bash在沙箱里跑的,不是一个单列的“code execution工具”;所谓“记忆存储”也不是一个内置KV工具——Managed Agents的状态性是靠Session级别的持久化沙箱文件系统加服务端事件历史实现的,这是架构层面的能力,不是某个工具。把这两件事分清楚很重要,否则你会去找一个根本不存在的“memory工具”而抓狂。 至于连外部能力,Managed Agents走的是标准的远程MCP服务(支持MCP的streamable HTTP传输),私有MCP可以通过MCP隧道接进来。这跟你在Claude Code里挂MCP是同一套思路,怎么挑靠谱的MCP服务、避开虚构包名,保哥在MCP服务器怎么选 (https://zhangwenbao.com/best-mcp-servers-claude-code.html)那篇里专门梳理过,那套辨别真假的方法在这儿照样管用。 ## 为什么是事件流加SSE,而不是一问一答? 很多人第一次看Managed Agents的代码,会卡在“为什么要先开流、再发消息”这个顺序上——直觉上不该是“发请求、等响应”吗?这个设计不是别扭,恰恰是它面向长任务的必然结果,值得专门说说。 传统的一问一答模式,前提是“请求很快就有完整响应”。但一个agent任务可能要跑几十分钟、调上百次工具,你不可能开一个HTTP请求干等几十分钟还指望它不超时。所以Managed Agents用的是服务端推送事件(SSE):你打开一条长连接的事件流,agent每完成一小步——说了句话、调了个工具、拿到工具结果、状态变了——就往流里推一个事件,你这边实时收、实时处理。它不是“一个大响应”,而是一连串小事件。 这套事件驱动还带来两个关键好处。其一,可中途干预:agent干到一半,你发现方向偏了,可以再发一个用户事件去纠偏、甚至打断它换个方向,不用等它把错的做完。其二,可断点续跑:因为事件历史和沙箱状态都在服务端持久化,会话能从暂停里干净恢复——网络断了、程序重启了,重新连上流就能接着来,长任务不会因为一次抖动从头再来。这两点是自己手搓harness时最难做对、最容易出bug的地方,也正是托管最值钱的部分。理解了“事件流是为长任务和可恢复性服务的”,你就不会再觉得那个先开流的顺序别扭了。 ## 什么时候该用Managed Agents,什么时候自己搭循环? 这是最该想清楚的决策,本质是一道“买现成还是自己造”的题。两条路没有谁绝对更好,看你的场景。 官方给的“适合用Managed Agents”的信号很实在: - 长时间运行:任务要跑几分钟到几小时、中间几十上百次工具调用。自己管这种长任务的状态和续跑非常痛苦,托管帮你扛了。 - 需要云端基础设施:要一个预装了包、带网络访问的安全沙箱,又不想自己运维。 - 要自托管执行:出于合规或数据驻留要求,沙箱得跑在你自己控制的基础设施上——注意,Managed Agents是支持自托管沙箱的,这点和某些二手资料说的“只能用它的云、不能上自己的环境”正好相反。 - 最小化基础设施投入:不想自己写agent循环、沙箱、工具执行层。 - 有状态会话:需要跨多次交互保持文件系统和对话历史。 反过来,如果你就是要对agent循环的每一步攥死控制——自定义每一轮怎么决策、工具怎么挑、上下文怎么裁,那自己拿Agent SDK或Messages API搭循环更合适,灵活度换来的是你得自己扛复杂度。想体会“亲手写一个agent循环”是什么感觉,保哥在手写你自己的Claude Code (https://zhangwenbao.com/build-magic-code.html)那篇里从零撸过一遍,跑通之后你对“托管到底替你省了多少活”会有非常具体的体感。 一个简单的判断法:把agent当“产品功能”要稳定上线、不想碰底层的,用Managed Agents;把agent当“研究对象”要折腾每个细节的,自己搭。多数业务团队属于前者,多数做agent框架研究的属于后者。 ## 多智能体、结果评估这些进阶能力跟得上吗? Managed Agents不只是单个agent干活,它的进阶能力也在快速补齐,目前都在公测范围内: 多智能体(Multiagent)会话:一个协调者agent可以把任务分派给其他agent、再收集它们的结果,事件流里有专门的线程事件来反映这种协作。这跟Claude Code里的Agent团队是相通的思路——多个agent并行、互相交接,保哥在Claude Code多Agent协作 (https://zhangwenbao.com/claude-code-agent-teams.html)那篇里讲过并行协作的价值和坑,理念在Managed Agents这边一样成立。 结果(Outcomes)评估:你可以给agent定义一个要达成的“结果”,让它朝着这个目标干,事件流里有对应的评估事件来反映进度。这对“我要它把事办成、而不只是把话说完”的场景很关键。 记忆(Memory):跨会话的记忆能力也在公测。配合前面说的持久化沙箱,agent能在更长的时间跨度上保持连续性。 这三样——多智能体、结果评估、记忆——都用同一个managed-agents-2026-04-01beta头,不用额外申请。另外还有MCP隧道和“做梦”(dreaming,一种后台自主探索机制)属于更受限的研究预览,要单独申请才能开。 ## 限制和计费,有哪些要提前知道的? 上生产之前,这几条边界得心里有数,保哥按官方参考文档 (https://platform.claude.com/docs/en/managed-agents/reference)给你交个底,不编数字。 速率限制:按组织计,创建类接口(建agent、session、environment等)每分钟300次请求,读取类接口(获取、列举、流式)每分钟600次请求。此外还叠加组织级的消费上限和按等级的速率限制。注意,官方给的就是这两个每分钟请求数,那些“单次运行最多4小时、并发只能10个”之类的具体数字,在官方文档里我没找到出处,多半是二手资料脑补的,别当真。 计费维度:这是和直接调Messages API最大的不同。Managed Agents除了模型token本身的费用,还多了一层托管基础设施的成本——沙箱在云端跑起来、长时间持有状态,这部分运行时是要算钱的。具体价目以官方定价页为准,但你心里要有个数:它不是免费的便利,省下的运维人力换成了平台账单,规划预算时把这层算进去。 数据保留:Managed Agents天生是有状态的——会话长时间运行、能从暂停干净恢复、对话历史和沙箱状态都存在服务端。正因如此,它目前不在零数据保留(ZDR)和HIPAA业务伙伴协议(BAA)的覆盖范围内。好在控制权在你手上:会话可以删、上传的文件可以单独删。对数据合规敏感的业务,这条要重点评估。 还在beta:整套东西挂着beta标签,行为可能在版本间微调。所有API账户默认就有访问权限,但别把还会变的接口当成一成不变的地基,留好适配的余地。 ## 常见问题解答 ## Managed Agents和直接用Messages API有什么区别? Messages API给你对agent循环的细粒度控制,适合想亲手攥住每一步的场景,但循环、沙箱、工具执行都得自己写。Managed Agents把这整套运行容器托管了,你只管发事件收事件,适合长时间运行、异步推进的生产任务。一个是发动机,一个是整车。 ## 用Managed Agents需要装单独的SDK包吗? 不用。就是标准的Anthropic SDK,Python直接pip install anthropic。方法挂在client.beta.agents、client.beta.environments、client.beta.sessions下面。所有请求要带managed-agents-2026-04-01这个beta头,SDK会自动加,不用手写。 ## 内置工具到底有哪几个? 官方的内置工具集(agent_toolset_20260401一次启用的那套)是四类:Bash、文件操作(读写编辑glob grep)、网页搜索与抓取、MCP服务。所谓独立的“代码执行器”其实是通过Bash在沙箱里跑,所谓“KV记忆工具”并不存在,状态性靠持久化沙箱和服务端事件历史实现。 ## 能跑在我自己的基础设施上吗? 能。Managed Agents支持自托管沙箱,可以出于合规或数据驻留要求把沙箱跑在你自己控制的环境里。某些二手资料说的“只能用它的云、不能上自己的环境”是错的,自托管是官方明确支持的一种Environment配置。 ## Managed Agents怎么收费,比直接调模型贵吗? 除了模型token费用,它多一层托管基础设施成本——沙箱在云端运行、长时间持有状态这部分运行时要算钱。具体价目看官方定价页。本质是用平台账单换掉你自己的运维人力,做长任务时省心,但规划预算要把这层算进去。 ## 它支持多智能体协作吗? 支持,多智能体会话在公测中。一个协调者agent能把任务分派给其他agent再收集结果,事件流里有专门的线程事件反映协作。和它一起公测的还有结果评估和跨会话记忆,都用同一个beta头,不用额外申请。 ## Claude Agent SDK实战指南:Python几行代码搭一个AI Agent - URL:https://zhangwenbao.com/claude-agent-sdk-guide.html - 分类:AI编程与工具链 - 发布:2026-04-17 | 更新:2026-06-03 - 摘要:Claude Agent SDK把Claude Code内置的Read、Write、Edit、Bash等工具直接暴露成Python接口,省去自己编排工具调用循环的麻烦。 - 关键词:AI编程,Python,Anthropic SDK,Agent开发 > **TLDR**:摘要:Claude Agent SDK把Claude Code内置的那套工具(读文件、写文件、跑命令、搜代码……)直接打包成Python接口,让你不用再手写那个折腾人的“调用工具—拿结果—再调用”的循环。一次性任务用query(),几行代码就能起一个会自己读代码、改bug的Agent;要多轮对话、跨轮记忆就用ClaudeSDKClient。安全这块靠三层闸门兜底:工具白名单、权限模式、Hooks运行时拦截,外加沙箱隔离。这篇按官方最新接口,把环境搭建、两种入口的取舍、工具扩展、权限管控、一个能跑的实战项目和上生产的注意事项一次讲透。 > 摘要:Claude Agent SDK把Claude Code内置的那套工具(读文件、写文件、跑命令、搜代码……)直接打包成Python接口,让你不用再手写那个折腾人的“调用工具—拿结果—再调用”的循环。一次性任务用query(),几行代码就能起一个会自己读代码、改bug的Agent;要多轮对话、跨轮记忆就用ClaudeSDKClient。安全这块靠三层闸门兜底:工具白名单、权限模式、Hooks运行时拦截,外加沙箱隔离。这篇按官方最新接口,把环境搭建、两种入口的取舍、工具扩展、权限管控、一个能跑的实战项目和上生产的注意事项一次讲透。 如果你试过自己用大模型API搭一个能干活的Agent,大概率被同一件事折磨过:模型说“我要读一下这个文件”,你得接住这个请求、真去把文件读出来、再把内容塞回对话里,然后模型说“我再跑个命令”,你又得接一遍……这个来回的编排循环,写起来琐碎、容易出错,还得自己处理超时、报错、权限。Agent SDK做的事,就是把这套循环连同一整套现成工具,整个替你包好。 它和直接调Claude的消息API不是一回事。消息API给你的是“一次对话”,工具调用的编排得你自己写;Agent SDK给你的是“一个会自己用工具完成任务的智能体”。想从底层理解这个循环到底怎么转,可以先看保哥在手写一个Claude Code (https://zhangwenbao.com/build-magic-code.html)那篇里从零拆的版本,再回来看SDK会更透。下面从它到底解决什么问题讲起。 ## Agent SDK到底解决了什么问题? 核心就一句话:它把Claude Code那套经过实战打磨的内置工具,直接暴露成了可编程接口。你不用再自己定义“读文件工具长什么样、怎么执行、出错怎么办”,这些SDK都内建好了,而且和命令行版Claude Code用的是同一套实现。 内置工具大致这几类,覆盖了日常开发的绝大多数动作: 工具 | 能干什么 | 典型场景 | Read | 读取任意文件 | 代码审查、读配置 | Write | 新建文件 | 生成报告、脚手架 | Edit | 精确改已有文件 | 修bug、重构 | Bash | 执行终端命令 | 跑测试、git操作 | Glob | 按模式找文件 | 找全部.py文件 | Grep | 正则搜内容 | 找TODO、找调用点 | WebSearch | 搜互联网 | 查文档、找最新信息 | WebFetch | 抓网页内容 | 读在线API文档 | 有了这些,你给一句目标,Agent就能自己规划:先Glob找到相关文件,再Read读进来,分析完用Edit改掉,最后Bash跑测试验证。整个过程不用你插手编排,这正是它比裸用消息API省事的地方。 ## 5分钟把环境搭起来需要什么? 前置条件不多,但有一个容易被忽略:除了Python,你还得装Node.js。原因后面会讲。 - Python 3.10以上(建议3.12,更稳); - Node.js 18以上; - 一个Anthropic API Key。 安装包名是claude-agent-sdk,用pip或uv都行: pip install claude-agent-sdk # 或者用 uv uv add claude-agent-sdk 然后把API Key配成环境变量: export ANTHROPIC_API_KEY=你的key 如果公司走云厂商的账单,SDK也支持三家企业云认证,各自一个环境变量切过去即可——走AWS Bedrock用CLAUDE_CODE_USE_BEDROCK=1、走Google Vertex用CLAUDE_CODE_USE_VERTEX=1、走Azure用CLAUDE_CODE_USE_FOUNDRY=1。对有合规要求、必须让数据走自家云的出海团队,这点很实用。 这里要注意一个常见误区:为什么装了Python还非要Node.js?因为Agent SDK底层其实是去驱动Claude Code的命令行程序(那是个Node.js应用),Python这层是个封装。Node没装好,运行时会直接抛CLINotFoundError。这也是新手第一次跑不通最常见的原因。 ## query()和ClaudeSDKClient到底该用哪个? SDK给了两个入口,选错了会很别扭,先把区别讲清楚。 ## 一次性任务,用query() query()适合“给个目标,让它跑完就完事”的场景。它返回一个异步迭代器,你边跑边收到一条条消息。最精简的版本就三行: from claude_agent_sdk import query async for message in query(prompt="找出并修复 auth.py 里的 bug"): print(message) 真实用的时候,一般会配上ClaudeAgentOptions来限定它能用哪些工具、用什么权限模式,并区分处理“助手消息”和“最终结果”: from claude_agent_sdk import ( query, ClaudeAgentOptions, AssistantMessage, ResultMessage, ) async for message in query( prompt="审查 utils.py,找出潜在 bug 并修复", options=ClaudeAgentOptions( allowed_tools=["Read", "Edit", "Glob"], permission_mode="acceptEdits", ), ): if isinstance(message, AssistantMessage): for block in message.content: if hasattr(block, "text"): print(block.text) elif isinstance(message, ResultMessage): print(f"耗时 {message.duration_ms}ms,成本 {message.total_cost_usd} 美元") query()的局限也很明确:它是无状态的,每次调用都开一个新会话,跑完不记得上次干了什么。要让它续上,得显式传continue_conversation=True或者resume一个会话ID。 ## 多轮对话,用ClaudeSDKClient 如果你要做的是“先让它读模块,再基于读到的内容追问下一步”,这种跨轮依赖的活儿就该用ClaudeSDKClient。它维持同一个会话,第二轮能自然用上第一轮的上下文,还支持中途打断: from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions async with ClaudeSDKClient(options=options) as client: await client.query("读一下认证模块,告诉我它怎么校验 token") async for message in client.receive_response(): ... # 处理第一轮 await client.query("现在找出所有调用它的地方") async for message in client.receive_response(): ... # 第二轮能用上第一轮读到的信息 一个简单的判断口诀:单次跑完即走,用query();要连续对话、跨轮记上下文,用ClaudeSDKClient。下面这张表把差异摆清楚: 特性 | query() | ClaudeSDKClient | 会话 | 每次新建 | 复用同一个 | 对话轮次 | 单次 | 多次 | 连接管理 | 自动 | 手动控制 | 中途打断 | 不支持 | 支持 | 续接上下文 | 需手动传参 | 天然支持 | ## 怎么给Agent扩展工具能力? 内置工具够用一大半,但碰到“调我们内部的运维接口”“开浏览器截个图”这类需求,就得自己加工具了。有两条路。 ## 路子一:挂外部MCP Server MCP(模型上下文协议)是连接外部工具的标准。社区已经有几百个现成的MCP Server,挂上就能用。比如要做浏览器自动化,挂个Playwright的MCP: async for message in query( prompt="打开 zhangwenbao.com 并截一张图", options=ClaudeAgentOptions( mcp_servers={ "playwright": { "command": "npx", "args": ["@playwright/mcp@latest"], } } ), ): ... MCP怎么配、有哪些坑,保哥在Claude Code MCP配置指南 (https://zhangwenbao.com/claude-code-mcp-setup.html)里专门讲过,要接外部服务的可以对照着配。 ## 路子二:用@tool装饰器写自己的工具 如果只是三五个小工具,不必单独起一个MCP Server,用@tool装饰器在Python里直接定义更省事。定义完用create_sdk_mcp_server()打个包就能挂上: from claude_agent_sdk import tool, create_sdk_mcp_server @tool("check_service_health", "检查某个服务是否在运行", {"service_name": str}) async def check_health(args): service = args["service_name"] return {"content": [{"type": "text", "text": f"服务 {service} 运行正常"}]} ops_server = create_sdk_mcp_server( name="ops-tools", version="1.0.0", tools=[check_health], ) options = ClaudeAgentOptions( mcp_servers={"ops": ops_server}, allowed_tools=["mcp__ops__check_service_health"], ) 注意自定义工具在白名单里的名字有固定格式:mcp__服务名__工具名,中间是双下划线。这个命名规则写错了,工具就授权不上,是个高频踩坑点。选哪条路?三五个工具用@tool,工具多到十几个、或者要跨项目复用,就单独起MCP Server。 ## 怎么把Agent关进笼子,不让它乱来? 让Agent自己跑命令、改文件,最让人心里没底的就是“它会不会手一抖把不该删的删了”。SDK的安全设计是三层防御,逐层收紧。 第一层,allowed_tools工具白名单。只把它该用的工具放进来。做代码审查就只给只读的Read、Glob、Grep,根本不给它Write和Bash,从源头上断了它乱写乱跑的可能。 第二层,permission_mode权限模式。这里要专门纠正一个很多教程的疏漏——权限模式其实有五种,不止常说的那几个。官方当前的完整取值是: 模式 | 行为 | 适用场景 | default | 标准权限行为,按需询问 | 常规开发 | acceptEdits | 自动批准文件编辑,其他仍询问 | 信任的开发环境 | plan | 规划模式,只读不动手 | 先让它出方案再决定 | dontAsk | 没预先授权的直接拒绝,不弹问 | 无人值守的CI/CD | bypassPermissions | 跳过所有权限检查 | 仅限沙箱容器内 | 很多攻略漏掉了plan这个规划模式,但它其实非常好用:让Agent只读代码、只产出一份改动计划而不真动手,你看过没问题再放它执行。对不敢一上来就放权的场景,这是个稳妥的过渡档。生产环境的无人值守任务,建议用dontAsk;而bypassPermissions这种全放开的模式,只应该在隔离的沙箱里用。 第三层,Hooks运行时拦截。白名单和权限模式是“事前”管控,Hooks是“运行时”的最后一道闸:每次工具真正执行前后插一段你的代码,可以记审计日志,也可以临场拦截危险操作。比如禁止它碰系统目录: from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher async def block_system_files(input_data, tool_use_id, context): path = input_data.get("tool_input", {}).get("file_path", "") if path.startswith("/etc/") or path.startswith("/system/"): return {"decision": "deny", "message": "禁止修改系统文件"} return {"decision": "allow"} options = ClaudeAgentOptions( allowed_tools=["Read", "Edit", "Glob", "Grep"], permission_mode="acceptEdits", hooks={ "PreToolUse": [HookMatcher(matcher="Edit|Write", hooks=[block_system_files])], }, ) Hooks这套机制和命令行版Claude Code是同源的,配置思路完全一致,吃不准的可以参考Claude Code Hooks完全指南 (https://zhangwenbao.com/claude-code-hooks-guide.html)。三层叠起来用,才算把Agent真正关进了笼子。 ## 一个能跑的代码审查Agent长什么样? 把前面的东西串起来,下面是一个能直接跑的代码审查Agent的骨架。它读指定目录的代码,按一份清单找问题,关键是加了两道硬约束:最多30轮、预算上限2美元,防止它跑飞或烧钱。 import asyncio import sys from claude_agent_sdk import ( query, ClaudeAgentOptions, AssistantMessage, ) REVIEW_PROMPT = """你是一位资深代码审查员,请按以下清单分析代码: 1. 安全:SQL注入、XSS、命令注入、硬编码密钥 2. 错误处理:未捕获的异常 3. 性能:O(n^2) 循环等 4. 质量:死代码、重复逻辑 把发现写成一份 Markdown 报告。""" async def main(): target = sys.argv[1] if len(sys.argv) > 1 else "." async for message in query( prompt=REVIEW_PROMPT, options=ClaudeAgentOptions( allowed_tools=["Read", "Glob", "Grep", "Write"], permission_mode="acceptEdits", cwd=target, max_turns=30, max_budget_usd=2.0, ), ): if isinstance(message, AssistantMessage): for block in message.content: if hasattr(block, "text"): print(block.text) asyncio.run(main()) # 运行: python code_reviewer.py ./src 这个例子里有两个参数值得单拎出来记:max_turns限制它最多自主跑多少轮,max_budget_usd是硬性的成本天花板,到了就停。这俩是上生产前的“安全带”,强烈建议每个Agent都系上。 ## 让Agent再去派活给子Agent SDK还支持子Agent——主Agent可以把任务拆给专精的子Agent去做,每个子Agent还能有自己独立的工具白名单。比如一个审查任务,派一个专查安全、一个专查代码风格: from claude_agent_sdk import ClaudeAgentOptions, AgentDefinition options = ClaudeAgentOptions( allowed_tools=["Read", "Glob", "Grep", "Agent"], agents={ "security-auditor": AgentDefinition( description="安全审查专家", prompt="专找安全问题:注入、XSS、密钥泄露……", tools=["Read", "Glob", "Grep"], ), "style-checker": AgentDefinition( description="代码质量审查", prompt="检查命名规范、重复逻辑、死代码……", tools=["Read", "Glob", "Grep"], ), }, ) 子Agent的好处是职责隔离、各管一摊,复杂任务拆开后更可控,每个子Agent的权限也能单独收紧。 ## 上生产之前还要顾及什么? 能跑通和能上生产是两回事。三件事必须想清楚。 第一,成本控制。除了上面的max_budget_usd和max_turns,模型选择是最大的省钱杠杆——简单任务用Sonnet,比Opus便宜得多;只有需要复杂推理的硬骨头才上Opus。截至2026年中,最新的旗舰是Opus 4.8(源文里写的Opus 4.7已经被它接替),日常活儿真没必要全程顶配。Agent这种会连续自主调用工具的玩法,最容易在不知不觉中烧掉额度,关于用量和限流的账怎么算,可以看Claude速率限制详解 (https://zhangwenbao.com/claude-rate-limits.html)。 第二,错误处理。生产代码得接住SDK会抛的几类异常:Node没装好的CLINotFoundError、底层进程出错的ProcessError、以及兜底的ClaudeSDKError。该重试的重试,该告警的告警,别让一个异常把整条流水线带崩: from claude_agent_sdk import ( query, ClaudeSDKError, CLINotFoundError, ProcessError, ResultMessage, ) try: async for message in query(prompt="修复这个 bug", options=options): if isinstance(message, ResultMessage) and message.is_error: print(f"Agent 出错:{message.result}") break except CLINotFoundError: print("没找到 Claude Code 命令行,请先装好 Node.js 18+") except ProcessError as e: print(f"底层进程失败(exit {e.exit_code}):{e.stderr}") except ClaudeSDKError as e: print(f"SDK 错误:{e}") 第三,沙箱隔离。真要让Agent全放开权限干活,务必把它关进容器里跑。SDK提供了sandbox配置,配合容器,bypassPermissions带来的风险才被锁在隔离环境里——它再怎么折腾,也出不了那个沙箱。生产环境放权的前提,永远是先隔离再放开,顺序不能反。 ## 什么时候反而不该用Agent SDK? 它不是万能锤。下面几种情况,用别的更合适: - 纯问答、不需要工具。只是要个文本回答,直接用Anthropic的消息SDK更轻,没必要拉起一整套Agent运行时。 - 要跨多家模型。Agent SDK只支持Claude。需要在不同厂商模型间切换的,用LangChain、LlamaIndex这类更中立的框架。 - 极高并发。SDK每个query()底层会拉起一个命令行进程,高并发下开销大,这种场景自己基于消息SDK写tool loop更划算。 - 订阅计费的个人用户。Agent SDK只认API Key计费,用不上Pro/Max的订阅额度。如果你就是个人交互式开发,直接用命令行版Claude Code更对路。 一句话总结取舍:要的是“一个会自己用工具干活、且基于Claude、走API计费”的智能体,Agent SDK是最省心的选择;偏离这三个条件越多,越该考虑别的方案。 ## 常见问题解答 ## 装了Python为什么还要装Node.js? 因为Agent SDK底层是驱动Claude Code的命令行程序,那是个Node.js应用,Python这层只是封装。Node没装好运行时会抛CLINotFoundError,这是新手最常见的报错。版本要求是Node.js 18以上。 ## query()和ClaudeSDKClient怎么选? 单次任务、跑完即走用query();需要多轮对话、跨轮记上下文、或者中途要打断,用ClaudeSDKClient。前者无状态每次新建会话,后者复用同一会话天然续接上下文。 ## permission_mode到底有哪几种? 官方当前是五种:default、acceptEdits、plan、dontAsk、bypassPermissions。很多教程漏掉了plan规划模式(只读出方案不动手)。无人值守用dontAsk,全放开的bypassPermissions只应在沙箱容器内用。 ## 自定义工具授权不上是什么原因? 多半是白名单里的工具名写错了。自定义工具的名字格式固定为mcp__服务名__工具名,中间是双下划线。这个格式写错,工具就挂不上,是高频踩坑点。 ## 怎么防止Agent烧钱或者跑飞? 两道硬约束:max_turns限制最多自主跑多少轮,max_budget_usd设成本上限到了就停。再配合默认用Sonnet、复杂任务才上Opus的模型策略,成本就基本可控了。 ## Agent SDK支持Pro/Max订阅额度吗? 不支持,它只认API Key计费。个人订阅用户想交互式开发,直接用命令行版Claude Code更合适;要做自动化、可编程的Agent,才用SDK配API Key。 ## 权威参考资料 ## Claude HUD插件实战:给Claude Code装个实时状态栏,盯住上下文与Token - URL:https://zhangwenbao.com/claude-hud-guide.html - 分类:AI编程与工具链 - 发布:2026-04-10 | 更新:2026-06-04 - 摘要:Claude HUD是给Claude Code装的状态栏插件,靠插件市场一条命令安装,底层复用官方status line机制,把上下文用量、工具活动、子代理状态、累计成本实时画到终端底部两行。 - 关键词:Claude Code,AI编程,CLAUDE.md > **TLDR**:摘要:Claude HUD是给Claude Code装的一个状态栏插件,把原本藏在200K上下文黑箱里的关键数据——剩多少Token、正在调哪个工具、有几个子代理在跑、待办进度——全摊到终端底部两行实时显示。它的底子就是Claude Code官方的状态栏(status line)机制,靠插件市场一条命令装好。它解决的核心痛点是“盲飞”:上下文质量是慢慢退化、然后突然崩的,没有可视化你根本没法预警。这篇讲清它显示什么、背后怎么拿到数据、3分钟怎么装、Linux和Windows各自的坑、怎么配、什么场景不该装,以及它背后“AI编程也需要可观测性”这件更大的事。 > 摘要:Claude HUD是给Claude Code装的一个状态栏插件,把原本藏在200K上下文黑箱里的关键数据——剩多少Token、正在调哪个工具、有几个子代理在跑、待办进度——全摊到终端底部两行实时显示。它的底子就是Claude Code官方的状态栏(status line)机制,靠插件市场一条命令装好。它解决的核心痛点是“盲飞”:上下文质量是慢慢退化、然后突然崩的,没有可视化你根本没法预警。这篇讲清它显示什么、背后怎么拿到数据、3分钟怎么装、Linux和Windows各自的坑、怎么配、什么场景不该装,以及它背后“AI编程也需要可观测性”这件更大的事。 ## 为什么在200K上下文里写代码,像在黑箱里盲飞? 用Claude Code写一会儿代码,你一定遇到过这种场景:前半个小时它聪明得像换了个人,改哪儿对哪儿;可不知从哪一刻起,它开始重复你十分钟前否掉的方案,把刚改好的函数又改回去,甚至忘了这个项目根本不用某个框架。你心里嘀咕“它是不是傻了”,其实它不是傻,是上下文窗口快满了。 问题在于,这种退化不是线性的、有预兆的。它更像一根绷着的弦:前面160K Token都好端端的,质量曲线几乎是平的;可一旦逼近窗口上限、触发自动压缩(compaction),早先那些关键约束被挤出去,质量就断崖式往下掉。等你反应过来不对劲,往往已经浪费了好几轮来回。Anthropic把这套上下文管理讲得很细,而“写进上下文”和“它真的记住”从来是两回事,靠CLAUDE.md这类长期记忆来兜底也只能兜一部分,会话内的实时消耗你还是得自己盯。 说到底,你缺的不是更强的模型,而是一块仪表盘。开车有油表和转速表,你才知道什么时候该加油、什么时候别再踩了;可默认的Claude Code终端,把最该让你盯着的几个数字全藏起来了——你不知道Token烧到哪了、不知道它此刻在调Bash还是在读文件、不知道后台是不是悄悄起了三个子代理在并行。Claude HUD干的,就是把这块仪表盘给你装上。 ## Claude HUD到底在终端上显示了什么? Claude HUD(GitHub仓库jarrodwatts/claude-hud (https://github.com/jarrodwatts/claude-hud),MIT许可,写到这篇时已经攒了2.4万颗星、1100多个fork)本质是一个Claude Code插件,它不开新窗口、不占额外屏幕,而是接管终端最底部的状态栏,把会话的实时状态压成紧凑的两行。 默认装好后,你会看到这样的布局: - 第一行:当前模型(比如Opus 4.8还是Sonnet 4.6)、项目路径、Git分支。一眼知道“我现在用哪个模型、在哪个项目、哪条分支上干活”。 - 第二行:一条上下文使用进度条,加上用量和额度信息。这条进度条是整个HUD的灵魂——它把“还剩多少Token”从一个看不见的抽象数字,变成一条会变色的、肉眼可读的条。快满了它会标红,你就知道该收尾、该开新会话、或者该手动整理上下文了。 这还只是默认档。打开可选项之后,它能继续往上叠: - 工具活动:此刻Claude正在调用哪个工具——是在跑Bash命令,还是在Read文件、在Edit代码。它“卡住不动”到底是在思考还是在等一条慢命令,一看便知。 - 子代理状态:如果你用了子代理(subagent)或者Agent团队并行干活,HUD能显示有几个agent在跑、各自什么状态。多代理编排最怕的就是“黑箱并行”,这条能救命,Claude Code多Agent协作 (https://zhangwenbao.com/claude-code-agent-teams.html)那篇里强调过可观测性对并行的意义。 - 待办进度:Claude Code内部维护的todo列表完成到第几项,进度直接摊在眼前。 - 会话时长、累计成本:跑了多久、这一会儿大概花了多少钱(按量计费用户尤其爱看这个)。 把这些项目摆在一起看,你会发现HUD回答的其实是开发者在长会话里最常冒出来的四个问题:“它还能跑多久不崩?”(上下文条)、“它现在到底在干嘛?”(工具活动)、“后台那几个并行的家伙怎么样了?”(子代理)、“这一通操作烧了我多少钱?”(成本)。这四个问题,默认终端一个都不回答,而它们恰恰是你做下一步决策最需要的输入。 ## HUD背后的数据是从哪来的?它靠谱吗? 这里要点破一件很多人没意识到的事:HUD并不是自己“猜”出这些数据的,它是站在Claude Code官方状态栏机制的肩膀上。搞清楚这一层,你才能判断它的数字值不值得信。 Claude Code原生就支持自定义状态栏。机制很朴素:你在设置里配一个statusLine脚本,每当会话状态更新,Claude Code就把当前会话的一份JSON数据通过标准输入(stdin)喂给这个脚本,脚本爱怎么解析就怎么解析、打印什么终端底部就显示什么。这份JSON里有什么?模型名、当前工作目录、Git分支与状态、上下文窗口的用量、本次会话累计成本、会话时长……正好就是HUD摊在你面前的那几样。这套机制官方文档自定义状态栏 (https://code.claude.com/docs/en/statusline)讲得很清楚,连多行状态栏、上下文进度条这些范式都给了现成例子。 看懂这层,两个关键结论就出来了。第一,HUD显示的是原生数据,不是估算——上下文用量、成本这些字段是Claude Code自己掌握的真实值,HUD只负责把它画成进度条,所以你完全可以拿它当决策依据,而不用担心“它是不是算错了把我吓一跳”。第二,HUD并没有什么黑魔法,它本质上就是一个写得很用心的状态栏脚本,把本来要你自己写shell才能玩转的能力,封装成开箱即用、还带多语言和配色的成品。理解这点也意味着:哪天你对它某个细节不满意,完全可以照着官方机制自己接管——这是一条退路,不是死胡同。 ## 3分钟怎么把Claude HUD装上? HUD走的是Claude Code的插件市场(plugin marketplace)这条标准路子,整个过程就是几条斜杠命令: /plugin marketplace add jarrodwatts/claude-hud /plugin install claude-hud /reload-plugins /claude-hud:setup 逐条拆开说: - /plugin marketplace add jarrodwatts/claude-hud:把作者的GitHub仓库注册成一个插件源。Claude Code的插件本质就是一个带.claude-plugin/plugin.json清单的目录,托管在Git仓库里。 - /plugin install claude-hud:从刚注册的源里把HUD装进来。 - /reload-plugins:热加载,不用退出重开Claude Code就能让插件生效。 - /claude-hud:setup:跑HUD自带的初始化向导。注意这个命令带了claude-hud:前缀——插件里的命令都是带命名空间的,这是Claude Code故意设计的,避免不同插件的命令撞名。 装完想随时改设置,再敲/claude-hud:configure就行。这套/plugin命令体系是Claude Code插件生态的统一入口,官方插件开发文档 (https://code.claude.com/docs/en/plugins)里把市场、安装、目录结构都写明白了,搞懂一次,以后装任何插件都是同一套手法。 ## 平台踩坑提醒:Linux和Windows各有一个雷 这一节是替你提前踩好的坑,按系统对号入座。 Linux用户:有些发行版的临时目录挂在tmpfs(内存盘)上,空间很小,HUD安装时写临时文件可能直接失败。解法是先指一个有空间的临时目录再启动: mkdir -p ~/.cache/tmp && TMPDIR=~/.cache/tmp claude Windows用户:HUD的状态栏脚本要靠Node运行时来跑,如果setup时报“找不到运行时”,多半是机器上没装Node。用winget装一个LTS版就好: winget install OpenJS.NodeJS.LTS 另外提醒一句版本要求:HUD要Claude Code v1.0.80以上、Node.js 18以上(macOS和Linux也可以用Bun)。如果你的Claude Code还是老版本,/plugin命令可能压根不出现,先升级再说。 怎么确认装好了?最直接的办法就是看终端底部——setup跑完,那两行状态栏应该立刻出现。如果没出现,先用/reload-plugins再热加载一次;还不行,多半是前面两个平台坑里中了一个(Linux的临时目录或Windows的Node运行时),回去对照检查。这里要破除一个误区:状态栏不显示,不代表HUD“装失败了”,更可能是它需要的运行时没就位、或者当前会话还没触发一次状态更新。把根因定位到“运行时”还是“插件本身”,比反复卸了重装高效得多——这其实也是后面要讲的可观测性思路在装插件这件小事上的预演:先看清信号,再动手。 ## 装好之后,配置该怎么调才顺手? HUD的配置文件落在~/.claude/plugins/claude-hud/config.json,可改的字段不少。但有个原则比任何具体参数都重要:别一上来全打开。状态栏就两行,塞太满反而每一项都看不清,失去了“一眼扫到关键信息”的意义。下面是一套经过日常重度使用打磨的取舍。 先把语言切成中文,看着舒服: "language": "zh-Hans" 布局用展开式,把上下文条单独占一行,看得更清楚: "lineLayout": "expanded" 路径层级控制在显示1到3级,太深的路径会把第一行挤爆,一般留2级,知道在哪个子项目就够了: "pathLevels": 2 显示开关这块,原则是只留对决策有用的:上下文条、用量、模型、Git状态这几样必开;工具活动和子代理状态在做复杂任务、跑多代理时才有意义,平时写小改动可以关掉省地方;成本这一项,按量计费用户强烈建议开,订阅用户可关。对应的就是display下面那一串show*标志位,按需置true或false。 这里有一个保哥踩出来、特别想点给你的经验:上下文条的颜色阈值,比你想的更值得调。默认是快满了才标红,但等到标红其实已经晚了——压缩往往在更早就开始悄悄发生。把警戒色往前提一档,大概用到七成就让它变黄,你就有充足的缓冲去主动收尾,而不是被动等它崩。HUD支持自定义颜色和进度条字符,这个微调花不了两分钟,回报却很高。 ## HUD该怎么融进日常工作节奏? 工具装上只是第一步,真正让它产生价值的是你围绕它形成的习惯。光摆个仪表盘不看,等于没装。这里给一套已经验证有效的节奏,你可以直接抄。 第一,把上下文条当成红绿灯,而不是装饰。一个长任务开跑,眼睛余光要时不时扫一下那条进度条。绿区放心干;进了黄区(前面说的七成阈值),就该想“这个任务还能不能在崩之前收尾”;真到红区,别赌它还能撑,主动把当前进度落进CLAUDE.md或者一份笔记,然后开新会话接着干。这个动作看着麻烦,其实比“等它失忆后返工”省太多。 第二,用工具活动项判断“卡”的性质。Claude半天不出声,到底是在深度思考,还是卡在一条跑不动的命令上?看工具活动一目了然:如果它一直停在某个Bash调用上,多半是那条命令本身卡了(比如在等一个超时的网络请求),这时候该去管的是命令,不是模型;如果工具栏是空的、它在“thinking”,那就再等等。区分清楚,你就不会瞎打断它、也不会傻等一条死掉的命令。 第三,把成本项和你的额度挂钩看。HUD显示的累计成本,配合你对自己套餐额度的了解,能帮你管住“无意识烧钱/烧额度”。Claude Code的限额机制是分窗口、分模型的,具体怎么算、撞墙了怎么办,Claude速率限制与额度 (https://zhangwenbao.com/claude-rate-limits.html)那篇讲得很细。HUD的作用是把这件事从“月底看账单才知道”提前到“此刻就看得见”,让你在烧之前而不是烧之后做判断。 这三个习惯的共同点是:HUD只负责把信号摆出来,把信号变成动作的是你。但正因为信号摆出来了,那些动作才有可能发生——这就是可观测性的全部意义。 ## 状态栏就两行,HUD怎么把信息塞得下又不打架? 很多人第一次把所有显示项全打开,会被一行挤得密密麻麻的字符劝退,然后得出“这工具华而不实”的结论。其实是用法没对——状态栏是个信息密度极度受限的画布,它的设计哲学跟仪表盘一样:不是把所有数据都塞进去,而是把最该被你余光扫到的那几个,放在最该放的位置。理解这套取舍,你才能用好它。 HUD给了两种布局应对不同诉求。紧凑布局(compact)把模型、路径、Git、上下文压进尽量少的行里,适合屏幕小、或者你只想要一个不打扰的角落指示器;展开布局(expanded)则舍得用空间,把上下文条单独拎出来占一行、配上颜色和刻度,适合大屏幕重度使用、需要一眼读出精确进度的场景。这俩没有谁更好,取决于你的屏幕和注意力预算。一个实用建议是:白天大屏专注开发用展开,临时在小窗口里救火用紧凑。 路径这一项最容易被忽略却最该收着点。深层项目的工作目录动辄七八级,全打出来能把第一行撑爆、把后面的Git分支挤没。把pathLevels设成2,只显示“你在哪个项目的哪个子模块”,既够定位又不抢地方。同理,工具活动和子代理状态属于高频刷新项——它们一直在变,视觉上很跳。做需要专注的细活时,这种跳动反而分心,关掉它们、只留一条安静的上下文条,往往效率更高;等你要并行编排、要盯多代理时再打开。 说到底,配置HUD的过程,本质是逼着你想清楚一件事:在当前这个任务里,我到底最该盯哪个数字?这个问题想明白了,状态栏的两行就不再是“塞不下”,而是“刚刚好”。这也是为什么同一个HUD,不同人的配置可以差得很远——它本来就该跟着你的工作方式走,而不是反过来。 ## 和原生状态栏、其他工具比,该选哪个? 装HUD之前,值得想清楚它和几个替代方案的关系,免得装一堆功能重叠的东西。 对比官方原生状态栏:如前面说的,Claude Code本身就能配状态栏,你完全可以自己写一个shell脚本,把stdin里的JSON解析出来打印。区别只在于要不要自己造轮子。如果你是喜欢一切尽在掌握、连配色都要亲手调的极客,自己写脚本最自由;但对绝大多数人,HUD把多语言、配色、多种数据项、跨平台兼容这些琐碎活儿都替你做完了,2.4万颗星就是“大家懒得自己写”这个需求的真实投票。保哥的建议是:先用HUD,用顺了再看哪一项不满意,那时你对状态栏机制也熟了,针对性地改或者自己接管都不迟。 对比claude-mem这类记忆插件:这俩解决的是完全不同的问题,不冲突,可以同时装。HUD管的是“让你看见”当前会话的实时状态,是可观测性;claude-mem管的是“让Claude记住”跨会话的长期上下文,是记忆。一个是仪表盘,一个是行车记录仪外加导航历史。claude-mem深度拆解 (https://zhangwenbao.com/claude-mem-deep-dive.html)里专门讲过记忆这条线。真要类比,HUD回答“我现在烧到哪了”,claude-mem回答“我上次到底干到哪了”。 对比各种独立的用量监控小工具:市面上还有些独立的桌面widget专门盯Token用量。它们的短板是跟会话脱节——单独开个窗口,你还得来回切。HUD的优势就在于它长在终端里、长在你眼睛本来就盯着的地方,不增加任何切换成本。可观测性这东西,一旦需要你额外抬头去看,它的价值就漏掉一大半。 ## 什么时候反而不该装Claude HUD? 写工具从不该无脑安利,HUD也有它不适合的场景,老老实实列给你: - 只是偶尔用一下Claude Code:一周点开两三次、每次问一两个小问题,那上下文根本烧不满,仪表盘对你意义不大,装它纯属增加心智负担。HUD是给严肃、长时间、重度开发场景准备的。 - 纯API Key裸用、不走交互式终端:HUD的价值在交互式会话的实时反馈。如果你是把Claude当后端API在脚本里批量调用,状态栏无从谈起,这种场景该看的是程序里返回的Token用量字段。 - 企业代理或严格网络环境:有些公司的开发机走严格的代理和白名单,插件市场可能拉不下来,或者安全策略不允许装第三方插件。这种情况别硬刚,跟IT确认清楚,或者退而求其次用官方原生状态栏自己写脚本(脚本是你自己的代码,过审容易得多)。 - 终端高度受限、屏幕极小:比如在一个只有十几行的SSH窗口里干活,本来空间就紧张,再被状态栏吃掉两行可能得不偿失。这种就用紧凑布局,或者干脆只留上下文条一项。 ## 更大的图景:AI编程,可观测性正在变成刚需 聊到这儿,想跳出HUD本身说点更要紧的。一个专门显示状态的插件能涨到两万多颗星,这件事本身就说明问题——它戳中的是一个结构性缺口:我们把越来越多的工作交给了一个上下文窗口有限、状态对人类不透明的黑箱,可我们手里几乎没有趁手的仪表去监控它。 这其实是软件工程里一个老概念在AI时代的回归:可观测性(observability)。过去十几年,后端工程师早就接受了“跑在生产环境的系统必须可观测”——日志、指标、链路追踪,三件套缺一不可,否则线上出事你两眼一抹黑。现在AI编程agent就是你本地的一个“生产系统”,它在你的代码库里自主跑工具、改文件、起子进程,凭什么它就可以是个黑箱? 保哥带过的一个做跨境独立站的小团队,就吃过这个亏。他们让Claude Code批量重构一套商品详情页模板,跑到一半模型开始“失忆”,把前面统一好的命名又改乱了,结果一上午返工。复盘时发现,根本原因就是没人盯着上下文——任务太长、窗口被压缩,关键约束丢了,而没有任何信号提醒他们这件事正在发生。后来他们把HUD装上,约定“上下文条一过七成就主动切会话、把进度落进CLAUDE.md再继续”,同类返工几乎绝迹。HUD本身没让模型变聪明一分,它只是把一个本来不可见的风险变得可见,决策就跟上了。这跟Claude Code最佳实践 (https://zhangwenbao.com/claude-code-best-practices.html)是一条逻辑:人要待在回路里,而待在回路里的前提是你看得见。 所以保哥的判断是:状态栏这类可观测性工具,会从今天的“极客玩具”慢慢变成“重度用户标配”,就像IDE里的Git状态栏、内存占用条一样,最终大家会觉得理所当然、没有反而难受。HUD未必是终局的形态,但它指对了方向。早一点把仪表盘装上,你就能早一点从“感觉它好像变笨了”的玄学,进化到“上下文到八成了,该收尾了”的工程判断。 ## 常见问题解答 ## Claude HUD会拖慢Claude Code吗? 基本不会有体感影响。状态栏脚本只在会话状态更新时被调用、做轻量渲染,开销很小。真要说代价,是它需要Node或Bun运行时常驻,内存多占一点点。如果你在极低配机器上感觉卡,可以关掉工具活动、子代理这些高频刷新项,只留上下文条。 ## HUD显示的Token用量准不准,是估算的吗? 是准的,不是估算。HUD的数据来自Claude Code官方状态栏机制通过标准输入喂给它的原生会话JSON,里面的上下文用量、成本等字段就是Claude Code自己掌握的真实值。HUD只负责把这些值画成进度条,不自己重新计算,所以你可以放心拿它当决策依据。 ## 装了HUD之后,我还需要单独装claude-mem吗? 看需求,两者不冲突。HUD解决“看见当前会话状态”,是可观测性;claude-mem解决“跨会话记住长期上下文”,是记忆。如果你经常做跨天、跨会话的大项目,两个一起装互补;如果只是单次会话内重度使用,光HUD就够了。 ## Windows上装HUD为什么总报找不到运行时? 多半是机器上没装Node.js。HUD的状态栏脚本要靠Node来执行,用winget install OpenJS.NodeJS.LTS装一个LTS版本,重开Claude Code再跑setup就好。装完还不行,检查一下Node有没有进到系统PATH里。 ## 上下文条该设多少阈值变红比较合理? 建议别等默认的“快满才红”。压缩往往在更早就开始悄悄发生,把警戒色提前到七成左右变黄,给自己留出主动收尾、切会话、把进度写进CLAUDE.md的缓冲。HUD支持自定义颜色阈值,花两分钟调一次,长期受益。 ## HUD能管多个并行的子代理吗? 能显示。开启子代理状态项后,HUD会展示当前有几个agent在跑、各自状态,这对用Agent团队做多代理并行的场景特别有用——并行最怕黑箱,把每个agent的状态摊开,你才知道是哪个卡住了。但它只负责“显示”,真正的编排和调度还是Claude Code本身在管。 ## Claude Code、OpenSpec、Superpowers三件套:刚需还是过度工程? - URL:https://zhangwenbao.com/claude-code-openspec-superpowers.html - 分类:AI编程与工具链 - 发布:2026-04-09 | 更新:2026-06-04 - 摘要:很多人把Claude Code、OpenSpec、Superpowers当成必装三件套,其实它们各补一个坑:需求跑偏、跳过测试、决策归档丢失。 - 关键词:MCP,Claude Code,AI编程 > **TLDR**:摘要:Claude Code负责“写”,OpenSpec负责“想清楚再写”,Superpowers负责“写得守规矩”——三件套各补一个坑:需求跑偏、跳过测试、决策归档丢失。但它们不是越多越好,30分钟的小脚本套全套就是过度工程。这篇讲清三者分别解决什么、怎么装起来跑通一条完整流水线,以及按任务工时该上几件,帮你既不裸奔也不过度。 > 摘要:Claude Code负责“写”,OpenSpec负责“想清楚再写”,Superpowers负责“写得守规矩”——三件套各补一个坑:需求跑偏、跳过测试、决策归档丢失。但它们不是越多越好,30分钟的小脚本套全套就是过度工程。这篇讲清三者分别解决什么、怎么装起来跑通一条完整流水线,以及按任务工时该上几件,帮你既不裸奔也不过度。 用Claude Code写代码爽快,但用久了三种糟心事会反复出现:你心里想的功能和它交付的不是一回事;它图快直接写实现、跳过了测试;还有最隐蔽的——这次会话里讨论出的技术决策,关掉窗口就蒸发了,下次它读不到,又把同样的弯路走一遍。 OpenSpec和Superpowers这两个开源框架,正是冲着这三个坑来的。配上Claude Code,业内有人把这套组合叫“三件套”。带客户做独立站后端时实测下来的结论很明确:它确实能把AI编程的稳定性拉上一个台阶,可它也绝不是无脑全上——用错场景,三件套带来的流程开销比它省的还多。先把每件干什么讲透,再谈什么时候该上。 ## Claude Code、OpenSpec、Superpowers各自在补哪个坑? 三个工具对应三个具体的痛点,一一对上就好记: - 坑一:AI做出来的不是你要的。根源是需求理解有偏差,你一句话带过的地方,它自行脑补。OpenSpec用一层规格文档把需求先对齐,治的是这个。 - 坑二:跳过测试直接写代码。根源是缺工程纪律,赶进度时测试是第一个被牺牲的。Superpowers用强制的TDD和代码审查纪律,治的是这个。 - 坑三:决策依据关掉聊天就没了。根源是没有版本化归档,这次为什么这么设计、否决了哪些方案,下次无从查起。OpenSpec的归档机制治的是这个。 这三个坑听着抽象,其实每个都在真实项目里反复咬人。坑一最常见的形态是:你说“做个登录”,它给你做了个只有用户名密码、没有任何限流和锁定的登录,因为你没说、它也没问。坑二的形态是:功能跑通了,你一问“测试呢”,它才回头补几个走过场的断言。坑三最让人崩溃——上周你们刚讨论清楚“为什么不用第三方登录”,这周它又自作主张接了个OAuth,因为那段对话的上下文早就不在了。三个坑单独看都不致命,叠在一起就是AI编程“看着很快、其实在原地打转”的根因。 看出来了吗?Claude Code本身是那个“执行者”,干活快但没约束;OpenSpec在它前面加了“规划层”,Superpowers在它身上加了“纪律层”。三层叠起来,才凑成“想清楚→守规矩地写→把决策存下来”的完整闭环。这不是堆工具,而是把人类团队里“产品对需求、架构定方案、测试卡质量、文档留决策”那套协作纪律,搬到了一个人带AI的场景里。 ## OpenSpec、Superpowers到底是什么? OpenSpec是Fission AI团队做的开源框架,核心是规格驱动开发(Spec-Driven Development)。它把你的需求转化成几份结构化文档——提案(proposal.md)、规格(specs/)、设计(design.md)和任务清单(tasks.md),让人和AI在动手前就把“要做什么、做成什么样”白纸黑字定下来。它不绑定Claude,号称支持二十多种编程助手。 Superpowers则是Jesse Vincent(隶属Prime Radiant)做的开源技能框架,2025年10月发布后增长惊人——很多教程里写的“14万星”其实是旧数据,截至2026年中它已经冲到21万星以上,是当年最火的开源项目之一。它给Claude Code灌进一套工程纪律技能:测试驱动开发、代码审查、系统化调试、头脑风暴、并行子代理等等,许可证是宽松的MIT,商用无负担。 多说一句OpenSpec那四份文档的分工,因为这是它整套价值的地基。proposal.md是“为什么做、做什么”的提案;specs/目录里是“做成什么样才算对”的行为规格,用接近“在什么条件下、发生什么、得到什么结果”的方式写,刻意不碰实现细节;design.md记的是技术方案和关键决策——为什么选这个库、否决了哪种架构;tasks.md则是拆好的、可勾选的任务清单。四份各司其职,把一个模糊的需求层层落实成可执行、可验收、可追溯的东西。它还有意把单份规格控制在两三百行以内,就是怕内容太长AI读着读着丢了上下文。 一句话区分:OpenSpec管“规格和归档”,是流程的骨架;Superpowers管“写代码时的职业素养”,是执行的肌肉。两者职能有重叠(都关心质量),但侧重不同,后面会讲为什么缺一个就断链。值得一提的是,这俩都不是Anthropic官方出品,而是社区里长出来的开源框架——Superpowers能在半年里冲到二十多万星,本身就说明“给AI编程套一层工程纪律”是真痛点,不是少数人的洁癖。 从机制上看,Superpowers本质就是一大包精心调教过的Skill——它没发明新东西,而是把TDD、代码审查、系统化调试这些工程实践,封装成Claude Code原生支持的技能包,靠描述自动命中、按需加载。所以你要是已经搞懂了Claude Code的扩展机制,理解它就很快。反过来,要是对Skill、MCP、Hook这几样还没分清,建议先补一下MCP、Skills、Hooks的区别 (https://zhangwenbao.com/mcp-vs-skills-claude-code.html),再来看这套三件套会顺很多——你会发现OpenSpec多半通过MCP接入、Superpowers跑在Skills上、而“强制TDD”这种硬约束最终还得靠Hook兜底,三件套其实是建立在那三大扩展机制之上的一层应用。 ## 三件套怎么装起来才能跑通? 安装本身不复杂,关键是别抄错命令。三步走: 第一步,装Claude Code(前提是你有Claude的付费订阅): # macOS / Linux / WSL curl -fsSL https://claude.ai/install.sh | bash # Windows PowerShell irm https://claude.ai/install.ps1 | iex # 验证 claude --version 第二步,全局装OpenSpec并在项目里初始化(需要Node.js 20.19或更高): npm install -g @fission-ai/openspec@latest cd your-project openspec init 第三步,在Claude Code里装Superpowers插件: claude > /plugin install superpowers@claude-plugins-official openspec init会在项目里铺好规格目录的骨架,并把一套/opsx:开头的斜杠命令注册进来。常用的就那么几条,对应规格生命周期的四个阶段:/opsx:explore先调研和发散问题,/opsx:propose把想法变成那四份规格文档,/opsx:apply按规格逐个任务实施,/opsx:archive把完成的变更合并归档;中间还能用/opsx:verify核对完成情况。记住这条主线——探索、提案、实施、验证、归档,整套流程的命令就齐了,剩下的continue、bulk-archive之类都是辅助。 如果想让Claude直接调OpenSpec的能力,还可以把OpenSpec作为一个MCP服务器接进来,再在权限里放行openspec、npm、git相关命令。这里要提醒一句:装是装上了,三者怎么协同、谁该在什么时候出手,得靠你在CLAUDE.md里写清楚路由规则,否则它们职能一重叠就会打架。关于CLAUDE.md的作用域和写法,保哥在CLAUDE.md记忆配置指南 (https://zhangwenbao.com/claudemd-memory-guide.html)里讲过,这一步偷不得懒。 ## 一个认证API从需求到归档怎么走完整流程? 光看命令没感觉,跑一遍才知道这套东西到底改变了什么。拿一个最常见的活——“做个用户认证API”——走一遍全流程: 第一步,把需求规格化。不是直接让它写代码,而是先提案: > /opsx:propose 用户认证 API,Express + MongoDB + JWT。 功能:注册、登录、获取用户信息。 安全要求:bcrypt 加密,JWT 鉴权。 OpenSpec会据此生成那四份文档。注意这一步的价值不在“生成文档”,而在它会逼出你没想清楚的细节——令牌过期怎么处理?密码强度校验放哪?这些平时写到一半才发现的问题,被提前摆到了台面上。 第二步,复核计划。打开tasks.md,花五分钟通读任务顺序、有没有遗漏项、验收标准合不合理。这五分钟通常能省掉后面一两个小时的返工,是整套流程里性价比最高的一步。 第三步,启动执行。确认计划后让它开干。如果你在CLAUDE.md里要求了TDD,这时Superpowers的纪律就会接管,进入“红→绿→审查”的循环:先写一个会失败的测试(红),再写实现让它通过(绿),最后过一遍代码审查。这里有个让很多人意外的细节——Superpowers的TDD技能为了逼你真正测试驱动,会把你在写测试之前抢着写的实现代码删掉,强制“测试先行”。一开始会很不习惯,但它确保了测试反映的是需求、而不是反过来给已写好的代码补一张橡皮图章。 第四步,验证与归档。跑/opsx:verify看任务完成情况,确认无误后用/opsx:archive把这次变更的规格合并、版本化存档。这一步是坑三的解药:下次会话里,AI能读到“认证模块当初是怎么设计的、为什么选JWT而非session”,不会推倒重来。 整套跑下来,你会发现时间分配明显前移了:需求对齐和设计规划占掉两三成,真正写代码反而是水到渠成的部分。这跟“上来就让AI一把梭”的体感完全不同——慢在前面,快在后面,返工少了一大截。 这里值得停下来体会一个反直觉的点:很多人觉得“需求对齐占两三成时间”是浪费,毕竟那段时间一行代码都没产出。但真实的项目成本从来不在“敲键盘”这一段,而在“方向错了重来”和“上线后救火”这两段。propose把模糊地带提前照亮,apply阶段的TDD把边界提前钉死,archive把决策提前存档——这三下都是在拿“前期多花的确定时间”,去置换“后期不确定的巨额返工”。对一次性脚本这笔账不划算,但对要维护的系统,几乎稳赚。这也是规格驱动开发这套方法论的底层逻辑:把不确定性尽量往前赶,赶到改起来最便宜的阶段。 ## 为什么说三个工具缺一个就断链? 有人会问:我只用其中两个行不行?拆开看就知道每一个都卡着别人替不了的位置。 只用Claude Code:速度最快,但完全裸奔。同一个团队里代码风格各写各的,安全漏洞拖到测试阶段才暴露,需求理解全靠模型这次的发挥。适合一次性脚本,扛不住正经项目。 OpenSpec + Claude Code,缺Superpowers:有了结构化蓝图,但执行阶段没有“监理”。规格写得再好,写代码时偷工减料、跳过测试,规范和实现照样会偏离。蓝图挂在墙上,工地上没人盯。 Superpowers + Claude Code,缺OpenSpec:TDD和代码审查保住了质量,设计文档也有(存在docs目录里)。但它有个致命短板——没有多轮版本化归档。下次你做头脑风暴时,新的设计文档会直接覆盖旧的,历史决策就此丢失。这正是OpenSpec的Delta / Archive机制独占的能力:每轮变更增量归档、自动把“唯一可信规格”注入上下文。 所以三者是真正的“正交互补”:OpenSpec管规划与归档,Superpowers管纪律与质量,Claude Code管执行。任意拿掉一个,闭环就缺一块。这也解释了为什么它们职能虽有重叠,却不会自动互相谦让——你得在CLAUDE.md里明确谁管哪段,否则两个都想管设计文档时就会冲突。 ## 三件套实战,到底能稳到什么程度? 抽象的好处说再多,不如一个真实项目有说服力。保哥去年给一个宠物用品独立站做“订阅复购”功能,是个典型的“值得上全套”的活——要对接现有订单系统、要算复购周期和优惠、还要发提醒邮件,多人维护、上线后改不得。正好拿它当样本,看三件套实际改变了什么。 最让人意外的是propose阶段。还没写一行代码,光是把需求过成规格文档,就被逼出了七八个当初没想到的问题:订阅中途换地址怎么处理?优惠券和订阅价叠不叠加?用户取消订阅后历史数据留多久?这些放在“直接开写”的模式下,全都是写到一半甚至上线后才暴雷的坑。规格阶段提前把它们摆上桌,相当于把返工成本最高的那批问题,挪到了改动成本最低的时候解决。这一点的价值,怎么强调都不过分。 执行阶段Superpowers的TDD纪律也实打实兜了底。算复购周期那段逻辑有不少边界——月底下单、闰年、跨时区——按“测试先行”写,这些边界在写实现前就被测试钉死了,没出现“跑通了主流程、边界全是Bug”的经典翻车。最后这个功能的时间分配大致是:需求对齐和设计占了三成多,写代码占一半出头,验证修复一成多。账面上“写代码”的占比降下来了,但总耗时和返工反而更省——因为没有了那种“做完发现方向错了推倒重来”的大窟窿。上线之后那一版几乎没有回滚,这在以前“一把梭”的节奏里是不敢想的。 当然,这是个该上全套的活才有的回报。换成一个“给后台加个导出按钮”的半小时小活,同样的流程只会让你觉得处处是枷锁。所以下一节得认真聊聊:什么时候根本不该上。 ## 哪些场景根本不该上全套? 讲了这么多好处,必须泼盆冷水:三件套不是默认配置,乱上就是过度工程。按任务体量给一张决策表: 任务体量 | 推荐组合 | 理由 | 2小时内的原型 | 只用Claude Code | 写规格的成本不值 | 2到8小时的个人功能 | Claude Code + Superpowers | TDD和worktree防翻车 | 4到16小时的团队功能 | 三件套全上 | 多人协作需要规格对齐 | 大型项目/多功能并行 | 三件套 + 并行worktree | OpenSpec支持并行变更 | 一次性脚本 | 只用Claude Code | 没有维护需求 | 判断的核心就一条:这件事值不值得为它写规格、留归档。一个跑完就扔的脚本,套上propose、apply、archive全流程,纯属给自己添堵。反过来,一个多人协作、要长期维护的功能,省掉规格对齐这一步,后面扯皮的成本会成倍奉还。工具是服务目标的,不是用来表演流程完整度的。Superpowers里那个并行worktree的玩法尤其值得单独研究,保哥在Claude Code worktree并行开发 (https://zhangwenbao.com/claude-code-worktree.html)里专门拆过怎么让多条任务线互不打架。 ## 这套流程最容易踩哪几个坑? 把高频翻车点集中列一下,每条都有人栽过: - 把Spec写成了伪代码。规格该描述“行为”(在什么条件下、发生什么、得到什么结果),不是描述实现细节。一上来就写函数怎么实现,规格就失去了对齐需求的意义。 - 干完忘了archive。这是最常见的。不归档,下次会话AI读的还是旧规格,可能把已经做过的功能又实现一遍。/opsx:archive要养成肌肉记忆。 - 跳过头脑风暴直接干。省掉前期对齐,等于把技术决策的机会全压到事后,改动成本反而更高。 - 不看Plan就执行。tasks.md通读五分钟能省一两小时返工,这笔账太划算,别嫌麻烦。 - 30分钟的任务跑全套。前面反复说的过度工程,工具应该服务于目标,而不是反过来。 这五条里,前两条和归档有关、中间两条和“别图快跳步”有关、最后一条是总原则。说白了,三件套的价值全在“慢工出细活”,你要是处处想抄近道,那还不如不上,省得流程开销白白浪费。 ## 新手该按什么路线把三件套用熟? 一次全上手,多半被流程劝退。给一条循序渐进的路线: 第一周,只用Claude Code。先把“在终端里跟AI结对编程”这件事本身玩熟——怎么给上下文、怎么纠偏、怎么验证结果。基础不牢,加再多框架都是空中楼阁。 第二周,加Superpowers。这时候你大概率已经被“AI跳过测试”坑过一两次了,正好亲身体会TDD和代码审查纪律的价值。从一两个核心技能用起,感受“被强制写测试”从别扭到真香的转变。 第三周以后,按需加OpenSpec。当你开始做需要决策追溯、或者要多人协作的功能时,再引入规格和归档。带着真实的“我需要把决策存下来”的痛点去用,比一开始就背着全套流程跑顺畅得多。 这个顺序的逻辑是“先练手感、再加纪律、最后上规格”。它和把三件套当成“安装清单”一次性装完的思路正相反——工具的价值是在你撞到对应的痛点时才显现的,没痛点硬上,只会觉得处处是枷锁。想系统了解Claude Code本身怎么用得更顺,可以先读保哥的Claude Code最佳实践 (https://zhangwenbao.com/claude-code-best-practices.html)打底,再来上这套流程框架。 说到底,三件套是“刚需还是过度工程”这个问题,根本没有统一答案——它取决于你手上这个活值不值得被认真对待。一次性脚本上全套是过度工程,多人维护的核心系统裸奔则是埋雷。把这套工具想成一个“可调档位”的流程:小活松、大活紧,按任务体量自由组合,而不是非黑即白地全上或全不上。真正的高手,不是流程跑得最全的那个,而是每次都把档位调到刚好够用的那个。 ## 常见问题解答 ## OpenSpec和Superpowers能单独用吗,必须一起上? 能单独用,但各有短板。只上OpenSpec缺执行纪律,规格和实现易偏离;只上Superpowers缺多轮版本化归档,新设计会覆盖旧决策。两者互补,正经项目建议一起,小活按体量取舍即可。 ## Superpowers真的会删掉我写的实现代码吗? 它的TDD技能确实会在“测试先行”时,把你抢在测试之前写的实现删掉,逼你真正测试驱动。目的是让测试反映需求而非给已有代码补章。觉得太激进,可以在CLAUDE.md里调整对该技能的触发要求。 ## OpenSpec只能配Claude Code用吗? 不是。OpenSpec不绑定具体助手,官方称支持二十多种编程助手。它本质是一层独立的规格文档框架,Claude Code只是其中配合得最顺的执行端之一,你换别的AI助手也能用。 ## 装了三件套,开发会不会变慢? 前期会慢——需求对齐和设计规划要占两三成时间。但写代码和返工的时间大幅下降,整体往往更快、更稳。它牺牲的是“立刻开写”的爽感,换来的是少踩坑、少推倒重来,适合要维护的正经项目。 ## 怎么避免OpenSpec和Superpowers职能打架? 关键在CLAUDE.md里写清路由规则:谁负责设计文档、谁负责测试纪律、归档归谁管。两者都关心质量、职能有重叠,但不会自动互让,必须由你显式划清边界,否则容易在设计文档归属上冲突。 ## 什么任务根本不值得上这套流程? 两小时内的原型和一次性脚本。它们没有长期维护和决策追溯的需求,写规格、走归档纯属增加开销。这类活直接用Claude Code一把梭最划算,把三件套留给要协作、要维护的功能。 ## 权威参考资料 ## claude-buddy终端宠物怎么玩?顺便看懂Claude Code的扩展机制 - URL:https://zhangwenbao.com/claude-code-buddy-pet.html - 分类:AI编程与工具链 - 发布:2026-04-04 | 更新:2026-06-04 - 摘要:claude-buddy是给Claude Code终端养的一只ASCII宠物,19种形象、稀有度从灰到金、五项性格属性。但它真正的看点在实现方式:完全靠MCP服务、Skill、状态栏脚本、PostToolUse与Stop钩子这五个官方公开稳定的扩展点拼成,不碰二进制、不打补丁,所以每次升级都不掉链子。 - 关键词:Claude Code,插件架构,扩展机制 > **TLDR**:摘要:claude-buddy是给Claude Code终端养的一只ASCII小宠物——19种形象、稀有度从灰到金、五项性格属性,写代码时它会用看不见的HTML注释悄悄给你反馈。但它真正值得开发者研究的,不是“萌”,而是它的实现方式:完全靠Claude Code四个标准扩展点(MCP服务、Skill、状态栏脚本、PostToolUse和Stop两个钩子)拼起来,不碰二进制、不打补丁,所以Claude Code每次升级它都不掉链子。这篇拆清它怎么装、命令怎么用、那套“更新不掉”的架构到底怎么做到的、哪些功能是已实现哪些还是画饼,以及一只终端宠物对你的开发体验到底有没有实际价值。 > 摘要:claude-buddy是给Claude Code终端养的一只ASCII小宠物——19种形象、稀有度从灰到金、五项性格属性,写代码时它会用看不见的HTML注释悄悄给你反馈。但它真正值得开发者研究的,不是“萌”,而是它的实现方式:完全靠Claude Code四个标准扩展点(MCP服务、Skill、状态栏脚本、PostToolUse和Stop两个钩子)拼起来,不碰二进制、不打补丁,所以Claude Code每次升级它都不掉链子。这篇拆清它怎么装、命令怎么用、那套“更新不掉”的架构到底怎么做到的、哪些功能是已实现哪些还是画饼,以及一只终端宠物对你的开发体验到底有没有实际价值。 ## 一只终端宠物,凭什么值得正经开发者看一眼? 先说结论:如果你只把claude-buddy当成一个卖萌的玩具,那确实没必要花时间。但它身上有一个对每个想给Claude Code做扩展的人都极有价值的东西——它是一份“怎么用标准机制把功能稳稳挂上Claude Code”的活教材。 这只小宠物(GitHub仓库1270011/claude-buddy (https://github.com/1270011/claude-buddy),MIT许可,写到这篇时400多颗星、最新版本v0.5.2)的卖点写得很直白:“陪你写代码、能熬过每一次更新的永久伙伴”。注意后半句——“熬过每一次更新”。玩过一些第三方Claude Code增强工具的人都知道,最让人头疼的就是升级一次就坏一次:你装的东西如果是靠改Claude Code的二进制文件、或者hack它内部实现来工作的,那官方一发新版,内部结构一变,你的魔改立刻报废,得等作者跟着出新补丁。claude-buddy偏不这么干,它声明自己是靠MCP这种行业标准协议、而非二进制打补丁来实现的。这一个设计取舍,就把它和那些脆弱的魔改方案彻底区分开了。 所以这篇的重点,会落在“它是怎么做到不掉链子的”这件有技术含量的事上。卖萌只是它的皮,底下那套扩展架构才是值得你抄的作业。 ## claude-buddy到底是个什么东西? 把功能摊开看,claude-buddy提供的是一只长在你终端里的ASCII艺术小宠物,加一套围绕它的轻互动系统: - 19种形象:鸭子、龙、章鱼、墨西哥钝口螈(axolotl)等等,每种都有动画帧,会眨眼、会有待机小动作。 - 稀有度系统:从普通(Common,60%概率,灰色)一路到传说(Legendary,1%概率,金色)。配色用的是24位真彩色,跟着Claude Code的主题走,所以在终端里看着不违和。 - 五项性格属性:DEBUGGING、PATIENCE、CHAOS、WISDOM、SNARK(调试力、耐心、混乱、智慧、毒舌)。这套属性决定了它的“人设”,纯粹是趣味性的。 - “房子”里养多只:支持保存多个命名的宠物槽位,而且每个Claude配置档都有自己独立的状态目录——换个项目、换个profile,宠物状态互不串台。 最有意思的是它的反馈方式。宠物不会在屏幕上喧宾夺主地刷屏打扰你,它给的“评论”是藏在HTML注释里的——形如,平时你根本看不见,由一个钩子在合适的时机把它提取出来再呈现。这个细节后面讲架构时还会回来说,因为它正是“悄悄陪着、不碍事”这个体验的技术实现。 ## 怎么把claude-buddy装上?有哪些前置条件? 跟HUD那种走插件市场一条命令的玩法不同,buddy是克隆仓库、跑自带安装脚本装的。整套流程是: git clone https://github.com/1270011/claude-buddy cd claude-buddy bun install bun run install-buddy 装完重启Claude Code,敲一句/buddy,你的宠物就出来了。 前置条件得先核对清楚,不然容易卡在第一步: - Bun运行时:buddy用Bun而不是Node,没装的话先curl -fsSL https://bun.sh/install | bash装一个。 - Claude Code v2.1.80以上:版本太老,它依赖的扩展点可能还不全。 - jq:用来处理JSON,状态栏和钩子脚本会用到。 - 系统:Linux和macOS是一等公民,Windows目前还是实验性支持,介意稳定性的话Windows用户先观望或者上WSL。 这里提醒一句:网上能搜到一个叫“buddy crack”的东西,号称靠给Claude Code二进制打补丁来定制宠物。别碰它。这正是前面说的脆弱路线——补丁是绑死在某个具体版本上的,官方一更新就失效,而且改动官方二进制本身也有安全和合规风险。claude-buddy官方版走的是标准扩展机制,这是它和那条歪路最根本的区别,装的时候认准官方仓库。 ## buddy的命令都有哪些,怎么玩? 所有命令都走/buddy这个前缀,常用的这些足够你上手: - /buddy:显示宠物卡片,带ASCII艺术。 - /buddy pet:撸一下你的宠物(互动)。 - /buddy stats:看属性明细。 - /buddy pick:打开一个交互式TUI选择器,挑形象、稀有度。 - /buddy rename <名字>:改名,1到14个字符。 - /buddy save和/buddy summon [槽位]:把当前宠物存进某个命名槽、或者召唤回来。 - /buddy off和/buddy on:临时静音或恢复它的反应。 - /buddy statusline [on|off]:开关状态栏显示。 - /buddy frequency [秒数]:调评论冷却时间,嫌它话多就拉长,嫌它太闷就缩短。 - /buddy personality <文本>:自定义性格描述,给它注入你想要的人设。 - /buddy help:完整命令参考。 另外,bun run settings能改更底层的参数,比如评论冷却(cooldown)和状态存活时间(TTL)。日常玩下来,frequency是最值得调的一个——默认频率有人觉得刚好、有人觉得吵,按自己的容忍度拉一下就清净了。 这里多说一句多宠物槽位的实际用法,因为它比看上去有意思。前面提到每个Claude配置档有独立的状态目录,这意味着你可以给不同性质的项目配不同的宠物:给那个让你头大的遗留系统配一只“毒舌”值拉满的,给新起的好玩项目配一只软萌的,用/buddy save和/buddy summon在槽位间切换。这不只是好玩——它其实是一种轻量的上下文切换信号:当你看到终端里换了一只宠物,潜意识就知道“我现在切到另一个项目了,心态也该跟着切”。一个本来纯装饰的功能,被用出了点心理锚点的味道,这是buddy设计上很妙的小心思。 ## 它凭什么能“每次更新都不掉”?拆开看架构 先讲清楚“升级一次坏一次”到底是怎么发生的,你才懂buddy这套设计的分量。Claude Code是个高速迭代的工具,几乎每周都有新版本,内部的代码组织、函数命名、数据结构随时可能动。一个靠hack内部实现工作的扩展,等于把自己焊死在某一版的内脏上——官方一重构,焊点就断。你昨天还好好的宠物,今天claude一升级就消失了,作者得熬夜逆向新版本、再发补丁,你还得手动重装。这种循环,玩过脆弱魔改的人都受够了。 buddy能跳出这个循环,秘密在于它只用官方公开、稳定的扩展点,一共五个,各管一摊: - MCP服务:提供宠物相关的工具和指令。MCP(模型上下文协议)是跨厂商的行业标准,Claude Code对它的支持是长期稳定的接口,不会随便改。 - Skill:负责路由/buddy这些命令。Skill本质就是带说明的Markdown文件,告诉Claude什么时候该干什么。 - 状态栏脚本:宠物在终端底部的动画显示,就是一个挂在官方status line机制上的shell脚本。这跟Claude HUD那篇 (https://zhangwenbao.com/claude-hud-guide.html)讲的是同一套底层机制——Claude Code把会话数据喂给脚本,脚本爱画什么画什么,buddy画的就是只动来动去的小动物。 - PostToolUse钩子:在每次工具调用之后触发,buddy用它来侦测“刚才那步是报错了还是测试过了”,好让宠物做出对应反应。 - Stop钩子:在一轮回答结束时触发,buddy用它把那些藏在注释里的评论提取出来呈现给你。 作者自己有一句话点得特别透:“MCP是行业标准协议,Skill是Markdown文件,钩子和状态栏是shell脚本。”——你品品,这五样东西没有一个是Claude Code的私有内部实现,全是官方对外承诺、有文档、有版本兼容保证的公开接口。官方升级时会尽量保持这些接口的稳定,所以挂在上面的buddy自然就跟着稳了。这跟打二进制补丁的思路是天壤之别:补丁依赖的是“我知道这个版本的内部长什么样”,而内部是随时会变的;扩展点依赖的是“官方答应过这个接口不乱动”,这是有契约的。 钩子这块是理解buddy的关键,PostToolUse和Stop这两个时机的语义、退出码怎么影响主流程,官方Hooks文档 (https://code.claude.com/docs/en/hooks)讲得很细,也是搞清楚“宠物为什么能在恰当时机冒出来”的权威出处。如果你想自己动手做点更实用的Claude Code扩展,buddy这套“MCP管能力、Skill管命令、钩子管时机、状态栏管显示”的分工,几乎是个可以照搬的模板,Claude Code整体的扩展模型在官方插件文档 (https://code.claude.com/docs/en/plugins)里有系统说明。 ## 从buddy能学到什么:给Claude Code做扩展该挂在哪? 把宠物放一边,buddy这套架构其实回答了一个所有想给Claude Code做扩展的人迟早会撞上的问题:我的功能,到底该用MCP、Skill、钩子还是状态栏来实现?这四个挂载点不是随便选的,各有各的擅长,选错了要么实现不了、要么别扭。buddy把四个全用上、且分工清晰,正好是一份对照样板。 拆开这套分工的逻辑:要给Claude新增一种它能主动调用的能力,用MCP——它是跨厂商的标准协议,Claude会把MCP工具当成自己能力的一部分按需调用,buddy用它来暴露宠物状态相关的操作。要响应用户敲的某个命令,用Skill——它是Markdown写的,负责把/buddy这类输入路由到对应动作,轻量、好维护。要在某个时刻自动做点事、不等用户开口,用钩子——它绑在工具调用前后、回答结束这些固定时机上,buddy的PostToolUse侦测报错和测试、Stop提取评论,全靠它。要在屏幕上持续显示点什么,用状态栏——它就是个一直在跑的渲染脚本。MCP和Skill到底该怎么分工、各自适合什么,MCP和Skills怎么选 (https://zhangwenbao.com/mcp-vs-skills-claude-code.html)那篇里掰开讲过,buddy正好是把两者放在一起用的好例子。 这里头钩子是最容易被低估、也最强大的一个。很多人以为钩子只能拿来跑个lint、格式化一下代码,其实它的本质是在Claude Code的生命周期里插入你自己的逻辑——什么时机触发、能不能拦截、退出码怎么影响主流程,这些语义决定了你能用它干多复杂的事。buddy用它做了件很巧的事:不打断主流程,只在Stop时悄悄把宠物的话捞出来。想把钩子吃透,建议直接对着Claude Code钩子实战 (https://zhangwenbao.com/claude-code-hooks-guide.html)那篇边读边试,它讲清了每个事件的触发点和退出码约定,这是写任何钩子型扩展的地基。 记住这套对应关系,你以后看任何Claude Code插件,都能一眼拆出它“用了哪几个挂载点、各自负责啥”,自己动手时也不至于把该用钩子的事硬塞进Skill里。buddy最大的教学价值,就在这。 再延伸一点,这套“只挂稳定接口、不碰内部”的原则,其实是任何长期维护的扩展都该守的工程纪律,不止Claude Code。你给浏览器写扩展、给编辑器写插件、给任何高频迭代的平台做二次开发,都会面对同一个抉择:是图省事去hack它的内部实现,还是老老实实只用它对外承诺的公开API。前者上手快但脆,后者起步慢但稳。buddy选了后者,所以它能在一个每周都变的宿主上活得很安稳。一个卖萌的小工具,把这条严肃的工程原则演示得清清楚楚,这也是它值得花一整篇来讲的原因——价值远超出“萌”本身。 ## 哪些功能已经能用,哪些还只是画饼? 这一节保哥得替你把丑话说在前面,因为网上不少介绍把这只宠物吹得过头了。 把仓库的实际状态对照着看,已经实现、现在就能用的是:19种形象与动画、稀有度系统、五项性格属性、多宠物槽位(menagerie)、基于HTML注释加Stop钩子的反馈、各种/buddy命令、状态栏显示。这些是实打实的。 但有一批被到处转载、听起来很诱人的功能,其实还挂在规划(planned)清单上,并没有真正落地:多宠物的等级与经验值成长、结对编程式的主动协助、随代码质量和时间变化的心情系统、跨会话记忆、成就系统、社区贡献的新物种。换句话说,今天的buddy是一只“有形象、有性格、会按你写代码的结果做即时小反应”的宠物,但它还不会“成长”、不会“记住”你昨天干了啥、也不会真的帮你写代码。如果你冲着“一只会陪你结对编程、还记得历史的AI伙伴”去装,会失望。 保哥点破这点不是泼冷水,而是因为分清“已实现”和“路线图”是判断一个开源工具值不值得现在投入的基本功。v0.5.2这个版本号也诚实地告诉你:它还在早期。真要长期记忆这种能力,今天更成熟的方案是专门的记忆插件,claude-mem深度拆解 (https://zhangwenbao.com/claude-mem-deep-dive.html)里讲过那条线,跟buddy的“萌系陪伴”完全是两码事。 顺便给个看开源项目的通用方法:别只看README顶部那段吹得天花乱坠的功能简介,往下翻到“Roadmap”“Planned”或者带着复选框的待办清单,再对照Issues和最近的提交记录,你才能拼出它“现在真有什么、将来打算有什么、最近还在不在动”的真实画像。很多被社区文章转疯的“神器”,光环都来自路线图里的画饼,落到当下版本其实还很骨感。buddy算诚实的,把规划和现状分得挺清楚;但养成自己核对的习惯,比信任任何二手介绍都靠谱——这条对你评估所有AI开源工具都适用,不止这只宠物。 ## 一只终端宠物,对开发体验到底有没有用? 聊点实在的——抛开技术,buddy这种东西对你的实际工作有价值吗?保哥的看法是:有,但价值在一个容易被工程师轻视的维度上——开发体验和情绪。 跟AI结对写代码,是一件意外地有点孤独、又容易疲劳的事。你一个人盯着终端,连续几小时在“描述需求—等它干—审它的活”之间循环,很容易陷入一种麻木的机械感。一只会在你测试通过时给个小反应、在报错时露出一脸无奈的宠物,提供的是一点点拟人化的陪伴和即时正反馈。这东西对生产力的直接贡献趋近于零,但对“让你愿意多坐一会儿、心情不那么干”的间接贡献,是真实存在的。游戏化(gamification)能让枯燥的事多一点黏性,是被反复验证过的,buddy就是把这套用到了写代码上。 举个具体场景你就懂了。深夜赶一个需求,连着跑了二十几轮,测试红了又绿、绿了又红,人是会烦躁的。这时候终端角落那只小章鱼,在你这次测试终于全绿时蹦出一个得意的小表情,你大概率会忍不住笑一下——那一笑值不值钱?对纯理性的工程视角它一文不值,但对一个人能不能心平气和地把活干完,它有用。开发者其实是高情绪消耗的人群,长期面对枯燥和挫败,需要一些低成本的情绪缓冲。buddy提供的就是这种缓冲,便宜、不打扰、可随时关。把它理解成桌上的一个解压小摆件,而不是一个生产力工具,期待就对了。 顺带一提,buddy这种把仪式感注入工具的做法,在国内开发者里其实接受度不低。很多人会给自己的终端配主题、配字体、配花哨的命令行提示符,本质都是在给冷冰冰的工作环境注入一点个人趣味和掌控感。一只可以改名、可以挑形象、还分稀有度的宠物,正好踩中这个心理——它让“我的开发环境”更像“我的”,而不是一个千篇一律的黑底白字盒子。 当然,它不适合所有人,这几种情况建议别装: - 你觉得终端里多任何一个动来动去的东西都分心:那它对你就是纯负担,/buddy off都嫌多,直接别装。 - 纯远程/CI/无人值守环境:宠物的价值在交互式陪伴,自动化流水线里它毫无意义。 - Windows重度用户且追求稳定:当前Windows还是实验性支持,可能有坑,介意就先观望。 - 资源极度敏感的环境:它要常驻一个MCP服务和若干钩子脚本,虽然开销很小,但极端场景下能省则省。 说到底,buddy是那种“懂的人会心一笑、不懂的人觉得无聊”的工具。它不解决任何硬问题,但它让一件越来越日常的事——和AI一起写代码——多了一丝人味。这个定位,它自己拿捏得挺准。 ## buddy和Claude HUD,都长在状态栏上,冲突吗? 不少人会同时对这两个感兴趣,得说清楚它们的关系。buddy和HUD底层都用到了Claude Code的状态栏机制,但服务的目的完全不同,也基本不冲突,可以并存。 HUD是理性的:它往状态栏塞的是上下文用量、Token、工具活动这些帮你做决策的硬信息,本质是可观测性工具。buddy是感性的:它往状态栏塞的是一只活物,提供的是情绪价值,本质是开发体验工具。一个回答“我现在该不该收尾”,一个回答“写得有点累,逗个乐”。真要同时用,注意状态栏空间有限,两边都想显示可能会挤,建议给HUD留主位(信息更要紧),buddy用紧凑或者按需/buddy statusline off临时让位。理性和感性,按你当下的需要分配那两行的地盘就好。 ## 常见问题解答 ## claude-buddy会不会随Claude Code更新就坏掉? 大概率不会,这正是它的设计卖点。它只用MCP、Skill、钩子、状态栏这些官方公开且稳定的扩展点,不碰二进制、不打补丁,所以官方升级时一般不受影响。反倒是那些靠改二进制的“crack”版本,更新一次坏一次,要避开。 ## 装buddy必须用Bun吗,能用Node吗? 官方安装流程用的是Bun,bun install加bun run install-buddy。没装Bun先用官方脚本装一个。它还要求Claude Code v2.1.80以上和jq。系统上Linux、macOS支持最好,Windows目前是实验性的。 ## 宠物的评论是怎么冒出来的,会污染我的代码吗? 不会污染。它的评论是写在形如的HTML注释里,再由Stop钩子在回答结束时提取呈现,平时不显示。这是一种刻意设计的“不打扰”机制,不会进到你真正的代码文件里。 ## buddy支持等级成长、跨会话记忆和结对编程吗? 暂时不支持。等级与经验值、心情系统、跨会话记忆、结对编程式协助这些都还在规划清单上,没有落地。现在能用的是形象、稀有度、性格属性、多宠物槽位和即时小反应。冲着成长或记忆去会失望,那类需求该找专门的记忆插件。 ## 同时装了Claude HUD和buddy会冲突吗? 基本不冲突,两者目的不同可以并存。HUD往状态栏放决策用的硬信息(可观测性),buddy放只提供情绪价值的宠物。唯一要注意的是状态栏空间有限,都想显示可能挤,建议优先保HUD,buddy按需用/buddy statusline off让位。 ## 我想自己给Claude Code做扩展,buddy有参考价值吗? 很有。buddy是“MCP管能力、Skill管命令、钩子管时机、状态栏管显示”这套分工的好范本,而且全用标准扩展点、不碰内部实现。想动手的话,先读官方的Hooks和插件文档把机制吃透,再照着buddy的结构搭,比从零摸索快很多。 ## Claude Code到底要花多少钱?Pro、Max、Team与API的价格和省钱机制全拆解 - URL:https://zhangwenbao.com/claude-code-pricing-guide.html - 分类:AI编程与工具链 - 发布:2026-04-03 | 更新:2026-06-04 - 摘要:不懂计费很容易在Claude Code上多花钱。这篇文章帮你算明白:手动写代码为什么订阅几乎总比API划算、Pro和Max差80美元值不值得升、团队混搭座位怎么省,以及API怎么靠提示缓存省九成、批量打五折、按任务选模型把账单压到地板,附2026年限额翻倍与Opus全档可用等关键变化。 - 关键词:Claude Code,AI编程,Claude定价 > **TLDR**:摘要:纠结Claude Code一个月要花多少钱,多半是被两条完全不同的付费路径绕晕了:订阅档(Pro每月20美元、Max每月100或200美元)按窗口给额度、账单可预测;API按token计费、弹性但要自己控成本。对绝大多数独立开发者,20美元的Pro就够用,重度才升Max;真正烧钱的场景是把它接进自动化流水线,那才该用API,并用缓存省90%、批量打五折、按任务选模型这三招压成本。这篇文章把每一档的价格、适用人群、省钱机制和2026年的定价变化讲清楚,帮你算明白到底该掏多少钱。 > 摘要:纠结Claude Code一个月要花多少钱,多半是被两条完全不同的付费路径绕晕了:订阅档(Pro每月20美元、Max每月100或200美元)按窗口给额度、账单可预测;API按token计费、弹性但要自己控成本。对绝大多数独立开发者,20美元的Pro就够用,重度才升Max;真正烧钱的场景是把它接进自动化流水线,那才该用API,并用缓存省90%、批量打五折、按任务选模型这三招压成本。这篇文章把每一档的价格、适用人群、省钱机制和2026年的定价变化讲清楚,帮你算明白到底该掏多少钱。 “Claude Code是不是很烧钱?”这是保哥被问得最多的问题之一。答案是——取决于你怎么用,而且差别可以大到十倍。同样写一天代码,有人花20美元订阅费封顶,有人按API跑掉六七美元一天,月底一算两三百美元。这不是谁被坑了,而是他们走在两条不同的计费路径上,各有各的适用场景。搞懂这两条路径,是省钱的第一步。 ## Claude Code到底是免费还是按token烧钱? 先把最基本的盘清楚:用Claude Code有两种掏钱方式,二选一。 第一种是订阅档。你按月付一笔固定的钱(Pro、Max或团队座位),换来一个按时间窗口刷新的使用额度,在额度内随便用,账单完全可预测,绝不会月底收到一张吓人的账单。第二种是API档。你拿一个API密钥,用多少token付多少钱,没有月费、没有窗口限制,但成本随用量浮动,得自己盯着。 这两条路对应两类人。坐在电脑前手动写代码、一问一答式地用,订阅档几乎总是更划算,因为人手敲键盘的速度天然限制了你能消耗的量,固定月费等于买了个“随便用”的安心。打个比方,订阅档像包月的自助餐,吃多吃少一个价,适合饭量稳定的人;API档像按用量称重的散点,吃多少付多少,适合饭量忽大忽小、或者要给一桌人统一点单的场景。而把Claude Code嵌进自动化脚本、批量处理任务、或者多人共享一套接入的,API档才是对的——它能弹性扩展,也只有它能精细地用上后面要讲的那些省钱机制。选错路径,是多数人花冤枉钱的根本原因:用API手动写代码可能比订阅贵几倍,用订阅跑大批量自动化又会频繁撞额度墙。 ## 各档订阅到底多少钱、该选哪个? 先看订阅这条路的完整价目。下面是官方价目页 (https://claude.com/pricing)上2026年的现行价格,所有档位都已经包含Claude Code的使用权: 套餐 | 月费 | 年付价 | 用量 | 适合谁 | 免费版 | $0 | — | 很有限 | 尝鲜、轻度问答 | Pro | $20 | 约$17/月(年付$200) | 基准1倍 | 大多数个人开发者 | Max 5x | $100 | — | 5倍 | 每天重度写代码、常撞Pro上限 | Max 20x | $200 | — | 20倍 | 全天高强度、几乎不想碰到上限 | Team标准座位 | $25/座 | $20/座/月 | 高于Pro | 需要协作管理的小团队 | Team高级座位 | $125/座 | $100/座/月 | 更高 | 团队里重度跑Claude Code的人 | 企业版 | $20/座起+按量 | 定制 | 定制 | 大型组织、合规需求 | 一句话版的选法:先从Pro开始,撞墙撞得勤了再升Max 5x,全天离不开它就上Max 20x。免费版只够你判断喜不喜欢,真要干活很快就不够用。说句实话,指望用免费版撑日常开发是不现实的,它的额度小到你刚进入状态就被打断,反而浪费时间——它的正确用途是花十分钟确认这工具适不适合你,确认了就果断上Pro,别在免费版上较劲。这20美元买的不只是额度,是不被打断的连续心流,对开发者来说这才是真正值钱的东西。这里有个2026年的好消息要单独说——最强的Opus模型现在所有付费档都能用了,不再是Max专属,所以Pro用户也能在额度内用上顶配模型,这点和很多过时教程说的不一样。 ## Pro、Max怎么选才不浪费钱? 这是个人用户最纠结的一档。Pro是20美元,Max 5x直接跳到100美元,贵了整整80美元,值不值?答案得用“等待成本”来算,而不是单看月费。 道理是这样的:一个熟练开发者,如果因为撞了Pro的额度上限而被迫干等额度刷新,等待的那段时间是有机会成本的。假设你的时间值钱,每天因为限额多等上半小时,这半小时的产出损失,很可能就超过Max比Pro每天多摊的那两三美元。对靠它吃饭、每天用满好几个小时的人,Max不是奢侈品,是用钱买回被打断的时间。反过来,如果你只是偶尔用、一周写几次代码,那20美元的Pro绰绰有余,升Max纯属浪费。 判断的关键信号就一个:你最近是不是经常撞到额度上限、被迫停下来等?很少撞,留在Pro;天天撞、撞得心烦,升Max 5x;升了5x还撞,再上20x。另外别忘了2026年5月那次调整——官方把Pro、Max的5小时窗口额度整体翻了一倍,还取消了之前高峰时段的额度缩减。这意味着现在的Pro比半年前能扛的活更多,升级前不妨先感受下新额度够不够,别按老印象急着掏钱。窗口和周限额的具体机制,Claude速率限制那篇 (https://zhangwenbao.com/claude-rate-limits.html)拆得很透,这里只谈花钱的取舍。 还有两个省钱细节值得一提。一是别一步到位。很多人一上来就买Max 20x求安心,结果用量根本撑不满,等于每月白扔100多美元。正确顺序是从Pro爬,让真实用量告诉你该停在哪一档,而不是凭想象买保险。二是年付。如果你确定会长期用,Pro年付能从每月20美元降到约17美元,一年省下三四十美元,Team的年付折扣更明显。但前提是你真能用满一年——为了那点折扣锁定一个你三个月后可能就不用的服务,不划算。订阅这事,宁可按月起步,确认离不开了再转年付锁价。 ## 团队该买Team还是凑一堆Pro? 团队场景常有个误区:既然Pro才20美元,五个人凑五个Pro不就行了,何必上Team?账不是这么算的。 Team版分两种座位:标准座位每座25美元(年付20美元),高级座位每座125美元(年付100美元),最少5座起,而且两种座位可以混搭——不是每个人都得买贵的。表面看Team标准座位比Pro贵5美元,但它换来的是单独凑Pro给不了的东西:统一的成员管理、SSO登录、集中计费、用量可见。对一个真正的团队,这些管理能力的价值远超那点差价。 实操上的搭配思路是:团队里真正重度跑Claude Code、当主力编程伙伴的那几个人,给高级座位拿足额度;其余偶尔用用的,标准座位就够。这样既不会让轻度用户的高级座位闲置浪费,也不会让重度用户卡在标准额度上干等。算笔账:一个10人团队,如果硬凑10个Pro是每月200美元但毫无管理能力,改成混搭几个高级座位加几个标准座位,多花的钱买回的是整个团队的协作秩序,通常很划算。 凑Pro还有几个隐性的坑。一是计费分散,10张个人订单的发票和报销是财务的噩梦,Team是一张集中账单。二是人员流动时,个人订阅没法回收和转移,员工离职那个Pro就废了,Team座位可以直接重新分配。三是没有用量可见性,谁在重度用、谁的座位闲置,凑Pro完全是黑盒,而Team后台能看清,方便按真实使用动态调整座位档次。对超过三五个人、还在持续招人的团队,这些管理能力迟早会从“可有可无”变成“不能没有”,早点上Team反而省去日后迁移的麻烦。 ## 什么时候该用API而不是订阅? 如果你的用法超出了“坐在那儿手动写代码”,就该认真考虑API了。API按实际消耗的token计费,2026年的主力模型价格是这样的(每百万token,输入/输出): 模型 | 输入 | 输出 | 定位 | Opus 4.8 | $5 | $25 | 最强推理,难题攻坚 | Sonnet 4.6 | $3 | $15 | 性能与成本的平衡点 | Haiku 4.5 | $1 | $5 | 快而便宜,简单任务 | 还有个常被忽略的福利:100万token的超长上下文窗口不额外加价,长文本和短文本同一个单价,这对要喂大量代码上下文的场景很关键。 那到底什么时候选API?三种典型场景。一是自动化集成——把Claude Code或SDK接进CI流水线、定时任务、批处理脚本,这种机器驱动的高频调用,订阅的窗口额度根本扛不住,只有API的弹性能撑。二是多人或多服务共享一套接入,用一个组织密钥统一管理和计费,比每人一个订阅更清爽。三是用量极不稳定,有时一天到晚跑、有时一周不碰,按量付费比固定月费更划算。需要提一句的是,一个全天重度手动开发的人,API消耗大约每天六美元上下,一个月下来比Max 20x的200美元未必省——所以手动开发还是优先订阅,API真正的主场是自动化和规模化。走API还有一件必做的事:设好预算上限和用量告警。API没有窗口限额这个天然刹车,一个写错的循环、一个没收住的批处理脚本,可能在你没注意时跑掉一大笔。在控制台配上每月预算上限和阈值提醒,是用API的人第一天就该做的功课,否则“弹性”很容易变成“失控”。这也是订阅档的隐性价值——它用额度墙替你挡住了意外超支。具体怎么用SDK把它接进自己的系统,Claude Agent SDK那篇 (https://zhangwenbao.com/claude-agent-sdk-guide.html)有完整示例。 订阅和API也不是非此即彼,混着用反而常常最优。一个常见的组合是:日常手动开发用Pro或Max订阅档兜底,账单可控;同时手里备一个API密钥,专门用来跑那些偶发的自动化批处理。这样既享受了订阅的省心和封顶,又能在需要规模化时随时调用API的弹性,两边的优势都吃到。判断某个具体任务走哪条路,就回到那个核心问题:这是我手动一步步在做,还是机器在批量地跑?前者用订阅,后者用API,混合工作流里两者各管一摊,井水不犯河水。 ## API省钱三板斧:缓存、批量、选模型 走API这条路,成本是可以被大幅压下来的,关键是用对三个机制。它们还能叠加,一起上省得更狠。 ## 第一板斧:提示缓存,最高省90% 这是API省钱里最强的一招。如果你的请求里有大段重复的前缀(比如每次都带上同一份系统提示、同一批代码上下文),可以把它缓存起来,后续命中缓存的部分只按基础输入价的0.1倍计费——也就是省90%。代价是写入缓存时要稍微多花点:按官方提示缓存文档 (https://platform.claude.com/docs/en/build-with-claude/prompt-caching),5分钟档的缓存写入是基础价的1.25倍,1小时档是2倍。回本很容易:5分钟档只要命中1次就赚,1小时档命中2次就回本。对反复带相同上下文的编程任务,这一招几乎是白捡的钱。 举个具体的数感受下。假设你每次请求都带一份2万token的代码上下文,用Opus,不缓存的话光这部分输入每次就是0.1美元(2万token按每百万5美元算)。开了5分钟缓存后,第一次写入贵25%约0.125美元,但之后每次命中只要0.01美元——连续问10轮,不缓存是1美元,缓存后是0.125加9次乘0.01约0.215美元,省了近八成。会话里你来回追问的次数越多,省得越狠。这也是为什么带大段固定上下文的Agent式工作流,几乎都该把缓存打开。 ## 第二板斧:批量API,输入输出双五折 如果你的任务不要求即时返回——比如批量生成、大规模评测、离线分析——用批量API(Message Batches) (https://platform.claude.com/docs/en/build-with-claude/batch-processing)异步提交,输入和输出token直接打五折,大多数批次一小时内就能跑完。对做SEO批量内容、批量数据处理的同行,这是实打实砍一半成本的机制。更妙的是它能和提示缓存叠加,两个折扣一起吃——缓存把重复前缀压到0.1倍,批量再在此基础上砍一半,跑大规模评测或批量改写时,最终单价能低到让人意外。唯一的代价是异步,提交后得等结果回来,不能像聊天那样即时拿到。所以判断标准很简单:这批活今晚跑完明早看结果行不行?行,就走批量,白省一半。 ## 第三板斧:按任务选模型 别什么活都用最贵的Opus。分类、格式整理、简单抽取这类任务,Haiku又快又便宜,输出价只有Opus的五分之一;日常对话和大多数编程任务,Sonnet的性价比最高;只有真正需要深度推理的硬骨头,才值得调Opus。把任务按难度分层、匹配对应的模型,是最朴素也最有效的省钱思路。一份混合工作流里,如果九成的活都能交给Haiku和Sonnet,整体成本就能压到全程用Opus的零头。 很多人不敢分层,是怕便宜模型办砸事。其实诀窍在于让强模型做决策、弱模型做执行:用Opus或Sonnet把任务拆解、定方案,再把那些机械的、有明确规则的子任务(格式转换、字段抽取、批量改写)派给Haiku去跑。这样既保住了关键环节的质量,又把大头的token量摊到了最便宜的模型上。保哥团队跑批量内容时就是这个套路,整体账单常年能控制在全程Opus的两三成,质量却没有明显掉。便宜模型不是用来替代强模型,是用来分担它不必亲自干的脏活。 ## 一笔典型的Claude Code账单长什么样? 把抽象的价格落到一个具体场景,更好判断自己该掏多少。设想三类用户。 第一类,独立开发者小李,每天用Claude Code写两三小时代码,手动一问一答。他的最优解是Pro,每月20美元封顶,额度足够这个强度,账单永远是20美元,省心。如果他升Max纯属浪费,因为他根本撞不到Pro的新限额。 第二类,全职接单的开发者老王,全天泡在Claude Code里、还经常并行开几个会话。他常撞Pro上限干等,时间就是钱,Max 5x的100美元对他是稳赚——多出的额度换回的产出时间,远不止那80美元差价。要是5x还不够,200美元的20x也值。 第三类,一个跑SEO批量内容的小工作室,每天用脚本自动生成和改写几百篇内容。这种机器驱动的高频、大批量场景,订阅档的窗口额度根本扛不住,必须走API。但只要用上缓存加批量加模型分层这三招,他们的实际成本能比想象中低得多——大部分改写任务交给Haiku和Sonnet批量异步跑,单篇成本能压到几分钱。账单虽然按量浮动,但单位成本被压到了地板。认清自己是哪一类,价格决策就不再纠结。 ## 用订阅跑Claude Code,怎么把额度用到极致? 选了订阅档的人,省钱的方式不是少花钱,而是让固定的月费榨出更多产出。核心是别浪费窗口额度。 有几招立竿见影。第一,精简你的CLAUDE.md。它每次会话都要全量加载进上下文,一份臃肿的配置文件等于每次开工都先烧一笔冤枉token,把它瘦下来省下的额度直接转化成你能多干的活,具体怎么减见CLAUDE.md极简写法那篇 (https://zhangwenbao.com/claudemd-minimalist-guide.html)。第二,简单任务别用Opus。订阅档虽然不直接按token收费,但额度消耗和模型档次、上下文大小正相关,杀鸡用牛刀会更快撞墙。第三,多用计划模式。让它先想清楚再动手,比反复试错返工省得多,返工才是最大的额度黑洞。第四,长会话适时压缩或重开,别让无关的历史上下文一直占着额度。把这几招养成习惯,同样的月费能扛的活会明显变多。 这里还有个反直觉的省额度思路:让AI少干活,不如让它一次干对。订阅档的额度本质是按消耗的算力走的,一个含糊的指令让它来回试三次,比一个清晰的指令让它一次到位要烧掉多得多的额度。所以把需求描述清楚、把上下文给准,看似多花了你几分钟,实则是最划算的省额度方式。另外,像批量改文件名、跑测试套件这种重复的脏活,与其让主对话一遍遍消耗额度,不如交给只读的子代理或脚本去办,把宝贵的主上下文额度留给真正需要它思考的任务。省额度的最高境界,是让每一次调用都物有所值。 ## 2026年的定价到底变了什么? 如果你的认知还停留在半年前,有几个关键变化值得更新,每一个都和你的钱包有关: - 限额翻倍:2026年5月,Pro、Max、团队的5小时窗口额度整体翻了一倍,还取消了高峰时段的额度缩减——同样的月费,现在能用的更多了。 - Opus不再是Max专属:最强的Opus模型现在所有付费档都能用,Pro用户也能在额度内用上顶配,不必为了用Opus硬升Max。 - Opus降价:Opus的API价格已降到每百万token输入5美元、输出25美元,和Sonnet的差距收窄,难题攻坚用Opus的负担小了不少。 - 超长上下文不加价:100万token窗口长短文同价,喂大代码库不再额外花钱。 - 缓存分档:提示缓存新增了5分钟和1小时两档写入,按你的复用频率灵活选。 这些变化的共同方向是:单位算力更便宜了,但前提是你得知道这些机制存在、并主动用上。不更新认知的人,还在按老价格、老限额做决策,多半在某个地方多花了钱。一个典型的例子是,不少人还守着“用Opus太贵,能省则省”的旧观念,硬是用次一级的模型啃难题,结果反复返工烧掉的额度比直接上Opus还多——Opus降价又全档可用之后,该上Opus的时候上,才是真省钱。价格信息有半年没看,就值得花十分钟重新核对一遍官方页面,这点功夫往往能换回实打实的省钱空间。整套工作流怎么搭才高效,Claude Code完全指南那篇 (https://zhangwenbao.com/claude-code-complete-guide.html)有全景串讲。 ## 三步决策法:到底该掏多少钱? 把上面的东西收成一个能直接照做的决策流程: 第一步看频率。一周才用几次,免费版或Pro;每天都用,Pro起步。第二步看场景。手动一问一答式写代码,订阅档;要接自动化、批量、多人共享,API档。第三步看你对“被打断”的容忍度。能等额度刷新、不急,Pro够;时间宝贵不想被打断,Max 5x;要全天满负荷几乎碰不到上限,Max 20x。团队则在这之上叠加管理需求,需要统一管控就上Team并按重度程度混搭座位。这三步走下来,绝大多数人的答案会自动浮现:偶尔用的选免费或Pro,每天靠它吃饭的选Max,做自动化规模化的转API并用足省钱三招,带团队的上Team。没有放之四海皆准的“最划算套餐”,只有最匹配你当下用法的那一档。 还有个常被忽略的动态视角:你的用法会变,套餐也该跟着变。很多人三个月前按轻度用量选了Pro,现在早已重度依赖却还没升级,天天撞墙却怪工具不好用;也有人冲动买了Max却用不满。所以别把选套餐当成一锤子买卖,每隔一两个月回头看一眼自己的真实使用强度,撞墙频率高了就升、闲置浪费了就降,让付费始终贴着实际需求走。订阅都是按月灵活的,没必要为一个过时的决策长期买单。 说到底,Claude Code的花钱哲学和做生意一样:不是越省越好,而是让每一块钱换回最多的产出。一个靠它一天多产出两小时的开发者,月费从20跳到100都是稳赚;一个一周用两次的人,免费版可能就是最优解。先认清自己是哪种用法、再随用量动态调整,价格这事自然就清楚了。 ## 常见问题解答 Claude Code最低多少钱能用? 免费版0元就能用,但额度很有限,只够尝鲜和轻度问答。真要日常写代码,每月20美元的Pro是大多数人的起点,它已经包含Claude Code和包括Opus在内的全部模型使用权,性价比最高。 Pro和Max差80美元,到底值不值得升? 用等待成本算,不是看月费。如果你每天因为撞Pro额度上限被迫干等,损失的产出时间往往超过Max每天多摊的几美元,那就值得升。判断信号很简单:最近常撞上限就升Max 5x,很少撞就留在Pro。2026年5月限额翻倍后,先感受下新额度够不够再决定。 用Claude Code该选订阅还是API? 手动坐着写代码选订阅,账单可预测且通常更便宜;接自动化流水线、批量处理、多人共享一套接入选API,按token弹性计费。一个重度手动开发者用API大约每天6美元,未必比Max划算,所以API的主场是规模化和自动化,不是手动开发。 API怎么用能把成本压到最低? 三招叠加。提示缓存对重复前缀按基础价0.1倍计费、最高省90%;批量API对不要求即时返回的任务输入输出双打五折;按任务选模型,简单活用Haiku、日常用Sonnet、难题才用Opus。三者可以同时用,能把账单压到全程用Opus的零头。 团队该买Team还是每人一个Pro? 真正的团队建议上Team。它换来单独凑Pro给不了的统一管理、SSO、集中计费和用量可见。最少5座起,标准座位每座25美元、高级座位125美元,可以混搭——重度跑Claude Code的人给高级座位,轻度的给标准座位,既不浪费也不卡额度。 2026年Claude Code的价格有什么新变化? 几个关键点:2026年5月Pro和Max的5小时窗口额度翻倍并取消高峰缩减;最强的Opus模型现在所有付费档都能用不再是Max专属;Opus的API价格降到每百万token输入5美元输出25美元;100万token超长上下文不额外加价。单位成本更便宜了,但要主动用上才省得到。 ## MCP、Skills、Hooks到底有什么区别?Claude Code三大扩展机制怎么选 - URL:https://zhangwenbao.com/mcp-vs-skills-claude-code.html - 分类:AI编程与工具链 - 发布:2026-04-02 | 更新:2026-06-04 - 摘要:MCP负责连接外部服务、Skills沉淀可复用流程、Hooks强制必做项——三者各管一层而非三选一。文章给出一个清晰的心智模型与对照表,纠正把MCP写进settings.json、@anthropic-ai/mcp-playwright虚构包名等网上常见错误。 - 关键词:MCP,Claude Code,Skills,扩展机制 > **TLDR**:摘要:Claude Code的三大扩展机制不是三选一,而是各管一层:MCP负责“能连到什么外部系统”,Skills负责“怎么把一套复杂流程做漂亮”,Hooks负责“哪些动作必须无条件执行”。判断该用哪个,只看三个问题——要不要连外部服务、要不要每次都强制、是不是一段可复用的流程。本文把三者的定位、配置、Token成本和最容易踩的坑讲清楚,顺手纠正几处网上教程常年抄错的命令和包名。 > 摘要:Claude Code的三大扩展机制不是三选一,而是各管一层:MCP负责“能连到什么外部系统”,Skills负责“怎么把一套复杂流程做漂亮”,Hooks负责“哪些动作必须无条件执行”。判断该用哪个,只看三个问题——要不要连外部服务、要不要每次都强制、是不是一段可复用的流程。本文把三者的定位、配置、Token成本和最容易踩的坑讲清楚,顺手纠正几处网上教程常年抄错的命令和包名。 用Claude Code久了,几乎所有人都会撞上同一个困惑:同样想让AI“自动做点什么”,到底该接个MCP服务器、写个Skill,还是挂个Hook?三个词听着都像“插件”,功能也确实有重叠,于是很多人随手抓一个就用,结果要么Token烧得飞快,要么该执行的步骤总被跳过。 问题的根子在于,这三样东西压根不在一个层面上。把它们的分工想清楚,选择就变得很机械了。这篇就按“一层一层”的思路拆开讲,每个机制配上当前官方的正确配置方式——网上不少教程还在抄两年前的老写法,包名和配置文件位置都变了,照着配只会报错。 ## MCP、Skills、Hooks分别在解决什么问题? 先给一个整体的心智模型。把Claude Code想象成一个能干的程序员,这三样东西分别给了它不同的东西: - MCP是“手臂”——让它能够到外部世界。没有MCP,Claude只能在本地文件和命令行里打转;接上MCP,它就能读GitHub issue、查数据库、调Sentry、发Slack。解决的是“能做什么”的问题。 - Skills是“工作手册”——告诉它一类活该怎么干得专业。把你反复交代的那套流程、规范、注意事项写成一个知识包,需要时自动调出来。解决的是“怎么把事做好”的问题。 - Hooks是“车间纪律”——规定哪些动作一定发生、不容商量。它不靠AI判断,到了某个生命周期节点就确定性地执行。解决的是“什么事必须做”的问题。 一个最关键的区别藏在“要不要AI推理”上:MCP和Skills都依赖模型自己判断要不要用、怎么用,所以有不确定性;Hooks是代码级触发,到点必执行,零推理、零随机。理解了这条,后面所有的取舍都顺了。 ## MCP是什么,什么时候才值得连? MCP全称Model Context Protocol(模型上下文协议),是一个开放标准,专门用来把AI和外部工具、数据源接起来。一个MCP服务器可以对外暴露三类东西:可执行的操作(Tools)、可读取的数据(Resources),以及预设的提示模板(Prompts)。 什么时候该连?官方给的信号很接地气:当你发现自己反复在“别处复制、粘贴进对话”时——比如把issue内容贴给Claude、把数据库查询结果贴进来、把监控面板的报错抄过去——就该给那个系统接个MCP,让Claude直接读、直接动手,而不是靠你当二传手。 接上之后,体验是质变的。以前你得先去GitHub把issue描述复制下来、贴进对话、再让它写代码;现在你可以直接说“把ENG-4521这个issue描述的功能实现了,并开一个PR”,它自己去读、去写、去提。查数据库也一样——“找出过去90天没下过单的客户邮箱”,它直连你的库跑查询。监控、设计稿、消息通知,凡是接了MCP的系统,都能用一句自然语言把跨系统的活串起来。这种“不用再当人肉中转站”的顺滑感,是MCP真正的价值所在,也是判断一个系统值不值得接的标准:你是不是经常在它和对话框之间来回搬运。 这里要纠正一个网上抄烂了的错误。很多老教程教你把MCP服务器写进.claude/settings.json的mcpServers字段,这是错的。.claude/settings.json管的是权限和钩子,不是MCP。正确的做法是用命令行添加,比如接微软官方的Playwright做浏览器自动化: # 正确:用 claude mcp add 添加 claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest # 接远程 HTTP 服务器(如 Sentry) claude mcp add --transport http sentry https://mcp.sentry.dev/mcp # 查看 / 删除 claude mcp list claude mcp remove playwright 顺带再纠一个常见的包名错误:浏览器自动化的官方包是@playwright/mcp(微软维护),不是某些教程里写的@anthropic-ai/mcp-playwright那种根本装不上的虚构名字。看到LLM生成的安装指令里出现奇怪的官方域名包名,先去核实再跑,别浪费时间。这类配置坑,保哥在Claude Code MCP配置指南 (https://zhangwenbao.com/claude-code-mcp-setup.html)里按local、project、user三种作用域整理过一份能直接抄的清单。 关于MCP的Token成本,也有个重要的“时效更新”。源文那个年代的共识是“MCP工具定义常驻上下文、很烧Token”,所以建议能少接就少接。但2026年起Claude Code默认开启了Tool Search:会话启动时只加载服务器名和说明,具体工具定义按需检索、用到才进上下文。这意味着多接几个服务器对上下文窗口的挤占已经小了很多。当然“按需接、用完撤”仍是好习惯,只是不必再像以前那样为了省Token而束手束脚。 ## Skills是怎么把“反复粘贴的指令”沉淀下来的? Skill的本质是一个可复用的指令包,落地形态就是一个SKILL.md文件,放在.claude/skills/目录下(项目级),或者放进你的个人目录跨项目共用。它最精妙的设计叫渐进式披露:平时Claude只看得到这个Skill的名字和一句话描述,大约几十个Token;只有当它判断当前任务跟这个描述对上了,才会把完整内容加载进来。 这套机制解决了一个老大难:你既想把领域知识、操作规范喂给AI,又不想这些内容一直占着上下文。渐进式披露让“知识储备很大”和“常驻成本很低”这两件事同时成立。 一个SKILL.md长什么样?开头是一段YAML头信息,至少有name和description两个字段,剩下正文就是这个技能的完整说明。这里头藏着写Skill的头号心法:description决定它会不会被正确触发。描述写得太宽泛,模型会在不相关的任务里误触发;写得太窄或太抽象,又该用的时候它认不出来。诀窍是把“什么场景下用我”写得既具体又有辨识度——与其写“处理文案”,不如写“当需要按某品牌语气改写产品描述时使用”。正文部分则尽量写成可执行的步骤、清单、反例,而不是一堆空泛的原则,模型照着做才不走样。调试Skill的过程,本质就是反复打磨这段描述,直到它在该出现时出现、不该出现时安静。 Skill大体分两类。一类是知识型,给模型补一块领域知识,比如你们团队的接口设计规范、品牌文案语气,Claude碰到相关任务自动检测、自动取用。另一类是任务型,封装一段完整流程,比如“发布前的检查清单”“数据库迁移的标准步骤”,可以手动触发也可以靠描述自动命中。 判断一件事该不该做成Skill,有个朴素的标准:同一套指令你已经粘贴过三次以上。第三次还在复制粘贴,就说明它该被沉淀成一个Skill了。关于怎么写一个真正好用、不会误触发的Skill,保哥在Claude Skills怎么用 (https://zhangwenbao.com/claude-skills-guide.html)里拆过官方的十几个示例技能,可以照着仿。 ## Hooks凭什么是“必须执行”的那一层? Hooks和前两者最大的不同:它完全不依赖AI推理。你把一段脚本绑到某个生命周期事件上,事件一触发,脚本就确定性地执行,模型连“要不要做”的判断权都没有。也正因为不进模型上下文,它的Token成本是零。 它适合什么?凡是你心里冒出“必须”“每次”“绝对不能”这种词的需求,都该用Hook,而不是指望模型自觉。最经典的例子是代码格式化和危险命令拦截: { "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "if": "Bash(rm *)", "command": ".claude/hooks/block-rm.sh" } ] } ], "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "prettier --write $CLAUDE_FILE_PATH" } ] } ] } } 注意这里的两层嵌套:外层matcher先筛“匹配哪些工具/动作”,内层hooks数组才是真正要跑的处理器。很多旧教程把它写成扁平的一层,照抄是不生效的。 钩子脚本怎么“拦截”住一个动作?关键在它的退出方式。以PreToolUse为例,Claude Code会把即将执行的工具和参数通过标准输入喂给你的脚本,脚本判断之后用退出码或一段JSON来表态:放行、还是拦下并把原因回传给模型。也就是说,钩子不只能“做点额外的事”,还能直接否决一次工具调用——这正是它能当安全硬闸的底气。相比之下,Skill里写一百句“千万别删生产库”,模型也只是“尽量记得”;而一个PreToolUse钩子匹配到危险删除命令直接返回拒绝,是物理上不让它发生。这种“能否决”的能力,是Hooks区别于另外两者最硬核的地方,也是为什么所有真正的安全约束最终都该落到钩子上。 还有一处该更新的认知:源文那种“Hooks就PreToolUse、PostToolUse、Stop、SessionStart、SessionEnd五个事件”的说法早就过时了。官方现在的事件多达三十多个,按节奏分成会话级、回合级、工具循环级,还细分出权限请求、子代理启动停止、压缩前后、工作目录变化、MCP交互等等。日常最常用的还是PreToolUse(执行前拦截)和PostToolUse(执行后处理)这两个,但要做精细自动化时,去翻一眼完整事件表往往能找到更贴的钩子。具体每个事件什么时候触发、能拿到什么数据,保哥在Claude Code Hooks指南 (https://zhangwenbao.com/claude-code-hooks-guide.html)里逐个讲过。 ## 一张表怎么快速分清三者? 把上面拆开讲的东西收成一张对照表,选型时扫一眼就够: 维度 | MCP | Skills | Hooks | 本质 | 连接外部服务的协议 | 可复用的指令/知识包 | 生命周期事件自动化 | 触发方式 | AI自主决定调用 | 自动检测或手动触发 | 事件到点强制触发 | 要不要推理 | 要 | 要 | 不要 | Token成本 | 中(Tool Search后大降) | 低(渐进式披露) | 零 | 确定性 | 低 | 中 | 高 | 最适合 | 连外部系统 | 沉淀复杂流程 | 强制必做项 | 这张表里,“确定性”那一行是选型时最容易忽略却最要命的。一件事如果“做了更好、不做也行”,交给Skills或MCP让模型相机决策没问题;可一旦它是“漏了就出事”的硬要求,就只有Hooks能给你兜底——因为前两者都建立在“模型这次恰好想到了”的前提上,而Hook不需要这个前提。 ## 同一个需求,三种机制各会怎么实现? 抽象的对比不如一个具体例子。就拿最常见的需求——“写完代码自动格式化”——看三种机制分别会怎么做、结果有什么不同: - 用MCP:接一个格式化服务的MCP服务器,然后指望Claude在写完文件后“想起来”去调它。问题是调不调由模型决定,赶任务的时候它很可能直接跳过。 - 用Skill:写一个“代码规范”Skill,描述里强调写完要格式化。比MCP稳一点,但仍取决于这个Skill这次有没有被激活、模型有没有照做。 - 用Hook:在PostToolUse上绑Edit|Write,每次落盘后自动跑prettier。这才是正解——它不商量、不遗漏,每次都执行。 看出门道了吗?同一个需求,关键不在“哪个机制能做”,而在“这件事允不允许偶尔被跳过”。格式化属于“绝对不能跳”,所以Hook完胜。反过来,“帮我查一下这个issue的上下文”这种活,本就该模型相机判断,硬塞进Hook反而别扭。选型的第一性原理,永远是先问这件事的“必须程度”。 ## 三者怎么拼成一条生产流水线? 真正成熟的用法,从来不是三选一,而是让它们各司其职、串成一条线。给一个团队部署流程的例子,你能看到三者怎么咬合: - Hook守底线(PreToolUse):任何危险命令先被钩子拦一道,这是不可逾越的安全闸,跟后面流程跑不跑没关系。 - Skill编排主流程(/deploy):一个部署Skill把整套步骤串起来——跑测试、打构建、走灰度,规范和顺序都写在里面。 - MCP干外部活:流程里需要在GitHub建Release Tag、往Slack发通知,这些跨系统的动作由对应的MCP服务器完成。 - Hook收尾留痕(Stop):会话结束时再挂一个钩子,把这次部署的审计日志确定性地写下来,满足合规。 这条链里,Hooks在头尾把关“必须发生”的安全和合规,Skills在中间编排“该怎么做”的业务流程,MCP负责把流程里需要的外部能力接进来。三层各管一段,谁也不越界,整个流程既灵活又有硬约束。这就是把三者当成“一套工具箱”而非“三个竞品”的正确姿势。 这套组合的妙处在于职责边界清楚,出了问题好定位。某个做跨境电商工具的团队就吃过亏:他们一开始把“部署前必须跑测试”塞进了部署Skill的描述里,结果赶版本的那几天,模型为了“快点上线”自作主张跳过了测试,线上当晚就出了故障。复盘时才想明白——“必须”二字就是Hook的信号,把它交给一段靠模型自觉执行的Skill,等于把安全垫子抽掉了。后来他们把测试这一关从Skill里拎出来、改挂成PreToolUse钩子,部署Skill只管编排顺序,再没漏过测试。一个需求摆在面前,先分清它是“必须项”还是“流程项”,错配的概率就大大降低了。 ## 这三者和斜杠命令、子代理又是什么关系? 聊到这里,常有人追问:那斜杠命令、子代理(subagent)跟这三样又怎么分?毕竟Claude Code的扩展点不止MCP、Skills、Hooks三个。把它们一起摆进同一张地图,思路会更清爽。 斜杠命令更像是Skill的“快捷入口”。你在.claude/commands/里写一个Markdown文件,就多出一条/命令名,敲一下把里面的提示词整段塞给模型。它和任务型Skill很像,区别在触发方式:斜杠命令永远是你手动敲出来的,而Skill可以靠描述被模型自动命中。简单流程用斜杠命令更直接,复杂到需要附带文件、脚本、知识的,就升级成Skill。 子代理则是另一个维度的东西——它解决的是“上下文隔离”和“并行”。当一个任务很重、会污染主对话的上下文,或者你想同时跑好几条独立的活,就派子代理去干,每个子代理有自己干净的上下文窗口,干完把结论汇报回来。它跟MCP/Skills/Hooks不是替代关系:子代理内部照样能用MCP连外部、靠Skill编排、被Hook约束。 所以更完整的心智模型是这样的:MCP/Skills/Hooks是三种“能力扩展”,斜杠命令是Skill的轻量触发器,子代理是“执行单元的复制与隔离”。它们彼此正交、可以自由组合。真正用熟Claude Code的人,脑子里装的不是“该用哪一个”,而是“这几样怎么搭”。这套组合拳的整体打法,保哥在Claude Code最佳实践 (https://zhangwenbao.com/claude-code-best-practices.html)里有更系统的梳理。 ## 新手该按什么顺序把三样用起来? 知道分工是一回事,落地时从哪下手又是另一回事。三样一起上手,多数人会被配置劝退。下面给一条亲测有效的渐进路线: 第一步,先把Hooks用起来。它最该优先,原因有三:零Token成本、效果立竿见影、而且确定性最高,最容易建立“掌控感”。挑一两个你最受不了的痛点——比如AI老是忘记格式化、或者你怕它误删文件——各写一个Hook,立刻就能感受到“机制兜底”比“反复叮嘱”靠谱多少。这一步花不了半小时,回报却最直接。 第二步,把高频粘贴的指令沉淀成Skill。用Claude Code一两周后,你一定会发现某几段话反复在打。这时候按“粘贴超过三次就沉淀”的原则,把它们各做成一个Skill。从一个小而具体的Skill起步,比如团队的提交信息规范,跑通了再扩。 第三步,按真实需求接MCP。不要为接而接。等你真的烦透了“把issue内容复制进对话”“把数据库结果贴过来”,再去接对应的MCP服务器。带着具体痛点去接,你会更清楚它解决了什么,也不会陷入“接了一堆却用不上”的尴尬。 这个顺序的底层逻辑是“先确定性、再复用性、最后连接性”:先用零成本的Hooks立住底线,再用低成本的Skills沉淀经验,最后才引入相对最重的MCP去打通外部。倒过来上手,往往一开始就陷进MCP的配置泥潭,反而把最该先用的Hooks给忘了。 ## 配置时最容易踩哪几个坑? 最后把高频翻车点集中提醒一下,每一条都是真金白银换来的: - MCP堆积:见什么接什么,一口气连十几个服务器。即便有了Tool Search帮你省Token,过多的服务器仍会让权限管理和调试变复杂。保持在2到4个真正高频的核心服务器,比贪多务得实在。 - 拿Skill实现“必须执行”:把“每次提交前必须跑测试”写成Skill,本质是把硬要求托付给概率。该用Hook就别用Skill,这是最常见也最致命的错配。 - 只用一种机制:有人全程只接MCP,有人只写Skill,把另外两层的能力浪费掉。三管齐下才能既灵活又可靠。 - 抄过时的命令和包名:前面反复强调过——MCP用claude mcp add不是写settings.json,Playwright是@playwright/mcp不是别的;Hooks是两层嵌套不是扁平结构。配置类的东西,永远以官方当前文档为准。 一个能直接落地的最小配置建议:2到4个核心MCP服务器、5到10个常用Skill、3到5个关键Hook。核心原则就一句——用最少的上下文成本,换最大的效率和确定性。把这条记牢,三者的取舍基本不会再纠结。 ## 常见问题解答 ## MCP、Skills、Hooks能不能只学一个就够用? 不建议。它们解决的是三类不同问题:连外部服务、沉淀流程、强制必做项。只用一个会在另外两个维度留下短板。最划算的学法是先吃透Hooks(零成本、立竿见影),再按需补MCP和Skills。 ## MCP服务器到底配在哪个文件? 不是.claude/settings.json。用claude mcp add命令添加,local和user作用域存在~/.claude.json,project作用域存在项目根的.mcp.json(可提交给团队共享)。settings.json管的是权限和钩子,别混。 ## 为什么我接的Playwright MCP装不上? 大概率是包名抄错了。官方包是微软维护的@playwright/mcp,命令为claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest。网上一些教程里的@anthropic-ai/mcp-playwright之类是不存在的虚构名,自然装不上。 ## Skills和Hooks都能做自动化,区别在哪? 区别在确定性。Skills靠模型判断要不要用、怎么用,有不确定性;Hooks到生命周期节点强制执行、零推理。凡是“必须每次都做”的事用Hooks,凡是“做了更专业但可相机决策”的流程用Skills。 ## 开了Tool Search,是不是就能随便多接MCP了? Token压力确实小多了,但仍别贪多。服务器越多,权限面、调试复杂度、潜在的提示注入风险都跟着涨。建议守在2到4个高频核心服务器,按需接、用完撤,依旧是更稳的做法。 ## Hooks真的就PreToolUse、PostToolUse那几个事件吗? 远不止。官方现在有三十多个生命周期事件,涵盖会话、回合、工具循环、子代理、压缩、权限等多个维度。日常最常用的是PreToolUse和PostToolUse,但做精细自动化时翻一眼完整事件表,常能找到更贴切的挂载点。 ## 权威参考资料 ## CLAUDE.md不是写得越详细越好:实证研究支撑的极简写法与最优行数 - URL:https://zhangwenbao.com/claudemd-minimalist-guide.html - 分类:AI编程与工具链 - 发布:2026-03-30 | 更新:2026-06-04 - 摘要:CLAUDE.md写得越长,关键约束越容易被噪音淹没。这篇文章解释为什么精简的指令文件遵循度反而更高,用一条石蕊测试判断每行该留该删,讲清拼接加载机制下整条目录链的总量预算,以及为什么@import省不了上下文、路径作用域和钩子才是真正的正解。 - 关键词:Claude Code,AI编程,CLAUDE.md,上下文工程 > **TLDR**:摘要:很多人把CLAUDE.md当成越塞越好的知识库,结果AI反而更容易跑偏。ETH Zurich在2026年初的一项实测给出了反直觉的结论:人工精简的指令文件能让编程代理的成功率提升约4%,而让大模型自己生成的长文件,在8组评测里有5组成功率不升反降,还多烧20%以上的推理成本。这篇文章用这份研究和Claude官方现行规则,讲清楚CLAUDE.md到底写多少行最优、该写什么不该写什么,以及放不下时三条不靠堆字数的出路。 > 摘要:很多人把CLAUDE.md当成越塞越好的知识库,结果AI反而更容易跑偏。ETH Zurich在2026年初的一项实测给出了反直觉的结论:人工精简的指令文件能让编程代理的成功率提升约4%,而让大模型自己生成的长文件,在8组评测里有5组成功率不升反降,还多烧20%以上的推理成本。这篇文章用这份研究和Claude官方现行规则,讲清楚CLAUDE.md到底写多少行最优、该写什么不该写什么,以及放不下时三条不靠堆字数的出路。 保哥最近帮一个做户外装备独立站的技术团队看他们的Claude Code配置,打开根目录那份CLAUDE.md,足足240多行:项目历史、设计哲学、团队成员分工、连“我们崇尚简洁优雅的代码”这种话都写进去了。他们的困惑是——明明把所有规矩都交代得清清楚楚,AI却经常无视其中最关键的那几条,比如“改动支付相关代码前必须先走计划模式”。 这不是个例。把CLAUDE.md写成一本越来越厚的说明书,几乎是每个团队都会踩的坑。而真相恰恰相反:对CLAUDE.md来说,长度本身就是一种成本,写得越多,关键约束被稀释得越厉害。这篇文章不讲“CLAUDE.md是什么”那些基础,专攻一个被严重忽视的问题——写多少、写多精简,才是最优解。如果你还在纠结结构怎么搭、措辞怎么写,可以先看这篇CLAUDE.md怎么写才听话的实操篇 (https://zhangwenbao.com/claude-code-claudemd-guide.html),那篇管“怎么写”,这篇管“写多少、删什么”,正好互补。 ## 为什么你那份越写越长的CLAUDE.md,反而让AI更笨了? 先理解一件事:CLAUDE.md不是配置文件,是上下文。它在每次会话开始时被原样塞进模型的上下文窗口,和你的对话挤在一起。官方说得很直白——它是上下文而非强制配置,模型读到它会尽量遵守,但没有任何强制力。一个更隐蔽的细节是:CLAUDE.md的内容并不是作为系统提示词注入的,而是以一条用户消息的身份排在系统提示之后——这进一步说明它对模型只有“建议权”,没有“命令权”,越长就越像一段絮叨的开场白,越容易被后面的真实任务盖过。 这就带来一个被多数人忽略的连锁反应。你每多写一行,就多一行常驻token,每次会话都要重新加载、重新消耗;更要命的是,模型的注意力是有限的,当240行里有200行是无关紧要的背景介绍,那10行真正重要的安全约束就被淹没在噪音里。模型每次接到任务,都要先花一轮推理去“过滤”掉那些不相关的规则,才能找到该执行的那条。 所以那个户外团队的问题根本不是“规矩没写全”,而是“写太全了”。把项目崇尚什么、历史怎么演进这类对执行毫无帮助的内容删掉,把那条支付约束单独拎出来用强调标记顶在前面,AI的遵循度立刻就上来了。这正是极简主义的核心逻辑:CLAUDE.md的价值不在于覆盖多全,而在于信噪比多高。 ## 实证研究怎么说:写不写、谁来写,差别有多大? 这不是凭空的个人体感。2026年初,苏黎世联邦理工学院(ETH Zurich)的研究团队做了一项系统评测,论文叫《Evaluating AGENTS.md: Are Repository-Level Context Files Helpful for Coding Agents?》,专门量化了这类仓库级指令文件到底有没有用。结论值得每个写CLAUDE.md的人贴在显示器上。 他们的实验设计很扎实,用了两套互补的基准。一套是大家熟悉的SWE-bench Lite,300个任务来自11个热门Python仓库 (https://arxiv.org/abs/2602.11988);另一套叫AGENTbench,138个任务来自12个相对小众、但本身就带有开发者手写指令文件的仓库。测试对象是4个真实的编程代理:跑Sonnet 4.5的Claude Code、分别跑GPT-5.2和GPT-5.1 mini的Codex、以及跑Qwen3-30B的Qwen Code。每个代理都在三种条件下各跑一遍——不给任何指令文件、给一份大模型自动生成的、给开发者手写的那份。 第一个发现是好消息:代理是真的会读、会照做。当指令文件里提到某个工具,比如用uv来管依赖,代理使用这个工具的频率会涨到原来的1.6倍。这说明你写的话不是石沉大海。 但第二个发现就扎心了。开发者手写的精简指令文件,在AGENTbench上带来约4%的成功率提升;而让大模型自己生成的那份长文件,在8组评测设置里有5组成功率不升反降,平均往下掉0.5到2个百分点。更别提,带上这类文件后,推理成本普遍上涨超过20%——因为模型被鼓励去做更宽泛的探索,绕的弯路更多。 把这两个数字放一起看,信息量极大:指令文件本身是把双刃剑,写对了加4%,写错了反而扣分还多花钱。而“写错”的最典型形态,就是图省事让AI自己生成一大篇。顺带说一句,源头上有些二手文章把AI生成版的影响一刀切写成“掉3%”,那其实是某篇转载的标题党概括,论文原文给的是“5/8设置下降0.5到2个百分点”这个更克制也更准确的区间——这种地方查到原始论文核对一遍,正是判断一份SEO内容靠不靠谱的分水岭。 还有一个容易被读漏的结论:研究发现,不管是人工版还是AI生成版,指令文件都会“鼓励代理做更宽泛的探索”。听上去探索更多是好事,但对一个目标明确的编程任务,宽泛探索往往意味着多翻无关文件、多调用工具、多绕弯路,这正是推理成本涨20%的来源。换句话说,一份糟糕的CLAUDE.md不只是没帮上忙,它还在主动把代理的注意力往岔路上引。这和做SEO内容时的体会一模一样——给读者塞一堆“可能相关”的信息,不会让他更快找到答案,只会让他更快关掉页面。约束的价值在于收敛,不在于发散。 ## 三个最贵的误区,你大概率正踩着 顺着这份研究往下推,有三个误区几乎人人有份。每一个都在悄悄让你的CLAUDE.md从资产变成负债。 ## 误区一:CLAUDE.md越详细越好 这是最普遍的错觉。详细听起来总是对的,但对一份每次会话都要全量注入的上下文来说,详细等于昂贵加干扰。那个240行的文件里,真正能改变AI行为的指令可能就十几条,剩下的全是背景、解释、客套。删掉它们不会损失任何执行力,只会让剩下的关键规则更突出。记住石蕊测试这句话:删掉这一行,AI会因此犯一个具体的、能说得出名字的错误吗?说不出来,这行就该删。 ## 误区二:让大模型自动生成CLAUDE.md省事 这是被研究直接打脸的那个。让Claude自己分析代码库生成一份CLAUDE.md,听起来高效,但它生成的往往是“写干净的代码”“遵循最佳实践”这类通用废话——模型本来就会这些,写进去纯属重复,还把真正项目特有的约束给稀释了。这正是为什么AI生成版在评测里反而拖后腿。正确做法不是不用/init,而是把/init当起点,生成后逐行删改,只保留模型自己发现不了的项目特有规则。 ## 误区三:一个仓库一个大文件就够了 对单体仓库或者monorepo,把所有领域的规则全堆进根目录那一份CLAUDE.md,是另一个慢性毒药。前端团队写的样式约定,在你改后端API时纯属噪音;内容团队的发布规范,在调试构建脚本时只会添乱。这些不该挤在一起常驻,而该按路径拆开、按需加载——后面会讲具体怎么做。 ## 官方到底建议写多少行? 研究给了方向,Claude官方文档给了硬线。官方的内存机制文档 (https://code.claude.com/docs/en/memory)白纸黑字写着:每份CLAUDE.md目标控制在200行以内,更长的文件会消耗更多上下文并降低遵循度。注意措辞——不是“200行是上限”,而是“目标在200行以内”,言下之意是越短越好,200行是你该开始警觉的红线,不是舒适区。 这里还要纠正一个流传很广的旧说法:很多老教程说CLAUDE.md是“后面的覆盖前面的”。这是错的。官方现行机制是全部拼接(concatenate),不是覆盖。Claude Code会从你的工作目录一路向上遍历目录树,把沿途每一层的CLAUDE.md和CLAUDE.local.md全部收集起来,按从文件系统根目录到工作目录的顺序拼进上下文。也就是说,上层目录的规则不会被下层替换掉,而是叠加——这意味着如果你在monorepo里层层都写大文件,它们是会累加进同一个上下文窗口的,撑爆得更快。 结合起来理解就清楚了:200行是单份文件的目标,而拼接机制决定了你要对整条目录链上的总量负责。这正是极简主义在工程上的硬约束来源。关于四级作用域(管理策略级、用户级、项目级、本地级)各自放什么、加载先后顺序怎么排,CLAUDE.md记忆术那篇 (https://zhangwenbao.com/claudemd-memory-guide.html)里有完整的对照,配合这里的“总量预算”视角一起看会更立体。 ## 该写什么、不该写什么:一条石蕊测试走天下 知道了要短,下一步是判断哪些该留哪些该砍。官方给的判断标准其实很简单:CLAUDE.md只放那些“你希望AI每次会话都记在脑子里的事实”——构建命令、代码约定、项目布局、“永远要做X”这类硬规则。一旦某条内容变成了多步骤流程,或者只在代码库的某一小块才用得上,它就不该待在CLAUDE.md里。至于哪些内容本质上是写给人看的说明、该归到README而非CLAUDE.md,CLAUDE.md和README的分工那篇 (https://zhangwenbao.com/claudemd-vs-readme.html)里按受众、语气、内容、格式四条线拆得很细,这里不再展开。 下面这张对照表,是保哥给客户做CLAUDE.md减法时的标准清单: 该留在CLAUDE.md | 该删掉或挪走 | 构建测试命令(如pnpm test) | 项目背景、产品愿景、设计哲学 | 每次都生效的硬约束(命名规范、目录结构) | ESLint、Prettier已经强制的规则 | 反复纠正过两次以上的具体错误 | “写干净的代码”这类大模型本来就会的废话 | 用强调标记顶起的安全不变量 | 完整的多步骤发布流程(抽成Skill) | 只用一两行就能说清的项目特有约定 | 和README重复的“项目是什么”介绍 | 那条石蕊测试值得再说一遍,因为它能解决90%的纠结:把光标停在任意一行上,问自己——如果删掉这行,AI接下来会犯一个我能具体描述的错误吗?能,留下,最好还用IMPORTANT、NEVER、MUST这类标记把它顶起来;说不出会犯什么错,删。这一招比任何字数公式都好用。 ## 放不下了怎么办?三条不靠堆字数的出路 很多人不是不想精简,是真有一堆规则不知道往哪放。好消息是,Claude Code现在提供了三条机制,让你既能保留信息、又不让它们常驻上下文。关键是搞清楚它们在“省不省token”上的本质区别——这点连不少老用户都搞混。 机制 | 怎么用 | 是否真省上下文 | .claude/rules/路径作用域 | 规则文件加paths前缀,按文件类型匹配 | 真省,只在碰到匹配文件时才加载 | @import导入 | 用@路径语法引用其他文件 | 不省,被导入的文件启动时照样全量进上下文 | 抽成Skill | 多步骤流程做成Skill按需调用 (https://code.claude.com/docs/en/skills) | 真省,平时不占上下文,调用时才加载 | 先说最被低估的那个:.claude/rules/目录加路径作用域。你可以把规则拆成一个个聚焦的小文件放进.claude/rules/,每个文件顶部用YAML前缀声明它管哪些文件: --- paths: - "src/api/**/*.ts" --- # API开发规则 - 所有接口必须做输入校验 - 统一用标准错误响应格式 - 补全OpenAPI文档注释 这样一来,这条API规则只在Claude真正去读src/api/下的TypeScript文件时才加载进上下文;你改前端样式时它根本不出现。这才是monorepo拆分的正解——不是把大文件留在根目录硬扛,而是让每块规则只在相关时才现身。没写paths的规则文件则会在启动时无条件加载,优先级等同于.claude/CLAUDE.md,所以真正想省上下文,paths那行别漏。 第二条@import是最容易被误解的。它确实能让你把命令清单抽到docs/commands.md当唯一事实源,再让CLAUDE.md用@docs/commands.md引用它,改一处两边同步。但要清醒一点:@import解决的是“维护重复”,不是“节省上下文”——被导入的文件在启动时照样会被展开、全量塞进上下文窗口。所以拿@import当减肥手段是自欺欺人,它只是让组织更清爽,token一分没少。真要省,靠的是路径作用域和Skill。 第三条是把流程抽成Skill。CLAUDE.md适合放“构建命令是npm run build”这种一行事实;而“完整的灰度发布七步流程”这种长东西塞进去,每次会话都加载就是浪费。把它做成Skill,平时安安静静待在一边,只有当你真的要发布、Claude判断需要时才加载进来。事实留在CLAUDE.md,流程抽进Skill——这是官方反复强调的分工。 ## 一份50行级的极简CLAUDE.md长什么样? 讲了这么多原则,给个能直接抄的骨架。下面这份是保哥给一个跑Next.js的独立站项目精简后的版本,删到了50行出头,但每一行都经得起石蕊测试: # 项目约定 ## 命令 - 开发:`pnpm dev` - 测试:`pnpm test`(提交前必跑) - 构建:`pnpm build` ## 技术栈 - Next.js 15 + TypeScript 5.7 - 数据获取统一用 React Query,不要手写 fetch ## 硬约束 - IMPORTANT:改动 src/billing/ 下的代码前,先进入计划模式 - NEVER:把密钥写进代码或提交到仓库,一律走环境变量 - 接口处理逻辑放 src/api/handlers/,组件放 src/components/ ## 经验教训 - 这个项目的 SSR 页面别用 useEffect 取数据,会闪屏,用 server component 注意它没有的东西:没有项目介绍,没有“我们追求高质量”,没有把ESLint规则抄一遍,没有完整的部署流程(那个抽成了Skill)。它只回答一个问题——“一个新来的AI协作者,需要知道哪些这个项目独有、又说不出口的潜规则?”那段“经验教训”尤其值钱,它记录的是Claude在这个项目里真实犯过的错,是别处抄不来的项目专属知识。 ## 90秒自检:怎么给现有的CLAUDE.md做减法? 如果你手上已经有一份臃肿的CLAUDE.md,不用推倒重来,按下面这套90秒流程过一遍就能瘦身大半: - 从头到尾扫一遍,每碰到一行就做石蕊测试:删了它AI会犯具体错误吗?说不出来的,标记删除。 - 把所有“介绍性”“解释性”内容整段拎出来——项目背景、设计理念、团队介绍,这些挪进README,CLAUDE.md一行不留。 - 找出所有超过三步的流程,抽成Skill;CLAUDE.md里只留一句“发布流程见发布Skill”。 - 看有没有抄了Linter的规则(缩进、分号、引号风格),ESLint和Prettier已经强制的,全删。 - 检查矛盾:有没有两处规则打架,比如一处说用Redux一处说用Zustand?留一个权威来源,删另一个,否则模型会随机挑一个执行。 - 把剩下的安全相关硬约束,用IMPORTANT/NEVER/MUST顶到显眼位置。 - 开一个新会话,给Claude一个典型任务,看它是否遵循了你保留的关键规则。不遵循,说明那条写得还不够具体,改成可验证的措辞再试。 做完这一轮,绝大多数240行的文件会瘦到80行以内,而AI的遵循度不降反升。这就是减法的威力。 ## 精简之后,还有哪些进阶模式能让规则更聪明? 把CLAUDE.md做减法不等于把它做傻。精简的目标是去掉噪音,不是去掉智能。下面三个进阶模式,能在不增加常驻长度的前提下,让你的规则体系更聪明。 第一个是“经验教训”这一小节,前面模板里那段就是。它的妙处在于,它不是你坐在那儿凭空想出来的规则,而是从Claude的真实失误里长出来的。每当AI在这个项目里犯了一个具体的、第二次还可能再犯的错,你就把它浓缩成一行写进去。比如“这个项目的SSR页面别用useEffect取数据会闪屏”——这种知识没有任何通用教程会告诉你,它是项目独有的疤痕记忆,价值密度极高,完全配得上常驻上下文那点token。 第二个是条件化思维。与其在一份大文件里写“做API开发时要这样、做前端时要那样”,不如把它们物理隔开——API规则用paths作用域绑到接口目录,前端规则绑到组件目录。模型在哪个领域干活,就只看到哪个领域的规则,天然就实现了“条件触发”,还不占无关场景的上下文。这比在一份文件里写一堆if-else式的自然语言条件判断可靠得多,因为模型不擅长在长文里精确匹配条件分支。 第三个是和钩子联动。CLAUDE.md里可以写“提交前要跑测试”,但这条规则靠模型自觉,它可能忘。真正想让它每次必跑,是配一个Claude Code钩子(Hooks) (https://zhangwenbao.com/claude-code-hooks-guide.html)在对应生命周期事件上自动执行。这样CLAUDE.md里那行就可以从“记得跑测试”降级成一句轻描淡写的说明,甚至直接删掉——因为有钩子兜底,不需要再用宝贵的上下文反复叮嘱一件本可以自动化的事。把“能自动化的”交给钩子,CLAUDE.md自然就瘦了。 ## 本土化:独立站和SEO批量活里,精简CLAUDE.md怎么省钱省心? 对做跨境独立站、SEO批量内容的同行,CLAUDE.md的精简不是洁癖,是真金白银。保哥团队常年用Claude Code跑两类活:一类是给Shopify、WordPress主题做二次开发,一类是批量生成和改写内容、处理结构化数据。这两类活有个共同点——会话开得极其频繁,一天几十上百次。 这意味着CLAUDE.md的每一行token,都要乘以会话次数来算总账。一份臃肿到5000token的CLAUDE.md,跑100次会话就是50万token的纯浪费,还不算它拖低遵循度导致的返工。把它砍到800token,一天省下的就是实打实的额度——这一点在用订阅档、有5小时窗口限额的场景下尤其敏感,省下的token直接转化成你能多跑的活。 算笔更具体的账。假设一个10人的独立站开发团队,人手一份相同的项目CLAUDE.md,原本是4200行的庞然大物(别笑,monorepo根目录把所有子项目规则堆一起很容易到这个量级)。按平均每行15token估,单份就是6万多token;团队一天合计开300次会话,光是反复加载这份文件就要烧掉接近1800万token。把它按路径作用域拆开,让每次会话平均只加载相关的那600行,瞬间降到不足十分之一。这还只是显性成本,隐性的是:那4200行里夹杂的矛盾规则、过时约定,每次都在悄悄拉低产出质量,返工的工时才是真正的大头。精简CLAUDE.md,本质上是在给整个团队的AI协作降本。 还有一个本土化场景的硬道理:真正不能让AI碰的红线,别指望CLAUDE.md兜底。官方说得很清楚,CLAUDE.md是行为引导不是强制层。如果你的规矩是“绝对不能动生产数据库”“绝对不能删客户表”,这种零容忍的约束,正确做法是写成PreToolUse钩子——它是真正在工具执行前拦截的硬闸,不管模型怎么想都拦得住。CLAUDE.md负责“引导AI往对的方向走”,钩子负责“在它走错时一把按住”,两者分工,CLAUDE.md才能保持精简而不用承担它扛不住的责任。 说到底,精简CLAUDE.md和做SEO是一个道理:堆量从来不是答案,把每一份资源用在信噪比最高的地方才是。一份50行、每行都掷地有声的CLAUDE.md,胜过240行的自我感动。 ## 反过来想:什么情况下再精修CLAUDE.md也没用? 极简主义不是万能药。承认它的边界,反而能帮你把力气花在对的地方。有四种情况,再怎么打磨CLAUDE.md都收效甚微,得换工具。 一是一次性的临时需求。某个只做一次、下次不会再碰的特殊处理,没必要写进每次会话都加载的CLAUDE.md,直接在对话里告诉Claude就行——为一次性的事付常驻token的代价不划算。 二是规则本身太软、太主观。像“代码要优雅”“注释要有意义”这种没法验证的指令,模型读了也无从执行,写多少遍都白搭。要么把它具体成可验证的形式(“每个公开函数必须有一行说明它的副作用”),要么干脆别写。模糊指令是CLAUDE.md里最大的token黑洞。 三是需要跨会话自动积累的知识。如果你想让AI自己记住“这个项目的测试要先起一个本地Redis”,这类它在干活中自己摸索出来的经验,更适合交给自动记忆机制去沉淀,而不是你手动一条条往CLAUDE.md里抄。手写CLAUDE.md管“你想让它做什么”,自动记忆管“它自己学到了什么”,两者分工。 四是必须100%执行的硬约束。前面反复强调过,CLAUDE.md对模型只有建议权。任何“绝对不能”级别的红线,写进CLAUDE.md都有被忽略的概率,必须上钩子做硬拦截。把这类约束硬塞进CLAUDE.md,不仅不保险,还白白占着本该留给真正引导性指令的篇幅。认清这四条边界,你就不会再对着一份CLAUDE.md反复纠结那些它压根解决不了的问题。 ## 常见问题解答 CLAUDE.md到底写多少行最合适? 官方目标是单份文件控制在200行以内,越短越好。实测经验是大多数项目砍到80行以内反而遵循度更高。没有死的字数公式,但一旦超过200行还在涨,基本说明混进了不该放的东西——长解释、多步骤流程、和README重复的内容。200行是该警觉的红线,不是舒适区。 让Claude用/init自动生成CLAUDE.md行不行? 可以当起点,但别直接用。ETH Zurich的研究显示,大模型自动生成的指令文件在多数评测设置里反而拉低成功率,因为它爱写“遵循最佳实践”这类通用废话稀释关键约束。正解是把/init生成的当草稿,逐行删改,只留模型自己发现不了的项目特有规则。 把规则用@import拆到别的文件,能省上下文吗? 不能,这是最常见的误解。@import被导入的文件在每次会话启动时照样全量展开进上下文,token一分没省。它解决的是“同一信息维护两遍”的问题,让组织更清爽。真正想省上下文,要用.claude/rules/的路径作用域(只在碰到匹配文件时加载)或者把流程抽成Skill(按需调用)。 monorepo里规则太多,该怎么组织CLAUDE.md? 别把所有领域的规则堆进根目录一份大文件,那样改任何一块都要背上全部噪音。用.claude/rules/把规则按主题拆成小文件,每个文件用paths前缀声明它管哪些路径,这样前端规则只在改前端时加载、后端规则只在改后端时加载。还可以用claudeMdExcludes跳过其他团队不相关的CLAUDE.md。 CLAUDE.md里的多份文件是后面覆盖前面吗? 不是,这是老教程的过时说法。现行机制是全部拼接,不是覆盖。Claude Code从工作目录向上遍历,把每一层的CLAUDE.md和CLAUDE.local.md按从根到工作目录的顺序全部叠加进上下文。上层规则不会被下层替换,而是累加——所以整条目录链上的总量都要算进你的上下文预算。 精简了CLAUDE.md,重要的安全规则会不会失守? 恰恰相反,精简能让安全规则更被重视,因为它不再被噪音淹没。但要清醒:CLAUDE.md是行为引导不是强制层,零容忍的红线(如禁删生产数据)应该写成PreToolUse钩子,它在工具执行前真正拦截,不受模型判断影响。CLAUDE.md引导方向,钩子守住底线,分工明确才安全。 ## Claude Skills怎么用?17个官方技能拆解与SEO自动化 - URL:https://zhangwenbao.com/claude-skills-guide.html - 分类:AI编程与工具链 - 发布:2026-03-27 | 更新:2026-08-01 - 摘要:深度解析Anthropic官方开源的17个Claude Skills技能,涵盖文档处理、创意设计、开发工具、企业应用四大类别,提供完整的安装教程、技能选型策略与自定义Skill开发实操指南。 - 关键词:SEO自动化,Claude Code,Claude Skills,Anthropic > **TLDR**:摘要:Anthropic开源了17个官方Claude Skills,本文逐个拆解。这17个技能分文档处理、创意设计、开发工具、企业应用四大类,本文给完整的安装教程、技能选型策略和自定义Skill的开发实操指南,再讲怎么把这些技能串进SEO自动化工作流,帮你把Claude的能力真正用到日常活儿里。 > 摘要:Anthropic开源了17个官方Claude Skills,本文逐个拆解。这17个技能分文档处理、创意设计、开发工具、企业应用四大类,本文给完整的安装教程、技能选型策略和自定义Skill的开发实操指南,再讲怎么把这些技能串进SEO自动化工作流,帮你把Claude的能力真正用到日常活儿里。 如果你是一名SEO从业者,还在逐条敲提示词让AI处理重复的SEO任务,那你大概率还没接触到Claude (https://www.anthropic.com/claude)最具颠覆性的能力——Skills (https://docs.claude.com/en/docs/agents-and-tools/agent-skills)(技能系统)。 最近保哥作为嘉宾讲师做了多场SEO和SEO线下分享 (https://zhangwenbao.com/gallery/),不少听众纷纷来咨询保哥的SEO自动化 (https://zhangwenbao.com/seo-automation-tasks-tools-workflows-2026.html)是怎么做的?其实主要就是用了Claude Opus 4.6、各种定制的SEO和GEO的Skills、各种API、飞书等整合在一起。说实话,核心的东西就是Skills。Skills才是AI从"聊天工具"进化成"生产力引擎"的关键一步。Skills不是什么花哨的概念,它的思路非常朴素——把你反复使用的工作流程、最佳实践、脚本工具打包成一个文件夹,让Claude在需要的时候自动加载并执行。 在这篇文章中,保哥会把Claude官方仓库 (https://github.com/anthropics/skills/tree/main/skills)里的17个Skill逐一拆解,讲清楚每个Skill是干什么的、怎么用、适合什么场景,同时给出自定义Skill的完整开发策略。如果你是Claude的重度用户,正在使用Claude进行SEO自动化或者正在用Claude Code (https://zhangwenbao.com/claude-code-tips.html)做开发,这篇文章绝对值得你从头读到尾。 ## 什么是Claude Skills技能系统 Skills是由指令文件、脚本和资源组成的文件夹,Claude会在执行专项任务时动态加载这些内容来提升表现。每个Skill的核心是一个SKILL.md文件,里面包含YAML前置元数据和Markdown格式的指令。 打个比方:如果Claude本身是一个能力很强的通才,那Skills就是给它配上的一套套"专业工具包"。装上PDF处理的Skill,它就变成PDF专家;装上MCP构建的Skill,它就能帮你写出生产级的MCP服务器。 一个最简单的SKILL.md长这样: --- name: my-skill-name description: 描述这个技能做什么以及何时触发它 --- # 技能名称 [Claude在激活此技能时遵循的具体指令] ## 使用示例 - 示例1 - 示例2其中name是技能的唯一标识(小写、连字符分隔),description是触发机制的核心——Claude会根据这个描述来判断何时自动加载该技能。Anthropic在官方文档里专门提醒过一句:Claude目前倾向于"欠触发"技能(该用的时候没用上),所以描述写得稍微"强势"一点、多覆盖几个触发场景反而更稳。 ## Skills的技术架构:渐进式披露 Skills采用了一套精巧的三层加载机制: 第一层是元数据扫描阶段,Claude只读取SKILL.md的YAML头部,消耗大约100个token,判断是否需要激活这个技能。第二层是指令加载阶段,如果判断需要,Claude会加载完整的SKILL.md内容,通常在5000 token以内。第三层是资源按需加载阶段,只有在执行具体任务时,才会加载scripts、references等子目录下的具体文件。 这么设计的好处很实在:上下文窗口的消耗被压到最低,装一堆技能也不会拖慢Claude的响应速度。 ## 官方17个Skills (https://www.anthropic.com/claude)全景解析 Anthropic官方仓库目前提供了17个Skill,分布在skills/目录下。按功能可以划分为四大类:文档处理类(4个)、创意设计类(4个)、开发工具类(4个)、企业沟通类(3个),外加技能开发元技能(2个)。 ## 文档处理类Skills(4个) 这四个Skill是Claude文档能力的底层引擎,也就是你在Claude.ai里使用"创建文件"功能时背后实际运行的代码。它们以源码可见(source-available)的方式公开,方便开发者参考学习,但请注意不是Apache 2.0开源协议。 ### 1. docx——Word文档处理 这是整个技能库中最复杂的Skill之一。它不只是调用某个Python库生成Word文件那么简单,而是直接操作.docx文件底层的Open XML结构。 核心能力包括:创建带有目录、页眉页脚、分栏布局的专业Word文档;处理修订标记和批注(Track Changes);直接访问和编辑原始XML;支持超链接、书签、脚注等复杂元素。 它的工作流程分为几种模式——如果是创建新文档,走的是docx-js库的路线;如果是编辑已有文档,则是先解包ZIP、修改XML、再重新打包的流程。这个Skill内嵌了完整的ECMA 376和ISO/IEC 29500标准的XML Schema定义文件,覆盖面非常广。 ### 2. pdf——PDF文档处理 PDF处理Skill覆盖了你能想到的几乎所有PDF操作:文本提取、表格解析、PDF合并拆分、表单字段填充、水印添加、OCR识别、加密解密。 它内置了多个Python脚本,其中特别值得关注的是表单处理能力——extract_form_field_info.py可以自动分析PDF表单结构,fill_pdf_form_with_annotations.py则支持带注释的智能填充。对于经常需要处理合同、申请表等标准化PDF的用户来说,这个Skill是真正的效率利器。 ### 3. pptx——PowerPoint演示文稿处理 这个Skill的亮点在于HTML到PowerPoint的转换能力。很多时候我们手头有结构化的内容(比如用Markdown或HTML写好的报告),但需要交付为PPT格式,html2pptx.js这个转换脚本就能派上用场。 除此之外,它还支持幻灯片重新排序、内容批量替换、缩略图生成等高级操作,底层同样是基于Open XML架构。 ### 4. xlsx——Excel电子表格处理 相比前三个,Excel处理Skill的结构比较精简,但功能不弱。它的核心是一个公式重计算脚本recalc.py,确保在程序化修改Excel文件后,所有公式能正确重新计算。支持创建带有复杂公式、数据可视化和专业格式的电子表格文件。 ## 创意设计类Skills(4个) ### 5. algorithmic-art——算法艺术生成 这是一个非常有意思的Skill。它不是让Claude画画,而是让Claude编写基于p5.js的生成艺术算法——想象一下Art Blocks上那些由代码驱动的艺术作品。 工作流程分三步:先创建一个"算法哲学"文档(4-6段的设计理念描述);然后基于这个哲学用p5.js实现交互式算法;最后输出一个完全自包含的HTML文件,包含画布、参数控制面板和种子导航器。 种子(Seed)机制是这个Skill的精髓——同一个算法通过不同的种子值可以生成无限变体,但每个种子值永远对应完全相同的输出,实现了"可控的随机性"。 ### 6. canvas-design——画布视觉设计 如果说algorithmic-art是代码驱动的动态艺术,canvas-design则是更偏向静态视觉设计的Skill。它可以生成PNG和PDF格式的高质量视觉作品——海报、封面、信息图等。 这个Skill自带了超过50种专业字体(Lora、Crimson Pro、Arsenal SC、Big Shoulders等),并且在设计理念上有一个很有趣的要求:每次创作前都要先定义一个设计哲学(比如"Brutalist Joy"或"Chromatic Silence"),然后让这个哲学指导整个视觉实现。这种"先理念后执行"的模式值得借鉴。 ### 7. slack-gif-creator——Slack动画GIF制作 专门为Slack平台优化的GIF创建工具。它的独特之处在于内置了13种可组合的动画原语(弹跳、爆炸、淡入淡出、翻转、万花筒、变形、移动、脉冲、震动、滑动、旋转、摆动、缩放),你可以自由组合这些原语来创建复杂动画效果。 更实用的是它的自动约束验证功能:Slack对GIF文件有严格的大小限制(消息GIF最大2MB,表情GIF最大64KB),这个Skill会在生成时自动检测并优化文件大小,确保不超标。 ### 8. theme-factory——主题工厂 提供10套预设的专业主题(北极霜、植物园、沙漠玫瑰、森林华盖、黄金时刻、午夜银河、现代极简、海洋深度、日落大道、技术创新),每套主题包含完整的色彩方案和字体搭配规范。 它可以应用于幻灯片、文档、报告等多种场景,也支持基于用户输入生成全新的自定义主题。如果你经常需要为不同客户或项目切换视觉风格,这个Skill可以省去大量调色配色的时间。 ## 开发工具类Skills(4个) ### 9. web-artifacts-builder——Web工件构建器 这个Skill用于构建复杂的交互式Web应用,技术栈是React 18 + TypeScript + Vite + Tailwind CSS,并且预装了40多个shadcn/ui组件。 核心工作流程是:用init-artifact.sh脚本初始化项目 → 开发React应用 → 用bundle-artifact.sh打包成单个HTML文件。最终产物是一个完全自包含的HTML文件,可以直接在Claude.ai的Artifact面板中运行,也可以在任何浏览器中独立打开。 ### 10. mcp-builder——MCP服务器构建器 MCP(Model Context Protocol)是Anthropic推出的开放协议,用于连接AI模型与外部工具和数据源。这个Skill专门指导Claude构建高质量的MCP服务器。 它同时支持Python(FastMCP框架)和Node.js/TypeScript两种技术路线,内置了MCP最佳实践文档、评估指南和示例代码。这里要单拎出来说它的"评估驱动开发"理念——在完成MCP服务器编码后,会自动生成10个复杂测试场景来验证服务器的功能完整性。 如果你正在做AI应用集成,需要让Claude连接企业内部API或第三方服务,这个Skill是必学的。关于MCP协议的深入应用,保哥之前在GEO实施策略终极指南 (https://zhangwenbao.com/geo-strategy.html)中也提到过AI工具链整合对内容可见性的重要影响。 ### 11. webapp-testing——Web应用自动化测试 基于Playwright的Web应用测试技能。它的核心设计模式是"侦察-行动"(Recon-Act)——先通过截图和DOM分析了解页面当前状态,再执行具体的测试操作。这种模式比直接编写死板的测试脚本要灵活得多。 Skill内置了服务器生命周期管理脚本with_server.py,可以自动启动、监听和关闭开发服务器,支持前后端分离的双服务器测试环境。 ### 12. frontend-design——前端设计 这是一个对标生产级水准的前端界面构建技能。它的核心理念可以用一句话概括:避免"AI味"的设计。 Skill文档中明确列出了禁止使用的设计元素清单——通用渐变背景、紫色色调、千篇一律的圆角、模板化的布局模式,这些都是典型的AI生成界面特征。取而代之的是强调大胆的配色(主色占60-70%)、独特的字体搭配(禁用Arial)、恰当的标题字号(36-44pt标题、14-16pt正文),并且要求每次输出都必须经过视觉QA验证。 ## 企业沟通类Skills(3个) ### 13. brand-guidelines——品牌规范应用 这个Skill封装了Anthropic自家的品牌视觉规范,包括完整的色彩系统(主色#141413深色、背景色#faf9f5浅色、强调色#d97757橙色、蓝色#6a9bcc、绿色#788c5d)和字体系统(标题用Poppins、正文用Lora),并内置了智能字体回退机制。 虽然默认配置是Anthropic品牌,但它的设计思路完全可以复用——你只需要替换色值和字体配置,就能快速构建自己公司的品牌规范Skill。对于需要维护品牌一致性的结构化数据 (https://zhangwenbao.com/shopify-schema-seo-guide.html)来说,这种标准化的视觉规范配合Schema标记,能让搜索引擎更准地认出你的品牌。 ### 14. internal-comms——内部沟通写作 专注于企业内部沟通文档的写作技能。它预置了四种标准模板:3P更新(Progress进展/Plans计划/Problems问题)、公司通讯、FAQ文档和一般内部沟通。 每种模板都有详细的格式规范、语调指导和内容组织建议。如果你的团队每周都要写项目周报、季度复盘或者内部公告,这个Skill可以大幅减少写作时间并保持格式统一。 ### 15. claude-api——Claude API技能 这是一个教Claude如何更好地使用自身API的技能——听起来有点套娃,但实际上非常实用。它封装了Claude API的最佳实践,包括消息构建、工具调用、流式响应处理等关键操作的标准化实现模式。 对于在应用中集成Claude API的开发者来说,这个Skill可以帮助Claude生成更规范、更高效的API调用代码。 ## 技能开发元技能(2个) ### 16. skill-creator——技能创建指南 这是"造技能的技能",也是整个Skills生态中最有价值的Meta Skill。它提供了创建新技能的完整工作流:从需求分析、架构设计、编码实现到评估迭代。 它内置了三个关键脚本:init_skill.py用于初始化技能目录结构、package_skill.py用于打包和验证技能、quick_validate.py用于快速检查技能规范是否合规。 更强大的是它的评估系统——支持自动运行多轮测试、对比不同版本的输出质量、甚至还有专门的description improver脚本来优化技能描述,提升触发准确率。 ### 17. doc-coauthoring——文档协作 这个技能专注于多人协作场景下的文档编辑。它支持修订标记、批注管理和版本对比等功能,可以让Claude在编辑他人文档时保留完整的修改历史,方便多人审阅。 ## 如何安装和使用Claude Skills ## 在Claude.ai中使用 付费版(Pro、Max、Team、Enterprise)用户在Claude.ai中可以直接使用上述所有官方技能,无需额外安装。你也可以通过设置页面上传自定义Skill文件夹来扩展能力。 ## 在Claude Code中安装 Claude Code用户可以通过插件市场来安装官方技能包: # 添加官方技能市场 /plugin marketplace add anthropics/skills # 安装文档处理技能包 /plugin install document-skills@anthropic-agent-skills # 安装示例技能包 /plugin install example-skills@anthropic-agent-skills安装完成后,只需要在对话中自然地提到相关任务,Claude就会自动识别并加载对应技能。比如你说"用PDF技能提取这份合同的表单字段",它就会自动调用pdf Skill。 ## 通过Claude API集成 API用户可以通过Skills API端点来使用预置技能或上传自定义技能,具体操作可参考官方的Skills API Quickstart文档。 ## 手动安装到本地 如果你想在Claude Code中手动管理Skills,可以将Skill文件夹放在以下位置: 个人全局技能放在~/.claude/skills/目录(对所有项目生效),项目级技能放在项目根目录的.claude/skills/目录(仅对当前项目生效)。注意Skill必须是文件夹形式(包含SKILL.md),单个.md文件直接放在目录下目前无法被自动识别。 ## 自定义Skill开发实战策略 理解了官方17个Skill的设计模式后,我们来看看如何从零开始开发自己的Skill。保哥总结了一套经过验证的开发流程。 ## 第一步:明确技能边界 开发Skill之前最重要的决策是:这个任务适合用Skill来解决吗? Anthropic官方给出了一个清晰的决策矩阵:如果某个能力需要在多个Claude实例间共享,选Skill;如果需要独立的工作流和受限的工具访问,选Subagent;如果只是简单的格式偏好或角色设定,用Prompt就够了。 Skill最适合的场景是那些有固定流程、需要专业知识、且会被反复使用的任务——比如"按公司模板生成周报"、"用特定规范审查代码"、"按照SEO标准优化文章结构"等。 ## 第二步:设计目录结构 一个规范的Skill目录结构如下: my-skill/ ├── SKILL.md # 必需,技能定义和指令 ├── LICENSE.txt # 推荐,许可证 ├── scripts/ # 可选,可执行脚本 ├── references/ # 可选,参考文档 ├── assets/ # 可选,模板和资源文件 └── examples/ # 可选,用法示例 ## 第三步:编写高质量的SKILL.md SKILL.md的质量直接决定了技能的效果。以下是几个关键要点: description字段是灵魂,它决定了Claude何时会触发这个技能。建议写得尽可能全面,覆盖各种可能的触发场景。比如不要只写"处理Excel文件",而要写"处理Excel文件。当用户提到电子表格、数据分析、财务模型、公式计算、数据可视化、CSV导入导出等场景时,都应触发此技能"。 指令部分要遵循"渐进式披露"原则——最核心的操作指南放在SKILL.md开头,详细的参考文档放在references子目录,只在需要时才让Claude去读取。这样既保证了关键信息的即时可用,又不会浪费上下文窗口。 ## 第四步:迭代测试与优化 skill-creator这个元技能提供了一套完整的评估框架。核心思路是:先编写技能初版 → 设计10个测试用例(覆盖正常场景和边界场景)→ 运行测试并收集输出 → 根据结果调整技能指令 → 循环迭代直到满意。 保哥特别推荐的一个技巧是用description improver脚本来优化触发描述——它会分析技能的实际使用模式,自动建议更精准的描述措辞,可以明显提升触发准确率。 在开发和调试Skill的过程中,如果你需要检查生成内容的技术SEO (https://zhangwenbao.com/technical-seo-audit-five-new-layers-ai-era.html)合规性,可以借助网页Head Meta标签检查工具 (https://zhangwenbao.com/tools/meta-checker.php)进行快速验证;对于页面结构相关的Skill,页面结构分析器 (https://zhangwenbao.com/tools/structure-analyzer.php)可以帮助你诊断标题层级和内容组织是否合理。 ## 技能选型决策指南 面对17个官方Skill,如何快速判断用哪个?保哥整理了一张实用的选型表: 当你需要处理Word、PDF、PPT、Excel文件时,直接选择对应的文档处理Skill(docx/pdf/pptx/xlsx),它们是最成熟也最复杂的官方技能。 当你需要做面向用户的Web前端时,frontend-design适合追求设计品质的页面,web-artifacts-builder适合需要完整React应用架构的场景。 当你需要让Claude连接外部服务时,mcp-builder是必选项,它会指导你构建标准化的MCP服务器。 当你需要创建视觉内容时,canvas-design适合静态的海报和平面设计,algorithmic-art适合交互式生成艺术,slack-gif-creator专攻动画GIF。 当你需要统一企业输出风格时,brand-guidelines负责视觉统一,internal-comms负责文案统一,theme-factory负责主题切换。 当你想开发自己的Skill时,从skill-creator开始,它会带着你走完整个开发流程。 ## 技能组合实战案例 单个Skill固然强大,但真正的威力在于组合使用。以下是两个实际工作流示例: 场景一:为客户制作品牌化的项目交付文档。先用internal-comms写好项目报告的文字内容;然后用theme-factory选择或创建匹配客户品牌的视觉主题;接着用brand-guidelines确保色彩和字体的规范性;再用canvas-design制作封面和插图;最后用pptx或docx生成最终的交付文件。 场景二:开发一个带有后端集成的Web应用。先用mcp-builder创建连接业务API的MCP服务器;然后用web-artifacts-builder搭建前端应用;接着用webapp-testing编写自动化测试验证功能;最后用frontend-design优化界面视觉效果。 ## 手把手教你定制自己的Claude Skills 光看官方的17个Skill还不够,真正的生产力爆发点在于——根据你自己的业务场景定制专属Skill。保哥做SEO这么多年,深知这行的工作本质就是"大量重复性的专业判断",而这恰恰是Skill最擅长解决的问题。下面用纯SEO场景拆解一套完整的实操流程,从零开始带你搞定。 ## 找准你的"高频重复痛点" 开发Skill之前,先问自己一个问题:过去一个月里,你在Claude对话框里反复输入过哪些相似的指令? 做SEO的人一定对这些场景不陌生:每篇文章发布前要手动检查Title长度、Description是否带关键词、H标签层级对不对;每次做竞品分析都要重复交代一遍"帮我从这几个维度对比";每个新页面上线都要核查结构化数据有没有漏字段。这些重复率高、流程固定、有明确质量标准的任务,就是最值得封装成Skill的候选项。 保哥的经验是,一个好的Skill应该满足"三次原则":如果一件事你需要向Claude解释三次以上才能拿到满意的结果,那它就该被做成Skill。 ## 从最小可用版本开始 不要一上来就追求完美。先建一个只有SKILL.md的文件夹,把你平时效果最好的那段提示词直接搬进去,加上YAML头部就行。 以"SEO文章发布前的On-Page审核"为例: --- name: seo-onpage-audit description: 对文章进行SEO发布前审核。当用户提到检查SEO、审核文章、On-Page优化、页面检查、发布前检查、TDK检查、标题优化、内链检查、关键词密度时触发。当用户说"帮我看看这篇文章有没有问题"或"这篇能不能排上去"等模糊表述时也应触发。 --- # SEO On-Page发布前审核 ## 审核清单(按优先级排序) 1. Title标签:是否包含主关键词且靠前、像素长度是否在480-580px之间、是否有吸引点击的差异化元素 2. Meta Description:是否包含主关键词和行动号召、长度是否在120-160字符之间 3. URL结构:是否简短清晰包含关键词、是否全小写无中文无特殊字符 4. H标签层级:H1是否唯一且包含主关键词、H2是否覆盖用户搜索意图的子话题、H2/H3中是否自然融入语义相关词 5. 首段前100字:是否在前两句话内出现主关键词、是否直接回答用户搜索意图 6. 内链布局:是否有2-5个指向站内相关文章的链接、锚文本是否自然且语义相关(不能全用"点击这里") 7. 图片优化:每张图片是否有描述性ALT文本、文件名是否含关键词、是否使用WebP格式 8. 关键词密度:主关键词密度是否在1%-2.5%之间、是否有同义词和LSI关键词的自然分布 9. 内容深度:文章字数是否达到该关键词SERP前5名的平均水准、是否覆盖了People Also Ask中的常见问题 10. GEO适配:段落是否以明确的主题句开头、是否有结构化的信号词(首先/其次/最后)方便AI摘要抓取 ## 输出格式 对每个检查项用"✅通过 / ⚠️警告 / ❌不通过"三级打标,附一句话说明原因。最后输出总体评分(满分100)和Top 3优先改进建议。就这么简单。把这个文件夹放到~/.claude/skills/seo-onpage-audit/目录下(Claude Code用户),或者在Claude.ai设置中上传,它就能工作了。从此以后你只需要把文章内容丢给Claude,它会自动按这10个维度逐条审核,再也不会漏检。 ## 逐步添加脚本和资源 当基础版Skill跑通之后,再根据实际需要往里加料。还是以SEO场景举例: scripts/目录——放自动化处理脚本。 比如你做了一个"技术SEO巡检Skill",可以放一个check_meta_tags.py脚本用于批量抓取页面的Title、Description、Canonical (https://zhangwenbao.com/canonical-url-seo-guide.html)、Robots标签并输出诊断报告。或者放一个sitemap_validator.py用于检测Sitemap中的死链和状态码异常。 references/目录——放你的SEO标准文档。 比如把公司内部的"内容风格指南"放进去(规定了品牌词怎么写、竞品名称能不能提、语气是正式还是口语化),把"关键词分级表"放进去(哪些是核心词、哪些是长尾词、各自的目标页面是什么),把"内链权重分配规则"放进去(首页链接预算多少、分类页之间如何互链)。Claude会在需要时自动读取这些文件作为判断依据。 assets/目录——放固定的模板文件。 比如你做了一个"SEO月报生成Skill",可以把月报的标准Excel模板或Word模板放进去,里面预设好流量趋势图的表格框架、关键词排名跟踪表的列头、竞品对比分析的固定格式。Claude每次生成月报时就会基于这个模板来填充数据,保证每个月交付给客户或老板的报告格式完全一致。 ## 把description写成"触发器陷阱" 这是整个Skill开发中最容易被忽视却最关键的一步。Claude是否能在正确的时机自动调用你的Skill,几乎完全取决于description字段写得好不好。 SEO场景下的对比: 差的写法: description: SEO审核——太模糊了,Claude根本不知道什么时候该触发。 好的写法: description: 对网页和文章进行SEO质量审核。当用户提到SEO检查、On-Page审核、页面优化、TDK检查、标题优化、Description优化、H标签检查、内链审核、关键词密度分析、技术SEO诊断、Core Web Vitals检测、结构化数据验证、发布前检查时触发。当用户说"帮我看看这个页面"、"这篇文章SEO有没有问题"、"排名上不去怎么回事"等模糊表述时也应主动触发。 核心原则是:宁可多触发、不要漏触发。多触发的后果只是Claude多加载一次(消耗约100 token的检测成本),而漏触发意味着一篇有SEO硬伤的文章直接上线了——这个损失可比100 token大得多。 ## 用评估循环打磨质量 Skill写好之后不要急着投入使用,先做一轮快速测试。保哥推荐的方法是从你网站上挑5-10篇已发布的文章作为测试用例,其中包含2-3篇你知道SEO做得不错的"标杆文章"和2-3篇你明知有问题的"问题文章",分别用"裸Claude"(不加载Skill)和"带Skill的Claude"跑一遍审核,对比输出质量。 重点关注三个维度: 检出率——那些你已知的SEO问题(比如Title超长、缺少内链、H1重复),Skill是否每次都能检出?如果有遗漏,说明审核清单还不够细。 误报率——Skill是否把本来没问题的地方标成了"不通过"?如果误报太多,说明判断标准写得太严或太模糊,需要加入例外条件。 输出稳定性——对同一篇文章连续跑三次审核,三次的评分和建议是否基本一致?如果每次差异很大,说明指令中存在歧义,Claude在做随机发挥而不是执行标准流程。 如果你用Claude Code,可以直接调用skill-creator技能的评估框架来自动化这个过程——它会帮你批量运行测试用例、对比不同版本的输出并给出改进建议。 ## 四个SEO高频Skill模板供你直接套用 除了上面详细拆解的On-Page审核Skill,保哥再给出三个SEO场景的Skill骨架,你可以根据自己的业务直接修改使用: 模板一:关键词调研报告Skill --- name: keyword-research description: 生成关键词调研分析报告。当用户提到关键词研究、选词、拓词、搜索意图分析、关键词分组、竞品关键词分析、长尾词挖掘、关键词难度评估时触发。 --- # 关键词调研报告 ## 分析框架 1. 种子词扩展:从用户给出的核心词出发,拓展同义词、上下位词、修饰词组合 2. 搜索意图分类:将每个关键词标记为信息型(I)、导航型(N)、商业型(C)、交易型(T) 3. 竞争度评估:根据SERP特征(有无精选摘要、视频、购物广告)判断竞争激烈程度 4. 分组建议:将语义相近的关键词聚类,每组推荐一个目标页面类型(文章/产品页/分类页) 5. 优先级排序:按"搜索量×商业价值÷竞争难度"的综合评分排序 ## 输出格式 Markdown表格,列包含:关键词、预估搜索量级、搜索意图、竞争度(低/中/高)、推荐页面类型、优先级评分模板二:竞品内容差距分析Skill --- name: content-gap-analysis description: 分析与竞品之间的内容差距。当用户提到竞品分析、内容差距、Content Gap、对手有我没有、话题覆盖率、内容机会时触发。 --- # 竞品内容差距分析 ## 分析流程 1. 收集竞品信息:用户提供竞品URL或品牌名,分析其内容结构和话题覆盖范围 2. 话题矩阵对比:列出双方各自覆盖和未覆盖的话题领域 3. 内容深度评分:对重叠话题比较内容质量(字数、结构、多媒体、更新频率) 4. 机会识别:找出"竞品有但我没有"和"双方都弱可以抢占"的话题空白区 5. 行动建议:按投入产出比排序,给出优先创建的内容清单 ## 输出格式 分为"必须立刻补的内容缺口""有潜力可以争夺的话题""当前领先需要巩固的领域"三个板块模板三:结构化数据生成Skill --- name: schema-generator description: 为网页生成结构化数据代码。当用户提到Schema、JSON-LD、结构化数据、富媒体摘要、FAQ Schema、Product Schema、Article Schema、BreadcrumbList、HowTo Schema、Review Schema时触发。当用户说"帮我加FAQ的代码"或"这个页面要什么结构化数据"时也应触发。 --- # 结构化数据JSON-LD生成 ## 支持的Schema类型 - Article / BlogPosting(文章页) - Product(产品页,含价格、评分、库存) - FAQPage(常见问题页) - HowTo(教程步骤页) - BreadcrumbList(面包屑导航) - LocalBusiness(本地商家) - Organization(企业信息) - VideoObject(视频内容) ## 生成规则 1. 严格遵循schema.org最新规范,不使用已废弃的属性 2. 所有必填字段不能遗漏(如Article必须有headline、datePublished、author) 3. 日期格式统一使用ISO 8601(如2026-03-27T00:00:00+08:00) 4. 输出完整的