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

花费速览 zaowanshangxian/deepseek-harness-plugins

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

在用量卡片末尾追加一行本轮花费金额估算

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 9 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 88 处,展示前 80 条)
  • 发起网络请求
    dsh-memhub/lib/client.js:26
    return fetch('/memhub/api' + path, { headers: { accept: 'application/json' } }).then(function (r) {
  • 发起网络请求
    dsh-memhub/lib/client.js:31
    return fetch('/memhub/api' + path, {
  • 发起网络请求
    人格与口癖/lib/client.js:133
    fetch(API, { credentials: 'same-origin' })
  • 发起网络请求
    人格与口癖/lib/client.js:138
    return fetch(PREVIEW, { credentials: 'same-origin' })
  • 发起网络请求
    人格与口癖/lib/client.js:148
    fetch(API, {
  • 发起网络请求
    人格与口癖/lib/client.js:158
    return fetch(PREVIEW, { credentials: 'same-origin' })
  • 读取本地文件
    人格与口癖/lib/index.js:93
    return sanitizeSettings(JSON.parse(readFileSync(SETTINGS_PATH, 'utf8')))
  • 写入本地文件
    人格与口癖/lib/index.js:103
    mkdirSync(SETTINGS_DIR, { recursive: true })
  • 写入本地文件
    人格与口癖/lib/index.js:105
    writeFileSync(tmp, JSON.stringify(merged, null, 2))
  • 写入本地文件
    人格与口癖/lib/index.js:106
    renameSync(tmp, SETTINGS_PATH)
  • 读取本地文件
    人格与口癖/lib/index.js:115
    if (!existsSync(SETTINGS_PATH)) {
  • 写入本地文件
    人格与口癖/lib/index.js:116
    mkdirSync(SETTINGS_DIR, { recursive: true })
  • 写入本地文件
    人格与口癖/lib/index.js:117
    writeFileSync(SETTINGS_PATH, JSON.stringify(sanitizeSettings(DEFAULT_SETTINGS), null, 2))
  • 发起网络请求
    人格与口癖/src/client.template.js:133
    fetch(API, { credentials: 'same-origin' })
  • 发起网络请求
    人格与口癖/src/client.template.js:138
    return fetch(PREVIEW, { credentials: 'same-origin' })
  • 发起网络请求
    人格与口癖/src/client.template.js:148
    fetch(API, {
  • 发起网络请求
    人格与口癖/src/client.template.js:158
    return fetch(PREVIEW, { credentials: 'same-origin' })
  • 读取本地文件
    人格与口癖/src/host.mjs:93
    return sanitizeSettings(JSON.parse(readFileSync(SETTINGS_PATH, 'utf8')))
  • 写入本地文件
    人格与口癖/src/host.mjs:103
    mkdirSync(SETTINGS_DIR, { recursive: true })
  • 写入本地文件
    人格与口癖/src/host.mjs:105
    writeFileSync(tmp, JSON.stringify(merged, null, 2))
  • 写入本地文件
    人格与口癖/src/host.mjs:106
    renameSync(tmp, SETTINGS_PATH)
  • 读取本地文件
    人格与口癖/src/host.mjs:115
    if (!existsSync(SETTINGS_PATH)) {
  • 写入本地文件
    人格与口癖/src/host.mjs:116
    mkdirSync(SETTINGS_DIR, { recursive: true })
  • 写入本地文件
    人格与口癖/src/host.mjs:117
    writeFileSync(SETTINGS_PATH, JSON.stringify(sanitizeSettings(DEFAULT_SETTINGS), null, 2))
  • 发起网络请求
    工具税/lib/client.js:33
    return fetch(BASE + path, {
  • 读取本地文件
    工具税/lib/index.js:123
    const pkg = JSON.parse(readFileSync(join(profileDir, 'package.json'), 'utf8'))
  • 读取本地文件
    工具税/lib/index.js:132
    const patch = readFileSync(join(profileDir, 'cordis.patch.yml'), 'utf8')
  • 读取本地文件
    工具税/lib/index.js:147
    if (existsSync(pnpmDir)) {
  • 读取本地文件
    工具税/lib/index.js:148
    for (const entry of readdirSync(pnpmDir)) {
  • 读取本地文件
    工具税/lib/index.js:150
    if (existsSync(guess)) candidates.push(guess)
  • 读取本地文件
    工具税/lib/index.js:156
    if (statSync(dir).isDirectory()) return dir
  • 读取本地文件
    工具税/lib/session-scan.mjs:73
    const buf = readFileSync(path)
  • 读取本地文件
    工具税/lib/session-scan.mjs:174
    entries = readdirSync(dir, { withFileTypes: true })
  • 读取本地文件
    工具税/lib/session-scan.mjs:187
    const st = statSync(p)
  • 读取本地文件
    工具税/lib/session-scan.mjs:202
    const data = JSON.parse(readFileSync(cachePath, 'utf8'))
  • 写入本地文件
    工具税/lib/session-scan.mjs:211
    mkdirSync(dirname(cachePath), { recursive: true })
  • 写入本地文件
    工具税/lib/session-scan.mjs:212
    writeFileSync(cachePath, JSON.stringify(data))
  • 发起网络请求
    工具税/src/client.js:33
    return fetch(BASE + path, {
  • 读取本地文件
    工具税/src/host.mjs:123
    const pkg = JSON.parse(readFileSync(join(profileDir, 'package.json'), 'utf8'))
  • 读取本地文件
    工具税/src/host.mjs:132
    const patch = readFileSync(join(profileDir, 'cordis.patch.yml'), 'utf8')
  • 读取本地文件
    工具税/src/host.mjs:147
    if (existsSync(pnpmDir)) {
  • 读取本地文件
    工具税/src/host.mjs:148
    for (const entry of readdirSync(pnpmDir)) {
  • 读取本地文件
    工具税/src/host.mjs:150
    if (existsSync(guess)) candidates.push(guess)
  • 读取本地文件
    工具税/src/host.mjs:156
    if (statSync(dir).isDirectory()) return dir
  • 读取本地文件
    工具税/src/session-scan.mjs:73
    const buf = readFileSync(path)
  • 读取本地文件
    工具税/src/session-scan.mjs:174
    entries = readdirSync(dir, { withFileTypes: true })
  • 读取本地文件
    工具税/src/session-scan.mjs:187
    const st = statSync(p)
  • 读取本地文件
    工具税/src/session-scan.mjs:202
    const data = JSON.parse(readFileSync(cachePath, 'utf8'))
  • 写入本地文件
    工具税/src/session-scan.mjs:211
    mkdirSync(dirname(cachePath), { recursive: true })
  • 写入本地文件
    工具税/src/session-scan.mjs:212
    writeFileSync(cachePath, JSON.stringify(data))
  • 写入剪贴板
    快速显示花费/lib/client.js:106
    copyText: function () { try { navigator.clipboard.writeText(reportText()) } catch (e) {} },
  • 发起网络请求
    快速显示花费/lib/client.js:333
    fetch(SUMMARY_URLS[index], { credentials: 'same-origin' })
  • 发起网络请求
    快速显示花费/lib/client.js:407
    fetch(BALANCE_URLS[index], { credentials: 'same-origin' })
  • 写入剪贴板
    快速显示花费/src/client.js:106
    copyText: function () { try { navigator.clipboard.writeText(reportText()) } catch (e) {} },
  • 发起网络请求
    快速显示花费/src/client.js:333
    fetch(SUMMARY_URLS[index], { credentials: 'same-origin' })
  • 发起网络请求
    快速显示花费/src/client.js:407
    fetch(BALANCE_URLS[index], { credentials: 'same-origin' })
  • 写入剪贴板
    更多表情和颜文字/lib/client.js:106
    copyText: function () { try { navigator.clipboard.writeText(reportText()) } catch (e) {} },
  • 发起网络请求
    更多表情和颜文字/lib/client.js:345
    .fetch(API_SETTINGS, { credentials: 'same-origin' })
  • 发起网络请求
    更多表情和颜文字/lib/client.js:367
    .fetch(API_SETTINGS, {
  • 写入剪贴板
    更多表情和颜文字/lib/client.js:470
    navigator.clipboard.writeText(text)
  • 写入剪贴板
    更多表情和颜文字/lib/client.js:659
    navigator.clipboard.write([new window.ClipboardItem({ 'image/png': blob })]).then(
  • 读取本地文件
    更多表情和颜文字/lib/index.js:85
    const raw = readFileSync(SETTINGS_PATH, 'utf8')
  • 写入本地文件
    更多表情和颜文字/lib/index.js:96
    mkdirSync(SETTINGS_DIR, { recursive: true })
  • 写入本地文件
    更多表情和颜文字/lib/index.js:98
    writeFileSync(tmp, JSON.stringify(merged, null, 2))
  • 写入本地文件
    更多表情和颜文字/lib/index.js:99
    renameSync(tmp, SETTINGS_PATH)
  • 读取本地文件
    更多表情和颜文字/lib/index.js:109
    if (!existsSync(SETTINGS_PATH)) {
  • 写入本地文件
    更多表情和颜文字/lib/index.js:110
    mkdirSync(SETTINGS_DIR, { recursive: true })
  • 写入本地文件
    更多表情和颜文字/lib/index.js:111
    writeFileSync(SETTINGS_PATH, JSON.stringify(sanitizeSettings(DEFAULT_SETTINGS), null, 2))
  • 写入剪贴板
    更多表情和颜文字/src/client.template.js:106
    copyText: function () { try { navigator.clipboard.writeText(reportText()) } catch (e) {} },
  • 发起网络请求
    更多表情和颜文字/src/client.template.js:345
    .fetch(API_SETTINGS, { credentials: 'same-origin' })
  • 发起网络请求
    更多表情和颜文字/src/client.template.js:367
    .fetch(API_SETTINGS, {
  • 写入剪贴板
    更多表情和颜文字/src/client.template.js:470
    navigator.clipboard.writeText(text)
  • 写入剪贴板
    更多表情和颜文字/src/client.template.js:659
    navigator.clipboard.write([new window.ClipboardItem({ 'image/png': blob })]).then(
  • 读取本地文件
    更多表情和颜文字/src/host.mjs:85
    const raw = readFileSync(SETTINGS_PATH, 'utf8')
  • 写入本地文件
    更多表情和颜文字/src/host.mjs:96
    mkdirSync(SETTINGS_DIR, { recursive: true })
  • 写入本地文件
    更多表情和颜文字/src/host.mjs:98
    writeFileSync(tmp, JSON.stringify(merged, null, 2))
  • 写入本地文件
    更多表情和颜文字/src/host.mjs:99
    renameSync(tmp, SETTINGS_PATH)
  • 读取本地文件
    更多表情和颜文字/src/host.mjs:109
    if (!existsSync(SETTINGS_PATH)) {
  • 写入本地文件
    更多表情和颜文字/src/host.mjs:110
    mkdirSync(SETTINGS_DIR, { recursive: true })
  • 写入本地文件
    更多表情和颜文字/src/host.mjs:111
    writeFileSync(SETTINGS_PATH, JSON.stringify(sanitizeSettings(DEFAULT_SETTINGS), null, 2))
扫描于 2026/11/4(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 插件集:可独立安装的 DSH 插件,一个插件一个文件夹(含「更多表情和颜文字」)

README

由 DeepSeek 最新模型翻译生成
DeepSeek Harness 插件集 自制的 DeepSeek Harness(DSH) 插件集合。每个插件是一个可独立安装的文件夹,带 README、package.json、cordis.patch.yml。 ⚠️ 安装前请先读 DISCLAIMER.md(风险告知 / 免责声明)。插件会修改 DSH profile 配置,请先备份。 安全策略见 SECURITY.md,数据处理见 PRIVACY.md。 插件 | 插件 | 说明 | 版本 | 文档 | | 快速显示花费 dsh-plugin-inline-cost | 官方「Token 用量」卡片打开时,末尾多一行「花费金额」;会话卡片取 dsh-token-mb 官方记录,单轮卡片按本轮数字估算 | 0.9.1 | README · 设计 · 排错 · 变更 | | 更多表情和颜文字 dsh-plugin-more-emoji | 输入框旁的 Emoji / 颜文字 / 文字表情 / 短句 / 图片贴纸面板(44 分类 / 911 条 / 36 贴纸);收藏、最近使用、一键发送;配置中心;附 emoji_pack 工具 | 0.7.2 | README · 设计 · 排错 · 智能体 · 变更 | | 花费金额 | 表情面板 | | 花费金额 | 表情面板 |
展开完整文档(README 剩余 1 节)
DeepSeek Harness 插件集

自制的 DeepSeek Harness(DSH) 插件集合。每个插件是一个可独立安装的文件夹,带 README、package.json、cordis.patch.yml。

⚠️ 安装前请先读 DISCLAIMER.md(风险告知 / 免责声明)。插件会修改 DSH profile 配置,请先备份。
安全策略见 SECURITY.md,数据处理见 PRIVACY.md。

插件

| 插件 | 说明 | 版本 | 文档 |
| 快速显示花费 dsh-plugin-inline-cost | 官方「Token 用量」卡片打开时,末尾多一行「花费金额」;会话卡片取 dsh-token-mb 官方记录,单轮卡片按本轮数字估算 | 0.9.1 | README · 设计 · 排错 · 变更 |
| 更多表情和颜文字 dsh-plugin-more-emoji | 输入框旁的 Emoji / 颜文字 / 文字表情 / 短句 / 图片贴纸面板(44 分类 / 911 条 / 36 贴纸);收藏、最近使用、一键发送;配置中心;附 emoji_pack 工具 | 0.7.2 | README · 设计 · 排错 · 智能体 · 变更 |

| 花费金额 | 表情面板 |
| 花费金额 | 表情面板 |

两个插件都遵循同一条铁律:不接管任何官方槽位、不替换官方组件,只做「新 id 注册」或「纯 DOM 观察追加」;任何异常都静默跳过,移除插件零残留。

安装

通用步骤(以 Windows 为例):

1. 备份 profile

set P=%USERPROFILE%\.dsh\profiles\desktop
copy "%P%\package.json" "%P%\package.json.bak"
copy "%P%\cordis.patch.yml" "%P%\cordis.patch.yml.bak"

2. 中文目录先映射成 ASCII 路径(必须)

pnpm 写 package.json 时会把中文路径写成 GBK 乱码,轻则清单损坏、重则 DSH 打不开。

mklink /J L:\work\plugins\more-emoji "L:\work\deepseek-harness-plugins\更多表情和颜文字" mklink /J L:\work\plugins\inline-cost "L:\work\deepseek-harness-plugins\快速显示花费"

3. 在 DSH 里安装

plugin_manager install_bundle target = L:\work\plugins\more-emoji
plugin_manager install_bundle target = L:\work\plugins\inline-cost

4. 校验 profile 没坏

python -c "import json,os;p=os.path.expanduser('~/.dsh/profiles/desktop/package.json');d=json.load(open(p,encoding='utf-8'));print('OK',len(d['dsh']['profile']['bundles']),'bundles')"

5. 生效:重启一次 DSH(客户端 bundle 在 Host 启动时构建)。只刷新页面不一定能拿到新 bundle。

装坏了打不开?双击桌面 DSH一键恢复.cmd(脚本 L:\work\scripts\dsh-profile-recover.ps1,-DryRun 可预演)。

卸载

plugin_manager remove_bundle dsh-plugin-more-emoji
plugin_manager remove_bundle dsh-plugin-inline-cost

手动版:从 profile package.json 的 dsh.profile.bundles 删掉对应行 → dsh plugin --profile desktop remove <包名> → rmdir L:\work\plugins\<junction>(只删链接,不删仓库)。残留数据见 PRIVACY.md。

兼容性

| 项 | 要求 |
| DSH | >=0.2.1-rc.2 <0.3.0(主力测试版本 0.2.1-rc.3) |
| Node | >= 20(插件本身不跑在 Node 里,构建脚本需要) |
| 可选依赖 | dsh-token-mb(花费插件用它取官方会话记录;没装则走估算) |
| 平台 | 桌面版 / dsh web 均可;贴纸的 paste 通道在个别版本可能失效(会静默跳过) |

智能体(模型)怎么用

- 更多表情和颜文字:模型有 emoji_pack 工具(参数 kind / category / query / count / random),系统提示会自动教它怎么用、用多少。细节见 AGENT.md。
- 快速显示花费:纯 UI,不提供工具。模型不需要调用,也不要声称金额是官方账单(是官方记录或估算)。
- 两个插件都不会自动上传任何数据;错误记录只留在浏览器本地,只有你手动复制或提 issue,它才会离开本机。

文档地图

| 文档 | 看它做什么 |
| docs/ARCHITECTURE.md | DSH 插件模型、Host/Client 两半、bundle 与槽位、两个插件的位置 |
| docs/DEVELOPMENT.md | 本地构建、校验、离线 harness、真实 GUI 的 CDP 验收 |
| docs/RELEASING.md | 版本号、tag、发布检查清单、网络不通时推送的兜底办法 |
| CONTRIBUTING.md | 提 PR / 加内容 / 加插件的要求与流程 |
| FAQ.md | 反复被问的问题(装不上、不生效、打不开…) |
| SECURITY.md | 安全模型、权限边界、怎么报告漏洞 |
| PRIVACY.md | 读什么、存哪里、去哪了 |
| CODE-REVIEW.md | 代码审核记录(含历史问题清单与剩余风险) |
| DISCLAIMER.md | 免责声明(安装前必读) |
| ROADMAP.md | 想做的、不打算做的 |
| ERROR-REPORTS/ | 按版本记录的问题复盘 |

版本变更

- 根汇总:CHANGELOG.md
- 花费插件:快速显示花费/CHANGELOG.md
- 表情插件:更多表情和颜文字/CHANGELOG.md

参与

欢迎提 issue / PR:先读 CONTRIBUTING.md;改代码请守住「零接管 + 保险丝 + 可卸载」这三条。
新内容(表情/颜文字/短句)只改 更多表情和颜文字/src/packs.mjs 一个文件即可。

许可

MIT(各插件文件夹内 LICENSE)。使用即视为已阅读并同意 DISCLAIMER.md。
预览分享卡片长什么样 ↓zaowanshangxian/deepseek-harness-plugins
分享 · DeepSeek Harness Hub
zaowanshangxian/deepseek-harness-plugins

在用量卡片末尾追加一行本轮花费金额估算

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部