dsh-llm-error-classify

DSH PLUGIN安全与权限

仓库 lxl8182/dsh-llm-error-classify

安全与权限 未标注验证等级 安全审查:未标注 可信度:未标注 可安装插件

DSH 错误分类修正插件:把被适配器一律判成 AUTH 的提供方失败改写为 PROVIDER_ERROR,让网关原始报错原样显示,不再被 UI 替换成「API 密钥无效」。

一句话选型结论

按资料字段整理

dsh-llm-error-classify 是安全与权限类的 DSH 可安装插件,未做沙盒验证,暂无安全审查结论,列出 4 项功能,没有现成安装命令,需要按仓库 README 接入。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类安全与权限 收录类型可安装插件 验证等级未标注验证等级 安全审查未标注
验证等级 UNKNOWN 未标注验证等级
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-10-05 创建于 2026-10-05
README 6.9 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

4 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-llm-error-classify:让 DeepSeek Harness 显示提供方真实报错

  • AUTH 失败改写为 PROVIDER_ERROR
  • 保留网关原始报错文本
  • 放行前清洗凭证形状子串
  • 不改变重试行为

上游标签

dsh-plugin

验证等级与安全审查

未标注验证等级
自动化流程结论,不是人工审核
验证等级未标注验证等级上游未给出验证结论,安装前请自行确认
安全审查未标注静态分析结论,未标注不代表已通过审查
仓库健康度未标注按仓库活跃度与最近更新时间给出
可信度未标注综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 列出了 4 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 安全审查还没结论,装之前先看仓库改了什么、要什么权限。
  • 没有现成安装命令,要按仓库 README 手动接入。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在安全与权限场景里给 DSH 补能力的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-llm-error-classify当前 未做沙盒验证 未标注 0 未标注 无
dsh-infinite-gen-4 未做沙盒验证 未标注 1,611 未标注 无
cc-safety-net 未做沙盒验证 未标注 1,591 未标注 无
dsh-wallpaper-engine L5 · 运行验证通过 低风险 1,018 0.2.0-rc.2 等 10 个 有
api-relay-audit L5 · 运行验证通过 低风险 875 0.2.0-rc.2 等 10 个 有
hol-guard L4 · 沙盒安装通过 不在扫描口径 828 未标注 有

仓库档案

安全与权限
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方lxl8182仓库 dsh-llm-error-classify · 默认分支 master
分类安全与权限admin-security
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言JavaScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-10-05 · 2026-10-05最后推送 2026-10-05
本站收录2026-10-05首次进入本站目录的时间

README 全文

6.9 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-llm-error-classify



DSH 错误分类修正插件 —— 让提供方的原始报错原样显示,不再被 UI 替换成一句固定的「API 密钥无效」。

网关说「当前分组下没有可用渠道」,你看到的却是「API 密钥无效」,然后跑去换一个根本没问题的密钥。本插件修掉这个误导。

安装

# 从 GitHub 安装
dsh plugin --profile web add github:lxl8182/dsh-llm-error-classify

# 或从本地目录安装
dsh plugin --profile web add /path/to/dsh-llm-error-classify

然后重启 dsh web。零依赖、零构建:纯 JavaScript,无 prepare 脚本,不需要单独跑 npm install。

卸载:

dsh plugin --profile web remove dsh-llm-error-classify

升级 github: 安装:dsh plugin --profile web update dsh-llm-error-classify,再重启 dsh web。

解决什么问题

pi-ai 适配器只凭文本给失败分类(llm-pi-ai/src/stream.ts 的 classifyPiAiError),而它的第一条规则是:

if (/\b(?:401|403)\b/.test(message)) return 'AUTH'

这条规则排在所有更具体的判断之前,所以任何 401/403 都变成 AUTH——余额耗尽、渠道被禁用、令牌无权使用该模型、IP 未白名单、以及真正的密钥错误,到达 UI 时长得一模一样。

