跳转至

config.toml 参考

protocol_start_with_service 默认 false;设为 true 时受管后台 service start/restart/stop 一并管理设备 MCP/A2A,直接 TUI 与 --web-only 启动也读取该开关,保存修改后需重启服务。protocol_service_port 默认 8765,可换端口或设为 0 自动分配。该开关不启用自动审批,完整连接信息与自动令牌写入私有 config.service/service.log。详见 随服务启动。

升级时自动忽略已移除的顶层 bridge_auto_approve,旧值不会启用 protocol_auto_approve,后者仍默认关闭。加载不改写原文件;通过配置编辑器保存时移除废弃字段。配置向导和 Web 校验/保存采用同一规则,其他未知字段与 TOML 语法错误仍拒绝。

源码 src/config/model.rs 定义字段与验证,src/config/loader.rs 定义加载。未知字段拒绝,保存使用私有权限与原子替换。

路径优先级:--config → 非空 NL2SH_CONFIG → 默认路径。直接 Android 默认解析后的可执行文件旁 config.toml;Termux 默认 XDG config 的 nl2sh/config.toml。字段优先级:CLI 覆盖 → 对应环境变量 → 文件 → 默认值。

也可让模型通过 nl2sh_config 查询、修改或重置当前配置;修改需确认,凭据由用户管理,当前任务不热重载。

常用设置

api_type 可选 auto/responses/chat_completions;auto 省略序列化但仍为默认。security_level 可选 strict/balanced/unsafe,execute_confirm_policy 可选 always/risk_only/never;宽松设置也不能解除强制修改或危险确认。protocol_auto_approve 是单独、默认关闭的显式协议设置,见 安全确认。

execute_user_mode 是 auto/normal/root;ui_language 是 zh_cn/en,终端及渠道审批默认中文,网站语言选择独立于此配置。预算 fast/normal/deep 与显式覆盖见 Agent。

tool_groups 的 jadx、tailcat 未设置时关闭;tool_overrides 按名覆盖。tailcat_binary_path 在 Android 默认为 /data/local/tmp/tailcat,开发主机默认为 tailcat。下方生成默认值来自开发主机,不代表平台路径完全相同。

history_log_file 相对状态目录解析;默认 Termux 使用 XDG state,显式配置路径跟随配置目录。实时输出、捕获、模型结果与日志分别设限,截断有明确标记:默认 256 KiB、1 MiB、128 KiB、每事件 256 KiB、每文件 10 MiB。

自定义 [[security_rules]] 包含 id/pattern/risk/message,只提高风险,不能清除内置规则。

全部字段与默认值

以下区域由代码导出更新;所有凭据默认空。不要在示例中放真实密钥。

授权凭据的作用域、用量、撤销与危险开关见安全确认。

字段 默认值 说明
api_key "" 主模型访问密钥,可由环境变量覆盖
ima_enabled false 启用独立只读 ima 连接器
ima_client_id "" ima Client ID,保密
ima_api_key "" ima 密钥,保密
ima_knowledge_base_id null 可选固定知识库 ID
jev_api_key "" 可选 Jev 音质模型密钥
jev_endpoint "https://api.typesafe.ai/v1/systemone" Jev System One 地址
jev_model "jev-latest" Jev 模型名称
model "openrouter/free" 主模型标识
model_context_window null 可选上下文窗口 Token 覆盖
model_max_output_tokens null 可选最大输出 Token 覆盖
endpoint "https://openrouter.ai/api/v1" Provider Base URL
proxy_enabled false 代理总开关,关闭保留字段
proxy_type "http" http/socks5/socks5h
proxy_address "" 不带协议/凭据的代理主机:端口
proxy_username "" 可选代理用户名
proxy_password "" 可选代理密码
proxy_bypass "localhost,127.0.0.1,::1" 逗号分隔的绕过主机
skipped_update_version null 忽略的更新版本
max_context_turns 16 保留完整对话轮次上限
system_prompt "" 追加到内置 Agent 提示词的系统指令;空值使用默认行为,执行安全与审批仍生效
max_agent_steps 50 单任务模型步骤上限
agent_mode "normal" fast/normal/deep 预算预设
max_tool_calls 100 单任务工具尝试上限
max_task_execution_time_secs 1800 活跃时长秒数,不含确认等待
replan_after_stalled_steps 6 停滞达到此步数要求重规划
abort_after_stalled_steps 12 停滞达到此步数终止任务
max_same_action_retries 3 同命令同结果的执行上限
hard_max_agent_steps 200 配置步骤上限,仍受系统硬限制
llm_retry_count 3 初始模型请求后的重试次数
llm_retry_base_delay_ms 500 指数退避初始毫秒数
llm_request_timeout_secs 60 模型 HTTP 请求超时秒数
execute_timeout_secs 30 普通命令超时秒数
interactive_execute_timeout_secs 0 交互命令超时,0 不限制
execute_confirm_policy "risk_only" 一般确认偏好,服从强制策略
security_level "balanced" strict/balanced/unsafe 安全偏好
protocol_start_with_service false 默认关闭;Web/TUI 与后台 service 启停时管理 MCP/A2A,重启生效
protocol_service_port 8765 Web/TUI 随服务启动 MCP/A2A 的首选端口,默认 8765;占用时选择空闲端口,0 直接自动分配
protocol_token "" 固定 MCP/A2A HTTP 令牌,32–256 个无空格可打印 ASCII 字符;空值启动时自动生成,NL2SH_PROTOCOL_TOKEN 优先覆盖
protocol_auto_approve false 默认关闭;显式自动批准设备 MCP/A2A 全部风险操作
tool_groups {} 可选组开关,jadx/tailcat 未设置时关闭
tool_overrides {} 按名覆盖组开关
tailcat_binary_path "tailcat" Tailcat 路径;Android 默认 /data/local/tmp/tailcat
execute_user_mode "auto" auto/normal/root 执行身份
enable_pty true 使用真实 PTY;关闭使用管道
ascii_symbols false 用 ASCII 标签替代 Emoji
show_buddha_ascii_art true 启动/帮助佛像装饰开关
show_train_ascii_art true 启动小火车装饰开关
ui_language "zh_cn" 终端界面和渠道审批语言,默认中文
history_log_file "nl2sh.log" JSONL 日志路径,相对状态目录
ui_live_output_max_bytes 262144 TUI 实时输出保留字节上限
tool_output_max_bytes 1048576 单流执行捕获字节上限
model_tool_output_max_bytes 131072 模型单工具结果字节上限
history_log_event_max_bytes 262144 单日志事件未编码消息字节上限
history_log_max_bytes 10485760 日志文件字节上限
security_rules [] 仅提高风险的自定义规则
approval_grants [] 分类后按工具/可信包名/风险上限匹配的授权模板;可限制到期时间与次数,Root/Critical/强确认始终排除
allow_dangerous_grants false 默认关闭;危险凭据还需显式 --allow-dangerous-grants 启动开关,强确认排除规则不变