十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

HumanLayer Skills 深度解析:workflow-template.yml 每一行到底在做什么

HumanLayer Skills 深度解析:workflow-template.yml 每一行到底在做什么 HumanLayer Skills 深度解析workflow-template.yml 每一行到底在做什么【免费下载链接】skills项目地址: https://gitcode.com/GitHub_Trending/skills53/skillsHumanLayer Skills是一个来自 HumanLayer 的 Claude Code 技能Skills合集其中最有价值的资产是 workflow-template.yml——一套开箱即用的 GitHub Actions 工作流模板帮你用「传感器 → 控制器 → 执行器」的 AI 控制循环模式让编码代理按定时任务自动修复代码问题并开 PR。本文将逐行拆解这个 workflow 模板让你真正看懂 AI Agent 工作流的每一环。HumanLayer Skills 是什么这个仓库提供 4 个即装即用的 Skill覆盖 AI 辅助开发的典型场景Skill作用improve-claude-md用important if块重写 CLAUDE.md提升指令遵循度narrow-react-prop-types收窄 React 组件 Prop 类型匹配真实代码路径show-me用简图与 HTML 工件讲解当前主题design-control-loop访谈式设计并构建 AI 控制循环本文主角安装方式一行搞定见 README.mdnpx skills add humanlayer/skills --skill design-control-loop而design-control-loop的精髓就是把「AI 定时跑代码任务」这件事工程化了。它的产物核心就是 workflow-template.yml——一个约 270 行的 GitHub Actions 工作流骨架。下面开始逐段拆解。先理解心智模型控制循环是什么在拆行之前先花 30 秒建立概念。模板借用控制理论详见 control-loop-taxonomy.md设定点Set point你希望代码库达到的状态比如「不再使用旧 API」传感器Sensor测量当前状态与目标的差距如 lint、类型检查、测试控制器Controller根据测量结果决定「这次改哪几个、改多少」执行器Actuator编码代理动手改代码并开 PR这个设计的目标是让 AI 循环可观测、有边界、可评审而不是「某个代理偶尔自己跑一次」。逐段拆解 workflow-template.yml 头部注释声明两种运行模式文件开头 第 1-10 行 是整个模板的设计说明书模式一scheduled/manual定时或手动触发跑一轮「感知 → 控制 → 执行」在新分支上开 PR模式二/iterate维护者在代理开的 PR 上评论/iterate时更新那个 PR 并可选地更新记忆文件注释里还埋了一个关键设计决策/iterate的标记检查故意放在 checkout/setup 之前这样所有代理工作流都能监听/iterate而没匹配上的工作流能廉价地直接退出不浪费 CI 资源。name 与 on触发器配置第 12-19 行name: Agent: Task Title——Task Title是占位符替换成你的任务名三个触发源schedulecron 表达式0 13 * * *默认每天 UTC 13 点注释提醒你按偏好改workflow_dispatch允许在 Actions 页面手动点击运行issue_commentPR 评论创建时触发——这就是/iterate的入口permissions最小权限原则 第 21-24 行 只授予三项权限contents、pull-requests、issues均为write。AI 工作流要推分支、开 PR、贴评论刚好够用不多给——这是给自动化代理配权限的安全基线。concurrency防止重复运行第 26-28 行 按agent-task-slug分组并设置cancel-in-progress: true同一任务的新运行会取消旧运行避免旧任务和新任务同时改代码互相打架。if 过滤谁能触发 /iterate️第 34-42 行 是安全关键的一段。它规定非评论事件一律放行评论事件必须同时满足——评论出现在 PR而非 Issue上评论以/iterate开头评论者身份是 OWNER / MEMBER / COLLABORATOR换句话说只有仓库维护者能用/iterate驱动代理外人评论不消耗你的 API 费用。agent_gate限量工作的门卫 第 45-84 行 是整个模板最巧妙的步骤分三种情况定时运行先用gh pr list查有没有带本代理 label 的未合并 PR——有就 no-op 退出。这就是流量控制PR 限量循环产出速度永远不超过人工评审速度避免每天堆出一堆重复 PR手动运行直接放行手动触发视为「我知道我在干什么」/iterate 评论拉取 PR 数据检查 PR 正文里有没有隐藏的!-- codelayer-agent:workflow... --标记。有标记才继续并把 PR 号、分支、SHA 输出给后续步骤。多个代理工作流都能监听/iterate只有当初开这个 PR 的那个工作流会通过检查其余全部廉价退出双 checkout为两种模式服务第 86-96 行 有两个actions/checkout看似冗余实则精妙非评论事件正常 checkout 默认分支fetch-depth: 0保留完整历史方便 diff/iterate事件checkout 到head_ref——即代理原来那个 PR 分支因为迭代是在既有 PR 上继续改而不是开新分支环境准备运行时与依赖缓存 ⚡第 98-135 行创建带运行 ID 的分支branch-prefix/$GITHUB_RUN_ID-$GITHUB_RUN_ATTEMPT保证分支名唯一重跑不冲突配置 git 用户为github-actions[bot]安装 Bun 1.3.14 Node 24模板假设 bun/Node 仓库注释提示你换成自己仓库的运行时用actions/cache缓存~/.bun/install/cache按bun.lock哈希做 key——让定时任务每次省几十秒bun install --frozen-lockfile锁定依赖执行器步骤/iterate 迭代路径 第 137-167 行 只处理评论事件。注意注释里的定性迭代是执行器对评审反馈的一次 pass不是全新的感知-控制-执行循环。它做三件事运行 agent-iteration.ts 的prompt模式把 PR 正文、所有评论、/iterate反馈和记忆文件组装成一份迭代提示词调用代理执行器模板默认 CodeLayer注释提示你换成 agent-runner-templates.md 里的 Claude Code / Codex / OpenCode 命令用sed剥掉 ANSI 颜色码把输出存为 PR 正文主路径Sensor → Controller → Actuator 三步走 第 169-221 行 只处理定时/手动事件是模板的灵魂Sensor第 173-180 行跑你设计的传感器产出稳定的测量结果到/tmp/sensor-output.json。模板里是 TODO 占位——换成你的 lint、AST 搜索、类型检查或遥测查询Controller第 182-190 行消费传感器输出选「这次改什么」写入/tmp/controller-output.md。可以是确定性的脚本排序取前 N 条也可以删除此步——如果代理本身就是控制器Actuator第 192-221 行把 prompt-template.md 的提示词骨架、控制器选定的工作、以及记忆文件内容拼成完整提示词喂给编码代理模板顶部注释特别强调如果你的传感器和控制器本来就融合在一个工具里就把三步合并成一个 Actuator 步骤——不要发明不存在的分离。收口提取正文、开 PR、回写反馈 ✅Extract PR body第 224-228 行把代理输出提取成干净的 Markdown格式参考 response-template.mdPush and create PR第 230-253 行先git diff --quiet检查有没有实际改动没改动就跳过开 PR有改动则推分支、用agent-iteration.ts的footer模式往 PR 正文追加隐藏的 workflow 标记供日后/iterate路由、创建带日期前缀标题的 PR 并打上 labelPush iteration changes and comment第 255-266 行/iterate路径的收口——提交并推送迭代改动回原 PR 分支把代理总结作为评论贴在 PR 下Upload agent output第 268-273 行if: always()保证即使失败也上传/tmp/agent-output.txt到 Artifacts方便排查代理为什么跑歪记忆文件人就在循环之上 模板中反复出现的.github/agent-memory/task-slug.md是「人在环上」的转向通道模板见 memory-template.md评审反馈、误报区域、永久性范围约束都沉淀在这里每次运行都会注入执行器上下文改的是未来所有运行的行为而不是当前这一个 PR。/iterate时代理也会被指示把「值得长期记住」的反馈蒸馏回这个文件。上手三步走 安装技能npx skills add humanlayer/skills --skill design-control-loop然后在项目里执行/design-control-loop它会访谈你完成设定点、传感器、控制器、执行器的设计先本地跑通传感器、控制器、执行器都必须能在本地独立运行再进 CI这是 SKILL.md Phase D 的硬性要求装配并试运行以workflow-template.yml为基座替换占位符配好ANTHROPIC_API_KEYsecret先手动 dispatch 跑通一轮再挂上 cron小结workflow-template.yml 的每一行都在回答同一个问题如何让 AI 编码代理可靠、安全、可评审地周期性工作。触发器限定入口权限与并发限制爆炸半径if过滤挡住无关评论agent_gate保证「最多一个在途 PR」双 checkout 让迭代回到原分支记忆文件让人类反馈跨越运行生效。把这套骨架搬到你的仓库你就拥有了一条完整的、带人工转向的 AI 控制循环。【免费下载链接】skills项目地址: https://gitcode.com/GitHub_Trending/skills53/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表