agent-smith skill
Use when a complex task needs parallel decomposition into independent subtasks, when multiple agents must work simultaneously without conflicts, or when recursive task delegation is required
Is the agent-smith skill safe?
Clean: nothing in its files matched our rules. We read 7 files in the folder on 2026-09-28.
No findings.
Install the agent-smith skill
A skill is a folder. Copy it into your agent's skills folder and the agent loads it when the task matches its description.
git clone --depth 1 https://github.com/cyijun/agent-smith.git /tmp/agent-smith mkdir -p ~/.claude/skills cp -r /tmp/agent-smith/agent-smith ~/.claude/skills/agent-smith
In the Claude apps, zip the folder and upload it from the Skills settings. The folder on GitHub
The instructions your agent would load
SKILL.md as published, without the frontmatter. Read it on GitHub
Agent Smith
实现递归自相似多智能体系统的 Skill。每个智能体(史密斯)拥有独立的工作空间,通过目录隔离协议达成无冲突的并行任务分解与执行。
Overview
Agent Smith 是一个递归自相似的多智能体协作框架。每个智能体(史密斯)遵循相同的协议,在自己的工作空间内独立运行,通过父子间的 inbox/outbox 通信完成复杂任务的分解与汇总。
When to Use
在以下场景触发本 Skill:
- 用户请求"创建多智能体系统"或"设置 Agent Smith"
- 任务需要分解为多个并行子任务
- 需要协调多个 Agent 同时工作
- 复杂任务需要递归分解处理
- 要求无冲突的并行执行环境
When NOT to Use
在以下场景请勿触发本 Skill:
- 单个 Agent 可在 15 分钟内独立完成的任务
- 子任务之间存在严格线性依赖(每一步必须等待上一步完成)
- 仅需单 Agent 即可完成,并行执行无收益
- 任务已充分细化,无需进一步分解
Hard Constraints (Quick Reference)
以下限制由史密斯协议强制执行。修改这些值需要同时更新 SKILL.md 和 smith.md。
核心概念
史密斯 (Smith) 是自相似的智能体单元,每个史密斯拥有唯一 ID 和层级,能够执行任务、分解任务、创建子史密斯并汇总结果。所有史密斯遵循相同的协议,形成递归结构。
所有史密斯均受上述 Hard Constraints 约束。
无冲突协议 通过严格的目录隔离实现并行安全:每个史密斯只能写入自己的 private/ 和 outbox/,只能读取自己 inbox/ 中父史密斯分配的任务。父史密斯拥有创建子目录和写入子史密斯 inbox 的专属权限。
目录结构
.agent-smith/
├── smiths/
│ ├── smith-root/ # 根史密斯
│ │ ├── smith.md # 史密斯定义(只读)
│ │ ├── inbox/ # 任务队列(外部/父写入,自己读取)
│ │ ├── private/ # 私有工作区
│ │ ├── outbox/ # 结果输出
│ │ │ └── result.md
│ │ └── children/ # 子史密斯目录
│ │ └── smith-001/
│ │ ├── smith.md
│ │ ├── inbox/ # 父写入,子读取
│ │ ├── private/
│ │ ├── outbox/
│ │ └── children/
└── results/
└── final.md # 最终结果初始化矩阵
当用户请求初始化 Agent Smith 时,执行以下步骤:
1. 创建目录结构
创建根史密斯环境:
- .agent-smith/smiths/smith-root/inbox/ —— 任务队列
- .agent-smith/smiths/smith-root/private/ —— 私有工作区
- .agent-smith/smiths/smith-root/outbox/ —— 结果输出
- .agent-smith/smiths/smith-root/children/ —— 子史密斯容器
- .agent-smith/results/ —— 最终结果
2. 读取 smith.md 模板
从 smith.md 读取史密斯定义模板。
3. 替换占位符
替换模板中的变量:
- {SMITH_ID} → smith-root
- {PARENT_ID} → none
- {LEVEL} → 0
4. 写入根史密斯定义
将替换后的内容写入 .agent-smith/smiths/smith-root/smith.md。
5. 创建任务文件
基于 templates/task.md.template 创建根任务文件 .agent-smith/smiths/smith-root/inbox/task-root.md。
替换模板占位符:
- {TITLE} → 任务标题
- {TASK_ID} → root
- {SMITH_ID} → smith-root
- {PARENTTASKID} → none
- {TIMESTAMP} → 当前时间
- {LEVEL} → 0
- {DESCRIPTION} → 任务描述
- {CONTEXT} → 相关上下文
- {EXPECTED_OUTPUT} → 期望输出
6. 生成启动指南
在 .agent-smith/smiths/smith-root/private/START_HERE.md 生成启动指南,包含:
- 当前身份确认
- 任务文件位置
- 执行流程说明
- 输出要求
创建子史密斯
当父史密斯需要创建子史密斯时,执行以下步骤:
前置检查(强制)
创建任何子史密斯之前,必须确认:
- [ ] 当前层级 < 3(若层级 ≥ 3,停止——直接执行)
- [ ] 现有子代理数量 < 5(若已达 5 个,停止——直接执行或重新分解)
1. 确定新史密斯 ID
按序号递增生成 ID,如 smith-001、smith-002。
2. 创建子目录
在父史密斯的 children/ 下创建 {smith-id}/ 目录结构:
- inbox/ —— 父写入任务,子读取
- private/ —— 私有工作区
- outbox/ —— 结果输出
- children/ —— 子史密斯容器
3. 读取模板并替换
读取 smith.md 模板,替换占位符:
- {SMITH_ID} → 新 ID(如 smith-001)
- {PARENT_ID} → 当前史密斯 ID
- {LEVEL} → 当前层级 + 1
4. 写入子史密斯定义
将替换后的内容写入子目录的 smith.md。
5. 生成子任务文件
基于 templates/task.md.template 在子史密斯的 inbox/ 下创建任务文件 task-{SMITH_ID}.md。
替换模板占位符:
- {TITLE} → 子任务标题
- {TASK_ID} → 子史密斯 ID(如 smith-001)
- {SMITH_ID} → 子史密斯 ID
- {PARENTTASKID} → 父任务 ID
- {TIMESTAMP} → 当前时间
- {LEVEL} → 当前层级 + 1
- {DESCRIPTION} → 子任务描述
- {CONTEXT} → 父上下文
- {EXPECTED_OUTPUT} → 期望输出
确保任务文件只写入该子史密斯的 inbox/,不得写入任何其他史密斯的目录。
6. 生成子史密斯启动指南
在子史密斯的 private/START_HERE.md 生成启动指南,包含:
- 子史密斯身份确认
- 父史密斯引用
- 任务文件位置
- 执行约束说明