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

桌宠伴侣 qiuzhiyei/dsh-companion

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

养只桌宠陪跑任务,顺带盯紧 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 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · desktop
装得上吗
本站尚未做安装检查
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 12 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
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
预览分享卡片长什么样 ↓qiuzhiyei/dsh-companion
分享 · DeepSeek Harness Hub
qiuzhiyei/dsh-companion

养只桌宠陪跑任务,顺带盯紧 Token 花费与预算

回到顶部