前言¶
在 DSH 里跑智能体,对话往往只停在本机:想给同事看一段完整上下文、想边聊边让人围观、想在局域网里对等设备互通,常见做法是截屏、导出文件或自建服务。数据一旦出网,边界和同意机制很难和 Host 里的会话状态对齐。
dsh-chat 是维护者 z8313568 提交的 DSH 客户端类插件,定位是「面向 DSH 的去中心化 AI 社交与创作网络」——发现、好友、分享、直播、节点共建。当前实现范围对应产品规划 V2.0 的阶段 0 + 阶段 1 核心骨架:能安装、能跑、能被外部进程验证。一句话概括 README 里的目标:让每一次 AI 对话,都可以被分享、讨论和复现;默认情况下,装好后字节不会离开本机,直到你在界面上对某条会话显式开启分享或直播。
目录页:skillhub.cn/plugins/z8313568/dsh-chat。源码与说明:github.com/z8313568/dsh-chat(MIT,package 版本 0.1.0)。peer 依赖声明 DSH >=0.2.0-rc.2 <0.3.0,Node >=22.19。
这是什么¶
dsh-chat 在 DSH 内提供 Host 半体(节点身份、网络、RPC)与 Web 客户端(界面与槽位注入)。传输层通过可替换的 NodeTransport 接口实现,当前为 LanTransport:RFC6455 WebSocket、UDP 信标发现、邀请码、双向 Ed25519 握手;上层不绑死 libp2p/WebRTC,便于按规划「先实测再选型」。
诚实边界写在仓库 docs/plan-coverage.md:尚未实现群聊、离线消息托管、UDP 传输层(TCP 打洞受同时打开限制)、IPFS/内容寻址分发、区块链存证等。NAT 穿透、跨运营商时延、企业防火墙等场景 README 标明本次未在真实环境全量验证,并指向 docs/network-testing.md 的矩阵与设备实验方法。
核心功能(当前版本已核实部分)¶
会话分享¶
在会话页使用「分享会话」,依次选访问范围、外发粒度、内容类型;必须看过预览才能发布。分享对象包含:内容哈希 id(对除 id 与 sig 外字段哈希)、Merkle 根、作者 Ed25519 签名、访问策略,以及 disclosure 说明表(写明包含与不包含什么)。校验时完整性与真实性分开结论,与规划 §6.4 一致——哈希只能证一致,不能证内容一定真实。
会话直播¶
主播侧:开播 / 暂停 / 恢复 / 结束 / 发布回放。观众侧:按 seq 补拉、去重、检测空洞。直播事件带签名,类型与规划 §7.4 对齐(如 session_started、message_added、artifact_published、stream_paused 等)。暂停不等于结束;事件序号仅由主播推进,观众聊天走独立通道,不污染事实序列。
节点、隐私与出站控制¶
- 首次启动生成 Ed25519 身份,私钥写入
~/.dsh/dsh-chat/identity.json(权限0600),不上传、不进外发结构。 - 授权为「会话 × 内容类型 × 范围 × 有效期」四元组,默认拒绝,不跨进程继承;分享/开播前须预览,Host 会拒绝无
previewed的 RPC。 - 出站脱敏对齐官方
dsh-session-telemetry的 waterfall:任一规则出错则 fail-closed 扣下整条记录。 - 「一键暂停所有贡献」:撤销全部授权并结束所有直播间。
节点网络与中继¶
- 私聊端到端加密(X25519 + AES-GCM),中继在协议层无法解开;明文私聊被拒转。
- 打洞:交换候选并双方同时拨号;全锥/受限锥可打通,对称 NAT 跳过并标注类型。
- 多中继按「手动指定 > 目标亲和 > 本地成功率 > 负载」打分;他人证明不压过本地实测。可达性采用分层取证,入站实证为唯一判据,不依赖「比对公网 IP」。
- 直播观众间分发:已收数据的观众可帮同房间转发;README 给出发布者上行在特定可达假设下的实测降幅(如全员可达约 -80%)。
插件目录(规划 §4)¶
本地可验证清单与四维评分(功能 / 易用 / 稳定 / 文档)。从文件系统安装的插件在目录中标记 verified: false;聚合结果带 sybilResistance: 'none'。
安装与启用¶
资料中的安装路径是:在本地准备好 dsh-chat 源码目录后构建,再通过 DSH 的 plugin_manager 装入 bundle(不要手改 profile 的 package.json 或 cordis.patch.yml,install_bundle 会处理补丁)。
先在源码目录执行依赖安装与构建(生成 lib/,Host ESM + Client CJS):
npm install
npm run build
将下面命令里的路径换成你的 dsh-chat 绝对路径,安装或重装到 profile(README 示例为 desktop):
plugin_manager { action: "install_bundle", target: "/绝对路径/dsh-chat" }
插件自身的 cordis.patch.yml 仅插入加载项,例如:
- insert:
- id: dsh-chat
name: dsh-chat
Host 半体代码改动后必须重启 DSH;仅 install_bundle 不会重载已缓存的 Node ESM 模块。改 src/client/** 一般刷新页面即可(Client HMR 按指纹替换)。改 cordis.patch.yml 的 config 约 1 秒热重载,但 README 注明本版未导出 Config schema,Plugins 设置页不会出现表单,配置只能走补丁且改后需重启 DSH。
卸载:
plugin_manager { action: "set_bundle", target: "dsh-chat", enabled: false }
~/.dsh/dsh-chat/ 不会自动删除(含身份私钥),需自行备份后清理。
配置示例¶
在 cordis.patch.yml 对应条目下增加 config:(默认值见 src/host/config.js):
- insert:
- id: dsh-chat
name: dsh-chat
config:
identity:
nickname: 我的节点
privacy:
defaultSharingMode: disabled # disabled | minimal | standard | full
redaction:
keywords: ["内部代号"]
patterns: ["SECRET-\\d+"]
discovery:
enabled: true
beaconPort: 47899
listen:
host: 127.0.0.1 # 改为局域网地址才会向局域网广播
port: 0
贡献相关默认值(节选,完整说明见 docs/contribution-defaults.md):
contribution:
mode: auto # off | auto | on
swarm:
enabled: true
minRoomSize: 4
maxServees: 4
maxServeBytesPerMinute: 33554432
maxCacheBytes: 536870912
onlyOnPower: true
onlyOnUnmetered: true
monthlyUploadBudgetBytes: 21474836480
规划 §9.2 要求基础功能不以贡献为前提;本项目区分「已在看的直播 swarm 分发(默认开)」与「对陌生人中继(默认 auto,受可达性、计费网络、电源与预算等约束)」。
典型用法与验证¶
- 安装 bundle 并重启 DSH 后,在会话界面按需使用分享或直播流程(分享前完成预览与策略选择)。
- 局域网发现:将
listen.host改为局域网地址并配置discovery.beaconPort(默认 47899),按 README 与网络文档在可控环境内测试。 - 装好并重启后,可用独立进程验证节点被发现与握手:
node scripts/verify-live-node.mjs
README 称外部独立进程可在约 8ms 内被发现、完成双向 Ed25519 握手并交换签名信封;详细输出见 docs/verification.md。
开发自检:
npm test # README:314 项测试
npm run doctor # 插件加载与 boot 阶段排查
cat ~/.dsh/dsh-chat/boot.json # apply / rpc-mounted / apply-completed 等 phase
网络专项(源码目录内):
npm run test:network
npm run lab -- probe --seconds 20
适用场景与注意¶
适合谁:需要在 DSH 内做会话级分享/直播、局域网节点互通,且愿意接受「阶段 0+1 骨架」与文档列出的未实现项的开发者或内网试点用户。
权限与安全:插件以当前 DSH 进程权限运行;安装前应阅读源码与 MIT 许可证,理解身份密钥位置与分享/直播的显式同意模型。社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。
加载失败:Cordis 硬依赖可能导致静默不加载;界面若显示无法访问 Host 半体,按 README 查 boot.json 与 npm run doctor。禁用再启用不能替代重启来加载新 Host 代码。
测试与星标:GitHub 公开星标为 0;README 自述 314 项测试通过及网络子集结果,以仓库当前 CI/本地 npm test 为准。
结尾¶
dsh-chat 把「本地默认不出网、显式同意才外发、分享/直播可校验、节点可替换传输层」收进一个可安装的 DSH 插件,适合作为去中心化 AI 社交网络的第一个可验证骨架。进一步的产品覆盖、中继与打洞设计见仓库 docs/;安装与问题排查以 README 为准。