# Reasonix 使用指南 README  ·  English  ·  规格 > 日常配置与使用。工程契约与内部实现(数据类型、registry、包结构、路线图)见 > **[规格 SPEC.md](./SPEC.md)**。 ## 目录 - [配置](#配置) - [CLI 命令参考](./CLI.zh-CN.md) - [环境变量](#环境变量) - [Serve Web 前端](#serve-web-前端) - [配置路径](./CONFIG_PATHS.zh-CN.md) - [思考语言](./REASONING_LANGUAGE.zh-CN.md) - [任务合约与暂停策略](./TASK_CONTRACT.zh-CN.md) - [自定义 OpenAI-compatible provider](#自定义-openai-compatible-provider) - [桌面端 Hooks](./DESKTOP_HOOKS.zh-CN.md) - [快捷键](#快捷键) - [权限与沙盒](#权限与沙盒) - [能力诊断](#能力诊断) - [插件(MCP)](#插件mcp) - [斜杠命令](#斜杠命令) - [@ 引用](#-引用) - [双模型协同](#双模型协同) ## 配置 优先级:**flag > `./reasonix.toml` > 用户配置文件 > 内置默认值**。从 **Reasonix v1.8.1** 开始,用户配置位于 macOS/Linux 的 `~/.reasonix/config.toml`,Windows 为 `%AppData%\reasonix\config.toml`;迁移和相关数据路径见 [配置路径](./CONFIG_PATHS.zh-CN.md)。标注为“仅用户/全局”的字段(包括 agent 轮数上限)不会被 `./reasonix.toml` 覆盖。 Provider 通过 `api_key_env` 命名密钥,真实密钥值保存在 CLI 与桌面端共用的 Reasonix 全局 `/.env`。项目 `.env`、home `.env`、继承的 shell 环境变量、旧 credentials 和系统 keyring 都不再作为 provider key 的运行时 fallback;旧凭据只作为迁移来源读取。项目 `.env` 仍会作为当前 workspace 范围内的 MCP/plugin 非 provider `${VAR}` 展开来源,但不会导入 provider key 或 Reasonix 控制变量。全局 `config.toml` 和 `.env` 的完整结构见 [配置路径](./CONFIG_PATHS.zh-CN.md)。 桌面端和 CLI 端的可见思考语言设置,见 [思考语言](./REASONING_LANGUAGE.zh-CN.md)。 桌面端 Hooks 的 JSON 配置、事件 key 和 payload 字段,见 [桌面端 Hooks](./DESKTOP_HOOKS.zh-CN.md)。 `SessionStart` hook 可通过 stdout 或 `hookSpecificOutput.additionalContext` 把插件/工作流 bootstrap 内容一次性注入下一轮真实用户输入上下文,而不是写入稳定 system prompt。 插件包可通过 `hooks/session-start-codex` 或插件根目录 `CLAUDE.md` 提供该启动上下文;Claude 风格 `.claude/settings.json` command hooks 也会按同名事件映射到 Reasonix hooks。 ```toml default_model = "deepseek-flash" # 执行器;设 [agent].planner_model 可加规划器 # language = "zh" # 界面语言;为空则按 $LANG / $REASONIX_LANG 自动检测 [ui] # shortcut_layout = "desktop" # classic|desktop;兼容旧配置 # cursor_shape = "bar" # block|underline|bar;CLI/TUI 输入光标 [agent] reasoning_language = "auto" # 可见思考过程语言:auto|zh|en # plan_mode_read_only_commands = ["gh issue view"] # 仅兼容旧配置;Plan bash 现由 Permissions 决定 # planner_model = "deepseek-pro" # 可选的低频规划器 # subagent_model = "deepseek-pro" # runAs=subagent skill 的默认模型 # subagent_models = { review = "deepseek-pro", security_review = "deepseek-pro" } # max_subagent_depth = 2 # 子代理嵌套委派深度;设为 1 可恢复旧的单层边界 # max_subagent_concurrency = 6 # 会话级子代理总并发(task/fleet/skills) # max_parallel_writers = 3 # 互不重叠 write_paths 时的并行写入上限 tool_result_snip_ratio = 0.6 # 在摘要 compaction 前先缩短旧工具输出 [[providers]] name = "deepseek-flash" kind = "openai" base_url = "https://api.deepseek.com" model = "deepseek-v4-flash" api_key_env = "DEEPSEEK_API_KEY" # 还有预设:deepseek-pro [tools] enabled = [] # 省略/为空 = 全部内置工具 bash_timeout_seconds = 120 # 前台安全上限;设为 0 表示不设工具层超时 mcp_call_timeout_seconds = 300 # MCP 调用默认安全上限;可用 plugin/tool 覆盖 [environment] enabled = true # 启动时把 OS、shell 和常见工具摘要稳定注入 prompt # [environment.tools] # go = "/opt/homebrew/bin/go" # 可选:显式可信路径;workspace 内路径不会在启动时自动执行 [skills] # paths = ["~/my-skills", "../shared/skills"] # 额外的自定义技能目录 # excluded_paths = ["~/.agents/skills"] # 隐藏约定来源,不删除目录 # disabled_skills = ["review"] # 隐藏技能,直到 /skill enable [permissions] mode = "ask" # 无规则命中时 writer 的兜底:ask|allow|deny deny = ["Bash(rm -rf*)", "Bash(git push*)"] # 任何模式下都硬阻断 allow = ["Bash(go test:*)"] # 从不询问 [sandbox] # workspace_root = "" # 文件写工具被限制在此目录;留空 = 当前目录 # allow_write = ["/tmp"] # write_file/edit_file/multi_edit/move_file 额外可写的目录 # forbid_read = ["${HOME}/.ssh"] # agent 不可读取或列出的路径 [serve] auth_mode = "none" # none|token|password;绑定到非 localhost 前请先开启认证 # token = "" # 可选固定 token;token 模式为空时启动时自动生成 # password_hash = "" # 用 reasonix serve --hash-password --password '...' 生成 # behind_proxy = false # 只在可信反向代理后方设为 true [[plugins]] name = "example" command = "reasonix-plugin-example" call_timeout_seconds = 600 # 可选:单个 MCP server 的调用超时 tool_timeout_seconds = { "generate_video" = 1800 } # 可选:raw MCP tool 名称 ``` 完整 schema 与每个字段的契约见 [`SPEC.md` §5](./SPEC.md#5-configuration-toml)。 已安装或由项目配置声明的 MCP server 不需要逐工具信任名单。独立双模型 Planner 可使用所有 非 destructive 工具,即使 server 没有声明 `readOnlyHint`;严格只读 subagent 仍要求 `readOnlyHint: true` 且无 `destructiveHint`。 `[agent].plan_mode_read_only_commands` 也继续参与配置 round-trip,但主 Plan 工作流不再维护独立的 bash allowlist 或信任提示。Plan 与常规模式使用相同的 Permissions 规则做 bash 分类和审批;Sandbox 仍是文件系统、进程和网络的强制边界。独立 planner 和显式只读 subagent runner 继续使用自己的严格 只读工具 registry 与前台命令分类器。 ### 环境变量 多数日常设置应写在 `config.toml` 或前文提到的 Reasonix 全局 `.env` 中。下面这些变量是进程级高级开关; 需要在启动 Reasonix 之前设置。项目 `.env` 不是 Reasonix 控制变量的运行时来源。 ## Serve Web 前端 `reasonix serve` 会用同一个本地 Reasonix 引擎启动浏览器 UI。适合不安装桌面端但想用可视化界面、 在远程开发机上通过 tunnel 使用,或把当前会话临时共享给浏览器查看的场景。 ```bash cd your-project reasonix serve # 打开 http://127.0.0.1:8787 ``` 默认监听 `127.0.0.1:8787`,认证模式是 `auth_mode = "none"`。这个默认值只适合本机使用。 如果要绑定到非 loopback 地址、通过 tunnel 暴露,或放到反向代理后面,请先开启认证再分享 URL: ```bash reasonix serve --auth token reasonix serve --addr 0.0.0.0:8787 --auth token reasonix serve --auth password --password 'temporary-password' ``` Token 模式会在终端打印带 `?token=...` 的分享链接;可通过 `--token` 或 `[serve].token` 复用固定 token。Password 模式必须在启动时传 `--password`,或在配置里保存 bcrypt hash: ```bash reasonix serve --hash-password --password 'strong-password' # /config.toml [serve] auth_mode = "password" # none|token|password password_hash = "$2a$12$..." behind_proxy = true # 仅可信反向代理后方使用 ``` Web UI 提供聊天、工具审批、会话历史、rewind/fork/summarize、模型与 reasoning effort 控件、 Goal、由 `todo_write` 工具驱动的实时 Todo 面板,以及已配置 provider 的余额显示。临时启动可用 `--model`、`--max-steps` 或 `--resume`;不传 `--model` 时,`serve` 使用用户全局 `default_model`。 ## 通过 ACP 接入编辑器 `reasonix acp` 把 Reasonix 作为 ACP v1 stdio agent 提供给编辑器和其他 host 客户端。 独立的 **[ACP 编辑器接入](./ACP.zh-CN.md)** 文档集中说明启动方式、能力协商、会话生命周期、 彼此独立的模型/工作/协作/审批控制轴、客户端文件与 terminal 能力、MCP server、权限请求, 以及 Reasonix 的回合中引导扩展。 ## 远程 SSH 远程模块让 Reasonix 在远端主机上运行,并通过你自己的 SSH 连接访问它 —— 即 VS Code Remote-SSH 式的体验。它在远端主机上引导一个常驻的 headless `reasonix serve`,把本地一个 回环端口转发过去,再经隧道打开现有的 serve Web 客户端。agent、工具与文件全部原生运行在远端 主机上,保真度 100%,不经过有损的文件代理。V1 支持 Linux 与 macOS 远端主机。 主机保存在 `config.toml` 的用户级 `[remote]` 段。与 `[secrets]` 一样,项目级 `reasonix.toml` 无法注入或覆盖远程主机 —— 克隆的仓库永远无法左右 Reasonix 向何处发起 SSH 连接。凭据沿用 provider 惯例:主机只记录环境变量名(`passphrase_env`、`password_env`),其值 存放在 Reasonix 全局 `.env` 中;私钥内容本身从不存储 —— `identity_file` 只是路径。 ```toml [remote] [[remote.hosts]] name = "gpu-box" host = "203.0.113.7" user = "dev" identity_file = "~/.ssh/id_ed25519" workspace = "~/projects/app" serve_install = "auto" # auto | npm | upload | never [[remote.hosts.forwards]] type = "local" # local (-L) | remote (-R) bind = "127.0.0.1:5432" target = "127.0.0.1:5432" ``` 命令行: ```bash reasonix remote add gpu-box dev@203.0.113.7 --workspace '~/projects/app' reasonix remote import --all # 导入别名;连接时通过 ssh -G 解析 Include/Match 等规则 reasonix remote test gpu-box # 拨号 + 认证 + 主机密钥确认 reasonix remote connect gpu-box --open # 引导 serve、建隧道、打开 URL reasonix remote serve status gpu-box reasonix remote fs ls gpu-box:'~/projects/app' ``` 启用 `use_ssh_config` 的主机会通过本机 OpenSSH `ssh -G` 获取最终有效配置,因此支持 `Include`、通配 `Host`、`Match`(包括 `Match exec`)、多个 `IdentityFile`、`ProxyJump` 和 `IdentitiesOnly`。导入时只保存原始别名,不复制一份容易过期的解析结果。 `connect` 是前台守护(相当于 `ssh -N` 加上 serve 引导):它保持隧道与已配置的转发存活,断线时 以指数退避自动重连,并在重连后重新挂载转发。Ctrl-C 只断开本地一侧 —— 远端 serve 继续运行, 下次 `connect` 会复用它。V1 无后台守护进程。 主机密钥会对照你的 OpenSSH `~/.ssh/known_hosts`(只读)以及 Reasonix 托管的 `~/.reasonix/remote/known_hosts` 校验。首次见到的密钥会提示 TOFU 确认并记入托管文件;与已记录 密钥冲突的密钥会硬失败并指明出错的行,绝不自动接受。 远端侧状态位于远端主机的 `~/.reasonix/remote/`:`serve-<工作区 slug>.json`(pid、绑定的回环 地址、工作区)、`serve-.token`(0600;认证 token,经 `--token-file` 传给 serve,因此不会 出现在 `ps` 中)、`serve-.log`。 在桌面端,于 **设置 -> 远程 SSH** 管理主机,再通过状态栏徽标或主机行的 **远程浏览器** 按钮经 SFTP 浏览与编辑文件、管理端口转发、启动/打开远程工作区。打开工作区时会创建一个类似 VS Code Remote SSH 的独立 Reasonix 原生窗口。主窗口持有 SSH 隧道;远程窗口是隔离的轻量外壳,不会恢复 或抢占本地对话会话。 ## 自定义 OpenAI-compatible provider 在桌面端打开 **设置 -> 模型 -> 接入 -> 添加模型服务 -> 自定义供应商**,用于接入代理、 聚合平台或自建 OpenAI-compatible chat API / Anthropic-compatible Messages API 服务。 常用服务优先使用 **添加模型服务 -> 推荐预设**。Reasonix 可以预填可编辑的自定义 provider: Kimi CN、Kimi Global、Kimi Coding Plan、MiMo API、MiMo Anthropic、MiMo Token Plan CN/SGP/AMS 及其 Anthropic-compatible 变体、MiniMax CN/Global API、MiniMax CN/Global Anthropic、GLM CN、Z.AI Global、GLM/Z.AI Coding Plan 的 OpenAI-compatible 与 Anthropic-compatible 端点、OpenCode Go、OpenCode Go Anthropic、OpenCode Zen Anthropic、Qwen/DashScope CN/Global、Qwen Coding Plan CN/Global 的 OpenAI-compatible 与 Anthropic-compatible 端点、StepFun OpenAI-compatible 与 Anthropic-compatible 端点、NovitaAI、GMI Cloud、Vercel AI Gateway、HuggingFace Router、NVIDIA NIM、KiloCode 和 Ollama Cloud。Plan 表示 访问/付费形态;只有服务商确实提供不同区域端点时,预设名才同时带 CN/Global。 因此 Kimi Coding Plan 是独立 plan 端点,Kimi 直连 API 才拆成 CN 和 Global。 预设路径通常只需要填写服务商 API Key:真实 key 会写入 Reasonix home `.env`, `config.toml` 只保存端点、模型列表、key 环境变量名、上下文窗口、视觉模型元数据、 中国区端点直连、MiniMax `reasoning_split`、GLM/MiniMax thinking heuristic、 Anthropic-compatible 网关需要的 Bearer 认证、Ollama Cloud max-effort 支持, 以及 OpenCode Go 的每模型 reasoning 覆盖。添加后仍然可以打开 provider 卡片, 继续修改模型、请求头、端点或兼容设置。 **API 地址** 填写服务端点。默认模式下,Reasonix 会预览并把聊天请求发送到: ```text /chat/completions ``` 如果服务商给的是完整请求 URL,例如 `https://gateway.example.com/v1/chat/completions`, 开启 **完整 URL**。开启后 Reasonix 会直接使用该地址,不再追加 `/chat/completions`。 输入框下方的预览就是最终请求地址。 模型发现会基于 API 地址尝试 `/models`、`/v1/models` 等候选地址。如果网关要求单独的 模型列表端点,在 **兼容设置** 中填写 `models_url`,例如 `https://gateway.example.com/v1/models`。如果接口不支持模型发现,也可以手动填写模型列表。 **完整 URL** 仍使用 OpenAI-compatible chat 请求体;它不会切换成 OpenAI Responses API 的请求 schema。 ### 兼容设置 **兼容设置(通常不用改)** 用于处理认证变量、模型发现地址、请求头、以及 reasoning/thinking 请求格式和普通 OpenAI-compatible 默认行为不一致的网关。除非服务商文档明确要求,或代理报错说明 不兼容,否则保持默认值即可。Kimi Coding Plan、MiniMax CN/Global Anthropic 这类 Anthropic-compatible 服务, 保存前在基础区域把接入协议切到 **Anthropic-compatible**。 | 字段 | 作用 | 什么时候改 | | --- | --- | --- | | `api_key_env` | 该 provider 使用的 API key 环境变量名。桌面端保存的真实 key 会写入 Reasonix home `.env` 的同名变量;TOML 配置里只保存变量名。 | 多个 provider 需要不同 key 时改名;服务不需要 API key 时可以留空。 | | `models_url` | 只用于自动发现模型列表的 URL。聊天请求仍使用上方的 API 地址或完整 URL。 | `/models` 或 `/v1/models` 不是该网关模型列表地址时填写。 | | 额外请求头 | 静态 HTTP header,一行一个 `Header: value`。 | OpenRouter 等网关要求 `HTTP-Referer`、`X-Title` 或类似站点来源 header 时使用。API key 仍放在上方密钥字段,不要重复写到这里。 | | 额外请求体 | 合并到聊天请求体顶层的 JSON 对象。 | 仅用于服务商专用开关,例如 `{"enable_thinking": true}`。`model`、`messages`、`tools`、`stream`、`thinking` 等核心字段仍由 Reasonix 控制,且不接受 `null` 值。 | | Authorization: Bearer | 对 Anthropic-compatible provider,把已保存的 API key 用 `Authorization: Bearer ` 发送,而不是 `x-api-key`。 | MiniMax Global、Vercel AI Gateway 等网关文档明确要求 Bearer 认证时开启。 | | 模型能力模式 | 指定 Reasonix 对该 provider 使用哪种 reasoning 请求协议。 | 默认用“自动识别”。只有网关被误判,或模型文档要求特定 reasoning 格式时再切换。 | | Thinking 覆盖 | provider 专用的 `thinking.type` 覆盖项。 | 默认用 Auto。只有后端文档明确支持 `enabled`、`disabled` 或 `adaptive` 时再手动指定;不支持的值可能让中转站拒绝请求。 | | 余额查询 URL | 可选的钱包余额查询接口。 | 服务商提供余额接口,且希望桌面端状态栏显示余额时填写。 | | 上下文窗口 | Reasonix 用于自动清理上下文的 provider 级 token 预算。`0` 表示禁用自动 compaction。 | 按该 provider 的模型上下文上限填写;所选模型规格不同时使用下方的逐模型覆盖。 | 每个已选模型还提供一个可选的 **上下文窗口** 输入框。留空时继承 provider 级设置;填写正整数时只覆盖该模型。这样,同一端点下的长上下文模型不会过早 compaction,短上下文模型也不会在 Reasonix 清理前被服务端拒绝。 这里应填写模型文档标注的上下文窗口,而不是最大输出 token。例如 128K 通常填 `128000`;如果服务商明确标注 `131072`,则按该精确值填写。小于 16384 时界面会 显示非阻断警告,因为过小的窗口可能导致频繁 compaction 并降低缓存命中率。 模型能力模式选项: | 选项 | 作用 | | --- | --- | | 自动识别(推荐) | Reasonix 根据模型能力元数据和端点自动选择请求格式。 | | DeepSeek 思考 | 使用 DeepSeek 风格的 thinking 控制,包括 `thinking.type` 和 DeepSeek 支持的推理深度。 | | OpenAI reasoning | 使用标准 OpenAI-compatible 的 `reasoning_effort` 档位。 | | 普通聊天(不发送思考参数) | 不发送 reasoning 或 thinking 控制字段。适合会拒绝 reasoning 参数的普通文本代理。 | Thinking 覆盖选项: | 选项 | 作用 | | --- | --- | | Auto(使用服务默认) | 不写 provider 级 `thinking` 覆盖,让 Reasonix 使用 provider/model 默认行为。 | | Enabled(开启) | 对兼容 provider 发送 `thinking.type = "enabled"`。 | | Disabled(关闭) | 对兼容 provider 发送 `thinking.type = "disabled"`。DeepSeek 风格 provider 下还会避免继续发送推理深度提示。 | | Adaptive(自适应) | 仅在服务文档明确支持 adaptive thinking 时使用,例如 MiniMax-M3 风格端点;语义是发送或保留 `thinking.type = "adaptive"`。 | ## 快捷键 这里按使用端来写,因为用户通常是先知道“我现在在桌面端/CLI”,再找对应按键。 桌面端仍用 `Shift+Tab` 切换 Plan;CLI 则用它在 Ask、Auto、Plan 之间循环。 桌面端默认用 macOS 的 `Cmd+Y` 或 Windows/Linux 的 `Ctrl+Y` 切换 YOLO; 如果在 Windows/Linux 上改绑了 YOLO,`Ctrl+Y` 会成为输入框的标准重做兼容键。 桌面端粘贴继续走系统快捷键;CLI 则把终端原生文本粘贴和应用接管的图片粘贴拆成不同快捷键。 `[ui].shortcut_layout` 仍被接受以兼容旧配置,但下面的快捷键行为已经跨布局统一。 CLI/TUI 文本输入可通过 `[ui].cursor_shape` 设置光标形状,支持 `underline`、`block` 和 `bar`。默认值是 `bar`:位置清晰,同时不会在中英混排输入时覆盖 CJK 双宽字符。 想使用传统终端块状光标可设为 `block`,偏好更弱的下划线光标可设为 `underline`。 该设置不影响桌面端或 Web 输入框。 ### 桌面端 GUI 桌面端快捷键在 **设置 → 快捷键** 中管理。选择可配置的行后按下新的组合键,Reasonix 会为桌面端保存该绑定。 撤销、重做等标准编辑快捷键会以锁定行展示,因为 WebView 的原生文本历史依赖这些平台组合键。 如果新组合键和已有动作冲突,会拒绝保存,避免一个快捷键触发两个动作。按 `?` 或点击 topic bar 里的帮助按钮可打开快捷键帮助表;帮助表由同一份快捷键 registry 生成,因此会同步显示自定义后的绑定。 全局快捷键: | 按键或控件 | 作用 | 说明 | | --- | --- | --- | | macOS `Cmd+K`,Windows/Linux `Ctrl+K` | 打开或关闭命令面板 | 打开时会聚焦搜索框;`Esc` 关闭命令面板。 | | macOS `Cmd+,`,Windows/Linux `Ctrl+,` | 打开设置 | 在设置里的 **快捷键** 页可自定义桌面端绑定。 | | macOS `Cmd+W`,Windows/Linux `Ctrl+W` | 关闭当前顶部标签页 | 最后一个标签页仍由原有关闭保护保留。 | | `Cmd+B` / `Ctrl+B` | 显示或隐藏左侧边栏 | 和点击侧边栏开关是同一个动作。 | | `Cmd+Shift+B` / `Ctrl+Shift+B` | 展开或收起最近的 shell 输出 | 和点击折叠 shell 输出提示是同一个动作。 | | macOS `Cmd+1`-`Cmd+9`,其它平台 `Ctrl+1`-`Ctrl+9` | 跳转到侧边栏中对应编号的可见对话 | 短暂按住 `Cmd`/`Ctrl` 会显示编号标记;已有自定义快捷键占用相同按键时,自定义动作优先生效。 | | macOS `Cmd++`、`Cmd+-`、`Cmd+0`;其它平台 `Ctrl++`、`Ctrl+-`、`Ctrl+0` | 放大、缩小或重置文字大小 | 对把加号上报为 `=` 的键盘也兼容。 | | `?` | 打开键盘快捷键帮助表 | 帮助表显示当前实际生效的桌面端绑定。 | 输入框快捷键: | 按键或控件 | 作用 | 说明 | | --- | --- | --- | | `Enter` | 发送当前消息 | IME 组合输入确认不会被截获。 | | `Shift+Enter` | 插入换行 | 输入框保持焦点。 | | `Shift+Tab` | 切换 Plan 开/关 | Plan 只改变“先规划”的工作流;内置 writer 仍走当前 Ask/Auto/YOLO 与 Sandbox,MCP writer/destructive 目标在整个规划阶段保持硬阻断。 | | macOS `Cmd+Z`,Windows/Linux `Ctrl+Z` | 撤销输入框中的最近一次编辑 | 普通键入继续由 WebView 原生历史管理;Reasonix 接管的粘贴、剪切、折叠块和结构化 token 会作为完整事务恢复。 | | macOS `Cmd+Shift+Z`,Windows/Linux `Ctrl+Shift+Z` | 重做输入框中的最近一次编辑 | Windows/Linux 改绑 YOLO 后也可使用 `Ctrl+Y`。 | | `Cmd+Y` / `Ctrl+Y`(默认) | 切换 YOLO 开/关 | 关闭 YOLO 时会尽量恢复之前的 Ask/Auto 基底;当前绑定可在 **设置 → 快捷键** 查看。 | | macOS `Cmd+V`,Windows/Linux `Ctrl+V` | 粘贴剪贴板内容 | 剪贴板图片会作为附件加入;图片也可以拖进输入框。 | | 输入边界处的普通 `Up` / `Down` | 回放更旧或更新的已提交提示词 | 带修饰键的方向键和原生文本导航仍交给 textarea。 | | 运行中按 `Esc` | 取消当前 turn | 如果后端尚未开始回复,会恢复草稿。 | 菜单与控件: | 按键或控件 | 作用 | 说明 | | --- | --- | --- | | 斜杠、`@` 或 past-chat 菜单中的 `Up` / `Down` | 移动高亮项 | past-chat 搜索框使用同一套导航键。 | | 这些菜单中的 `Enter` / `Tab` | 接受高亮项 | 类似目录的条目可能继续打开下一层菜单。 | | 这些菜单中的 `Esc` | 关闭当前菜单或退出 past-chat 搜索 | 关闭后可继续正常输入。 | | Ask / Auto / YOLO 审批控件 | 直接选择工具审批姿态 | 点击操作不受快捷键规则影响。 | | 工具审批卡片 | `Left` / `Right`、`Enter`、`1`-`4`、`Esc` | 移动高亮动作、确认当前高亮、直接选择编号动作,或拒绝。默认高亮是“允许一次”。 | | 计划审批卡片 | `Left` / `Right`、`Enter`、`1`-`3`、`Esc` | 在“修改计划 / 开始执行 / 退出计划”之间移动。默认高亮是“开始执行”。 | | Plan 控件 | 切换 Plan 开/关 | 和 `Shift+Tab` 是同一个模式。 | | 协作菜单里的 Goal | 启动、查看或清除 Goal | Goal 不进入任何快捷键循环。 | ### CLI / TUI 输入框上下边线使用当前主题强调色,默认光标为细竖线。长草稿会增长到可用的最大高度; 超过后,在输入框内滚轮只滚动草稿视图,不移动插入光标,在 transcript 区域滚轮仍滚动 对话。使用 `/theme auto|light|dark` 选择背景模式,也可运行不带参数的 `/theme` 查看 命名配色,再用 `/theme