DeepSeek Harness Hub
← 返回列表

bamboostrip/dsh-llm-capabilities

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

DSH 插件:为 llm-pi-ai 自动检测并配置模型能力reasoningEfforts + 输入模态。

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/17 · 已提供中文文档

DSH 插件:为 llm-pi-ai 自动检测并配置模型能力(reasoningEfforts + 输入模态)。dsh-reasoning-efforts 的继任者。

综合分
30.6
GitHub 分
30.6
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add bamboostrip/dsh-llm-capabilities
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-llm@deepseek-ai/dsh-settings
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-llm-capabilities

DSH 插件:为 llm-pi-ai 自动检测并配置模型能力(reasoningEfforts + 输入模态)。
dsh-reasoning-efforts 的继任者——一个面板即可修补官方 llm-pi-ai UI 对自托管网关无法配置的两个字段。

为什么需要它

官方 llm-pi-ai 针对自定义提供商的设置页面只允许你编辑 contextWindow。而两个对路由真正重要的能力却被隐藏了:

1. 思考等级(reasoningEfforts)——模型接受哪些 off/minimal/low/medium/high/xhigh/max,以及每个等级映射到的传输拼写(max: ultra)。没有它,强度滑块会显示“此模型不提供可选择的思考等级”。
2. 视觉(input: ["text","image"])——模型是否接受图像。没有它,一个确实支持视觉的网关模型在本地仍然是 ["text"],因此每个图像附件都会在到达端点之前被预检以 UNSUPPORTED_CONTENT 拒绝。

两者都是 providers..models[] 上的按模型字段,pi-ai 已经理解它们。这个插件只是让它们变得可编辑且可自动检测。

如果你来自 dsh-reasoning-efforts:保留它,它仍然可用。dsh-llm-capabilities 同时服务两个端点(/model-capabilities/raw-models 和旧版 /thinking-levels/raw-models),因此旧客户端仍可正常工作。新安装应使用此包。

它的功能

- 一个设置页面 Settings → Model Capabilities
- 从端点自动检测:在服务端获取 GET {baseURL}/models(凭据在宿主侧解析,不会泄露密钥),解析:
- supported_features: ["reasoning"]、supported_parameters、supports_reasoning、reasoning_effort …… → 推理
- modalities / input_modalities / supported_modalities / supports_vision / capabilities: ["vision"] …… → 视觉
- context_length、max_output_tokens …… → 容量
- 目录感知:合并 llm.models()(pi-ai 自身的知识)作为补充来源——端点决定是/否,目录细化等级集合并可在端点无信息时作为替代。
- 新模型:端点列出了你尚未配置的模型 → 它会以 not configured 徽章显示,应用后将添加它。
- 三态视觉:inherit(省略 input,使用目录/默认值)/ image ✓(["text","image"])/ text-only(["text"])
- 安全写入:使用 settings.mutate 并带 expectedRevision,深拷贝 models 数组,不触碰其他提供商字段。

安装

published
dsh plugin --profile web add dsh-llm-capabilities

local dev
dsh plugin --profile web add link:D:\AllCode\dsh\dsh-llm-capabilities

需要 DHS >= 0.1.1-rc.2、node >= 22.13。

用法

1. 像往常一样在 Settings → Models 中添加你的提供商(route、baseURL、apiKeyEnv)。
2. 打开 Settings → Model Capabilities,选择该提供商。
3. 点击 Detect from endpoint(对于目录模型则点击 Pre-fill from catalog)。
4. 按模型切换:
- Offer thinking levels → 选择 off/low/medium/high/xhigh/max,内联编辑 wire 拼写
- Vision: inherit / image ✓ / text-only
5. Apply to settings → 写入 llm-pi-ai(providers..models)。强度滑块和图像准入立即更新。

Go 会话头(x-opencode-session)

OpenCode Go 要求第三方代理发送稳定的 x-opencode-session
头以实现提示缓存亲和性(文档)。
宿主端会包装 globalThis.fetch,并在 URL 包含
opencode.ai/zen/go 的请求上设置该头(覆盖 ocg-c / ocg-r / ocg-a)。所有其他请求
原样通过。

- 会话键控(默认): ses_ + 由 dsh
会话 id 派生的 32 位十六进制(sha256),因此同一聊天在重启后保持相同的 OpenCode 会话。
标题调用使用隔离的命名空间;压缩沿用
会话的命名空间,因为它会重放历史(推理
encrypted_content 绑定到签发它的账户)。
- 加密推理自愈: 如果网关仍然返回
400 … reasoning 'encrypted_content' was not issued to this caller
(网关侧的会话→账户亲和性丢失),包装器会重试
一次,剥离重放的加密推理项,而不是
让该轮失败。可通过 sessionHeaders.encryptedContentRetry: false 选择退出。
- 永不触碰:user-agent(保持为 deepseek-harness/... —— Go 要求诚实的
身份标识)和 authorization。
- 无需卸载即可禁用(配置文件 cordis.patch.yml):

- insert:
- id: model-capabilities
name: dsh-llm-capabilities
config:
sessionHeaders:
enabled: false

写入的配置结构

llm-pi-ai:
providers:
my-gateway:
baseURL: https://gateway.example/v1
api: openai-completions
models:
- id: gpt-4o
input: [text, image]          # vision
reasoningEfforts:              # thinking
off: null
low: low
medium: medium
high: high
- id: text-only-model
input: [text]
reasoningEfforts: false        # explicitly no reasoning

检测的工作原理

llm.discoverModels 在宿主端被有意收窄为 id/name/contextWindow/maxTokens。此插件添加了一个返回原始列表的宿主路由:

GET /model-capabilities/raw-models?route=

它从你自己的 llm-pi-ai 设置中读取 baseURL/apiKeyEnv,通过 ctx.credentials 解析凭据,获取 {baseURL}/models,并返回 {ok, data},且绝不回显密钥。只有你已配置的路由才可访问(浏览器信任围栏:拒绝跨站,检查 Origin/Host)。

开发

pnpm install
pnpm run typecheck
pnpm run build
pnpm run dev   # watch
Web bundle 是一个 window.__ModuleLoader__.load({id, factory}) 闭包——不是 ESM——因此客户端导入只能限于平台模块(react、@deepseek-ai/dsh-client-*)。

与 dsh-reasoning-efforts 的关系

|  | dsh-reasoning-efforts | dsh-llm-capabilities(本项) |
|---|---|---|
| reasoning 自动检测 | ✅ | ✅(已移植,严格 TS) |
| vision 自动检测 | ❌ | ✅ |
| 输入写入 | ❌ | ✅ |
| 宿主路由 | /thinking-levels/raw-models | /model-capabilities/raw-models + 旧版兼容 |

准备好时即可迁移——过渡期间两者可以共存。

许可证

MIT © hank reed (bamboostrip)

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群