Smith Matrix
This skill should be used when the user asks to "create a multi-agent system", "spawn agents for parallel tasks", "decompose task recursively", "set up agent matrix", or wants to execute complex tasks using multiple coordinated agents with conflict-free parallel processing.
git clone https://github.com/cyijun/agent-smith
T=$(mktemp -d) && git clone --depth=1 https://github.com/cyijun/agent-smith "$T" && mkdir -p ~/.claude/skills && cp -r "$T/smith-matrix" ~/.claude/skills/cyijun-agent-smith-smith-matrix && rm -rf "$T"
smith-matrix/SKILL.md史密斯矩阵 (Smith Matrix)
实现递归自相似多智能体系统的 Skill,通过目录隔离协议达成无冲突的并行任务分解与执行。
何时使用
在以下场景触发本 Skill:
- 用户请求"创建多智能体系统"或"设置智能体矩阵"
- 任务需要分解为多个并行子任务
- 需要协调多个 Agent 同时工作
- 复杂任务需要递归分解处理
- 要求无冲突的并行执行环境
核心概念
史密斯 (Smith) 是自相似的智能体单元,每个史密斯拥有唯一 ID 和层级,能够执行任务、分解任务、创建子史密斯并汇总结果。所有史密斯遵循相同的协议,形成递归结构。
递归安全限制:
- 最大层级:3(LEVEL 0 为根,最多到 LEVEL 3)
- 最大子代理数:每层最多 5 个
- 终局规则:LEVEL ≥ 3 时禁止分解,必须直接执行
无冲突协议 通过严格的目录隔离实现并行安全:每个史密斯只能写入自己的
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}0
4. 写入根史密斯定义
将替换后的内容写入
.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 模板,替换占位符:
→ 新 ID(如{SMITH_ID}
)smith-001
→ 当前史密斯 ID{PARENT_ID}
→ 当前层级 + 1{LEVEL}
4. 写入子史密斯定义
将替换后的内容写入子目录的
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/