Verified the old-model code surface against the repo. Found the new template-agent model is an EVOLUTION of the existing deployment control plane, not greenfield — so several files are mixed and must NOT be whole-deleted: - agent_runtime_client.go: AM HTTP client (config/url/headers/create/stop/status/ health) is reused by the new StartAgent/StopAgent AND by capabilities; only withDisplayStatus + artifact/budget helpers are old. - agent_control_plane.go: AgentCreate/List/Get/StopUserDeployment + AgentDeployment table are the backbone the new agent record reuses; only per-deployment task sub-handlers and the withDisplayStatus calls (1191/1200/1222) are old. - agent_task_bridge.go: resolveResourceBindingIntoGrant is reused for env assembly. - AgentDeployment table: KEEP and extend (subdomain/access_token/binding_ids) instead of new heicode_agent table + DropTable. Reconciled the model doc to match. - Added agent_runtime_http_smoke_test.go to the sync-fix list. Adds a §0.0 dependency/impact analysis answering: coverage, shared-feature impact, and impact on the new APIs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
12 KiB
Heicode Manager 旧 Sub 任务编排模型 — 删除清单(Teardown)
更新时间:2026-06-03 背景:sub 模式已切到「模板 agent + 客户端直连」新模型(见
heicode-hm-template-agent-model.md)。 本文列出要删除的旧代码 / 旧逻辑 / 旧数据 / 旧 DB 表与字段 / 旧前端,并标注共享/有依赖、需评估的部分。 图例:🗑️ 删整块 · ✂️ 改/裁剪保留 · ⚠️ 评估/待确认(有共享或外部依赖)
0.0 依赖与影响分析(已实查代码,2026-06-03)
⚠️ 结论先行:新模型「部署模板 agent」是现有部署控制面的演进,不是推倒重来。 多个文件是混合的——新模型要复用的「调 AM 客户端 / 部署记录 / 资源注入」管线,和旧任务逻辑同处一文件。只能外科式删旧分支,不能整文件删。
必须保留为骨架(新模型直接复用,删了新 API 就得重写):
agent_runtime_client.go的 AM HTTP 客户端:agentRuntimeClientConfigForMode(heicode_capabilities.go在用)、agentRuntimeURL/Headers/CreatePayload/StopPath/StatusPath、AgentRuntimeHealth→ 新StartAgent/StopAgent靠这套。agent_control_plane.go的AgentCreateUserDeployment / List / Get / Stop+AgentDeployment表 → 新 agent 记录复用/扩展它(加 subdomain/token/binding_ids 字段),不另起heicode_agent新表、不 DropTable。agent_task_bridge.go的resolveResourceBindingIntoGrant→ 改造为「拼 env」,复用资源解析。
唯一纯旧、可删的核心函数: withDisplayStatus(agent_runtime_client.go:832)。被 agent_control_plane.go 的 1191/1200/1222 调用 → 删它要同步改这三处(Get/List 不再套 display_status)。
这修正了本文档早先两处过删:
agent_runtime_client.go/agent_control_plane.go不是"删/整改",是保留骨架 + 删旧 helper。AgentDeployment表不删——它就是新 agent 记录的载体(与heicode-hm-template-agent-model.md§4 的heicode_agent二选一,建议复用 AgentDeployment 扩字段,两文档据此对齐)。
确认会被波及、需同步处理: router/agent_runtime_http_smoke_test.go(引用 tasks/deployments,删路由后编译失败 → 同步删/改)。
0. 删除原则
- 删之前先确认计费不依赖任务记录:计费走
/v1/*relay(携带用户身份),与agent_deployments无关 → 删任务表不影响计费。✅ - DB 注意:GORM
AutoMigrate只加列、不删表/列。删表用DB.Migrator().DropTable(...)(三库通用、SQLite 可 DropTable);废弃列可留着不动(无害)或Migrator().DropColumn(SQLite 早期版不支持 DropColumn,保守做法是留列只停写)。 - 删除分两步走:先摘路由 + 删 handler(接口立即下线),再清 model/表 + 前端。
- 保护项(CLAUDE.md Rule 5):
new-api/QuantumNous任何标识不动。
1. 后端路由(heicode/router/api-router.go)
| 标记 | 位置 | 内容 |
|---|---|---|
| 🗑️ | registerHeicodeTaskRoutes(约 530–567 行)整个函数 + heicodeSubAgileRoute/heicodeSwarmRoute 两组注册 |
/api/heicode/{sub-agile,swarm}/tasks/* 全套(create/list/detail/messages/execute/stop/workflow/logs/events/metrics/diagnostics/artifacts*/approvals*/deployments) |
| 🗑️ | GET /heicode/deployment-targets(约 67 行) |
HeicodeDeploymentTargets |
| ✂️ | agentApprovalRoute 下 /user/deployments*(约 510–523 行) |
拆分:核心 GET 列表 / GET 详情 / POST 创建 / stop(AgentList/Get/Create/StopUserDeployment)→ 新模型复用(可保留或新增 /api/heicode/agents 走同一 handler);旧任务子接口 logs/metrics/events/artifacts/timeline/sk-snapshots/deployment-draft → 🗑️ 删 |
| ✂️ | apiRouter.POST("/agent/callbacks/runtime-events")(62–63 行) |
保留路由,但 handler 收缩为只收 agent 生命周期(见 §3) |
新模型新增的
/api/heicode/agent-templates、/api/heicode/agents*见 model 文档 §4,不在本删除文档范围。
2. 后端 Controller
整文件删除 🗑️(均为旧 sub 任务编排专属)
| 文件 | 内容 |
|---|---|
controller/heicode_task_create.go |
HeicodeCreateSubAgileTask/ListSubAgileTasks/CreateSwarmTask/ListSwarmTasks/HeicodeTaskMessage/HeicodeTaskExecute/HeicodeDeleteTask/consumeActiveRevision |
controller/heicode_client_routes.go |
HeicodeTaskWorkflow、HeicodeListTaskApprovals |
controller/heicode_project_artifacts.go |
HeicodeListTaskArtifacts/HeicodeArtifactManifest/Archive/File/Revisions |
controller/heicode_artifact_edits.go |
HeicodeArtifactLocalEdit(local-edits/revision 回传) |
controller/heicode_cloud_deploy.go |
HeicodeCreateDeployment/HeicodeListDeployments/HeicodeDeploymentTargets(旧代部署控制面) |
对应 *_test.go |
agent_deliverable_secret_test.go 等针对上述逻辑的测试 |
保留骨架 + 外科式删旧分支 ✂️(详见 §0.0;这些是新模型复用的底座,不可整删)
| 文件 | 保留(新模型复用) | 删/改的旧分支 |
|---|---|---|
controller/agent_runtime_client.go |
AM HTTP 客户端全套:agentRuntimeClientConfigForMode(capabilities 在用)/agentRuntimeURL/Headers/CreatePayload/StopPath/StatusPath/AgentRuntimeHealth |
删 withDisplayStatus(832)、heicodeClientMode、agentRuntimeArtifactContentPathForRecord、agentRuntimeBudgetPayload;agentRuntimeRequest{Agents,SwarmAgents,ResourceGrants} 改造为模板 env 注入 |
controller/agent_control_plane.go |
AgentCreateUserDeployment/List/Get/Stop + 记录 CRUD(新 agent 部署/列/停复用) |
删 per-deployment 的 logs/metrics/diagnostics/events/artifacts/timeline/sk-snapshots/deployment-draft 子 handler;改 1191/1200/1222 三处去掉 withDisplayStatus 调用;删 agentDeploymentRecord.Mode/display_status 投影 |
controller/agent_task_bridge.go |
resolveResourceBindingIntoGrant(资源绑定→真值解析,新模型拼 env 复用) |
normalizeTaskDraftResourceGrants/buildAgentDraftAgentPlan/AgentCreateTaskDeploymentDraft 由"任务 grant"改造为"启动拼 env(非密+解 KV)" |
controller/agent_callback.go |
回调接收骨架 | 收缩为只收 agent 生命周期(started/stopped/unhealthy),删 work 事件流/artifact/phase 聚合与 AgentArtifact 写入 |
router/agent_runtime_http_smoke_test.go |
— | 引用 tasks/deployments,删路由后编译失败 → 同步删/改 |
评估 ⚠️
| 文件 | 说明 |
|---|---|
controller/agent_approval.go |
审批:新模型审批在 agent↔客户端直接处理。若网页台/其它流程不再需要 → 删;待你确认 |
controller/agent_role_template.go |
角色模板:新模型「模板 agent」可能复用此概念 → 可能保留/改造,不要直接删 |
3. 后端 Model + DB 表/字段(heicode/model/)
删表 🗑️(从 model/main.go 的 AutoMigrate 列表移除 + Migrator().DropTable)
| Model / 表 | 文件 | 处理 |
|---|---|---|
AgentArtifact / agent_artifacts |
agent_artifact.go |
删(产物记录,旧模型) |
AgentArtifactRevision / agent_artifact_revisions |
agent_artifact_revision.go |
删(含 LatestAcceptedRevisionForDeployment) |
AgentCloudDeployment |
agent_cloud_deployment.go |
删(旧代部署) |
AgentSKSnapshot |
agent_sk_snapshot.go |
⚠️ 评估(SK 快照是否其它处用) |
AgentCallbackEvent |
agent_callback.go(model) |
✂️ 裁剪:若回调收缩,事件表可瘦身或保留生命周期事件 |
保留并扩展 ✅(修正:不删)
| Model / 表 | 文件 | 处理 |
|---|---|---|
AgentDeployment / agent_deployments |
agent_deployment.go |
✅ 保留作新 agent 记录的载体:扩字段 subdomain/access_token/binding_ids(JSON);停写旧任务态字段(SubMode/Phase/PlanJSON/AgentInstancesJSON/PayloadJSON 等,留列不动)。与 model 文档 §4 的 heicode_agent 二选一——建议复用本表,避免删重写。不 DropTable。 |
model/main.go 改动 ✂️
- 从 294 行起的
AutoMigrate(...)列表移除:&AgentArtifact{}、&AgentArtifactRevision{}、&AgentCloudDeployment{}(及评估后的AgentSKSnapshot/AgentDeployment)。 - 396 行起的 idempotent-migrate 列表同步移除对应项。
- ⚠️ 注意保留第 291 行附近的 agnet→agent 改名保数逻辑(历史数据保护,别误删)。
废弃字段(留列只停写,或 DropColumn)✂️
AgentDeployment上的:SubMode/Phase/RuntimeState/RuntimeSwarmID/PlanJSON/AgentInstancesJSON/PermissionManifestJSON/PayloadJSON等任务态字段——若AgentDeployment整表保留作它用则停写这些列;整表删则随表去。
4. 前端(heicode/web/default/src/)
删路由/页面 🗑️
| 路径 | 内容 |
|---|---|
routes/_authenticated/deployments/index.tsx |
部署列表页 |
routes/_authenticated/tasks/$id.tsx + routes/_authenticated/tasks/ |
任务详情页 |
features/agent-console/{api.ts,pages.tsx} |
旧任务/部署控制台(AgentDeploymentsPage/RunDetailPanel 等) |
features/tasks/task-card-view.tsx |
任务卡片视图 |
features/agent-hub/index.tsx |
⚠️ 评估(是否并入新 agent 管理页) |
features/models/components/deployments-{columns,table}.tsx |
⚠️ 评估(models 页里的 deployments 表,确认是否旧任务) |
改 ✂️
hooks/use-sidebar-data.ts/use-sidebar-config.ts/use-top-nav-links.ts:删「任务/部署」菜单项,加「Agent 管理」入口。features/dashboard/components/cockpit/index.tsx:listAgentDeployments改为新GET /api/heicode/agents(看板统计用 agent 数)。components/layout/components/footer.tsx、config/system-settings.config.ts、lib/heicode-mcp.ts:清掉对 deployments/tasks 的引用链接。routeTree.gen.ts:删页面后bun run build自动重新生成(勿手改)。
i18n ✂️
- 删
web/default/src/i18n/locales/{zh,en,...}.json里仅任务/部署/产物页用到的 key(删完跑bun run i18n:sync校验,避免悬空 key)。
5. 删除顺序(安全推进)
- 摘路由:注释/删除 §1 的路由注册 →
go build通过(接口立即 404 下线)。 - 删 controller 整文件 + 裁剪共享文件(§2)→
go build修引用直到通过。 - 前端删页面 + 改菜单/看板(§4)→
bun run build(重生成 routeTree)+tsc -b清noUnusedLocals。 - model 停写 + 移出 AutoMigrate(§3)→
go build+ 本地起服务跑 AutoMigrate 不报错。 - DropTable 旧表(确认数据无用后,单独一步,可灰度)。
- 全量回归:登录、绑资源、
/v1/*模型调用、(新模型)部署 agent 列表——确认未被误伤。
6. 验证清单
go build ./...与现有*_test.go通过(删测试同步)。bun run build+tsc -b无错;routeTree.gen.ts已重生成。- 启动服务 AutoMigrate 无报错;三库(至少本地 SQLite + 生产 PG)跑通。
- 旧路由返回 404;保留接口(资源 CRUD、
/v1/*、/api/user/self)正常。 - 生产部署后
docker image prune -f(CLAUDE.md 约定)。
7. 待你确认(删之前定)
- 审批
agent_approval.go+/approvals*:新模型是否完全不需要 HM 侧审批? AgentDeployment表:是直接删,还是先保留作 agent 记录的过渡/迁移到heicode_agent?agent_role_template.go/AgentSKSnapshot:新模型「模板 agent」是否复用,决定删还是改造。/api/agent/user/deployments*与agent_control_plane.go的共享 handler:网页台/admin 是否还在用,逐个确认再摘。