来源: docs/WIRING_GAP_LEDGER.md W5 (功能接线欠债审计, 2026-07-19)。
系统性: 前端 client 建在 UI 之前 —— frontend/lib/api/endpoints.ts 89 个 wrapper 里 46 个从没被任何页面 import。
审计脚本比对: backend/api/v1 的 148 路由 vs endpoints.ts 的 apiClient 调用点 (endpoints.ts 是全前端唯一用 apiClient 的文件)。46 个 wrapper 只定义未使用。各资源只接了 list GET, create/edit/delete 表单按钮从没建 (或被删)。
未接的 46 个 (按资源):
- agents: createAgent/updateAgent/deleteAgent
- plans: createPlan/updatePlan/deletePlan/runPlan/getPlanHealth
- schedules: createSchedule/updateSchedule/deleteSchedule
- sources: createSource, storeSourceCredential/listSourceCredentials/deleteSourceCredential
- records: getRecord/deleteRecord/clearAllRecords/batchDeleteRecords
- browsers: createBrowserBinding/deleteBrowserBinding/listBrowserBindings/getWsAgentStatus/restartApi/addChromeInstance/removeChromeInstance/updateChromeInstanceConfig
- system/workers: getCeleryStats/getSystemConfig/updateSystemConfig/getWorkspaceSettings/updateWorkspaceSettings/resetWorkspaceSettings
- notifications: deleteNotificationRule
- nodes: deleteNode/getNodeEvents/getNodeStats
期望: 逐资源 triage —— 要么把按钮/表单接进对应页, 要么删 wrapper (若功能已弃)。建议从 agents/plans/schedules 起 (核心资源管理现在只读)。
待验证 (别误杀): tasks/workflows 的 SSE /events/stream 端点 apiClient 扫描测不到 (走 EventSource), 先 grep new EventSource 再判死活。
证据: 脚本比对结果 + 4 个 spot-verify (createAgent/deletePlan/dismissCorrection/rollbackSkill) grep endpoints.ts 外 0 命中。
来源: docs/WIRING_GAP_LEDGER.md W5 (功能接线欠债审计, 2026-07-19)。
系统性: 前端 client 建在 UI 之前 ——
frontend/lib/api/endpoints.ts89 个 wrapper 里 46 个从没被任何页面 import。审计脚本比对: backend/api/v1 的 148 路由 vs endpoints.ts 的 apiClient 调用点 (endpoints.ts 是全前端唯一用 apiClient 的文件)。46 个 wrapper 只定义未使用。各资源只接了 list GET, create/edit/delete 表单按钮从没建 (或被删)。
未接的 46 个 (按资源):
期望: 逐资源 triage —— 要么把按钮/表单接进对应页, 要么删 wrapper (若功能已弃)。建议从 agents/plans/schedules 起 (核心资源管理现在只读)。
待验证 (别误杀): tasks/workflows 的 SSE
/events/stream端点 apiClient 扫描测不到 (走 EventSource), 先 grepnew EventSource再判死活。证据: 脚本比对结果 + 4 个 spot-verify (createAgent/deletePlan/dismissCorrection/rollbackSkill) grep endpoints.ts 外 0 命中。