Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

README.md

Dev Squad - 三人开发小队

展示 KODE SDK 的 Room + @mention 多 Agent 协作能力。

功能特点

  • 三个 Agent 在 Room 中协作:Planner 设计、Coder 实现、Tester 验证
  • 通过 @mention 机制自动流转任务
  • 设计需要用户审批:Planner 会先澄清需求,设计完成后等待用户批准
  • 基于设计文档驱动开发,验证不通过自动打回修复
  • 支持反馈到设计层面,形成完整的迭代闭环

典型使用场景

1. 算法函数开发

快速实现和验证算法逻辑:

  • 斐波那契、排序、搜索等经典算法
  • 数据处理和转换函数
  • 数学计算和公式实现
💬 需求: 写一个二分查找函数
→ Planner 确认返回值(索引/-1)、是否要求有序等
→ 用户批准设计 → Coder 实现 → Tester 验证

2. 工具函数库开发

构建可复用的工具函数:

  • 字符串处理(格式化、解析、验证)
  • 日期时间操作
  • 文件路径处理
  • 数据校验函数

3. API 端点原型

快速验证 API 设计:

  • RESTful 接口处理函数
  • 请求参数验证
  • 响应格式构造

4. 学习和教学

理解"设计先行"的开发流程:

  • 展示需求澄清的重要性
  • 体验设计驱动的开发模式
  • 理解自动化测试的价值

与手写代码的区别

手写代码 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

工作流程

  1. 输入需求 → Planner 分析需求
  2. 澄清阶段 → Planner 可能会提问,回答问题即可
  3. 设计审阅 → 查看工作目录下的 design.md,输入 approve 批准或提出修改意见
  4. 开发阶段 → Coder 实现代码
  5. 验证阶段 → 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 职责

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 入口