Oh My KB — Agent & Skill 设计理念(团队参考)

无重(姚继涛)整理 · 2026-07-03 · 团队学习与设计参考
目录
  1. 设计哲学五铁律
  2. 架构分层
  3. Skill 设计规范
  4. Agent 设计规范
  5. 编排模式速选
  6. 记忆与验证
  7. Cron / Loop 设计
  8. 护栏与可观测
  9. 自治层级定位
  10. 成本控制
  11. 四大反模式
  12. 1990 年代基本功
  13. 团队上手清单

Oh My KB — Agent & Skill 设计理念

这是 Oh My KB(无重的私人助理 + 知识库 Agent)运行大半年的设计沉淀。不是理论,是每天 11 个 cron + 21 个 skill + 3 个子 Agent 在跑的实战体系。给团队参考,落地 Harness 时按需取用。

一、设计哲学:五条铁律

1. Thin Harness, Fat Skills(瘦驾驶舱,胖技能)

驾驶舱(CLAUDE.md)只放原则 + 路由 + 高频输出规范,约 200 行。所有领域细节放 skill 文件,按需加载。

为什么:驾驶舱每次会话全量进上下文。塞细节 = 每条对话都付 token + 模型注意力被稀释。瘦驾驶舱 = 低固定成本 + 高信号噪声比。

反面:把"飞书 API 字段说明""投资评分公式"写进 CLAUDE.md → 每次会话烧 token,且改一处要动全局。

2. 渐进式披露(Progressive Disclosure)

信息按"需要时才读"分层:metadata → SKILL.md → references/codemap/checklist。

实测数据(SkillJuror 论文):精准按需加载让每次任务触及的引用文件从 1.18 → 3.85(+226%)。

铁律:references 触发条件必须三步式——{什么内容} → {哪个文件} → {什么时候读}。禁止"详情见 references/xxx.md"这种等于没写的指针。

3. 模型 vs 脚本分工

凡是看了不满意会让你重做的东西,用脚本锁死。凡是换一种说法也行的事情,交给模型。
模型擅长模型搞不定(→ 脚本锁死)
理解自然语言、归纳总结精确计算(价格、比例、增长率)
写通顺文字、判断异常格式一致性(色号、字体、图表样式)
应对边界情况结构化数据查询(SQL、API 调用)
对照清单逐条检查品牌/公司规范

判断标准:这一步产出你看了会不会不满意到要求重做?会 → 脚本。换一种措辞也能接受 → 模型。

新 skill 创建前必填一张表:步骤 → 执行者 → 要求 → Know-how。表有了,写 SKILL.md 和脚本只是执行。

4. 知识 vs 编排分离(Anthropic L4)

核心原则:Skill 不含流程逻辑——流程属于 Agent。定义交付物而非目标(防范围蔓延)。声明负面空间(每个 Agent 写清"永远不做什么")。Deny-by-default 工具(从全禁起步,只显式开需要的)。

5. 修问题即加规则

每次踩坑修复后,必须在对应 SKILL.md / CLAUDE.md / rules 加约束。不沉淀的修复等于没修——下次还会犯。

进阶:L4 持续学习闭环——Critic FAIL 逐条记 patterns.md,≥3 次同类 FAIL 升级为永久规则进 optimizations.md;单次严重 FAIL(数据丢失/推送失败/持仓漏查)立即升级不等 ≥3 次。


二、架构分层:三层 + 内容五分法

三层架构:Hooks → Skills → Agents

Hooks(确定性执行,PreToolUse/UserPromptSubmit)
   ↓
Skills(领域知识 + 执行流程 + 脚本,按需加载)
   ↓
Agents(工作流编排,路由器启动子 Agent,独立上下文)

内容五分法:东西放哪

