展示 KODE SDK 的 Room + @mention 多 Agent 协作能力。
- 三个 Agent 在 Room 中协作:Planner 设计、Coder 实现、Tester 验证
- 通过
@mention机制自动流转任务 - 设计需要用户审批:Planner 会先澄清需求,设计完成后等待用户批准
- 基于设计文档驱动开发,验证不通过自动打回修复
- 支持反馈到设计层面,形成完整的迭代闭环
快速实现和验证算法逻辑:
- 斐波那契、排序、搜索等经典算法
- 数据处理和转换函数
- 数学计算和公式实现
💬 需求: 写一个二分查找函数
→ Planner 确认返回值(索引/-1)、是否要求有序等
→ 用户批准设计 → Coder 实现 → Tester 验证
构建可复用的工具函数:
- 字符串处理(格式化、解析、验证)
- 日期时间操作
- 文件路径处理
- 数据校验函数
快速验证 API 设计:
- RESTful 接口处理函数
- 请求参数验证
- 响应格式构造
理解"设计先行"的开发流程:
- 展示需求澄清的重要性
- 体验设计驱动的开发模式
- 理解自动化测试的价值
| 手写代码 | Dev Squad |
|---|---|
| 边写边想需求 | 先确认需求再开发 |
| 容易遗漏边界情况 | 设计文档明确边界 |
| 测试后补或不写 | 验收标准先行 |
| 重构成本高 | 设计阶段可调整 |
┌─────────────────────────────────────────────────────────────────────────┐
│ Room │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 用户需求 │
│ │ │
│ ▼ │
│ ┌─────────┐ │
│ │ Planner │◄──────── 用户回答问题 │
│ │ 设计 │ │
│ └────┬────┘ │
│ │ ┌──────────────────────────────────────┐ │
│ ▼ │ │ │
│ design.md ────▶ 用户审阅 ────▶ 批准? ──否──▶ 修改意见 ────┘ │
│ │ │
│ 是 │
│ │ │
│ ▼ │
│ ┌─────────┐ │
│ ┌────────────▶│ Coder │ │
│ │ │ 实现 │ │
│ │ └────┬────┘ │
│ │ │ @tester │
│ │ ▼ │
│ │ ┌─────────┐ │
│ │ @coder │ Tester │ @planner │
│ │ (实现问题) │ 验证 │────────────────▶ Planner │
│ │ └────┬────┘ (设计问题) │
│ │ │ │
│ │ ▼ │
│ │ ┌──────────┐ │
│ └───── 否 ◀──│ 验证通过? │ │
│ └────┬─────┘ │
│ │ 是 │
│ ▼ │
│ ✅ 验收完成 │
│ │
└─────────────────────────────────────────────────────────────────────────┘
# 全局安装
npm install -g @shareai-lab/sdk-demo-dev-squad
# 首次运行(自动进入交互式配置)
dev-squad
# 重新配置
dev-squad config- 全局配置:
~/.config/shareai-sdk-demos/dev-squad/config.json - 本地数据:
./.sdk-demo-dev-squad/(与当前目录绑定) - 兼容
.env:仍支持ANTHROPIC_API_KEY/OPENAI_API_KEY/GEMINI_API_KEY
清理配置:
dev-squad config clean| 输入 | 说明 |
|---|---|
<需求描述> |
第一次输入,启动开发流程 |
<回答> |
回答 Planner 的澄清问题 |
approve / 批准 |
批准设计,开始开发 |
<修改意见> |
对设计提出修改要求 |
reset |
清理当前工作目录,开始新任务 |
exit |
退出程序 |
每次运行会在 ./.sdk-demo-dev-squad/workspace/ 下创建带时间戳的目录:
./.sdk-demo-dev-squad/workspace/
├── workspace_1706520000000/ # 第一次运行
│ ├── design.md # 设计文档
│ ├── fibonacci.xx # 实现代码(扩展名取决于用户需求)
│ └── test.xx # 测试代码
├── workspace_1706520100000/ # 第二次运行
│ └── ...
启动时会显示当前工作目录路径,审阅设计时请查看该目录下的 design.md。
- 输入需求 → Planner 分析需求
- 澄清阶段 → Planner 可能会提问,回答问题即可
- 设计审阅 → 查看工作目录下的
design.md,输入approve批准或提出修改意见 - 开发阶段 → Coder 实现代码
- 验证阶段 → Tester 验证,不通过自动打回
dev-squad clean
dev-squad config clean
npm uninstall -g @shareai-lab/sdk-demo-dev-squad📝 请输入功能需求: 写一个计算斐波那契数列的函数
────────────────────────────────────────────────────────────────
在开始设计之前,我需要确认以下几点:
1. 输入参数 n 是否可以为负数?如果是,如何处理?
2. n 的最大值有限制吗?(考虑整数溢出)
3. 返回类型是 number 还是需要支持大整数 BigInt?
请回答这些问题,以便我能制定准确的设计方案。
📝 [📋 Planner] 回合结束
────────────────────────────────────────────────────────────────
💬 你: n为非负整数,最大100,返回number即可
🔧 [📋 Planner] 调用工具: fs_write
✅ [📋 Planner] 工具完成: fs_write
设计文档已保存到 ./design.md
## 设计摘要
- 函数签名: `fibonacci(n: number): number`
- 输入: 非负整数 n (0 ≤ n ≤ 100)
- 输出: 第 n 个斐波那契数
- 错误处理: n < 0 或 n > 100 时抛出错误
请审阅设计文档,输入 'approve' 批准开始开发。
📝 [📋 Planner] 回合结束
────────────────────────────────────────────────────────────────
💬 你: approve
@coder 设计已获批准,请查看 ./design.md 开始实现
📝 [📋 Planner] 回合结束
────────────────────────────────────────────────────────────────
🔧 [💻 Coder] 调用工具: fs_read
...
Planner 输出的设计文档 (./design.md) 包含:
# [功能名称] 设计文档
## 1. 需求概述
## 2. 功能规格
- 2.1 输入规格(类型、约束)
- 2.2 输出规格
- 2.3 行为规范
- 2.4 异常处理
## 3. 接口设计(函数签名)
## 4. 验收标准(测试用例)
- 4.1 正常场景 (TC001, TC002, ...)
- 4.2 边界场景 (TC00x, ...)
- 4.3 异常场景 (TC00x, ...)
## 5. 实现建议重要:验收标准是开发和测试的唯一依据。每个测试用例都有唯一 ID(如 TC001),包含精确的输入和期望输出。Tester 严格按照这些用例验证,不会自行添加额外测试。
| Agent | 职责 | 关键行为 |
|---|---|---|
| Planner | 需求澄清、接口设计、验收标准 | 有疑问先问(含验收标准),等待用户批准 |
| Coder | 根据设计文档实现代码 | 严格遵循设计,不擅自修改 |
| Tester | 根据验收标准验证实现 | 只按 TC 用例验证,不通过打回 @coder 或 @planner |
| 变量 | 说明 | 默认值 |
|---|---|---|
ANTHROPIC_API_KEY |
Anthropic API 密钥 | - |
OPENAI_API_KEY |
OpenAI API 密钥(备选) | - |
GEMINI_API_KEY |
Gemini API 密钥(备选) | - |
./.sdk-demo-dev-squad/
├── data/
└── workspace/
└── workspace_<timestamp>/
src/templates.ts- Planner、Coder、Tester 三个 Agent 模板src/commands/run.ts- Room 创建和协作流程编排src/cli.ts- CLI 入口