Munder Difflin设置指南:AI Engines、API Keys与BYOK配置到底存在哪
【免费下载链接】munder-difflinlocal multi-agent harness项目地址: https://gitcode.com/GitHub_Trending/mu/munder-difflin
Munder Difflin 是一个本地多 Agent 编排工具(local multi-agent harness),把 Claude Code、Codex、Qwen、OpenCode 等十几种 AI 编码引擎装进同一个"办公室"统一管理。很多新手装好应用后都会遇到同一个困惑:Munder Difflin 的设置到底存在哪?AI Engines 里的 API Key 是明文存着吗?BYOK(自带密钥)的 base URL 又写到了哪个文件?这篇指南把答案一次讲清:普通设置存在config.json,而 API Key 走的是加密的密钥保险库,两者分开存放、各司其职。
两个目录先分清:设置 ≠ 密钥 ≠ Agent 状态
Munder Difflin 的"配置"其实分三层,存的位置完全不同:
| 数据 | 存放位置 | 是否加密 |
|---|---|---|
| 普通设置(引擎、模型、开关) | ElectronuserData目录下的config.json | 否(明文 JSON) |
| API Key、Slack 密钥等敏感值 | userData目录下的integration-secrets.json | 是(safeStorage 加密) |
| Agent 元数据、日志、hive 状态 | 你自选的 Harness Home(默认建议~/HarnessAgents) | 否 |
userData是 Electron 的应用数据目录:macOS 上一般在~/Library/Application Support/下,Windows 上在%APPDATA%下。配置文件路径由 config.ts 中的configPath()决定,就是app.getPath('userData') + '/config.json'。- Harness Home 是 Agent 的"蜂巢":首次启动的引导向导会建议你填
~/HarnessAgents,所有 Agent 的会话、收件箱、日志都在这里。它和设置文件互不包含——迁移机器时,设置文件管"偏好",Harness Home 管"记忆"。
config.json 里到底存了什么
打开config.json,你会看到一个结构化 JSON。它由 src/main/config.ts 中的HarnessConfig接口定义,关键字段对新手来说就这几类:
- 引擎与模型:
defaultCommand(默认启动命令)、defaultModel(新 Agent 默认模型)、godProvider/godModel(编排者 Michael 用的引擎和模型)、autoMode(是否跳过权限确认)。 - 目录:
harnessHome、registeredRepos(注册的项目仓库,作为 Agent 默认工作目录)。 - BYOK 非敏感部分:
providerBaseUrls(各引擎指向本地模型的 base URL,如http://localhost:11434/v1)和providerDefaultModels(每个引擎的默认模型)。 - 各种开关:自动更新、通知、Slack 集成、Free Flow 语音转写等。
💡 注意:
providerBaseUrls只存 URL,不存密钥。源码注释里专门强调过这一点(见 config.ts 中providerBaseUrls字段说明:"API KEYS are NOT stored here")。
API Key 存哪:写一次的加密保险库
这是最容易让人担心的一步,答案可以放心:Munder Difflin 从不在config.json里存 API Key,也不把明文回传给界面。
具体机制在 src/main/integrations.ts:
- 加密落盘:密钥通过 Electron 的
safeStorage加密后写入userData/integration-secrets.json,且文件权限设为0o600。如果系统加密不可用,会拒绝写入(fail closed),绝不落明文。 - 只写不读(write-only):设置界面只能显示"已设置 / 未设置",明文永远不回传到渲染层;只有在 Agent 启动那一刻,才由主进程现场解密并注入该 CLI 的环境变量。
- 最小权限注入:启动 OpenCode、Crush、pi、Qwen 这类 BYOK 引擎时,index.ts 会按
--model的 provider 前缀(如anthropic/…只注入ANTHROPIC_API_KEY),只注入这一个后端需要的密钥,缩小泄露影响面。
AI Engines 设置页:BYOK 配置一步到位
在Settings → AI Engines页面(对应组件 AiEnginesSettings.tsx)你可以完成两类操作:
1. 后端 API Key(对应标准环境变量)
| 后端 | 环境变量 |
|---|---|
| Anthropic | ANTHROPIC_API_KEY |
| OpenAI | OPENAI_API_KEY |
| Google · Gemini | GEMINI_API_KEY |
| OpenRouter | OPENROUTER_API_KEY |
| Groq | GROQ_API_KEY |
粘贴保存后界面只显示"已设置",随时可以清除。其中 OpenAI Key 同时决定是否启用实时语音功能(Realtime Talk)。
2. 本地模型 base URL + 默认模型
只有支持 BYOK 的四个 CLI 引擎需要配这一段:OpenCode、Crush、pi、Qwen(见 agentProvider.ts 中的引擎预设)。填上 Ollama 的http://localhost:11434/v1或 LM Studio 的http://127.0.0.1:1234/v1,就能让 Agent 跑在你自己的开源模型上——完整的开源模型接线教程可参考 run-munder-difflin-on-open-models.md。
一个常见误区:Claude Code 和 Codex 这类官方 CLI 走的是厂商自己的登录(claude/codex首次运行登录),密钥托管在各自的配置里,Munder Difflin 不负责也不存储它们的凭据——所以 AI Engines 页面上不会看到它们的 Key 输入框。
编排者 Michael 的引擎怎么选
Munder Difflin 的编排者(代号 Michael)可以被不同的 AI Engine 驱动:config.json里的godProvider字段决定他跑在 Claude、Codex、Antigravity 还是 Qwen 上,godModel决定具体模型,未设置时回退到该引擎预设的推荐编排模型。
切换后 Michael 的人格不变,只有底层引擎变化——这是"混合引擎办公室"的核心:强模型坐镇编排,便宜或本地模型承担多数体力活。
常见疑问速答
Q1:想备份或迁移设置,要复制哪个文件?复制userData里的config.json+integration-secrets.json(含密钥,注意别上传),再整个拷贝 Harness Home 文件夹即可。
Q2:能手动编辑 config.json 吗?可以,它是普通 JSON;应用每次启动都会用默认值补齐缺失字段,所以只改你要改的键即可。
Q3:找不到引擎命令怎么办?Settings → Prerequisites 会告诉你应用当前能看到哪些引擎二进制(claude、codex、opencode等);缺失的引擎 CLI 在 Agent 终端里还能看到自动安装提示。
Q4:密钥安全吗?密钥在磁盘上是 safeStorage 密文、文件权限 600、界面只读布尔状态、启动时按最小权限注入单个引擎——四个环节都做了隔离,这在 integrations.ts 文件头的安全注释中有完整说明。
小结
一句话记住 Munder Difflin 的设置布局:偏好进config.json,密钥进加密的integration-secrets.json,Agent 的家进 Harness Home。理解了这三层的分工,AI Engines、API Keys 和 BYOK 配置就不再是黑盒——你可以放心地换引擎、换模型,甚至把整个办公室搬到开源模型上运行。
【免费下载链接】munder-difflinlocal multi-agent harness项目地址: https://gitcode.com/GitHub_Trending/mu/munder-difflin
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考