OpenHands CLI 命令速查表 - 开源自主编码代理全参数

结对编程型助手要求你逐步批准,OpenHands 想做的是另一件事:接到任务后自己规划、自己执行,把一个完整功能写出来再交给你看。这张表按启动与任务、恢复与无头、运行模式、MCP 管理、配置与安装、交互快捷键分组,讲的正是自主代理落地时最容易翻车的地方——跑崩了怎么续、无头跑怎么防止它无限循环、权限口该放到多松。判断依据是任务是否可验证:能用测试或退出码判断成败的任务适合无头批处理,需要看中间结果判断的必须留在交互模式。什么时候翻它:在 CI 里跑批量重构或修复、给仓库补一整套样板代码、或者做基准测试的自动化循环。与其它代理的差别在于它默认配了沙箱与批准策略,配置集中在 ~/.openhands/config.toml,改模型与沙箱策略只动这一处,不必每次在命令行传参。

AI 命令行·共 30 条命令·最后更新 2026-08-21
openhandsaicliagent自主代理开源

典型使用场景

面向想用自主 Agent 在真实仓库里改代码、补测试、处理 Issue 的开发者。OpenHands 与普通对话式 AI 的关键差别在于它会真的执行命令和读写文件,因此运行模式与权限控制比提示词技巧更重要:本表把「启动与任务 / 恢复与无头 / 运行模式 / MCP 管理 / 配置安装 / 交互快捷键」六组分开,其中 --always-approve 与 --headless 决定了它会不会自动动手。

启动与任务 5

openhands
启动交互式 TUI / Web(默认 3000 端口)
openhands -t "实现用户认证"
带任务直接运行(--task)
openhands -f task.txt
从文件读取任务说明
openhands --always-approve
自动批准所有操作(--yolo 同义)
openhands --llm-approve
仅自动批准 LLM 发起的操作

恢复与无头 5

openhands --resume
恢复上一个会话
openhands --resume --last
恢复最近一个会话
openhands --resume <id>
按 ID 恢复指定会话
openhands --headless -t "任务"
无头模式运行任务
openhands --headless --json
无头输出 JSON(脚本用)

运行模式(Web/ACP/Cloud) 5

openhands web
启动 Web UI
openhands serve
作为服务常驻
openhands acp
以 ACP 协议接入
openhands login
登录 OpenHands Cloud
openhands cloud -t "任务"
提交任务到云端运行

MCP 管理 5

openhands mcp list
列出 MCP 服务器
openhands mcp add tavily
添加 tavily 等 MCP 服务器
openhands mcp enable <name>
启用某 MCP 服务器
openhands mcp disable <name>
禁用某 MCP 服务器
openhands --from-issue <url>
从 Issue URL 拉取任务

配置与安装 5

uv tool install openhands --python 3.12
V1 CLI 安装(推荐)
pip install openhands-ai==0.45.0
pip 安装指定版本
docker pull openhands/runtime:0.45-cpu
拉取运行时镜像
openhands --override-with-envs
用环境变量覆盖配置
cat ~/.openhands/config.toml
查看用户级配置(core/llm/sandbox/planner)

交互快捷键 5

Ctrl+P
打开命令面板
Esc
暂停当前任务
Ctrl+Q
退出
/exit
退出会话
openhands --max-iterations 50
限制最大迭代轮次

参数矩阵

参数作用示例
-t "任务"带任务直接运行openhands -t "实现用户认证"
-f task.txt从文件读取任务说明openhands -f task.txt
--headless无头模式,不进交互界面openhands --headless -t "任务"
--headless --json无头且输出 JSON,便于脚本解析openhands --headless --json -t "任务"
--always-approve自动批准所有操作(含 yolo 同义)openhands --always-approve -t "任务"
--llm-approve仅自动批准 LLM 发起的操作openhands --llm-approve
--resume --last恢复最近一个会话openhands --resume --last
--max-iterations限制最大迭代轮次,防止失控openhands --max-iterations 50
mcp add / enable添加并启用 MCP 服务器openhands mcp add tavily
web / serve启动 Web UI / 常驻服务openhands web
--override-with-envs用环境变量覆盖配置文件openhands --override-with-envs
Ctrl+P / Esc命令面板 / 暂停当前任务交互中按 Esc 中止

