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

陪伴助手 d1s3s/dsh-companion

MCP
d1s3s8 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

记住你的偏好,还能看屏幕和摄像头替你办事

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

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

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/d1s3s/dsh-companion.git

状态速览

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

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

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

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

可执行外部命令发起外部网络请求
查看扫描证据(共 12 处,展示前 12 条)
  • 发起网络请求
    src/permissions.js:296
    verdict = await ctx.approval.request({
  • 执行外部命令来自配置/变量
    src/capture.js:78
    const r = spawnSync(c, ['-version'], { timeout: 6000, windowsHide: true, encoding: 'utf8' });
  • 执行外部命令来自配置/变量
    src/capture.js:96
    const p = spawn(bin, args, { windowsHide: true });
  • 发起网络请求
    src/messaging.js:89
    const r = await fetch(endpoint, {
  • 执行外部命令来自配置/变量
    src/messaging.js:142
    try { p = spawn(bin, args, { windowsHide: true }); } catch { return resolve(false); }
  • 执行外部命令来自配置/变量
    src/window.js:118
    child = spawn(bin, args, { windowsHide: true, timeout });
  • 执行外部命令来自配置/变量
    src/browser.js:277
    const child = spawn(bin, [...args, url || 'about:blank'], {
  • 执行外部命令来自配置/变量
    src/app-drive.js:45
    child = spawn(powershellPath(), ['-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-EncodedCommand', b64], { windowsHide: true });
  • 发起网络请求
    src/models.js:254
    res = await fetch(url, {
  • 发起网络请求
    src/cdp.js:108
    const r = await fetch(url, { signal: ac.signal });
  • 发起网络请求
    src/cdp.js:140
    const r = await fetch(`${base(port)}/json/new?${encodeURIComponent(url)}`, { method, signal: ac.signal });
  • 发起网络请求
    src/cdp.js:151
    const r = await fetch(`${base(port)}/json/close/${id}`);
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

陪伴型 Agent 插件:记得你(记忆存在模型外,换模型不失忆)、看得见屏幕和摄像头、能自己刷视频收集资讯、能替你起草消息。核心与宿主解耦,DSH 插件或任意 MCP 客户端都能跑,形象可运行时更换。

README

由 DeepSeek 最新模型翻译生成
dsh-companion 想装?把仓库地址丢给你的智能体就行。 帮我装这个插件:https://github.com/d1s3s/dsh-companion 按仓库里的 INSTALL.md 走,装完跑一遍自检,把结果和「需要我决定的选项」一起告诉我。 它能自己 clone、自检、选接法、跑测试,然后把要你拍板的三件事(人格 / 形象 / token 价目)列出来。 不想用智能体装的话,看 INSTALL.md 手动走一遍,同样四步。 陪伴型 DSH 插件。装上之后你的智能体就多四件事:记得你、看得见屏幕、能看摄像头、能替你说话——以及一件更重要的事:这些能力每一项都由你单独发钥匙,随时能收回。 不是又一个桌宠。桌宠只负责好看,这个负责记得你昨天否决了什么。 为什么会做这个东西。 跟智能体聊得越久越会撞上两堵墙:一是它记不住——今天讲清楚的偏好,明天开个新会话就清零,聊了一周还是每次从头介绍自己;二是它看不见——你得先截图发过去,它才知道你在说什么。这两件事都不是换个更聪明的模型能解决的,是记忆和感知放错了位置。所以这里把记忆挪到模型外面(磁盘上人可读的 Markdown,带权重和衰减),把眼睛放回你自己的机器上(屏幕、摄像头、她自己的浏览器),然后给每一样都单独配一把钥匙——发出去能收回。 核心不认识 DSH。
展开完整文档(README 剩余 1 节)
dsh-companion

想装?把仓库地址丢给你的智能体就行。

帮我装这个插件:https://github.com/d1s3s/dsh-companion 按仓库里的 INSTALL.md 走,装完跑一遍自检,把结果和「需要我决定的选项」一起告诉我。

它能自己 clone、自检、选接法、跑测试,然后把要你拍板的三件事(人格 / 形象 / token 价目)列出来。
不想用智能体装的话,看 INSTALL.md 手动走一遍,同样四步。

陪伴型 DSH 插件。装上之后你的智能体就多四件事:记得你、看得见屏幕、能看摄像头、能替你说话——以及一件更重要的事:这些能力每一项都由你单独发钥匙,随时能收回。

不是又一个桌宠。桌宠只负责好看,这个负责记得你昨天否决了什么。

为什么会做这个东西。 跟智能体聊得越久越会撞上两堵墙:一是它记不住——今天讲清楚的偏好,明天开个新会话就清零,聊了一周还是每次从头介绍自己;二是它看不见——你得先截图发过去,它才知道你在说什么。这两件事都不是换个更聪明的模型能解决的,是记忆和感知放错了位置。所以这里把记忆挪到模型外面(磁盘上人可读的 Markdown,带权重和衰减),把眼睛放回你自己的机器上(屏幕、摄像头、她自己的浏览器),然后给每一样都单独配一把钥匙——发出去能收回。

核心不认识 DSH。 它只依赖五个宿主方法,所以同一个内核能跑在 DSH 插件里,也能跑成 MCP server——Claude Desktop、Cursor、Cline、Zed 接上就是同一套记忆、同一套权限、同一套账本。换模型、换客户端,记忆不用重来一遍。怎么换见 ADAPTERS.md。

适合谁:每天用智能体干活、并且开始烦「每次都要重新交代一遍背景」的人;希望它顺手能看一眼屏幕、摄像头、网页的人。

不适合谁:只想要个桌面摆件的人(那用桌宠更合适,这个更重);不接受 AI 具备「看屏幕 / 开摄像头」这类能力的人——这里每一项都要你单独点头、随时能收回,能力本身确实存在。

能力

| 能做什么 | 工具 | 出厂权限 |
| 截一张屏 | companion_see_screen | 每次询问 |
| 连看一段屏幕(盯进度、看变化) | companion_watch_screen | 禁止 |
| 看一段本地视频(抽帧,刷视频/看录屏) | companion_watch_video | 每次询问 |
| 不用截图知道你在看什么(前台窗口 + 平台识别,约 0 token) | companion_now_viewing | 本会话允许 |
| 自己开网页刷(B站/抖音/小红书/快手,读标题作者热评) | companion_open_site | 每次询问 |
| 自己往下刷(滚动、切下一条,不点按钮) | companion_browse_next | 每次询问 |
| 在 App 里刷(抖音客户端,只发滚轮绝不点击) | companion_app_scroll | 禁止 |
| 按时段自己刷(受四道闸约束) | companion_browse_auto | 禁止 |
| 按主题收集视频(给个话题拿回一串结果) | companion_collect | 每次询问 |
| 把看到的视频记下来(进长期记忆,以后能主动提) | companion_keep_video | 允许 |
| 评论(默认只准备不发送,核对后才发) | companion_comment | 发送禁止 |
| 改刷视频的设置(时段/时长/评论配额) | companion_browse_settings | 允许 |
| 开一次摄像头 | companion_see_camera | 每次询问 |
| 枚举摄像头 | companion_list_cameras | 允许 |
| 记住一条结论 | companion_remember | 每次询问 |
| 按关键词回忆 | companion_recall | 本会话允许 |
| 取否决 / 认知修订 | companion_valuable | 本会话允许 |
| 起草消息 | companion_draft_message | 允许 |
| 发出去 | companion_send_message | 每次询问 |
| 看 token 花了多少 | companion_cost | 允许 |
| 调权限 | companion_permission | 只能自己收权 |
| 换形象 / 列出所有形象(立刻生效,不用重启) | companion_character | 允许 |
| 用外部模型想一件事(OpenAI / Claude / 千问 / DeepSeek) | companion_model | 每次询问 |
| 配模型的密钥(存本机 keys.json,权限 600) | companion_model_key | 每次询问 |

「连看屏幕」和「截一张屏」是两项独立权限,不是同一个开关。允许你截一张图,不等于允许你一直看着——这个区别在别的产品里经常被抹掉,这里不抹。

形象:六种可选,随时换

四套配色皮肤:深海蓝 / 青绿 / 陶土橙 / 星紫

companion_character action=list # 看全部 companion_character action=use pack=theme-gpt # 换,立刻生效

| 内置配色皮肤(零体积,随插件走) | 角色包(真美术) |
| theme-default 深海蓝 | bigfish-classic 大肥鱼·内置(60 个动作) |
| theme-gpt 青绿(像 OpenAI 的配色) | bigfish-adult 大肥鱼·成年版(8 组动作) |
| theme-claude 陶土橙(像 Claude 的配色) | 你自己的 .dshpet(放进 ~/.dsh-companion/packs/) |
| theme-qwen 星紫(像通义千问的配色) | |
为什么是配色不是官方形象:OpenAI / Anthropic / 阿里都是有法务的商业主体,复制它们的官方形象是商标问题——这和用社区角色不是一回事。这里借的是气质(青绿偏工程、陶土偏人文、星紫偏科技),不复制任何 logo。你自己的素材放进 packs/ 就行,那些包优先级更高。

想看全部形象长什么样:npm run gallery 生成 preview/gallery.html,图集原图、68 个动作各自的第一帧、四套配色并排一页,点图可放大。

接自己的模型

有些事得她自己会想:刷完一堆视频判断哪条值得留、写评论草稿、看一帧猜你在干嘛。以前靠关键词硬编码,一看就假。

配一个(三家都行,另外还支持 DeepSeek) companion_model_key provider=qwen key=sk-xxxx 或走环境变量:DASHSCOPE_API_KEY / OPENAI_API_KEY / ANTHROPIC_API_KEY

companion_model action=status # 看哪些配好了 companion_model input="这条视频在讲什么:…" provider=qwen

| provider | 默认模型 | 端点 | 国内直连 |
| qwen | qwen-plus | DashScope 兼容模式 | ✅ 推荐 |
| deepseek | deepseek-chat | api.deepseek.com | ✅ |
| openai | gpt-4o-mini | api.openai.com | ⚠ 需代理(可设 OPENAI_BASE_URL) |
| anthropic | claude-3-5-haiku-latest | api.anthropic.com | ⚠ 大陆 IP 返回 403,需代理 |

实测:三家协议都验证过(假 key 打真端点,千问回 401、Anthropic 回 403 而不是 400,说明请求结构全对)。模型花的钱按上游回报的实际 token 记账,不用估算糊弄。

密钥只存 ~/.dsh-companion/keys.json(权限 600),不写进代码、不进日志、不回显全文。

安装

让 Agent 自己装:把仓库地址丢给它,让它读 INSTALL.md——那份是写给机器执行的分步清单(含验证命令、必须问你的选项、故障对照、红线)。下面是人手动走的版本。

要求:Node 20 以上。零外部依赖,不用 npm install。

下面几项都是可选的,缺了只掉对应的能力,不影响记忆和聊天:

| 缺什么 | 会掉哪些能力 | 怎么补 |
| ffmpeg | 截屏、摄像头、看视频、连看屏幕 | winget install Gyan.FFmpeg / brew install ffmpeg / 发行版包管理器 |
| Edge 或 Chrome | 自己开网页刷、收集资讯 | 装一个即可 |
| PowerShell | 知道你在刷什么(读前台窗口) | Windows 自带,一般不会缺 |

git clone <仓库地址> dsh-companion
cd dsh-companion

装之前先自检,它会告诉你这台机器上缺什么、缺了影响哪几个工具
node test/doctor.mjs

桌面端
dsh plugin --profile desktop add .

Web 端(两套 profile 是独立的,要分别装)
dsh plugin --profile web add .

装完在「插件」页启用,然后到设置里填配置。

不用 DSH 也能用

同一个内核可以跑成 MCP server,给任何支持 MCP 的客户端接:

node adapters/mcp.mjs --list # 看有哪些工具
node adapters/mcp.mjs # stdio,给客户端连

{
"mcpServers": {
"companion": {
"command": "node",
"args": ["C:/path/to/dsh-companion/adapters/mcp.mjs"]
}
}
}

记忆、权限、账本都在 ~/.dsh-companion/,和 DSH 插件共用——在 DSH 里聊过的,换到别的客户端接上照样记得。

⚠ MCP 没有审批弹窗,所以「询问」级别的能力在那里一律拒绝(fail-closed)。想放开就把那项权限改成 session 或 always,见 ADAPTERS.md。

先跑这四条

node test/doctor.mjs # 环境:能不能干活(ffmpeg / 浏览器 / PowerShell / 角色包 / 目录可写)
node test/smoke.mjs # 功能:假 ctx 跑通全部工具、权限、记账
node test/policy.test.mjs # 策略:刷视频的四道闸、评论独立闸、跨午夜时段
node test/mcp.test.mjs # 协议:MCP 握手 / 工具列表 / fail-closed / stdout 纯净度

doctor 只判环境,不写任何文件;它按「一项挂了不影响其他项」的方式全查一遍,让你一次看到所有缺口,而不是修一个再发现一个。

配置

| 键 | 默认 | 说明 |
| memoryDir | ~/.dsh-companion/memory | 接到已有记忆库就填绝对路径 |
| profile | tender | tender / sharp / pro / casual 四种人格 |
| characterPack | packs/bigfish-classic | 角色包目录(dsh-pet v1 或简单图包),见 CHARACTER.md |
| characterSize | 170 | 桌宠像素宽 |
| pricePerMTokens | 2 | 元 / 百万 token,按你的价目填 |
| tokensPerBowl | 1000 | 一碗白饭换多少 token(纯玩梗) |
| hud | always | always 常驻显示 / hover 只悬停显示 |
| webhook | 空 | 配了才允许直接外发消息 |

token 显示在角色头上

角色头顶浮一个小药丸,三件事一起看:

3.4k token · ¥0.0068 · 🍚 3 碗

- 双击角色 → 在「常驻显示 / 只悬停显示」之间切换,同时她会把今天吃了多少说出来(「今天吃了 3 碗白饭…我是鲸鱼,能消化」)。
- 价格和白饭换算都在配置里。白饭是玩梗,但把一个抽象数字变成看得懂的量这件事本身不是梗。

为什么要显示:陪伴助手最贵的不是聊天,是看图。一张 1280×720 的截图约 1200 token,连看 60 帧就是 7 万——比一整天打字还贵。数字不摆在脸上,用户永远不知道自己刚才那一眼花了多少钱。

配套的三道闸:

- 单次 ≥4000 token 打 ⚠️
- 单次 >60000 token 直接拒,并给出更省的参数(降帧率、缩宽度、裁区域)
- 每天 >200 万 token 直接拒

记忆

插件不调用任何 Python 脚本,直接用正则读同一批 Markdown。这是刻意的:记忆库的价值全在「任何东西都能读懂它」。哪天脚本烂了、语言换代了,插件照样能读。

node -e "const {Memory}=require('./src/memory.js')"

支持的目录结构(和 mem.py 那套完全兼容,两边可互写):

memory/
index.md 年代目录:哪一年、多少件、几个主题 index/<年>.md 年索引:一句话 → D编号 raw/<日期>.md 原文:只追加,永不改写 counter.json 下一个编号

形象

角色包直接吃社区的 dsh-pet v1 格式,所以别人做好的 .dshpet 丢进来就能用,不用改代码。

| 包 | 是什么 | 动作 | 体积 |
| 内置鲸鱼(SVG) | 手绘,兜底,随包分发 | CSS 动作 ×10 | 几 KB |
| packs/bigfish-classic | 大肥鱼·内置 | 60 个动作 / 6 张图集 | 4 MB |
| packs/bigfish-adult | 大肥鱼·成年版 | 8 组动作 / 4 张图集 | 8.8 MB |

动作不是「一个循环 GIF」:同一状态有多段可选,按「最久没播过」轮换并尊重冷却,所以看着像有人在,不像在放动画。细节和授权边界见 CHARACTER.md。

node client/build-preview.mjs # 单文件预览:活角色 + 全部动作,点一个就播

自检

node test/doctor.mjs # 环境:ffmpeg / 浏览器 / PowerShell / 角色包 / 目录可写
node test/smoke.mjs # 假 ctx 跑通全部工具、权限、记账、角色包
node client/build-preview.mjs && 打开 client/preview.html # 看形象、全部动作、十种状态
node tools/build-bigfish-pack.mjs ./package # 从上游 dsh-bigfish 重转角色包

smoke.mjs 会验证:工具注册、权限拦截四条、fail-closed、配额封顶、超预算拒绝、记忆读写互通、审计落盘。真机上唯一还需要验的是钩子名——不同 DSH 版本的 agent/session-start 可能叫别的,代码里三个名字都试了,都不中时用 companion_brief 手动兜底。

已知边界

1. 摄像头要能出图,得先看系统隐私设置。Electron 外壳本身把 media 权限封了(issue #655),所以这里绕过浏览器、直接从宿主调 ffmpeg(Windows 走 dshow,mac 走 avfoundation,Linux 走 v4l2)。没装 ffmpeg 时相关工具会直接说「去装 ffmpeg」,而不是报一句看不懂的 spawn ENOENT。
2. 发消息默认不直发。剪贴板 → 本机客户端 → webhook,三级降级。前两级把「最后一下」留给你按,这不是保守,是这类动作发出去就收不回。
3. 钩子注入是 best-effort。DSH 没公开完整的钩子契约,所以这里做的是「试三个名字 + 失败静默降级」,不会因为钩子对不上而把宿主弄崩。
4. 评论默认不发。五道关里第四关是「把字打进输入框、逐字读回核对」,第五关是「确认按钮上写的是发送」。默认停在第四关,等你点头。
5. App 里只滚不点。抖音客户端是自绘窗口,读不到内容。看不见还发点击等于闭眼乱按,所以只发滚轮,且每次滚之前都会确认前台真是那个 App。

许可

代码 MIT(见 LICENSE)。

角色美术不属于 MIT。packs/bigfish-classic 是从上游 dsh-bigfish 转的第三方美术,版权归原作者 gosomea;packs/bigfish-adult 是 image_gen 生成的图。各包来源与授权写在各目录的 NOTICE.txt 里。

个人使用无碍。要在你自己的产品里分发,请换成你有权分发的素材——内置那只手绘鲸鱼(svg 模式)就是为此留的后路:把 characterPack 留空,插件照样有形象。
预览分享卡片长什么样 ↓d1s3s/dsh-companion
分享 · DeepSeek Harness Hub
d1s3s/dsh-companion

记住你的偏好,还能看屏幕和摄像头替你办事

这是你的仓库?认领条目

回到顶部