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

桌面小助手 vianvio/dsh-assistant

DeepSeek Harnessv0.2.0
vianvio31 天前有提交已提供中文文档扫描:含敏感能力

DSH小助手:原生 Swift 悬浮窗 + DSH 会话状态驱动,含素材管线与日报

30.3/100
综合分
1
GitHub 星标
155
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-assistant
npm 源 · dsh-assistant 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · desktop
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 31 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-assistant @ 0.2.0
✓Node 引擎要求 >=22 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/9 17:37:06

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 22 处,展示前 22 条)
  • 发起网络请求
    src/client.js:83
    const load = () => fetch(CONFIG_ENDPOINT, { cache: 'no-store' })
  • 发起网络请求
    src/client.js:110
    const response = await fetch(CONFIG_ENDPOINT, {
  • 发起网络请求
    src/client.js:140
    const response = await fetch(`${CONFIG_ENDPOINT}/action`, {
  • 发起网络请求
    src/client.js:392
    const response = await fetch(`${CONFIG_ENDPOINT}/pending`, {
  • 发起网络请求
    src/client.js:474
    void fetch(`${CONFIG_ENDPOINT}/viewed`, {
  • 读取本地文件
    src/pet-process.js:67
    return Boolean(helperPath) && existsSync(helperPath)
  • 写入本地文件
    src/pet-process.js:127
    try { chmodSync(helperPath, 0o755) } catch { }
  • 执行外部命令来自配置/变量
    src/pet-process.js:129
    child = spawn(helperPath, this.options.args ?? [], {
  • 执行外部命令来自配置/变量
    src/pet-process.js:387
    const child = spawn(helperPath, ['--headless'], {
  • 执行外部命令来自配置/变量
    src/pet-process.js:450
    const child = spawn(helperPath, ['--headless'], {
  • 读取本地文件
    src/pet-summary-store.js:82
    raw = readFileSync(path, 'utf8')
  • 写入本地文件
    src/pet-summary-store.js:135
    mkdirSync(dirname(path), { recursive: true })
  • 写入本地文件
    src/pet-summary-store.js:139
    writeFileSync(temporary, text, 'utf8')
  • 写入本地文件
    src/pet-summary-store.js:140
    renameSync(temporary, path)
  • 写入本地文件
    src/pet-summary-store.js:241
    mkdirSync(dirname(path), { recursive: true })
  • 写入本地文件
    src/pet-summary-store.js:247
    writeFileSync(fd, `${process.pid}\n`, 'utf8')
  • 删除本地文件
    src/pet-summary-store.js:251
    try { unlinkSync(lockPath) } catch { }
  • 删除本地文件
    src/pet-summary-store.js:257
    try { unlinkSync(lockPath) } catch { }
  • 读取本地文件
    src/pet-summary-store.js:274
    stat = statSync(lockPath)
  • 读取本地文件
    src/pet-summary-store.js:282
    pid = Number.parseInt(readFileSync(lockPath, 'utf8').trim(), 10)
  • 读取本地文件
    src/pet-summary-activity.js:111
    entries = await readdir(dir, { withFileTypes: true })
  • 读取本地文件
    src/pet-summary-activity.js:145
    const info = await stat(join(dir, file.name))
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

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

功能亮点

  • 原生Swift悬浮窗
  • 会话状态驱动
  • 素材管线与日报

README

由 DeepSeek 最新模型翻译生成
DSH小助手 🐋 住在桌面上、由 DeepSeek Harness 真实工作状态驱动的 Agent 伴侣。 入口属于 DSH,生命周期属于 DSH,显示层属于桌面。 使用 · 外观与互动 · 今天干了什么 · 参考与致谢 · 已知边界 DSH小助手不是需要单独启动的桌宠应用:它由 DSH 插件拉起,跟着 DSH 一起启动和退出,以透明、无边框、始终置顶的原生窗口待在桌面上。切到 VS Code、浏览器或全屏应用之后,照样能看到 DSH 当前在思考、在执行、在等你确认,还是已经完成。 它只显示真实发生的事:状态来自 DSH 的会话事件 —— 不读屏幕、不根据模型名猜推理强度、也不编造完成度。几个项目一起跑时,气泡只给两行关键信息:谁在跑、谁在等你。 macOS(Apple Silicon / Intel 通用二进制)· 包里自带编译好的 helper 与素材包,装完就能跑,不需要 Xcode 状态展示 七个耐久状态各自有动作与文案,同一状态还会随机换姿势,不会一直重复同一张图。
展开完整文档(README 剩余 1 节)
DSH小助手 🐋

住在桌面上、由 DeepSeek Harness 真实工作状态驱动的 Agent 伴侣。

入口属于 DSH,生命周期属于 DSH,显示层属于桌面。

使用 · 外观与互动 · 今天干了什么 · 参考与致谢 · 已知边界

DSH小助手不是需要单独启动的桌宠应用:它由 DSH 插件拉起,跟着 DSH 一起启动和退出,以透明、无边框、始终置顶的原生窗口待在桌面上。切到 VS Code、浏览器或全屏应用之后,照样能看到 DSH 当前在思考、在执行、在等你确认,还是已经完成。

它只显示真实发生的事:状态来自 DSH 的会话事件 —— 不读屏幕、不根据模型名猜推理强度、也不编造完成度。几个项目一起跑时,气泡只给两行关键信息:谁在跑、谁在等你。

macOS(Apple Silicon / Intel 通用二进制)· 包里自带编译好的 helper 与素材包,装完就能跑,不需要 Xcode

状态展示

七个耐久状态各自有动作与文案,同一状态还会随机换姿势,不会一直重复同一张图。

| 待机 | 思考 |
| 待机中 | 正在思考 |

| 执行 | 等你确认 |
| 正在执行 | 等你确认 |

| 完成 | 出错 |
| 任务完成 | 任务出错 |

多项目并行:

多项目并行

子任务也算在进行中:会话派出子 Agent(或后台跑着别的活)时,就算它自己的回合已经结束,桌面上那个项目仍然是 ● —— 气泡说「子任务在跑,我盯着」,直到最后一个子任务收工。
设置里的「含子 Agent」打开后,子会话会自己占一格,父项目就不再重复显示这份工作。

完成、出错、等你确认各会另起一条通知,独立于状态气泡钉在宠物上方,点一下就切到那个会话 —— 状态气泡可能正被别的项目占着,通知不会。

| 完成通知 | 等你确认(这条也能点) |
| 完成通知 | 等你确认通知 |

使用

装到 DSH 里

dsh plugin --profile desktop add dsh-assistant

--profile 填你实际在用的那个(桌面端是 desktop,Web 端是 web)。
这条命令背后是 pnpm:装完包之后,它会自动把声明了 dsh.bundle 的依赖加进 profile 的 dsh.profile.bundles —— 不用手改 package.json。

包里带着编译好的 macOS helper 与素材包(44MB),装完就能跑,不需要 Xcode。

重启 DSH 后,桌面右下角会出现宠物,设置面板里多一张「DSH小助手」卡片。

以后升级:

dsh plugin --profile desktop update dsh-assistant

想跟着最新提交跑

npm 上是发版快照;想用 GitHub 上最新的 main:

dsh plugin --profile desktop add github:vianvio/dsh-assistant

改这个插件本身

改用 link,改完不用重装:

git clone https://github.com/vianvio/dsh-assistant.git ~/dsh-assistant
dsh plugin --profile desktop add link:$HOME/dsh-assistant

自己构建(可选)

包里带了编译好的 macOS helper 与素材包,上面三种装法都用不到这些命令;只有改了原生端或想换素材时才需要:

npm run build:helper # 编译原生 helper(需要 Xcode 命令行工具)
npm run build:pack # 重新生成素材包
npm run verify # 自检:素材 / helper / 模块 / 握手 / 状态归约
npm test # Node 单测(含真实 DSH 设置服务的集成用例)
npm run probe # 不经 DSH,直接驱动宠物跑一遍状态与动作(肉眼验收)

外观与互动

设置面板里的一张「DSH小助手」卡片就是全部开关:

| 设置 | 默认 | 说明 |
| enabled | 开 | 关闭后立即收起桌面窗口 |
| scale | 0.4 | 0.15 – 2.0,1 = 原始尺寸;右键菜单有 40% / 55% / 70% / 100% 四挡 |
| bubbleEnabled | 开 | 是否显示气泡 |
| bubbleTheme | light | 浅色气泡配黑字,深色配白字 |
| reducedMotion | 关 | 减少动效 |
| soundEnabled | 关 | 完成 / 出错时响一声 |
| includeSubagents | 关 | 允许子代理抢占宠物状态 |
| backgroundSummary | 关 | 任务后台总结(见下) |
| autoInteract | 开 | 自己找点事做:状态停留够久就随机来一次互动 |
| autoInteractSeconds | 10 | 上面那件事的判定间隔(5 – 300 秒),每隔这么久掷一次 30% 的骰子 |

宠物可以直接拖着走,位置与上面的偏好都记在本机($DSH_HOME/dsh-assistant/layout.json)。

自己找点事做:任意状态连续维持一个间隔(默认 10 秒),就有 30% 概率随机来一次投喂点心 / 夸夸它 / 摸摸头;浮层还在播的时候不打扰你。嫌闹就把间隔调大,或者直接关掉。

右键菜单:投喂点心 / 戳一下 / 夸夸它 / 摸摸头 / 回到原位 / 今天干了什么。
左键点身体也会摸头,四个互动动作在菜单、点击、设置面板三处是同一套。

今天干了什么

右键宠物 →「今天干了什么」(或设置面板里的「生成日报」):回顾当天的会话,产出一份「今天做了什么 + 待办」的 markdown —— 按项目聚合,长度有硬性上限,写不下就自动重写一轮。

生成完在宠物上方弹一条通知,点一下打开弹窗;弹窗里有「复制 Markdown」按钮,复制的是原文,不是渲染结果。

生成日报用的会话是隐藏会话:不会出现在左侧列表里,也不会弹系统通知。

打开设置里的「任务后台总结」后,它改成边干活边攒:会话每次压缩时先在后台提炼一段已完成的内容存着,点日报时只补增量、再汇总 —— 不用等到晚上才有一份完整回顾。

这个开关默认关(关着 = 每次把今天所有会话重新读一遍)。所以关着的时候,弹窗底部会多一行提示,告诉你在哪儿打开它;打开后这行就不出现了。提示只在窗口里,不进正文 ——「复制 Markdown」拿到的始终是干净的日报。

今日总结弹窗

参考与致谢

这个项目的两半(画面与状态)都站在别人的成果上。没有下面这两个仓库,就不会有现在的 dsh-assistant —— 特此致谢。

🐋 角色素材 · Sutera-Diffusus/dsh-whale-musume

MIT License · Copyright © 2026 Sutera-Diffusus DeepSeek Harness 桌宠插件:元气鲸鱼娘陪你写代码

本项目默认的 88 段角色素材全部来自这个仓库。上游是静态姿态图,我们做了三件加工:统一高度(切状态时角色大小不跳)、按显示尺寸烘焙成 WebP、其中一部分用百炼图生视频生成微动作再抠像对齐成序列帧。

加工不改变上游的许可与署名要求:角色形象版权仍归原作者,本项目只以 MIT 分发代码与加工后的素材。想换成自己的角色:把图丢进一个目录,改 scripts/build_pack.py 顶部的 STATE_ASSETS / ACTION_ASSETS,重跑 npm run build:pack —— 宿主与原生端都不用改。

🐟 原生悬浮窗骨架 · QCYTSN/dsh-dafeiyu

MIT License · Copyright © 2026 QCYTSN

「原生透明面板 + stdio JSON 协议 + 会话事件归约」这条路线,是这个仓库用生产代码先跑通的。
我们照着它做,省掉了"原生方案在 DSH 里到底行不行"那一段最贵的试错;之后在帧内存、 VoiceOver 可访问性、僵尸进程与布局持久化上各自做了加固。

其它

- 素材生成依赖 阿里云百炼(图生视频模型),管线脚本在 scripts/;
- 配色与排版参考了 DSH 自身的界面规范(深/浅两套气泡配色)。

完整署名与许可见 THIRD_PARTY_NOTICES.md。

已知边界

- 平台:原生 helper 目前只有 macOS(AppKit)。Windows/Linux 要么重写面板层,要么退回 Electron 子窗口方案(会失去「全屏应用之上」这一条)。
- 分发:.app 是 ad-hoc 签名。别人从浏览器下载会被 Gatekeeper 拦,正式分发需要 Developer ID + 公证。
- 素材体积:assets/pack 约 46MB(88 段 × 30 帧);assets/motion 另有几百 MB 的源 MP4,已加进 .gitignore。
- 素材来源:默认取自 dsh-whale-musume (MIT, © 2026 Sutera-Diffusus,见参考与致谢)。想换角色:把图丢进一个目录、改 scripts/build_pack.py 顶部的 STATE_ASSETS / ACTION_ASSETS,重跑 npm run build:pack 即可,宿主与原生端都不用改。
预览分享卡片长什么样 ↓vianvio/dsh-assistant
分享 · DeepSeek Harness Hub
vianvio/dsh-assistant

DSH小助手:原生 Swift 悬浮窗 + DSH 会话状态驱动,含素材管线与日报

这是你的仓库?认领条目

回到顶部