易错点与避坑指南

现象Agent 修改了不该改的文件,或执行了破坏性命令。

原因使用了 --always-approve(yolo),所有操作免确认。

处置默认保留人工确认;确需自动化时改用 --headless 配合受限环境,并先设 --max-iterations 上限。

现象任务反复循环同一操作直到超出预算。

原因没有设置迭代上限,Agent 在失败路径上不断重试。

处置加 --max-iterations 50 之类上限,让它到点停下。

现象会话中断后任务上下文丢失,只能从头再来。

原因未使用会话恢复。

处置openhands --resume --last 恢复最近会话,或用 --resume <id> 指定。

现象CI 里调用一直等待输入或直接失败。

原因进入了交互模式而非无头模式。

处置用 --headless,输出接 --json 供脚本解析。

现象Agent 无法访问外部信息,任务卡在需要查证的步骤。

原因未挂载对应的 MCP 服务器。

处置openhands mcp add tavily 添加,再 mcp enable <name> 启用。

现象改动的源码没有反映到容器里,重启后又消失。

原因运行环境是隔离沙箱,宿主目录未正确挂载。

处置确认工作目录挂载配置,或改用非沙箱模式直接在本机仓库运行。

排障路径

  1. 1先无头跑一遍确认行为

    openhands --headless --json -t "为 auth 模块补测试"

    JSON 输出便于脚本消费,也避免误触发交互。

  2. 2设置迭代上限防止失控

    openhands --max-iterations 50

    循环类任务必须设上限,否则可能持续消耗资源。

  3. 3恢复中断的会话

    openhands --resume --last

    按 ID 恢复指定会话:openhands --resume <id>。

  4. 4排查配置与模型设置

    cat ~/.openhands/config.toml

    含 core / llm / sandbox / planner 四段,改动可用 --override-with-envs 用环境变量覆盖。

  5. 5查看已挂载的 MCP 服务器

    openhands mcp list

    确认需要的工具已添加并处于启用状态。

命令示例

接手半途而废的会话:先恢复最近一个

openhands --resume --last

适合「刚才那个任务还没跑完」的场景;--last 固定选最近一个会话,同时开着多个任务时容易接错,这时改用 openhands --resume 后跟会话 ID 精确恢复。

任务写进文件,避免长提示词被 shell 转义搞坏

openhands -f task.txt

与 openhands -t "实现用户认证" 等价,区别是描述不再经过 shell 解析;任务涉及换行、反引号或特殊字符时尤其该用文件方式。

无头 + JSON:CI 里的结构化结果

openhands --headless -t "task" --json

--json 让结果可被脚本解析,CI 不再依赖人类可读日志;再叠加 --max-iterations 50 给迭代轮次封顶,防止代理在流水线里无限循环。

接入 MCP:登记、启用、确认,再按需临时禁用

openhands mcp list openhands mcp add tavily openhands mcp enable tavily openhands mcp disable tavily

add 只登记不生效,enable 才挂载到会话;list 用来确认当前状态,disable 让某个服务器临时退出本机运行而无需删除再重装。

