Files
deepseek-harness/.agents/notes/implemented/feature/2026-07-31-gui-full-access-confirmation.zh.md
T

3.6 KiB
Raw Blame History

Agent Note: GUI Full access 风险确认

Status: implemented

English | 中文

Problem

Web 客户端切换到 danger-full-access 在两个权限面(编辑器的 Access chip 与 /permission popup 选择器)上都只需一次点击,且预设以 Title Case 机器名 Danger Full Access 展示。Full access 会减少确认步骤,允许智能体执行敏感操作、修改文件或运行外部命令,误点即在毫无刻意确认环节的情况下启用了最危险的预设。

Decision

两个权限面都把 danger-full-access 关进同一个共享的页面内 RiskConfirmation 对话框:启用按钮在用户勾选明确的风险确认复选框前保持禁用;预设以产品标签 Full access 展示;所有取消路径都不提交任何命令。

  • RiskConfirmation(ui-primitives)是受控的 Modal 组合:标题、说明、确认复选框、取消,以及 acknowledged 勾选前禁用的确认按钮。它始终是页面内对话框——Modal portal 到本文档 body,绝不打开可能落在另一块显示器上的原生或独立浏览器窗口。Modal 新增 contentClassName 座位,令警示正文在受限的移动端/横屏视口内滚动,动作行保持固定。
  • 编辑器 chip(ui-conversation 的 PermissionSelect)在 /permission 提交前拦截 Full-access 选择:confirmation/acknowledged 组件状态打开对话框,确认后经与其他选择完全相同的注入 command 通道提交 /permission danger-full-access;取消、Escape、关闭与遮罩点击均保持当前预设不变并重置复选框。会话锁定时确认自行撤销(locked/值缺席 effect),切换任务时随 key={sessionId} 重挂载而重置。文案经标准 conversation locale 座位以 access.confirm.* 键供给。
  • /permission popup(ui-permission 骑在 ui-command 外壳上)以数据而非第二套对话框实现完成把关:SelectOption 新增可选的 confirmation 载荷,popup 控制器拥有 confirming/acknowledged 状态迁移,PopupSelectView 在门控选项未决期间把选择卡换成同一个 RiskConfirmation。
  • Full access 在两个面上有意覆盖 kebab 转 Title Case 的显示变换(选项行、触发器标签;落定的命令行仍在 wire 上保留机器名);警示正文保持中英文 locale 感知。

Alternatives considered

原生/操作系统或独立窗口确认。 已拒:对话框必须留在当前 WebUI 窗口内;第二个窗口可能出现在另一块显示器上,使决策脱离其守护的页面状态。

两个面共享一个安全文案 locale namespace。 已拒:ui-permission bundle 与 ui-conversation 可独立加载,故各自在自己的 namespace 下注册同一份文案(permission.access 与 conversation 词典并立);这处重复以带说明的 jscpd:ignore 块圈护,而非跨 bundle import。

在 host/权限后端把关。 设计上即出界:本变更只涉浏览器客户端确认流;后端权限语义、默认值与更安全预设的一键行为均不变。

Consequences

进入 Full access 的每条可见 GUI 路径现在都要求刻意且知情的确认,代价是真想启用该预设的用户多一步对话框。新的选择器复用此门:popup 路径挂 confirmation 载荷、编辑器路径走 chip 的状态机,而不是各造对话框。验收:input-bar.spec.tsx 中编辑器流的四个门控用例、popup-view.spec.tsx 与 popup.spec.ts 的 popup 门、atoms.spec.tsx 的 Modal/RiskConfirmation 契约,以及组装态 access-confirmation web e2e——其 golden 钉住产品默认中文词典文案。