为 DeepSeek Harness 注入 LM Studio/Ollama 本地模型、Codex 子代理、文件/终端/网页工作区及快捷键与桌面主题同步能力。
$ dsh plugin --profile web add github:lencx/Minke/packages/harness-overlayRun the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial
Minke 的产品定制层,注入到 DeepSeek Harness 宿主运行时中,给 Harness 增加本地模型(LM Studio、Ollama)桥接、可执行一次性子任务的 Codex 子代理,以及文件/终端/网页侧栏工作区、可配置快捷键、桌面主题与语言同步等桌面化能力。
openAICompatible),让用户手动接入任意自部署的兼容服务provider: codex),把自包含任务委派给 codex app-server --stdio@deepseek-ai/cordis(插件框架)、@deepseek-ai/schemastery(配置 schema 与 default)、@deepseek-ai/dsh-llm-pi-ai(LLM 适配层,挂在本地服务 ready 之后)、@deepseek-ai/dsh-subprocess(CLI 解析与子进程 spawn)、xterm + codemirror + shiki(terminal/file/web 三类标签页渲染)cordis.patch.yml 与宿主打 4 个组合 slot:minke-overlay(产品层)、model-runtime(本地服务生命周期)、subagent-codex(Codex 委派)、tool-subagent-codex(Harness tool 包装);host 端 src/index.ts 仅占位,浏览器侧实现在 src/client/*,通过 Cordis effect 在 disposal 时清理本地服务进程packages/harness-overlay/src/model-runtime/index.ts(host 侧 main)、packages/harness-overlay/src/client/index.tsx(client 侧 bootstrap)日常用 DeepSeek Harness 做编码/写作、会希望 LM Studio 或 Ollama 已经在跑、想直接在同一个窗口里开几个文件标签、改改终端与翻翻网页页面的人。也适合想把 Codex CLI 的一次性任务接到 Harness 主对话里、而不想离开当前会话再去切终端的人。
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| Node | >=24 | 由宿主 Minke 桌面 runtime 决定;构建脚本和 Electron Forge 也要求此基线 |
| 平台 | macOS / Windows / Linux | 跨平台桌面,macOS 多 titlebar/半透明 surface 适配;Win/Linux 走平台默认样式 |
| 原生模块 | 无 | overlay 包不直接声明原生依赖;运行时由宿主 Electron 提供 |
| DSH 版本 | 未声明 | overlay 不在 package.json 写 peerDependencies,由宿主 Minke 桌面端控制可用 DSH |
dsh plugin --profile web add github:lencx/Minke/packages/harness-overlay
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
lmStudio.enabled | 布尔 | 是否启用 LM Studio 行(仅影响 UI 可见性,不影响服务可用性) | false |
lmStudio.lifecycle | 枚举 | external=只发现已运行 / ensure-running=缺失时拉起 / managed=本插件启动的实例在卸载时回收 | external |
lmStudio.command | 字符串 | 显式 lms 可执行路径(覆盖自动查找) | "" |
lmStudio.baseURL | 字符串 | 显式回环 Base URL;端口为 0 会被拒绝 | ""(自动用 http://127.0.0.1:1234/v1) |
lmStudio.apiKeyEnv | 字符串(credential-ref) | 用于 LM Studio 的鉴权环境变量名 | LM_API_TOKEN |
lmStudio.defaultContextWindow | 整数 | 派发给 LM Studio 模型的默认上下文窗口 | 32768 |
lmStudio.defaultMaxTokens | 整数 | 派发给 LM Studio 模型的默认 max_tokens | 8192 |
ollama.enabled | 布尔 | 是否启用 Ollama 行 | false |
ollama.lifecycle | 枚举 | external / ensure-running(不支持 managed) | external |
ollama.command | 字符串 | 显式 ollama 可执行路径 | "" |
ollama.baseURL | 字符串 | 显式回环 Base URL;端口为 0 会被拒绝 | ""(自动用 http://127.0.0.1:11434/v1) |
ollama.defaultContextWindow | 整数 | Ollama 模型默认上下文窗口 | 32768 |
ollama.defaultMaxTokens | 整数 | Ollama 模型默认 max_tokens | 8192 |
openAICompatible[] | 数组 | 手动接入的兼容 OpenAI 回环服务端点,包含 id / displayName / baseURL / apiKeyEnv | [] |
| 快捷键 | action → binding | 通过 IPC 持久化;最大 128 条,规则 Mod(+Ctrl/Meta/Alt)?(+Shift)?+Key(详见 shortcut-contract.ts) | palette.open=Mod+K、settings.open=Mod+,、session.new=Mod+N、session.back=Mod+[、session.forward=Mod+]、sidebar.toggle=Mod+S、tabs.toggle=Mod+P、tabs.bottom.toggle=Mod+B |
环境变量 MINKE_LM_STUDIO_ENABLED | 0/1 | 与 MINKE_LM_STUDIO_COMMAND 同时设置时把 lifecycle 改为 ensure-running | 未设置 |
环境变量 MINKE_OLLAMA_ENABLED | 0/1 | 与 MINKE_OLLAMA_COMMAND 同时设置时把 lifecycle 改为 ensure-running | 未设置 |
环境变量 LM_STUDIO_BASE_URL | URL | 覆盖 LM Studio Base URL | 未设置 |
环境变量 OLLAMA_BASE_URL | URL | 覆盖 Ollama Base URL | 未设置 |
Q: 这是只跟桌面版本绑定,还是也能作为 DSH 插件单独装?
A: 都可以。Minke 桌面应用内部已经 compose 这层 overlay;用户通过 dsh plugin ... add 安装的是同一份代码,会被注入到 Harness 运行时。Source-of-truth 行为是同一份 contract(cordis.patch.yml)。
Q: 配了本地模型但列表里看不到我的模型怎么办?
A: 模型发现走 OpenAI 兼容的 /v1/models 端点,LM Studio 还额外合并 v1 loaded-instance 元数据。如果是 LM Studio,先确认 lms server status --json 能拿到端口;如果服务是外部启动且当前上下文窗口与配置不一致,overlay 不会替用户重加载,会提示回到 LM Studio 客户端手动 reload 一次。
Q: Ollama 启动后会发生什么?
A: 当 overlay 拉起的 ollama serve 进程跟随宿主 Minke 进程生命周期,本插件 disposal 时它会被终止(与 LM Studio 的 one-shot CLI 行为不同,LM Studio 的 CLI 不会停止共享服务)。
Q: Codex 子代理跟"Codex IDE 登录"是一回事吗?
A: 不是。overlay 只是把任务以 stdio 方式交给已经在 PATH 上的 codex app-server;账号登录、模型选择、sandbox 与 workspace 设置都由 Codex CLI 自己负责,overlay 不持有这些状态。
Q: 桌面版会改我电脑上的哪些数据?
A: 桌面偏好统一放在 ~/.minke 目录下;浏览器会话数据保留在本地;DSH 自身的会话与模型设置仍由 Harness 默认路径管理。此 overlay 不写入 settings.yaml。
Q: 装上后切换中英文要在哪里改?
A: 跟宿主 Harness 的 locale/change 同步,无需在此 overlay 内单独切换;桌面原生窗口标题栏、菜单等会跟随同一份 locale snapshot。
Q: 如何验证我这台 LM Studio 服务配对成功?
A: 在 Models 页找到 LM Studio 行,确认该行没有"未找到 CLI"的提示(意味着自动找到 lms),且模型列表非空;如果是外部启动且当前 loaded instance 上下文与配置值不一致,会得到 LM_STUDIO_CONTEXT_TOO_SMALL / LM_STUDIO_CONTEXT_PREPARATION_FAILED 类的错误码。
进阶 — 需要懂本地模型服务的端口/上下文窗口、可执行文件查找,以及 DSH 的多 fiber / plugin 注入模型,普通用户只用 GUI 路径也能用好,但要排障就绕不开这些。
lms 是 one-shot CLI,即便将 lifecycle 设为 managed,它启动后会留下一个独立共享服务进程,overlay 仅在"确认是该实例启动"的子集里清理(详见 README 35-43 行)LM_STUDIO_CONTEXT_PREPARATION_FAILED 等)package.json 声明 peer 关系,由宿主 Minke 桌面 runtime 决定可用范围;overlay 单独装的情况下行为依赖宿主的版本契约README.md 第 24-25 行提示)xattr -dr com.apple.quarantine 解除(这是宿主 Minke 桌面侧的打包问题,不在 overlay 范围)