跳转到内容
Crystal CodeDocs
简简体中文

审批

每次副作用工具调用在执行前都会被分类。

维度 值
风险 Read、Write、Privileged、Forbidden
权限 Workspace、OutsideWorkspace、Network、PrivilegedEscalation
授权 Once、Session、Persistent
模式 直接放行 仍然询问
Default 工作区读取。Skills 打开时,Skills 搜索目录中的任何路径 写入、shell,以及工作区外的路径
Edit 内置 write 和 edit 的工作区更改 Shell、外部工具,以及工作区外的路径
Review 与 Edit 相同的文件更改。Skills 打开时,Skills 搜索目录 其余调用由另一个模型检查。见下
Audit 没有额外放行。工作区 write 和 edit 也会被检查 审查者与 Review 相同
Full 限制在工作区内、策略允许的动作,包括保持 Write + Workspace 的外部工具 Forbidden、Privileged、工作区外和强制提示的调用

不要把模式命名为 auto。这个词在审查和完全放行之间含糊。不带参数的 /approval 循环 Default、Edit、Review、Audit 和 Full。/approval review 以及其他名称设置一种模式并写入 config.json。旧值 autoedit、fullreview 和 full-review 仍然可以解析。

Review 和 Audit 把其余每个副作用调用交给另一个模型。这包括 bash、bash_start、bash_stop、工作区外的读取和编辑,以及外部 Write。

审查者看到有界摘录:最早和最新的用户回合、放得下的其他用户回合,然后是最近的助手和工具证据。压缩摘要代表被折叠的回合。没有这些证据时,宿主询问你。之后的用户消息细化任务。状态问题不会撤销先前的授权。通过 question 工具给出的答案算作授权。

结果 发生什么
Allow 运行工具,除非该调用是 Forbidden 或需要强制提示
Deny 变成模型可见的拒绝文本
Ask、对 Forbidden 的 allow、强制提示的 allow 回到你

审查者请求的瞬时失败按 approvalRetry 重试(默认五次)。仍然失败时询问你。Review 不是授权,也不是完全放行。

除非你打开单独的审批模型,否则审查者就是会话模型。

命令 效果
/approval model 显示 Approval model Off,或 On <provider> <model>。已保存的非默认档位追加为 · Think High
/approval model on|off 保存开关。已保存的提供商、模型和档位留在原地
/approval model <model> 选择目录中的模型,保留已保存的档位,并打开开关。<provider> <model> 跨提供商做同样的事
/approval thinking 循环该模型的档位,或按名称设置,并保存。开关关闭时也能用

模型必须存在于 providers.json。缺少凭据或未知模型会被拒绝,先前设置不变。开关打开时,Review 和 Audit 用该模型自己的凭据和已保存档位调用它。模型不提供的已保存档位回退到提供商默认值。无法关闭思考的模型上,/approval thinking 拒绝 off。

Tab 从 on、off 和目录补全 /approval model,并从该模型的档位补全 /approval thinking。/model 和工作思考档位不会改变它。压缩留在会话模型上。开关关闭时不创建单独的客户端,Review 和 Audit 跟随 /model。更改审批模型前先结束当前回合。

/status 只在开关打开时增加 Approval model 和 Approval thinking 行。/status full 列出有效的 retry 和 approvalRetry 策略。状态栏不会。

覆盖层是两列:Status、Reason、Risk、Authority。审查时还有 Outcome 和理由。

键 授权
Y、Enter 或 1 Once
S 或 2 Session
A 或 3 Always(持久)
N、Escape 或 4 Deny

持久授权存在 ~/.crystal/permissions.json。Session 和 Always 只提供给没有强制提示的普通 Workspace Read/Write 调用。OutsideWorkspace、Network、Privileged、Forbidden 和强制提示只提供 Once 和 Deny。Session 和 Always 键被忽略。

每次调用都会对照当前分类检查现有授权。它们不能绕过升级。审查者 Allow 之后,强制提示仍会询问你。审查者 Deny 则拒绝。crystal run 拒绝任何到达此提示的调用。

调用自动放行时,shell 打印 Status、Reason、Risk、Authority 和分类器摘要。审查允许还会打印 Outcome、审查者的风险和授权,以及理由。

命令 隐藏或显示
/verbose approvals 策略和授权卡片
/verbose review 审查允许卡片,包括 Outcome 和理由

除非 config.json 中对应字段为 false,否则各自保持打开。已经打印的卡片跟随各自的开关。已保存的 verboseApprovals 为 false 不再隐藏审查允许卡片。询问你时仍然使用覆盖层。

Shell 分类把 sudo、破坏性文件系统命令、管道到 shell 的下载、强制推送和凭据路径写入视为 Forbidden 或 Privileged。Forbidden 从不完全自动放行。Review 和 Audit 可以拒绝这些调用,或把它们交给你。.ssh、.gnupg 或 ~/.crystal/credentials.json 下的写入是 Forbidden。