养只桌宠陪跑任务,顺带盯紧 Token 花费与预算
30.6/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/23 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add qiuzhiyei/dsh-companion该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 56 处,展示前 53 条)
- 发起网络请求dist/client/index.js:374
const res = await fetch(`http://127.0.0.1:${port}/api/state`, { - 发起网络请求dist/client/index.js:408
const res = await fetch(url, { signal: AbortSignal.timeout(3000) }); - 发起网络请求dist/client/index.js:1144
const res = await fetch(`${url}/api/dsh-sessions/delete`, { - 写入本地文件dist/storage/store.js:196
await mkdir(dirname(this.dbPath), { recursive: true }); - 写入本地文件dist/storage/store.js:404
await mkdir(dirname(this.jsonPath), { recursive: true }); - 读取本地文件dist/storage/store.js:406
const text = await readFile(this.jsonPath, 'utf8'); - 写入本地文件dist/storage/store.js:564
await writeFile(tempPath, JSON.stringify(this.data), 'utf8'); - 写入本地文件dist/storage/store.js:565
await rename(tempPath, this.jsonPath); - 读取本地文件dist/storage/alert-log.js:45
const raw = JSON.parse(await readFile(this.file, 'utf8')); - 写入本地文件dist/storage/alert-log.js:84
await mkdir(dirname(this.file), { recursive: true }); - 写入本地文件dist/storage/alert-log.js:85
await writeFile(this.file, snapshot, 'utf8'); - 发起网络请求dist/pricing/official.js:155
const doFetch = fetchImpl ?? ((u, init) => fetch(u, init)); - 读取本地文件dist/pricing/official.js:219
const raw = await readFile(this.filePath, 'utf8'); - 写入本地文件dist/pricing/official.js:265
await mkdir(this.options.dataDir, { recursive: true }); - 写入本地文件dist/pricing/official.js:266
await writeFile(this.filePath, `${JSON.stringify(result, null, 1)}\n`, 'utf8'); - 读取本地文件dist/ui/skins.js:45
entries = await readdir(this.root, { withFileTypes: true }); - 读取本地文件dist/ui/skins.js:100
const body = await readFile(path); - 读取本地文件dist/ui/skins.js:123
const body = await readFile(path); - 读取本地文件dist/ui/skins.js:134
const dirStat = await stat(dir); - 读取本地文件dist/ui/skins.js:137
manifest = JSON.parse(await readFile(join(dir, 'manifest.json'), 'utf8')); - 读取本地文件dist/ui/skins.js:152
await stat(join(dir, declared)); - 执行外部命令来自配置/变量dist/ui/tray.js:119
const child = spawn(electronBin, [shellScript], { - 执行外部命令固定命令dist/ui/tray.js:174
const child = spawn('powershell.exe', ['-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-Command', script], { stdio: 'ignore', windowsH - 读取本地文件dist/ui-enhance/session-manager.js:40
await stat(target); - 读取本地文件dist/ui-enhance/session-manager.js:55
entries = await readdir(current, { withFileTypes: true }); - 读取本地文件dist/ui-enhance/session-manager.js:67
total += (await stat(full)).size; - 删除本地文件递归dist/ui-enhance/session-manager.js:80
await rm(target, { recursive: true, force: true, maxRetries: 2, retryDelay: 120 }); - 读取本地文件dist/ui-enhance/session-manager.js:288
const data = JSON.parse(await readFile(pcPath, 'utf8')); - 读取本地文件dist/ui-enhance/session-manager.js:385
const s = await stat(target); - 读取本地文件dist/ui-enhance/session-manager.js:397
const entries = await readdir(root, { withFileTypes: true }); - 写入本地文件dist/ui-enhance/session-manager.js:432
await mkdir(dirname(this.deps.pendingFile), { recursive: true }); - 写入本地文件dist/ui-enhance/session-manager.js:433
await writeFile(this.deps.pendingFile, JSON.stringify(entries, null, 2), 'utf8'); - 读取本地文件dist/ui/electron-runtime.js:56
return existsSync(exe) ? exe : null; - 读取本地文件dist/ui/electron-runtime.js:73
if (fromEnv && existsSync(fromEnv)) - 读取本地文件dist/ui/electron-runtime.js:78
if (typeof resolved === 'string' && existsSync(resolved)) - 读取本地文件dist/ui/electron-runtime.js:91
const raw = readFileSync(failureMarkerPath(dataDir), 'utf8'); - 写入本地文件dist/ui/electron-runtime.js:101
mkdirSync(runtimeRoot(dataDir), { recursive: true }); - 写入本地文件dist/ui/electron-runtime.js:102
writeFileSync(failureMarkerPath(dataDir), JSON.stringify({ ts: Date.now(), version, reason })); - 删除本地文件dist/ui/electron-runtime.js:110
rmSync(failureMarkerPath(dataDir), { force: true }); - 写入本地文件dist/ui/electron-runtime.js:118
mkdirSync(destDir, { recursive: true }); - 执行外部命令固定命令dist/ui/electron-runtime.js:120
const child = spawn('tar', ['-xf', zipPath, '-C', destDir], { - 发起网络请求dist/ui/electron-runtime.js:140
const response = await fetch(url, { redirect: 'follow', signal: controller.signal }); - 写入本地文件dist/ui/electron-runtime.js:160
await pipeline(body, createWriteStream(zipPath)); - 写入本地文件dist/ui/electron-runtime.js:214
mkdirSync(runtimeRoot(dataDir), { recursive: true }); - 删除本地文件dist/ui/electron-runtime.js:215
rmSync(zipPath, { force: true }); - 删除本地文件递归dist/ui/electron-runtime.js:220
rmSync(destDir, { recursive: true, force: true }); - 删除本地文件dist/ui/electron-runtime.js:222
rmSync(zipPath, { force: true }); - 删除本地文件dist/ui/electron-runtime.js:233
rmSync(zipPath, { force: true }); - 读取本地文件electron/main.cjs:103
const raw = JSON.parse(fs.readFileSync(BOUNDS_FILE, 'utf8')) - 写入本地文件electron/main.cjs:128
fs.writeFileSync(BOUNDS_FILE, JSON.stringify(b, null, 2), 'utf8') - 发起网络请求electron/main.cjs:272
await fetch(`${PET_URL}${pathname}`, { method: 'POST' }) - 读取本地文件electron/main.cjs:560
try { newest = Math.max(newest, fs.statSync(f).mtimeMs) } catch { } - 发起网络请求electron/main.cjs:586
const res = await fetch(`${PET_URL}/api/state`, { signal: AbortSignal.timeout(2500) })
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DSH 伴侣 — DeepSeek Harness 的伴飞插件:桌面宠物 + Token/费用统计 + 预算告警 + 会话管理。数据全在本地。
README
由 DeepSeek 最新模型翻译生成🐳 DSH 伴侣
给 DeepSeek Harness 的伴飞插件
桌宠 · 用量统计 · 费用估算 · 预算告警 · 界面增强
English · npm
功能
- 🐳 桌宠:随任务状态换表情,可摸、可拖,闲下来自己散步
- 👗 5 套皮肤:JK / 秘书 / 女警 / 中华娘 / 旗袍,表情与台词口吻一起换
- 📊 统计面板:Token、任务数、成功率、时长、费用、缓存命中,都带环比
- 💰 费用估算:DeepSeek 官方计价,高峰 / 闲时分档,缓存命中单独计价
- 🚨 预算告警:单任务 / 每日上限,Token 或费用,触顶弹气泡和系统通知
- 🗂 历史与导出:按模型 / 状态 / 日期 / 关键词筛选,导出 CSV / JSON
- 🧹 会话管理:彻底删除会话(宿主只提供归档)
- ⏰ 久坐提醒:坐够 N 分钟提醒起来走走
- 🖥 桌面悬浮窗:透明置顶、点击穿透、真托盘
安装
桌面版:插件管理器 → 安装插件 → 输入 @qiuzhiyei/dsh-companion → 启用 → 完全退出 DSH 重开。
命令行:
dsh plugin --profile <你的 profile> add @qiuzhiyei/dsh-companion
装完要在插件管理器里启用,再完全退出重开 DSH。
展开完整文档(README 剩余 1 节)
🐳 DSH 伴侣 给 DeepSeek Harness 的伴飞插件 桌宠 · 用量统计 · 费用估算 · 预算告警 · 界面增强 English · npm 功能 - 🐳 桌宠:随任务状态换表情,可摸、可拖,闲下来自己散步 - 👗 5 套皮肤:JK / 秘书 / 女警 / 中华娘 / 旗袍,表情与台词口吻一起换 - 📊 统计面板:Token、任务数、成功率、时长、费用、缓存命中,都带环比 - 💰 费用估算:DeepSeek 官方计价,高峰 / 闲时分档,缓存命中单独计价 - 🚨 预算告警:单任务 / 每日上限,Token 或费用,触顶弹气泡和系统通知 - 🗂 历史与导出:按模型 / 状态 / 日期 / 关键词筛选,导出 CSV / JSON - 🧹 会话管理:彻底删除会话(宿主只提供归档) - ⏰ 久坐提醒:坐够 N 分钟提醒起来走走 - 🖥 桌面悬浮窗:透明置顶、点击穿透、真托盘 安装 桌面版:插件管理器 → 安装插件 → 输入 @qiuzhiyei/dsh-companion → 启用 → 完全退出 DSH 重开。 命令行: dsh plugin --profile <你的 profile> add @qiuzhiyei/dsh-companion 装完要在插件管理器里启用,再完全退出重开 DSH。 桌宠首次启动会自动下载运行时(约 150 MB,国内镜像),不用手动装 electron。 开发 pnpm install && pnpm run build pnpm test 架构决策与踩过的坑见 AGENTS.md,发版流程见 npm发布.md。 License MIT © 2026 QiuWenXiong
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
qiuzhiyei/dsh-companion
养只桌宠陪跑任务,顺带盯紧 Token 花费与预算
相关插件 · 桌面端
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