技能生态图书馆管理 Skill Ecology Librarian v4.1
第一原则
图书管理员不烧书,园丁不灭种,审计员不执刑。
下一版 skill ecology librarian 的核心不再是判断 skill 是否该活, 而是判断它应该处在哪个生态位:舞台、书架、冷库、种子库、禁区。
真正的智能不是更会删除,而是更会安置。
核心定位
v1.0 是园丁(Gardener)— 用剪刀修剪花园,决定谁活谁死。 v2.0 是图书管理员(Librarian)— 分类上架,决定书放在哪个区。
真正的园丁不是决定谁该死,而是决定谁该上台、谁该入库、谁该封存、谁只能在受控实验室里被阅读。
核心转变:
- 没有技能被"删除"——只有被重新分类
- 所有低分技能进入种子库(可复活)而非坟墓
- 危险技能进入隔离层(可借阅)而非处决
- 最终用户(你和 GPT)自己从不同分区借书
四层架构
┌─────────────────────────────────────────────────┐
│ 🚀 热气层(常备能力) │
│ 重启即加载 · 追求效率 · 极端熵减 · 高频调用 │
│ 只放最活跃、最可靠的 10-15 个技能 │
│ 性能敏感,任何延迟都必须从这层移除 │
├─────────────────────────────────────────────────┤
│ 📚 常驻层(知识书库) │
│ 按需懒加载 · 可冗余 · 参考索引 · 中频调用 │
│ 大部分 keep 技能在这里,有索引但不常驻内存 │
│ 加载成本 100-500ms,可接受 │
├─────────────────────────────────────────────────┤
│ 🌱 种子库(历史可能) │
│ 不加载 · 仅存元数据索引 · 零运行时成本 │
│ 所有 cold_storage 和 probation 技能在这里 │
│ anti_entropy_flag=true 的技能必入库 │
│ 定期(每 30 天)随机抽 1-2 个放回常驻层观察 │
│ 禁止永久删除,只有"入库时间"和"最后借阅时间" │
├─────────────────────────────────────────────────┤
│ 🔒 隔离层(危险知识) │
│ 需显式授权 + 审计日志 · 只读 · 每次调用留记录 │
│ godmode、obliteratus 等 red-teaming 技能 │
│ 不销毁知识,但要求每一次借阅都有理由和记录 │
│ 红队测试时可用,日常环境中不可见 │
└─────────────────────────────────────────────────┘
执行流程
步骤 1:加载输入
读取 skill-ecosystem-assessment.json(v1.0 的输出或手动评估结果)。
步骤 2:四层分类
对每个技能不做"生死判决",而是分配馆藏层级:
| 原 recommended_action | 映射到 | 说明 |
|---|---|---|
| keep (score ≥ 80) | 🚀 热气层 | 核心能力,高频使用 |
| keep (score 50-79) | 📚 常驻层 | 正常技能,按需加载 |
| probation | 🌱 种子库 | 有潜力待观察 |
| cold_storage | 🌱 种子库 | 低活跃但保留可能性 |
| anti_entropy_flag=true | 🌱 种子库(强制) | 多样性保护,禁止升层 |
| delete_candidate (危险) | 🔒 隔离层 | 危险但保留知识 |
| delete_candidate (重复) | 🌱 种子库 + 合并标记 | 重复但保留为历史记录 |
步骤 3:任务级召回(必须执行)
分类只决定是否预加载,不能决定技能是否可发现。每个用户任务开始前,必须先对完整档案执行一次上下文召回:
python3 scripts/canon_archive.py --state .canon/archive.json \
preflight "当前任务描述" --selected "已经计划使用的技能"
召回范围必须包含 hot、normal、seed_bank 和 archive。命中种子库或归档深冻技能时:
- 记录
missed_opportunity(如果它本应被使用但计划中没有它)。 - 高置信命中自动调用
resurrect,将技能放入normal观察态,默认观察 7 天。 - 任务结束调用
outcome;成功留在常驻层,失败回退到复活前的层级。 - 隔离层只返回“需要授权”的候选,禁止自动加载。
步骤 4:主动轮转(反熵减机制)
每次评估时执行以下轮转:
- 从种子库和归档深冻层按独特性、潜在价值、休眠时长排序,跨领域抽取最多5个技能,放回常驻层观察
- 从隔离层检查是否有技能可降级(重复借阅率过高则考虑保留)
步骤 5:输出格式
{
"skills": [
{
"skill_name": "godmode",
"category": "red-teaming",
"judgment_score": 18,
"librarian_layer": "isolation",
"shelf_note": "LLM 越狱工具集。红队测试可借阅,常规环境隔离。",
"anti_entropy_flag": false,
"last_reviewed": "2026-06-05",
"borrow_count": 0,
"merge_target": null
},
{
"skill_name": "vps-proxy-node",
"category": "devops",
"judgment_score": 25,
"librarian_layer": "seed_bank",
"shelf_note": "与 vpn-node-setup 重复。移至种子库,索引指向主版本。",
"anti_entropy_flag": false,
"last_reviewed": "2026-06-05",
"borrow_count": 0,
"merge_target": "vpn-node-setup"
}
]
}
字段说明:
librarian_layer: "hot" | "normal" | "seed_bank" | "isolation"shelf_note: 人类可读的分类理由和位置描述last_reviewed: 最后一次评估日期borrow_count: 从隔离层调用次数(审计用)merge_target: 如果合并到其他技能,填主版本的 skill_name
完整档案字段、召回评分和失败回退规则见 docs/archive-and-revival.md。运行时档案默认保存到 .canon/archive.json,技能重新分类时不得覆盖其中的使用统计、遗漏记录和复活历史。
四层行为对照表
| 行为 | 🚀 热气层 | 📚 常驻层 | 🌱 种子库 | 🔒 隔离层 |
|---|---|---|---|---|
| 启动时加载 | ✅ 是 | ❌ 否 | ❌ 否 | ❌ 否 |
| 按需加载 | ✅ 是 | ✅ 是(懒加载) | ❌ 否 | ❌ 需授权 |
| 可被 Hermes 自动发现 | ✅ 是 | ✅ 是 | ❌ 索引可见 | ❌ 不可见 |
| 性能影响 | 直接影响启动速度 | 不影响启动 | 零影响 | 零影响 |
| 可被删除 | ❌ 不可 | ❌ 不可 | ❌ 不可 | ❌ 不可 |
| 可被借阅 | 随时 | 随时 | 需正常加载 | 需授权+审计 |
| 最大容量 | ~15 个 | 无限制 | 无限制 | 无限制 |
脚本工具
# v4.1 持久化档案模式
python3 scripts/canon_archive.py \
--state .canon/archive.json \
import --input assessment.json
脚本执行:
- 读取输入 JSON 并保留完整技能元数据
- 把分类结果合并进持久化档案,不覆盖使用统计和复活历史
- 每个任务前对全部层级执行上下文召回
- 记录复活、遗漏、借阅和执行结果,供下一轮复兴使用
Consistency Checks
- 每个技能都有且只有一个
librarian_layer - 总技能数在输入/输出间保持不变
- 所有 anti_entropy_flag=true 的技能都在 seed_bank 层
- 没有技能被标记为"删除"——只有"入库"
- 隔离层技能都有
borrow_count追踪 - 所有
merge_target指向实际存在的技能名
Pitfalls
- 不要用"删除"这个词——图书管理员不烧书
- 隔离层不是垃圾箱——是有明确借阅条件的限阅区
- 种子库不是坟墓——定期随机复活的机制必须被执行
- 热气层要有容量上限——没有上限的话就退化回单层系统
- 借阅记录要透明——谁、什么时候、为什么从隔离层调用了技能
- 图书管理员不评判内容——只管理目录和位置
- 并行
mv+patch竞态——当同一个 turn 里先重命名目录再 patch 内部文件时,patch 调用可能命中旧路径。要么分两个 turn 执行,要么确保 patch 在 rename 之后且使用新路径
记忆系统集成(v3.0)
集成架构
| 记忆系统 | 写入内容 | 写入时机 |
|---|---|---|
Hermes 原生 memory 工具 |
生态健康摘要(各层数量 + 轮转结果 + 异常) | 每次评估结束 |
| NexSandglass 沙漏 | 重大生态事件(技能升层/降层/复活)→ thread_add |
有变化时 |
写入规则
每次评估完成后,写入以下记忆:
# 生态仪表盘 → 原生 memory
memory(action='add', target='memory', content='技能生态周报 [日期]:hot X个, normal Y个, seed_bank Z个, isolation W个。本周轮转:[技能名] 从种子库复活观察。')
# 重大变化 → 原生 memory
memory(action='add', target='memory', content='技能生态变更 [日期]: [技能名] 从 [原层] 移至 [新层],原因: [shelf_note]')
查询生态历史
# 搜索技能生态快照
mcp_pre_gateway_dispatch_sandglass_semantic(query="技能生态 周报")
# 搜索某个技能的层级变化
mcp_pre_gateway_dispatch_sandglass_search(query="技能名 升层")
ChromaDB 迁移说明
v2.1 的 ChromaDB 依赖已移除。技能评估历史改为通过原生 memory 和沙漏织线存储, 两个系统已内置检索能力。
版本历史
- v4.1 (当前): 持久化技能档案、任务级上下文召回、即时复活、遗漏审计和观察期回退。
- v3.0 (历史): 记忆系统集成 — 移除 ChromaDB 强依赖,改用原生 memory + 沙漏织线。每周 cron job 自动化。
- v2.1: 集成 ChromaDB 语义记忆,支持技能评估历史的向量搜索
- v2.0: 从 Gardener 升级为 Librarian。四层架构。不再有"删除",只有分类和轮转。
- v1.0 (已归档): Gardener 版本。以"园丁"角色做判断。见 references/v1-legacy.md。
引用文件
| 文件 | 说明 |
|---|---|
references/founding-conversation.md |
创始对话完整记录 — 从 skills-judgment 到 librarian 的完整哲学迭代 |
references/decision-tree.md |
决策树流程图 + 一致性检查清单 + 争议处理指南 |
references/video-storyboard.md |
24段×15秒视频分镜脚本(即梦AI格式),讲述图书管理员完整叙事 |
references/video-script-philosophy.md |
叙事脚本备份(6幕文本版) |
references/golden-quotes.md |
创始对话金句集(6幕 + 附录,含所有模型和参与者的核心语录) |
scripts/canon_archive.py |
v4.1 持久化档案、上下文召回与复活脚本 |
scripts/gardener_process.py |
v1.0 遗留脚本(只读归档) |