智能体执行操作前需要多频繁地停下来询问"确定吗?"完全取决于你正在做什么。LingCode 提供三种权限模式,让你能够根据风险级别匹配相应的确认要求——并在对话过程中随着风险变化随时切换。
所有智能体工具都面临同一个矛盾:每次操作都要求确认虽然安全,但令人疲惫——你最终会不假思索地点"确认",这反而比不询问更糟糕。完全跳过确认虽然效率高,但过于鲁莽——智能体只需一两轮操作就足以覆盖配置文件或执行错误的 shell 命令。关键在于,同一个会话中不同时刻适合不同的设置。在复杂任务开始时,先查看智能体计划做什么,再允许它动手,是正确的做法;而在你已经对某项任务建立了信任后,让它连续完成十个编辑而无需每次确认,才是真正高效的选择。
LingCode 通过三种命名的权限模式来解决这一问题——你可以随时切换,而不是在安装时一次性选定一个全局设置。Default 模式在执行破坏性操作前会先询问。acceptEdits 模式自动批准文件编辑,但对 shell 命令、删除操作和外部调用仍会提示确认。Plan 模式是只读的——智能体可以思考、分析和规划,但在你退出 plan 模式之前无法实际执行任何操作。
实际的切换方式是一个键盘快捷键:在聊天面板中按 Shift+Tab 可以在三种模式之间循环切换。一旦你掌握了每种模式的含义,这个手势就会变得非常流畅——当任务风险级别发生变化时,按下 Shift+Tab 即可切换。
default ——先询问,后执行在 default 模式下,智能体在执行每个破坏性操作前都会提示确认。编辑文件时会显示差异对比并等待确认;执行 shell 命令时会显示具体命令并等待确认;发起网络请求时会显示 URL 并等待确认。只读操作(读取文件、以非交互模式运行测试、查询语言服务器)不会触发提示——这些都可以自由执行。
当你还不清楚智能体接下来要做什么时,请使用 default 模式:新任务的第一轮对话、陌生的代码仓库、提示语模糊而你希望在执行前先看到计划的时候。
acceptEdits ——专注流程,适用于已知任务当你观察智能体完成了几次正确的编辑,并且在一个熟悉的任务中进入了流畅的工作状态——比如一系列相似的重构、跨多个文件应用相同的代码规范修复、逐一处理 TODO 列表——此时 default 模式"每次编辑都要确认"就会变成阻碍。切换到 acceptEdits,文件写入将直接执行而无需确认。但 shell 命令、删除操作、网络调用以及其他触及文件系统以外的工具调用,仍会提示确认。
这是日常开发中最常用的稳定模式。你专注于那些真正重要的提示(可能造成破坏的命令),同时让小的编辑顺畅流过。
acceptEdits 模式下,对受保护配置文件(.pbxproj、Info.plist、entitlements)的修改也会在写入前自动创建快照。如果 acceptEdits 批准了一个你后悔的操作,请参阅 撤销错误的 AI 编辑。
plan ——只读、仅提案在 plan 模式下,所有会修改状态的操作都在工具层被阻止。智能体可以读取文件、搜索代码库、查询符号、运行分析——它可以充分理解该做什么——但它无法写入、执行或发起调用。最终输出是一份计划:一个供你审阅的结构化变更提案。
当正确的做法还不明朗,而你希望获得智能体的分析但不想让它动手时,请使用 plan 模式。迁移工作的顺序很关键时;重构涉及你不熟悉的系统时;任何"先想清楚再动手"是正确态度的任务。
当计划看起来没问题时,退出 plan 模式(按 Shift+Tab 切换回 default 或 acceptEdits),然后让智能体执行它。
将焦点置于聊天面板,按 Shift+Tab。底部状态栏会更新显示新的模式。再次按下即可循环切换:default → acceptEdits → plan → default。
模式切换从下一轮对话起生效——当前轮次会以它开始时的模式完成。这一点很重要:如果你在工具调用过程中切换,该调用仍会在旧模式下完成。请在发送下一条消息前完成切换。
plandefaultacceptEditsplan,执行时再切换到 default插件安装的钩子(PreToolUse、UserPromptSubmit 等)无论权限模式如何都会运行。一个阻止工具调用的 PreToolUse 钩子在三种模式下都会阻止该调用;acceptEdits 无法覆盖一个说"不"的钩子。这是有意为之的设计:钩子是你(或你的项目)明确制定的策略,模式不应能够绕过它们。
因此,如果你发现某个钩子造成了阻碍,解决办法是调整钩子,而不是切换模式。
tty、deny-all 和 yolo 作为其三种权限策略。它们在概念上有所不同:CLI 的模式关注的是"在没有图形界面时如何获得用户同意",而非"智能体默认对哪些操作设置门槛"。目标相同,界面不同。