按桌面客户端统一方案 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>
62 lines
2.9 KiB
Markdown
62 lines
2.9 KiB
Markdown
# Manager → mcp-server 契约补丁清单
|
||
|
||
> 来源:Heicode Manager 前端集成 §1–§6 时打的本地 patch。建议 mcp-server 侧把这些归一掉,前端就能删掉对应的兼容层。
|
||
|
||
## 1. `manager_actions[].deeplink` 命名空间
|
||
|
||
**当前现象**:mcp-server 返回的 deeplink 形如 `/manager/resources`、`/manager/wallet`、`/manager/audit`。
|
||
|
||
**Manager 实际路由**:`/sk-sources`、`/wallet`、`/audit`。
|
||
|
||
**前端兜底**:`src/features/tasks/task-card-view.tsx::normalizeDeeplink()` 做了映射表。
|
||
|
||
**建议**:mcp-server 直接返回 Manager 真实路径,或返回 `{kind: 'resources' | 'wallet' | 'audit', ...}` 让前端自己拼。前者更简单。
|
||
|
||
| mcp-server 现返回 | Manager 应跳 |
|
||
|---|---|
|
||
| `/manager/resources` | `/sk-sources` |
|
||
| `/manager/wallet` | `/wallet` |
|
||
| `/manager/audit` | `/audit` |
|
||
| `/manager/tasks/{id}` | `/tasks/{id}` |
|
||
|
||
## 2. §5 审计日志的敏感字段 redact
|
||
|
||
**当前现象**:mcp-server `/api/agent/audit` 返回的条目里 `payload` 字段可能包含 token / secret 原文(按 §5 设计应在服务端 mask)。
|
||
|
||
**前端兜底**:`src/features/agent-console/pages.tsx::maskIfSecret()` 做了第二层 mask(按 key 名匹配 `secret|token|password|api_key`)。
|
||
|
||
**建议**:mcp-server 在写审计或读出时统一 mask,前端可以删掉那一层。
|
||
|
||
## 3. §6 任务卡 `manager_actions` 形状一致性
|
||
|
||
**当前确认**:HeicodeTaskCard 真实形状是 `{goal, scope, generated_artifacts, manager_actions: [{label, deeplink}]}`,前端已对齐。
|
||
|
||
**建议**:在 mcp-server contract 文档 §6 里把这个形状固定下来,避免后续漂移。
|
||
|
||
## 4. §4 usage 字段名
|
||
|
||
**当前消费**:`{date, total_quota, total_tokens, prompt_tokens, completion_tokens, count}`。
|
||
|
||
**Manager 用**:sparkline 取 `total_quota`、tooltip 拼 `date` + `formatQuota(total_quota)`。
|
||
|
||
**建议**:维持当前字段名即可。如果未来引入按模型聚合,建议另起 endpoint,不要在 `items` 里混。
|
||
|
||
## 5. §5 `/api/agent/*` stub 数据
|
||
|
||
**当前**:mcp-server 内存 dict(按 §5.0 设计),无 agent-manager 真实转发。
|
||
|
||
**阻塞解除条件**:
|
||
- agent-manager 侧给 mcp-server 派发 service token
|
||
- mcp-server 把 stub 换成对 `http://20.212.121.126` 的真实转发;域名 `agent-manager.taijiagent.com` 的 DNS / HTTPS 后续单独修复,不作为当前联调阻塞项
|
||
|
||
Manager 前端已按 §5 契约消费,stub → 真实数据无需前端改动。
|
||
|
||
## 6. SSE `/api/user/tasks/{id}/events` 状态
|
||
|
||
**当前**:Manager 用 `refetchInterval` 自适应轮询替代(active 状态 3 秒,terminal 状态停止,其它 15 秒)。
|
||
|
||
**建议**:mcp-server 把 SSE 帧格式(event name、data shape)写进契约文档,前端再切到 EventSource / fetch stream。事件至少要覆盖:
|
||
- `status_changed`(包含新 status)
|
||
- `followup_added`(包含 followup payload)
|
||
- `card_updated`(包含完整 HeicodeTaskCard)
|