Skip to content

增加 Pixelle CLI 权限状态与危险操作确认展示 #30

Description

@ztygod

背景

Agent CLI 的信任感很大程度来自权限边界。当前本地 CLI 的 ask 模式默认 writeFile/shell/network=false/edit 会用文字询问是否允许文件修改,但这个确认只是普通 assistant notice。用户无法从界面上持续看到当前请求具备哪些权限,也无法区分文件修改、shell、网络请求等能力的风险级别。

如果后续 CLI 增加更多工具能力,缺少统一权限展示会让用户难以判断 agent 是否正在做高风险操作。

目标

让用户在执行危险操作前看到明确、统一的权限提示,并能理解当前请求允许哪些能力、不允许哪些能力。先聚焦 /edit 文件修改授权和权限状态展示,不把 shell/network approval 做成大系统。

当前问题

src/cli/local/run-local-cli.ts/edit 通过文本提示 “Type y to continue”,没有专门 approval prompt/card。WelcomeScreenStatusBar 不展示当前权限。CommandHelp 只说明 /edit <request> allow file changes,没有强调 shell/network 默认关闭。工具卡片也没有风险 badge。

参考体验

参考现代 Agent CLI 的 approval flow:危险能力有明确确认 UI,权限范围被突出展示,用户知道这次授权是一次性的还是持久的,取消后也能看到明确反馈。

改动方向

新增权限状态组件和 approval card。/edit pending 状态应进入 CLI state,由 timeline 渲染结构化确认卡片,而不是只存在 pendingEdit 变量和普通文本消息中。

可能涉及模块

  • src/cli/local/run-local-cli.ts
  • src/cli/components/chrome/WelcomeScreen.tsx
  • src/cli/components/chrome/CommandHelp.tsx
  • src/cli/components/timeline/ToolStatus.tsx
  • src/cli/state/cli-state.ts
  • src/cli/types.ts
  • src/cli/utils/theme.ts

大致实现方案

  • 新增 PermissionSummary 展示 read/write/shell/network 状态
  • 新增 ApprovalPromptCard 替代 /edit 的纯文本 notice
  • 增加 CLI event/state 表示 pending approval
  • 对 write/bash/network 类工具显示风险 badge
  • /help 文案说明 ask/edit 模式权限差异

任务清单

  • 欢迎页或状态栏展示当前默认权限
  • /edit 确认提示改成结构化 approval card
  • 明确展示本次授权范围:允许文件修改,不允许 shell/network
  • 工具卡片展示危险能力 badge
  • 更新 /help 文案说明权限模型
  • 取消授权后 timeline 有清晰反馈

验收标准

  • 用户发起 /edit 后看到专门确认卡片
  • 确认卡片明确说明会允许修改文件
  • ask 模式和 edit 模式的权限差异可见
  • shell/network 关闭状态不会被误解为可用
  • 用户取消授权后不会触发 agent run,并有清晰提示

建议标签

cli、ux、feature、security

Metadata

Metadata

Assignees

No one assigned

    Labels

    cliCLI experience and terminal interfacefeatureNew feature or capabilitysecuritySecurity and permission boundariesuxUser experience improvements

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions