v0.4.0: 工具与审批(业务工具骨架 + Approval Card)

This commit is contained in:
Rick Ye
2026-09-05 09:47:50 +08:00
parent fe70cb0f71
commit 807fab4f20
15 changed files with 472 additions and 16 deletions
+15
View File
@@ -48,6 +48,21 @@
4. **系统提示词重建成本**——保存提示词会整体重建 runtime(重新加载扩展/skills),秒级耗时且丢当前流式状态;保存前应检查是否有进行中的回复。当前实现未拦截,记录待修。
5. **运行时重建后模型选择**——重建走 continueRecent,会话内保存的模型跟随会话;但全局默认模型(settings 持久化)与 UI 状态的同步依赖 `state` 事件,尚未覆盖"重建后 model fallback"提示(modelFallbackMessage 丢弃未展示)。排 v0.5。
## v0.4.0 — 工具与审批
**交付**:
- 业务工具骨架(`src/main/tools/demo-tools.ts`):`hotword_lookup`(演示数据源)、`price_check`(核价演示,敏感操作);接口形态对齐架构 D2(后端就绪后换实现不动接口)
- 审批链路:`ApprovalService` + `tool_call` 拦截 extension(`TOOLS_REQUIRING_APPROVAL` 名单:price_check/bash/write/edit)→ IPC `approval_request` → 渲染层 Approval Card(beautifului 风格,GSAP back.out 入场)→ `approval:resolve` 回传;120s 超时自动拒绝;窗口关闭拒绝全部未决
- 工具经 `customTools` 注入(与内置 read/bash/… 并存注册),promptSnippet/promptGuidelines 进系统提示词
- 验证:typecheck/build;Node 冒烟(customTools 注册、**手动直调 execute 成功 = D2 双模式共用能力实证**、拦截契约三名单场景:放行/拒绝 block/批准放行);应用带扩展正常启动
**自省**(v0.4.0 → 指导 v0.5+):
1. **端到端审批未实拍**——LLM 生成 tool_call → 审批卡弹出 → 拒绝后 agent 收到 block 结果的完整链路仍缺真实凭据验证(本机无 key)。拦截契约已单元级验证,剩余风险在事件时序(extension 在 AgentSession 的 tool hooks 上触发,理论覆盖所有工具)。
2. **审批名单硬编码**——应做成设置项(每个工具可配置 always/ask/never);且业务工具多了以后要按"工具元数据声明敏感级别",而非集中名单。排 v0.5。
3. **手动模式 UI 缺失**——D2 的另一半(UI 按钮直调工具)后端就绪前只能停留在代码层(smoke 已证 execute 可直调)。等 packages/agent 建立后做"手动模式面板"。
4. **工具卡片在审批等待期间无"等待审批"状态**——ToolCard 显示 running,但用户看不出是在等他确认;应联动 approval 状态显示"等待审批中"。排 v0.5。
5. **审批卡无倒计时**——120s 超时静默拒绝,卡片上应显示剩余时间。排 v0.5。
## v0.1.0 — 骨架 + 聊天链路
**交付**: