Oh My KB — Agent 系统实现蓝图

Implementation Blueprint · 4-Layer Architecture · Thin Harness Fat Skills · Progressive Disclosure
一份 Agent 可以读懂并据此复现的完整实现参考

§1 设计哲学 Design Philosophy

核心 Thin Harness, Fat Skills

主配置文件(CLAUDE.md)只放原则 + 高频路由规则。所有操作细节下沉到 SKILL.md。原则:不要在入口文件放执行步骤。

核心 Progressive Disclosure

三个加载深度:metadata(始终在上下文,~100词)→ SKILL.md 正文(触发时加载)→ references/(按需读取,无大小限制)。

核心 Cron Prompt Minimalism

cron prompt 只写触发短语(如「执行投资早盘分析」),零条业务逻辑。全部执行步骤、存档路径、日志格式必须在 SKILL.md 中自包含。禁止在 cron prompt 中嵌入路径。

约束 输出首行硬约束

每条回复首行必须为 [标注] → 目录,接 ---。标注体系:直接回答、查询人物、深度分析、投资分析、抓取推文/公号/GitHub 等。不确定时用「直接回答」。不省略,不例外。

约束 知识边界与来源标注

每个结论标注来源:📚 vault 记录 / 🧠 推断 / 📋 JSONL 回查。查人:先近后远(最近 3 天飞书摘要 + session-summaries)。cron 上下文优先(查日志最近 2 天)。不可无标注陈述。

§2 四层架构 4-Layer Architecture

L1 · Hooks
护栏层 · 什么不能做
L2 · Skills
知识注入 · 怎么做
L3 · Agents
判断层 · 谁来做
L4 · Continuous Learning
持续学习 · 从错误中升级

L1 Hooks — 护栏

PreToolUse + PostToolUse 规则,管「什么绝对不能做」。例如:阻止 rm -rf 对 raw/ 目录,检查文件名不允许全角/弯引号。写在 settings.json

L2 Skills — 知识注入

每个 skill 是一个 YAML frontmatter + SKILL.md。渐进加载:metadata → SKILL.md 正文 → references/。关键字段:description(触发词,不含执行指令)、allowed-tools(最小权限)、context: fork(隔离子 Agent)、disable-model-invocation: true(禁止主 Agent 直接调用)。

L3 Agents — 判断层

子 Agent 物理隔离:主 Agent skill 在 配置/skills/,子 Agent skill 在 配置/agents/{name}/skills/。路由器 skill 只有触发词 + 子 Agent 路径,正文是强制指令:「不要自己执行——必须使用 Agent 工具」。CC 原生 skills: YAML 字段预加载子 Agent 技能。

L4 Continuous Learning

Critic FAIL 时记录到 patterns.md → 每周蒸馏时统计频率 → 出现 ≥3 次的模式自动升级为永久规则写入 optimizations.md,并追加到对应 SKILL.md 的约束。不需要人工复盘。

§3 Skill 系统设计 Skill System

Anatomy Skill 文件结构

--- name: kb-xxx ← 唯一标识 description: "触发词..." ← 只写触发词和场景,不含执行步骤 allowed-tools: Bash Read Write ← 最小权限原则 context: default | fork ← fork = 隔离子 Agent 上下文 disable-model-invocation: true ← 禁止主 Agent 直接调用(仅子 Agent 预加载) --- ## Overview — 一句话定位 ## ⚡ 执行前检查 — 先验证前提再执行 ## 执行流程 — Step 1 → Step 2 → ... → Step N ## Step N — Critic 审查(必须) references/ — 模板、策略表、详细规则(按需加载)

Pattern Router Skill 模式

路由 skill 与执行 skill 分离。路由 skill 正文只有子 Agent 路径 + 强制委托指令。路由 skill 的 description 与执行 skill 有重叠触发词,但路由 skill 优先匹配(context: default),然后强制委托给子 Agent。

