我的编程助手在每一个微小的步骤上都要请求许可
我的 AI 助手遇到了一个大问题。它并不是拒绝请求许可,而是请求许可的频率太高了。
我会给它一个简单的任务,比如读取 PDF。助手每做一步,就会请求一次批准,运行命令,然后紧接着又为下一个微小的步骤请求批准。一个任务变成了一场无休止的提示循环。
审批提示是必要的。你肯定希望本地助手在运行命令、写入文件或打开应用之前停下来。但实际工作需要很多步骤。读取 PDF 涉及检查 Python 环境、寻找转换器、运行转换器以及读取文本。
如果每一步都要请求批准,你就会停止评估风险。你会为了让这些干扰消失而开始机械地点击通过。这会训练你忽视安全系统,这比完全没有安全机制还要危险。
旧的工作流如下:
- 助手选择工具
- 策略要求确认
- 用户批准
- 工具运行
- 助手再次为下一个工具请求批准
助手忽略了用户的意图。你并不是在批准一个微小的探测动作,而是在批准完成一整个任务。
我修改了 CliGate 的工作方式。现在,一旦你在对话中批准了第一个操作,系统就会设置一个标记。这使得后续步骤可以在无需新一轮审批的情况下继续进行。助手仍然可以获取真实结果,从而保持工作。
我还增加了一个“逃生舱”:/safe。该命令可以重新开启显式确认模式。
我还修复了一个语言 Bug。当系统继续执行任务时,有时会改变提示语的语言。如果你使用的是中文,助手在下一个提示中可能会切换到英文。现在,助手会查看你的最后一条真实消息来选择正确的语言。
解决办法并不是禁用审批,而是要记住用户为什么要给予批准。
对于本地工具,请使用任务范围内的信任机制:
- 在跨越重大边界前请求批准
- 记住当前任务的审批状态
- 提供返回严格模式的方法
- 不要让系统消息改变用户意图
这就是我在 CliGate 中构建审批机制的方式。它是我的本地控制平面,用于管理 Claude Code、Codex CLI 和 Gemini CLI。
你是如何处理“审批疲劳”的?你是按每次工具调用、按每个任务,还是按每个会话进行审批?
我的编程智能体每走一小步都要征求许可
我之前一直在使用一个 AI 智能体来帮我构建项目。它写代码的能力非常出色,但它有一个致命的缺陷:每走一小步都要征求我的许可。
“我可以列出这个目录下的文件吗?”
“我可以读取 package.json 的内容吗?”
“我可以运行 npm install 吗?”
“我可以创建一个名为 utils.js 的新文件吗?”
这感觉就像雇了一个非常聪明但又胆小怕事的实习生,不敢不问就行动。这打断了我的心流。我本想沉浸在开发状态中,结果却不得不不停地点击“是”或“允许”。
问题所在:持续中断带来的摩擦感
主要问题不在于智能体做错了什么,而在于不断的干扰正在扼杀我的生产力。我本该专注于高层架构和逻辑,结果却陷入了微观管理智能体的死循环中。
为什么智能体会征求许可?
大多数 AI 智能体在设计时都遵循“人工介入”(human-in-the-loop)的理念。这是出于安全考虑。你肯定不希望智能体不小心运行了 rm -rf / 或者删除了你的整个数据库。因此,开发者会针对以下操作设置权限关卡:
- 文件系统访问(读取/写入/删除)
- 命令执行(运行 Shell 命令)
- 网络访问(进行 API 调用)
我是如何解决的
我意识到我需要找到安全与自主权之间的平衡点。以下是我的处理方法:
1. 细粒度的权限范围划分
我没有采用“全有或全无”的二元化方法,而是配置了智能体的“预授权”区域。例如,我允许它在无需询问的情况下读取 src 目录下的任何文件,但如果它要运行任何修改环境的命令,仍需征求我的许可。
2. 基于置信度的自主权
我调整了系统提示词(system prompt),告诉智能体:“如果你正在执行常规任务(如读取文件或列出目录)且置信度很高,请直接进行,无需询问。只有当你准备执行破坏性操作或对结果不确定时,才请求许可。”
3. 批量请求
与其为每一个文件请求许可,我鼓励智能体先制定计划。“我将读取这 5 个文件,然后创建一个新的组件。你批准这个计划吗?”这样一来,只需点击一次“是”,就可以涵盖多个步骤。
总结
目标并不是给智能体完全的控制权,而是减轻人类的认知负荷。通过从“微观管理”转向“宏观管理”,我将那个令人烦恼的实习生变成了一个高效的合作伙伴。