GBrain 技能开发循环(Skill Development Cycle):从临时任务到自动化的五步方法论
【免费下载链接】gbrainGarry's Opinionated OpenClaw/Hermes Agent Brain项目地址: https://gitcode.com/gh_mirrors/gb/gbrain
导读
本文以 GBrain(Garry's OpenClaw/Hermes Agent Brain)的 docs/guides/skill-development.md 为核心,系统讲解如何把任何重复性任务固化为"可运行、可测试、可调度"的持久化技能(Skill)。核心信条只有一句:同一件事如果你要请求 Agent 做两次,它就应该已经是一个跑在 cron 上的技能了——第一次是发现,第二次是系统故障。读完本文,你将掌握 GBrain 技能开发的完整五步循环、MECE 所有权纪律、质量门槛检查清单,以及gbrain skillify/gbrain skillopt/ cron 调度等配套工具链的实际用法。
为什么需要技能开发循环
没有这套循环:临时工的 Agent
在没有技能体系时,Agent 的每次执行都是临时发挥。你让它"enrich 一下这个人",它每次都会发明一套新流程,输出质量随上下文波动——上次记得带引用,这次忘了;上次查了实体,这次直接建页面。能力没有沉淀,重复劳动无法累积。
有这套循环:可复用的能力资产
每个能力都被编码(codified)、测试(tested)、调度(scheduled):
- enrichment 每次都以相同的方式运行;
- 新出现的模式一天之内就能被"技能化"(skill-ified);
- 技能的产出有明确的质量条与回归防线。
这正是 GBrain 技能体系的定位:技能是 Agent 能力的最小持久化单元,见 skills/_AGENT_README.md 与仓库内置的 skills/RESOLVER.md 目录结构。
黄金法则
The Rule:If you have to ask your agent for something twice, it should already be a skill running on a cron. First time is discovery. Second time is system failure.
第二次请求同一个任务,就应当进入技能化流程,而不是再手工做一遍。
五步循环:从概念到自动化
Step 1:概念化流程(Concept the Process)
用自然语言描述这个流程需要做什么:
- 输入是什么?输出是什么?由什么触发?
- 会触碰哪些数据源?(邮件、会议转录、社交动态、日历……)
- 应该多久运行一次?(实时、每 30 分钟、每日、每周……)
这一步只做设计,不动手写代码。
Step 2:手工运行 3–10 个条目(Run Manually)
在小批量真实数据上手工执行。这是原型阶段,先不要写 SKILL.md。只做工作并观察:
- 输出实际长什么样?
- 出现了哪些边缘情况(edge cases)?
- 什么样的质量线(quality bar)是合适的?
源码侧的证据:gbrain skillify scaffold生成的脚本骨架会携带SKILLIFY_STUB: replace before running check-resolvable --strict哨兵标记(见 src/core/skillify/templates.ts),gbrain check-resolvable --strict会在哨兵未替换时直接失败——这正是"先别急着把半成品立为技能"的机械约束。
Step 3:评估输出(Evaluate Output)
把结果展示给用户,获得反馈:
- 输出看起来好吗?质量对吗?
- 有没有遗漏什么?是否过度设计?
- 根据学到的经验修正流程。
Step 4:编码为技能(Codify into a Skill)
写 SKILL.md。仓库提供了两条 CLI 支撑:
gbrain skillify scaffold <name> # 生成技能目录骨架 gbrain skillopt <name> # 基于 benchmark 优化已有技能两条路二选一:
- 新技能(New skill)——真正的新能力;
- 并入已有技能(Add to existing skill)——已有能力的变体(用参数化处理,而不是开新技能)。
一个合格技能必须满足:
- Durable(持久)——明天、下周、下个月都能在没有人工干预的情况下正常工作;
- MECE——与其他技能不重叠(见下节);
- Parameterized(参数化)——通过参数处理变化,而不是为每个变体单开一个技能。
Step 5:加入 Cron(Add to Cron,仅当周期性运行)
如果流程需要自动运行:
- 能自然嵌入已有 cron 任务就嵌入;
- 有独立调度诉求就新建 cron 任务;
- 监控前 2–3 次自动化运行的质量;
- 修复规模化后暴露的问题。
关于 cron 的完整调度模式(邮件 30 分钟轮询、会议同步 3 次/日、日历周同步、每日晨报、每周大脑维护、夜间 Dream Cycle),可参考 docs/guides/cron-schedule.md——其中特别强调gbrain dream、gbrain jobs/minions、gbrain autopilot、cron-scheduler技能这些 GBrain 原生调度面优先于裸系统 cron 使用。
MECE 纪律:互斥且穷尽的所有权
技能之间应当Mutually Exclusive, Collectively Exhaustive:
- 每种实体类型(entity type)恰好有一个"主人"技能;
- 每个信号源(signal source)恰好有一个"主人"技能;
- 两个技能创建同一个 brain 页面 = MECE 违规。
所有权示例表
下表是文档中的示例(说明性,你的技能名册会不同):
| 信号源 | 拥有者技能 | 产出 |
|---|---|---|
| 会议转录 | meeting-ingestion | brain/meetings/ 页面 |
| 电子邮件 | executive-assistant | brain/people/ 时间线条目 |
| X/Twitter 帖子 | x-collector | brain/media/ 页面 |
| 人物 enrichment | enrich | brain/people/ 汇总事实 |
| 日历事件 | calendar-sync | brain/daily/calendar/ 页面 |
| 视频/播客内容 | media-ingest | brain/media/ 页面 |
仓库中这些技能真实存在,例如 skills/enrich/、skills/meeting-ingestion/、skills/media-ingest/、skills/briefing/、skills/maintain/,每个技能目录由SKILL.md+routing-eval.jsonl组成(部分技能还有脚本与测试)。
从源码看 MECE 如何被机械校验
MECE 不是只靠自觉。仓库提供了一整套 resolver 审计工具(详见 docs/guides/scaling-skills.md):
gbrain check-resolvable --json # DRY + MECE 审计,无孤立技能 gbrain check-resolvable --strict # 警告也视为失败(CI 用) gbrain doctor # 检查每个技能是否可达(原生扫描或 resolver)parseResolverEntries解析器位于 src/core/check-resolvable.ts,同时读取 Markdown 表格与紧凑列表两种方言,并支持多 resolver 合并(skillpack 的skills/RESOLVER.md+ workspace 的../AGENTS.md)。内置的参考 resolver 见 skills/RESOLVER.md。
质量条检查清单(Quality Bar Checklist)
一个技能准备好发布的标志(逐项勾选):
- 在 3–10 个真实条目上成功运行且输出良好
- 用户已审阅输出并批准
- SKILL.md 少于 500 行(超出的内容用引用/references 承载)
- 创建 brain 页面之前先做 notability 检查(不为无关紧要的人建页面)
- 有引用强制(citation enforcement,每个事实都有来源)
- 与现有技能不重叠(MECE)
- 若周期运行:挂在 cron 上且调度合理
- 若创建 brain 页面:先检查 notability
仓库中的 15 项完整检查清单(skillify check)
gbrain skillify check是质量条的机械审计端,其完整清单定义在元技能 skills/skillify/SKILL.md 中,共 15 项(编号稳定,只增不改):
□ 0. Eval contract — 技能声明 goal + 技能专属维度 + hard-fails □ 1. SKILL.md — 带 frontmatter + contract + phases 的技能文件 □ 2. Code — 适用的确定性脚本 □ 3. Cross-modal eval — 3 家不同供应商的前沿模型对照 contract 评审输出 □ 3b. No-regression gate — 新 eval ≥ 上一迭代(只前进,不后退) □ 4. Unit tests — 覆盖确定性逻辑的每个分支 □ 5. Integration tests — 演练真实端点 □ 6. LLM evals — LLM 环节的质量/正确性用例 □ 7. Resolver trigger — skills/RESOLVER.md 中的真实触发短语条目 □ 8. Resolver eval — 测试触发词能路由到本技能 □ 9. Check-resolvable — DRY + MECE 审计,无孤立 □ 10. E2E test — 冒烟测试:触发 → 副作用 □ 11. Brain filing — 若写页面,在 brain/RESOLVER.md 中有条目 □ 12. Scheduled-run observability — 若支撑 cron,运行经由 minions 可观测 □ 13. Scheduled-task re-run — 若支撑 cron,编辑后重跑代表性任务并 eval □ 14. Plugin membership — 记录在 openclaw.plugin.json 或 skills/plugin-exclusions.jsongbrain skillify check审计机械项(1–11);0、3b、12、13、14 由 Agent 直接验证的程序性门槛。审计输出三类判定:properly skilled/close — create: <缺失项>/needs skillify — run /skillify on <target>,并给出<通过数>/<总数>评分。--json输出结构化信封便于 Agent 路由。
实操落地:用gbrain skillify脚手架与审计
scaffold 子命令
gbrain skillify scaffold <name>(实现见 src/commands/skillify.ts)机械地创建 5 个文件,不调用任何 LLM:
skills/<name>/SKILL.md # frontmatter + body 模板 skills/<name>/scripts/<name>.mjs # 确定性代码桩 skills/<name>/routing-eval.jsonl # 路由 fixture 种子 test/<name>.test.ts # vitest 骨架 (追加) RESOLVER.md 或 AGENTS.md # "## Uncategorized" 下的触发行常用选项:
| 选项 | 说明 |
|---|---|
--description "..." | SKILL.md frontmatter 的一句话描述(必填) |
--triggers "p1,p2,p3" | 逗号分隔的触发短语(默认 TBD 占位) |
--writes-to "d1,d2" | 该技能会写入的 brain 目录 |
--writes-pages | 标记为 brain 页面写入者 |
--mutating | 标记mutating: true |
--force | 覆盖已有桩文件(resolver 行永不重复追加) |
--dry-run | 只打印计划,不写盘 |
--json | 机器可读的计划信封 |
--skills-dir PATH | 覆盖自动探测的 skills/ 目录 |
关键机制:
- 所有生成文件携带
SKILLIFY_STUB哨兵,直到被真实实现替换;gbrain check-resolvable --strict对仍含哨兵的提交脚本直接失败(见 src/core/skillify/templates.ts)。 - 幂等性:无
--force时重跑遇已有文件即报错;--force重新生成脚手架但 resolver 行不重复。 - 名称模式:技能 slug 必须是 kebab-lowercase(
SKILL_NAME_PATTERN校验)。 - 找不到
skills/RESOLVER.md或其父级 resolver 时拒绝执行(提示Create one before scaffolding skills)。
scaffold 之后的标准动作:
bun test test/<name>.test.ts # 2. 跑测试骨架 gbrain skillify check skills/<name>/scripts/<name>.mjs # 3. 11 项审计 gbrain check-resolvable # 4. 路由校验check 子命令
gbrain skillify check [path]运行 11 项审计(第 11 项 cross-modal eval 为参考性信息,不阻塞判定)。该子命令由 scripts/skillify-check.ts 演进而来(D-CX-2),当前实现内联在 src/commands/skillify-check.ts。
完整技能化循环(skillify 元技能)
仓库内置的skillify技能(skills/skillify/SKILL.md)把上述 CLI 原语编排成端到端循环:scaffold → 填充正文 → 声明 eval contract → 跨模态 eval → 跑 check → 跑 check-resolvable → 写测试 → 提交。CLI 原语负责机械步骤,技能负责判断步骤。
其中几个值得注意的设计:
- 先 eval 后测试:跨模态 eval 先证明质量线,再写测试把已验证的好行为固化——"测试锁死平庸"是反模式。
- 跨模态 eval 门槛:3 家不同供应商的前沿模型(如 OpenAI / Anthropic / DeepSeek 各一)并行打分,通过条件为"每个维度均值 ≥ 7 且无任何单模型单维度 < 5"。必须跨供应商,避免盲点相关。
- 无回归法则(No-Regression Law):任何技能编辑的 eval 得分必须 ≥ 上一迭代,且任一维度回落不得超过 0.5;调度支撑型技能编辑后必须重跑代表性任务并 eval 真实输出。
发布后:用gbrain skillopt持续优化
技能上线不等于终点。gbrain skillopt(参考文档 docs/guides/skillopt.md)把 SKILL.md 当作 Agent 的"可训练参数":写一个现实任务 benchmark,SkillOpt 观察 Agent 运行、提出具体编辑、重新测试,只保留可衡量提升的改动。
30 秒工作流:
# 1. 从技能自身生成 starter benchmark gbrain skillopt my-skill --bootstrap-from-skill # 2. 审阅 benchmark——强化生成的 judge(初稿较弱),删除尾部 # BOOTSTRAP_PENDING_REVIEW 行 # 3. 运行优化器(~15 任务 starter 必须 --split 1:1:1) gbrain skillopt my-skill --bootstrap-reviewed --split 1:1:1关键安全护栏:验证门槛强制(median-of-3 + epsilon=0.05)、frontmatter 变异禁止(防路由面漂移)、持出集门槛(防对 benchmark 过拟合)、只读工具沙箱(防优化运行向 brain 写垃圾页面)、脏工作树拒绝、成本预检。
实践中的含义(What This Means in Practice)
- 不要临时做 brain enrichment,用
enrich技能; - 不要手工刷社交媒体,用自动化 cron;
- 不要手工录入会议纪要,用
meeting-sync配方(见 recipes/meeting-sync.md); - 不要手工创建实体页面,用实体检测器;
- 新模式出现:原型化(prototype it)→ 技能化(skill-ify it)→ cron 化(cron-ify it)。
易错点(Tricky Spots)
MECE 违规会无声累积。两个都写
brain/people/页面的技能会制造重复与冲突数据。新建技能前查所有权表;已有技能已拥有该实体类型,就用参数扩展它,而不是开新技能。质量条是真实的。未经 3–10 个真实条目测试与用户批准,不要发布技能。产出糟糕的技能比没有技能更糟——它会在 cron 上以规模制造坏页面。
不要创建桩(stubs)。写着 "TODO: implement" 的 SKILL.md 不是技能。每个技能必须完整到能在真实数据上端到端运行。做不完就不要创建文件,保持手工执行直到能把它做对。机械侧对应物即
SKILLIFY_STUB哨兵检查。
如何验证(How to Verify)
在 3 个真实条目上运行技能。用真实数据(非测试数据)执行,检查输出达到质量条:引用齐全、notability 已检查、无桩文件。
对照现有技能检查 MECE。审阅所有权表:新技能是否在别的技能已拥有的目录里建页面?是,则为 MECE 违规——合并或参数化。
逐项走查质量条检查清单。上面任一复选框未勾选,该技能就不能上 cron。
另外,仓库为技能提交提供了每提交门禁:
bun run gate:skills # scripts/skills-commit-gate.sh:conformance + resolver + plugin-manifest 测试在提交任何skills/变更前运行,让成员/闭包与plugin.version断言在本地失败而非 CI(见 docs/guides/scaling-skills.md)。
与技能体系其他文档的关系
- docs/guides/scaling-skills.md——技能超过 300 个时如何用三层分级(Tier A 常驻 / Tier B resolver 路由 / Tier C 休眠)+ 单一 resolver 突破上下文窗口瓶颈;
- docs/guides/skillopt.md——
gbrain skillopt的完整参考:flags、退出码、成本模型、安全护栏; - docs/guides/skillpacks-as-scaffolding.md——如何跨机器、跨 Agent 分发成套技能;
- docs/guides/cron-schedule.md——生产大脑的 20+ 周期任务调度参考;
- docs/GBRAIN_SKILLPACK.md——本文所属的 GBrain Skillpack 总纲。
本文基于 docs/guides/skill-development.md(GBrain Skillpack 的一部分),并辅以仓库源码(src/commands/skillify.ts、src/core/skillify/templates.ts、src/core/check-resolvable.ts)与元技能 skills/skillify/SKILL.md 深化。
【免费下载链接】gbrainGarry's Opinionated OpenClaw/Hermes Agent Brain项目地址: https://gitcode.com/gh_mirrors/gb/gbrain
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考