<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss/styles.xsl" type="text/xsl"?><rss version="2.0"><channel><title>Knifelf Blog</title><description>记录技术实践、折腾过程与日常思考。</description><link>https://coding.knifelf.club/</link><language>zh-CN</language><item><title>Claude Code 的 prompt-audit：先删掉过期指令，再让 agent 写代码</title><link>https://coding.knifelf.club/blog/claude-prompt-audit-stale-instructions/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/claude-prompt-audit-stale-instructions/</guid><description>部署已经迁移，agent 却还在照旧文档跑命令？用 Claude Code 的指令审计找出失效路径、冲突规则和旧流程，再用真实构建验证修改。</description><pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate></item><item><title>别把纠错都塞进 AGENTS.md：给 agent 记忆做一条晋升流水线</title><link>https://coding.knifelf.club/blog/agent-memory-promotion-contract/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/agent-memory-promotion-contract/</guid><description>把临时发现、重复纠错和硬性约束分开管理，避免项目指令逐渐膨胀，最后谁也不遵守。</description><pubDate>Wed, 30 Sep 2026 00:00:00 GMT</pubDate></item><item><title>权限拒绝以后，别让 agent 原地重试：用 PermissionDenied 给出可执行改道</title><link>https://coding.knifelf.club/blog/permission-denied-retry-playbook/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/permission-denied-retry-playbook/</guid><description>自动模式拒绝工具调用时，最浪费时间的不是那次拒绝，而是 agent 带着同一条命令反复撞墙。把拒绝原因变成受约束的改道提示，再决定哪些场景允许重试。</description><pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate></item><item><title>别让并行 agent 各自绿灯：用 PostToolBatch 收口集成验收</title><link>https://coding.knifelf.club/blog/post-tool-batch-integration-gate/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/post-tool-batch-integration-gate/</guid><description>一次并行调用五件事，单点都成功但合起来不成立。Claude Code 在整批工具调用结算后留了 PostToolBatch 触发点，用它做批后集成检查，再用 Stop 把没验证的改动拦回去。</description><pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate></item><item><title>别让 agent 用 grep 猜符号：给 Claude Code 装上语言服务器</title><link>https://coding.knifelf.club/blog/agent-code-intelligence-lsp-setup/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/agent-code-intelligence-lsp-setup/</guid><description>代码导航从字符串匹配换成符号图：编辑后先拿诊断，再按符号跳转。三步接入、CLAUDE.md 里的分工写法，以及实测出来的 token 变化。</description><pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate></item><item><title>别让 agent 每改一行都跑全量测试：按变更路由 Hook 验收</title><link>https://coding.knifelf.club/blog/change-aware-hook-test-routing/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/change-aware-hook-test-routing/</guid><description>把 agent 的文件改动映射到最小验证命令。先用 Hook 识别路径，再跑对应检查，最后用全量测试守住合并门。</description><pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate></item><item><title>把 AGENTS.md 写成分区合同：让代理按目录收窄改动</title><link>https://coding.knifelf.club/blog/agents-md-directory-contract/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/agents-md-directory-contract/</guid><description>别再把一仓库规则塞进根目录。用 AGENTS.md 的层级覆盖，把可改文件、验收命令和升级条件贴在代码旁边，让 agent 的默认动作变得可审计。</description><pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate></item><item><title>退出码 2 才是门：hook 阻断信号的按事件契约</title><link>https://coding.knifelf.club/blog/hook-blocking-signal-contract/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/hook-blocking-signal-contract/</guid><description>exit 1 表示失败是 Unix 常识，放进 hook 里却等于把门开着。把拦截信号按事件对齐，再用一台本地自检台证明它真的拦得住。</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate></item><item><title>钩子装上了不等于生效：把 PreToolUse 收窄并审计</title><link>https://coding.knifelf.club/blog/pretooluse-command-boundary/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/pretooluse-command-boundary/</guid><description>拦截型 hook 的价值取决于它有没有真的触发。用 if 条件收窄触发面，用信任规则和调试日志证明它确实在跑。</description><pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate></item><item><title>把 MCP server 的会话删掉：无状态规范迁移清单</title><link>https://coding.knifelf.club/blog/mcp-stateless-server-migration/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/mcp-stateless-server-migration/</guid><description>2026-07-28 这版 MCP 把会话从核心请求路径里拿掉了。把状态搬进显式 handle、用多轮往返换掉服务端发起的请求、给网关补上头部路由，再按清单逐条验收。</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate></item><item><title>把验收条件塞进路径：给编码代理一份不会串台的合同</title><link>https://coding.knifelf.club/blog/path-scoped-agent-acceptance-contract/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/path-scoped-agent-acceptance-contract/</guid><description>全仓库 AGENTS.md 很快会变成一锅粥。把稳定约束留在根目录，把框架和目录差异下沉到路径级指令，再让测试夹具证明它们真的被读取。</description><pubDate>Mon, 21 Sep 2026 00:00:00 GMT</pubDate></item><item><title>把工具清单当权限边界：VS Code 自定义代理的改动约束</title><link>https://coding.knifelf.club/blog/vscode-custom-agent-change-contract/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/vscode-custom-agent-change-contract/</guid><description>自定义代理值钱的地方不是人格设定，而是工具白名单。按角色拆开 tools、agents 和 handoffs，越权就从语气问题变成了配置问题；但白名单是否强制执行，取决于你用哪个 harness。</description><pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Copilot hook 的 stdout 是契约：别让拦截静默失效</title><link>https://coding.knifelf.club/blog/copilot-hook-stdout-contract/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/copilot-hook-stdout-contract/</guid><description>Copilot hook 的判定完全依赖 stdout：progress 行被剥掉，剩下的行拼成单个 JSON 文档再解析。一次 echo 调试、一个写错的正则，都能让闸门无声消失。</description><pubDate>Sat, 19 Sep 2026 00:00:00 GMT</pubDate></item><item><title>把编排写进脚本：动态工作流一次跑上百个子代理，先管住三件事</title><link>https://coding.knifelf.club/blog/dynamic-workflow-fanout-control/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/dynamic-workflow-fanout-control/</guid><description>子代理派到几十个就乱了。Claude Code 的动态工作流把计划和分支写进脚本，代价是并发、恢复和成本都得你自己管。这里是我跑大规模扇出前会先看的几条硬边界。</description><pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate></item><item><title>让子代理带着技能上岗：拆开计划、实现和验收的上下文</title><link>https://coding.knifelf.club/blog/subagent-skill-role-contract/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/subagent-skill-role-contract/</guid><description>别给所有子代理塞同一套长提示。用预加载 Skill 定义角色，用文件契约交接，把计划、实现和验收拆成可复查的流水线。</description><pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate></item><item><title>无人值守的 agent，先钉死隔离边界和出网白名单</title><link>https://coding.knifelf.club/blog/agent-unattended-isolation-baseline/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/agent-unattended-isolation-baseline/</guid><description>让 coding agent 少问甚至不问的前提不是提示词，而是隔离边界和出网白名单。用官方 dev container 参考配置搭一套默认拒绝出网的容器：非 root 用户、ipset 白名单、托管设置禁掉 bypass，再逐条排查会悄悄吃掉隔离的四个配置。</description><pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate></item><item><title>别让工具吃掉上下文：MCP 工具的返回值预算设计</title><link>https://coding.knifelf.club/blog/mcp-tool-context-budget/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/mcp-tool-context-budget/</guid><description>工具注册和返回值都在花 agent 的上下文。按「首块必须自包含」重写 MCP 工具：默认小 limit、显式截断标记、可切换的 concise 返回。</description><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate></item><item><title>让 coding agent 自己暴露错误：用 Hook 做最短反馈回路</title><link>https://coding.knifelf.club/blog/agent-hook-feedback-loop/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/agent-hook-feedback-loop/</guid><description>把格式化、定向测试和失败摘要挂到 agent 的工具调用之后，让错误在下一步决策前出现，而不是堆到提交前。</description><pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate></item><item><title>给 coding agent 划职责边界：用只读侦察和验收闸门减少返工</title><link>https://coding.knifelf.club/blog/agent-stage-gates/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/agent-stage-gates/</guid><description>把复杂改动拆成侦察、实施、验收三段：先用只读 agent 收敛证据，再让执行 agent 改动，最后用独立验证关卡决定是否交付。</description><pubDate>Sat, 12 Sep 2026 00:00:00 GMT</pubDate></item><item><title>省 token 不等于省钱：给 agent 成本做一次 cache 感知核算</title><link>https://coding.knifelf.club/blog/cache-aware-agent-cost-audit/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/cache-aware-agent-cost-audit/</guid><description>压掉 38% 工具输出 token，账单反而涨 6.8%。把成本拆成输入、缓存写、缓存读、输出四格，再加上空闲驱逐这条暗线，才能看清 coding agent 的钱花在哪。</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate></item><item><title>别靠祈祷触发：给 agent Skill 写一套路由回归测试</title><link>https://coding.knifelf.club/blog/skill-trigger-evals/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/skill-trigger-evals/</guid><description>Skill 的 description 实际上是 agent 的路由规则。把真实任务写成应触发与不应触发的测试集，再记录误触发和漏触发，才能让 Skill 库越长越可靠。</description><pubDate>Thu, 10 Sep 2026 00:00:00 GMT</pubDate></item><item><title>把子代理路由写成生产规则</title><link>https://coding.knifelf.club/blog/subagent-routing-production-rules/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/subagent-routing-production-rules/</guid><description>description 是派单系统的路由表，工具列表是能力边界，per-agent hook 是审计员。四件事都固化下来，委托才从模型的即兴发挥变成可审查的常量。</description><pubDate>Wed, 09 Sep 2026 00:00:00 GMT</pubDate></item><item><title>给 agent 的 diff 设预算：把验收变成自动闸门</title><link>https://coding.knifelf.club/blog/diff-budget-acceptance-gate/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/diff-budget-acceptance-gate/</guid><description>agent 一小时能产出人类一天都审不完的 diff。与其事后在巨型 PR 里找问题，不如把变更大小、测试和破坏性改动写进验收清单，再用 hook 在它声称完成的那一刻强制检查。</description><pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate></item><item><title>别亲手修红掉的 CI：Fix with Copilot 免值守闭环</title><link>https://coding.knifelf.club/blog/fix-with-copilot-ci-loop/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/fix-with-copilot-ci-loop/</guid><description>PR 红了别急着翻日志。Fix with Copilot 把调查、修复、推分支交给 GitHub 云 agent，人只读 diff、批准重跑、再合并。</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate></item><item><title>给并行 agent 一人一个 worktree：让子代理真的敢同时改代码</title><link>https://coding.knifelf.club/blog/agent-worktree-isolation/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/agent-worktree-isolation/</guid><description>子代理并行时最怕互相踩 diff：两个 agent 同时改同一个工作目录，后写的一方静默覆盖先写的一方。用 isolation: worktree 让每个写代码的子代理落在独立 git worktree 里，并行才真正成立。</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate></item><item><title>别让子代理替你拍板：给 Agent Team 建立证据交接协议</title><link>https://coding.knifelf.club/blog/subagent-evidence-contract/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/subagent-evidence-contract/</guid><description>把子代理输出从一段“看起来合理”的总结，改造成主代理能复查、能执行、能拒绝的证据包。</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>别把流程塞进 AGENTS.md：用 Skills 给 coding agent 做可复用工序</title><link>https://coding.knifelf.club/blog/agent-skills-instruction-budget/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/agent-skills-instruction-budget/</guid><description>把稳定约束留在 AGENTS.md，把按需展开的复杂流程封装为 Skills，再以只读子代理隔离噪声，给 coding agent 一套能长期维护的操作系统。</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate></item><item><title>长任务不失控：用 ExecPlan 驱动 coding agent</title><link>https://coding.knifelf.club/blog/execplan-long-running-agent/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/execplan-long-running-agent/</guid><description>把长任务的目标、进度、决策和验收写进一份持续更新的 ExecPlan，让 agent 可以中断后继续，也让人能随时审计它到底做了什么。</description><pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Hook 不止能挡：把 agent 变成可编程流水线</title><link>https://coding.knifelf.club/blog/hooks-automation-bus/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/hooks-automation-bus/</guid><description>PreToolUse 拦截只是 hook 的入门用法。上下文注入、环境同步、通知、后台测试、审计日志，同一套事件总线把 coding agent 变成确定性的自动化流水线，而且 Claude Code、VS Code、Copilot 共用同一份 JSON 配置。</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate></item><item><title>把 agent 指令拆成目录规则：减少上下文冲突的实战</title><link>https://coding.knifelf.club/blog/agent-instructions-layered-scoping/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/agent-instructions-layered-scoping/</guid><description>把全局原则、目录约束和任务卡分层放置，让 coding agent 在正确的文件范围内拿到正确的规则，减少冲突和无效上下文。</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>给编码 agent 一份真正的项目说明书：把 AGENTS.md 写到能用</title><link>https://coding.knifelf.club/blog/agents-md-project-context/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/agents-md-project-context/</guid><description>AGENTS.md 每次会话都会进上下文，是性价比最高的 agent 提效文件。命令先行、短而具体、边界明确、按目录嵌套，四条规则让规则真正被遵守。</description><pubDate>Mon, 31 Aug 2026 00:00:00 GMT</pubDate></item><item><title>把并行 agent 收进一个可合并的交付面：子代理边界实战</title><link>https://coding.knifelf.club/blog/subagent-merge-boundaries/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/subagent-merge-boundaries/</guid><description>并行不是多开几个 agent。给每个子代理缩小任务、工具和写入面，再让主代理做唯一集成者，才能避免互相覆盖。</description><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Hook 即闸门：把 agent 行为焊死在流程里</title><link>https://coding.knifelf.club/blog/claude-hooks-guardrail-playbook/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/claude-hooks-guardrail-playbook/</guid><description>CLAUDE.md 是建议，hook 是规定。从 stdin JSON 协议、退出码语义到 prompt/agent 型 hook，把编码 agent 的每个动作变成可拦截、可验证、可审计的确定性流程。</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate></item><item><title>给 agent 一个可验证的终点：/goal 完成条件实战</title><link>https://coding.knifelf.club/blog/claude-goal-completion-conditions/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/claude-goal-completion-conditions/</guid><description>把完成条件写成可验证的句子，agent 自己循环到满足为止。终点、证据、边界、上限，缺一个就烧 token。</description><pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate></item><item><title>把 agent 规则变成验收：Hooks、AGENTS.md 与交付闸门</title><link>https://coding.knifelf.club/blog/agent-guardrails-hooks-acceptance/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/agent-guardrails-hooks-acceptance/</guid><description>别把项目规范只写在提示词里。用持久规则、命令闸门和可追溯的验收结果，压住 coding agent 的重复性失误。</description><pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate></item><item><title>别把 agent 当成并发槽位：并行开发要先切边界</title><link>https://coding.knifelf.club/blog/parallel-agents-boundaries/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/parallel-agents-boundaries/</guid><description>让多个 coding agent 同时干活，最难的不是开更多窗口，而是设计它们交付什么、谁能改哪里、结果怎样合并。</description><pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate></item><item><title>蓝牙工具箱 BleDebug：把 BLE 调试装进口袋</title><link>https://coding.knifelf.club/blog/bledebug-ble-toolbox/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/bledebug-ble-toolbox/</guid><description>面向开发者、硬件爱好者和嵌入式工程师的 BLE 调试工具：扫描、连接、GATT 浏览、HEX/ASCII 收发、广播监听与本地日志。</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Spec Kit 1.0：先写规格，再让 agent 动手</title><link>https://coding.knifelf.club/blog/spec-kit-1-0-spec-driven-workflow/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/spec-kit-1-0-spec-driven-workflow/</guid><description>GitHub 开源的 Spec Kit 满一岁并发布 1.0.0。constitution、converge 循环和 [NEEDS CLARIFICATION] 标记，把 Vibe Coding 从碰运气变成可验收的流程。</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate></item><item><title>今日 Vibe Coding：跨会话协作时，先交接“失败过什么”</title><link>https://coding.knifelf.club/blog/vibe-coding-agent-handoff/</link><guid isPermaLink="true">https://coding.knifelf.club/blog/vibe-coding-agent-handoff/</guid><description>别让下一个 agent 重走已经失败的路径。一个短小的交接文件，往往比更长的上下文更有用。</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate></item></channel></rss>