场景

代码审核流水线

一条完全自动化的多 Agent 代码审核流水线。PR 提交后,一整套 AI Agent 负责审核、修复、测试并发布代码——全程由 Janus 协调。

📦
Product
Agent
📝
Review
Agent
💻
Code
Agent
🧪
Test
Agent
🚀
Deploy
Agent
Janus
持久化 Broker

工作方式

1. Product Agent 提交 PR

Product Agent 将带 PR 详情的代码审核任务发布到 Janus:

client.publish_task({
    "id": "pr-42-review",
    "source_agent": "product",
    "target_type": "mailbox",
    "target_value": "review-agent-mb",
    "envelope": {
        "type": "code_review",
        "payload": {
            "pr_url": "https://github.com/org/repo/pull/42",
            "repo": "org/repo",
            "branch": "feature/new-auth",
            "files": ["auth/service.go", "auth/handler.go"]
        }
    }
})

2. Review Agent 分析代码

Review Agent 拉取任务,分析 diff 中的缺陷与风格问题,然后将发现发布给链上的下一个 Agent:

# 拉取并开始
result = client.pull_task("review-agent-mb", "reviewer")
client.start_task(result.task.id, result.lease.lease_id)

# 分析代码...(AI 审核逻辑)

# 将结果发布给代码 Agent
client.publish_task({
    "id": "pr-42-code-fix",
    "source_agent": "reviewer",
    "target_type": "mailbox",
    "target_value": "code-agent-mb",
    "envelope": {
        "type": "code_fix",
        "payload": {
            "pr_url": "https://github.com/org/repo/pull/42",
            "findings": [
                {"file": "auth/service.go", "line": 42, "severity": "error", "message": "Missing input validation"},
                {"file": "auth/handler.go", "line": 15, "severity": "warn", "message": "Unused parameter"}
            ]
        }
    }
})

# 确认原任务完成
client.ack_task(result.task.id, {"lease_id": result.lease.lease_id})

3. Code Agent 修复问题

Code Agent 接收审核发现,应用修复,并为测试 Agent 发布新任务:

# 拉取审核发现
result = client.pull_task("code-agent-mb", "coder")
client.start_task(result.task.id, result.lease.lease_id)

# 通过 GitHub API 应用修复...

# 发布给测试 Agent
client.publish_task({
    "id": "pr-42-test",
    "source_agent": "coder",
    "target_type": "mailbox",
    "target_value": "test-agent-mb",
    "envelope": {
        "type": "test_run",
        "payload": {
            "pr_url": "https://github.com/org/repo/pull/42",
            "commit_sha": "abc123"
        }
    }
})

client.ack_task(result.task.id, {"lease_id": result.lease.lease_id})

4. Test Agent 验证

Test Agent 对修复后的代码运行测试:

result = client.pull_task("test-agent-mb", "tester")
client.start_task(result.task.id, result.lease.lease_id)

# 运行 CI 测试...

client.publish_task({
    "id": "pr-42-deploy",
    "source_agent": "tester",
    "target_type": "mailbox",
    "target_value": "deploy-agent-mb",
    "envelope": {
        "type": "deploy",
        "payload": {
            "pr_url": "https://github.com/org/repo/pull/42",
            "tests_passed": true,
            "coverage": 87.3
        }
    }
})

client.ack_task(result.task.id, {"lease_id": result.lease.lease_id})

5. Deploy Agent 发布

Deploy Agent 合并 PR 并部署到生产环境。每一步都通过 Janus 被审计与追踪。

关键要点

此场景可适配任何顺序型 Agent 工作流:安全扫描、文档处理、内容审核——模式完全相同。