HumanLayer Skills 之 design-control-loop:把控制论引入代码库自动维护
【免费下载链接】skills项目地址: https://gitcode.com/GitHub_Trending/skills53/skills
design-control-loop是 skills(HumanLayer 出品的 Claude Code 技能集)中的一个技能:它用一场结构化访谈帮你把控制论(set point → sensor → controller → actuator)映射到代码库,再自动搭建"AI 编码代理 + 定时 CI 工作流",让代码质量每天以小而可评审的 PR 持续推进,实现代码库自动维护。
为什么需要"控制环",而不是一次性大重构?🤔
代码库会持续"漂移":同事的新提交、依赖升级、生成的代码都在不断引入新的问题。大多数团队的应对方式是攒一波、集中大重构——风险高、难以评审、还容易失控。
design-control-loop的思路完全不同:把代码库当成一个动态系统,像恒温器控制温度一样控制代码质量——
- 每天自动跑一小步,每次只改几处、开一个 PR;
- 每一步都可独立运行、可调试、可回滚;
- 人类始终"在环"(on the loop),通过反馈持续调教这个环。
官方入口见 plugins/design-control-loop/skills/design-control-loop/SKILL.md。
控制论四件套:如何对应到你的代码库
技能的核心理论写在 references/control-loop-taxonomy.md,概念如下表:
| 控制论概念 | 在代码库中的含义 | 常见实现 |
|---|---|---|
| Set point(目标值) | 某项属性的期望终态 | 不变量("不再使用旧模式")、阈值("覆盖率 ≥ 80%")或方向("每次运行都减少") |
| Sensor(传感器) | 测量当前状态与目标的差距 | lint、静态分析、AST 搜索、类型检查、测试套件、遥测查询 |
| Controller(控制器) | 根据测量结果决定"下一步改什么" | 从完全确定性的脚本(排序取前 N)到完全智能体的自然语言决策 |
| Actuator(执行器) | 真正动手改代码并开 PR | Claude Code、Codex、OpenCode、CodeLayer 等编码代理 + 仓库本地技能 |
| Disturbance(扰动) | 环之外的外部变化 | 同事并发提交、依赖升级、生成代码 |
一个重要的设计洞察:这些组件可以融合。比如一个既报告问题又按影响排序的工具,就同时兼任了传感器和控制器——技能明确要求"设计你真正需要的环,不要人为制造分离"。
8 阶段工作流:从提问到自动化闭环 🔁
技能的 SKILL.md 把整个流程拆成 A–H 八个阶段,每个阶段都有明确的完成标准:
Phase A — 先读仓库,再提问
不问空表单式的问题。技能会先阅读你的 CI 配置、包管理器文件、现有验证脚本和已有的 agent 约定,带着基于仓库现状的提案进入访谈。
Phase B — 访谈式共同设计
逐个敲定五大设计问题:目标值是什么?哪些目录可改(scope)?用什么工具测量差距?每步改多大算"一个可评审单元"?选哪个编码代理、提交前必须通过哪些验证命令?最后产出一份简短的书面设计,让你低成本纠错。
Phase C–D — 造技能,先本地跑通
先写出执行器技能(references/skill-template.md 提供骨架),再坚持一条铁律:传感器、控制器、执行器必须各自能在本地独立跑通,才允许接入 CI——这样工作流只是对"你已能手工运行的部件"做一层薄薄的编排,环永远可调试。
Phase E — 接入 CI 定时运行
基于 references/workflow-template.yml 搭建周期性任务:传感器 → 控制器 → 执行器 → 提交并开 PR(PR 正文就是代理的最终汇报)。不同代理的输出格式不同,references/agent-runner-templates.md 为 Claude Code、Codex、OpenCode、CodeLayer 分别给出了 headless 命令与响应提取方案。
Phase F — 人类保持在环上 🧑💻
定时环不 steering 就会漂移,技能提供两个人类通道:
- 记忆文件:一个版本化 markdown(如
.github/agent-memory/<task>.md,模板见 references/memory-template.md),每次运行确定性注入代理上下文——只放持久反馈(范围排除、误报区域、评审偏好),不放一次性指令; /iterate命令:维护者在代理开的 PR 上评论/iterate <反馈>,对应工作流会加载 PR 上下文与反馈,更新记忆文件和该 PR。胶水逻辑由 references/agent-iteration.ts 提供。
Phase G–H — 流量控制与验证
默认每个环最多一个打开的 PR:定时运行发现已有带标签的开放 PR 就直接空转,手动触发可绕过。最后再验证 YAML、dry-run 一次,确认环能产出至少一个被评审过的 PR 后,才考虑提高频率、加大批量。
一个完整示例:React Doctor 环 📋
references/example-control-loop.md 给出了一条来自生产 monorepo 的完整环线(只借鉴形状,不要照抄细节):
- 目标:让某个 React 应用保持无高影响问题;
- 传感器+控制器:
react-doctorCLI 报出"按影响排序的前 3 条规则",策略是"每次修复其中最多 5 个问题"——传感器与控制器融合; - 执行器:编码代理对每个问题给出三选一的诚实选项:修复 / 忽略(写入配置并说明理由)/ 跳过(留给人);
- 阻尼器:第二条工作流在 PR 和 main 推送时对比基线,只评论"新引入"的问题,默认仅提示、不拦截。
快速上手:一键安装步骤 🚀
在终端执行:
npx skills add humanlayer/skills --skill design-control-loop然后在你的项目里输入/design-control-loop,开始访谈。同仓库还有几个值得搭配的技能,见 README.md:improve-claude-md(重写 CLAUDE.md 提升指令遵循)、narrow-react-prop-types(收窄 React 组件 prop 类型,本身就是一个现成的控制环案例)、show-me(用图和 HTML 工件讲解当前话题)。
参考资料速查
| 文件 | 用途 |
|---|---|
| references/control-loop-taxonomy.md | 控制环组件与访谈问题清单,先读这份 |
| references/example-control-loop.md | 完整标注的示例环 |
| references/workflow-template.yml | 含流量控制与/iterate路径的工作流骨架 |
| references/agent-runner-templates.md | 各编码代理的 CI 命令与 PR 正文提取 |
| references/prompt-template.md | 执行器步骤的内嵌提示词结构 |
| references/response-template.md | 代理最终回复(即 PR 正文)的格式模板 |
| references/agent-iteration.ts | /iterate支撑脚本(footer / prompt 两种模式) |
总结:把"AI 偶尔跑一下"变成可观测的控制系统
design-control-loop的真正价值不在模板,而在方法论:它强迫你先想清楚测什么、每次改多大、谁来把关、人类如何纠偏,然后把环拆成可本地运行的部件,最后才交给 CI。对新手来说,这也是理解"AI 编码代理工程化"的最佳教材——小步、可评审、人在环上,代码库才会持续变好而不是持续失控。
【免费下载链接】skills项目地址: https://gitcode.com/GitHub_Trending/skills53/skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考