# kb-finance SKILL.md (Router) --- name: kb-finance description: "Use when user says 早盘分析/盘后分析..." allowed-tools: Bash Agent context: default --- 你收到了一个投资分析请求。不要自己执行—— 你必须使用 Agent 工具启动 kb-finance-agent⚠️ 关键:Agent 工具返回结果后,你必须将子 Agent 的完整输出原样作为你的回复文本输出。

Pattern Physical Skill Isolation

子 Agent 的技能文件物理隔离在 agents/{name}/skills/ 目录下。主 Agent 的 配置/skills/ 和子 Agent 的 配置/agents/{name}/skills/ 是完全独立的目录树。主 Agent 无法直接读取子 Agent 的 skill 文件——只能通过 Agent 工具启动子 Agent 后,由子 Agent 自行加载。

Rule CC Native skills: 预加载

子 Agent 定义文件(agents/kb-finance-agent.md)使用 CC 原生的 skills: YAML 字段声明持有技能。这些 skill 在子 Agent 启动时自动预加载到上下文,零延迟。不再需要子 Agent 手动 Read 完整 SKILL.md 文件——CC 框架自动注入。

# agents/kb-finance-agent.md --- name: kb-finance-agent description: Investment and finance analysis sub-agent tools: WebSearch, Read, Write, Bash, Agent skills: - kb-invest-report - kb-report-finance ---

§4 记忆系统 Memory System

Architecture 三层结构

Layer内容维护方式TTL
原始记录JSONL 对话原文 + 飞书消息 JSON + 会话原文 md自动 + cron永久
AI 摘要飞书日报摘要 + 会话摘要(~2KB/篇)cron 每日生成永久
结构化记忆user_profile / mayfair-stable / mayfair-status / recent / feedback / vault / side-projects蒸馏 + 实时写入7-90天

Pattern Sliding Window — 不是 Rolling Window

recent.md 使用滑动窗口(10 天),不是滚动窗口。蒸馏时只移除超出窗口的条目,保留窗口内内容。绝对不能全量清空。已蒸馏条目归档到 memory/archive/

Pattern 启动加载顺序

新会话按优先级:① recent.md ② cron 执行日志最近 2 天 ③ user_profile.md ④ mayfair-status.md(TTL 14d)⑤ feedback.md ⑥ mayfair-stable.md(按需)。Fallback:JSONL 回查。

Flow 记忆蒸馏流水线

7天 feishu-summary
+
7天 session-summaries
+
7天 feishu-chat
三路并行
子 Agent 提取
Critic 审查
冲突标记
写入结构化
记忆文件
裁剪 recent
滑动窗口

§5 Cron 系统 Cron Design

硬约束 Prompt 最小化原则

cron prompt 只写触发短语,不写执行步骤、不写存档路径、不写日志格式。所有业务逻辑在对应 SKILL.md 中自包含。

# ✅ 正确 cron add --cron "17 9 * * 1-5" --prompt "执行投资早盘分析" # ❌ 错误 cron add --cron "17 9 * * 1-5" --prompt "执行投资早盘分析, 存档到 输出/投资分析/xxx.md,写日志到 运行日志/logs/cron/"

硬约束 Session Mode

所有 cron 必须使用 session_mode: new_per_run。禁止 reuse——共享 session 会导致并发冲突和「session is busy」错误。每个任务独立 session,互不干扰。

Architecture Cron → 主 Agent → 路由 skill → 子 Agent → 执行

cc-connect
cron fires
主 Agent
匹配路由 skill
路由 skill 强制
Agent 工具启动子 Agent
子 Agent
Read 完整 SKILL.md
逐步执行
含 Critic + 存档 + 日志

§6 关键修复模式 Critical Fix Patterns

BUG cc-connect 推送丢失

症状: cron 运行了、子 Agent 生成了结果,但用户微信没收到。根因:主 Agent 收到 Agent 工具结果后没输出为直接文本。cc-connect 只捕获主 Agent 的直接文本回复,Agent 工具内部结果不会自动外泄。

修复:路由器 skill 正文加硬约束 —「Agent 工具返回结果后,你必须将子 Agent 的完整输出原样作为你的回复文本输出。不要只回复'已完成'」。

