9.1 KiB
9.1 KiB
Agent Manager 普通 sub 剩余补充要求
更新时间:2026-05-28
发给:Agent Manager / Agnet Runtime 负责人
范围:普通 sub 敏捷开发模式,不包含蜂群模式完整 task graph。
1. 当前已验证事实
Heicode Manager 生产版本 1.4.19 已完成并验证以下链路:
| 项目 | 状态 | 生产验证 |
|---|---|---|
| Manager 创建普通 sub run | 已跑通 | POST https://code.xinghanlab.com/api/swarms 返回 dep_* |
| Manager 调 Agent Manager | 已跑通 | Agent Manager 返回 runtime_swarm_id=swm_* |
| Agent Manager 自动 callback | 已跑通 | Manager events/timeline 可查到 callback |
| callback HMAC fallback | 已跑通 | 生产 callback 可验签入库 |
| Manager 状态反写 | 已跑通 | callback 后 deployment.status/phase/runtime_state/agent_instances 会更新 |
| billing_context 字段透传 | 已跑通 | default_model_id/allowed_model_ids/secret_ref 已保留 |
最新生产烟测样例:
| 字段 | 值 |
|---|---|
| Manager deployment | dep_be665a25f6bc |
| Runtime swarm | swm_4c471d60972f |
| Manager detail status | completed |
| Manager detail phase | deploy |
| Manager runtime_state | completed |
| Manager agent state | completed |
| Manager callback 数 | 9 |
| Manager event 数 | 12 |
因此,当前剩余问题主要不在 Manager 接收链路,而在 Agent Manager 真实执行数据、状态一致性、产物和用量回传。
2. Agent Manager 必须补充的 P0
| 优先级 | 缺口 | 当前实测表现 | Agent Manager 需要补什么 | 验收标准 |
|---|---|---|---|---|
| P0 | Runtime 状态一致性 | 直连 GET /api/swarms/{swarm_id}/status 返回整体 completed,但 agents[].status 仍是 running |
整体完成时同步更新 agent 状态,或发送 agent.completed callback |
status 接口中整体和 agent 状态一致;Manager 不再需要兜底收敛 |
| P0 | 真实 artifact 回传 | Manager 收到 callback,但 /artifacts 仍为 [] |
执行完成时回调 artifact.created,至少包含摘要型交付物 |
Manager /artifacts 至少有 1 条真实 artifact |
| P0 | 真实 usage / cost 回传 | tokens_used=0,budget callback 中 token/cost/runtime 多为 0 |
回传模型 token、模型成本、runtime 秒数、资源使用 | Manager timeline 中能看到非 0 或明确的真实 usage 字段 |
| P0 | 真实日志 | /logs 返回占位文本 Logs will be fetched from K8s in Phase 2 |
接入真实 Pod/Runtime 日志或回调日志摘要 | GET /logs 返回真实执行日志或明确失败原因 |
| P0 | 阶段推进语义 | callback 有 phase/timeline,但当前非常短,直接 completed | 普通 sub 应按需求、设计、开发、测试、部署阶段推进 | 至少能看到 requirements/design/development/testing/deploy 中的真实阶段变化 |
| P0 | 失败原因回传 | 当前成功场景没有问题,但失败链路未验证 | 失败时回调 deployment.status_changed + agent.crashed 或 sk_tool.failed |
Manager detail 出现 failed 和可读 failure_reason |
3. Agent Manager 应补充的 P1
| 优先级 | 缺口 | 要求 | 验收标准 |
|---|---|---|---|
| P1 | SK 工具调用展示 | 回调 sk_tool.called/completed/failed,参数和结果必须脱敏 |
Manager /sk-snapshots 或 timeline 能看到工具调用记录 |
| P1 | 高危审批闭环 | 高危动作回调 approval.requested,等待 Manager/客户端 approve/reject 后继续或停止 |
approve 后 Runtime 继续,reject 后 Runtime 停止或跳过高危动作 |
| P1 | stop 后真实停止 | Manager stop 会调用 Runtime stop | stop 后 status 为 stopped,不再继续发 running/completed callback |
| P1 | 幂等创建稳定性 | 同一个 X-Idempotency-Key 不重复创建 |
重放创建请求返回同一个 run |
| P1 | callback 重试/死信 | 文档写了重试/死信,但也写失败只 warning | 明确当前真实策略;失败后至少可人工重放 |
| P1 | runtime_id 字段稳定 | 当前 Manager 可兼容 deployment_id=swm_* |
后续响应和 callback 统一携带 deployment_id、swarm_id、correlation_id |
4. Callback 最低要求
Manager callback 地址:
https://code.xinghanlab.com/api/agnet/callbacks/swarm-events
创建 run 后,Agent Manager 至少需要主动回调这些事件:
| 事件 | 何时发送 | payload 最低字段 |
|---|---|---|
deployment.status_changed |
accepted/running/completed/failed/stopped | status |
phase.changed |
普通 sub 阶段变化 | stage、checkpoint、summary |
timeline.updated |
用户可读进度 | title、summary、stage、checkpoint |
agent.started |
子 Agent 开始 | agent_role、status |
agent.completed |
子 Agent 完成 | agent_role、status |
agent.crashed |
子 Agent 异常 | agent_role、reason |
artifact.created |
产生中间或最终交付物 | artifact_id、artifact_type、title、summary、uri |
budget.alert |
用量更新或预算告警 | model_tokens、model_cost_usd、runtime_seconds、consumed_usd |
sk_tool.completed |
SK 工具成功 | tool_name、tool_invocation_id、summary |
sk_tool.failed |
SK 工具失败 | tool_name、tool_invocation_id、reason |
approval.requested |
需要高危审批 | approval_id、operation、risk_level、reason |
5. Artifact 最低格式
普通 sub 完成时至少回写一个 artifact:
{
"event_type": "artifact.created",
"deployment_id": "dep_xxx",
"swarm_id": "swm_xxx",
"agent_instance_id": "agi_backend_001",
"payload": {
"artifact_id": "art_dep_xxx_summary",
"artifact_type": "test_report",
"title": "普通 sub 执行结果",
"summary": "本轮任务完成了哪些内容、测试结果、剩余风险",
"uri": "azblob://heicode-artifacts/dep_xxx/report.json",
"stage": "deploy",
"checkpoint": "completed",
"metadata": {
"agent_role": "backend",
"redacted": true
}
}
}
要求:
summary可直接展示给用户。- 不允许出现明文 token、password、secret、private key、connection string。
- 大文件只传 URI 和摘要,不在 callback body 内联完整内容。
6. Usage / Cost 最低格式
Agent Manager 需要让 Manager 能区分预算和真实消耗。
{
"event_type": "budget.alert",
"deployment_id": "dep_xxx",
"swarm_id": "swm_xxx",
"payload": {
"billing_source": "newapi",
"model_id": "model-runtime-smoke",
"prompt_tokens": 1200,
"completion_tokens": 800,
"model_tokens": 2000,
"model_cost_usd": 0.012,
"runtime_seconds": 42,
"cpu_core_seconds": 21,
"memory_mb_seconds": 86016,
"consumed_usd": 0.012,
"budget": {
"max_cost_usd": 0.05,
"remaining_usd": 0.038
}
}
}
如果当前测试任务确实没有模型调用,也需要明确回传:
{
"model_tokens": 0,
"model_cost_usd": 0,
"runtime_seconds": 42,
"billing_source": "runtime_no_model_call"
}
不能只返回全 0 又没有解释。
7. 状态一致性要求
当前实测中 Agent Manager 状态存在矛盾:
{
"status": "completed",
"agents": [
{
"status": "running"
}
],
"tokens_used": 0,
"artifacts": []
}
需要改为:
{
"status": "completed",
"phase": "deploy",
"progress": 100,
"agents": [
{
"status": "completed"
}
],
"metrics": {
"tokens_used": 2000,
"elapsed_seconds": 42
},
"artifacts": [
{
"artifact_id": "art_xxx",
"artifact_type": "test_report"
}
]
}
如果执行失败,则整体和 agent 都要能表达失败:
{
"status": "failed",
"error_message": "模型调用失败或资源授权不足",
"agents": [
{
"status": "failed",
"error_message": "具体失败原因"
}
]
}
8. 联调验收步骤
Agent Manager 补完后,按以下步骤验收:
- Heicode Manager 通过
POST /api/swarms创建普通 sub run。 - Manager 返回
deployment_id=dep_*。 - Runtime 返回并持久化
runtime_swarm_id=swm_*。 - Agent Manager 主动 callback:
deployment.status_changedphase.changedtimeline.updatedagent.startedagent.completedartifact.createdbudget.alert
- Manager 查询:
/api/agnet/user/deployments/{deployment_id}/events/timeline/artifacts/sk-snapshots
- 期望结果:
- detail 状态为真实 Runtime 状态。
- timeline 有阶段推进。
- artifacts 有真实产物。
- usage 有可解释的真实消耗。
- 不出现明文密钥。
9. 当前非阻塞但需记录
| 项目 | 当前状态 | 说明 |
|---|---|---|
| Agent Manager 域名 | 暂未作为联调依赖 | 当前统一使用 http://20.212.121.126 |
| Azure Key Vault | Manager 侧 VM Managed Identity 未正式配好 | 当前 callback 使用 HMAC fallback 已跑通;正式 Key Vault 需后续云资源配置 |
| Manager 状态兜底 | 已完成 | Manager 1.4.19 会根据 callback 收敛 detail 状态,但 Runtime 仍应修正自身状态 |