OpenClaw Config 配置工具 v1.2.1
终端 TUI 一键配置工具,无需 GUI 环境,纯终端交互运行。
♻️ 重构
- 合并四个 extract 函数为 extractModelConfig,消除重复代码
extractPrimary/extractFallback/extractSubagentPrimary/extractSubagentFallback
统一替换为单一 extractModelConfig(raw, keys...) (primary, fallback string)
- Manager.go agents.list 块消除重复 raw[agents] 断言
- DeleteProvider 改用显式 slice 分配,避免底层数组别名问题
✨ 新功能
- 新增 FullConfig 相关类型定义
- 实现 migration.go — provider slug 规范化与兼容性修复
- 实现 migration.go — provider slug 规范化与兼容性修复
使用 any 替代 interface{}(Go 1.23 风格),所有 6 个测试通过。
- 实现 LoadFullConfig — 读取多 provider 配置并执行兼容性迁移
新增 LoadFullConfig、extractPrimary、extractFallback、extractSubagentPrimary、
extractSubagentFallback、extractNamedAgents,将 interface{} 统一替换为 any。
- 实现 SaveFullConfig、saveAllApiKeys、syncModelsJSON
多 provider 配置写回磁盘,保留无关字段,支持 agents.list upsert,
同步写入 auth-profiles.json 和 models.json。
- 重写 app.go — 4 步向导支持多 Provider 多 Agent 配置
Step 1: Provider 管理(添加/编辑,slug 校验,URL 校验)
Step 2: 主 Agent 模型选择(Primary + Fallback)
Step 3: 子 Agent 模型(同主 Agent 或单独指定)
Step 4: 命名 Agent(可选,循环添加)
最终一次性写入文件,展示兼容性修复日志
- 新增 checkProviderDeps 和 deleteProvider 函数
- Step 1 Provider 管理接入二级菜单,支持编辑/删除/返回
- Step 4 命名 Agent 管理重构为管理环,支持编辑和删除
- MultiSelect 键位提示改为中文说明
通过 WithKeyMap 传入自定义 chineseKeyMap,将 editProvider form
底部的键位提示从英文改为中文(切换选中/向上/向下/过滤/返回/确认/全选)
- 模型列表 MultiSelect 标题下方添加操作提示
在 Description 首行加入「空格/x 切换选中,↑↓ 移动,enter 确认」
帮助用户了解如何多选
- Base URL 输入自动补全 /v1 后缀
- 编辑时去掉 /v1 后缀展示,减少用户输入负担
- 保存时自动补全 /v1(幂等,已有 /v1 不重复追加)
- 更新 placeholder 和 description 提示用户无需手填 /v1
- 格式感知的 Base URL 规范化(NormalizeBaseURL)
- 新增 config.NormalizeBaseURL(rawURL, apiFormat):
- openai-* / anthropic-messages:path 为空时追加 /v1,已有 /v1 时规范化大小写,自定义路径保留
- google-generative-ai:只清理空白和末尾斜杠,不追加 /v1
- 同时规范化 scheme/host 大小写
- migration.go:删除硬编码 dmxapi.cn 修复,改用 NormalizeBaseURL 通用处理
- app.go:展示剥离格式感知(google 格式不剥除 /v1);保存改用 NormalizeBaseURL
- 新增 TestNormalizeBaseURL 表驱动测试(15 个边界案例)及 google 格式迁移测试
- Add detectFormatFromModels with tests
- 移除 API 格式手动选择器,改为根据模型列表自动检测
- Add ListAgentIDsFromDisk and filter main from extractNamedAgents
- Merge disk-discovered agents into LoadFullConfig
- Add newForm helper and unify Chinese keymap across all forms
- Remove manual named agent creation, show auto-discovered agents only
- 补全 chineseKeyMap 中文键绑定(Input/Confirm/Note)
为 Input、Confirm、Note 字段补全中文键绑定提示,
修复 Shift+Tab 在 Input 字段内无效的问题。
注:huh v0.6.0 的 KeyMap 无 Form 字段,故省略 NextGroup/PrevGroup。
- RunStep2MainAgent 改为 (bool, error),加返回上一步选项
- RunStep3SubAgent 改为 (bool, error),加返回上一步选项
- RunStep4NamedAgents 改为 (bool, error),加返回上一步选项
- Run() 改为步骤导航循环,支持 Step 2-4 返回上一步
- ChineseKeyMap 追加各字段 Submit 中文绑定,修复末字段帮助栏英文问题
- EditProvider 支持 Ctrl+C 取消返回上级菜单,追加操作提示
- EditNamedAgent 支持 Ctrl+C 取消返回上级菜单
- 新增 formModel 包装器和 runForm(),统一帮助栏基础设施
- 替换全部 11 处 form.Run() 为 runForm(),启用统一帮助栏
- 支持 provider 自定义模型动态注册
让 provider 编辑页中的自定义模型在输入后立即加入模型列表并默认选中,统一由当前多选结果决定最终保存内容,同时改为 ASCII 复选框样式并补充对应测试与设计文档。
- 优化 provider 模型列表可见高度
让 provider 模型列表在终端空间充足时尽量完整展示,并在空间不足时明确提示未显示的模型数量,减少用户对列表是否已显示完全的猜测。
- Improve provider model list hints
- Add provider format split reminder
- Replace provider hint with format reminder
🐛 修复
- 补充 key=="" 场景的日志区分与测试用例
- 修复 slug 冲突数据丢失和 primary 原始 key 匹配问题
- MigrateProviders 新增 seen map 去重,slug 冲突时追加 -N 后缀
- primary 反推时同时尝试规范化 slug 和原始 key
- NormalizeSlug 去除冗余的 strings.ReplaceAll(".", "-")
- SaveFullConfig 四处代码质量修复
- 用 os.Stat 替代 strings.Contains 检测配置文件是否存在
- 修复 existingList upsert 的潜在 type assertion panic
- syncModelsJSON 改为返回 error,与 saveAllApiKeys 保持一致
- syncModelsJSON 新 provider 不存在时跳过(models.json 由 openclaw 启动时创建)
- App.go 三处代码质量修复
- Step 2/3: 用 containsOptValue 重置过期的 primary/fallback 值,
避免配置中残留已删除模型的引用
- Step 4: 命名 Agent 改为 upsert-by-ID,防止重复编辑时产生重复条目
- editProvider: 动态将已有自定义模型注入 MultiSelect 选项,
避免重编辑时丢失非预设模型
- SaveFullConfig agents.list 改为先过滤删除再 upsert,修复命名 Agent 删除不落盘问题
- SaveAllApiKeys 删除 Provider 时清理孤立 auth-profiles 条目
- 更新 Base URL placeholder 示例为 dmxapi.cn
- Remove stale add branch reference from editNamedAgent comment
- 更新 chineseKeyMap 函数注释,反映实际覆盖范围
- 修复 runStep2MainAgent 中 append 可能污染原始 slice 的问题
- 补全 Note.Prev 中文键绑定,Step 1 加注释说明无返回
- 删除 editProvider Description 中的手动导航提示,由统一帮助栏替代
- Hide provider model overflow hint at bottom
- Hide provider model overflow hint at bottom
- Clarify gateway reload messaging
- Keep success screen open until enter
👷 CI
📚 文档
- 添加多 provider + 多 agent 模型配置功能设计文档
- 添加多 provider + 多 agent 模型配置功能实现计划
- 添加 Provider 与命名 Agent 删除功能设计文档
- 修订设计文档 — 修复 allModelOpts 重建、editNamedAgent Fallback、主菜单标签等遗漏
- 添加删除功能实现计划
- API 格式自动检测设计文档
- 完善 API 格式自动检测设计文档(修订版)
- API 格式自动检测实现计划
- 添加命名 Agent 自动发现 + 导航提示中文化设计文档
- 添加 agent 自动发现 + 导航提示中文化实施计划
- 添加表单导航全面修复设计文档
- 修订导航修复设计文档(补全边界情况、澄清状态)
- 添加表单导航修复实施计划
- 添加统一帮助栏设计文档
定义 bubbletea 包装器方案(formModel + runForm),解决 huh v0.6.0
不能在帮助栏统一显示 ctrl+c 和 shift+tab 的底层限制。
- 添加统一帮助栏实施计划
🔧 杂项
- 删除 docs 规划文档,构建产物 openclaw-config
- 添加 .worktrees/ 到 .gitignore
- 忽略本地 superpowers 产物
避免将 brainstorming 过程中生成的 .superpowers 目录作为未跟踪文件残留在工作区,保持仓库状态干净。
📥 下载
| 平台 | 架构 | 文件 |
|---|
| Linux | x64 | openclaw-config-linux-amd64 |
| Linux | ARM64 | openclaw-config-linux-arm64 |
| Windows | x64 | openclaw-config-windows-amd64.exe |
| macOS | Intel | openclaw-config-macos-amd64 |
| macOS | Apple Silicon | openclaw-config-macos-arm64 |
🛠️ 使用说明
Linux
chmod +x openclaw-config-linux-amd64
./openclaw-config-linux-amd64
chmod +x openclaw-config-linux-arm64
./openclaw-config-linux-arm64
macOS
chmod +x openclaw-config-macos-amd64
./openclaw-config-macos-amd64
chmod +x openclaw-config-macos-arm64
./openclaw-config-macos-arm64
macOS 安全提示:首次运行提示"无法验证开发者"时,可右键点击 → 选择"打开",或执行:
xattr -rd com.apple.quarantine ./openclaw-config-macos-arm64
Windows
在文件所在目录按住 Shift 并右键 → 选择"在此处打开 PowerShell 窗口",执行:
.\openclaw-config-windows-amd64.exe
⚙️ 配置说明
启动后按提示依次填写:
- Base URL:默认
https://www.dmxapi.cn/v1,通常无需修改
- API Key:在 dmxapi.cn 申请,格式为
sk-...
- 模型:从预设列表选择,或选"自定义模型..."手动输入
🔗 相关链接