← 返回文章列表

多 Agent 协同代码审查:独立进程 Review Agent 架构设计与实践

基于 Claude Code + Qoder CLI 的实战经验,提炼出一套轻量、通用的多 Agent 协同审查方案。

1. 背景与动机

1.1 社区现有方案

多 Agent 协同在社区已有一些代表性的产品和方向:

  • MulticaGitHub 28.6k ⭐)—— Agent 项目管理平台。将 AI agent 视为团队成员,通过 Squad(小队)机制自动路由任务。支持 11 种 agent CLI,提供可视化看板、实时进度流、Skills 复合系统和 token 成本统计。适合中大型团队的长期异步协作。
  • Slock —— AI 协作通信平台,定位"AI 的 Slack"。让人和 AI agent 在同一个频道中实时对话协作,以消息驱动的方式组织多 agent 参与。适合需要实时讨论和人机混合决策的场景。

这些产品各有侧重——Multica 偏重项目管理与调度,Slock 偏重实时通信与协作。而本文介绍的方案走的是另一条路:极致轻量,Shell 脚本即全部基础设施。不需要额外的平台、服务或数据库,一个 shell 脚本 + 现有 agent CLI 即可在任何项目中落地多 Agent 协同审查。

三者可以视为不同层级的互补方案,而非互斥选择:

层级职责方案
执行层调用 agent CLI 执行具体 review本方案(Shell 脚本)
调度层任务分配、Squad 管理、进度追踪Multica
沟通层人机实时讨论、分歧协商Slock

以下聚焦于执行层的轻量方案。

1.2 单 Agent 审查的局限性

当前主流的 AI Code Agent(Claude Code、Cursor、Qoder 等)在执行代码审查时,通常采用"同框架内 subagent"方式——即主 agent 在同一 session 内派生子任务完成 review。这种方式存在三个结构性问题:

问题表现根因
视角同质化reviewer 倾向于顺着 implementer 的思路走共享 system prompt "味道",相同训练偏好
上下文泄露reviewer 可能受 session 历史影响虽启动新 subagent,但框架层面可能有隐式上下文传递
模型盲区固化同一模型的固有缺陷在 review 中复现相同 model weights 产生相同盲区

1.2 独立 Agent Review 的核心价值

引入外部独立 Agent 进程作为 reviewer,本质上是在利用认知多样性(cognitive diversity)提升审查质量:

  • 进程隔离 → 零上下文污染,真正的"第一次见代码"视角
  • 模型差异 → 不同 LLM 的注意力分布和推理路径不同,互补盲区
  • 框架无关 → 不受主 agent 的 system prompt、约束规则、工具集影响
  • 可组合 → 可以 N 个独立 agent 并行审查,取交集/并集

2. 架构设计

2.1 总体架构

flowchart TB
    subgraph Orchestrator["Orchestrator (主 Agent, 例: Claude Code Opus)"]
        V[Verifier<br/>subagent]
        R[Reviewer<br/>subagent]
        S[External Review Script<br/>shell 脚本]
    end

    subgraph External["External Agent Layer (独立进程)"]
        A1[Qoder CLI<br/>不同 Model]
        A2[Claude Sonnet<br/>可选]
        A3[其他 Agent<br/>可选]
    end

    S -->|"shell 调用"| A1
    S -.->|"可扩展"| A2
    S -.->|"可扩展"| A3

    A1 --> O1[review-report-external.md]
    A2 -.-> O2[review-report-external-claude.md]
    A3 -.-> O3[review-report-external-aider.md]

实线为当前实现,虚线为可扩展方向。每个外部 Agent 是完全独立的进程,零上下文共享。

2.2 设计原则

原则说明
非阻断降级外部 agent 不可用时 SKIP,不阻断主流程
独立产出每个外部 agent 生成独立的报告文件,不覆盖彼此
Verdict 联合判定多份报告取"最严格"结论(任一 FAIL 则 FAIL)
Prompt 自包含传递给外部 agent 的 prompt 包含所有必要上下文(不依赖 session 历史)
工具受限外部 agent 只读,物理禁止 Write/Edit
超时保护限制 max-turns 和执行时间,防止发散

2.3 与 subagent 模式的对比

