本页目录
领域插件
Skill Wiki 出厂没有任何内置领域。一个领域就是放在你 corpus 根目录的一份
domain.yaml。运行时启动时发现并注册它。
为什么走配置驱动
早期原型把领域硬编码在运行时 —— 加一个 "fintech" 都得改代码。 这让 fork、自定义、发布领域 corpus 都很痛。v0.1.0 翻了过来: 每个领域都是一份 YAML 配置 + 递归发现。
流程

primes/ ┐
├── sources/ │
│ └── @my/ │ scanned recursively
│ ├── ... │ by discoverDomains()
│ └── domain.yaml ← one per pack ┘
▼
┌──────────────────────┐
│ DomainRegistry │ in-memory map
│ (per-process) │
└──────────────────────┘
│
▼
runtime queries pick up
domain-specific:
• tag boosts
• intent fields
• L5 validator hooks domain.yaml 声明什么
一个示例,取自一个假想的 security corpus。同样的形状对任何领域都适用 ——
字段名是协议层的;值才是领域特定的。
name: security
version: "1.0.0"
description: "Application security knowledge for AI agents — input validation, authn/authz, crypto, …"
# Hierarchical taxonomy of sub-domains.
hierarchy: threat-model
# Multi-axis tags the retriever can boost on.
axes:
- risk-class
- attack-surface
- data-sensitivity
- control-family
- severity
# Composition contract scaffold (defaults).
contract:
input-validation: atom-checklist
authn: atom-token-flow
# L5 validators (optional).
validators:
- name: sql-injection-shape
checker: regex
pattern: "(?i)\\b(or|and)\\b\\s+1\\s*=\\s*1"
- name: owasp-input-validation
checker: ai-judge
rubric: "@security/rubric-owasp-input-validation" 运行时怎么用它
Tag boost
带有 axes: 中标签的原子,在检索器的 IntentObject 命中时获得乘性加权。
比如打了 owasp-input-validation 标签的原子,在 intent 是
focus: "input-validation" 时排名更靠前。
Intent 字段
L1(意图分类)读 axes 决定要在 IntentObject 里填哪些字段。
一个 security 的 L1 产出 { axes: ["attack-surface", "control-family"], persona: "@security-auditor", ... };
另一个领域的 L1 产出的形状完全不同。
L5 validator hook
validators 数组描述怎么校验生成结果。每一项是一个二元组(checker 名字、参数)。
参考 v0.1.0 支持两个 checker:regex 和 ai-judge。
领域插件可以通过 MCP server 的插件槽注册更多 checker。
发现规则
- 从
$PRIME_DIR递归扫描,最多 4 层深。 - 文件名必须正好是
domain.yaml,任何层级都行。 - 已加载领域之间名字必须唯一。冲突在启动时硬抛错。
- 允许 Unicode 标签。Emoji 标签也行。
- 每个 server 进程加载一次;
kill -HUP重新加载。
取舍
插件模型让 v1 协议本身可以不知道你的领域。代价:协议层的校验必须领域无关。 领域特定的智能放在 L1 / L5 插件里。
怎么写 domain.yaml,见 拓展 → domain.yaml。