dsh-llm-proxy
by Ye-Yu-Mo
DeepSeek Harness (dsh) 全局 HTTP 代理插件:undici setGlobalDispatcher + EnvHttpProxyAgent,配置化、热切换、可观测
安装
dsh plugin --profile web add github:Ye-Yu-Mo/dsh-llm-proxyGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
DeepSeek Harness (dsh) 的全局 HTTP 代理插件:用 undici
setGlobalDispatcher+EnvHttpProxyAgent接管 dsh 所有 LLM 请求的代理路由。配置化、热切换、可观测。
为什么需要它
dsh(DeepSeek Harness)用 node 内置 fetch(undici)发 LLM 请求,而 undici 默认不读 http_proxy/https_proxy 环境变量。如果你的 LLM 端点(如 llm-proxy 网关)必须走代理才能访问,dsh 会直连超时。
本插件在 dsh 进程内用 setGlobalDispatcher(new EnvHttpProxyAgent(...)) 全局接管 fetch 的代理路由:
- ✅ 让 dsh 所有 LLM 请求走你配置的代理
- ✅ 热切换:设置变更即时生效,无需重启
- ✅ 可逆:插件停止/禁用时恢复基线 dispatcher,不留进程级残留
- ✅ 可观测:
/api/llm-proxy/status查看当前生效模式,/api/llm-proxy/test测试任意代理连通性
安装
本插件是 bundle 包(dsh.bundle.patch 清单):dsh plugin add 会把它装进 profile 依赖并自动加入 dsh.profile.bundles,下次启动自动激活,无需手动加 patch 行。
# 一键安装(发布到 npm 后可直接用包名)
dsh plugin --profile web add dsh-llm-proxy
# 或直接从 GitHub 安装
dsh plugin --profile web add github:Ye-Yu-Mo/dsh-llm-proxy
开发调试(本地 link):
git clone https://github.com/Ye-Yu-Mo/dsh-llm-proxy
dsh plugin --profile web add link:$(pwd)/dsh-llm-proxy
安装后重启 dsh web 使 bundle 补丁生效;~/.dsh/dsh.log 出现 [llm-proxy] 日志(未启用时为「恢复基线」一行)即装载成功。
配置
通过 dsh 设置页的「LLM 代理」项,或直接编辑 ~/.dsh/settings.yaml:
llm-proxy:
enabled: true
url: http://127.0.0.1:7891 # 你的 HTTP(S) 代理地址
noProxy:
- localhost
- 127.0.0.1
- ::1
| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
enabled |
boolean | false |
是否启用代理接管 |
url |
string | '' |
HTTP(S) 代理地址,如 http://127.0.0.1:7891 |
noProxy |
string[] | ['localhost','127.0.0.1','::1'] |
不走代理的地址 |
⚠️ dsh 设置页只暴露白名单内的配置命名空间。若设置页显示「表单不可用」,需把
llm-proxy加入dsh-host-apiproxy的WEB_SETTINGS_NAMESPACES(当前为 dsh 已知限制,见下)。
HTTP API
插件注册两个宿主路由(loopback-only,防 LAN 探测):
GET /api/llm-proxy/status
当前生效模式:
{
"effective": { "mode": "setting", "url": "http://127.0.0.1:7891" },
"env": { "httpProxy": "http://127.0.0.1:7891", "httpsProxy": "http://127.0.0.1:7891" }
}
mode 取值:
setting:走设置的urlenv:读环境变量代理(HTTP(S)_PROXY)direct:直连(无代理)
POST /api/llm-proxy/test
测试任意代理到目标端点的连通性:
// 请求
{ "url": "http://127.0.0.1:7891", "probeUrl": "https://llm-proxy.ftai.chat/v1/models", "timeoutMs": 8000 }
// 响应
{ "ok": true, "latencyMs": 246, "status": 200 }
开发
pnpm install
pnpm test # 单元测试(logic/http-utils)
node scripts/... # 见 scripts/
目录结构:
lib/
index.js # 宿主核心:settings + dispatcher 接管 + HTTP 路由
logic.js # 纯函数配置判定(可单测)
http-utils.js # loopback 校验 / JSON 读写
client.js # 设置面板「LLM 代理」页
test/ # 单元测试
已知限制
dsh 设置页的配置命名空间白名单(dsh-host-apiproxy 的 WEB_SETTINGS_NAMESPACES)是硬编码的,第三方插件无法自注册暴露。目前需要手动把 llm-proxy 加入白名单才能让设置页表单可用(dsh 官方已将"插件自注册"列为延后工作)。
已在上游提交讨论:Third-party plugins cannot expose settings namespaces to the web settings page(Ideas 分类)。
License
MIT
原始 README: https://github.com/Ye-Yu-Mo/dsh-llm-proxy/blob/main/README.md ↗
同类插件
查看全部 →
agent-vision-toolkit
为纯文本模型"看图“设计更好的视觉工具箱和技能,支持多图理解,图片问答,前端UI还原、GUI 自动化等,并可选无缝接入多个主流agent,直接识别粘贴图片| A vision toolkit and skill designed for text-only llms — image Q&A, long-screenshot OCR, frontend UI restoration, and GUI automation, with optional seamless integration for Codex, Claude Code, Pi, Oh My Pi, and OpenCode

api-relay-audit
从 DeepSeek Harness 对 AI API 中转站和 LLM 代理运行本地安全审计,生成 Markdown 报告,覆盖提示词注入、模型替换信号、工具调用改写、错误泄漏、流完整性和按 profile 启用的 Web3 风险。

OpenStory
✨ OpenStory 现已支持 DeepSeek Harness 插件! 现在可以通过 dsh-openstory 将 OpenStory 多智能体推演接入 DeepSeek Harness,让 agent 直接启动模拟、查看角色、下达指令并逐回合推进故事。查看 DSH 插件配置与使用指南。

phi
pi的编码代理 ∞ 提供者、子代理、hashline编辑和权限门

anysearch-dsh
DeepSeek Harness(DSH)的 AnySearch 网络搜索提供方与高级搜索工具。

codex-switch
Codex Switch 是一个 macOS 工具,一键配置 Codex 的自定义 API,同时保留官方 OpenAI 登录。保存后 Codex 的模型选择器里只会出现你选的那个 provider 的模型。也支持 Claude Code 的官方 / 自定义 API 切换。Codex Switch is a lightweight helper for configuring multiple coding-agent API routes. For Codex, it keeps Official OpenAI and a custom API provider configured in parallel, registers the custom model in Codex's mod