关于 brain-taxonomist
brain-taxonomist 是为 gbrain 页面选择归档路径的技能,供创建页面或批量导入内容的 Agent 使用。它读取当前 schema pack 作出可复现建议,遇到类型不匹配或含糊情况时会请求进一步处理,而非自行猜测。
主要功能
- 01依据活动 schema pack 推荐页面路径
- 02支持按 source 使用不同规则
- 03对含糊归档情况请求确认
- 04无匹配类型时提交 schema 检查
- 05扫描未声明类型和页面漂移
适用场景
- 01写入新页面前确定归档位置
- 02为批量导入的页面选择路径
- 03检查已有页面是否符合当前分类
- 04发现需要新增页面类型的情况
MCP 相关
README 提到可通过 MCP 的 run_doctor 报告查看 schema_pack_consistency 检查结果;没有说明此技能自身如何连接 MCP。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ garrytan/ gbrain --skill brain-taxonomist安装后在 Claude Code 中输入/brain-taxonomist确认已加载。
附带文件routing-eval.jsonl
详细介绍
brain-taxonomist
用途
门控函数: 在创建任何新的 brain 页面之前,先咨询此技能以确定正确的归档路径。这样可以在写入时避免归档错误,而不是事后清理偏差。
漂移函数: 定期扫描已超出当前位置的页面。
约定
此技能保证:
- 每个新页面都归档到由 ACTIVE schema pack 决定的路径,绝不依据此技能中硬编码的目录表。
- 决策可复现:对同一内容两次调用 brain-taxonomist,推荐路径相同。
- 存在歧义的情况通过
skills/ask-user/交由用户决定,而不是静默选择默认值。 - 通过
--source <id>指定的按来源覆盖设置会被遵守:如果多 brain 用户(Persona B)的各个 pack 存在差异,则每个来源会得到不同的推荐。 - 当激活的 pack 中不存在匹配的
page_types[]条目时,此技能会向 EIIRP Phase 3(SCHEMA CHECK)发出信号,而不是挑选最接近的备选方案。
关键:此技能将 ACTIVE schema pack 作为数据读取
brain-taxonomist 没有硬编码的目录表。每个决策都由 gbrain schema show --json 驱动。这意味着:
- 运行
gbrain schema use gbrain-recommended的用户会获得完整的推荐目录集(deal、meeting、concept、project、source、daily、personal、civic、original、place、trip、conversation、writing,以及所有 gbrain-base 类型)。 - 通过
gbrain schema init并编辑来创作自定义 pack 的用户,会获得基于其自身分类体系的归档推荐,而不是 gbrain 的默认值。 - 当向 brain-taxonomist 传入
--source <id>时,会遵守按来源覆盖设置(7 层解析链中的第 3 层)。
这是 v0.39 plan-eng-review 中的单一事实来源原则(D9)。
何时咨询(必须)
在以下情况向 brain 写入之前,需运行 taxonomist 检查:
- 新 brain 页面:任何
type(person、company、concept、book、meeting 等) - 批量导入:在提交一批新页面之前
- 归档不确定:当主要主题存在歧义时
以下情况无需咨询:
- 原地更新现有页面(路径相同)
- 追加到 Timeline 部分
- 将会议实体传播到现有页面
决策流程
第 1 步:确定主要主题类型
按顺序回答以下问题:
- 主要主题是一个具名人物吗?→ person 类型目录
- 主要主题是一个具名组织吗?→ company 类型目录
- 是否关于一个有时间边界的事件(会议、交易、行程)?→ 时间类型目录
- 是否是一个可复用的心智模型?→ concept 类型目录
- 是否是原始媒体(文章、视频、书籍、PDF)?→ media 类型目录
- 是否是批量源数据?→ source 类型目录
- 以上都不是 → 咨询 EIIRP Phase 3,以创建 schema pack 候选项。
第 2 步:在激活的 pack 中查找该类型对应的目录
gbrain schema show --json | jq '.page_types[] | select(.primitive == "entity")'
每个 page_types[] 条目都有一个 path_prefixes: 数组。第一个前缀是规范路径。如果多个类型匹配(例如 pack 中同时存在 person 和 founder,且 expert_routing: true),则优先选择更具体的类型(即路径前缀更具体的那个)。
第 3 步:对于书籍,确定子类别
gbrain-recommended pack 将书籍归档为 media/books/<category>/<slug>.md,其中 category 为以下之一:psychology、philosophy、spirituality、business、media-and-society、family-and-divorce、heritage、science、fiction、biography、arts-and-design。如果你激活的 pack 使用不同的方案,请从 gbrain schema show --json 中读取,而不要在此处硬编码。
第 4 步:构造 slug
- 使用 kebab-case,描述性强
- 除非需要消歧,否则不包含作者姓名
- 与规范路径前缀完全匹配(不带前导斜杠)
第 5 步:写入前校验
- 路径符合当前启用的 pack 中
page_types[].path_prefixes的规定 - Slug 为 kebab-case,且具有描述性
- Frontmatter 包含
type:,其值与 pack 中某个page_types[].name一致 - 已包含指向相关页面的交叉链接
如果当前启用的 pack 中没有适合你要归档内容的类型, 不要选择最接近的类型。请改为向 EIIRP 发出信号,表明需要新增类型,并交由 schema-pack cathedral 处理提案流程。
与其他 Skills 的集成
eiirp— 对其清单中的每个输出,将本 skill 作为第 2 阶段 TAXONOMY 调用。ingest— 文章与媒体摄入时,咨询 brain-taxonomist 以决定归档位置。repo-architecture— 将归档决策委托给本 skill。book-mirror— 生成镜像后,通过 brain-taxonomist 进行归档。
定期漂移检测
# Which pages have no type matching the active pack? Counts untyped pages AND
# pages whose type the pack neither declares nor aliases (undeclared_types).
gbrain schema review-orphans --json
# Per-type audit of the stored corpus (stored_type_undeclared / stored_type_is_alias).
gbrain schema lint --with-db --json
两条命令均在本地运行。通过 MCP 运行时,run_doctor 报告会在其 schema_pack_consistency 检查中给出相同结论(未声明的类型会以 page_type_undeclared 代码发出警告)。
出现未声明的类型时,请在 pack 中声明(gbrain schema add-type <type> --primitive <p> --prefix <dir/>),或将页面改写为已声明的类型。当某个来源中超过 10% 的内容未带类型时,运行 EIIRP 第 3 阶段 SCHEMA CHECK 流程,通过 schema detect 提出候选类型。
输出格式
建议性输出:一个推荐信息块,外加一行推理轨迹。
**File at:** `<directory>/<slug>.md`
**Reasoning:**
- Primary subject: <person|company|concept|...>
- Matched page_type: <name> (primitive: <entity|temporal|concept|media|annotation>)
- Active pack: <pack-name> v<version>
- Source: <source_id>
当判断存在歧义时,通过 skills/ask-user/ 提出 2 个候选项,而不是默默选择。
当当前启用的 pack 中没有匹配的类型时,向 EIIRP 第 3 阶段(SCHEMA CHECK)发出信号,并输出:
**No match in active pack `<name>`.**
**Suggested next step:** `gbrain schema detect --source <source_id>` then
`gbrain schema review-candidates`.
失败时的处理
对于任何 gbrain 错误 code、退出码、[AGENT] 块或通知块,请遵循 agent 操作规范。本 skill 的具体情况如下:
- 若
gbrain schema show/gbrain schema lint因未启用任何 schema pack 或 pack 损坏而失败:报告该问题,并转交 schema-author skill;不要凭记忆猜测目录。 - 若某项推荐需要修改 schema(
gbrain schema add-type、gbrain schema use):本 skill 仅提供建议。应在用户同意后将其交给 EIIRP 或 schema-author;切勿在此直接修改当前启用的 pack。
反模式
- 在本 skill 中硬编码目录表。 所有决策都应通过
gbrain schema show --json完成。v0.39+ 有意移除了旧的硬编码表,以便使用gbrain-recommended或自定义 pack 的用户自动获得正确的路由。 - 在没有匹配类型时选择最接近的类型。 就近归类会悄无声息地降低用户的归档质量。应改为上报给 EIIRP 第 3 阶段。
- 在多 brain 环境中忽略
--source <id>。 按来源的覆盖设置位于 7 层解析链的第 3 层;若漏掉该参数,将静默使用全 brain 范围的当前 pack。 - 自动应用
gbrain schema review-candidates --apply的决定。 即使是高置信度的建议,也需要用户批准。本 skill 是一道关卡,而不是自动执行者。
硬性规则
- 切勿在本 skill 中硬编码目录表。 所有决策都必须通过
gbrain schema show --json完成。当前启用的 pack 才是权威来源。 - 按来源的参数是一等公民。 处理非默认来源时,每次 CLI 调用都要传入
--source <id>。 - 遵守置信度下限。 EIIRP 第 3 阶段产生的、置信度低于 0.6 的建议,brain-taxonomist 必须呈现给用户,而不是自动应用。不得悄悄提升低置信度的 schema 变更。
变更日志
v1.0.0 — gbrain v0.39.0.0
- 从上游 OpenClaw 初始移植。已泛化处理,依据 CLAUDE.md 隐私规则,不再引用私有分支名称。
- 已移除硬编码的目录表。所有决策现在都通过
gbrain schema show --json读取当前生效的 schema pack。单一事实来源。 - 书籍分类已从 skill 文本迁移到
gbrain-recommendedpack 的 media/books/ 分支(参见src/core/schema-pack/base/gbrain-recommended.yaml)。 - 为多 brain 用户(Persona B)补充了
--source <id>传递的说明文档。