维度Subagent 模式外部进程模式
上下文隔离逻辑隔离(软)物理隔离(硬)
模型选择受限于主 agent 框架任意模型/provider
启动成本低(框架内调度)中(新进程启动)
配置复杂度
调试难度低(同 session 可追溯)中(需看独立日志)
审查深度受主 agent 上下文窗口影响独立窗口,更充分

3. 通用实现方案

3.1 目录结构

项目同时接入 Claude Code 和 Qoder 两个 code agent,它们共享同一套通用层(.ai/),各自有独立的适配层(.claude/.qoder/):

project-root/
│
├── .ai/                              # 🔸 通用层(所有 agent 共享)
│   ├── agents/
│   │   ├── executor.md               # 代码执行者
│   │   ├── verifier.md               # 一致性验证者
│   │   ├── reviewer.md               # 内部 reviewer
│   │   └── external-reviewer.md      # 外部 reviewer 配置模板
│   ├── hooks/
│   │   ├── run_external_review.sh    # 外部 review 调用脚本
│   │   ├── check_review_report.sh    # Gate 检查(含外部报告)
│   │   ├── run_checks.sh            # tsc + test 检查
│   │   └── prompt_gate.sh           # prompt 提交时约束注入
│   ├── skills/
│   │   ├── verify-change/SKILL.md    # 工作流(含外部 review 步骤)
│   │   └── ...                       # 其他工作流 skills
│   ├── constraints.yaml              # 声明式约束清单
│   └── state.json                    # 工作流状态
│
├── .claude/                          # 🔹 Claude Code 适配层
│   └── settings.json                 # hooks、permissions、agent 类型注册
│
├── .qoder/                           # 🔹 Qoder 适配层
│   └── settings.json                 # hooks、permissions、commands
│
└── openspec/                         # 变更管理
    ├── changes/                      # 活跃变更(含 review 报告产出)
    └── archive/                      # 已归档变更

协作方式

  • 日常开发时,用户选择任一 agent 作为主 agent(如 Claude Code)
  • 主 agent 按 .ai/skills/ 中的工作流执行
  • 到 verify 阶段,主 agent 通过 shell 脚本调用另一个 agent CLI(如 qodercli)做独立 review
  • 两个 agent 共享相同的约束(.ai/constraints.yaml)和工作流定义,但各自有独立的权限配置

Claude Code 配置机制说明

Claude Code 运行时实际识别的配置只有两类:

  • .claude/settings.json — 仅 permissionshooks 字段生效
  • .claude/commands/<name>.md — 注册 slash command(用户输入 /<name> 时注入为 prompt)