而 AUTH 恰好是 UI 唯一拒绝原样渲染的 code:

位置 行为
ui-chat/.../conversation-nodes/event-projection.ts if (code === 'AUTH') return { code, message: '' } — 清空正文
ui-trajectory/.../trajectory-event-projection.ts 同上,第二处 UI 表面
ui-chat/.../chat/MessageItem.tsx code === 'AUTH' → 替换为 message.failure.auth,即「API 密钥无效」
ui-trajectory/.../TrajectoryTable.tsx errorCode === 'AUTH' → 替换为 details.failure.auth

它怎么修

挂到 llm/stream waterfall(packages/llm/llm/src/index.ts)。它包裹适配器原始的 chunk 迭代器,因此能在 agent loop 落盘之前看到终态 finish chunk,改写其中的 failure code。改在这里同时修正持久化会话记录和 UI 渲染。

规则只有一条:凡 code === 'AUTH' 的终态失败,改写成 PROVIDER_ERROR,并保留原始文本。

PROVIDER_ERROR 是刻意选的,两个集合都不在里面:

  • 不在 UI 特判集合里(特判集合为 AUTH、QUOTA、ACCOUNT_QUOTA、ACCOUNT_SIGNED_OUT、ACCOUNT_SIGN_IN_REQUIRED)。UI 的渲染函数对其它一切 code 都直接回落到 message/error,所以提供方原文原样显示。
  • 不在默认可重试集合里(retry-policy.ts:只有 EMPTY_RESPONSE、RATE_LIMIT、SERVER、TIMEOUT、TRANSPORT)。行为与原先的 AUTH 完全一致,不会因此多出重试。

效果对照(displayFailure 实测输出):

AUTH           -> {"code":"AUTH","message":""}                      ← 正文被清空
PROVIDER_ERROR -> {"code":"PROVIDER_ERROR","message":"当前分组下没有可用渠道"}

不再需要维护任何配额词表:不管网关报的是欠费、渠道还是权限,原文都会显示。这也顺带修掉了原版只认配额措辞、其余网关 403 仍误报密钥无效的盲区。

为什么要清洗密钥

上游清空 AUTH 正文是双重目的的(见 event-projection.ts 的注释):

> Provider AUTH messages may echo a masked or partially preserved credential.
> Keep the raw diagnostic in the Session log, but never retain it in UI state.

它既是为了显示得好看,也是一道凭证防泄漏。改写 code 会让原文进入 UI 状态,等于拆掉这道防护,所以插件在放行前先清洗凭证形状的子串(替换为 [redacted]):

  • 厂商前缀密钥:sk-…、sk-proj-…、ghp_…、github_pat_…、xoxb-… 等;
  • 消息里回显的 Bearer。

这里是按形状匹配,不是按值匹配:GenerateOptions 不携带凭证(适配器私下解析),插件拿不到真实密钥,因此一个没有任何厂商前缀特征的裸密钥无法被识别。这是本方案已知的残留缺口——若你所用网关会回显此类密钥,请勿依赖本插件的清洗。

已知限制

  • 不改重试行为,也不改任何非 AUTH 的 code。它只做一件事:AUTH → PROVIDER_ERROR 加凭证清洗。
  • 凭证清洗按形状匹配(见上),无厂商前缀的裸密钥识别不了。
  • 依赖宿主内部的 code 语义(UI 特判集合、默认可重试集合)。DSH 升级若改动这两个集合,需要跟着调整 PROVIDER_ERROR_CODE 的选择。

验证

以下命令在仓库副本里运行(dsh plugin add 装进 profile 的副本只包含运行时文件 index.js、cordis.patch.yml、README.md)。

逻辑层:

