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

模型路由与记忆 ponm3ay/dsh-plugins

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

按任务分配模型,跨会话记住上下文

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · chat
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 25 天前
档位由哪些信号合成

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/7) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 57 处,展示前 32 条)
  • 读取本地文件
    plugins/dsh-provider-accent/build-client.mjs:16
    const id = JSON.parse(readFileSync(join(root, 'package.json'), 'utf8')).name
  • 读取本地文件
    plugins/dsh-provider-accent/build-client.mjs:23
    const source = readFileSync(join(root, 'src', 'client.js'), 'utf8')
  • 写入本地文件
    plugins/dsh-provider-accent/build-client.mjs:29
    mkdirSync(join(root, 'lib'), { recursive: true })
  • 写入本地文件
    plugins/dsh-provider-accent/build-client.mjs:30
    writeFileSync(join(root, 'lib', 'client.js'), bundle)
  • 读取本地文件
    plugins/dsh-provider-accent/lib/index.js:28
    const bundle = readFileSync(fileURLToPath(new URL("./client.js", import.meta.url)), "utf8");
  • 读取本地文件
    plugins/dsh-subagent-usage/build-client.mjs:17
    const id = JSON.parse(readFileSync(join(root, 'package.json'), 'utf8')).name
  • 读取本地文件
    plugins/dsh-subagent-usage/build-client.mjs:24
    const source = readFileSync(join(root, 'src', 'client.js'), 'utf8')
  • 写入本地文件
    plugins/dsh-subagent-usage/build-client.mjs:30
    mkdirSync(join(root, 'lib'), { recursive: true })
  • 写入本地文件
    plugins/dsh-subagent-usage/build-client.mjs:31
    writeFileSync(join(root, 'lib', 'client.js'), bundle)
  • 读取本地文件
    plugins/dsh-whale-backdrop/build-client.mjs:16
    const id = JSON.parse(readFileSync(join(root, 'package.json'), 'utf8')).name
  • 读取本地文件
    plugins/dsh-whale-backdrop/build-client.mjs:23
    const source = readFileSync(join(root, 'src', 'client.js'), 'utf8')
  • 写入本地文件
    plugins/dsh-whale-backdrop/build-client.mjs:29
    mkdirSync(join(root, 'lib'), { recursive: true })
  • 写入本地文件
    plugins/dsh-whale-backdrop/build-client.mjs:30
    writeFileSync(join(root, 'lib', 'client.js'), bundle)
  • 读取本地文件
    plugins/dsh-whale-backdrop/entry.js:50
    for (const entry of await readdir(ASSETS, { withFileTypes: true })) {
  • 读取本地文件
    plugins/dsh-whale-backdrop/entry.js:54
    const info = await stat(join(ASSETS, entry.name))
  • 读取本地文件
    plugins/dsh-whale-backdrop/entry.js:86
    const info = await stat(file.absolute)
  • 读取本地文件
    plugins/dsh-whale-backdrop/entry.js:108
    createReadStream(file.absolute).pipe(res)
  • 发起网络请求
    plugins/dsh-whale-backdrop/lib/client.js:73
    fetch(MANIFEST, { cache: 'no-store' })
  • 发起网络请求
    plugins/dsh-whale-backdrop/src/client.js:71
    fetch(MANIFEST, { cache: 'no-store' })
  • 写入本地文件
    plugins/dsh-whale-memory/index.js:138
    mkdirSync(dir, { recursive: true })
  • 写入本地文件
    plugins/dsh-whale-memory/index.js:150
    appendFileSync(LOG_FILE, line)
  • 读取本地文件
    plugins/dsh-whale-memory/index.js:153
    if (statSync(LOG_FILE).size > LOG_CAP) {
  • 读取本地文件
    plugins/dsh-whale-memory/index.js:154
    const text = readFileSync(LOG_FILE, 'utf8').slice(-(LOG_CAP * 0.8))
  • 写入本地文件
    plugins/dsh-whale-memory/index.js:155
    writeFileSync(LOG_FILE, text)
  • 读取本地文件
    plugins/dsh-whale-memory/index.js:167
    if (existsSync(file)) {
  • 读取本地文件
    plugins/dsh-whale-memory/index.js:170
    const text = readFileSync(file, 'utf8').replace(/^ FEFF/, '')
  • 写入本地文件
    plugins/dsh-whale-memory/index.js:182
    writeFileSync(file, JSON.stringify(value, null, 2))
  • 读取本地文件
    plugins/dsh-whale-memory/index.js:443
    const stat = statSync(file)
  • 读取本地文件
    plugins/dsh-whale-memory/index.js:445
    const text = readFileSync(file, 'utf8')
  • 写入本地文件
    plugins/dsh-whale-memory/index.js:449
    writeFileSync(file, start === -1 ? kept : kept.slice(start + 1))
  • 写入本地文件
    plugins/dsh-whale-memory/index.js:462
    appendFileSync(file, buf.join(''))
  • 删除本地文件
    plugins/dsh-whale-memory/index.js:778
    unlinkSync(row.file)
扫描于 2026/11/1(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

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

功能亮点

  • 按任务分配模型
  • 跨会话长期记忆
  • 子代理用量显示

DSH 插件集:按任务给不同模型派活(设置页「辅助模型」槽位面板 + 压缩槽真接线)、跨会话长期记忆(流水捕获 → 摘要注入 → 自动整理)、子代理用量显示、界面背景。本地插件源码 + 安装脚本 + 凭证规范,不改 DSH 本体源码。

README

由 DeepSeek 最新模型翻译生成
dsh-model-routing DSH 插件集:按任务给不同模型派活 + 跨会话长期记忆。 (另含两个装饰件:子代理用量显示、界面背景。) 四只插件各管一段: | 能力 | 插件 | | 按任务选模型(设置页「辅助模型」槽位面板,落盘机器可读的槽位表) | dsh-aux-models | | 跨会话长期记忆(流水捕获 → 摘要注入 → 自动整理,注入前威胁扫描) | dsh-whale-memory | | 子代理用量显示(本轮实际模型 / 推理等级 / token) | dsh-subagent-usage | | 界面背景 + 面板半透明 | dsh-whale-backdrop | 本仓库收录「大肥鱼」为 DeepSeek Harness(DSH)写的插件(本地插件源码 + 安装/回滚脚本 + 第三方插件清单)。每个插件都能单独安装、单独卸载,不改 DSH 本体源码。
展开完整文档(README 剩余 1 节)
dsh-model-routing

DSH 插件集:按任务给不同模型派活 + 跨会话长期记忆。 (另含两个装饰件:子代理用量显示、界面背景。)

四只插件各管一段:

| 能力 | 插件 |
| 按任务选模型(设置页「辅助模型」槽位面板,落盘机器可读的槽位表) | dsh-aux-models |
| 跨会话长期记忆(流水捕获 → 摘要注入 → 自动整理,注入前威胁扫描) | dsh-whale-memory |
| 子代理用量显示(本轮实际模型 / 推理等级 / token) | dsh-subagent-usage |
| 界面背景 + 面板半透明 | dsh-whale-backdrop |

本仓库收录「大肥鱼」为 DeepSeek Harness(DSH)写的插件(本地插件源码 + 安装/回滚脚本 + 第三方插件清单)。每个插件都能单独安装、单独卸载,不改 DSH 本体源码。

- 🧩 插件源码 → plugins/
- 🔐 凭证与密钥规范 → docs/credentials.md
- 📦 第三方插件清单(不打包,只给出处与安装命令)→ docs/third-party-plugins.md
- 🛠 安装 / 卸载 / 回滚 → docs/install.md

插件一览

| 插件 | 一句话 | 形态 | 版本 |
| dsh-subagent-usage | 在对话里显示本轮实际用的模型 / 推理等级 / token 消耗,子代理会话尤其好用 | Host + Client | 0.1.0 |
| dsh-whale-memory | 长期记忆:自动捕获会话流水、自动注入记忆摘要(威胁快照扫描 + 每会话冻结)、会话结束自动用便宜模型压缩成摘要 | Host | 0.2.0 |
| dsh-whale-backdrop | 给界面铺一张背景画 + 面板半透明,每次刷新随机换图 | Host + Client | 0.1.0 |
| dsh-aux-models(独立仓) | 设置页「辅助模型」面板:按任务选模型(服务商/模型/超时),选型落盘一份机器可读的槽位表 | Host + Client | 0.1.0 |

三只插件都遵循同一条设计约束:只做加法。注册自己的服务、路由、样式与钩子,卸载即还原,不修改 DSH 本体的任何文件。

「辅助模型」面板 2026-10-06 已拆成独立仓库 ponm3ay/dsh-aux-models:它不依赖本仓任何东西,装法看那边的 README。本仓只留一行索引、不再放副本,避免两份源码各走各的。

快速开始

前置:已经装好 DSH(桌面端或 CLI),并且知道自己的 profile 目录。

1) 取得源码
git clone https://github.com/ponm3ay/dsh-model-routing.git
cd dsh-model-routing

2) 安装(自动找 $DSH_HOME/profiles/<profile> 并挂载本地插件) pwsh -File scripts/install.ps1 -Profile desktop # Windows bash scripts/install.sh -p desktop # macOS / Linux

3) 重启 DSH(或刷新页面)后生效

只想装某一个插件:

pwsh -File scripts/install.ps1 -Profile desktop -Plugin dsh-subagent-usage

手动安装的原理与每一步细节(含回滚)见 docs/install.md。

凭证与密钥

这个仓库里没有任何密钥,将来也不会有。 所有插件都遵守同一条规矩:

配置文件里只写凭证的名字(apiKeyEnv: MY_API_KEY),真值只存在于 用户级环境变量 或 DSH 凭证库($DSH_HOME/.credentials.yaml)。

正确:仓库里是引用名 config: apiKeyEnv: TOKENHUB_API_KEY # 真值在环境变量/凭证库里

错误:真值进了文件,一提交就泄露 config: apiKey: sk-xxxxxxxxxxxxxxxx

要点:

1. 复制 .env.example 得到本地 .env 时,.env 已被 .gitignore 排除;但更推荐直接用 setx(Windows)或 export(*nix)设置用户级环境变量——不落文件、不参与同步。
2. 密钥不要放进任何会被云同步的目录(OneDrive / iCloud / Dropbox 覆盖的桌面、文档、图片)。
3. 提交前先自查:pwsh -File scripts/verify-no-secrets.ps1(CI 也会跑同一套规则)。
4. 一旦密钥进过 git 历史或同步盘:吊销并重新签发,删文件不算处置。

完整规范、泄露处置流程、CI 配置见 docs/credentials.md。

仓库结构

dsh-model-routing/
├── plugins/ # 自研插件源码,一个目录一个插件 │ ├── dsh-subagent-usage/ │ ├── dsh-whale-memory/ │ └── dsh-whale-backdrop/ ├── docs/ │ ├── credentials.md # 凭证与密钥规范 │ ├── install.md # 安装 / 卸载 / 回滚 │ └── third-party-plugins.md # 第三方插件清单与出处 ├── scripts/ │ ├── install.ps1 install.sh # 安装脚本 │ ├── uninstall.ps1 # 卸载 / 回滚 │ └── verify-no-secrets.ps1 # 密钥自查(CI 同款) ├── .github/workflows/ci.yml # 密钥扫描 + 语法检查 ├── .env.example # 环境变量样板(占位符) └── SECURITY.md CONTRIBUTING.md CHANGELOG.md LICENSE

插件是怎么被 DSH 加载的(30 秒版)

DSH 的 profile 是一个 pnpm 项目:$DSH_HOME/profiles/<profile>/。

1. package.json 的 dependencies 里挂上插件包(本地插件用 link:<绝对路径>);
2. package.json 的 dsh.profile.bundles 里列出要激活的插件;
3. bundle 型插件自带 dsh.bundle.patch(cordis.patch.yml),被列出后自动挂载,改完免重启热生效;
4. 非 bundle 型插件要在 profile 的 cordis.patch.yml 里手写一行 - insert: { id, name } 才会激活。

本仓库的插件都是 bundle 型,装完刷新页面即生效。

开发

插件是普通的 ESM(Node ≥ 22.19 或 ≥ 24)。带浏览器半边的插件用自带的构建脚本产出 lib/client.js:

node plugins/dsh-subagent-usage/build-client.mjs # src/client.js -> lib/client.js

自测脚本:

node plugins/dsh-subagent-usage/verify/fold-test.mjs
node plugins/dsh-subagent-usage/verify/client-test.mjs
node plugins/dsh-whale-backdrop/build-client.mjs
pwsh -File scripts/verify-no-secrets.ps1 # 提交前必跑

改代码免重启生效的小技巧(DSH 的模块缓存按 URL 记):同时改文件名与 patch 行 id。
详见各插件 README。

第三方插件

DSH 生态里好用的插件不止这些。本仓库不打包别人的作品(版权与上游维护归原作者),而是在 docs/third-party-plugins.md 里维护一份清单:包名、用途、出处仓库、许可证、安装命令。

安全

发现安全问题请按 SECURITY.md 私下报告,不要开公开 issue。

贡献

欢迎 PR。提交前请读 CONTRIBUTING.md——最重要的一条: 不要提交任何密钥、token、真实路径或个人信息。

许可

MIT © 2026 ponm3ay

本仓库里的插件都是「大肥鱼」给自己造的零件:注释里留着它的口径、踩过的坑和当时的账。
如果你也住在 DSH 里,欢迎拿去用。
预览分享卡片长什么样 ↓ponm3ay/dsh-plugins
分享 · DeepSeek Harness Hub
ponm3ay/dsh-plugins

按任务分配模型,跨会话记住上下文

回到顶部