22 KiB
Heicode 功能线总问题台账(逐跳对账)
日期:2026-06-02 方法:按主要功能线做端到端「逐跳对账」——每跳核对生产者写了什么、消费者是否真消费、是否落地/占位/路由不一致。 范围:
HeiCode-Swarm、heicode-mananger、heicode-macos-release、heicode-winos-release关联:chek/2026-06-01_*(P1–P7、标准清单)、chek/2026-06-02_产品维度复审-能力覆盖度.md性质:只读代码核查 + 部分子代理追踪;标注置信度;未实跑的结论已注明需运行时确认。
0. 一句话总览
后端控制面/契约成熟,但客户端没接新统一 API、关键链路在生产默认配置下退化、回调与路由多处不一致。最致命的是:P1“假完成”修复未到达客户端、macOS 首聊大概率失败、客户端仍打已废弃的 /api/agnet/*。
⚠️ 重要 caveat:多处“Swarm 路由不存在/不匹配”是对
HeiCode-Swarm仓库默认配置核的;对接文档记录生产烟测可通,生产很可能跑另一套 Runtime(agent_management) 或 env 改了路径。这类项必须实跑确认,不能只凭读码定论。
1. 速览矩阵(每格 = 问题数)
| 功能线 | P0 | P1 | P2 | 总体 |
|---|---|---|---|---|
| F1 登录/配对/模型/对话 | 1 | 3 | 2 | 🔴 win 勉强 / mac 高危 |
| F2 Sub 敏捷全链路 | 3 | 3 | 1 | 🔴 |
| F3 蜂群(Swarm) | 2 | 3 | 1 | 🔴 |
| F4 凭证/审批/资源注入 | 0 | 3 | 3 | 🟠 |
| F5 产物生命周期 | 4 | 1 | 2 | 🔴 |
| F6 计费/用量 | 0 | 4 | 2 | 🟠 |
| F7 客户端 vs Claude Code | 0 | 2 | 3 | 🟠 |
| F8 Swarm 鲁棒性 | 0 | 2 | 1 | 🟠 |
| F9 企业驾驶舱 | 0 | 1 | 0 | 🔴 覆盖 ~15% |
图例:严重度 🔴P0 阻断 / 🟠P1 假成功·数据错 / 🟡P2 契约漂移;置信度 ⬛代码实证 / ◧子代理+抽查 / ⬜待实跑确认
2. 详细总表(一条问题一行)
| 编号 | 线 | 级 | 问题 | 用户可见现象 | 根因 | 证据(文件:行) | 修复方向 | 置信 |
|---|---|---|---|---|---|---|---|---|
| 1.1 | F1 | 🔴 | mac 客户端 anthropic preset 不走 V2 proxy、OAuth 下配对用空 JWT | mac 用户能登录但首聊直接失败 | mac/win 客户端实现分叉,mac 未对齐 V2 代理与配对 bearer | heicode-macos-release/.../providerService.ts:385-394、heicode-auth.ts:964-967,981 |
mac 对齐 win 的 proxy+encryptedFetch;或明天只放 win | ◧ |
| 1.2 | F1 | 🟠 | 登录与配对竞态(配对异步) | win 登录后立刻发消息→401 not_paired | devicePairBootstrap 非 await |
heicode-winos-release/.../heicode-auth.ts:993-999、handler.ts:534-538 |
await 配对或 UI 提示“配对中” | ⬛ |
| 1.3 | F1 | 🟠 | 邮箱密码登录 Step2 URL typo | 走该路径 100% 404(UI 已隐藏,影响低) | from-agnet vs from-agent |
heicode-auth.ts:546 vs api-router.go:88 |
改 URL | ⬛ |
| 1.4 | F1 | 🟡 | 登录后刷新模型依赖 V2 配对 | 设置页拉模型可能 401 | legacy sk 已清,未配对则签名失败 | providerService.ts:577-579 |
配对未完成时回退/提示 | ◧ |
| 1.5 | F1 | 🟡 | 默认 gpt-5.4 是否在用户 group/channel |
首聊 4xx/502,错误文案被泛化 | 模型清单与产线 channel 未保证一致 | providerPresets.json:22-26 |
上线前核对生产 channel | ⬜ |
| 1.6 | F1 | 🟡 | 时钟漂移>2min / 多实例无 Redis nonce | 偶发 V2 401 / 重放保护弱 | 诊断头未在 UI 翻译;nonce 进程内 | device_signature.go:204、nonce_store.go:15 |
UI 翻译 drift;生产配 Redis | ◧ |
| 2.1 | F2 | 🔴 | 客户端不消费 display_status |
“只给方案”的任务仍显示已完成(P1 修复对用户无效) | 客户端自算 deployment.status,全仓零引用 display_status |
heicodeTaskStore.ts:1226-1234 vs agent_runtime_client.go:788-808 |
客户端改用 display_status | ⬛ |
| 2.2 | F2 | 🔴 | 客户端代理打废弃 /api/agnet/user/* |
Sub 任务建/查/审批可能 404 | Manager 已改名 /api/agent/*,客户端未跟 |
heicode-tasks.ts:231-305 vs api-router.go:510-523 |
客户端切 /api/agent 或 unified /api/heicode/* |
⬛ |
| 2.3 | F2 | 🔴 | Swarm 缺 sub create / /status / content 路由 |
reconcile 难收敛、产物下载失败 | Manager 默认路径与 Swarm 仓库不符(生产或用别的 Runtime) | agent_runtime_client.go:100,126 vs main.py:1159-1161 |
实跑确认生产 Runtime;对齐路径 | ⬜ |
| 2.4 | F2 | 🟠 | Runtime 默认单 general 任务 |
用户选的后端/多角色被忽略 | DAG 默认关,build_task_descriptions 退化 |
swarm_runtime.py:586-600 |
开 DAG 或按 role 建任务 | ⬛ |
| 2.5 | F2 | 🟠 | 模型/billing 不受 plan 约束 | 实际用的模型≠用户/计划所选 | Agent 用容器 env(ANTHROPIC_API_KEY+env model) |
task_executor.py:31-39 |
Runtime 按 plan 注入模型/凭证 | ⬛ |
| 2.6 | F2 | 🟠 | usage 回调复用 budget.alert schema 不符 |
用量/usage 回调可能被 Manager 拒 | Runtime 发 threshold Manager 要 threshold_pct |
main.py:941 vs agent_callback.go:486 |
统一事件 schema | ◧ |
| 2.7 | F2 | 🟡 | plan 字段“写了没人读” | 功能名存实亡 | agile_context/grants/allowed_model_ids/deliverable 下游未消费 | 见 §4 各跳 | 定结构化契约并消费 | ⬛ |
| 3.1 | F3 | 🔴 | 桌面无蜂群入口 | 用户无法真正发起蜂群 | 建任务写死 sub_agile,不调蜂群 API |
heicodeTaskStore.ts:1502-1506,1690 |
客户端加蜂群入口+走 /api/heicode/swarm |
⬛ |
| 3.2 | F3 | 🔴 | 生产默认 SWARM_RUNTIME_ENABLED=false |
蜂群只落库不执行 | dispatch 被开关挡住 | agent_control_plane.go:1267-1268 |
生产开关 + 配 SWARM_RUNTIME_* | ◧ |
| 3.3 | F3 | 🟠 | DAG 默认关 | “多角色协作”退化成单 Agent | ENABLE_SUBTASK_HANDOFF=false |
swarm_runtime.py:77-83、k8s/agent-deployment-full.yaml:12 |
灰度开启并验证 | ⬛ |
| 3.4 | F3 | 🟠 | handoff.completed 缺 from_role/to_role |
handoff 完成回调可能被拒/不落库 | Runtime payload 与 Manager schema 不符 | main.py:779-786 vs agent_callback.go:478-479 |
补字段或放宽 schema | ◧ |
| 3.5 | F3 | 🟠 | capability 用 role 名、Agent 注册 general | 任务永久 pending 假死 | 能力集不匹配,队列饿死 | task_queue.py:151-156 |
能力命名对齐或回退匹配 | ◧ |
| 3.6 | F3 | 🟡 | task/handoff 不驱动 deployment 状态;UI 文案 Sub Agile 化 | 看不到任务图/编队 | 无 task graph 投影;replace(swarm→Sub Agile) |
heicodeTaskStore.ts:666 |
任务图投影 + 文案分流 | ⬛ |
| 4.1 | F4 | 🟠 | 高危操作 Manager 不阻断部署 | 高危可未审批就执行 | 创建即 accepted+dispatch,RequiresUserApproval 不参与 |
agent_control_plane.go:1067-1122 |
Manager 侧 gate pending 审批 | ⬛ |
| 4.2 | F4 | 🟠 | lease 是 lease:// 占位 |
审批“通过”但无真凭证 | 不 mint、不读 KV | agent_approval.go:213-228 |
approve 时按 secret_ref 派生短期凭证 | ⬛ |
| 4.3 | F4 | 🟠 | Agent 用全局 GIT_TOKEN,不读 grant/lease | 多用户串仓/越权、撤销无效 | 凭证走进程级 env,非 per-task lease | git_operations.py:32-33 |
Runtime 注入任务级凭证给 Agent | ⬛ |
| 4.4 | F4 | 🟡 | revoke 不同步 Runtime | 撤销后运行中仍可访问 | approve 有 sync、revoke 无 | agent_approval.go:339-349 |
revoke 推送 Runtime/作废 lease | ⬛ |
| 4.5 | F4 | 🟡 | Runtime payload 不按 status 过滤 grant | 撤销的 grant 仍可能下发 | manifest 过滤 active,payload 不过滤 | agent_runtime_client.go:302 |
统一过滤规则 | ◧ |
| 4.6 | F4 | 🟡 | 自填 azkv 引用仅验前缀 | 可能错引他人密钥(取决 KV RBAC) | 不验 vault/归属 | resource.go:170-171 |
校验归属+KV RBAC | ◧ |
| 5.1 | F5 | 🔴 | 双模型错位:真实文件 vs markdown 解析 | project_folder 常空/假 |
Runtime 写文件+元数据,Manager 按单 markdown parse | task_executor.py:529-564 vs heicode_project_artifacts.go:92-95 |
二选一:Runtime 出 markdown 或 Manager 读 files API | ◧ |
| 5.2 | F5 | 🔴 | files_modified 未聚合到顶层 |
真有代码却被判 summary/document | subtask 级字段未汇总 | main.py:683-685 |
顶层聚合 files_modified | ⬛ |
| 5.3 | F5 | 🔴 | Swarm 无 artifact content 路由 | 产物下载不通 | Manager 代理目标不存在 | agent_runtime_client.go:549-631 vs main.py |
实跑确认;Runtime 补 content 路由 | ⬜ |
| 5.4 | F5 | 🔴 | 客户端未接 unified 产物 API | 看不到项目树/只能下单文件 | 仍用 legacy 单 blob,零引用 is_project | heicode-tasks.ts:251-259 |
客户端接 manifest/files/archive | ⬛ |
| 5.5 | F5 | 🟠 | revision consume 不回 Runtime | 本地改完续跑不生效 | 只改 DB 状态,不推 Runtime | heicode_task_create.go:193-218、heicode_artifact_edits.go:169-181 |
Runtime 读取新基线 | ⬛ |
| 5.6 | F5 | 🟡 | parseMarkdownProject 无 .. 净化;冲突检测可绕过 |
潜在 zip-slip;并发覆盖 | 未消毒路径;BaseRevision=0 跳过检测 |
heicode_project_artifacts.go:216-220,367 |
路径消毒 + 强制 base hash | ⬛ |
| 5.7 | F5 | 🔴 | 云部署 pending_worker 无消费者 |
产物→上线闭环为 0 | Deploy Worker 未接 | heicode_cloud_deploy.go:14-17,123 |
接 Worker 或 UI 标“未就绪” | ⬛ |
| 6.1 | F6 | 🟠 | 蜂群直连 API key 不经 relay | 平台漏收 | Agent 用 env key 直连厂商 | task_executor.py:31-53 |
强制走网关或回写扣费 | ◧ |
| 6.2 | F6 | 🟠 | Runtime tokens_used 不触发扣费 | 用量有显示、账本无对应 consume | callback 无 DecreaseUserQuota | agent_callback.go:648-746 |
回调对账扣费 | ⬛ |
| 6.3 | F6 | 🟠 | 信任旁路可透支 | 余额可被扣成负数 | 预扣=0 仍结算,quota 无下限 | billing_session.go:281-314、user.go:927 |
结算加余额下限/拦截 | ◧ |
| 6.4 | F6 | 🟡 | Realtime 双轨扣费 | 可能多扣 | 入口预扣 + 流式 PostWss + Settle 叠加 | relay-openai.go:452-556、websocket.go:44 |
核对日志,去重 | ⬜ |
| 6.5 | F6 | 🟡 | billing_context 不参与扣费主体 | 任务模型调用可能扣错账户 | relay 用 token.UserId,不用 newapi_user_ref | agent_runtime_client.go:397 |
扣费绑定 correlation/归属 | ◧ |
| 6.6 | F6 | 🟡 | EU/X/5·8 资源费未实现;budget 不 enforce | 平台资源费收不到 | 仅创建时校验,执行中只按时长告警 | agent_control_plane.go:697-698、main.py:882-904 |
实现资源计费/硬上限 | ⬛ |
| 7.1 | F7 | 🟠 | 四档模型全映射 gpt-5.4 | 不是真 Claude,体验“变笨” | preset 写死 | providerPresets.json:22-26 |
提供真 Claude 通道 | ⬛ |
| 7.2 | F7 | 🟠 | 关闭 thinking/WebSearch/tool search/缓存 | 招牌能力没了 | 非 1P URL + proxy 路径判定关闭 | thinking.ts:104-127、WebSearchTool.ts:172-192、toolSearch.ts:299-310 |
1P 通道恢复;开 tool search | ◧ |
| 7.3 | F7 | 🟡 | 高级压缩 ant-only stub | 长会话更易钝/胀 | reactive/cached compact 被 DCE | reactiveCompact.ts、cachedMicrocompact.ts |
用真实源码替换 stub | ◧ |
| 7.4 | F7 | 🟡 | AGENTS.md 未加载 | 规则没被吃进上下文 | 不在 CLAUDE.md 发现链 | claudemd.ts |
加入发现链 | ◧ |
| 7.5 | F7 | 🟡 | 四跳延迟 + 空闲冷启动 | 桌面卡顿/重连慢 | 多跳架构 + prewarm 激进 | ws/handler.ts:736-748 |
合并连接/延长 prewarm | ◧ |
| 8.1 | F8 | 🟠 | 无原子领取/启动 reconcile | 重启后任务双跑、重复分支 | 无 Redis 锁/租约;30s orphan 重派 | task_queue.py:114,158,372、main.py:244 |
原子领取 + 启动重建 | ◧ |
| 8.2 | F8 | 🟠 | 失败重试无退避 | 重试风暴 | fail_task 立即 requeue | task_queue.py:270 |
指数退避 | ⬛ |
| 8.3 | F8 | 🟡 | checkpoint 模块未接线 | 进程级恢复不可靠 | 写了无人调用 | checkpoint_manager.py |
接线或删 | ⬛ |
| 9.1 | F9 | 🟠 | 驾驶舱指标几乎空 | 企业看到的是假/空进度 | 进度 snapshot 硬编码 0;CockpitView dead code | agent_control_plane.go:1832-1860 |
基于真实事件聚合最小指标集 | ⬛ |
2. F1 登录 / 配对 / 模型 / 对话
| # | 严重度 | 问题 | 证据 |
|---|---|---|---|
| 1.1 | 🔴 P0(mac) | macOS anthropic preset 不走 V2 proxy(直连 + sentinel key),OAuth 下配对用空 JWT → 登录成功但发不出对话 | heicode-macos-release/.../providerService.ts:385-394、heicode-auth.ts:964-967,981 |
| 1.2 | 🟠 P1(win) | 配对异步,登录后立即开聊 → not_paired 401(竞态) |
heicode-winos-release/.../heicode-auth.ts:993-999、handler.ts:534-538 |
| 1.3 | 🟠 P1 | 邮箱密码登录 Step2 URL typo:客户端 from-agnet vs Manager from-agent→404(UI 已隐藏,影响低) |
heicode-auth.ts:546 vs api-router.go:88 |
| 1.4 | 🟡 | 登录后刷新模型依赖 V2 配对,legacy sk 已清→可能 401 | providerService.ts:577-579 |
| 1.5 | 🟡 | 默认 gpt-5.4 是否在用户 group/channel 决定首聊成败;错误被泛化文案掩盖 |
providerPresets.json:22-26 |
| 1.6 | 🟡 | 时钟漂移>2min / nonce 多实例无 Redis → V2 401,UI 未专门翻译 | device_signature.go:204、nonce_store.go:15 |
Manager 侧 V2(pubkey/pair/TokenAuth/relay/诊断头)整体真落地;问题集中在客户端,且 mac/win 实现分叉。
3. F2 Sub 敏捷全链路
| # | 严重度 | 问题 | 证据 |
|---|---|---|---|
| 2.1 | 🔴 P0 | 客户端不消费 display_status,自算 deployment.status → P1“假完成”修复对用户无效,仍显示已完成 |
客户端全仓零引用 display_status;heicodeTaskStore.ts:1226-1234 vs Manager agent_runtime_client.go:788-808 |
| 2.2 | 🔴 P0 | 客户端代理仍打 /api/agnet/user/*,Manager 已改名 /api/agent/*(文档称 agnet 已 404) |
heicode-tasks.ts:231-305 vs api-router.go:510-523 |
| 2.3 | 🔴 P0(待实跑) | Manager 默认 sub create 路径 / /api/swarms/{id}/status / artifact content 在 Swarm 仓库不存在→reconcile/下载失败(生产可能用别的 Runtime) |
agent_runtime_client.go:100,126 vs main.py:1159-1161 |
| 2.4 | 🟠 P1 | Runtime 默认单 general 任务,忽略用户选的 backend/多 role |
swarm_runtime.py:586-600 |
| 2.5 | 🟠 P1 | 模型/billing 不受 plan 约束,Agent 用容器 env(ANTHROPIC_API_KEY+env model) |
task_executor.py:31-39 |
| 2.6 | 🟠 P1 | usage 回调复用 budget.alert,与 Manager schema(threshold_pct) 不符→可能被拒 |
main.py:941 vs agent_callback.go:486 |
| 2.7 | 🟡 P2 | agile_context(stage/checkpoint/acceptance)、resource_grants、allowed_model_ids、deliverable 多为“写了没人读” |
见逐跳台账 |
4. F3 蜂群(Swarm)
| # | 严重度 | 问题 | 证据 |
|---|---|---|---|
| 3.1 | 🔴 P0 | 桌面无蜂群产品入口,从不调用 /api/heicode/swarm/tasks 或 /api/swarms;建任务写死 sub_agile |
heicodeTaskStore.ts:1502-1506,1690 |
| 3.2 | 🔴 P0 | 生产默认 SWARM_RUNTIME_ENABLED=false→只落库不 dispatch |
agent_control_plane.go:1267-1268 |
| 3.3 | 🟠 P1 | DAG 默认关(ENABLE_SUBTASK_HANDOFF=false),蜂群退化为单 Agent 单任务 |
swarm_runtime.py:77-83、k8s/agent-deployment-full.yaml:12 |
| 3.4 | 🟠 P1 | handoff.completed 缺 from_role/to_role,Manager schema 必填→可能被拒/不落库 |
main.py:779-786 vs agent_callback.go:478-479 |
| 3.5 | 🟠 P1 | capability 用 role 名、Agent 注册 general → 任务永久 pending 假死 |
task_queue.py:151-156、agent/main.py 默认 capabilities |
| 3.6 | 🟡 P2 | task./handoff. 不驱动 deployment 状态;无任务图结构化展示;UI 把 swarm 文案替换成 Sub Agile | applyAgentCallbackDeploymentState、heicodeTaskStore.ts:666 |
5. F4 凭证 / 审批 / 资源注入(安全)
| # | 严重度 | 问题 | 证据 |
|---|---|---|---|
| 4.1 | 🟠 P1 | 高危操作 Manager 不阻断部署,立即 accepted+dispatch | agent_control_plane.go:1067-1122;RequiresUserApproval 仅 struct |
| 4.2 | 🟠 P1 | lease 是 lease:// 占位,不 mint 真凭证、不读 KV |
agent_approval.go:213-228 |
| 4.3 | 🟠 P1 | Agent 用全局 GIT_USERNAME/GIT_TOKEN 环境变量,不读 grant/lease/secret_ref → 串仓/越权 |
git_operations.py:32-33;agent 无 grant 读取 |
| 4.4 | 🟡 P2 | revoke lease/grant 不同步 Runtime(approve 有 sync、revoke 无)→撤销滞后 | agent_approval.go:339-349 |
| 4.5 | 🟡 P2 | Runtime payload 不按 status 过滤 grant;manifest 过滤 active(不一致) | agent_runtime_client.go:302 vs agent_control_plane.go:880 |
| 4.6 | 🟡 | 用户可自填 azkv:// 引用,仅验前缀不验 vault 归属 |
resource.go:170-171 |
6. F5 产物生命周期
| # | 严重度 | 问题 | 证据 |
|---|---|---|---|
| 5.1 | 🔴 P0 | 双模型错位:Runtime 写真实文件 + 元数据,Manager 却按“单 markdown”parse → project_folder 常空/假 |
task_executor.py:529-564 vs heicode_project_artifacts.go:92-95,176-238 |
| 5.2 | 🔴 P0 | files_modified 只在 subtask 级、未聚合到顶层 → 常判 document/summary-only → is_project:false |
main.py:683-685 |
| 5.3 | 🔴 P0(待实跑) | Swarm 无 /artifacts/{id}/content 路由,Manager 代理目标不存在 → 下载不通 |
agent_runtime_client.go:549-631 vs main.py 无 content 路由 |
| 5.4 | 🔴 P0 | 客户端未接 unified 产物 API(manifest/files/archive/local-edits),只用 legacy 单 blob | heicode-tasks.ts:251-259、客户端零引用 is_project/project_folder |
| 5.5 | 🟠 P1 | revision consume 只改 DB 状态,不推 Runtime、不合并 manifest(revision 恒=1),续跑不生效 | heicode_task_create.go:193-218、heicode_artifact_edits.go:169-181 |
| 5.6 | 🟡 P2 | parseMarkdownProject 无 .. 净化(潜在 zip-slip);冲突检测 BaseRevision=0 可绕过 |
heicode_project_artifacts.go:216-220,367 |
| 5.7 | 🔴 | 云部署 pending_worker 后无 Worker 消费 → 产物→上线闭环为 0 |
heicode_cloud_deploy.go:14-17,123 |
7. F6 计费 / 用量 / 额度
扣费在 Manager relay 真落地(PreConsume gate → 上游 usage → SettleBilling delta),按 Token 所属 user.id 扣。以下是风险点:
| # | 严重度 | 问题(多付/漏收/扣错) | 证据 |
|---|---|---|---|
| 6.1 | 🟠 P1(漏收) | 蜂群/Runtime 若用独立 API key 直连厂商、不经 relay → 不扣用户 quota | task_executor.py:31-53;callback 无 DecreaseUserQuota |
| 6.2 | 🟠 P1(漏收) | Runtime 回传 tokens_used 只入库/告警,不触发扣费 |
agent_callback.go:648-746 |
| 6.3 | 🟠 P1(多付) | 信任旁路预扣=0 但结算仍扣,quota 无下限→可透支/负数 |
billing_session.go:281-314、user.go:927 |
| 6.4 | 🟡 P1(多付) | Realtime 入口预扣 + 流式 PostWssConsumeQuota + 最终 Settle → 叠加扣费空间(需日志核) |
relay-openai.go:452-556、websocket.go:44 |
| 6.5 | 🟡 P2(扣错人) | billing_context.newapi_user_ref/correlation 不参与扣费主体映射;Runtime 服务 token 调网关会扣服务账号 |
agent_runtime_client.go:397;relay 用 token.UserId |
| 6.6 | 🟡 | Agnet 资源费(EU/X/5·8 上限)未实现;budget 仅创建时校验、执行中只按时长告警 | agent_control_plane.go:697-698、main.py:882-904 |
8. F7 客户端 vs Claude Code(体验)
| # | 严重度 | 问题 | 证据 |
|---|---|---|---|
| 7.1 | 🟠 | 四档模型全映射 gpt-5.4,非真 Sonnet/Opus/Haiku |
providerPresets.json:22-26 |
| 7.2 | 🟠 | 非 1P URL + proxy 路径关闭 thinking / WebSearch / tool search / 高级 prompt caching | thinking.ts:104-127、WebSearchTool.ts:172-192、toolSearch.ts:299-310 |
| 7.3 | 🟡 | reactive/cached compact、history snip、context collapse 等高级压缩是 ant-only stub | reactiveCompact.ts、cachedMicrocompact.ts(__stubMissing) |
| 7.4 | 🟡 | AGENTS.md 未纳入 CLAUDE.md 发现链 | claudemd.ts |
| 7.5 | 🟡 | 桌面四跳延迟 + 空闲停子进程冷启动 | ws/handler.ts:736-748 |
9. F8 Swarm 鲁棒性 / F9 企业能力
- F8:无 Redis 原子领取/租约;Orchestrator 启动无 reconcile,重启 30s 后可能把在跑任务重新入队→双跑;checkpoint 模块写了未接线;失败重试无退避。证据:
task_queue.py:114,158,372、main.py:244、checkpoint_manager.py。 - F9:项目进度/里程碑/Bug/ETA/风险/质量趋势后端聚合与前端页面基本缺失;进度 snapshot
failure_rate/avg_duration硬编码 0;CockpitViewdead code。证据:agent_control_plane.go:1832-1860。审计链路已实现。
10. 上线最关键 5 条(按“明天会不会翻车”排序)
- mac 首聊失败(F1.1) → 建议明天只放 Windows。
- 客户端不读 display_status(F2.1) → “假完成”照旧;小改、应抢修。
- 客户端打
/api/agnet/*(F2.2/F3.1) → Sub/蜂群任务从客户端可能 404;需确认 Manager 是否留别名。 - 产物链路双模型错位 + content 不通(F5.1/5.3/5.4) → “拿代码/下载工程包”这条 demo 路径可能空。
- win 配对竞态(F1.2) → 登录后稍等再开聊,或改成 await。
这 5 条里 1/2/5 是纯客户端↔Manager、可本地冒烟确认;3/4 含“生产可能用别的 Runtime”的 caveat,必须实跑。
11. 方法论说明(为什么这次更全)
- 抽样审计(顺问题翻)只看到“Manager 修了 P1”;逐跳对账(生产者↔消费者)才发现“客户端没接 = 没修”。
- 凡“写了没人读 / 校验了不使用 / 路由不一致 / 硬编码占位”均单列。
- 代码审计天花板:跨服务路由/运行时镜像差异必须实跑确认(本台账已标注 caveat 项)。
只读核查结论,证据可于对应仓库 文件:行 复核;标注“待实跑”的项需运行时验证。