node test.mjs
  • 正向:网关配额 403、无可用渠道 403、令牌无权 403、真密钥 401 —— 全部 AUTH → PROVIDER_ERROR;
  • 反向:非 AUTH 的 code(RATE_LIMIT/QUOTA/SERVER)原样不动;
  • 文本保留:渠道报错原文完整可见;
  • 凭证清洗:回显的 sk-proj-… 与 Bearer … 均被抹掉;
  • 结构:非 finish chunk 原样返回、aborted 终态同样修正。

端到端(经真实 llm/stream waterfall):

DSH_REPO=/path/to/dsh-checkout node probe-e2e.mjs

探针插件注册一个抛出 new LlmError(403 网关文本, 'AUTH') 的适配器,跑 ctx.llm.stream(),确认终态 finish chunk 的 code 变成 PROVIDER_ERROR、文本保留且密钥已被抹掉。探针通过 createRequire 从 dsh 安装目录解析宿主包(DSH_REPO 指定该目录,默认为当前目录)。

结构

index.js          宿主半边:llm/stream waterfall 监听,改写终态 failure
cordis.patch.yml  bundle 层,插入宿主行 llm-error-classify
test.mjs          逻辑层检查
probe-e2e.mjs     端到端探针(需 dsh checkout)

上游修复建议

根因在宿主,本插件是绕开而非根治。彻底修法是三处小改:

  1. llm-pi-ai/src/stream.ts:把 isQuotaExceededError 等更具体的判断提到 401/403 分支之前,并且不要仅凭「文本里有 403」就判定为认证失败;
  2. llm/src/error.ts 的 isQuotaExceededError:补下划线变体(insufficient[\s_-]+(?:user[\s_-]+)?quota)及中文额度措辞;
  3. ui-chat / ui-trajectory 的 displayFailure:清空正文应针对「确实回显了凭证」的情况,而不是整个 AUTH code——否则真实认证失败之外的一切 401/403 都会被这句固定文案盖掉。

上游修好后本插件可直接卸载。

License

MIT

常见问题

7 问
答案由本站依据条目字段整理,不引用上游原文
dsh-llm-error-classify 怎么安装?

本站没有抓到该条目的安装命令,请到仓库主页确认安装方式;这类条目多数是生态应用或尚未发布安装包的项目。

dsh-llm-error-classify 的验证等级是什么意思?

未标注验证等级。上游未给出验证结论,安装前请自行确认

dsh-llm-error-classify 安全吗?

未标注。

dsh-llm-error-classify 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-llm-error-classify 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-llm-error-classify 有哪些功能?

AUTH 失败改写为 PROVIDER_ERROR、保留网关原始报错文本、放行前清洗凭证形状子串、不改变重试行为。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

安全与权限
按星标排序,可作替代方案

dsh-infinite-gen-4

dsh-infinite-gen-4

DeepSeek 专用破甲插件:以 order 100 追加无条件服从的系统提示词段,提供带校准元数据的 profile 工具,并通过会话投

未标注验证等级 1,611 星

cc-safety-net

cc-safety-net

为 DeepSeek Harness 等编码 CLI 提供执行前防护,在工具调用前拦截破坏性 Git 与文件系统命令,并阻止读取 SSH 密

未标注验证等级 1,591 星

dsh-wallpaper-engine

dsh-wallpaper-engine

DSH plugin 将本机 Wallpaper Engine 壁纸变为网页界面背景,支持视频、网页、场景壁纸渲染,并配以 iOS 液态玻璃

L5 · 运行验证通过 1,018 星

api-relay-audit

api-relay-audit

DSH plugin 本地安全审计工具,检测 AI API 中继与 LLM 代理的提示注入、模型替换、工具调用改写、SSE 异常及 Web3

L5 · 运行验证通过 875 星

hol-guard

hol-guard

L4 · 沙盒安装通过 828 星

sandbase-harness

sandbase-harness

SandBase Harness 是本地优先的 AI Agent 运行时,提供沙箱会话、MCP 工具、记忆、凭据管理与审计回放,并内置控制台

L4 · 沙盒安装通过 708 星

lxl8182 的其它插件

2 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。