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

摩羯桌面挂件 Sophia-Pro/dsh-capri

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

DSH · 摩羯:DeepSeek Harness 的 macOS 桌面挂件 + 桥插件中文 / 坐窗口 / 附身 /…

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

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

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

状态速览

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

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 41 处,展示前 38 条)
  • 发起网络请求
    src/main/main.js:52
    return net.fetch(pathToFileURL(target).toString());
  • 执行外部命令固定命令
    src/main/main.js:210
    execFile('/bin/ps', ['-Ao', 'args'], { timeout: 2500, maxBuffer: 8 * 1024 * 1024 }, (err, stdout) => {
  • 读取本地文件
    src/main/main.js:248
    try { return fs.readdirSync('/Volumes').filter((n) => !n.startsWith('.')) } catch { return [] }
  • 写入本地文件
    src/main/main.js:308
    if (cfg.followDsh !== false) fs.writeFileSync(flag, '1');
  • 删除本地文件
    src/main/main.js:309
    else fs.rmSync(flag, { force: true });
  • 写入本地文件
    src/main/main.js:371
    fs.mkdirSync(userSoundsDir(), { recursive: true });
  • 读取本地文件
    src/main/main.js:454
    const buf = fs.readFileSync(path.join(dir, `tray-${state}@2x.png`));
  • 发起网络请求
    src/main/main.js:567
    const res = await fetch(`http://127.0.0.1:47824/state${fresh ? '?fresh=1' : ''}`, { signal: ac.signal });
  • 读取本地文件
    src/main/main.js:596
    ipcMain.handle('claude:found', () => (DSH_EDITION ? fs.existsSync(dshHome()) : fs.existsSync(path.dirname(hooks.status().file))));
  • 读取本地文件
    src/main/main.js:601
    if (!fs.existsSync(dir)) return { found: false, dir };
  • 读取本地文件
    src/main/main.js:604
    return { found: true, dir, file: fs.existsSync(file) };
  • 读取本地文件
    src/main/main.js:608
    if (!fs.existsSync(dir)) return { found: false, dir };
  • 写入本地文件
    src/main/main.js:699
    fs.mkdirSync(dir, { recursive: true });
  • 写入本地文件
    src/main/main.js:701
    fs.writeFileSync(file, image.toPNG());
  • 读取本地文件
    src/main/config.js:47
    cache = { ...DEFAULTS, ...JSON.parse(fs.readFileSync(file(), 'utf8')) };
  • 写入本地文件
    src/main/config.js:57
    fs.mkdirSync(path.dirname(file()), { recursive: true });
  • 写入本地文件
    src/main/config.js:58
    fs.writeFileSync(file(), JSON.stringify(cache, null, 2));
  • 执行外部命令固定命令
    src/main/windows.js:36
    child = spawn('powershell.exe', [
  • 读取本地文件
    src/main/windows.js:85
    if (fs.existsSync(MAC_BIN)) return true;
  • 写入本地文件
    src/main/windows.js:86
    fs.mkdirSync(path.dirname(MAC_BIN), { recursive: true });
  • 执行外部命令固定命令
    src/main/windows.js:87
    execFileSync('xcrun', ['swiftc', '-O', '-o', MAC_BIN, MAC_SRC], { stdio: 'pipe', timeout: 120000 });
  • 执行外部命令来自配置/变量
    src/main/windows.js:96
    child = spawn(MAC_BIN, [String(process.pid)], { stdio: ['ignore', 'pipe', 'pipe'] });
  • 读取本地文件
    src/main/dsh-watch.js:24
    names = fs.readdirSync(DIR);
  • 读取本地文件
    src/main/dsh-watch.js:32
    const st = fs.statSync(full);
  • 读取本地文件
    src/main/dsh-watch.js:43
    const raw = fs.readFileSync(file, 'utf8');
  • 执行外部命令固定命令
    scripts/install-hooks.js:40
    return spawnSync('node', ['-v'], { windowsHide: true, timeout: 3000 }).status === 0;
  • 读取本地文件
    scripts/install-hooks.js:59
    if (!fs.existsSync(file)) return {};
  • 读取本地文件
    scripts/install-hooks.js:60
    const text = fs.readFileSync(file, 'utf8');
  • 写入本地文件
    scripts/install-hooks.js:87
    fs.mkdirSync(path.dirname(file), { recursive: true });
  • 读取本地文件
    scripts/install-hooks.js:88
    if (fs.existsSync(file)) {
  • 写入本地文件
    scripts/install-hooks.js:90
    fs.copyFileSync(file, `${file}.capri-backup-${stamp}`);
  • 写入本地文件
    scripts/install-hooks.js:92
    fs.writeFileSync(file, JSON.stringify(settings, null, 2) + '\n');
  • 读取本地文件
    scripts/install-hooks.js:114
    if (!fs.existsSync(file)) return { file, removed: false };
  • 发起网络请求
    dsh-plugin/lib/index.js:200
    const res = await fetch('http://127.0.0.1:47823/health', { signal: AbortSignal.timeout(800) })
  • 执行外部命令来自配置/变量
    dsh-plugin/lib/index.js:220
    spawn(exe, [], { detached: true, stdio: 'ignore', env: childEnv }).unref()
  • 执行外部命令固定命令
    dsh-plugin/lib/index.js:223
    spawn('open', ['-g', app], { detached: true, stdio: 'ignore', env: childEnv }).unref()
  • 发起网络请求
    dsh-plugin/lib/index.js:249
    const res = await fetch(APP_EVENT_URL, {
  • 发起网络请求
    hooks/capri-hook.js:68
    const req = http.request({
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库

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

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

README

由 DeepSeek 最新模型翻译生成
摩羯 · dsh-capri DeepSeek Harness 的桌面挂件 + 桥插件 · macOS · 全中文 ⬇ 挂件 v0.2.0(macOS arm64) · ⬇ DSH 插件 v0.2.0 全部版本 · 使用说明 · 玩法与动画 · 来源与致谢 她做什么 会动的 开场 —— 三种随机:抓屏幕的大近景 / 大头照「嗨」/ 小动作入场。 全屏附身 —— 整块屏幕变成她的脸,两秒后松开。 附身窗口 —— 坐久了钻进去,整扇窗长满她的眼睛和锯齿嘴: 全屏附身 —— 整块屏幕变成她的脸,两秒后松开: 看卫星 —— 她抬头、夜空铺开、卫星划过、红光照上去: 开场动画(三套随机):大头照「嗨」/ 双手撑住屏幕边缘的大近景 / 小动作入场。 所有动画 37 个动作、三种开场、附身/全屏附身/看卫星这些大场面,以及每一个怎么触发,都写在全表里了: → 玩法与动画一览 和 DSH 的关系 dsh-plugin/ 是桥插件:装进 DeepSeek Harness 后,DSH 里新的一轮、某个工具、等你批准、干完、烧了多少 token,都会变成她的话和动作(面板里那个「琢磨:…」就是她看见你在想什么)。
展开完整文档(README 剩余 1 节)
摩羯 · dsh-capri

DeepSeek Harness 的桌面挂件 + 桥插件 · macOS · 全中文

⬇ 挂件 v0.2.0(macOS arm64) · ⬇ DSH 插件 v0.2.0

全部版本 · 使用说明 · 玩法与动画 · 来源与致谢

她做什么

会动的

开场 —— 三种随机:抓屏幕的大近景 / 大头照「嗨」/ 小动作入场。

全屏附身 —— 整块屏幕变成她的脸,两秒后松开。

附身窗口 —— 坐久了钻进去,整扇窗长满她的眼睛和锯齿嘴:

全屏附身 —— 整块屏幕变成她的脸,两秒后松开:

看卫星 —— 她抬头、夜空铺开、卫星划过、红光照上去:

开场动画(三套随机):大头照「嗨」/ 双手撑住屏幕边缘的大近景 / 小动作入场。

所有动画

37 个动作、三种开场、附身/全屏附身/看卫星这些大场面,以及每一个怎么触发,都写在全表里了:

→ 玩法与动画一览

和 DSH 的关系

dsh-plugin/ 是桥插件:装进 DeepSeek Harness 后,DSH 里新的一轮、某个工具、等你批准、干完、烧了多少 token,都会变成她的话和动作(面板里那个「琢磨:…」就是她看见你在想什么)。

从 Release 下 MoJie-DSH-Plugin-0.1.0.zip 解压,或者直接用仓库里的 dsh-plugin/:

cd dsh-plugin && npm install
dsh plugin --profile desktop add link:"$PWD"

装完重启一次 DSH。她的挂件也可以独立运行,不装插件只是少这些联动。

快速开始(从源码跑)

git clone https://github.com/Sophia-Pro/dsh-capri.git
cd dsh-capri
npm install
npm start # 先看能不能出人

./scripts/capri-build.sh . ~/Applications/摩羯.app # 打包成 .app

完整说明见 使用说明.md,动画和玩法细表见 玩法.md:托盘菜单每一项、双击/单击、音效、跟随 DSH 启停、常见问题。

特性一览

- 窗口交互:坐上沿 / 骑窗 / 掉下来 / 附身 / 全屏附身;视频和全屏应用不坐
- 自适应:按屏幕分辨率和缩放自动算大小;显示器增删、分辨率变化会重新收进可视区
- 互动:单击随机说话(余额 / token / 进度 / 闲话),双击从所有动画里随机演一段(没演过的优先)
- 演技:37 个动作(含从上游移植的蹲、瞪、被抱起、躺平、翻滚、过热…)、三种开场、全部音效为 Web Audio 实时合成
- 不抢焦点:不占 Dock、不进 Cmd-Tab,点她不会把整个程序提到前台
- 中文化:界面、台词、托盘、气泡全中文

版权

二次开发项目,原作 mochiiwuff/capri-desktop,基于 Stefanospi/Carpi-Evolution。来源、改动清单与致谢见 NOTICE.md。

许可证沿用上游:可自由使用、修改、分发,不得售卖或用于付费服务。角色与美术素材版权属于原权利人,本项目为同人作品。
预览分享卡片长什么样 ↓Sophia-Pro/dsh-capri
分享 · DeepSeek Harness Hub
Sophia-Pro/dsh-capri

DSH · 摩羯:DeepSeek Harness 的 macOS 桌面挂件 + 桥插件中文 / 坐窗口 / 附身 /…

回到顶部