Each Agent CLI now runs only with its own native credentials. The central path of configuring one provider inside Meldwork for every Agent added instability without being realistic to maintain, and it depended on machine-local configuration details. - Delete the provider store/options modules, the local-agent-provider IPC handlers and preload API, per-CLI env injection (CODEBUDDY_*/ANTHROPIC_*/ KIMI_* ...), the managed OpenClaw provider runtime, and shared-provider catalog gating; startup removes the legacy encrypted meldwork-provider.json. - OpenClaw always resolves its native runtime now; native credential passthrough, the isolated gateway/guard runtime, and the runtime-auth-failure state machine stay unchanged. - Remove the Provider settings UI, onboarding slide, providerMode display, ~100 i18n keys per language, provider CSS, and update the architecture, security, and discoverability docs to the native-credentials boundary. Checks: npm --prefix desktop test (1512 pass), npm --prefix frontend test (325 pass), frontend build and build:desktop, desktop pack.
Meldwork 桌面客户端
Meldwork 是完全本地运行的 Electron 客户端。它直接加载仓库中的桌面前端,在 Electron 主进程中检测和调用本机 Agent CLI,不需要登录、JWT、远端平台、Docker 或云端服务。
本地群聊、消息、群组配置和 CLI 会话引用保存在 Electron 用户数据目录。渲染进程只通过
window.meldworkDesktop 调用经过约束的 preload API,不会获得可执行文件路径、Provider
API Key 或任意 Shell 执行能力。
支持检测和调用以下本机 Agent CLI:
- Codex
- Hermes
- OpenClaw
- WorkBuddy
- Kimi Code
- MiMo Code
- Claude Code
- Gemini CLI
- OpenCode
- Qwen Code
Agent 管理面板提供经过白名单约束的安装入口。安装命令和下载地址由主进程固定,不会根据页面
输入执行任意命令。内置 Agent 通过各自支持的原生权限模式或 Meldwork 托管工具策略执行;无法
满足当前权限契约的 Agent 会安全失败。群聊级工作目录写入默认关闭,只有用户明确授权后才会
切换为写入模式。Kimi 在只读对话中通过 Agent Client Protocol 的 plan 模式运行;用户明确
开启写入权限后,才切换到 Kimi 原生的 stream-json --prompt 模式。
首次启动与本地 Agent 检测
V1.0.3 GitHub 预发布使用 ad-hoc 临时签名,不使用 Apple Developer ID,也不提交 Apple 公证。 如果 macOS 首次启动时拦截候选应用,请打开 “系统设置 → 隐私与安全性”,找到 Meldwork 的拦截提示,点击“仍要打开 / Open Anyway”, 再确认启动。
首次启动会显示三页引导轮播,依次介绍本地 Agent 检测、多 Agent 协作、Skill 与文件上下文。 客户端在引导打开时执行唯一一次启动刷新;检测任务真正结束前“开始使用”按钮保持禁用,不会 用固定计时器伪装完成。检测成功或失败后才释放按钮。完成或关闭引导后会在渲染层本地记录状态, 后续启动直接进入工作台;Agent 仍可在管理面板中重新检测。
并发协作 Harness V4
群聊中选择多个 Agent 后,“并发回复”会在任何 Agent 获取调度资源前冻结同一份任务快照,让全部已选 Agent 独立生成,并在批次屏障后按稳定顺序提交。
Auto Discussion 会依次进入独立提案、交叉质询与职责协商、分工执行、单写者整合和独立复核。职责图由 Agent 协商产生,Harness 只负责验证全员同意的同一份计划、依赖、权限、回执、恢复和提交边界,不在模型之外私下分配工作。参与者仍由用户选定;从更大候选池自动选人组队不属于当前版本。
@ Skill 引用
在消息输入框输入 @ 或点击 @ 按钮,可以选择当前目标 Agent 本机已发现的 Skill。列表只
返回清洗后的 Agent、命名空间、slug 和显示名称,不返回 Skill 文件路径或内容。一次消息最多
选择 4 个 Skill;主进程会在发送前按目标 Agent 重新扫描并验证选择,跨 Agent 冒用、过期条目
或前端构造的任意路径都会被拒绝。Hermes 使用原生 --skills 参数预加载已验证 Skill;其他
Agent 只会收到属于自己的 Skill 坐标提示,不会收到其他目标的选择。
文件与多模态附件
消息输入框支持系统文件选择器、剪贴板图片以及把文件拖入输入区。当前接受经过 MIME、扩展名和
文件签名交叉校验的 PNG、JPEG、音视频、PDF、文本、Markdown、常见代码与配置文件、Office
文档和常见压缩容器;一条消息最多 4 个附件,各格式使用独立大小上限。附件会复制到 Electron
用户数据目录下的私有存储,工作区消息只保存 id、文件名、MIME 类型和大小;渲染层不能读取
附件路径,只能通过窄 IPC 请求预览或使用系统默认应用打开文件。
Agent 原生支持的图片会按其数量限制直接传递。其他文件,或超过某个 Agent 原生媒体能力的附件, 会在运行期间暂存为工作区内的只读输入文件,并在运行结束后清理;提示词明确要求只读取、不得执行 附件。未发送附件、删除会话后的无引用附件和异常导入残留由主进程回收。
Provider 配置
用户可以在客户端内填写一个 OpenAI-compatible Provider:
provider: Provider 显示名称
baseUrl: HTTPS 地址,或本机 loopback HTTP 地址
model: 模型名称
apiKey: API Key
API Key 仅通过 Electron safeStorage 加密保存到本机;操作系统安全存储不可用时拒绝落盘。
Provider 不设品牌、服务地址或模型默认值,也不会从远端自动获取配置。配置后可供 Hermes、
OpenClaw、WorkBuddy、Qwen 和 OpenCodeReview 使用;其他 Agent 沿用各自的本机鉴权和 Provider 配置。
本地 CLI 支持矩阵
| Agent | 检测命令 | macOS 安装 | Windows 安装 | 用户 Provider |
|---|---|---|---|---|
| Codex | codex |
npm:@openai/codex@latest |
npm:@openai/codex@latest |
不注入;沿用 Codex 本机配置 |
| Hermes | hermes |
官方 install.sh |
官方 install.ps1 |
支持 |
| OpenClaw | openclaw |
npm:openclaw@latest |
npm:openclaw@latest |
支持,使用客户端隔离的托管配置 |
| WorkBuddy | codebuddy |
npm:@tencent-ai/[email protected] |
npm:@tencent-ai/[email protected] |
实验性支持 |
| Kimi Code | kimi |
官方 install.sh |
官方 install.ps1 |
不注入;沿用 Kimi 本机配置 |
| MiMo Code | mimo |
npm:@mimo-ai/cli@latest |
npm:@mimo-ai/cli@latest |
不注入;沿用 MiMo 本机配置,Meldwork 固定使用只读 plan Agent |
| Claude Code | claude |
npm:@anthropic-ai/claude-code@latest |
npm:@anthropic-ai/claude-code@latest |
不注入;沿用 Claude 本机配置 |
| Gemini CLI | gemini |
npm:@google/gemini-cli@latest |
npm:@google/gemini-cli@latest |
不注入;沿用 Gemini 本机配置 |
| OpenCode | opencode |
npm:opencode-ai@latest |
npm:opencode-ai@latest |
不注入;沿用 OpenCode 本机配置 |
| Qwen Code | qwen |
npm:@qwen-code/qwen-code@latest |
npm:@qwen-code/qwen-code@latest |
支持 |
| OpenCodeReview | ocr |
npm:@alibaba-group/open-code-review@latest |
npm:@alibaba-group/open-code-review@latest |
支持 |
macOS 会在当前 PATH 之外搜索 Volta、pnpm、fnm、asdf、mise、bun、
~/.local/bin、~/.kimi-code/bin、~/.mimocode/bin、Homebrew 等常见目录。Windows 会额外搜索用户 npm、
WindowsApps、Node.js、WorkBuddy、Chocolatey 和 Scoop 目录,并按 PATHEXT 解析命令。
Hermes 和 Kimi 的安装脚本来自固定 HTTPS 白名单地址;客户端不内置脚本副本,因此离线环境 不能使用这两个一键安装入口。当前自动安装面向 macOS 和 Windows,Windows 安装流程仍需在 真实 Windows 设备上做发布前验证。
目录结构
src/agents/:Agent 兼容层、路由、运行时、CLI、安装器、连接器src/attachments/:附件、内容存储、图片尺寸校验src/collaboration/:对话、上下文包、产物、任务图src/workspace/:本地工作区与自动调度;自动运行器的通用失败、重试和等待语义位于local-workspace-auto-runner-support.cjssrc/runs/:运行、预算、事件、调度、日志src/knowledge/:知识库与知识连接器src/skills/:Skill 目录、快照、信任src/security/:私有文件与敏感信息脱敏test/:按同名领域镜像组织测试,support/放测试辅助代码;测试发现与 suite 选择位于scripts/test-discovery.cjs
本地开发
cd desktop
npm install
npm run dev
可选环境变量:
MELDWORK_CODEX_SANDBOX:Codex 默认沙箱模式,支持read-only和workspace-write;未设置或值不受支持时使用read-only。
测试与打包
npm test
npm run pack
npm run dist
npm run dist:public
pack 用于生成未打包应用并验证 Electron 产物;dist 生成 V1.0.3 GitHub 预发布候选使用的 ad-hoc 签名 DMG 和 ZIP。这些产物不具备 Developer ID 信任链且未公证,不能声称通过 Gatekeeper。
dist:public 是未来正式签名公开发行的专用命令:它要求
Developer ID 证书和完整公证凭据,强制代码签名,在签名后校验永久 Bundle ID、Team ID 与
hardened runtime,并调用 Apple 公证;任一条件不满足都会失败。产物输出到 desktop/dist/,
其中包含本地前端,不依赖服务器或容器。