实现递归自相似多智能体系统的 Skill,通过目录隔离协议达成无冲突的并行任务分解与执行。
在以下场景触发本 Skill:
史密斯 (Smith) 是自相似的智能体单元,每个史密斯拥有唯一 ID 和层级,能够执行任务、分解任务、创建子史密斯并汇总结果。所有史密斯遵循相同的协议,形成递归结构。
递归安全限制:
无冲突协议 通过严格的目录隔离实现并行安全:每个史密斯只能写入自己的 private/ 和 outbox/,只能读取父史密斯写入的 inbox/。父史密斯拥有创建子目录的专属权限。
第一步:初始化矩阵
执行初始化流程,创建 .smith-matrix/ 工作目录和根史密斯。
第二步:定义根任务
在 .smith-matrix/inbox/ 创建任务文件,描述需要完成的复杂任务。
第三步:启动执行
根史密斯读取任务,决定直接执行或分解为子任务并创建子史密斯。
.smith-matrix/
├── inbox/ # 任务队列(父写子读)
│ └── task-{id}.md
├── smiths/
│ ├── smith-root/ # 根史密斯
│ │ ├── smith.md # 史密斯定义(只读)
│ │ ├── private/ # 私有工作区
│ │ ├── outbox/ # 结果输出
│ │ │ └── result.md
│ │ └── children/ # 子史密斯目录
│ │ └── smith-001/
│ └── smith-001/
│ ├── smith.md
│ ├── private/
│ ├── outbox/
│ └── children/
└── results/
└── final.md # 最终结果
当用户请求初始化 Smith Matrix 时,执行以下步骤:
1. 创建目录结构 .smith-matrix/
创建基础目录框架:
.smith-matrix/inbox/ —— 任务队列.smith-matrix/smiths/ —— 史密斯目录.smith-matrix/results/ —— 最终结果2. 读取 smith.md 模板
从 smith-matrix/smith.md 读取史密斯定义模板。
3. 替换占位符
替换模板中的变量:
{SMITH_ID} → smith-root{PARENT_ID} → none{LEVEL} → 04. 写入根史密斯定义
将替换后的内容写入 .smith-matrix/smiths/smith-root/smith.md。
5. 创建任务文件
根据用户提供的任务描述,在 .smith-matrix/inbox/ 创建任务文件。
6. 生成启动指南
在 .smith-matrix/smiths/smith-root/private/START_HERE.md 生成启动指南,包含:
当父史密斯需要创建子史密斯时,执行以下步骤:
1. 确定新史密斯 ID
按序号递增生成 ID,如 smith-001、smith-002。
2. 创建子目录
创建 .smith-matrix/smiths/{smith-id}/ 目录结构。
3. 读取模板并替换
读取 smith.md 模板,替换占位符:
{SMITH_ID} → 新 ID(如 smith-001){PARENT_ID} → 当前史密斯 ID{LEVEL} → 当前层级 + 14. 写入子史密斯定义
将替换后的内容写入子目录的 smith.md。
5. 创建子目录结构
创建以下子目录:
private/ —— 私有工作区outbox/ —— 结果输出children/ —— 子史密斯容器6. 生成子史密斯启动指南
在 private/START_HERE.md 生成启动指南,包含:
读取 inbox/ 任务
↓
分析任务复杂度
↓
┌─────────────┴─────────────┐
↓ ↓
可直接完成 需要分解
↓ ↓
执行任务 设计子任务
↓ ↓
写入 outbox/ 创建 inbox/ 子任务
↓ ↓
结束 创建子史密斯
↓
等待子结果
↓
汇总结果
↓
写入 outbox/
↓
结束
允许写入:
private/ —— 草稿、思考、临时文件outbox/result.md —— 最终结果children/ —— 创建子史密斯(父权限)inbox/ —— 创建子任务(父权限)禁止写入:
private/ 或 outbox/将此目录复制到 Claude Code skills 目录:
cp -r smith-matrix ~/.claude/skills/
共 2 个版本