权限是怎么判的
每次工具调用按固定十步过一遍,第一个命中的就是结论;只读判定为什么是关键属性。
输入框里的模型、思考强度和权限档都是应用级设置:在主会话或侧任务里修改任意一项,所有现有会话和后续新会话都会使用新值。权限可以选择「自动」「自动编辑」或「跳过所有」,运行中的会话从下一次工具调用开始使用新模式。规格模式仍然优先:开着规格模式的会话保持在计划模式,关闭后恢复当前全局权限档。
权限档只能由输入框下拉框修改。设置页、移动端运行设置和 Klaus 自己的控制工具都不能改它;定时任务继续使用后台任务专用的显式权限覆盖。
每次工具调用按固定顺序过一遍,第一个命中的就是结论:
- 命中你配置的拒绝规则:直接挡掉。任何模式都盖不过这一条。
- 命中你配置的询问规则:强制弹卡片,即使当前是「跳过所有」。
- 工具自检认为不该做:直接挡掉。
- 目标是本次会话的计划文档:放行,因为计划模式要能写计划。
- 当前是「跳过所有」:放行。这个模式的语义就是跳过所有确认,所以只有你自己写的规则和工具自检还能拦住它。
- 敏感文件闸门:改动可执行脚本、配置劫持类路径时强制弹卡片,即使开了「自动编辑」。
- 命中你配置的允许规则:放行。
- 工具自检明确放行:放行。
- 模式基线:只读操作一律放行;计划模式下的改动动作被拒绝;自动编辑只在可写目录(会话的工作目录,加上额外声明的可写目录)内放行改动,出了这个范围照旧弹卡片。引擎还有一档「不打扰」(dontAsk:改动一律拒绝、也不弹卡片),偏好设置里没有它,只有子代理定义的 frontmatter 写 permissionMode: dontAsk 才会进到这一档。
- 都没命中:弹权限卡片问你。
所以「是否只读」是个关键属性。判定为只读的调用不会打断你,也不受计划模式限制,列清单、查状态这类操作都归在这一类。命令类工具还多一层:按子命令单独判,某个子命令被拒会盖过对整条命令的放行。