其他自定义字段(如 skillsagentsproject不被 Claude Code 引擎解析。因此本方案通过原生机制落地:

.claude/
├── settings.json           # ✅ 运行时生效:permissions + hooks
└── commands/               # ✅ 运行时生效:slash commands
    ├── change.md           # /change → 创建变更提案
    ├── design.md           # /design → 细化技术方案
    ├── apply.md            # /apply  → 执行代码变更
    ├── verify.md           # /verify → 验证 + 内部审查 + 外部独立审查
    ├── archive.md          # /archive → 归档变更
    └── deep-review.md      # /deep-review → 手动触发外部独立 review

其中 /verify 命令的内容引用了外部 review 步骤:

# .claude/commands/verify.md
...
4. 运行 `sh .ai/hooks/run_external_review.sh <change-name>` 调用外部独立 review
...

而角色划分(executor / reviewer / external-reviewer)定义在通用层 .ai/agents/ 目录下,以 .md 文件形式存在,所有 agent(Claude Code、Qoder)共享同一套角色定义。外部 review 的实际执行通过 hooks 中允许的 Bash(qodercli *) 权限 + shell 脚本完成,不需要运行时层面的 agent 注册。

3.2 核心脚本:run_external_review.sh

#!/usr/bin/env bash
set -euo pipefail

# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# 外部独立 Review 脚本 — 通用版
# 
# 用法: sh run_external_review.sh <change-name> [diff-range] [agent-binary]
# 
# 参数:
#   change-name   变更标识(对应 openspec/changes/ 下的目录名)
#   diff-range    git diff 范围(默认 HEAD~5)
#   agent-binary  外部 agent CLI 名称(默认 qodercli)
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

CHANGE_NAME="${1:?Usage: run_external_review.sh <change-name> [diff-range] [agent-binary]}"
DIFF_RANGE="${2:-HEAD~5}"
AGENT_BINARY="${3:-qodercli}"

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
CHANGE_DIR="$PROJECT_ROOT/openspec/changes/$CHANGE_NAME"
OUTPUT_FILE="$CHANGE_DIR/review-report-external.md"

# ─── 前置检查 ──────────────────────────────────────────────────

if [ ! -d "$CHANGE_DIR" ]; then
  echo "[ERROR] Change directory not found: $CHANGE_DIR"
  exit 1
fi

if ! command -v "$AGENT_BINARY" &>/dev/null; then
  echo "[SKIP] $AGENT_BINARY not found in PATH, skipping external review"
  exit 0
fi

# ─── 收集上下文 ─────────────────────────────────────────────────

DESIGN=$(cat "$CHANGE_DIR/design.md" 2>/dev/null || echo "(design.md not found)")
PROPOSAL=$(cat "$CHANGE_DIR/proposal.md" 2>/dev/null || echo "(proposal.md not found)")

DIFF_STAT=$(cd "$PROJECT_ROOT" && git diff "$DIFF_RANGE" --stat 2>/dev/null || echo "(failed)")
DIFF_CONTENT=$(cd "$PROJECT_ROOT" && git diff "$DIFF_RANGE" -- 'src/**' 2>/dev/null || echo "(failed)")

# 截断过长 diff(避免超出 token 限制)
MAX_DIFF_LINES=500
DIFF_LINES=$(echo "$DIFF_CONTENT" | wc -l | tr -d ' ')
if [ "$DIFF_LINES" -gt "$MAX_DIFF_LINES" ]; then
  DIFF_CONTENT=$(echo "$DIFF_CONTENT" | head -n "$MAX_DIFF_LINES")
  DIFF_CONTENT="${DIFF_CONTENT}
... (truncated, ${DIFF_LINES} total lines, showing first ${MAX_DIFF_LINES})"
fi

# ─── 构造 Prompt ───────────────────────────────────────────────

# 审查维度部分可通过 .ai/agents/external-reviewer.md 自定义
# 此处内联一个通用版本
PROMPT="你是一个独立的代码审查专家。你与代码实现者完全隔离,这是你第一次见到这些代码。
请以全新的视角进行严格审查。

## 审查维度(按优先级)
1. 安全性(鉴权、注入、敏感数据泄露)
2. 核心链路完整性(主链路逻辑是否正确)
3. 代码质量(可读性、错误处理、边界条件)
4. 架构合规(分层依赖方向、模块边界)
5. API 稳定性(breaking change、向后兼容)
6. 类型安全(any 滥用、断言合理性)

## 设计文档
${DESIGN}

## 变更提案
${PROPOSAL}

## 文件变更统计
\`\`\`
${DIFF_STAT}
\`\`\`

## 代码变更 (git diff ${DIFF_RANGE})
\`\`\`diff
${DIFF_CONTENT}
\`\`\`

## 输出格式
\`\`\`markdown
# 独立外部审查报告

**审查时间**:YYYY-MM-DD HH:MM
**审查者**:External Reviewer(独立进程)

---

## 审查项

### [Pass/Block/Suggest/Note] 维度名称
...

## 总结

**Verdict**: PASS 或 FAIL
\`\`\`

规则:有 [Block] 项时 Verdict 必须为 FAIL。"

# ─── 调用外部 Agent ────────────────────────────────────────────

echo "[INFO] Starting external review via $AGENT_BINARY..."
echo "[INFO] Change: $CHANGE_NAME | Diff range: $DIFF_RANGE"

# 适配不同 CLI 的调用方式
case "$AGENT_BINARY" in
  qodercli)
    RESULT=$(qodercli -p "$PROMPT" \
      --disallowed-tools "Edit,Write" \
      --max-turns 25 \
      -w "$PROJECT_ROOT" \
      -q \
      -f text 2>/dev/null) || { echo "[WARN] $AGENT_BINARY failed, skipping"; exit 0; }
    ;;
  claude)
    RESULT=$(claude -p "$PROMPT" \
      --allowedTools "Read,Bash(git*),Bash(grep*),Bash(find*)" \
      2>/dev/null) || { echo "[WARN] $AGENT_BINARY failed, skipping"; exit 0; }
    ;;
  *)
    # 通用 fallback:假设 CLI 支持 -p 参数
    RESULT=$("$AGENT_BINARY" -p "$PROMPT" 2>/dev/null) || {
      echo "[WARN] $AGENT_BINARY failed, skipping"; exit 0;
    }
    ;;
esac

# ─── 写入报告 ──────────────────────────────────────────────────

if [ -z "$RESULT" ]; then
  echo "[WARN] $AGENT_BINARY returned empty output, skipping"
  exit 0
fi

echo "$RESULT" > "$OUTPUT_FILE"
echo "[PASS] External review written to: $OUTPUT_FILE"

# ─── 检查 Verdict ──────────────────────────────────────────────

if grep -q '\*\*Verdict\*\*.*FAIL' "$OUTPUT_FILE"; then
  echo "[WARN] External reviewer Verdict: FAIL"
  exit 1
fi

echo "[PASS] External reviewer Verdict: PASS"
exit 0

3.3 Agent 配置模板:external-reviewer.md

---
name: external-reviewer
description: 独立外部代码审查专家,通过 CLI 在完全独立进程中执行
invocation: external-cli
tools: [Read, Glob, Grep, Bash]
read_only: true
---

# 独立外部代码审查专家

## 角色定位

- 完全进程隔离,不共享主 agent 对话历史
- 使用不同模型提供差异化审查视角
- 只读,物理禁止修改代码

## 与内部 Reviewer 的关系

| | 内部 Reviewer | External Reviewer |
|---|---|---|
| 环境 | 主 agent subagent | 独立 CLI 进程 |
| 模型 | 与主 agent 相同 | 不同模型 |
| 上下文 | 可能受 session 影响 | 完全隔离 |
| 阻断性 | 阻断 | 阻断(如存在) |
| 降级 | 无 | CLI 不可用时 SKIP |

## 审查维度

按项目需求自定义,通常包括:
1. 安全性
2. 核心链路完整性
3. 代码质量
4. 架构合规
5. API 稳定性
6. 类型安全

3.4 工作流集成

在 verify 阶段的 SKILL.md 中嵌入外部 review 步骤:

### 步骤 N:外部独立 Review

```bash
sh .ai/hooks/run_external_review.sh <change-name> [diff-range] [agent-binary]
  • 降级策略:CLI 不可用时 SKIP,不阻断流程
  • 产出:review-report-external.md
  • Verdict=FAIL 时阻断后续归档

### 3.5 Gate 检查扩展

```bash
# 在 check_review_report.sh 末尾追加
EXTERNAL_REPORT="$CHANGES_DIR/$CHANGE_NAME/review-report-external.md"

if [ -f "$EXTERNAL_REPORT" ]; then
    EXT_VERDICT=$(grep -i "^[*]*Verdict[*]*:" "$EXTERNAL_REPORT" | head -1)
    if echo "$EXT_VERDICT" | grep -qi "FAIL"; then
        echo "BLOCKED: External review Verdict is FAIL"
        exit 1
    fi
    echo "  External review: PASS"
fi

4. 扩展为多 Agent 审查

4.1 多 Agent 并行架构

# 并行调用多个外部 agent
sh .ai/hooks/run_external_review.sh my-change HEAD~3 qodercli &
sh .ai/hooks/run_external_review.sh my-change HEAD~3 claude &
sh .ai/hooks/run_external_review.sh my-change HEAD~3 aider &
wait

# 输出分别写入:
# review-report-external-qodercli.md
# review-report-external-claude.md
# review-report-external-aider.md

要支持多 agent 并行,脚本需要小幅修改——输出文件名带上 agent 标识:

# 修改 OUTPUT_FILE 命名
AGENT_NAME=$(basename "$AGENT_BINARY")
OUTPUT_FILE="$CHANGE_DIR/review-report-external-${AGENT_NAME}.md"

4.2 多 Agent 编排脚本

#!/usr/bin/env bash
# run_multi_review.sh — 编排多个外部 agent 并行审查

CHANGE_NAME="${1:?Usage: run_multi_review.sh <change-name>}"
DIFF_RANGE="${2:-HEAD~5}"

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
REVIEW_SCRIPT="$SCRIPT_DIR/run_external_review.sh"

# 定义 agent 列表(可通过配置文件外置)
AGENTS=("qodercli" "claude")

PIDS=()
for agent in "${AGENTS[@]}"; do
  if command -v "$agent" &>/dev/null; then
    echo "[INFO] Launching $agent review..."
    sh "$REVIEW_SCRIPT" "$CHANGE_NAME" "$DIFF_RANGE" "$agent" &
    PIDS+=($!)
  else
    echo "[SKIP] $agent not available"
  fi
done

# 等待所有 agent 完成
FAILED=0
for pid in "${PIDS[@]}"; do
  wait "$pid" || FAILED=$((FAILED + 1))
done

if [ "$FAILED" -gt 0 ]; then
  echo "[WARN] $FAILED external reviewer(s) returned FAIL verdict"
  exit 1
fi

echo "[PASS] All external reviews passed"
exit 0

4.3 Verdict 聚合策略

策略规则适用场景
ALL_PASS所有 agent 都 PASS 才通过高风险变更(鉴权、支付)
MAJORITY多数 PASS 即通过一般性变更
ANY_PASS任一 PASS 即通过低风险变更、探索性修改
WEIGHTED按 agent 权重加权特定 agent 擅长特定维度

推荐默认使用 ALL_PASS,对于非阻断的外部 review 使用 MAJORITY

4.4 配置化 Agent 注册

将 agent 列表外置为 YAML 配置,便于项目间复用:

# .ai/review-agents.yaml
agents:
  - name: qodercli
    binary: qodercli
    flags: ["--disallowed-tools", "Edit,Write", "--max-turns", "25", "-q"]
    enabled: true
    weight: 1.0
    focus: ["security", "architecture"]
  
  - name: claude-sonnet
    binary: claude
    flags: ["--model", "sonnet", "--allowedTools", "Read,Bash(git*)"]
    enabled: true
    weight: 0.8
    focus: ["code-quality", "type-safety"]
  
  - name: aider
    binary: aider
    flags: ["--no-auto-commits", "--read"]
    enabled: false
    weight: 0.6
    focus: ["refactoring", "patterns"]

verdict_strategy: ALL_PASS
max_parallel: 3
timeout_seconds: 300

5. CLI 适配参考

5.1 已验证的 CLI

CLI非交互模式只读控制模型选择
qodercli-p "prompt"--disallowed-tools "Edit,Write"配置文件
claude (Claude Code)-p "prompt"--allowedTools "Read,..."--model sonnet
aider--message "prompt"--no-auto-commits--model gpt-4o
continueCLI modereadonly flagconfig

5.2 适配新 CLI 的检查清单

为新的 agent CLI 编写适配时,确认以下能力:

  • 支持非交互/单次 prompt 模式(-p 或类似参数)
  • 支持禁用写入工具(物理只读保障)
  • 支持指定工作目录
  • 输出为纯文本(非 JSON 时需额外解析)
  • 支持限制迭代次数(防止无限循环)
  • 退出码有意义(0=成功, 非0=失败)

6. 使用方法

6.1 首次配置

# 1. 确认外部 agent CLI 可用
which qodercli  # 或 which claude

# 2. 复制脚本到项目
cp run_external_review.sh .ai/hooks/
chmod +x .ai/hooks/run_external_review.sh

# 3. 更新 settings(以 Claude Code 为例)
# .claude/settings.json → permissions.allow 加入:
#   "Bash(qodercli *)"
#   "Bash(sh .ai/hooks/run_external_review.sh *)"

6.2 手动触发

# 单 agent review
sh .ai/hooks/run_external_review.sh fix-subpath-imports

# 指定 diff 范围
sh .ai/hooks/run_external_review.sh fix-subpath-imports HEAD~3

# 指定 agent
sh .ai/hooks/run_external_review.sh fix-subpath-imports HEAD~3 claude

6.3 工作流内自动触发

/verify 阶段自动执行,流程如下:

用户: /verify
  │
  ├── Step 1: run_checks.sh (tsc + test)
  ├── Step 2: verifier subagent (一致性验证)
  ├── Step 3: reviewer subagent (内部 review)
  ├── Step 4: run_external_review.sh (外部独立 review) ← 自动
  └── Step 5: 综合所有报告,向用户汇报

6.4 查看报告

# 内部 review
cat openspec/changes/<name>/review-report.md

# 外部 review
cat openspec/changes/<name>/review-report-external.md

# 多 agent 模式
ls openspec/changes/<name>/review-report-external-*.md

7. 最佳实践

  1. 内部 review 兜底,外部 review 增强:外部 review 发现的 [Suggest] 项不自动阻断,仅 [Block] 项阻断
  2. diff 范围要精确:传入准确的 commit 范围,避免包含无关变更干扰判断
  3. 截断长 diff:超过 500 行的 diff 截断并标注,让 agent 聚焦核心变更
  4. 定期轮换外部 agent 模型:避免形成新的盲区固化
  5. Block 项需人工确认:外部 agent 的 Block 判定可能过严,archive 前人工 review 一遍

8. 与现有工具链的集成

8.1 CI/CD 集成

# GitHub Actions 示例
review:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v4
    - name: Run external review
      run: |
        sh .ai/hooks/run_external_review.sh ${{ env.CHANGE_NAME }} origin/main...HEAD
      env:
        ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

8.2 Git Hooks 集成

# .git/hooks/pre-push (可选)
CHANGE=$(ls openspec/changes/ 2>/dev/null | head -1)
if [ -n "$CHANGE" ]; then
  sh .ai/hooks/run_external_review.sh "$CHANGE" origin/main...HEAD
fi

8.3 MCP Server 集成

对于支持 MCP 的 agent,可以将外部 review 封装为 MCP tool:

{
  "name": "external_review",
  "description": "Trigger independent external agent review",
  "parameters": {
    "change_name": { "type": "string" },
    "diff_range": { "type": "string", "default": "HEAD~5" },
    "agent": { "type": "string", "default": "qodercli" }
  }
}

9. 安全考量

风险缓解措施
Prompt 注入(diff 中含恶意指令)使用 heredoc 传递,diff 放在明确的 code fence 内
Token 超限截断 diff 至 500 行,设置 max-turns
敏感信息泄露外部 agent 在本地执行,不上传代码到第三方
报告伪造Gate 脚本验证报告格式和 Verdict 关键字
无限循环--max-turns 限制 + 脚本层面 timeout

10. 与社区方案的定位差异

本方案与 Multica、Slock 的关系不是竞争而是互补——它们解决不同层级的问题:

方案核心优势本方案的差异定位
Multica可视化看板、Squad 自动路由、Skills 复合、11 种 CLI 支持、token 成本统计本方案零基础设施、零部署,git clone 即用
Slock类 Slack 的直觉式人机协作、实时对话驱动、低门槛本方案产出结构化文件,可 git 追踪和 CI 集成

本方案的核心特点是轻量——一个 shell 脚本 + 现有 agent CLI 就是全部基础设施。不需要数据库、不需要后端服务、不需要 daemon 进程。对于已经有 CI/CD 和 git 工作流的团队,这是接入成本最低的多 Agent 协同方式。

当团队规模扩大、协作复杂度上升时,可以将本方案作为执行层保留,上层叠加 Multica(调度)或 Slock(沟通)来扩展能力。

11. 总结

多 Agent 协同审查的核心思想是用认知多样性对抗单一视角的盲区。通过将外部独立 agent 以进程隔离的方式嵌入现有工作流,我们获得了:

  • 零侵入:不修改主 agent 的核心逻辑,仅在工作流中增加一个 shell 步骤
  • 渐进式:从 1 个外部 agent 开始,按需扩展到 N 个
  • 可降级:外部 agent 不可用时静默跳过,不影响主流程
  • 可组合:任意 agent CLI 均可通过适配层接入

而放到更大的视野中,Shell 编排、Multica、Slock 代表了三种不同的多 Agent 协作哲学:管道组合 vs 项目管理 vs 实时通信。选择哪种取决于团队规模、流程成熟度和协作模式。对于大多数工程团队,务实的建议是:从 Shell 编排起步(零成本验证价值),在团队规模扩大后按需引入 Multica 做调度层,用 Slock 补充实时人机沟通。