前言¶
DeepSeek Harness(DSH)的插件体系让智能体可以通过工具与外部能力交互。但在本地运行大模型时,常见的做法是在终端手动启动服务,再在配置中写死端口与路径。这种方式依赖脚本、配置分散,且不便于在对话中动态切换。dsh-local-model 插件通过声明式配置,把本地推理服务的管理能力集成到 DSH 的工具与命令体系里,让智能体可以直接通过名称启停服务,并拿到可用于路由的 provider/model 引用。
插件定位¶
dsh-local-model 是一个 DeepSeek Harness 插件,由 miloye7711-dotcom 维护。它通过 DSH 的 subprocess 能力,接管本地推理服务(如 Strata、Ollama、llama.cpp 等)的进程生命周期,并提供状态查看、启停切换与诊断能力。插件本身不负责路由,只是负责把服务拉起来,再把 provider/model 引用交给模型路由使用。
核心功能¶
- 声明式服务配置:在 YAML 中列出要启动的服务,包括命令、参数、工作目录、端口、路由名称等。
- 进程生命周期管理:通过
start、stop、toggle等动作启停服务,支持exclusive模式避免资源冲突。 - 健康检查:通过 HTTP 请求(默认
/v1/models)探测服务是否可用,当服务列出至少一个模型时视为“已就绪”。 - 命令行与 UI 两种控制方式:可通过
/local-model命令或 Composer 面板中的快捷芯片进行操作,支持全局快捷键(Ctrl+Shift+L/Cmd+Shift+L)。 - 诊断日志:
diag <text>会把带时间戳的日志写入~/.dsh/local-model/client-diag.log。
安装与启用¶
目前该插件尚未发布到 npm。需要从源码构建后,通过本地路径或 pnpm link 集成到 Harness 工作区中。
- 克隆仓库并安装依赖:
git clone https://github.com/miloye7711-dotcom/dsh-local-model.git
cd dsh-local-model
pnpm install
pnpm run build
-
将构建产物挂载到 Harness:
- 通过绝对路径挂载:将lib/和client/复制到 Harness 期望的位置,或使用file:依赖将其打包进 profile 的node_modules。
- 使用pnpm link:在 Harness 工作区中执行pnpm link,将插件链接到 Harness 的加载路径。 -
在 Harness 的配置中声明该插件,并在 profile 的依赖中指向插件入口(
lib/index.js)。
典型用法¶
声明服务¶
在 Harness 配置中声明要管理的本地服务。以下示例包含 Ollama 与 Strata 两个服务:
- id: local-model
name: 'dsh-tool-local-model'
config:
default: strata # 默认服务,bare toggle 与 composer chip 使用
exclusive: true # 启动一个服务时停止其他服务
servers:
ollama:
command: 'ollama'
args: ['serve']
cwd: '%USERPROFILE%'
port: 11434
provider: 'ollama-local'
strata:
command: 'D:\Strata\.venv\Scripts\python.exe'
args:
- 'D:\Strata\serve\server.py'
- '--engine'
- 'strata'
- '--config'
- 'D:\Strata\strata-iq2_xs.json'
- '--port'
- '8080'
cwd: 'D:\Strata'
port: 8080
provider: 'strata-local'
startTimeoutMs: 900000 # 冷启动超时(默认 15 分钟)
probeTimeoutMs: 5000 # 就绪探测超时(默认 5 秒)
命令行操作¶
- 查看状态:
/local-model status
- 查看当前运行的服务:
/local-model list
- 启动 Ollama:
/local-model start ollama
- 停止所有插件管理的服务:
/local-model stop all
- 切换默认服务(启动或停止):
/local-model toggle
通过 Composer 控制面板¶
- 在对话编辑器 dock 中,
本地模型芯片用于切换默认服务。 - 点击
▾打开 272px 宽的面板,显示所有已配置服务的状态(●表示运行,○表示未运行),并为每个服务提供用 <provider/model>按钮,用于在模型路由中选择对应引用。 - 状态文本也会通过宿主命令输出到对话记录中。
在路由中使用¶
插件启动服务后,会在输出中给出 provider/model 引用,例如:
→ ollama: answering on port 11434 - ollama-local/qwen2.5:7b
在模型路由配置中,使用该引用作为 provider:
- id: llm-pi-ai
name: '@deepseek-ai/dsh-llm-pi-ai'
config:
providers:
ollama-local:
api: openai-completions
baseURL: http://127.0.0.1:11434/v1
headers: { Authorization: 'Bearer ollama' }
models:
- id: qwen2.5:7b
name: 'Qwen2.5 7B (Ollama)'
contextWindow: 32768
maxTokens: 8192
诊断日志¶
/local-model diag <text>
会将带时间戳的文本追加到 ~/.dsh/local-model/client-diag.log,便于排查连接与就绪问题。
适用场景与注意事项¶
- 适用场景:
- 需要在对话中动态启停本地推理服务的智能体开发。
- 需要统一管理多种本地推理后端(Ollama、Strata、llama.cpp 等)的开发环境。
-
希望通过声明式配置替代脚本与硬编码的服务启动方式。
-
注意事项:
- 插件以当前 Harness 进程的权限运行,安装前应检查源码与许可证(MIT)。
- 插件仅管理自己启动的进程,对于已在外部启动的服务,
stop会拒绝操作。 exclusive默认为true,避免多个本地引擎竞争设备内存,如需同时运行多个服务,需显式设置为false。- 服务就绪的判断基于 HTTP
GET <modelsPath>(默认/v1/models),仅当服务列出至少一个模型时才视为可用。
小结¶
dsh-local-model 把本地推理服务的管理流程抽象为配置与工具调用,让智能体可以通过名称启停服务,并获取 provider/model 引用用于路由。它不引入新的能力边界,而是通过现有 subprocess 能力实现进程生命周期控制,并通过健康检查保证服务就绪状态,适合在本地开发与调试环境中使用。
- 插件目录页:https://www.skillhub.cn/plugins/miloye7711-dotcom/dsh-local-model
- GitHub 仓库:https://github.com/miloye7711-dotcom/dsh-local-model