#config.toml
控制 Hunea 本身的行为。一般不需要做太多配置,默认值已经适合绝大部分使用情况。默认值(给出的就是默认值)和可改示例如下:
# 当两者同时存在时,项目级配置会覆盖用户级配置。
# 修改配置后需要重启 hunea 才会生效。
#
# 补充:如果工作区 `.hunea/` 下存在 `portable.marker`,会进入便携模式,
# 只读该工作区的配置/会话,不再叠加全局 `~/.config/hunea/`。
# 首次启动若全局配置目录不可用,precheck 也可能引导你创建这个标记。
[tui]
# `motion` 控制 TUI 的装饰性动画。
# - "full":启用完整动画,是默认值。
# - "reduced":关闭 entrance、toast transition、stream activity tick 与 tool marker blink;
# toast 的信息展示时限仍然保留。
motion = "full"
# `scroll_animation` 控制滚轮平滑滚动的手感档位(分帧推进 + 快速连滚加速度)。
# - "off":关闭平滑滚动,滚轮恢复固定 3 行/格的瞬时跳变,无加速度。
# - "snappy":接近瞬时,仅柔化大幅滚动。
# - "fast":快速收敛,少量动画。
# - "smooth":均衡档位,是默认值。
# - "gentle":更长的滑动。
# - "glide":最长的滑动。
# 注意:`motion = "reduced"` 时无论此项取值,滚动均为瞬时。
scroll_animation = "smooth"
# `diff_display` 控制工具活动 diff 的着色范围,以及主界面是否渲染 hunk 行。
# - "full_line":行前景 + 整行背景铺满 widget 行宽 + 行内强调,是默认值。
# - "content":只给 gutter 与有字格子上背景,行尾空白不染色;行内强调保留。
# - "text":不用任何背景或反色,Insert/Delete 仍用行级前景色,强调段仅 Bold。
# - "summary":主界面只保留 header 的 +N/−M 计数,不渲染 hunk;`ctrl+t` overlay 仍按 full_line 看完整 diff。
diff_display = "full_line"
# `command_menu_mode` 控制命令菜单(斜杠命令)的触发方式。
# - "slash":仅在输入框以 `/` 开头时内联触发斜杠命令菜单,是默认值。
# - "floating":`/` 不再触发菜单(视为普通文本),改由 `Ctrl+O` 打开悬浮命令菜单。
# - "both":两种方式同时可用,`/` 内联菜单与 `Ctrl+O` 悬浮菜单互不干扰。
command_menu_mode = "slash"
# `command_menu_rows` 控制 `Ctrl+O` 悬浮命令菜单一次显示的命令行数,
# 超出的命令可上下滚动,浮窗右侧显示滚动条。
# 取值范围 7..21,默认 7 行。
command_menu_rows = 7
# 可选值:
# `user_input_style` 控制“输入中的用户内容”和“发送后的用户消息”的展示风格。
# - "cx":当前 framed 样式。composer 与用户消息会在足够高的窗口里显示 surface frame。
# - "cc":整行着色的紧凑样式。关闭上下 surface frame,但保留整行用户消息背景。
# - "ms":最原始的旧主题。用户消息按内容范围着色,不做整行补齐,也不显示 surface frame。
user_input_style = "cx"
# `status_line` 控制输入框下方状态行中要显示的信息。
# 顺序会直接影响从左到右的显示顺序。
# 当前支持的值:
# - "git-branch":当前工作目录所在 Git 仓库的分支名
# - "current-dir":当前工作目录的短路径,home 前缀会缩写为 ~
# - "current-model":当前选择的模型,格式为 provider/model
# - "throughput":最近一次成功请求的 LLM 每秒输出 token 数,例如 139tps
# - "latency":最近一次成功请求的首 token 延迟,例如 0.53s
# - "context-used":最近一次成功请求后的上下文已用百分比,例如 Context 42% used
# - "context-remaining":最近一次成功请求后的上下文剩余百分比,例如 Context 58% left
#
# 未配置时不显示状态行;如果配置了但配置项都拿不到可以显示的内容时,
# 状态行也会保持隐藏。
# status_line = ["git-branch"]
# `status_line_2` 使用与 `status_line` 相同的数组格式,用于配置第二行状态行。
# 如果第二行与第一行配置了相同项目,第一行优先显示,第二行会自动跳过重复项。
# 未配置或显式写成 [] 时,不显示第二行。
# status_line_2 = ["current-dir"]
# `external_editor` 控制 Ctrl+G 打开的外部编辑器命令。
# 使用 TOML 数组原生表达 argv,例如:
# - ["code", "--wait"]
# - ["cursor", "--wait"]
# - ["zed", "--wait"]
# - ["subl", "-w"]
# - ["open", "-W", "-n", "-t"]
# - ["nvim"]
#
# 对于 VS Code、Cursor、Zed、Sublime Text 这类 GUI 编辑器,
# 需要显式带上“等待关闭后再返回”的参数;否则 hunea 会在编辑器刚启动时就回到 TUI。
# macOS 的 `open` 也需要同时带上 `-W` 与 `-n`。
#
# 未配置或显式写成 [] 时,会退回到自动探测模式:
# 依次尝试 VISUAL、EDITOR,以及平台常见编辑器命令。
# external_editor = ["code", "--wait"]
# `show_external_editor_helper` 控制多行草稿时是否显示
# “ctrl+g to edit in …” 这条短暂提示。
# 默认开启;如果已经熟悉 Ctrl+G 工作流,可以关闭以减少干扰。
show_external_editor_helper = true
# `copy_on_mouse_selection_release` 控制鼠标左键拖拽选区完成后,
# 是否在释放按键时自动复制选中的内容。
# 默认关闭;开启后会更接近一些终端里的“选中即复制”手感。
copy_on_mouse_selection_release = false
# `swap_enter_and_send` 控制是否交换“换行”和“发送消息”的按键语义。
# 默认关闭;开启后:
# - Enter 改为插入换行
# - Ctrl+J 与 Shift+Enter 改为发送消息
swap_enter_and_send = false
# `ctrl_c_clears_input` 控制在输入框已有草稿时,
# 单击 Ctrl+C 是否直接清空草稿。
# 默认开启;关闭后,Ctrl+C 会恢复为退出确认语义。
ctrl_c_clears_input = true
# `composer_undo_limit` 控制输入框 Ctrl+Z 可撤回的草稿快照数量。
# 仅保存在当前 TUI 进程内,不会写入会话或配置;Ctrl+Y 的 kill buffer 仍只保存最近一次 kill。
# 取值范围 1..200,默认 50。
composer_undo_limit = 50
# `message_history_limit` 控制全局 message history 最大保留条数(跨项目)。
# 具体是影响 /resend 界面的容量上限
# 取值范围 100..1000,默认 100。
message_history_limit = 100
# `esc_interrupt_presses` 控制当前对话 turn 运行中,
# 需要连续按多少次 Esc 才会中断当前 native 请求。
# 可选值为 1、2、3;默认 2。
esc_interrupt_presses = 2
# `show_esc_interrupt_hint` 控制等待行是否显示 `esc 2x to interrupt`
# 这类打断提示。默认开启。
show_esc_interrupt_hint = true
# `file_picker_popup_height` 控制 @ 聚合搜索浮窗总高度(含空行和 footer)。
# 文件与 skill 共用该浮窗;固定使用完整终端宽度,垂直方向以 @ 位置为锚点,空间不足时自动翻转。
# 取值范围 3..21,默认高度 9 行。
file_picker_popup_height = 9
# `branch_picker_list_rows` 控制对话树分支选择浮窗的可见分支行数。
# 取值范围 3..14,默认 7 行。
branch_picker_list_rows = 7
# `print_transcript_on_exit` 控制退出 TUI 后,是否把当前对话内容
# 回放打印到终端 scrollback。
# 这个功能许久没有维护,建议保持默认也就是关闭
print_transcript_on_exit = false
# `show_reasoning_content` 控制思考模型返回 reasoning / thinking 内容时,
# 是否在助手消息正文前显示这段内容。
# 默认关闭;关闭时仍会把 reasoning 输出计入等待行 tokens,并在 reasoning 流式输出期间
# 显示临时 `thinking` 状态。
# 意思是,默认是不显示思维链内容,并且 ctrl+t 界面也不会看到思考内容
# 但是 /tree 界面还是会保留显示思维链内容
show_reasoning_content = false
# `reasoning_content_display` 控制 show_reasoning_content = true 时,
# 思维链内容进入 transcript 后的默认展示状态。
# 未配置时,show_reasoning_content = true 会默认使用 `expanded`。
# `expanded-simplified` 是 `expanded` 的长内容 compact 变体:短内容完整显示;
# 长内容保留前后各 4 行,中间以 `… +N lines (ctrl + t to view transcript)` 提示,
# Ctrl+T 进入 transcript overlay 后显示完整内容。
# 可选值:`collapsed`、`expanded`、`expanded-simplified`、`snippet`。
reasoning_content_display = "collapsed"
# 控制空输入框、且当前没有流式输出时,连按两次 Esc 使用哪一种回溯,
# 以及斜杠菜单中显示 /tree 还是 /sends-back(二者不会同时出现)。
#
# 默认 coarse:
# - 双击 Esc → 按某轮用户消息编辑/重发(截断该条之后的内容,并将正文回填到输入框)
# - 菜单显示 /tree
# 配置为 entry:
# - 双击 Esc → 打开 /tree(会话节点级精确回溯 / 创建分支)
# - 菜单显示 /sends-back(保留「编辑用户消息」入口)
esc_rewind_mode = "coarse"
# `keyboard_enhancement` 控制是否启用 kitty keyboard protocol 增强键位。
# - "auto":按环境自动判断(例如 WSL 内的 VSCode 终端会禁用),是默认值。
# - "on":强制开启。
# - "off":强制关闭。
# 多数情况下保持 auto 即可;如果组合键或修饰键行为异常,可以显式关闭后再试。
keyboard_enhancement = "auto"
[runtime]
# `request_retry_attempts` 控制 runtime 请求失败后最多重试几次。
# 当前 native chat 会使用该策略。
# 可选值为 1..10;默认 3。
request_retry_attempts = 3
# `request_retry_delays` 控制每次重试前等待的秒数。
# 每个值范围为 1..1800。
# 例如 [1, 3, 5] 表示第 1 次重试前等待 1s,第 2 次等待 3s,
# 第 3 次等待 5s。列表短于 request_retry_attempts 时,会复用最后一个值补齐。
request_retry_delays = [1, 2, 3]
# `request_timeout_seconds` 控制**单次 provider HTTP 请求**的 idle timeout(秒):
# 用于限制建连等待,以及流式响应中相邻数据块之间的空闲间隔;收到数据后会重置计时。
# 它**不限制**整轮 turn 的总时长。只要响应过程中持续有数据到达,就不会仅因总耗时超过 120s 而中断。
# 超时后会进入上面的重试流程;每次重试都会重新获得完整的 idle timeout。
# 可选值为 1..7200;默认 120。
request_timeout_seconds = 120
# `tool_max_turns` 控制 agent multi-turn 工具调用轮次上限。
# 默认不限制;设置为正整数后,超过该轮次会终止本次请求。
# tool_max_turns = 32
# `allow_managed_rg` 记录是否允许 hunea 在系统 PATH 和 bundled binary
# 都不可用时,下载、校验并安装 pin 版本的 `rg`。
# 缺省表示实际需要下载时询问;true 允许下载/重建,false 禁用 managed ripgrep。
# false 时仍优先使用 PATH/bundled ripgrep;两者都不可用时使用 Rust backend。
# allow_managed_rg = true
[debug]
# `enabled` 控制是否显示仅用于本地调试 TUI 效果的斜杠命令。
# 默认关闭;开启后会显示 `/tool-debug` 等临时调试入口。
# 这个其实是一个被我忽略的功能,后续会考虑移除或者将其完善化
enabled = false快速开始里也写了我个人自用的一份精简推荐配置,见快速开始。
相关页面: