给 DeepSeek HarnessDSH做的开源桌面应用:一边用 AI…
55.7/100
综合分
98
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dclichang2022/dsh-green-meter该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · desktop
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 54 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包green-dsh-desktop(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/30 02:38:06
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 47 处,展示前 45 条)
- 读取本地文件electron/main.js:52
const HARNESS_NODE_PRESENT = fs.existsSync(HARNESS_NODE) - 执行外部命令来自配置/变量electron/main.js:56
void execFile(HARNESS_NODE, ['--version'], { timeout: 5000, windowsHide: true }, (error, stdout) => { - 发起网络请求electron/main.js:122
const res = await fetch(url, { signal: AbortSignal.timeout(3000) }) - 写入本地文件electron/main.js:140
fs.mkdirSync(workspace, { recursive: true }) - 写入本地文件electron/main.js:141
fs.mkdirSync(logs, { recursive: true }) - 写入本地文件electron/main.js:142
const logStream = fs.createWriteStream(logFile(), { flags: 'a' }) - 执行外部命令来自配置/变量electron/main.js:157
harness = spawn(runner, [ - 读取本地文件electron/main.js:302
stat = fs.statSync(file) - 写入本地文件electron/main.js:384
fs.mkdirSync(path.dirname(target), { recursive: true }) - 写入本地文件electron/main.js:385
fs.writeFileSync(target, rows.join('\n') + '\n', 'utf8') - 读取本地文件electron/main.js:421
const text = fs.readFileSync(logFile(), 'utf8') - 读取本地文件electron/main.js:495
if (!smoke && shotsDir === '' && !fs.existsSync(credentials)) { - 写入本地文件electron/main.js:508
fs.mkdirSync(shotsDir, { recursive: true }) - 写入本地文件electron/dsh-home.js:38
fs.writeFileSync(probe, '') - 删除本地文件electron/dsh-home.js:39
fs.unlinkSync(probe) - 读取本地文件electron/dsh-home.js:48
if (fs.existsSync(link)) return - 执行外部命令固定命令electron/dsh-home.js:55
const result = spawnSync('cmd', ['/c', 'mklink', '/J', link, target], { - 读取本地文件electron/dsh-home.js:59
if (result.status !== 0 && !fs.existsSync(link)) { - 写入本地文件electron/dsh-home.js:79
fs.mkdirSync(path.join(inTree, 'green-meter'), { recursive: true }) - 写入本地文件electron/dsh-home.js:85
fs.mkdirSync(path.join(home, 'green-meter'), { recursive: true }) - 读取本地文件electron/ledger.js:18
text = fs.readFileSync(file, 'utf8') - 读取本地文件electron/console-data.js:85
const parsed = JSON.parse(fs.readFileSync(settingsPath(dshHome), 'utf8').replace(/^ FEFF/, '')) - 写入本地文件electron/console-data.js:117
fs.mkdirSync(dshHome, { recursive: true }) - 写入本地文件electron/console-data.js:118
fs.writeFileSync(path.join(dshHome, 'cordis.patch.yml'), patchYaml(settings), 'utf8') - 写入本地文件electron/console-data.js:129
fs.writeFileSync(settingsPath(dshHome), JSON.stringify(next, null, 2) + '\n', 'utf8') - 读取本地文件electron/console-data.js:176
text = fs.readFileSync(ledgerFile, 'utf8').replace(/^ FEFF/, '') - 执行外部命令来自配置/变量electron/console-data.js:349
execFile(command, finalArgs, { timeout, windowsHide: true }, (error, stdout) => { - 读取本地文件electron/alerts.js:300
existing = fs.readFileSync(alertsPath(dshHome), 'utf8').replace(/^ FEFF/, '') - 写入本地文件electron/alerts.js:318
fs.mkdirSync(dshHome, { recursive: true }) - 写入本地文件electron/alerts.js:319
fs.appendFileSync(alertsPath(dshHome), fresh.map(alert => JSON.stringify(alert)).join('\n') + '\n', 'utf8') - 读取本地文件electron/alerts.js:327
const lines = fs.readFileSync(alertsPath(dshHome), 'utf8').replace(/^ FEFF/, '') - 删除本地文件electron/alerts.js:338
fs.rmSync(alertsPath(dshHome), { force: true }) - 读取本地文件electron/reference-data.js:153
const parsed = JSON.parse(fs.readFileSync(measuredProfilesPath(dshHome), 'utf8').replace(/^ FEFF/, '')) - 写入本地文件electron/reference-data.js:161
fs.mkdirSync(dshHome, { recursive: true }) - 写入本地文件electron/reference-data.js:162
fs.writeFileSync(measuredProfilesPath(dshHome), JSON.stringify(profiles, null, 2) + '\n', 'utf8') - 读取本地文件electron/relay.js:29
return JSON.parse(fs.readFileSync(cachePath(dshHome), 'utf8').replace(/^ FEFF/, '')) - 写入本地文件electron/relay.js:37
fs.mkdirSync(dshHome, { recursive: true }) - 写入本地文件electron/relay.js:38
fs.writeFileSync(cachePath(dshHome), JSON.stringify(cache, null, 2) + '\n', 'utf8') - 发起网络请求electron/relay.js:108
const response = await fetch(`${base}/v1/activity`, { - 发起网络请求electron/relay.js:133
const response = await fetch(url, { - 读取本地文件resources/harness/lib/bin.js:126
const manifest = JSON.parse(readFileSync(fileURLToPath(new URL("../package.json", import.meta.url)), "utf8")); - 读取本地文件resources/harness/lib/dump-config-D-jtgwY3.js:30
if (existsSync(loaded.patchPath)) layers.push({ - 读取本地文件resources/harness/lib/plugin-9h8shc4d.js:103
if (!existsSync(join(dir, "package.json"))) { - 执行外部命令固定命令resources/harness/lib/plugin-9h8shc4d.js:108
const result = spawnSync("pnpm", args.map((argument) => anchorPathSpec(argument, process.cwd())), { - 写入本地文件resources/harness/lib/profile-boot-DG5t9aNs.js:143
writeFileSync(join(profile.dir, PROFILE_ROOT_FILENAME), PROFILE_ROOT_CONFIG);
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
6 张 · 点击查看大图功能亮点
- 实时能耗碳排控制台
- 测量本地GPU推理
- 估算云API碳排
DeepSeek Harness 桌面应用,带实时能耗/碳排控制台:测量本地 GPU 推理,按公开系数估算云 API,浪费时告警
README
由 DeepSeek 最新模型翻译生成Green DSH Desktop
给 DeepSeek Harness(DSH)做的开源桌面应用:一边用 AI 干活,一边看清这次对话花了多少电、排了多少碳、省了多少钱。
无论你跑本地模型,还是接云端 API(DeepSeek / OpenRouter / 自建中转站…),它都能把每一次请求的能耗、碳排和费用算清楚、亮出来,并在烧钱烧碳的时候提醒你。
English · 中文
它能做什么
1. 开箱即用的 DSH 桌面版
- 自带 Node.js 24 运行时和完整 DSH 发行版,装完即用,不需要 Node / pnpm / Python;
- 完整的 DSH 对话体验:模型管理、会话、工具调用、技能、子代理、工作流都在;
- Windows 安装包 + 便携版(zip 解压即用)。
展开完整文档(README 剩余 1 节)
Green DSH Desktop 给 DeepSeek Harness(DSH)做的开源桌面应用:一边用 AI 干活,一边看清这次对话花了多少电、排了多少碳、省了多少钱。 无论你跑本地模型,还是接云端 API(DeepSeek / OpenRouter / 自建中转站…),它都能把每一次请求的能耗、碳排和费用算清楚、亮出来,并在烧钱烧碳的时候提醒你。 English · 中文 它能做什么 1. 开箱即用的 DSH 桌面版 - 自带 Node.js 24 运行时和完整 DSH 发行版,装完即用,不需要 Node / pnpm / Python; - 完整的 DSH 对话体验:模型管理、会话、工具调用、技能、子代理、工作流都在; - Windows 安装包 + 便携版(zip 解压即用)。 2. 能耗 / 碳排控制台(主窗口) | 页面 | 你能看到什么 | | 控制台 | 本地碳排、本地能耗(估算与实测并列)、云端碳排(公开系数估算)、已省 API 费用;近 30 天碳排和按任务轮次碳排两张柱状图;硬件实时环图 | | 会话 | 每个会话的 token、能耗、碳排、电费、省 API 费用 | | 硬件监测 | NVIDIA 显卡全量遥测(显存 / 使用率 / 温度 / 功耗,多卡支持);核显作为扩展监测;CPU / 内存曲线 | | 预警 | 超支和异常提醒,见下 | | 数据源 | 接入 OpenRouter 或自有中转站,拉取真实花费与 token 用量 | | 参考数据 | 每个系数的出处与年份,全部可查证 | | 碳台账 | 每一步的 JSONL 明细、实测能耗列、一键导出 CSV | | 日志 / 设置 | harness 输出、碳强度 / 电价 / API 价格等基线设置 | 3. 两条计量路径(核心设计) - 本地模型 → 实测:检测到 NVIDIA 显卡后,持续采样功耗并积分,得到真实能耗,并按时间归属到每个请求步骤;需要每个模型自己的系数时,一键标定出本机的 J/token; - 云端 API → 公开系数估算:云端只能看到 token,因此 token→能耗一律用公开权威系数(不用本地标定去推演云端)。 4. 预警:在烧钱烧碳时提醒你 - 阈值类:单会话能耗 / 费用、近 1 小时 / 24 小时费用、中转站日均花费; - 异常类:单步能耗离群(稳健 z 分数)、上下文重读(输入:输出比过高,反复重读上下文的无效消耗)、空转 / 重试循环(连续多步几乎没有产出)、缓存命中率偏低; - 严重级预警同时弹桌面通知。 5. 对话内嵌仪表盘 聊天窗口右上角常驻碳排卡片:本会话碳排 / 能耗 / 电费、已省 API 费用、本地 vs 云端对比、每轮能耗柱状图、全部会话累计。 6. 本地小模型开箱支持 自带 Qwen2.5-0.5B(CPU 推理)的接入脚本和 provider 配置,一条命令起服务,即刻体验"本地模型 + 实测计量"的完整闭环;换更大的模型只需改一行模型路径。 截图 | 控制台总览 | 对话内嵌仪表盘 | | 控制台总览 | 对话内嵌仪表盘 | | 硬件监测(NVIDIA 多卡) | 预警 | | 硬件监测 | 预警 | | 会话明细 | 数据源(中转站) | | 会话 | 数据源 | | 参考数据(系数与出处) | 碳台账明细 | | 参考数据 | 碳台账 | 下载安装 从 Releases 下载: | 文件 | 说明 | | Green DSH Desktop Setup x.x.x.exe | Windows 安装包(可选安装目录,桌面快捷方式) | | Green DSH Desktop-x.x.x-win.zip | 便携版,解压即用 | 安装包未做代码签名,首次启动 Windows SmartScreen 会拦截一下:更多信息 → 仍要运行。 升级直接运行新版安装包,会话 / 凭据 / 台账 / 设置自动保留。 快速上手(三步) 1. 装好打开 → 首次会提示配置模型(DSH 设置页里填 API Key,或用本地模型); 2. 点「打开对话」干活 → 正常聊天、写代码,什么都不用改; 3. 回到控制台 → 碳排、能耗、费用、轮次图、硬件曲线都在实时刷新;在「设置」里调好电价 / API 价格 / 碳强度,数字就是你的真实口径。 想试本地模型: powershell -ExecutionPolicy Bypass -File scripts\start-local-model.ps1 然后在应用里选「本地 llama.cpp(Qwen2.5-0.5B)」即可(需先下载模型,见脚本内注释)。 数据与方法(简述) - 本地:token 用量 → 标定系数 → 能耗(有 NVIDIA 时以实测为准)→ 电网碳强度 → 碳排; - 云端:token 用量 → 公开系数 → 能耗 → 碳排; - 费用:API 牌价 vs 本地电费。 所有系数都标注来源与年份: | 类别 | 数值 | 来源 | | 中国电网 | 0.5777 kgCO₂e/kWh(2024) | 生态环境部《2024 年电力碳足迹因子》 | | 美国电网 | 0.3497 kgCO₂e/kWh | US EPA eGRID 2023 | | 云端 per-token | 0.0006 Wh / 输出 token | Epoch AI 2025 | | 云端 per-request | 0.24 Wh / 0.03 gCO₂e | Google Cloud 2025-08-21 | | 本地标定 | H20 请求级拟合(R² ≥ 0.998) | 本项目实验 | 边界说明(诚实优先):无 GPU 实测时的本地数值是 token-profile 估算而非硬件实测;云端数值是基于公开系数的估算,不是厂商实测;碳排 = 能耗 × 电网碳强度,属工程估算,非认证核算。 从源码构建 git clone <本仓库> cd green-dsh-desktop npm install 1) 打包 green-meter / 仪表盘插件(需要 DSH 源码 checkout,可用 DSH_CHECKOUT 指定路径) npm run vendor:plugins 2) 组装内置 harness(npm 安装 DSH 发行版 + 本地插件) npm run pack:harness 3) 放入 Node 运行时(复制本机 node.exe 到 resources/runtime/) 4) 运行 / 打包 npm start npm run dist 局限与说明 - 目前主要在 Windows 上开发验证;Electron 跨平台,macOS / Linux 构建路径未验证; - 本地实测依赖 nvidia-smi(NVIDIA 显卡);无 NVIDIA 时本地数值退化为估算,核显仅作扩展监测(只有使用率); - 对话数据(会话 / 凭据 / 台账)保存在安装目录的 resources/harness/dsh-home,卸载前请先备份(升级会自动保留)。 致谢 - DeepSeek Harness 与 Cordis —— 本应用是 DSH 的插件化桌面发行版; - green-meter(本项目作者的能耗计量插件)提供 token-profile 标定; - llama.cpp —— 本地推理; - Electron —— 桌面壳; - 能耗 / 碳排参考数据来自生态环境部、US EPA eGRID、Epoch AI、Google Cloud 的公开披露。 License MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
dclichang2022/dsh-green-meter
给 DeepSeek HarnessDSH做的开源桌面应用:一边用 AI…
相关插件 · 桌面端
Codex 任务面板chuspeeism/dashi-taskboard
现代化可灵活嵌入的任务面板,支持 Codex、DeepSeek Harness
★ 3,409已汉化DSH
71.7
多智能体自进化开发平台Prism-Shadow/penguin-harness
统一、稳定的 Agent 自进化框架全自动优化:任意模型 · 任意算法 · 任意 Benchmark
★ 3,111已汉化DSH
71.1
桌面宠物PC2005-cloud/dsh-pet
DSH 桌面宠物:一行命令装好即用的透明动画小桌宠,支持多开、大小位置随心配置;还内置 DIY 素材链,能用 AI…
★ 5,341已汉化DSH
71
多端 Agent 工作台GCWing/OpenBitFun
OpenBitFun 是一个高度可定制的开源 Agent 工作台,让任务按你的方式持续推进。
★ 3,449已汉化DSH
70.8
DSH Desktopanywhere-labs/dsh-desktop
为 DeepSeek Harness DSH 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 34,532已汉化DSH
70.7
桌面宠物伴侣OpenPetsHQ/openpets
桌面伴侣平台,带宠物、插件,还能选配本地智能体集成。
★ 1,353已汉化DSH
70.2