容器放什么判断标准加载时机
根 CLAUDE.md原则 + 全局路由 + 输出规范"每次会话都需要知道?"启动全量
{dir}/CLAUDE.md该目录操作约定 + 结构规范"只在这目录工作时需要?"进目录追加
.claude/rules/碰特定路径的硬约束"操作时必须强制执行?"paths 匹配时注入
skills/领域知识 + 执行流程 + 脚本"只在执行特定任务时需要?"Skill 调用按需 Read
kb-docs/跨 skill 共享规范"多个 skill 都要参考?"按需 Read

铁律:所有 rule 必须带 paths frontmatter——无 paths 的 rule 是分散版 CLAUDE.md,启动即加载全程占 token,违反 Thin Harness。


三、Skill 设计规范

三层文件结构

简单(路由器):   SKILL.md
中等(工具类):   SKILL.md + codemap.md
复杂(领域子技能): SKILL.md + codemap.md + checklist.md + procedures/ + references/
文件内容何时需要
SKILL.md入口、控制流、输出路径必选
codemap.md目录结构 + 何时读哪个文件目录或 references ≥ 3 个
checklist.md分阶段执行确认清单多阶段流程、有先后依赖
scripts/Python/shell,可独立运行有精确计算/格式渲染/数据拉取
references/模板/规范/配置有按需加载的细节
procedures/分阶段操作指南有多阶段执行流程

SKILL.md vs references 边界

一条铁律:SKILL.md = 控制流,references = 数据/细节。

放 SKILL.md放 references/
路由逻辑(怎么触发、去哪)配置参考(cookie 路径、API 格式)
执行步骤(1→2→3)模板(带占位符)
关键判断点("≥3 FAIL 则重写")详细规范(字数表、自检清单)
指针("Read references/xxx")故障排查、长规则集

判断标准:需不需要每次执行都读? 每次必走 → SKILL.md。按需或异常才读 → references。

命名规范

kb-{type}-{domain/action},前缀定角色:

前缀角色示例
kb-core-主 Agent 核心能力,直接执行kb-core-qa, kb-core-research
kb-fetch-抓取→总结,主 Agent 直接执行kb-fetch-compose
kb-route-路由器,匹配触发词→启动子 Agentkb-route-memory, kb-route-finance
kb-tools-工具调用,主 Agent 直接执行kb-tools-futu, kb-tools-github-trending
kb-{agent}-子 Agent 持有技能kb-memory-daily, kb-finance-invest

命名决策:先问"谁执行"→ 再问"什么域"→ 选前缀。

codemap 设计模式

codemap 是渐进式披露的触发机制,解决"Agent 面对 5+ 文件不知道读哪个"。三列表:

文件内容读它的条件
SKILL.md入口、流程、输出路径每次触发
procedures/preflight.md前置检查、拉取命令执行前
references/xxx.md模板/规则具体阶段触发

原则:每个文件一行写清"什么时候才需要读";不列 scripts/(不读,直接执行);按执行顺序排;SKILL.md 必须有指针"首次或不确定时读 codemap.md"。


四、Agent 设计规范

路由器 + 子 Agent 模式

主 Agent 不直接调用子 Agent 的技能——走路由器:

cron / 用户触发 → 主 Agent 匹配路由 skill(kb-route-*)
   → Agent 工具启动子 Agent
   → 子 Agent 预加载完整 SKILL.md(frontmatter skills 声明)
   → 逐步执行(含存档 + 日志)→ 返回蒸馏结果

逻辑隔离而非物理隔离:子 Agent 持有的技能物理上和主 Agent 技能同目录,靠 agent 定义文件的 skills: frontmatter 声明预加载。

Anthropic L4 Agent 模板

每个 Agent 定义包含:

  1. 身份:是谁、消费哪些 Skill
  2. 交付物清单:具体产出物(防范围蔓延)
  3. 编号步骤工作流:1→2→3,含存档路径 + 日志格式
  4. 护栏:永远不做什么(声明负面空间)
  5. Deny-by-default 工具:从全禁起步,只显式开需要的
  6. 隔离不受信内容:读外部文档的 Agent 不碰工具和系统

子 Agent 上下文隔离

