ByteNoteByteNote
DeepSeek Harness 技能维护:人工闸门流水线
字

字节笔记本

2026年10月6日 · 约 5 分钟读完

DeepSeek Harness 技能维护:人工闸门流水线

API中转
¥120

开源 agent 框架 DeepSeek Harness 的仓库里,有一个专门沉淀代码评审经验的技能 dsh-code-review,它把人工评审中的意见整理成模型可执行的规则,供后续开发反复使用。有意思的不是技能本身,而是它的维护方式:仓库的实操手册写明,这个技能由一名指定维护者通过一套私有工具持续更新,更新以小型周期 PR 的形式合入,而不是攒一段时间做一次大审计。手册同时面向接任者和想理解这套节奏的贡献者。本文把这份手册拆开,看看一条"机器起草、人守闸门"的技能维护流水线长什么样。

每天跑什么:五段流水线

维护者每天手动调用一次包装脚本,默认取最近两个 UTC 日的合并窗口,每周再手动补一次七天的大窗口。流水线分五段。

第一段选材料。只选窗口内合并、且合并提交能从 origin/master 追溯到的 PR。追不到的(比如堆叠分支的父分支被压缩过)和超出 250 个提交抓取上限的 PR,记进 skipped-pulls.json 后跳过,不会让整轮运行中断。

第二段收证据。收集合并前的人工评审反馈,每条都带提交锚点,然后比对反馈时刻的补丁和最终落地的补丁。PR 会话里的普通讨论不收,因为 GitHub 的当前状态没法给这些评论一个能抵抗强制推送的反馈时基线;只存在于目标分支的变更也不算采纳证据。

第三段做分类。两个独立配置的评审适配器分别判断每条反馈是谁写的、改动有没有采纳它,再把双方一致认定已采纳的条目对照当前技能分类。

第四段起草与互审。主适配器起草完整修订版 SKILL.md,两个适配器评审同一份 diff,只要还有阻塞性意见就继续循环,直到双方都批准。

第五段过门禁。候选要通过 pnpm run doc-sync 和 pnpm run lint,工具才宣告成功。

每轮运行的产物都存在维护者本机:diff、候选 SKILL.md 和一份提升清单按时间戳命名归档。清单记录来源提交与技能内容指纹、反馈的编号和链接、已落地证据范围、两个适配器的裁决和门禁结果;适配器的原始输入输出留在私有临时目录,路径写进通知和每日日志。维护用的工作树每轮跑完都恢复干净,杜绝直接在维护副本上顺手改两笔。

dsh-code-review 每日维护流水线五段流程

人做最后一关:三选一

有候选产出时,维护者会收到一条系统通知。手册给的操作规程很明确。

先独立读 diff。不要因为"评审者已批准"就直接接受,最终决定权在人。要看四类问题:检查清单膨胀、混入历史叙述、从单次事件做无依据的外推、和现有技能或权威文档重复覆盖。

再交叉核验。提升清单把每条拟议规则映射到来源反馈和落地证据,至少抽一条验证:链接的人工评论真的支持这条新规则吗?链接的 PR 真的采纳了它吗?

然后三选一。丢弃:删掉候选文件,下一轮会按当时的技能状态重新考虑同一批反馈。留批:改动很小时先放着,等和后续更新合并,期间 master 变了就要重跑分析或手动变基重审。提升:在干净的 master 检出上运行 dsh-code-review-promote 辅助命令,它会刷新 master、校验当前技能和记录的指纹一致、应用保存的 diff、开一个草稿 PR,正文列明来源反馈、落地提交范围、发起运行的标识和人工修改点;技能一旦漂移就停下而不是覆盖新内容,最后仍由人在 GitHub 上决定合并或关闭。

还有一条纪律:不许逐字提交适配器输出。收紧措辞、删掉只有结合原 PR 语境才说得通的示例、把新规则并进已有条目,这类小修改是流程的预期动作,也是保住"评审者判断"的关键。

操作员处理候选 diff 的决策流程

没产出不是故障,失败才是

多数日子跑完不会有候选:每个非空分类阶段都有有效结果、只是没有新东西要改时,工具记一条日志、不发通知,避免提醒疲劳。手册特意强调,某天没有技能更新是流程正常运转的表现,不是停滞。

漏跑一天也不要紧,两日重叠窗口能自动兜住;更长的空档用环境变量指定天数手动补跑。重叠窗口是幂等的,已经覆盖的指导会被归类为已覆盖,不会反复变成候选。

故障处理同样写得很死。两个评审命令指向同一个可执行文件时,工具直接拒绝运行;某个批次的响应没过结构或编号校验,整个批次一律标记为不明确后继续跑,原始输出保留备查;任一适配器在所有非空批次上都没有有效结果,本轮就判失败、写失败记录并通知人,绝不把提供方全面中断粉饰成"没有候选"。

这套机制真正值得抄的地方

跳出这个仓库,手册里反复出现的其实是几条通用原则。证据要锚定:每条规则都能回溯到真实的人工评审意见和真实落地的代码,不接受凭空总结。机器只做起草和分拣:双适配器独立互审能拦住单一模型的偏见,但合并权始终在人手里。失败要响亮:批次级整体保守处理、运行级必须报错,宁可不产出也不能假装产出。交接要留痕:手册明确把单维护者的关键人风险列进风险章节,换人必须通过一份取代旧文档的正式决定来完成,不能悄悄把工具转手。

任何在仓库里养 agent 技能的团队,都可以把这套骨架搬走用:窗口化拉取、锚定证据、双评审互审、人守最后一关、产物可审计。技能不是写完就完,能不能被安全地持续维护,才决定它半年后还剩多少价值。

相关文章

分享: