🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

短工具调用 ID mrbeandev/dsh-short-tool-ids

DeepSeek Harness
mrbeandev42 天前有提交已提供中文文档扫描:含敏感能力

为兼容提供商缩短超长工具调用 ID,让会话恢复

29.5/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/26 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add mrbeandev/dsh-short-tool-ids
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · browser
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 42 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 4 处,展示前 4 条)
  • 读取本地文件
    index.mjs:71
    const pkg = JSON.parse(readFileSync(join(dir, 'package.json'), 'utf8'));
  • 读取本地文件
    index.mjs:128
    const adapterPackage = JSON.parse(readFileSync(adapterRequire.resolve('@deepseek-ai/dsh-llm-pi-ai/package.json'), 'utf8'));
  • 读取本地文件
    index.mjs:133
    .find(path => existsSync(resolve(path, 'package.json')));
  • 读取本地文件
    index.mjs:136
    : JSON.parse(readFileSync(resolve(piRoot, 'package.json'), 'utf8')).version;
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 缩短超长工具调用ID
  • 按服务商单独开关

DeepSeek Harness 插件,把超过 64 字符的工具调用 ID 缩短,适配 OpenAI 兼容的 Chat Completions 服务商,可按服务商单独开关

README

由 DeepSeek 最新模型翻译生成
dsh-short-tool-ids 一个实验性的 DeepSeek Harness 插件,在设置 → 模型中,为已配置的 pi-ai 提供商卡片提供每个提供商独立的使用短工具调用 ID 复选框。 修复 OpenAI 兼容的 Chat Completions 历史记录中普通超长工具调用 ID 的问题,例如 maximum length 64, got length 81,而无需编辑已保存的会话。 源代码仓库 为什么存在这个插件 它的构建是为了恢复一个无法再接受消息的真实 DSH 聊天会话。该会话历史记录中包含长度为 81 个字符的工具调用 ID,但接收请求的 OpenAI 兼容 API 最多只接受 64 个字符。每一轮新对话都会重新发送无效的历史记录,因此会话在模型能够响应之前就失败了,并报错: Invalid 'input[5].call_id': string too long. Expected a string with maximum length 64, but got a string with length 81 instead. 最初的路径使用了自定义的 cc 提供商。DSH 的内置规范化在同模型重放期间并未覆盖该提供商,而将其重命名为 openai: cc 也不会激活确切的上游 openai 分支。
展开完整文档(README 剩余 1 节)
dsh-short-tool-ids

一个实验性的 DeepSeek Harness 插件,在设置 → 模型中,为已配置的 pi-ai 提供商卡片提供每个提供商独立的使用短工具调用 ID 复选框。

修复 OpenAI 兼容的 Chat Completions 历史记录中普通超长工具调用 ID 的问题,例如 maximum length 64, got length 81,而无需编辑已保存的会话。

源代码仓库

为什么存在这个插件

它的构建是为了恢复一个无法再接受消息的真实 DSH 聊天会话。该会话历史记录中包含长度为 81 个字符的工具调用 ID,但接收请求的 OpenAI 兼容 API 最多只接受 64 个字符。每一轮新对话都会重新发送无效的历史记录,因此会话在模型能够响应之前就失败了,并报错:

Invalid 'input[5].call_id': string too long. Expected a string with maximum length 64, but got a string with length 81 instead.

最初的路径使用了自定义的 cc 提供商。DSH 的内置规范化在同模型重放期间并未覆盖该提供商,而将其重命名为 openai: cc 也不会激活确切的上游 openai 分支。将其重命名为 openai 仍然会留下同模型重放的缺口。

当 OpenAI 兼容的 Chat Completions 提供商因为工具调用 ID 过长而拒绝恢复的或使用工具的聊天时,请使用此插件。仅在设置 → 模型中为受影响的提供商启用该开关。该插件会在请求时缩短 ID,一致地重写匹配的工具结果,并保持已保存的会话历史记录不变。这是一种针对性的兼容性变通方案,并非针对 Responses 或 Anthropic 消息 ID 的通用修复。

从 npm 安装

使用一条命令将其安装到 Web 配置文件中:

dsh plugin --profile web add dsh-short-tool-ids

该包在其 package.json 元数据中声明了捆绑的主机补丁和浏览器注册,因此不需要全局 npm install。当正在进行的工作完成后,停止现有的 DSH Web 进程,然后正常重启它(不要使用之前的短 ID --patch 标志):

dsh web --no-open --port 3080

刷新现有的 Web 页面。在设置 → 模型中,为返回 ID 长度错误的提供商启用使用短工具调用 ID。重试该聊天。

本地安装

若要从本地检出目录安装,请在终端中执行:

dsh plugin --profile web add "/absolute/path/to/dsh-short-tool-ids"

当正在进行的工作完成后,停止现有的 DSH Web 进程,然后正常重启它(不要使用之前的短 ID --patch 标志):

dsh web --no-open --port 3080

刷新现有的 Web 页面。在设置 → 模型中,为返回 ID 长度错误的提供商启用使用短工具调用 ID。重试该聊天。
所有提供商开关默认均为关闭,包括从 v0.1.0 升级时的 cc。

配置文件安装会在重启后持续保留。每个已启用的提供商覆盖该进程内所有符合条件的模型和会话。它不会启用其他配置文件或单独启动的工作进程。如果包管理器将其安装为链接,请保留本地包文件夹。