子 Agent 用 context: default 独立上下文,返回 JSON/蒸馏结果,父 Agent 只收结论不收原始过程。多 Agent 成败在 handoff 时上下文大小的精准控制


五、编排模式速选(四层体系)

层级来源关注点
L1 工作流范式Andrew NgAgent 怎么思考行动(反思/工具/规划/多智能体)
L2 编排架构Google Cloud 12 种多 Agent 怎么组织协作
L3 Skill 微观Google 5 种 + Anthropic单个 Skill 文件怎么结构化
L4 系统架构AnthropicAgent→Skill→MCP 三层分离

速选指南

Oh My KB 已覆盖


六、记忆与验证:两条复利护城河

记忆层(moat 是记忆,不是 prompt 或工具)

三层记忆架构:

Layer内容维护TTL
JSONL 原始~/.claude/projects/*.jsonl自动只读永久
飞书/会话 rawmem-raw/ 下各档每日 cron永久
结构化记忆memory/ 下 9 文件每周日蒸馏见 TTL 表

启动加载顺序(按优先级,非全量):recent.md → cron 日志近 2 天 → user_profile → mayfair-status(14d) → feedback → stable 按需 → family 按话题触发。

关键原则:Access ≠ Awareness。不在上下文里的东西对模型来说不存在。所以启动加载要按话题路由,不是全塞。

蒸馏四路并行:会话摘要 / 飞书摘要 / 聊天记录 / 财务数据源 → 子 Agent 各自逐篇 Read → 合并 → Critic 审查 → 写入 → stable 主动审计 → 归档。

验证层(Task→Output→Verify→Fix→Done)

每个产出的 skill 都内嵌验证:抓取类有四源交叉 + 自检 9 项;蒸馏有 Critic 4 项审查;投资有 Critic 4 维度。

L4 持续学习闭环

Critic FAIL → 逐条记 patterns.md
   → ≥3 次同类 FAIL 升级 optimizations.md(永久规则)
   → 标 ⏳ 验证中,下次蒸馏检查复发
   → 无复发 ✅ 已验证 / 复发 ❌ 回滚或加强

质量趋势预警:PASS 饱满度连续 2 周下降 ≥0.5 → ⚠️ 恶化;连续 3 周下降 → 🔴 人工介入。


七、Cron / Loop 设计原则

Cron prompt 只写触发短语

✅ "执行投资早盘分析"
❌ "拉取富途行情+雪球讨论+计算信号+存档到 outputs/投资分析/2026-07-03.md"

全部业务逻辑(执行步骤+存档路径+日志格式)必须在对应 SKILL.md 中自包含。触发路径:cron → 主 Agent 匹配路由 skill → 子 Agent Read 完整 SKILL.md → 逐步执行。

为什么:prompt 嵌步骤 = 改流程要改 cron 配置 = 多一处维护。逻辑在 SKILL.md = 一处真值 + 可被人工触发复用。

Loop Engineering

关键:停止条件必须可程序化测量。模糊目标("改善体验")→ 不如定("time-to-interactive < 1s")。


八、护栏与可观测

护栏四层纵深

机制现状
Sandboxubuntu-cc 容器隔离不挂载
Permissionsallowed-tools + 路径权限 + auto 模式
HooksPreToolUse(raw 只读/隐私数据)+ UserPromptSubmit(关键词路由)
Injection Defense抓取内容不信任 + 审查层❌ P0 待补

硬约束靠 hook,解释靠 path-scoped rule。raw 只读、wiki 由编译维护、隐私数据禁部署——这三条有 PreToolUse hook 拦截 + rules/ 文件解释。

可观测


九、自治层级定位(Addy 框架)

按 Addy Osmani 双轴六层(agency × orchestration,L0–L5):

系统层级依据
Oh My KBL4 + L5 萌芽3 路由器+子 Agent、11 cron 触发、Critic 独立审查(=Auto-review)、NO_REPLY 异常管理、PreToolUse gate、沙箱;缺连续工厂和规模
备货 Co-PilotL1–L2监督执行+受限委派,验证靠人;读侧 monitor 到 L4 雏形
小思平台L1–L2 基线,L4–L5 图纸基础设施在建,Harness 是目标态

整体卡在 L2→L4 爬升段,6/26 Harness 是奔 L5 的路线图。

核心论点(Addy):自治天花板不是任务名,是风险+可逆性+验证。每次跑 agent 前签 contract:目标/范围/非目标/工具权限/停止条件/证据/升级/预算。验证永远是瓶颈


十、成本控制:10-80-10 模型路由

Fable 5 是 Opus 4.8 的 2 倍价且过度思考。用 Anthropic 工程师自用的 10-80-10:

Oh My KB 已在用模型路由(主 Agent / 子 Agent / Critic)+ DeepSeek 缓存(命中率 98%+)做这件事。7/7 Fable 转按量后,cron 执行层必须显式切便宜模型,Fable 只留规划 + Critic 两段。


十一、四大反模式(必须避免)

反模式表现修复
自治当身份徽章高自治=能力证明而非安全证明,agent 跑得比验证支持还热表扬选对层级的人,严控越级
许可洗钱审批疲劳导致给 AI 远超必要的权限沙箱 profile + scoped writable roots + allowlist + hooks + Auto-review
摘要替代审查agent 的工作摘要当作审查bundle 同手动审查的证据包(diff/tests/logs/screenshots/reviewer findings)
Fleet cosplay几十 agent 并行但人还在手编排每个依赖共享状态+所有权规则+依赖追踪;WIP 限制强制把协调步骤编码

十二、1990 年代基本功(立党提醒,agent 时代依然成立)

让 AI Agent 写好代码的秘诀全在 1990 年代教材里:

  1. 踏踏实实写 test,拉高 coverage
  2. 认真做 CI/CD,千方百计防 messed up
  3. 新项目 top-down spec-driven(从 feature/requirement 出发设计 architecture 和 interface)
  4. 快速增长项目先切文件→切 module→拆 service,提前解耦
  5. 一类功能提前做 design pattern,减重复增复用
  6. codebase 够大就提高 test coverage 增量修,或保 spec+test+interface 推倒重写——"永远重写"

外部化约束是 Agent 可靠运行的必要条件(Code Review/Unit Testing/CI/CD/灰度拦截 AI Agent)。agent 越强,越要把这套基本功捡回来——不是新魔法。


十三、团队上手清单

新建 Skill 时

1. 拆步骤:从触发到输出分几步?
2. 标执行者:每步过"模型还是脚本"铁律
3. 填表:步骤 → 执行者 → 要求 → Know-how
4. 搭三层:需要 scripts/ 吗?references/ 吗?
5. 写 SKILL.md:只放路由+步骤+触发条件,代码进 scripts/
6. 验证:最可能幻觉的那步——脚本锁死了吗?

新建 Agent 时

1. 先 L2 单智能体(从简单开始),别一上来就多 Agent
2. 定义:身份 / 交付物清单 / 编号步骤 / 护栏(永远不做什么)
3. Deny-by-default:工具从全禁起步,只显式开需要的
4. 子 Agent 独立上下文,返回蒸馏结果不返原始过程
5. 高准确率场景加 Critic(L2 审核评判)

设计流程时

1. cron prompt 只写触发短语,逻辑进 SKILL.md
2. 停止条件必须可程序化测量
3. 每步产出加验证(Task→Output→Verify→Fix→Done)
4. 踩坑后立即在 SKILL.md/CLAUDE.md/rules 加约束
5. Critic FAIL 进 L4 闭环:patterns → ≥3 次升级 optimizations

取舍原则


附:核心参考

内部规范(kb-docs/)

外部文章(raw/)


这套体系不是一次设计出来的,是每天 11 个 cron 跑出来、踩坑修出来的。修问题即加规则——任何不沉淀的修复等于没修。落地 Harness 时按需取用,不必照搬全量。