BUG 路由 skill 未强制委托

症状: 主 Agent 读路由 skill 正文「使用 Agent 工具启动...」后当成建议而非命令,自己直接执行。根因:自然语言指令太软。

修复: 改成强硬指令 —「不要自己执行——你必须使用 Agent 工具启动 xxx-agent」。加 ⚠️ 关键标注。只要看到路由 skill 被匹配,Agent 没有其他选择。

§7 编译流水线 Compilation Pipeline

Architecture 全部从磁盘重建,不做增量登记

核心脚本:rebuild_all_sources.py — 扫描 原始素材/ 下所有 .md 文件 → 解析 frontmatter → 全量重建 All-Sources.md。不存在「注册」步骤——文件放到 raw/ 目录就是注册。

raw/ 新增
.md 文件
rebuild_all_sources.py
扫描 raw/ 全目录
All-Sources.md
全量重建
编译 Agent
生成摘要 + 概念
wiki/concepts/
结构化知识
编译触发条件: 待编译 ≥ 5 篇 / 用户说「编译」/ 健康检查前。不自动触发——成本高,需要有明确的信号。

§8 Vault 目录结构 Directory Layout

目录用途规则
原始素材 (raw)/原始内容(AI技术/投资财经/GitHub项目/等)只读只追加,不修改不删除
知识库 (wiki)/编译产出(All-Sources/All-Concepts/concepts/summaries)LLM 维护
输出 (outputs)/回答/报告/投资分析/GitHub趋势问答归档 + 定时产出
记忆 (memory)/结构化记忆文件蒸馏维护 + 实时写入
记忆原始 (mem-raw)/会话原文/摘要/飞书聊天/日报不进编译流水线
个人数据 (personal-data)/持仓/备份/隐私数据不进编译,严禁公开部署
工作区 (workspace)/创作过程文件不进编译,>30天清理
运行日志 (logs)/cron/蒸馏/健康检查日志自动化追加

§9 如何扩展 How to Extend

Add Skill 新建一个 Skill

  1. 创建 配置/skills/kb-xxx/SKILL.md
  2. YAML frontmatter: name + description + allowed-tools + context
  3. 正文:Overview → 执行前检查 → 执行流程 → Critic
  4. 如需详细模板 → references/
  5. 如果是执行 skill(仅子 Agent 调用)→ disable-model-invocation: true

Add Cron 新建定时任务

  1. 在 CLAUDE.md cron 表加一行
  2. Prompt 只写触发短语
  3. session_mode: new_per_run
  4. 避开整点和半点(用 7/17/23 等 odd minutes)
  5. 所有执行逻辑在对应 SKILL.md

Add Sub-Agent 新建子 Agent

  1. 创建 agents/kb-xxx-agent.md(YAML + tools + skills:)
  2. 创建 agents/kb-xxx-agent/skills/ 目录
  3. 创建路由 skill 配置/skills/kb-xxx/SKILL.md
  4. 路由 skill 正文:强制 Agent 委托指令 + cc-connect 推送约束

§10 系统规模 System Scale

19
主 Agent skill(含 2 个路由)
2
子 Agent(finance + memory)
11
cron 定时任务(全部 new_per_run)
587
已编译来源(零待编译)
6+2
disable-model-invocation skill + fork 隔离 skill
4
架构层(Hooks→Skills→Agents→L4)
Agent 复现清单 / Reproduction Checklist: ① 创建 vault 目录结构 → ② 写 CLAUDE.md(Thin Harness) → ③ 建第一批 skill(编译 + 摄取) → ④ 建 hooks(settings.json) → ⑤ 启用 CC auto-memory → symlink 到 vault memory/ → ⑥ 建子 Agent + 路由 skill + 物理隔离目录 → ⑦ 建 cron(全部 new_per_run,prompt 只写触发词) → ⑧ 建 L4 文件(patterns.md + optimizations.md) → ⑨ 建 Critic 审查(每个 SKILL.md 末尾) → ⑩ 运行蒸馏 → 验证 memory 文件写入 → 迭代