跳到正文
heng-agent v0.5.0
Esc
使用指南目录

日常使用

权限模式与规则

heng-agent 改文件、跑命令前默认都先问你。四种权限模式(手动确认 / 自动改文件 / 计划模式 / 全部放行)怎么选、怎么切,确认框的四个选项,以及用允许 / 拒绝规则把常用命令放行、把危险命令拦死。

预计用时
约 8 分钟
适用版本
v0.5.0 及以上

读文件、找文件、搜内容这类只读操作直接做;写入、修改、运行命令要不要问你,由权限模式和规则两样决定。无论哪种模式,文件读写都只能在工作目录里,越界一律拒绝。

选一种权限模式

模式 读文件、搜代码 改文件 跑命令 读网页、MCP 工具 适合
手动确认 ask(默认) 直接做 问 问 问 日常使用
自动改文件 accept-edits 直接做 直接做 问 问 信得过它改代码,命令还想把关
计划模式 plan 直接做 拒绝 拒绝 问 大改动先出计划,你批准了再动手(见下一步)
全部放行 auto 直接做 直接做 直接做 直接做 只在 CI、一次性沙箱等可信环境用

切换方式:

  • 输入框里按 Shift+Tab 循环切换,输入框边框颜色跟着变,底部状态栏最左边显示当前模式;
  • /mode plan 直接指定;
  • 启动时 heng-agent --permission-mode accept-edits;
  • 想每次启动都是某个模式,在配置里写 settings.permission_mode(/config set settings.permission_mode plan)。命令行参数优先。

大改动先用计划模式

先按 Shift+Tab 切到计划模式(或 /mode plan),再说任务。它只读代码,想清楚后交出计划(改哪些文件、怎么改、怎么验证),完整显示给你选:

计划模式交出计划。点击图片放大。 图中按 ①② 标出了正文提到的位置 截自 v0.5.0 · Windows Terminal
  1. 计划:改哪些文件、怎么改、怎么验证,完整显示。
  2. 三个选项:决定按哪种权限模式开始执行,见下表。
选项 之后
开始执行:改文件、跑命令前问我 y 切到手动确认 ask
开始执行:改文件不问,跑命令还问 a 切到自动改文件 accept-edits
继续规划 n 留在计划模式,接着说要改哪里;ESC 同样

批准后它在同一轮里接着按计划做,不用再说一遍。在编辑器里(ACP)同样弹这三个选项,模式下拉框跟着变。

在确认框里放行

需要确认时弹出确认框(改文件时带红绿对比),用 ↑↓ 选或直接按字母(中文输入法开着时字母会被输入法截走,用 ↑↓ 加 Enter):

改文件前的确认框。点击图片放大。 图中按 ①② 标出了正文提到的位置 截自 v0.5.0 · Windows Terminal
  1. 要改什么:红色是删掉的行,绿色是加上的行。
  2. 怎么答:四个选项的效果见下表。
选项 效果
这次允许 y 只放行这一次
本会话一直允许 a 这次启动期间这个工具不再问(只在这个进程的内存里,不写配置)
以后都允许 p 写成一条允许规则存进用户配置。跑命令时只放行这一条命令,比如 bash(npm test),不会一下放开所有命令
拒绝 n 不执行;ESC 也是拒绝

写成持久规则

/permissions 查看当前规则,也能直接增删:

/permissions allow bash(npm test)
/permissions deny bash(git push*)
/permissions remove bash(npm test)

规则写法是 工具名 或 工具名(匹配内容),可以用 * 通配:

  • 跑命令比的是命令本身:bash(git status*);
  • 读写文件比的是路径:write_file(src/*);
  • 读网页比的是网址:web_fetch(https://docs.python.org/*);
  • MCP 工具按名字:mcp__calc__*;只写工具名就是这个工具的所有调用。

规则存在配置文件的 permissions 段:

{ "permissions": { "allow": ["bash(npm test)"], "deny": ["bash(git push*)"] } }

记住几条硬限制

  • 拒绝规则优先于一切,auto 模式下也拒绝;plan 的只读约束也盖过允许规则。
  • 组合命令不吃允许规则:命令里有 &&、;、|、重定向、$(...) 等就照常询问,免得 bash(git status*) 放过 git status && rm -rf …。拒绝规则则对组合命令逐段检查,cd x && 危险命令 也拦得住。
  • 文件路径换写法也拦得住:拒绝 .env,./.env、E:\项目\.env 同样被拒。
  • 项目配置只能加拒绝规则:别人的仓库没法给你放开命令。
  • 读网页(web_fetch)和 MCP 外部工具除 auto 外都会先问,网址完整显示——模型可能把代码内容拼进网址带出去。
  • 项目里已有的 Claude Code 权限规则(.claude/settings.json 等)会自动翻译过来,但项目里的只采用拒绝规则;它的 defaultMode 不跟,权限模式由 heng-agent 自己定。

脚本模式(-p)里怎么放行

heng-agent -p "任务" 执行完一个任务就退出。没人可问,需要确认的操作默认都拒绝。要放行:

  • --allowed-tools:逗号分隔,写法同 /permissions;--disallowed-tools 额外禁止;
  • 或者用 --permission-mode accept-edits / auto。
终端
$ heng-agent -p "把 cart.py 的运费改成 15 元" --allowed-tools "edit_file,bash(python -m pytest*)"

做完是这样

常用的测试、构建命令写成了允许规则,不再每次都问;git push 这类不想让它碰的写成了拒绝规则,换什么模式都拦得住。/permissions 能看到这两类规则。

最后更新: