一条完全自动化的多 Agent 代码审核流水线。PR 提交后,一整套 AI Agent 负责审核、修复、测试并发布代码——全程由 Janus 协调。
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"]
}
}
})
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})
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})
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})
Deploy Agent 合并 PR 并部署到生产环境。每一步都通过 Janus 被审计与追踪。