commit 21a7cf0b4e48ba94c1c8acc114b0fb3613206cc0 Author: scorpio Date: Wed Mar 4 21:17:41 2026 +0800 init: add README and PRD Co-Authored-By: Claude Sonnet 4.6 diff --git a/README.md b/README.md new file mode 100644 index 0000000..46ad1f0 --- /dev/null +++ b/README.md @@ -0,0 +1,78 @@ +# Agent Team + +本地部署的多 agent 协作平台。创建 AI agent 团队,通过群聊界面协作完成复杂任务。 + +## 特性 + +- **多 agent 群聊** — Discord 风格界面,master agent 自动拆分任务、分配、review +- **MD 配置** — 所有配置通过 Markdown 文件维护,无表单 +- **Agent Memory** — agent 自动沉淀经验到 `memory/*.md`,持续成长 +- **Skills 支持** — 遵循 [agentskills.io](https://agentskills.io) 开放标准 +- **人才市场** — 从 GitHub 一键雇佣社区团队,或发布自己的团队 +- **多模型支持** — DeepSeek(默认)、Kimi、Ollama、OpenAI + +## 群类型 + +| 类型 | 成员 | 用途 | +|------|------|------| +| 部门群 | 用户 + master + 子agents | 部门内协作 | +| Leader 群 | 用户 + 多个部门master | 跨部门大项目 | + +## 目录结构 + +``` +agent-team/ +├── agents/ # agent 配置 +│ └── my-agent/ +│ ├── AGENT.md # provider、model、skills +│ ├── SOUL.md # system prompt +│ └── memory/ # 自动沉淀的经验 +├── skills/ # 全局 skills(agentskills.io 标准) +├── rooms/ # 群数据(消息历史、tasks、workspace) +├── cmd/server/ # Go 后端 +├── internal/ # 核心逻辑 +└── web/ # React 前端 +``` + +## AGENT.md 格式 + +```yaml +--- +name: legal-director +description: 法律总监,负责合同审查和法律风险评估 +provider: deepseek # deepseek | kimi | ollama | openai +model: deepseek-chat +api_key_env: DEEPSEEK_API_KEY +skills: + - pdf-processing +--- +你是一位经验丰富的法律总监...(SOUL.md 内容) +``` + +## 快速开始 + +```bash +# 后端 +go run cmd/server/main.go + +# 前端 +cd web && npm install && npm run dev +``` + +## 人才市场 + +```bash +# 雇佣社区团队(输入 GitHub repo) +username/legal-team + +# 发布自己的团队 +git push origin main +# 添加 GitHub topic: agent-team +``` + +## 技术栈 + +- 后端:Go + Echo +- 前端:React + TypeScript + shadcn/ui +- LLM:OpenAI 兼容接口(DeepSeek / Kimi / Ollama) +- 存储:纯文件系统(无数据库) diff --git a/docs/plans/PRD.md b/docs/plans/PRD.md new file mode 100644 index 0000000..f4ab238 --- /dev/null +++ b/docs/plans/PRD.md @@ -0,0 +1,336 @@ +# 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//`) +- 支持创建、编辑、删除 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 执行中(详细版) +- 每个群独立的消息历史和工作空间 + +### 3.4 群聊交互 +- Discord 风格三栏布局(见第 5 节) +- 用户发送消息 → master 接收并处理 +- Master 在群内 @ 子 agent 分配任务 +- 子 agent 回复执行结果(流式输出) +- Master 检查结果,必要时要求修改(显示 review 状态) +- 最终 master 汇总回复用户 +- 消息区分角色:用户(右对齐蓝色)/ master(金色边框+王冠)/ 子agent(灰色+头像) + +### 3.5 Context 管理 +每个 agent 的 LLM 调用相互隔离,避免 token 爆炸: +- Master context:用户消息 + 自己的消息 + 子 agent 结果摘要 +- 子 agent context:master 分配的任务指令 + 自己的历史回复 +- 超出 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 + + + contract-lawyer + 合同律师,专注合同起草、审查和风险识别 + + +``` + +--- + +## 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 脚本执行沙箱 +- 用户认证 +- 消息搜索