READMESource: master@e04c12d2
🐳 dsh-friends — DSH 鲸友好友系统
和同样在用 DeepSeek Harness 的好友互相看见:是否在线、是不是在跑任务、最近忙什么,还能改一条有趣的个性签名、戳一戳。
这不是"好友在不在",而是"他的 AI 在不在、忙不忙"——一种人机混合的社交。
📸 截图
| 深色主题 | 浅色主题 |
|---|---|
![]() |
![]() |
✨ 功能
| 功能 | 说明 |
|---|---|
| 🟢 实时在线状态 | 开 DSH 就在;关掉就走。8 秒心跳,3 个心跳没见判定离线 |
| 🟡 任务状态 | 模型跑任务时自动变"忙碌",你能看到他正在干什么 |
| 🔴 异常提醒 | 任务卡住/报错,好友那边显示红色,可以过去救他 |
| ✎ 个性签名 | 随时改,好友列表里显示;也可以让模型读你这几天的活自动写一条 |
| 🐳 心情 emoji | 一键切换心情,跟随签名一起展示 |
| 👉 戳一戳 | 好友的鲸鱼头上飘个 emoji;在线才生效 |
| 🔐 端到端加密 | AES-GCM 256,密钥由好友码派生;公共中继只看得到密文 |
| 🚫 零注册零登录 | 没有账号体系,6 位好友码即密钥 |
🚀 安装
dsh plugin --profile web add dsh-friends
安装后 DSH 左侧栏会出现「🐳 鲸友」入口。
🤝 怎么加好友
- 打开「鲸友」面板,点右上角你的 6 位好友码 复制,发给朋友
- 朋友点「+ 添加好友」,输入你的码
- 你输入朋友的码
- 双方互加后,立即就能看到彼此的在线/任务状态
单向添加也能发消息和看到对方(如果他恰好在线并发心跳),但互加才稳定可见。
🔒 隐私与安全
- 好友码是共享密钥:密钥 = HKDF(SHA-256, "dsh-friends/v1:" + 好友码)
- 每条消息用随机 12 字节 IV 的 AES-GCM 加密;频道主题可被猜到,但没有码解不开
- 消息内容只有:昵称、签名、心情、状态、任务标签、时间戳——不包含任何会话内容、文件、或代码
- 默认关闭 DSH 页面时发送
bye,好友立刻看到你下线
🛠 技术
- 客户端零依赖:手写 MQTT 3.1.1 over WebSocket(CONNECT/SUBSCRIBE/PUBLISH/PING),不用 mqtt.js
- WebCrypto API 做 AES-GCM,无任何 polyfill
- 多公共中继自动故障转移(emqx / hivemq,并发探测选活的)
- Host 侧只做本机三件事:资料持久化、任务状态暂存、注册模型工具
- 测试:
node --test test/
🧰 模型工具(给 AI 用)
安装后你的 AI 多了三个工具:
friend_profile— 查看/更新自己的昵称、签名、心情friend_task— 上报"我在忙/我忙完了/我卡住了",好友能看到friend_sign_idea— 让模型根据最近干的活写一条搞笑签名(60 字内)
你可以直接对模型说:「更新一下我的鲸友签名」「我现在要开始跑一个大活,告诉好友别戳我」。
⚠️ 已知限制
- 公共 broker 是免费社区服务,不保证 SLA;高峰期可能延迟(已做多节点探测与重连)
- 状态广播间隔 8 秒,不是毫秒级
- 好友双方至少一方要开着 DSH 网页/桌面端才能互见
- 截图来自渲染 harness(真实 client.js + 真实 React 渲染,主题走宿主同一条
data-ds-dark-theme路径),非桌面应用内实拍
📄 License
MIT


No comments yet. Be the first to write one.