# ISOS Agent Teams 通用 AI Agent Teams 软件研发模板,支持多角色 AI Agent(Claude Code / GLM)在 tmux 中并行协作开发。 ## 项目简介 ISOS 是一套基于 Claude Code 的多人 Agent 协作开发框架: - **项目经理** 分发任务、跟踪进度 - **后端开发** 实现 FastAPI + SQLite 服务端 - **前端开发** 实现 Svelte 5 + PyWebView 桌面端 - **测试工程师** 编写全级别测试并分析覆盖率 - **对话监控** 实时跟踪各 Agent 的输入/输出 所有角色在 tmux 面板中并行运行,通过共享任务列表和消息系统协调。 ![Team](./docs/pics/team.png) ## 技术栈 | 组件 | 技术 | 说明 | | -------- | ------------------------- | ------------------------------ | | 语言 | Python 3.12+ / TypeScript | 后端 Python,前端 TypeScript | | 包管理 | uv / npm | Python 用 uv,前端用 nvm + npm | | 服务端 | FastAPI + SQLite | REST API、数据存储 | | 桌面端 | PyWebView + Svelte 5 | 本地 UI、SQLite | | 版本控制 | Jujutsu (jj) | 与 git 并存,主分支 `trunk` | | 协作工具 | tmux + Claude Code | 多面板并行 Agent | ## 目录结构 ``` docs/ # 项目文档(需求、设计、架构、测试、运维) team/ # 团队规范(Git、jj、Svelte、tmux) scripts/ # 工具脚本(tmux 团队空间、监控、消息通知) .claude/ # Claude Code 配置 agents/ # Agent 角色定义 commands/ # 斜杠命令 prompts/ # 角色提示词 member/ # 成员对话记录 memory/ # 跨会话经验记忆 tasks/ # 任务文档 specs/ # speckit 功能规格 .specify/ # speckit 配置 ``` ## 快速开始 ### 1. 环境准备(必须) 所有开发方式(VS Code Dev Containers、docker-compose、本地)共享同一套前置步骤: ```bash # 克隆项目 git clone <仓库地址> workspace && cd workspace/.devcontainer # ① 创建环境配置(首次必须) cp .env.example .env # ② 编辑 .env,至少修改以下配置: # - GIT_USER_NAME / GIT_USER_EMAIL — Git 用户信息 # - API_KEY — 智谱 GLM API 密钥(可选,留空则跳过认证配置) # - DOCKER_GID — 宿主机 docker 组 GID(getent group docker | cut -d: -f3) # - CONTAINER_USER_UID / GID — 与宿主机用户一致(id -u / id -g) # ③ 预下载构建资源(首次必须,后续按需增量更新) bash download-resources.sh ``` #### download-resources.sh 资源预下载 [`download-resources.sh`](.devcontainer/download-resources.sh) 预下载所有网络资源到 `.devcontainer/.cache/`,Dockerfile 构建时通过 `--mount=type=bind` 直接使用本地缓存,**无需构建时访问外网**。支持增量更新和校验。 ```bash bash download-resources.sh # 下载全部资源(首次必须) bash download-resources.sh --skip-extensions # 跳过 VSCode 扩展(节省时间) bash download-resources.sh --force-update # 强制更新所有包 bash download-resources.sh --cleanup-only # 仅清理旧版本包 ``` 预下载的资源包括: | 资源 | 用途 | | ------------------- | ----------------------------------------------- | | uv + Python 3.12 | Python 包管理器和运行时 | | nvm + Node.js 22 | 前端运行时和包管理 | | npm 全局包 | Claude Code、Playwright MCP、TypeScript 等 | | Google Chrome | Playwright headed 模式和 chrome-devtools-mcp | | jj (Jujutsu) | 版本控制工具 | | VSCode 扩展 (.vsix) | 20+ 开发扩展离线包 | | spec-kit | speckit 规格工具 | | Claude 插件市场 | claude-plugins-official、Svelte、superpowers 等 | 所有资源版本在 `.env` 中配置(`UV_VERSION`、`NODE_VERSION`、`CHROME_VERSION` 等),更新版本后重新运行脚本即可。 #### .env 配置参考 完整配置见 [`.devcontainer/.env.example`](.devcontainer/.env.example),常用项: | 配置项 | 默认值 | 说明 | | -------------------- | ------- | ---------------------------- | | `GIT_USER_NAME` | `arno` | Git 用户名 | | `GIT_USER_EMAIL` | — | Git 邮箱 | | `API_KEY` | 空 | 智谱 GLM API 密钥 | | `DOCKER_ENABLED` | `false` | 是否启用容器内 Docker | | `DOCKER_GID` | `984` | 宿主机 docker 组 GID | | `CONTAINER_USER_UID` | `1000` | 容器用户 UID | | `CONTAINER_USER_GID` | `1000` | 容器用户 GID | | `DISPLAY_ON_HOST` | `false` | GUI 输出到宿主机(仅 Linux) | | `CONTAINER_CPUS` | `6` | CPU 核心数限制 | | `CONTAINER_MEMORY` | `16G` | 内存限制 | ```bash # 修改claude模型 vim ~/.claude/settings.json # 更改env内容来切换模型 ``` #### minimax模型 ```json "env": {   "ANTHROPIC_AUTH_TOKEN": "",   "ANTHROPIC_BASE_URL": "https://api.minimaxi.com/anthropic",   "API_TIMEOUT_MS": "3000000",   "CLAUDE_CODE_AUTO_COMPACT_WINDOW": "200000",   "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",   "ANTHROPIC_MODEL": "MiniMax-M2.7",   "ANTHROPIC_SMALL_FAST_MODEL": "MiniMax-M2.7",   "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1",   "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "75",   "CLAUDE_CODE_NO_FLICKER": "1" }, ``` #### kimiMAX模型 ``` json "env": {   "ANTHROPIC_BASE_URL": "https://api.kimi.com/coding/",   "ANTHROPIC_AUTH_TOKEN": "",   "ANTHROPIC_MODEL": "kimi-k2.5",   "ANTHROPIC_SMALL_FAST_MODEL": "kimi-k2.5",   "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",   "API_TIMEOUT_MS": "600000" }, ``` #### 智谱模型 API 调用 + Coding Plan ```json "env": {   "ANTHROPIC_AUTH_TOKEN": "",   "ANTHROPIC_BASE_URL": "https://open.bigmodel.cn/api/paas/v4/chat/completions", // 智谱如果使用 Coding Plan,需修改路径为:https://open.bigmodel.cn/api/anthropic   "API_TIMEOUT_MS": "3000000",   "CLAUDE_CODE_AUTO_COMPACT_WINDOW": "200000",   "ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-4.5-air",   "ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-4.7",   "ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-5",   "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",   "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1",   "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "75",   "CLAUDE_CODE_NO_FLICKER": "1" }, ``` ### 2. 启动开发环境 资源下载完成后,选择以下任一方式启动: #### 方式 A: VS Code Dev Containers(推荐) 1. 安装 VS Code 扩展 `ms-vscode-remote.remote-containers` 2. 在 VS Code 中打开项目根目录 3. `Ctrl+Shift+P` → `Dev Containers: Open Folder in Container...` 4. VS Code 自动读取 [`.devcontainer/devcontainer.json`](.devcontainer/devcontainer.json) 构建、启动容器并安装扩展 `devcontainer.json` 核心配置: | 配置 | 说明 | | ---------------------------------- | ------------------------------------------------------------------------------------------- | | `dockerComposeFile` | 组合 `docker-compose.yml` + `docker-compose.display.yml`(X11 转发) | | `service: app` | 使用 `app` 服务 | | `postCreateCommand` | 容器创建后自动执行 `.devcontainer/post-create.sh`(配置 Git、jj、Claude Code、MCP、插件等) | | `customizations.vscode.extensions` | 预装 Claude Code、Ruff、Playwright、Mermaid 等 20+ 扩展 | #### 方式 B: docker-compose 命令行 ```bash cd .devcontainer docker compose up -d docker exec -it team bash ``` #### 方式 C: 本地开发(不使用容器) 不使用容器时,需手动安装工具链(uv、nvm、jj 等): ```bash jj clone <仓库地址> workspace && cd workspace uv python install 3.12 nvm install --lts ``` 详细步骤见 [`docs/管理-开发环境搭建.md`](docs/管理-开发环境搭建.md)。 #### 数据持久化 `.devcontainer/.volumes/` 目录映射以下数据,容器重建不丢失: | 目录 | 用途 | | ------------------ | --------------------------------- | | `.volumes/ssh/` | SSH 密钥和配置 | | `.volumes/claude/` | Claude Code 配置(settings.json) | | `.volumes/jj/` | jj 版本控制配置 | | `.volumes/bin/` | 运行时脚本(runcc.sh) | ### 3. 启动 Agent 团队 ```bash # 在 tmux 中启动 5 面板团队工作空间 /isos-tmux-team ``` 布局如下: ``` +----------+----------------------+--------------------+ | | Pane 2 (后端) | Pane 3 (前端) | | Pane 1 +----------------------+--------------------+ | (项目) | Pane 4 (测试) | Pane 5 (对话) | | | | | +----------+----------------------+--------------------+ ``` 也可手动启动单个角色: ```bash /isos-pm # 项目经理 /isos-backend # 后端开发 /isos-frontend # 前端开发 /isos-test # 测试工程师 ``` ### 4. 常用命令 ```bash # 提交并推送(jj 工作流) /isos-pr # 文档相关 /isos-doc-需求 # 需求文档 /isos-doc-架构 # 架构文档 /isos-doc-设计 # 设计文档 /isos-doc-测试 # 测试文档 /isos-doc-运维 # 运维文档 # 工具 /isos-tmux-monitor # tmux 监控面板 /isos-pdf2md # PDF 转 Markdown /isos-md-export # Markdown 导出 docx/pdf ``` ### 5. 开发验证 ```bash # 服务端 (cd apps/server) uv run mypy src/ --strict uv run pytest ruff format --check . && ruff check . # 桌面端 (cd apps/desktop) uv run mypy src/ --strict uv run pytest ruff format --check . && ruff check . ``` ## 角色阅读指引 ### 项目经理 1. [`docs/12-管理-项目.md`](docs/12-管理-项目.md) — 项目管理、里程碑、工作流程 2. [`docs/03-功能列表.md`](docs/03-功能列表.md) — 功能需求列表 3. [`docs/管理-Agent-Team分工及提示词.md`](docs/管理-Agent-Team分工及提示词.md) — Agent 分工 4. [`team/tmux.md`](team/tmux.md) — tmux 协作规范 ### 架构师 1. [`docs/07-系统架构.md`](docs/07-系统架构.md) — 系统架构图、模块划分 2. [`docs/08-数据库设计.md`](docs/08-数据库设计.md) — 数据模型 3. [`docs/09-API契约.md`](docs/09-API契约.md) — API 接口定义 4. [`docs/11-工程规范.md`](docs/11-工程规范.md) — 术语表、工程规范 ### 产品经理 1. [`docs/01-用户需求.md`](docs/01-用户需求.md) — 用户需求、项目目标 2. [`docs/02-产品需求.md`](docs/02-产品需求.md) — 非功能性需求、约束 3. [`docs/04-用户故事.md`](docs/04-用户故事.md) — 用户故事 ### 开发者 1. [`docs/管理-开发入门.md`](docs/管理-开发入门.md) — 开发入门指引 2. [`docs/管理-开发环境搭建.md`](docs/管理-开发环境搭建.md) — 环境配置 3. [`team/svelte.md`](team/svelte.md) — Svelte 5 开发指南 4. [`team/desktop-编码规范.md`](team/desktop-编码规范.md) — Desktop 编码规范 5. [`team/git.md`](team/git.md) / [`team/jj.md`](team/jj.md) — 版本控制规范 ### 测试工程师 1. [`docs/10-测试-方案.md`](docs/10-测试-方案.md) — 测试策略(含各级别定义) 2. [`docs/测试-计划.md`](docs/测试-计划.md) — 测试计划 3. [`docs/测试-用例.md`](docs/测试-用例.md) — 测试用例 4. [`docs/测试-单元.md`](docs/测试-单元.md) — 单元测试标准 ### 运维工程师 1. [`docs/运维-部署实施.md`](docs/运维-部署实施.md) — 部署方案 2. [`docs/运维-发布日志.md`](docs/运维-发布日志.md) — 版本变更历史 3. [`docs/运维-故障排除.md`](docs/运维-故障排除.md) — 问题排查 4. [`docs/运维-安全审计.md`](docs/运维-安全审计.md) — 安全策略 5. [`docs/运维-性能基准.md`](docs/运维-性能基准.md) — 性能基准 ## 文档索引 完整文档目录见 [`docs/README.md`](docs/README.md),团队规范见 [`team/README.md`](team/README.md)。 ## 核心约束 - **模块独立**: `apps/server` 和 `apps/desktop` 各有独立环境,禁止跨模块代码引用,仅通过 API 通信 - **每个 PR 只改一个模块**,标题格式:`[模块] 描述` - **提交类型使用中文**: `功能`、`修复`、`维护`、`文档` 等,详见 [`team/git.md`](team/git.md) - **禁止 AI 签名**: 提交消息中不添加 `Co-Authored-By` 等标识 - **完整类型注解**: mypy strict 模式,禁止 `Any` - **文档文件中文命名**: `docs/` 下所有 `.md` 使用中文文件名 ## 许可证 见 [LICENSE](LICENSE)。