全部文章
共 39 篇
Claude Code 的 prompt-audit:先删掉过期指令,再让 agent 写代码
部署已经迁移,agent 却还在照旧文档跑命令?用 Claude Code 的指令审计找出失效路径、冲突规则和旧流程,再用真实构建验证修改。

别把纠错都塞进 AGENTS.md:给 agent 记忆做一条晋升流水线
把临时发现、重复纠错和硬性约束分开管理,避免项目指令逐渐膨胀,最后谁也不遵守。

权限拒绝以后,别让 agent 原地重试:用 PermissionDenied 给出可执行改道
自动模式拒绝工具调用时,最浪费时间的不是那次拒绝,而是 agent 带着同一条命令反复撞墙。把拒绝原因变成受约束的改道提示,再决定哪些场景允许重试。

别让并行 agent 各自绿灯:用 PostToolBatch 收口集成验收
一次并行调用五件事,单点都成功但合起来不成立。Claude Code 在整批工具调用结算后留了 PostToolBatch 触发点,用它做批后集成检查,再用 Stop 把没验证的改动拦回去。

别让 agent 用 grep 猜符号:给 Claude Code 装上语言服务器
代码导航从字符串匹配换成符号图:编辑后先拿诊断,再按符号跳转。三步接入、CLAUDE.md 里的分工写法,以及实测出来的 token 变化。

别让 agent 每改一行都跑全量测试:按变更路由 Hook 验收
把 agent 的文件改动映射到最小验证命令。先用 Hook 识别路径,再跑对应检查,最后用全量测试守住合并门。

把 AGENTS.md 写成分区合同:让代理按目录收窄改动
别再把一仓库规则塞进根目录。用 AGENTS.md 的层级覆盖,把可改文件、验收命令和升级条件贴在代码旁边,让 agent 的默认动作变得可审计。

退出码 2 才是门:hook 阻断信号的按事件契约
exit 1 表示失败是 Unix 常识,放进 hook 里却等于把门开着。把拦截信号按事件对齐,再用一台本地自检台证明它真的拦得住。

钩子装上了不等于生效:把 PreToolUse 收窄并审计
拦截型 hook 的价值取决于它有没有真的触发。用 if 条件收窄触发面,用信任规则和调试日志证明它确实在跑。

把 MCP server 的会话删掉:无状态规范迁移清单
2026-07-28 这版 MCP 把会话从核心请求路径里拿掉了。把状态搬进显式 handle、用多轮往返换掉服务端发起的请求、给网关补上头部路由,再按清单逐条验收。

把验收条件塞进路径:给编码代理一份不会串台的合同
全仓库 AGENTS.md 很快会变成一锅粥。把稳定约束留在根目录,把框架和目录差异下沉到路径级指令,再让测试夹具证明它们真的被读取。

把工具清单当权限边界:VS Code 自定义代理的改动约束
自定义代理值钱的地方不是人格设定,而是工具白名单。按角色拆开 tools、agents 和 handoffs,越权就从语气问题变成了配置问题;但白名单是否强制执行,取决于你用哪个 harness。

Copilot hook 的 stdout 是契约:别让拦截静默失效
Copilot hook 的判定完全依赖 stdout:progress 行被剥掉,剩下的行拼成单个 JSON 文档再解析。一次 echo 调试、一个写错的正则,都能让闸门无声消失。

把编排写进脚本:动态工作流一次跑上百个子代理,先管住三件事
子代理派到几十个就乱了。Claude Code 的动态工作流把计划和分支写进脚本,代价是并发、恢复和成本都得你自己管。这里是我跑大规模扇出前会先看的几条硬边界。

让子代理带着技能上岗:拆开计划、实现和验收的上下文
别给所有子代理塞同一套长提示。用预加载 Skill 定义角色,用文件契约交接,把计划、实现和验收拆成可复查的流水线。