scorpio 21a7cf0b4e init: add README and PRD
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-04 21:17:41 +08:00

337 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Agent Team — Product Requirements Document
**Date**: 2026-03-04
**Status**: Draft
---
## 1. Overview
Agent Team 是一个本地部署的多 agent 协作平台。用户可以创建多个 AI agent将它们组织成部门群通过类似群聊的界面协作完成复杂任务。默认支持 DeepSeek同时支持 Kimi、Ollama 等模型提供商。
用户可以从「人才市场」一键雇佣社区分享的团队模板也可以将自己的团队含经验、知识库、skills打包发布到 GitHub 供他人使用。
---
## 2. 核心概念
### Agent
每个 agent 是一个目录,包含两个 MD 文件:
```
agents/
legal-director/
AGENT.md # 技术配置provider、model、skills、description
SOUL.md # system prompt角色人格、行为准则
memory/ # agent 自动沉淀的经验知识
contracts.md
cases.md
```
**AGENT.md 格式**
```yaml
---
name: legal-director
description: 法律总监,负责合同审查、法律风险评估和诉讼策略
provider: deepseek # deepseek | kimi | ollama | openai默认 deepseek
model: deepseek-chat # 对应 provider 的模型名
api_key_env: DEEPSEEK_API_KEY
skills:
- pdf-processing
- web-search
---
```
**SOUL.md 格式**:纯 Markdown即 system prompt 正文。
**memory/**agent 每次完成任务后自动更新,下次执行时注入 context实现经验积累。
### Skill
遵循 [agentskills.io](https://agentskills.io) 开放标准:
```
skills/
pdf-processing/
SKILL.md # YAML frontmatter + 指令
scripts/ # 可执行脚本(可选)
references/ # 参考文档(可选)
```
技能三层渐进加载:
1. 启动时加载所有 skill 的 name + description~100 tokens/skill
2. agent 激活某 skill 时加载完整 SKILL.md
3. 按需加载 scripts/references 中的文件
### 群Room
群是 agent 协作的场所,分两种类型:
| 类型 | 成员构成 | 用途 |
|------|---------|------|
| 部门群 | 用户 + 1个master + N个子agent | 部门内任务协作 |
| Leader 群 | 用户 + 多个部门master | 跨部门大项目协调 |
群数据全部以文件存储,无数据库:
```
rooms/
legal-dept/
room.md # 群配置(成员、类型)
tasks.md # 当前 todolist
history/ # 任务执行历史
2026-03-04-contract-review.md
workspace/ # 群产出文件
合同分析报告.md
```
### Master Agent
每个群有一个 master agent职责
1. 接收用户任务,理解意图
2. 感知群内所有成员的能力(系统自动注入成员 description
3. 拆分任务,生成 tasks.md分配给合适的子 agent
4. 检查子 agent 的输出,提出修改意见
5. 迭代直到满意,汇总结果给用户
### 团队包Team Package
团队是可打包、可分享的完整单元:
```
legal-team/
team.md # 团队介绍、作者、标签、版本
agents/
legal-director/
AGENT.md
SOUL.md
memory/ # 沉淀的经验(可随团队分享)
skills/ # 团队专属 skills
contract-review/
SKILL.md
knowledge/ # 知识库
law-references.md
```
---
## 3. 功能需求
### 3.1 Agent 管理
- 前端提供 MD 编辑器,直接编辑 `AGENT.md``SOUL.md`
- 保存时后端写入对应目录(`agents/<name>/`
- 支持创建、编辑、删除 agent
- 不使用传统表单,所有配置通过 MD 文件维护
### 3.2 Skill 管理
- 前端展示已安装的 skills 列表(读取 `skills/` 目录)
- 支持查看 skill 详情SKILL.md 内容)
- 支持上传/创建新 skill创建目录 + SKILL.md
- Skills 全局共享,所有 agent 均可使用
### 3.3 群管理
- 创建部门群:选择 master agent + 添加子 agent 成员
- 创建 Leader 群:选择多个部门 master agent
- 群列表侧边栏实时显示每个群的状态:
- `pending` — 空闲,等待用户输入
- `thinking` — Master 正在分析任务、制定计划
- `working · <agent名> 正在...` — 子 agent 执行中(详细版)
- 每个群独立的消息历史和工作空间
### 3.4 群聊交互
- Discord 风格三栏布局(见第 5 节)
- 用户发送消息 → master 接收并处理
- Master 在群内 @ 子 agent 分配任务
- 子 agent 回复执行结果(流式输出)
- Master 检查结果,必要时要求修改(显示 review 状态)
- 最终 master 汇总回复用户
- 消息区分角色:用户(右对齐蓝色)/ master金色边框+王冠)/ 子agent灰色+头像)
### 3.5 Context 管理
每个 agent 的 LLM 调用相互隔离,避免 token 爆炸:
- Master context用户消息 + 自己的消息 + 子 agent 结果摘要
- 子 agent contextmaster 分配的任务指令 + 自己的历史回复
- 超出 token 阈值时自动压缩旧消息为摘要
- 任务完成后经验写入 `memory/*.md`,替代历史记录
### 3.6 LLM 支持
每个 agent 独立配置 provider + model内置 provider 列表:
| Provider | base_url | 默认模型 |
|----------|----------|---------|
| `deepseek`(默认) | `https://api.deepseek.com/v1` | `deepseek-chat` |
| `kimi` | `https://api.moonshot.cn/v1` | `moonshot-v1-8k` |
| `ollama` | `http://localhost:11434/v1` | `qwen2.5` |
| `openai` | `https://api.openai.com/v1` | `gpt-4o` |
所有 provider 均通过 OpenAI 兼容接口调用,`provider` 字段自动映射 base_url也可手动覆盖。
### 3.7 人才市场
- 页面展示可雇佣的团队列表
- 支持输入 GitHub repo URL`username/repo`)一键雇佣
- 雇佣流程git clone → 解压 agents/ + skills/ 到本地 → 自动建群
- 发布流程:将本地团队目录推送到 GitHub添加 topic `agent-team`
- 社区团队通过 GitHub topic `agent-team` 聚合发现
---
## 4. 前端设计
### 整体布局Discord 风格三栏)
```
┌──────────┬──────────────────────────────┬────────────────────┐
│ │ 法律顾问部门 │ Members │
│ 群列表 │ ──────────────────────── │ 👑 法律总监 thinking│
│ │ │ ● 合同律师 working │
│ ● 法律部 │ Master: 我来拆分任务... │ ● 合规专员 pending │
│ working│ @合同律师 请起草合同 │ ──────────────────│
│ ○ 研究部 │ │ Tasks │
│ pending│ 合同律师: 正在起草... ▌ │ ☑ 分析合同风险 │
│ │ │ ○ 起草修改意见 │
│ ◈ Leader │ │ ──────────────────│
│ 群 │ │ 产物 │
│ │ │ 📄 合同分析.md │
│ │ │ 📄 风险报告.md │
│ │ │ │
│ │ ┌──────────────────────┐ │ [Skills][History] │
│ │ │ 输入消息... [发送] │ │ [Workspace] │
└──────────┴──────────────────────────────┴────────────────────┘
```
### 左侧群列表
- 群名 + 类型图标(部门群 / Leader 群)
- 实时状态 badge
### 中间聊天区
- 流式消息气泡,角色样式区分
- Master 消息带王冠图标,金色边框
- 子 agent 消息带头像(名字首字母)
### 右侧面板
默认展示三个区块:
- **Members** — 成员列表 + 实时状态
- **Tasks** — `tasks.md` 渲染的 todolist
- **产物** — workspace 最新文件列表,可点击预览
底部三个按钮(点击弹出抽屉):
- `Skills` — 群内可用 skills
- `History` — 任务执行历史MD 文件列表)
- `Workspace` — 完整工作空间文件树
### Agent / Skill 管理页
- 通过左侧导航切换到管理页
- MD 编辑器Monaco Editor直接编辑 AGENT.md / SOUL.md
- Skill 列表 + 详情查看
---
## 5. 技术架构
### 后端Go
```
cmd/server/main.go
internal/
agent/ # agent 配置加载、运行时、memory 管理
skill/ # skill 发现、metadata 解析、激活
room/ # 群管理、消息路由、orchestration
llm/ # OpenAI 兼容客户端封装provider 映射)
hub/ # 人才市场GitHub clone、团队安装
api/ # HTTP handlers + WebSocket
```
关键依赖:
- `github.com/sashabaranov/go-openai` — LLM 调用
- `github.com/labstack/echo` — HTTP 框架
- `gopkg.in/yaml.v3` — YAML frontmatter 解析
### 前端React + TypeScript
```
web/src/
components/
Chat/ # 群聊界面(三栏布局)
Editor/ # Monaco MD 编辑器
RoomPanel/ # 右侧面板Members/Tasks/产物)
Market/ # 人才市场页面
stores/ # Zustand 状态管理
```
关键依赖:
- React + TypeScript
- shadcn/ui — UI 组件
- Zustand — 状态管理
- Monaco Editor — MD 编辑器
- WebSocket — 实时消息
### 通信协议WebSocket
```json
{ "type": "user_message", "room_id": "legal-dept", "content": "..." }
{ "type": "agent_message", "agent": "legal-director", "role": "master", "content": "...", "streaming": true }
{ "type": "task_assign", "from": "legal-director", "to": "contract-lawyer", "task": "..." }
{ "type": "review", "from": "legal-director", "target": "contract-lawyer", "feedback": "..." }
{ "type": "room_status", "room_id": "legal-dept", "status": "working", "agent": "合同律师", "action": "正在起草合同" }
{ "type": "tasks_update", "room_id": "legal-dept", "content": "# Tasks\n- [x] ..." }
{ "type": "workspace_file","room_id": "legal-dept", "filename": "合同分析.md", "content": "..." }
```
### 存储(纯文件系统,无数据库)
```
agent-team/
├── agents/ # agent 配置
├── skills/ # 全局 skills
├── rooms/ # 群数据
├── teams/ # 本地团队模板缓存
├── cmd/server/
├── internal/
├── web/
└── go.mod
```
---
## 6. Master Orchestration 流程
```
用户消息
Master 收到context 注入:群成员能力 + memory
Master 分析任务,更新 tasks.md生成执行计划
Master @ 子agent 分配子任务(并行或串行)
子 agent 执行context任务指令 + 自身 memory
Master review 结果
├── 不满意 → 提出 feedback要求修改 → 回到上一步
└── 满意 → 汇总结果,写入 workspace更新 memory回复用户
```
Master context 注入格式:
```xml
<team_members>
<member>
<name>contract-lawyer</name>
<description>合同律师,专注合同起草、审查和风险识别</description>
</member>
</team_members>
```
---
## 7. MVP 范围
**包含**
- Agent 创建/编辑Monaco MD 编辑器,无表单)
- Skill 展示和加载agentskills.io 标准)
- 部门群 + Leader 群
- 群实时状态pending / thinking / working · agent名
- Discord 风格三栏群聊界面(流式消息)
- 右侧面板Members + Tasks + 产物 + 抽屉按钮
- Master orchestration分配 + review 迭代)
- Context 隔离 + token 压缩
- Agent memory 自动沉淀
- DeepSeek默认+ Kimi + Ollama + OpenAI
- 人才市场GitHub 一键雇佣团队
- 团队打包发布(推送 GitHub + topic
**不包含(后续迭代)**
- Skill 脚本执行沙箱
- 用户认证
- 消息搜索