前言¶
DeepSeek Harness(DSH)的设计理念是“一切皆插件”,旨在让开发者通过组合工具扩展智能体能力。在实际开发中,智能体常需用户进行确认、做决定或处理已完成任务。如果缺乏有效交互手段,用户可能错过重要信息。dsh-caller 是为此设计的一个插件,它通过物理层面的声音和弹窗强制打断用户,确保“呼叫”一定会被感知。
这是什么¶
dsh-caller 是由 ChuxueTeam 维护的 DeepSeek Harness 客户端插件。当模型需要你本人回到电脑前时,它会调用 call_owner 工具。该插件设计初衷是强打扰:弹窗不会自动消失,提示音会循环播放,直到用户亲手关掉。
核心功能¶
该插件具备以下已核实的能力:
- 可自定义弹窗:支持修改弹窗的标题、正文和一行说明文字。
- 三种提示音来源:支持系统语音朗读(依赖 Windows SAPI)、内置音效、以及本地音频文件。
- 强制循环播放:提示音会循环播放,任何关闭弹窗的操作(点击、Esc 键、被新呼叫挤掉)都会立即停止声音。
- 紧急模式:通过设置
urgent: true,弹窗会切换为 🚨 样式,更加醒目。 - 开关控制:用户可在设置中关闭“允许 AI 呼叫我”开关,此时模型调用工具将无法唤起弹窗。
- 工具回执:工具返回
{ delivered, clients, text?, note }。如果未打开窗口或开关关闭,delivered为false,模型可据此调整策略。 - 系统通知:作为可选的辅助手段,当窗口不在最前面时,会发送系统通知。
- 零侵入:不修改 DSH 内置包、不读取业务 DOM、不发起任何外部网络请求。
安装与启用¶
安装该插件需要使用 DSH 的命令行工具。
dsh plugin --profile desktop add github:ChuxueTeam/dshOwnerCaller
如需本地开发,可克隆仓库后通过本地链接添加:
git clone https://github.com/ChuxueTeam/dshOwnerCaller.git
dsh plugin --profile desktop add link:<你的路径>/dshOwnerCaller
插件采用“单包双面”架构:lib/index.js 是宿主半边,负责处理工具调用和事件总线;lib/client.js 是浏览器半边,负责设置面板、弹窗渲染和音频播放。
使用方法¶
安装完成后,按以下步骤配置和使用:
-
配置设置
打开 设置 → 呼叫主人。在此界面可以调整弹窗文案、提示音源、音量,并配置是否允许 AI 呼叫。 -
测试呼叫
在设置面板中,可以使用三个测试按钮:- 立即呼叫(测试):完整模拟一次呼叫效果。
- 只预览弹窗:查看样式,不播放声音。
- 试听提示音(只响一遍):单独测试音频效果。
-
模型调用
模型在需要你介入时,会调用call_owner工具。参数包括:text:弹窗文案(最多 300 字),省略则使用默认文案。reason:可选的一行说明。urgent:布尔值,设为true开启紧急模式。silent:布尔值,设为true仅弹窗不响。
工作原理¶
插件通过宿主进程与浏览器端的通信实现功能:
- 宿主进程:模型调用
call_owner工具后,事件进入宿主进程的事件总线。宿主通过GET /api/dsh-caller/stream(SSE)或GET /api/dsh-caller/poll(轮询)将事件推送给浏览器。 - 浏览器端:
lib/client.js常驻 SSE 连接,收到call事件后触发弹窗并启动音频播放器。 - 状态同步:弹窗的关闭回调持有播放器的
stop()方法,确保关窗即静音。若音源播放失败(如文件被删),会自动退回内置音效兜底。
注意事项¶
- 强打扰设计:请勿在公共场合或会议中开启高音量测试,弹窗必须手动关闭。
- 环境依赖:使用系统语音朗读功能依赖 Windows 的
System.Speech(SAPI)。 - 生效时机:修改
lib/client.js需要刷新页面(Ctrl+R);修改lib/index.js需要重启 DSH 宿主。 - 许可证:该插件采用 MIT 许可证。