常见坑与注意事项

  • --always-approve 与 --yolo 等价:所有沙箱内操作都免确认,代理一旦误判就会直接动你的文件、装依赖或跑破坏性命令;只在干净工作区与可随时重建的环境里使用。
  • --from-issue <url> 会把外部 Issue 内容直接变成任务描述执行,等于让第三方文本驱动本机改动;执行前先确认该 Issue 链接可信,重要仓库先开分支。
  • --max-iterations 不设上限时,多步任务在无人值守环境里可能长时间空转并持续消耗 API 额度;无头与 CI 场景务必显式给一个轮次上限。
  • pip install openhands-ai==0.45.0 锁死了版本,而 docker pull openhands/runtime:0.45-cpu 的运行时镜像需与之匹配;CLI 与 runtime 版本错配会出现沙箱启动失败等难排查的问题。
  • cat ~/.openhands/config.toml 里的配置直接决定 LLM、沙箱与审批行为;带 --override-with-envs 启动时环境变量会盖过文件同名字段,改完配置「没反应」通常就是踩了这一层覆盖。

提示

  • OpenHands 定位"自主写整个 repo",比结对编程更激进;首次跑大任务先用 --resume 保留断点,崩了能续。
  • 无头批处理用 --headless --json 接流水线,配合 --max-iterations 防止 Agent 无限循环。
  • 敏感/生产任务别裸开 --always-approve,至少用 --llm-approve 或先 --headless 跑小范围验证。
  • 配置集中在 ~/.openhands/config.toml(llm/sandbox/planner),改模型与沙箱策略一次到位,不用每次传参。
  • 给 Agent 的任务描述要包含验收命令(例如必须让某条测试通过),否则它只能按「看起来完成」收尾。
  • 限制它能触及的目录范围比限制工具更有效,先在干净分支上跑,确认无异常再合并。
  • MCP 接入的外部工具同样有副作用,接入前先确认每个工具的权限范围与是否需要人工确认。

常见问题

OpenHands 停了半天的任务,怎么接着干而不重开一轮?

用 openhands --resume 回到上一个会话继续:它会把工作区状态和上下文一并接回来。想省掉挑选步骤就加 --last 直接恢复最近一个会话;手上已经有具体会话 ID 时,用 openhands --resume 后跟那个 ID 精确续接,别用 --last 免得接到不相干的旧会话上。

--always-approve 和 --llm-approve 到底差在哪,该怎么选?

--always-approve(等价 --yolo)放开全部确认:任何沙箱内的操作都不再问你,包括代理自己判断需要的那部分。--llm-approve 只对 LLM 主动发起的操作放行,范围更窄、留了一层人工闸门。日常交互开发用 --always-approve 最省心;跑在共享机器或接受外部任务(比如 --from-issue 拉来的 Issue)时,保留人工确认更安全。

无头模式跑出来的东西怎么给 CI 或脚本消费?

关键在 --json。无头执行用 openhands --headless 跑单个任务,加 --json 之后输出是可被解析的结构化结果,脚本不必去刨人类可读的日志。配套的 openhands --headless -t "任务" 用来在命令行直接给任务描述,再加 --max-iterations 50 这类上限防止代理在 CI 里跑飞。

MCP 服务器加完了为什么不生效,还要再做什么?

因为 add 和 enable 是两步。openhands mcp add tavily 只是把服务器登记进来,处于未启用状态;必须再执行 openhands mcp enable tavily 才会被挂到会话里。排查时先用 openhands mcp list 看当前清单和启用状态;如果之后要临时关掉某一个,用 openhands mcp disable 加名字,不必删掉重装。

改了 ~/.openhands/config.toml 还没生效,配置到底按什么顺序被覆盖?

用户级配置在 ~/.openhands/config.toml,按 core / llm / sandbox / planner 分块写。默认它就是最终生效值;一旦加了 --override-with-envs,环境变量会盖过文件里的同名项。排查顺序是先 cat ~/.openhands/config.toml 确认文件里写的是什么,再看启动命令有没有带 --override-with-envs——顺序搞反就会出现「文件改了没反应」的错觉。

官方参考来源

下方为命令对应的官方权威文档,供你核对最新用法与深入查阅。

由 巧匠 维护

公开更新于 2026年8月21日,内容持续校对官方文档。

联系我们

命令或描述有误?提交反馈、商务合作或产品建议都可发送邮件给我们。

联系我们