@team-agent/installer 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,201 +1,179 @@
1
- # TeamSpec Agent Mode
1
+ **English** | [中文](https://github.com/Florious95/team-agent/blob/main/README.zh.md)
2
2
 
3
- Document-driven CLI runtime for launching and coordinating Codex CLI workers from a leader conversation.
3
+ # Team Agent
4
4
 
5
- The product and engineering boundary is defined in [`docs/team-agent-foundation-and-boundaries.md`](docs/team-agent-foundation-and-boundaries.md). Agents express semantic intent; the runtime owns team startup, delivery, state, diagnostics, secret safety, and the coordinator daemon.
5
+ > Talk once. Ship a team.
6
6
 
7
- ## Install
7
+ A multi-agent runtime for Claude Code and Codex CLI where **the lead does the orchestration** — you describe a goal in plain language and it builds a team across providers, runs the work, and reports back.
8
8
 
9
- For normal users:
9
+ No DAG. No YAML. No Kanban. Just a conversation.
10
10
 
11
11
  ```bash
12
12
  npx @team-agent/installer@latest install
13
13
  ```
14
14
 
15
- The installer probes `TEAM_AGENT_PYTHON`, `python3`, then `python`, copies the runtime to
16
- `~/.team-agent/runtime/<version>/`, writes wrappers under `~/.local/bin/`, runs
17
- `team-agent install-skill --target all`, and then runs `team-agent doctor`.
15
+ **Important:** the lead Claude/Codex conversation must run inside a
16
+ tmux-managed pane. The easiest path is `team-agent claude` or
17
+ `team-agent codex`; existing tmux layouts also work. A plain terminal without a
18
+ tmux pane is not enough, because teammates need a concrete pane target to send
19
+ verified messages back to the lead.
18
20
 
19
- Source checkout install, for development:
21
+ ---
20
22
 
21
- ```bash
22
- python3 scripts/install.py --prefix "$HOME/.local"
23
- export PATH="$HOME/.local/bin:$PATH"
24
- team-agent doctor
25
- team-agent install-skill --target all
26
- ```
23
+ ## Why this exists
27
24
 
28
- Runtime dependencies:
25
+ You have a $20 Claude subscription. It's day 18 of the month. You're out of credits but you still have work to ship.
29
26
 
30
- - `tmux` 3.3+
31
- - Codex CLI command: `codex`
32
- - Provider auth owned by the provider CLI
27
+ You could pay $200. You could switch to a cheaper model and lose Claude's taste. You could wait until the 1st.
33
28
 
34
- ## Quick Start
29
+ Or you could let Claude stay the lead — designing tasks, coordinating, reviewing — while Codex or a third-party-API-routed Claude handles implementation. Same conversation, ~10x cheaper, no quality loss.
35
30
 
36
- Start the user-facing leader from a tmux-managed pane before starting a real team. The short
37
- entry points are:
31
+ That's one of the things this is for. **The lead stays Claude. The hands can be anyone.**
38
32
 
39
- ```bash
40
- team-agent codex
41
- team-agent claude
42
- ```
33
+ ---
43
34
 
44
- Arguments after the provider name pass through to the provider CLI:
35
+ ## What it actually does
45
36
 
46
- ```bash
47
- team-agent codex --dangerously-bypass-approvals-and-sandbox
48
- team-agent claude --dangerously-skip-permissions
49
- ```
37
+ Install once. Then in any Claude Code or Codex CLI conversation, say something like:
50
38
 
51
- If these commands run outside tmux, they create or attach a tmux leader session in the current
52
- directory. If they run inside tmux, they exec the provider in the current pane. Existing tmux
53
- layouts, including Finder/Ghostty right-click launchers, are also supported: the requirement is
54
- that `team-agent quick-start` runs from the leader's current tmux pane so worker-to-leader
55
- messages have a concrete, verifiable target.
39
+ > "Build a small SaaS for tracking client feedback backend, frontend, tests, and acceptance criteria."
56
40
 
57
- Create a directory containing role docs, then run:
41
+ The lead figures out:
58
42
 
59
- ```bash
60
- team-agent quick-start <agents_dir>
61
- ```
43
+ - What roles you need (and how rich each role's definition should be)
44
+ - Which provider each role should run on (Claude for taste, Codex for logic, third-party for cost)
45
+ - How teammates communicate (peer-to-peer, with shared task lists)
46
+ - When to escalate decisions back to you
62
47
 
63
- The command prepares the current workspace team, starts workers, waits for readiness, and starts the per-workspace `team-agent-coordinator` daemon. When it prints `ready:` and `ready_signal`, startup is complete; do not add sleep/status polling unless diagnosing a failure. Detailed logs stay under the workspace team files.
48
+ It then spawns the team, runs the work, and reports back. You stay in the same conversation the whole time. Teammates show up in separate terminal windows so you can watch what each is doing without leaving the lead.
64
49
 
65
- By default, loose role docs are copied into `.team/current/`. To keep multiple teams in one workspace, give each generated team an explicit id, or pass an existing team directory directly:
50
+ Close your terminal. Come back tomorrow. The team is still there. Open Claude Code again pick up where you left off.
66
51
 
67
- ```bash
68
- team-agent quick-start ./roles-alpha --team-id alpha
69
- team-agent quick-start .team/research
70
- ```
52
+ ---
71
53
 
72
- `quick-start` is the fresh startup path. If Team Agent finds stored worker context for the same runtime session, it stops before launching blank workers and tells you to either resume with `restart` or explicitly accept a fresh start with `--fresh`:
54
+ ## What makes it different
73
55
 
74
- ```bash
75
- team-agent restart . --team team-alpha
76
- team-agent quick-start .team/alpha --fresh
77
- ```
56
+ There are good multi-agent tools today. Each picks a different tradeoff:
78
57
 
79
- Role docs can omit `model` for subscription workers. Team Agent fills defaults from `TEAM.md` `provider_models`, then built-in defaults (`codex: gpt-5.5`, `claude/claude_code: claude-sonnet-4-6`). Put a role-level `model` only when that worker intentionally uses a different model.
58
+ | | Form | You configure | Lead | Where it runs |
59
+ | -------------------------- | ------------------ | ------------------------------ | ------------------------------------- | ------------------- |
60
+ | **agent-teams-ai** (871★) | Electron app | Roles + provisioning prompt in UI | "CTO" watches Kanban | Desktop app |
61
+ | **omo** (54.9k★) | OpenCode plugin | `ultrawork` command word | Sisyphus, fixed roles | OpenCode TUI |
62
+ | **CCB** (2.5k★) | CLI + TOML | `.ccb/ccb.config` per team | None (you compose) | tmux |
63
+ | **ClawTeam** (3.3k★) | CLI + prompt inject | TOML team templates | None | tmux + Web UI |
64
+ | **Team Agent** (this) | MCP runtime | Nothing | The native Claude/Codex you're already talking to | Your existing terminal |
80
65
 
81
- Send work and inspect state:
66
+ The lead in this project isn't a special "orchestrator agent" with its own personality. **It's just Claude (or Codex)** — the same one you'd talk to about anything else, now with the ability to spawn and manage teammates.
82
67
 
83
- ```bash
84
- team-agent send <agent_id> "<message>"
85
- team-agent send --watch-result <agent_id> "<message>"
86
- team-agent status
87
- team-agent status <agent_id>
88
- team-agent approvals
89
- team-agent inbox <agent_id>
90
- team-agent shutdown --keep-logs
91
- team-agent restart .
92
- team-agent restart . --team <session_name_or_team_name>
93
- team-agent start-agent <agent_id> --workspace .
94
- ```
68
+ This matters because:
95
69
 
96
- `team-agent send` waits for `visible` delivery by default and exits non-zero if the target terminal does not show the unique token before timeout. Use `--no-wait` only when deliberately accepting injected-but-unverified delivery.
97
- Use `team-agent send --watch-result ...` for normal task dispatch: the command returns after verified delivery, registers a result watcher, and the coordinator collects the eventual result and notifies the leader.
70
+ - **Orchestration scales with model intelligence**, not with framework features. When Claude 5 ships, the lead gets smarter automatically. No update required on our side.
71
+ - **The lead can build any team for any task**, not just predefined coding roles. We've run academic paper revisions, multi-role brainstorming sessions, even adversarial games like Werewolf none of them programmed, all of them composed by the lead in conversation.
72
+ - **You give up the orchestration UI**, you gain the ability to ship work whose specifics you couldn't have specified up front.
98
73
 
99
- `team-agent status` includes result-store counts plus each worker's `session_id`, capture method, and attribution confidence when available. `team-agent shutdown` makes a final session capture attempt before killing tmux. `team-agent restart <workspace>` resumes workers with stored provider-native session ids; if the workspace has more than one restartable team, it fails closed and lists candidates until you pass `--team`. Workers with missing `session_id` are started fresh and logged as `restart.fresh_spawn`. `team-agent start-agent <agent_id> --workspace .` is the narrow repair path for one missing worker window; it resumes that worker when possible, starts it fresh otherwise, and leaves other workers running.
74
+ ---
100
75
 
101
- Use `team-agent approvals [agent_id]` to inspect pending provider/MCP approval prompts without copying worker terminal pages into the leader context.
76
+ ## How it works (briefly)
102
77
 
103
- ## Role Docs
78
+ Three design choices make this possible:
104
79
 
105
- Role docs are Markdown files with YAML front matter:
80
+ **1. The orchestration layer is the lead.** No external workflow engine. The lead reasons about role definitions, dispatches via MCP tools, and adjusts the team in real time from your conversation. Add a teammate mid-flow, change someone's role, dissolve a team — all in plain language.
106
81
 
107
- ```yaml
108
- ---
109
- name: implementer
110
- role: Implementation Engineer
111
- provider: codex
112
- model: gpt-5.5
113
- auth_mode: subscription
114
- profile: codex-default
115
- tools:
116
- - fs_read
117
- - fs_write
118
- - execute_bash
119
- - mcp_team
120
- ---
121
- ```
82
+ **2. Transport is infrastructure, identity is persistent.** Teammates run as long-lived `claude` or `codex` processes with stable session IDs. When a window dies, the runtime respawns it and restores state — without that event ever entering any agent's context. Identity is injected at the system-prompt level, not via fragile chat-history hacks.
122
83
 
123
- For quick-start teams, put role docs under `agents/` and keep `TEAM.md` at the team root. A root `TEAM.md` is team configuration, not a worker role, and does not create a leader pane. Quick-start generated files stay under the selected team directory, such as `.team/current/` or `.team/alpha/` (`team.spec.yaml`, `team_state.md`), instead of the workspace root.
84
+ **3. Standards over inventions.** MCP for tool calls, Skill files for role definitions. Anything the broader ecosystem ships, this picks up automatically.
124
85
 
125
- Team-level switches live in `TEAM.md` front matter:
86
+ For the full design philosophy and boundaries, see [`docs/team-agent-foundation-and-boundaries.md`](./docs/team-agent-foundation-and-boundaries.md).
126
87
 
127
- ```yaml
128
- ---
129
- name: demo-team
130
- dangerous_auto_approve: false
131
- display_backend: ghostty_window
132
- fast: false
133
- tick_interval_sec: 2
134
- push_min_interval_sec: 60
135
- stuck_timeout_sec: 300
136
- worker_to_worker: true
137
88
  ---
89
+
90
+ ## Quick start
91
+
92
+ ### Install
93
+
94
+ ```bash
95
+ npx @team-agent/installer@latest install
138
96
  ```
139
97
 
140
- If `display_backend` is omitted, quick-start defaults to `ghostty_window`. Use `display_backend: none` only for headless or CI runs.
141
- Ghostty display windows use one linked tmux session per worker, so each visible window keeps an independent active tmux window while runtime injection still targets the base worker window.
142
- When the leader Codex/Claude process itself was started with `--dangerously-bypass-approvals-and-sandbox` or `--dangerously-skip-permissions`, Team Agent treats worker launch, restart, and single-agent repair as already authorized and passes the matching dangerous permission mode through.
98
+ This sets up the MCP server, registers the Team Agent skill, and wires it into your Claude Code / Codex CLI config.
99
+
100
+ Source checkout install:
101
+
102
+ ```bash
103
+ git clone https://github.com/Florious95/team-agent.git team-agent
104
+ cd team-agent
105
+ npm exec --yes --package . -- team-agent-installer install
106
+ ```
143
107
 
144
- Secrets must stay in profile files ignored by git. Role docs and manifests carry profile references only. Agents must not read raw profile env files into context; use `team-agent profile show <name> --workspace . --json` or `team-agent profile doctor <name> --workspace . --json` for redacted diagnostics.
108
+ ### Use
145
109
 
146
- For third-party compatible APIs, the leader should generate a local fillable profile instead of asking for secrets in chat:
110
+ Start the lead inside tmux. The shortcut commands create or attach a tmux
111
+ leader session when needed:
147
112
 
148
113
  ```bash
149
- team-agent profile init deepseek --auth-mode compatible_api --workspace .
114
+ team-agent claude
115
+ team-agent codex
116
+ ```
117
+
118
+ If you already use tmux/Ghostty/Finder layouts, keep using them; the hard
119
+ requirement is that the visible lead conversation has a tmux pane. Then talk to
120
+ the lead:
121
+
150
122
  ```
123
+ You: I want to refactor this codebase, split it into a monorepo,
124
+ and add proper test coverage. Help me plan and run this.
151
125
 
152
- This creates `.team/current/profiles/deepseek.env` and `.team/current/profiles/deepseek.example.env` with blank values:
126
+ Lead: [proposes a team refactor architect (Claude), code mover (Codex),
127
+ test author (Claude), reviewer (Codex). Surfaces the tradeoffs,
128
+ waits for your confirmation.]
153
129
 
154
- ```env
155
- AUTH_MODE=compatible_api
156
- PROFILE_NAME=deepseek
157
- BASE_URL=
158
- API_KEY=
159
- MODEL=
130
+ You: Go.
160
131
  ```
161
132
 
162
- Fill the `.env` file locally, then reference only the profile name from role docs:
133
+ That's it. Teammates appear in separate windows. The lead reports progress, raises decisions when needed, and shuts everything down when you say so.
134
+
135
+ ### Stop / resume
163
136
 
164
- ```yaml
165
- provider: claude_code
166
- auth_mode: compatible_api
167
- profile: deepseek
168
137
  ```
138
+ You: Close the team for now.
139
+ Lead: [Saves state, closes panes. ~2 seconds.]
169
140
 
170
- For `compatible_api`, `MODEL=` in the profile is a valid model source. If both the role doc and profile define a model, they must match exactly; otherwise preflight fails before startup. Team Agent loads that profile during quick-start, launch, restart, and start-agent. Secret values are written only to per-worker runtime env files under `.team/runtime/provider-env/` and are not printed in CLI output, event logs, role docs, or compiled specs. Compatible API workers inherit the current shell proxy/CA environment by default, because some teams intentionally route third-party APIs through a proxy. Claude compatible API workers use a Team Agent managed `CLAUDE_CONFIG_DIR`, so user-level Claude subscription settings cannot re-inject Anthropic proxy variables into third-party API sessions. That managed config is pre-seeded with non-secret onboarding, theme, and workspace trust state so a fresh isolated Claude worker does not stop at first-run setup. Startup smoke checks expose whether the profile used an ambient proxy or a profile proxy; if the proxy cannot reach `BASE_URL`, quick-start returns a redacted blocker and lets the user choose whether to fix the proxy, set `HTTPS_PROXY=`/`HTTP_PROXY=` in that profile, or set `PROXY_MODE=direct` in that profile to bypass proxy only for that worker. Subscription workers keep the native provider settings and environment.
171
- When diagnosing profile state, run `team-agent profile show deepseek --workspace . --json`; it reports non-secret values and secret-key presence without printing secret values. Do not inspect `.team/current/profiles/*.env` or `.team/runtime/provider-env/*.env` through an Agent.
141
+ (next day)
172
142
 
173
- ## Runtime
143
+ You: Continue yesterday's refactor team.
144
+ Lead: [Restores teammates from saved sessions. ~2 seconds. Same context.]
145
+ ```
174
146
 
175
- Worker-to-leader messages are stored in SQLite, rendered as human-readable text, and pushed into the attached leader pane by the runtime/coordinator path. Delivery states distinguish `accepted`, `target_resolved`, `injected`, `visible`, `submitted`, `failed`, and `ambiguous`. Direct leader delivery only reports `submitted` after the rendered token is observed in the pane and the runtime sends `Enter`; `visible` alone is only a pre-submit observation.
147
+ ---
176
148
 
177
- Agent-facing MCP tools keep context thin: `send_message` takes only `to` and `content`, and `report_result` takes `summary` plus optional status/details. Sender, task id, ack policy, result schema fields, delivery ids, and verification metadata are filled or stored by the runtime. If a provider fails to pass `TEAM_AGENT_ID`, MCP infers the worker from the active task/message state and falls back to an explicit `unknown` sender rather than misrouting the message as leader. Message targets are team-scoped: use `leader`, a teammate agent id, or `*` for all other team members.
149
+ ## What works today
178
150
 
179
- Final results are stored through `report_result`; that call also attempts an immediate leader notification through the same verified/fallback delivery path. `team-agent collect` remains the authoritative state-update path, and `team-agent inbox` is message history only, not a final-result intake. `team-agent status --json` exposes `results.total`, `results.uncollected`, `results.collected`, `results.invalid`, and `results.by_status`.
151
+ Verified across multiple real workflows:
180
152
 
181
- The coordinator automatically clears known Team Agent control-plane MCP prompts such as `team_orchestrator.report_result` and `team_orchestrator.send_message`. It uses session-scoped approval, verifies the prompt disappeared after submission, retries boundedly when Enter/selection does not take, and records the result in the event log. Non-allowlisted tools stay visible through `team-agent approvals`.
153
+ - **Cross-vendor mixed teams** Claude leading, Codex implementing, third-party-API Claude on tests
154
+ - **Web development teams** — 5 roles: frontend / backend / contract / requirements / testing
155
+ - **Academic collaboration** — 5-stage paper revision with adversarial reviewers and consensus mechanism
156
+ - **Game / experimental** — 4-round "Who's the Spy" experiments (1 lead + 4 players, fully autonomous, surfaced a real LLM theory-of-mind observation)
157
+ - **Emergent recovery** — leads automatically pressing enter on Codex permission prompts; teams surviving pane closures and resuming the next day
158
+ - **Dialog-driven team mutation** — adding teammates mid-flow, changing roles, dissolving a team, all without leaving the lead's conversation
182
159
 
183
- Raw worker terminal inspection is blocked in the ordinary black-box workflow. The hidden `team-agent peek` diagnostic refuses to run unless the caller provides `--allow-raw-screen` after explicit user authorization, and still requires exactly one bounded selector: `--head N`, `--tail N`, or `--search TEXT`.
160
+ ---
184
161
 
185
- Worker-to-worker messages are allowed within the current team. The runtime resolves recipients only from the current leader plus agents in the team spec/runtime state; `*` broadcasts to that set and excludes the sender.
162
+ ## Supported leads and teammates
186
163
 
187
- The main help intentionally shows only the black-box surface. Low-level commands remain available through:
164
+ | Role | Claude Code (subscription) | Claude Code (third-party API) | Codex CLI |
165
+ | -------- | -------------------------- | ----------------------------- | --------- |
166
+ | Lead | ✓ | ✓ | ✓ |
167
+ | Teammate | ✓ | ✓ | ✓ |
188
168
 
189
- ```bash
190
- team-agent advanced --help
191
- ```
169
+ Any teammate can be backed by a different provider/tier than the lead. The runtime handles auth, session lifecycle, and resume per teammate independently.
192
170
 
193
- ## Acceptance
171
+ ---
194
172
 
195
- ```bash
196
- PYTHONPATH=src python3 scripts/run_regression_tests.py --iterations 3
197
- PYTHONPATH=src python3 tests/run_tests.py
198
- cargo test --manifest-path crates/team-agent-core/Cargo.toml
199
- ```
173
+ ## Status
174
+
175
+ **Beta.** Working in real use, but expect rough edges in less common configurations. Issues and PRs welcome.
176
+
177
+ ## License
200
178
 
201
- Real provider smoke requires installed and authenticated provider CLIs. A skipped real provider smoke is not production acceptance.
179
+ AGPL-3.0-or-later. Commercial licensing available on request.
package/README.zh.md ADDED
@@ -0,0 +1,175 @@
1
+ [English](https://github.com/Florious95/team-agent/blob/main/README.md) | **中文**
2
+
3
+ # Team Agent
4
+
5
+ > 说一次。一个 team 跑起来。
6
+
7
+ 为 Claude Code 和 Codex CLI 设计的多 agent 运行时。**编排由 lead 自己完成**——你用自然语言描述目标,它跨厂商组建团队、执行工作、汇报结果。
8
+
9
+ 没有 DAG。没有 YAML。没有 Kanban。只有对话。
10
+
11
+ ```bash
12
+ npx @team-agent/installer@latest install
13
+ ```
14
+
15
+ **重要:** 主 Agent,也就是 lead 所在的 Claude/Codex 对话,必须运行在
16
+ tmux 管理的 pane 里。最省心的方式是 `team-agent claude` 或
17
+ `team-agent codex`;你自己已有的 tmux/Ghostty/Finder 分屏布局也可以。普通非
18
+ tmux 终端不够,因为队员向 lead 回传消息时必须有一个明确、可验证的 pane 目标。
19
+
20
+ ---
21
+
22
+ ## 为什么做这个
23
+
24
+ 你有 $20 的 Claude 订阅。月中 18 号,额度用完了,但还有活要交。
25
+
26
+ 你可以升级到 $200(贵)。可以切到更便宜的模型(损失 Claude 的品味)。可以等 1 号重置(影响工作)。
27
+
28
+ 或者你可以让 Claude 继续当 lead——梳理任务、协调、验收——把执行外包给 Codex 或者第三方 API 接入的 Claude。同一个对话,十分之一的成本,质量不下降。
29
+
30
+ 这是这个工具的用法之一。**Lead 还是 Claude,执行者可以是任何人。**
31
+
32
+ ---
33
+
34
+ ## 它具体在做什么
35
+
36
+ 装一次。然后在任何 Claude Code 或 Codex CLI 对话里说类似这样:
37
+
38
+ > "做一个小型 SaaS 来追踪客户反馈——前后端、测试、验收标准都要。"
39
+
40
+ Lead 自己想清楚:
41
+
42
+ - 需要哪些角色,每个角色的定义应该多丰富
43
+ - 哪个角色用哪个 provider(Claude 写前端、Codex 写后端逻辑、第三方 API 跑测试节省成本)
44
+ - 队员之间怎么通信(P2P + 共享任务列表)
45
+ - 什么决策需要回来问你
46
+
47
+ 然后它 spawn 队员、跑工作、汇报。**你全程在同一个对话里**。队员在独立终端窗口里跑,你可以随时切过去看每个人在做什么。
48
+
49
+ 关电脑回家。明天打开 Claude Code 接着说一句"继续昨天那个 team",team 还在,session 状态完整,从昨晚那里接着干。
50
+
51
+ ---
52
+
53
+ ## 和现有方案的差异
54
+
55
+ 市面上已经有几个好的多 agent 工具,各自选了不同的 trade-off:
56
+
57
+ | | 形态 | 你要配置的东西 | Lead | 跑在哪里 |
58
+ | ---------------------------- | ------------------- | ------------------------------ | ----------------------------------- | --------------- |
59
+ | **agent-teams-ai** (871★) | Electron 桌面应用 | UI 里写 roles + provisioning prompt | "CTO" 看 Kanban | 桌面应用 |
60
+ | **omo** (54.9k★) | OpenCode 插件 | `ultrawork` 命令词 | Sisyphus,角色固定 | OpenCode TUI |
61
+ | **CCB** (2.5k★) | CLI + TOML | 每个 team 一份 `.ccb/ccb.config` | 无(你自己组队) | tmux |
62
+ | **ClawTeam** (3.3k★) | CLI + prompt 注入 | TOML team 模板 | 无 | tmux + Web UI |
63
+ | **Team Agent**(本项目) | MCP 运行时 | 不需要配置 | 你本来就在对话的 Claude/Codex | 你现有的终端 |
64
+
65
+ 本项目的 lead **不是**一个有特定 personality 的 "orchestrator agent",**就是** Claude(或 Codex)——你平时聊天用的那个,加上 spawn 和管理队员的能力。
66
+
67
+ 为什么这件事重要:
68
+
69
+ - **编排能力随模型能力提升**,不随框架 feature 增加。Claude 5 一出,lead 自动变聪明,不需要我发版。
70
+ - **Lead 可以为任何任务组建任何 team**,不限于预设的开发角色。我们已经跑通了学术论文修订、多角色头脑风暴、对抗类游戏("谁是卧底"4 局连测)——这些场景都不是预编程的,**全部是 lead 在对话中现场组建出来的**。
71
+ - **你放弃了编排 UI,换来"交付你原本无法精确描述的工作"的能力**。
72
+
73
+ ---
74
+
75
+ ## 工作原理(简要)
76
+
77
+ 三件事让它能跑起来:
78
+
79
+ **1. 编排层就是 lead。** 没有外部 workflow engine。Lead 自己推理角色定义、通过 MCP 调度、根据你的对话实时调整 team。运行中加队员、改角色、解散 team——全部用自然语言。
80
+
81
+ **2. Transport 是基础设施,身份是持久的。** 队员是长寿命的 `claude` 或 `codex` 子进程,有稳定的 session ID。窗口挂了运行时自己拉起来恢复状态——**整个过程不进入任何 agent 的上下文**。身份在 system prompt 层注入,不是塞在对话历史里的脆弱 hack。
82
+
83
+ **3. 用标准协议,不发明协议。** 用 MCP 做工具调用,用 Skill 文件做角色定义。生态发什么,本项目自动获得什么。
84
+
85
+ 完整设计哲学和边界,见 [`docs/team-agent-foundation-and-boundaries.md`](./docs/team-agent-foundation-and-boundaries.md)。
86
+
87
+ ---
88
+
89
+ ## 快速开始
90
+
91
+ ### 安装
92
+
93
+ ```bash
94
+ npx @team-agent/installer@latest install
95
+ ```
96
+
97
+ 会自动设置 MCP server、注册 Team Agent skill、写入 Claude Code / Codex CLI 配置。
98
+
99
+ 源码安装:
100
+
101
+ ```bash
102
+ git clone https://github.com/Florious95/team-agent.git team-agent
103
+ cd team-agent
104
+ npm exec --yes --package . -- team-agent-installer install
105
+ ```
106
+
107
+ ### 使用
108
+
109
+ 在 tmux 内启动 lead。下面两个快捷命令会在需要时创建或附着到 tmux leader
110
+ session:
111
+
112
+ ```bash
113
+ team-agent claude
114
+ team-agent codex
115
+ ```
116
+
117
+ 如果你已经有自己的 tmux/Ghostty/Finder 分屏布局,可以继续用;硬要求只是可见的
118
+ lead 对话必须有 tmux pane。然后在对话里:
119
+
120
+ ```
121
+ 你: 我想重构这个代码库,拆成 monorepo,加测试覆盖。帮我规划并执行。
122
+
123
+ Lead: [提议一个 team:重构架构师 (Claude)、代码搬运工 (Codex)、
124
+ 测试作者 (Claude)、reviewer (Codex)。把 trade-off 说清楚后等你确认]
125
+
126
+ 你: 开始。
127
+ ```
128
+
129
+ 完事。队员窗口出现,lead 推进工作、需要决策时停下来问你,你说"关掉"就关掉。
130
+
131
+ ### 关闭 / 恢复
132
+
133
+ ```
134
+ 你: 先把 team 关了。
135
+ Lead: [保存状态、关闭 pane,约 2 秒]
136
+
137
+ (第二天)
138
+
139
+ 你: 继续昨天那个重构 team。
140
+ Lead: [从保存的 session 恢复队员,约 2 秒,同样的上下文]
141
+ ```
142
+
143
+ ---
144
+
145
+ ## 当前已验证的能力
146
+
147
+ 在多种真实工作流下验证过:
148
+
149
+ - **跨厂商混合 team**——Claude 当 lead,Codex 实现,第三方 API 接入的 Claude 跑测试
150
+ - **Web 开发 team**——5 角色:前端 / 后端 / 契约 / 需求分析 / 测试
151
+ - **学术协作**——5 阶段论文修订工作流,审稿人和研究者对抗 + 共识机制
152
+ - **博弈 / 实验**——4 局"谁是卧底"实验(1 lead + 4 玩家全自治,意外跑出了关于 LLM theory-of-mind 的真实观察)
153
+ - **Emergent 恢复**——lead 自己识别 Codex 权限确认 prompt 并按 enter;窗口关闭后第二天接着用
154
+ - **对话驱动的 team 变更**——运行中加队员、改角色、解散 team,全在 lead 的对话里完成
155
+
156
+ ---
157
+
158
+ ## 支持的 lead 和 teammate
159
+
160
+ | 角色 | Claude Code(订阅制) | Claude Code(第三方 API) | Codex CLI |
161
+ | -------- | -------------------- | ------------------------ | --------- |
162
+ | Lead | ✓ | ✓ | ✓ |
163
+ | Teammate | ✓ | ✓ | ✓ |
164
+
165
+ 任何队员可以用和 lead 不同的 provider/tier。运行时分别处理每个队员的认证、session 生命周期、resume。
166
+
167
+ ---
168
+
169
+ ## 项目状态
170
+
171
+ **Beta**。已经在真实工作流里跑通,但不常见的配置可能有粗糙的地方。欢迎 issue 和 PR。
172
+
173
+ ## License
174
+
175
+ AGPL-3.0-or-later。商业 license 可联系协商。
package/docs/README.md ADDED
@@ -0,0 +1,10 @@
1
+ # Documentation
2
+
3
+ Public entry points:
4
+
5
+ - [`github-release.md`](github-release.md): GitHub upload, NPM publish, NPM install, and source install workflow.
6
+ - [`team-agent-foundation-and-boundaries.md`](team-agent-foundation-and-boundaries.md): product and engineering boundary.
7
+ - [`architecture.md`](architecture.md): runtime architecture notes.
8
+ - [`team-agent-rust-core-boundaries.md`](team-agent-rust-core-boundaries.md): Rust core boundaries.
9
+
10
+ Historical implementation reports remain in this directory for traceability.