按桌面客户端统一方案 v0.1 + agent_management Sub Mode Runtime 对接,强制全量统一,不留兼容。
命名统一(强制,无兼容):
- 全仓 agnet/Agnet/AGNET → agent/Agent/AGENT:后端 Go(路由 /api/agent/*、env AGENT_*、
结构体/函数、19 个文件改名)、前端(agent-console/agent-hub、/api/agent 调用、i18n)、
DB(表 agent_*、列 agent_id)、compose/.env、文档、脚本。
- DB 加幂等迁移 renameAgnetTablesToAgent():启动时 rename 老 agnet_* 表/列,保住生产数据。
统一方案核心(10 项):
- callback 统一 /api/agent/callbacks/runtime-events(路由/广播URL/函数名)。
- artifact 兜底判定改用 Runtime 权威信号 metadata.synthesized(§7.2)+ 结构化 artifact_type。
- Manager→Runtime 路径对齐 /api/agent/sub-agile/deployments(§2.2),{deployment_id} 回退 swarm_id。
- 状态裁决 display_status:Manager 唯一裁判,completed 无有效产物→needs_codegen/
completed_without_deliverable(§10.6),接入 detail/timeline/workflow。
- GET /api/heicode/capabilities 能力发现(§6)。
- 模型策略 per_role(role_models)+ 收集 allowed_model_ids(§9)。
- resource_binding_id→secret_ref 服务端解析,客户端不再 inline secret_ref(§17.6)。
- 客户端统一路由层 /api/heicode/sub-agile|swarm/*(task≡deployment,复用控制面)+ workflow 投影。
- 日志分层 user_logs/debug_logs(§13)。
验证:go build ./... + go test(controller/router/model/middleware)全绿;前端 tsc -b + rsbuild build 通过。
待部署:VM .env 的 AGNET_*→AGENT_*;启动迁移自动 rename 表;其他三仓库需同步切到 /api/agent。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
9.4 KiB
Agent Manager 普通 sub 产物回调缺失问题
更新时间:2026-05-29
发给:Agent Manager / Agent Runtime 负责人
范围:普通 sub 敏捷模式,不包含 HeiCode-Swarm 独立蜂群 Runtime。
1. 问题现象
Heicode 桌面客户端执行任务:
给我做一个 oracle 云的代理商网站,做前后端分离
客户端最终只显示:
Swarm initialized and planning started
Swarm execution completed
completed
但右侧运行数据中:
ARTIFACTS = 0
SK SNAPSHOTS = 0
用户无法看到真正交付物,例如代码分支、提交、预览地址、部署清单、文档或最终结果摘要。
2. 本次链路归属
本次不是走 HeiCode-Swarm 独立蜂群 Runtime。
Heicode Manager 生产配置确认当前普通 sub 走:
AGENT_RUNTIME_BASE_URL=http://20.212.121.126
AGENT_RUNTIME_CREATE_PATH=/api/swarms
SWARM_RUNTIME_BASE_URL 当前为空。
因此本问题归属:
Heicode 桌面客户端
-> Heicode Manager 生产
-> Agent Manager / Agent Runtime 普通 sub 入口
-> Heicode Manager callback
-> 桌面客户端查询 artifacts/timeline
不是独立蜂群 Runtime http://52.139.240.116:8000 的问题。
3. Heicode Manager 生产侧实查结果
Heicode Manager deployment:
dep_fa4f43da9e0a
Runtime 返回并保存的 swarm/deployment id:
swm_f9ce3f6c90aa
Heicode Manager 生产库记录:
| 字段 | 值 |
|---|---|
deployment_id |
dep_fa4f43da9e0a |
status |
completed |
phase |
deploy |
runtime_state |
completed |
runtime_deployment_id |
swm_f9ce3f6c90aa |
runtime_swarm_id |
swm_f9ce3f6c90aa |
created_at_text |
2026-05-29T08:40:50Z |
updated_at_text |
2026-05-29T08:40:51Z |
Heicode Manager 收到的 callback 类型统计:
| callback event_type | count |
|---|---|
agent.started |
2 |
budget.alert |
1 |
deployment.status_changed |
3 |
phase.changed |
2 |
timeline.updated |
2 |
关键缺失:
artifact.created = 0
task.completed = 0
sk_tool.completed = 0
Heicode Manager artifact 表查询结果:
agent_artifacts where deployment_id = 'dep_fa4f43da9e0a'
=> 0 rows
说明:Heicode Manager 没有收到任何产物事件,因此客户端显示 ARTIFACTS 0 是真实数据,不是客户端漏显示。
4. Heicode Manager callback 接收链路是通的
生产日志中,Agent Manager 在任务完成时间段连续请求:
POST /api/agent/callbacks/swarm-events
HTTP 状态均为:
200
这说明:
- Agent Manager 能打到 Heicode Manager callback 地址。
- Heicode Manager 没有拒收这些 callback。
- 问题不是 callback 鉴权失败。
- 问题不是 Heicode Manager callback endpoint 不通。
但 callback 事件内容中没有 artifact.created,因此 Heicode Manager 无法落库 artifacts。
5. Agent Manager 侧直查结果
直查 Agent Manager Runtime:
GET http://20.212.121.126/api/swarms/swm_f9ce3f6c90aa
返回关键信息:
{
"deployment_id": "swm_f9ce3f6c90aa",
"swarm_id": "swm_f9ce3f6c90aa",
"status": "completed",
"phase": "planning",
"progress": 100,
"agents": [
{
"agent_id": "agi_backend_59717a71",
"role": "backend",
"status": "running",
"output": null
},
{
"agent_id": "agi_frontend_3063c6c9",
"role": "frontend",
"status": "running",
"output": null
}
],
"metrics": {
"total_messages": 0,
"tokens_used": 0
},
"artifacts": []
}
直查日志:
GET http://20.212.121.126/api/swarms/swm_f9ce3f6c90aa/logs
返回:
Logs will be fetched from K8s in Phase 2
这说明 Agent Manager 自己也没有保存或返回真实产物。
6. 当前判断
本问题根因不在 Heicode Manager,也不在桌面客户端。
当前证据指向 Agent Manager / Agent Runtime:
- Runtime 将 deployment 标记为
completed。 - Runtime 自身返回
artifacts: []。 - Runtime 没有 callback
artifact.created。 - Runtime agents 仍显示
running,但 deployment 已completed,状态不一致。 - Runtime metrics 中
tokens_used=0、total_messages=0,没有真实模型执行用量。 - Runtime logs 仍是占位文本,没有真实 K8s / Agent 日志。
因此客户端只能展示完成状态,不能展示交付结果。
7. Agent Manager 需要修复的内容
P0:任务完成必须回调 artifact
普通 sub 任务完成时,Agent Manager 必须向 Heicode Manager callback:
POST https://code.xinghanlab.com/api/agent/callbacks/swarm-events
event_type = artifact.created
即使没有 Git 分支,也必须返回一个可展示的交付物。
建议 artifact 类型:
| 场景 | artifact_type | uri / 内容 |
|---|---|---|
| 代码已提交 | code_patch |
git://repo#<branch> 或 repo URL + branch + commit |
| 生成了前后端项目 | deployment_manifest |
项目结构、启动方式、服务端口、部署说明 |
| 只产出设计/说明 | document |
文档地址或文档摘要 |
| 无法生成正式产物 | other |
明确失败原因、已完成内容、下一步动作 |
最低要求:不能只发 completed,必须有一个 artifact.created 或明确失败事件。
P0:completed 状态与 Agent 状态一致
当前 Runtime 返回:
deployment.status = completed
agents[].status = running
需要修复为一致状态:
- 如果 deployment completed,则相关 agent 应为
completed、stopped或明确的终态。 - 如果 agent 仍 running,则 deployment 不应为 completed。
- 如果任务未真实执行,应返回
failed或blocked,并说明原因。
P0:回调 task.completed / task.failed
当前 Heicode Manager 没收到:
task.completed
task.failed
task.blocked
Agent Manager 应在每个子 Agent / 子任务结束时回调任务状态,至少包含:
{
"event_type": "task.completed",
"deployment_id": "dep_fa4f43da9e0a",
"swarm_id": "swm_f9ce3f6c90aa",
"task_id": "task-backend-xxx",
"agent_instance_id": "agi_backend_59717a71",
"payload": {
"task_id": "task-backend-xxx",
"agent_role": "backend",
"status": "completed",
"summary": "后端实现完成,产物见 artifact"
}
}
P1:回传真实 usage / cost
当前 Runtime 返回:
tokens_used = 0
total_messages = 0
如果任务真实调用了模型,应回传:
{
"model_usage": {
"input_tokens": 1234,
"output_tokens": 5678,
"total_tokens": 6912,
"model_cost_usd": 0.0123,
"model_id": "xxx"
}
}
如果没有真实调用模型,应明确返回 blocked 或 failed,不能标记为正常 completed。
P1:提供真实日志
当前日志仍是:
Logs will be fetched from K8s in Phase 2
需要至少返回可排障日志摘要:
- Agent 是否启动成功。
- 是否领取任务。
- 是否调用模型。
- 是否生成文件/分支/产物。
- 失败原因。
8. 建议的 artifact.created callback 示例
{
"event_id": "evt_artifact_<unique>",
"event_type": "artifact.created",
"deployment_id": "dep_fa4f43da9e0a",
"swarm_id": "swm_f9ce3f6c90aa",
"agent_instance_id": "agi_backend_59717a71",
"task_id": "task-backend-001",
"occurred_at": "2026-05-29T08:40:51Z",
"correlation_id": "corr_xxx",
"source": "agent-manager",
"payload": {
"artifact_id": "art_swm_f9ce3f6c90aa_backend_001",
"artifact_type": "code_patch",
"title": "Oracle 云代理商网站后端实现",
"summary": "已生成后端接口、数据模型和启动说明",
"uri": "git://repo#feature/swm_f9ce3f6c90aa",
"checksum": "commit_sha_if_available",
"metadata": {
"redacted": true,
"agent_role": "backend",
"runtime_deployment_id": "swm_f9ce3f6c90aa"
}
}
}
如果没有 Git 分支,也可以先回:
{
"event_type": "artifact.created",
"deployment_id": "dep_fa4f43da9e0a",
"swarm_id": "swm_f9ce3f6c90aa",
"payload": {
"artifact_id": "art_swm_f9ce3f6c90aa_summary",
"artifact_type": "document",
"title": "任务执行结果摘要",
"summary": "Runtime 已完成任务,但未返回 Git 分支。这里应写清生成内容、文件位置或未生成原因。",
"uri": "runtime://swm_f9ce3f6c90aa/artifacts/summary",
"metadata": {
"redacted": true
}
}
}
9. 验收标准
修复后请用同类任务重新跑一次:
给我做一个 oracle 云的代理商网站,做前后端分离
必须满足:
| 验收项 | 标准 |
|---|---|
| Runtime 状态 | deployment 和 agents 状态一致 |
| callback | Heicode Manager 收到 artifact.created |
| Manager artifacts | /api/agent/user/deployments/{deployment_id}/artifacts 返回 total > 0 |
| 客户端展示 | 右侧 ARTIFACTS 不再是 0 |
| 交付物 | 能看到 Git 分支、提交、预览地址、部署清单或最终结果文档 |
| usage | 如果真实调用模型,tokens/cost 不应一直为 0 |
| logs | 不再只有 Phase 2 占位文本 |
10. 当前结论
Heicode Manager 和桌面客户端当前表现是正确反映 Runtime 数据。
真正缺口在 Agent Manager / Agent Runtime:
任务被标记 completed,但 Runtime 没有生成或回传 artifact.created。
请 Agent Manager 优先修复任务完成后的产物生成、产物回调、状态一致性、usage 和日志回传。