DSH Companion Studio
English | 简体中文
一个面向 DeepSeek Harness 的早期桌宠引擎,强调隐私边界与可扩展角色包。它并不是又一个余额或费用监控器,而是把 DSH 提供的会话事实转化为有用的环境反馈,同时把角色美术拆分为可独立安装的资源包。
> 当前状态:公开核心预览版。运行时、隐私边界、状态机、角色包规范与打包清单均可测试。核心包不捆绑可再分发角色包;在真实 profile 验收完成前,npm 发布仍保持关闭。
效果预览

桌宠已在真实本地 DSH profile 中启用:右下角显示当前状态,输入栏同时展示工作区权限、模型与模式。

输入栏下方仍保留 DSH 原生会话状态栏,展示轮数、步骤、LLM 与工具耗时、平均首 token 延迟、吞吐速度、缓存命中率,以及输入/输出 token 数量。桌宠是在这些事实之上提供更直观的状态反馈,并不会替代原状态栏。

气泡会在当前桌宠上方实时显示一小段助手回复摘要。它只读取助手输出文字,可以单独关闭,并且不会选择推理、用户提示词、工具参数或工具结果。为保护隐私,这张文档截图刻意省略了外围的完整会话正文。

设置面板可以拖动,并提供回复预览、每小时变化、本地朗读、语音选择与本地桌宠上传。截图展示本地安装的鲸云娘角色包,面板中可以直接看到当前角色与服装。
与普通桌宠的区别
- 八种明确状态:待命、思考、流式回复、工具调用、等待用户、成功、错误和睡眠。
- 紧凑的实时气泡只显示助手回复文字,不会选择推理、提示词、工具参数或工具结果。
- 展示前会遮盖疑似凭据的字符串,回复预览也可以单独关闭。
- 可通过浏览器本地 Web Speech API 朗读完成回复;默认关闭,不会把音频或文字发送给语音服务,并可从桌宠菜单立即停止。
- 可选的每小时变化会轮换当前角色的服装并播放短展示动作;默认关闭。
- 语音菜单会自动排序本机已安装的中文语音,也允许显式选择并试听。
- 支持显示、收起和完全隐藏;完全隐藏后可通过会话页顶部按钮恢复。
- 角色与服装由数据驱动,外部角色插件可以在核心加载前后注册。
- 用户可上传一张本地 PNG/WebP 作为私人桌宠;图片仅在本地标准化并保存到 IndexedDB,刷新后仍可恢复。
- 尊重系统的
prefers-reduced-motion减少动画设置。
内置演示元数据
公开核心只包含一个不带美术的元数据占位角色 星汐 / 星潮鲸灵,用于测试角色选择器和服装设置。用户上传本地图片或安装角色包之前,它会以图形占位符显示。预览截图展示本地安装的鲸云娘角色包;核心运行时与 npm 包不捆绑其独立原始素材。
角色包模型
核心包保持精简。独立安装的 DSH 客户端插件可以从 dsh-companion-studio/client-api 导入 registerCompanionPack,注册一份角色清单。每份清单会绑定许可证、配色、服装和可选动画精灵图。基于全局 Symbol 的注册表兼容两种加载顺序,并为热重载返回清理函数。
v1 契约与动画要求见 [docs/PACK-SPEC.md](docs/PACK-SPEC.md)。
用户自定义桌宠
设置面板接受一张不超过 5 MB、分辨率不超过 2048×2048 / 419 万像素的 PNG 或 WebP。DSH 会在本地解码并重新编码为静态 PNG,保留透明通道,同时移除元数据和动画载荷。系统不接受 SVG、HTML、远程 URL 或任意脚本。处理后的 Blob 只保存在浏览器 IndexedDB;对象 URL 仅在插件挂载期间存在,并会在删除或卸载时释放。
单张图片会复用核心提供的八种轻量 CSS 动作,因此用户无需制作精灵图。高级的逐状态美术仍通过显式角色包提供。本插件不声称可以自动抠图;上传透明背景素材可获得最佳效果。
隐私边界
回复气泡读取官方 ConversationSnapshot.partial 与已完成的助手节点,并且只接受类型为 text 的内容。以下内容不会进入预览或朗读:
- 用户提示词或注入上下文;
- 推理块;
- 工具名称、参数或结果;
- 审批和提问载荷;
- 遥测、余额或模型价格。
回复预览会限制长度,并在本地朗读前再次清理。朗读功能需要用户主动开启。
本地开发
# Node.js 22.19 或更新版本
pnpm install
pnpm check
pnpm pack --dry-run构建完成后,可以按以下方式在本地评估:
dsh plugin --profile web add link:/absolute/path/to/dsh-companion-studio仓库内的 cordis.patch.yml 使用 DSH 的 profile bundle patch 机制。当前是源码预览版,并非已经发布的 npm 包。
公共仓库边界
- MIT 许可证覆盖本仓库源代码。
- 核心运行时与 npm 包不分发独立角色原始素材;文档截图只展示本地评估效果。
- 用户上传的桌宠只保存在该用户的浏览器中。
- 外部角色包作者需要声明兼容许可证并保存素材来源记录。
详情见 [docs/ASSET-PROVENANCE.md](docs/ASSET-PROVENANCE.md) 与 [SECURITY.md](SECURITY.md)。
近期门禁
1. 在真实 DSH profile 中验证流式回复、工具调用、等待、错误和完成状态切换。 2. 验证拖动位置持久化、完全隐藏与恢复,以及中英文系统语音。 3. 构建一个独立授权的外部角色包,证明其可以独立安装、卸载并兼容两种加载顺序。 4. 使用本地上传图片和外部角色包分别完成应用内视觉验收。 5. 完成以上事项后,再移除 private: true、发布 npm 包并提交社区目录。