GBrain 技能开发循环(Skill Development Cycle):从临时任务到自动化的五步方法论
2026/9/20 19:51:48 网站建设 项目流程

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 dreamgbrain jobs/minions、gbrain autopilotcron-scheduler技能这些 GBrain 原生调度面优先于裸系统 cron 使用。


MECE 纪律:互斥且穷尽的所有权

技能之间应当Mutually Exclusive, Collectively Exhaustive

  • 每种实体类型(entity type)恰好有一个"主人"技能;
  • 每个信号源(signal source)恰好有一个"主人"技能;
  • 两个技能创建同一个 brain 页面 = MECE 违规。

所有权示例表

下表是文档中的示例(说明性,你的技能名册会不同):

信号源拥有者技能产出
会议转录meeting-ingestionbrain/meetings/ 页面
电子邮件executive-assistantbrain/people/ 时间线条目
X/Twitter 帖子x-collectorbrain/media/ 页面
人物 enrichmentenrichbrain/people/ 汇总事实
日历事件calendar-syncbrain/daily/calendar/ 页面
视频/播客内容media-ingestbrain/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.json

gbrain 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)

  1. MECE 违规会无声累积。两个都写brain/people/页面的技能会制造重复与冲突数据。新建技能前查所有权表;已有技能已拥有该实体类型,就用参数扩展它,而不是开新技能。

  2. 质量条是真实的。未经 3–10 个真实条目测试与用户批准,不要发布技能。产出糟糕的技能比没有技能更糟——它会在 cron 上以规模制造坏页面。

  3. 不要创建桩(stubs)。写着 "TODO: implement" 的 SKILL.md 不是技能。每个技能必须完整到能在真实数据上端到端运行。做不完就不要创建文件,保持手工执行直到能把它做对。机械侧对应物即SKILLIFY_STUB哨兵检查。


如何验证(How to Verify)

  1. 在 3 个真实条目上运行技能。用真实数据(非测试数据)执行,检查输出达到质量条:引用齐全、notability 已检查、无桩文件。

  2. 对照现有技能检查 MECE。审阅所有权表:新技能是否在别的技能已拥有的目录里建页面?是,则为 MECE 违规——合并或参数化。

  3. 逐项走查质量条检查清单。上面任一复选框未勾选,该技能就不能上 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询