不要同时加载此包和旧的启动覆盖层。 同一适配器包装器的两次安装会被拒绝。宿主客户端包清单和浏览器捆绑包会被缓存,因此从仅宿主插件升级需要重启服务器并刷新页面。没有独立的 UI 服务器需要启动,也不需要重建核心 Web;该插件使用现有的设置槽位。

回滚:

dsh plugin --profile web remove dsh-short-tool-ids
Stop/restart the existing server without any short-ID --patch flag.

或者关闭某个提供商的开关;后续调度将停止重写其 ID。

开关的作用

- 在插件拥有的 short-tool-ids.providers 设置映射下持久化一个布尔值,而不是在 API 密钥或提供商自身的配置模式中。
- 默认关闭。更改会在下一次调度时生效,包括已准备但尚未调度的请求。已调度的请求不受影响。
- 仅支持 pi-ai openai-completions 模型。其他协议和原生适配器不受影响,即使该提供商的开关已打开。
- 超过 64 个字符的普通 ID 会变为 call_ 加上 48 个 SHA-256 十六进制字符(共 53 个)。调用和匹配的结果会收到相同的映射。
- 保持有效的 ID、参数、输出、重放元数据、工具执行身份和已保存的会话文件不变。适用于现有历史和未来请求。
- 针对已重写和未改动的 ID 检查冲突;拒绝冲突,而不是配对错误的结果。
- 保持复合 Responses call_id|item_id ID 不变;这并非通用的 Responses/Anthropic 兼容性修复。需要不安全重写的、不受支持的签名/原生历史会被拒绝,而不是被剥离。

对于加载中、不可用、只读或非宿主设置以及保存期间,该复选框会自行禁用。路径范围的写入会保留其他提供商设置并使用修订围栏。保存冲突/失败会显示错误,而不是虚假的成功;不同的提供商卡片订阅共享的设置范围。

可选的 dsh-rpm 复合席位

提供商卡片扩展单元格在每个设置命名空间中为单一占用,因此此插件的 llm-pi-ai 席位还可以承载一个配套控件:当安装了 dsh-rpm 时,一个 速率限制(每分钟请求数) 输入框会渲染在开关下方,读取和写入 dsh-rpm 自己的 dsh-rpm 设置命名空间。开关的行为、文档或默认值不会有任何变化;没有 dsh-rpm 时,该席位仅渲染开关,与之前完全一样,RPM 行永远不会出现。在 v0.3.0 中引入。

兼容性与风险

不保证零回归。 这是一个受版本门控的原型包装器,并非官方支持的适配器-装饰器 API。DSH 的普通 llm/stream 中间件看到的是冻结的持久化请求,无法替换其历史记录。

该插件从运行中 CLI 的依赖树中解析适配器,以可逆方式包装
PiAiAdapter.stream() 和已准备调用的分发,并保留原始的
已准备句柄/模型快照。运行时版本被有意固定:

| 包 | 测试版本 |
| @deepseek-ai/dsh-llm-pi-ai | 0.1.5-rc.2 |
| @earendil-works/pi-ai | 0.85.1 |
| 检查的 CLI | 0.1.5-rc.1 |

未经测试的适配器版本会拒绝插件启动并要求审查。如果升级导致无法启动,请禁用或移除该插件。它不得与另一个包装相同方法的包装器组合使用。UI 占用 llm-pi-ai 的带键 settings.models.provider-card 槽位;该槽位每个键仅支持一个占用者,因此使用相同键的另一个插件需要协调。

将提供程序重命名为字面量 openai: cc 不会触发上游精确的 provider === 'openai' 分支。即使重命名为 openai,也会留下上游同模型规范化缺口。

开发

零 npm 运行时/构建依赖:服务器代码为 ESM;无依赖的客户端构建器使用 shell 现有的 React 生成 DSH 的惰性 ModuleLoader 格式。

npm run build
npm test
DSH_TEST_HARNESS_ENTRY="/absolute/path/to/dsh/lib/bin.js" npm run test:integration
npm run pack:check

如有需要,可使用工作区本地 npm 缓存(npm_config_cache="$PWD/.cache/npm")。
可选的 DSH_TEST_SESSION=/path/to/decoded-session.jsonl 可启用私有历史回放检查。切勿打包或提交真实会话历史。通用测试运行在没有明确安装的 CLI 路径时会跳过集成测试;集成脚本会拒绝缺失的路径,而不是静默跳过适配器验证。

测试包括冻结历史保留、匹配结果、边界长度、冲突、实时提供程序切换、协议隔离、已准备快照、卸载/重复防护、迭代器取消/错误、设置 schema、实际适配器 HTTP 序列化、提供程序复选框写入/错误/只读状态以及惰性浏览器包注册。模拟 HTTP 测试使用临时回环 SSE 端点及伪造凭据,之后将其关闭,并且不进行任何付费 API 调用。
UI 测试使用伪造的 React hook 测试装置,而非完整的浏览器 DOM 测试。

v0.1.0 的实时修复已通过在一个先前停滞的会话上成功回复得到确认。v0.2.0 的提供程序卡片 UI 已在运行中的 DSH Web 会话中检查:切换渲染、保存以及跨页面重新加载的持久化。

许可证

MIT。维护者发布步骤见 RELEASE.md。
预览分享卡片长什么样 ↓mrbeandev/dsh-short-tool-ids
分享 · DeepSeek Harness Hub
mrbeandev/dsh-short-tool-ids

为兼容提供商缩短超长工具调用 ID,让会话恢复

这是你的仓库?认领条目

回到顶部