@flowingspring/dsh-voco 0.3.4 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.i18n.yaml +2 -2
- package/README.md +69 -24
- package/README.zh.md +69 -24
- package/lib/client.js +25 -25
- package/package.json +1 -1
package/README.i18n.yaml
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
|
3
3
|
# after editing either side, bring the other along and re-record with:
|
|
4
4
|
# pnpm run verify-translation-pairing --write packages/bundle/voice-app/README.md
|
|
5
|
-
README.md:
|
|
6
|
-
README.zh.md:
|
|
5
|
+
README.md: 85e0ddca1de5bfa3106c01a16ad66887759237ef
|
|
6
|
+
README.zh.md: 8669857f56b4fefd0b0a1124be390cbb405b3803
|
package/README.md
CHANGED
|
@@ -5,52 +5,97 @@
|
|
|
5
5
|
|
|
6
6
|
English | [中文](README.zh.md)
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Recoverable, interruptible voice conversations for the DeepSeek Harness (DSH) Web UI. Voco uses SiliconFlow cloud speech recognition and Edge TTS, and delegates work that needs tools to a background Agent.
|
|
9
9
|
|
|
10
10
|
## Install
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
### npm (recommended)
|
|
13
|
+
|
|
14
|
+
Install the DSH CLI first:
|
|
15
|
+
|
|
16
|
+
```powershell
|
|
17
|
+
npm install -g @deepseek-ai/dsh
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Add the plugin to the Web profile and start it:
|
|
21
|
+
|
|
22
|
+
```powershell
|
|
13
23
|
dsh plugin --profile web add @flowingspring/dsh-voco
|
|
14
24
|
dsh web
|
|
15
25
|
```
|
|
16
26
|
|
|
17
|
-
|
|
27
|
+
### GitHub Release
|
|
18
28
|
|
|
19
|
-
|
|
20
|
-
|
|
29
|
+
GitHub Releases provide a prebuilt plugin package; no source checkout or pnpm installation is required:
|
|
30
|
+
|
|
31
|
+
```powershell
|
|
32
|
+
dsh plugin --profile web add https://github.com/lgquan/dsh-voco/releases/download/v0.3.5/flowingspring-dsh-voco-0.3.5.tgz
|
|
21
33
|
```
|
|
22
34
|
|
|
23
|
-
|
|
35
|
+
Release page: [v0.3.5](https://github.com/lgquan/dsh-voco/releases/tag/v0.3.5)
|
|
36
|
+
|
|
37
|
+
## Configure the API key
|
|
38
|
+
|
|
39
|
+
Speech recognition requires your own [SiliconFlow API key](https://siliconflow.cn/). The only configuration name is `SILICONFLOW_API_KEY`; Edge TTS does not require a key.
|
|
24
40
|
|
|
25
|
-
|
|
41
|
+
For a temporary setting, use the same PowerShell session that starts DSH:
|
|
42
|
+
|
|
43
|
+
```powershell
|
|
44
|
+
$env:SILICONFLOW_API_KEY = "sk-your-api-key"
|
|
45
|
+
dsh web
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
For a persistent setting, create `.env` in the DSH user directory: `%USERPROFILE%\.dsh\.env` on Windows, or `$DSH_HOME/.env` when `DSH_HOME` is set:
|
|
26
49
|
|
|
27
50
|
```dotenv
|
|
28
|
-
SILICONFLOW_API_KEY=your-key
|
|
51
|
+
SILICONFLOW_API_KEY=sk-your-api-key
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
You may also put `.env` in the directory from which you run `dsh web`. Restart DSH after changing it. Never edit the npm installation directory or files under `node_modules`, and never commit a real key to GitHub.
|
|
55
|
+
|
|
56
|
+
## First use
|
|
57
|
+
|
|
58
|
+
1. Run `dsh web` and open the DSH Web UI.
|
|
59
|
+
2. Create or select a session, click the microphone, and grant browser permission.
|
|
60
|
+
3. Speak naturally. About 1.5 seconds of continuous silence submits an utterance.
|
|
61
|
+
4. Ordinary conversation is answered in the frontend; work that needs project tools is delegated to the background Agent.
|
|
62
|
+
|
|
63
|
+
Each Voice Session keeps its own background Agent Session binding. When the context rotation threshold is reached, later tasks automatically use a new child session that remains associated with the original Voice Session.
|
|
64
|
+
|
|
65
|
+
## Update
|
|
66
|
+
|
|
67
|
+
```powershell
|
|
68
|
+
dsh plugin --profile web add @flowingspring/dsh-voco
|
|
29
69
|
```
|
|
30
70
|
|
|
31
|
-
|
|
71
|
+
You can also install a specific GitHub Release. Restart `dsh web` after updating.
|
|
72
|
+
|
|
73
|
+
## Uninstall
|
|
74
|
+
|
|
75
|
+
```powershell
|
|
76
|
+
dsh plugin --profile web remove @flowingspring/dsh-voco
|
|
77
|
+
```
|
|
32
78
|
|
|
33
|
-
|
|
79
|
+
Uninstalling does not delete DSH sessions or Voice history.
|
|
34
80
|
|
|
35
|
-
|
|
36
|
-
- Answers ordinary conversation directly and delegates only work that needs tools.
|
|
37
|
-
- Speaks a short contextual acknowledgement before starting delegated Agent work.
|
|
38
|
-
- Keeps full task reports in the task UI while speaking a concise, purpose-written result.
|
|
39
|
-
- Supports interruption, browser navigation, reconnects, and restored conversation history.
|
|
40
|
-
- Pure voice sessions get a concise title from the first meaningful voice request, with the transcription as a fallback when the title model is unavailable.
|
|
41
|
-
- Ships the server and browser surfaces as one public npm package.
|
|
81
|
+
## Features
|
|
42
82
|
|
|
43
|
-
|
|
83
|
+
- SiliconFlow `XingChenAGI/XingChenASR-V3.2-Ultra` cloud speech recognition.
|
|
84
|
+
- Edge TTS `zh-CN-XiaoxiaoNeural` voice responses.
|
|
85
|
+
- Interruption, navigation, reconnects, and restored history.
|
|
86
|
+
- Immediate acknowledgement before delegation; full reports remain in the DSH task UI.
|
|
87
|
+
- Optional `@flowingspring/dsh-workspace-memory` integration.
|
|
44
88
|
|
|
45
|
-
|
|
89
|
+
## Troubleshooting
|
|
46
90
|
|
|
47
|
-
|
|
91
|
+
- **Missing API key**: verify that `SILICONFLOW_API_KEY` is visible to the DSH process; restart `dsh web` after changing `.env`.
|
|
92
|
+
- **Microphone unavailable**: check browser permission and the system input device, and make sure the page is served by `dsh web`.
|
|
93
|
+
- **Recognition fails or is slow**: check network access, key validity, SiliconFlow quota, and model/provider latency.
|
|
48
94
|
|
|
49
|
-
|
|
50
|
-
- Speech recognition requires network access and a SiliconFlow API key.
|
|
51
|
-
- Voice responses currently use the Chinese Xiaoxiao Edge TTS voice by default.
|
|
95
|
+
## Links
|
|
52
96
|
|
|
53
|
-
|
|
97
|
+
- [GitHub source and issues](https://github.com/lgquan/dsh-voco)
|
|
98
|
+
- [npm package](https://www.npmjs.com/package/@flowingspring/dsh-voco)
|
|
54
99
|
|
|
55
100
|
## License
|
|
56
101
|
|
package/README.zh.md
CHANGED
|
@@ -5,52 +5,97 @@
|
|
|
5
5
|
|
|
6
6
|
[English](README.md) | 中文
|
|
7
7
|
|
|
8
|
-
面向 DSH
|
|
8
|
+
面向 DeepSeek Harness(DSH)Web UI 的可恢复、可打断语音对话插件。它使用硅基流动云端语音识别和 Edge TTS,并把需要工具的工作委派给后台 Agent。
|
|
9
9
|
|
|
10
10
|
## 安装
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
### npm 安装(推荐)
|
|
13
|
+
|
|
14
|
+
先安装 DSH CLI:
|
|
15
|
+
|
|
16
|
+
```powershell
|
|
17
|
+
npm install -g @deepseek-ai/dsh
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
将插件加入 Web profile 并启动:
|
|
21
|
+
|
|
22
|
+
```powershell
|
|
13
23
|
dsh plugin --profile web add @flowingspring/dsh-voco
|
|
14
24
|
dsh web
|
|
15
25
|
```
|
|
16
26
|
|
|
17
|
-
|
|
27
|
+
### GitHub Release 安装
|
|
18
28
|
|
|
19
|
-
|
|
20
|
-
|
|
29
|
+
GitHub Release 提供已经构建好的插件包,不需要下载源码或安装 pnpm:
|
|
30
|
+
|
|
31
|
+
```powershell
|
|
32
|
+
dsh plugin --profile web add https://github.com/lgquan/dsh-voco/releases/download/v0.3.5/flowingspring-dsh-voco-0.3.5.tgz
|
|
21
33
|
```
|
|
22
34
|
|
|
23
|
-
|
|
35
|
+
Release 页面:[v0.3.5](https://github.com/lgquan/dsh-voco/releases/tag/v0.3.5)
|
|
36
|
+
|
|
37
|
+
## 配置 API Key
|
|
38
|
+
|
|
39
|
+
语音识别需要你自己的[硅基流动 API Key](https://siliconflow.cn/),配置名只有一个:`SILICONFLOW_API_KEY`。Edge TTS 不需要 API Key。
|
|
24
40
|
|
|
25
|
-
|
|
41
|
+
在启动 DSH 的同一个 PowerShell 中临时设置:
|
|
42
|
+
|
|
43
|
+
```powershell
|
|
44
|
+
$env:SILICONFLOW_API_KEY = "sk-your-api-key"
|
|
45
|
+
dsh web
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
要持久保存,可创建 DSH 用户环境文件 `%USERPROFILE%\.dsh\.env`(设置了 `DSH_HOME` 时使用 `$DSH_HOME/.env`):
|
|
26
49
|
|
|
27
50
|
```dotenv
|
|
28
|
-
SILICONFLOW_API_KEY
|
|
51
|
+
SILICONFLOW_API_KEY=sk-your-api-key
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
也可在运行 `dsh web` 的当前目录放置 `.env`。修改后重启 DSH;不要修改 npm 安装目录或 `node_modules` 中的文件,也不要把真实密钥提交到 GitHub。
|
|
55
|
+
|
|
56
|
+
## 首次使用
|
|
57
|
+
|
|
58
|
+
1. 运行 `dsh web` 并打开 DSH Web UI。
|
|
59
|
+
2. 新建或选择会话,点击麦克风并允许浏览器权限。
|
|
60
|
+
3. 直接说话,连续静音约 1.5 秒后提交一句话。
|
|
61
|
+
4. 普通聊天由前台回答,需要项目工具的工作会委派给后台 Agent。
|
|
62
|
+
|
|
63
|
+
每个语音会话持续绑定自己的后台 Agent Session。上下文达到轮换阈值后,后续任务会自动进入新的子会话,但仍与原语音会话绑定。
|
|
64
|
+
|
|
65
|
+
## 更新
|
|
66
|
+
|
|
67
|
+
```powershell
|
|
68
|
+
dsh plugin --profile web add @flowingspring/dsh-voco
|
|
29
69
|
```
|
|
30
70
|
|
|
31
|
-
|
|
71
|
+
也可以安装指定的 GitHub Release。更新后重启 `dsh web`。
|
|
72
|
+
|
|
73
|
+
## 卸载
|
|
74
|
+
|
|
75
|
+
```powershell
|
|
76
|
+
dsh plugin --profile web remove @flowingspring/dsh-voco
|
|
77
|
+
```
|
|
32
78
|
|
|
33
|
-
|
|
79
|
+
卸载不会自动删除 DSH 会话或语音历史。
|
|
34
80
|
|
|
35
|
-
|
|
36
|
-
- 普通聊天直接回答,只有需要工具的工作才委派给后台 Agent。
|
|
37
|
-
- 委派任务启动前立即播报一句贴合当前请求的简短确认语。
|
|
38
|
-
- 完整任务报告保留在任务界面,语音只播报专门生成的简洁结果。
|
|
39
|
-
- 支持语音打断、页面切换、断线重连以及历史对话恢复。
|
|
40
|
-
- 纯语音会话会根据第一条有效语音请求生成简短标题;标题模型不可用时使用语音转写作为备用。
|
|
41
|
-
- 服务端和浏览器界面统一通过一个公开 npm 包发行。
|
|
81
|
+
## 功能
|
|
42
82
|
|
|
43
|
-
|
|
83
|
+
- SiliconFlow `XingChenAGI/XingChenASR-V3.2-Ultra` 云端语音识别。
|
|
84
|
+
- Edge TTS `zh-CN-XiaoxiaoNeural` 语音回复。
|
|
85
|
+
- 语音打断、页面切换、断线重连和历史恢复。
|
|
86
|
+
- 委派前即时确认,完整报告保留在 DSH 任务界面。
|
|
87
|
+
- 可选接入 `@flowingspring/dsh-workspace-memory` 长期记忆。
|
|
44
88
|
|
|
45
|
-
|
|
89
|
+
## 排查
|
|
46
90
|
|
|
47
|
-
|
|
91
|
+
- **缺少 API Key**:确认 `SILICONFLOW_API_KEY` 在启动 DSH 的进程中可见;修改 `.env` 后重启 `dsh web`。
|
|
92
|
+
- **无法录音**:检查浏览器麦克风权限和系统输入设备,并确认页面来自 `dsh web`。
|
|
93
|
+
- **识别失败或较慢**:检查网络、Key 有效期、硅基流动账户额度及模型/Provider 延迟。
|
|
48
94
|
|
|
49
|
-
|
|
50
|
-
- 云端语音识别需要网络连接及硅基流动 API Key。
|
|
51
|
-
- 语音回复目前默认使用 Edge TTS 的中文晓晓音色。
|
|
95
|
+
## 链接
|
|
52
96
|
|
|
53
|
-
|
|
97
|
+
- [GitHub 源码与问题反馈](https://github.com/lgquan/dsh-voco)
|
|
98
|
+
- [npm 包](https://www.npmjs.com/package/@flowingspring/dsh-voco)
|
|
54
99
|
|
|
55
100
|
## 许可证
|
|
56
101
|
|
package/lib/client.js
CHANGED
|
@@ -20,11 +20,11 @@ window.__ModuleLoader__.load({
|
|
|
20
20
|
document.head.appendChild(tag);
|
|
21
21
|
}
|
|
22
22
|
var VoiceControl_module_css_default = {
|
|
23
|
-
"button": "TFZsua_button",
|
|
24
|
-
"voice-pulse": "TFZsua_voice-pulse",
|
|
25
|
-
"interruptButton": "TFZsua_interruptButton",
|
|
26
23
|
"controls": "TFZsua_controls",
|
|
27
|
-
"active": "TFZsua_active"
|
|
24
|
+
"active": "TFZsua_active",
|
|
25
|
+
"interruptButton": "TFZsua_interruptButton",
|
|
26
|
+
"button": "TFZsua_button",
|
|
27
|
+
"voice-pulse": "TFZsua_voice-pulse"
|
|
28
28
|
};
|
|
29
29
|
//#endregion
|
|
30
30
|
//#region ../ui-voice/src/client/VoiceControl.tsx
|
|
@@ -163,23 +163,23 @@ window.__ModuleLoader__.load({
|
|
|
163
163
|
document.head.appendChild(tag);
|
|
164
164
|
}
|
|
165
165
|
var VoiceNodeViews_module_css_default = {
|
|
166
|
-
"
|
|
167
|
-
"
|
|
168
|
-
"taskDetails": "Kt2smW_taskDetails",
|
|
166
|
+
"utterance": "Kt2smW_utterance",
|
|
167
|
+
"taskSummary": "Kt2smW_taskSummary",
|
|
169
168
|
"taskLink": "Kt2smW_taskLink",
|
|
170
169
|
"taskCancel": "Kt2smW_taskCancel",
|
|
171
170
|
"taskTitle": "Kt2smW_taskTitle",
|
|
172
|
-
"
|
|
171
|
+
"taskDetails": "Kt2smW_taskDetails",
|
|
172
|
+
"taskInput": "Kt2smW_taskInput",
|
|
173
|
+
"taskDot": "Kt2smW_taskDot",
|
|
174
|
+
"taskChevron": "Kt2smW_taskChevron",
|
|
173
175
|
"meta": "Kt2smW_meta",
|
|
174
|
-
"utterance": "Kt2smW_utterance",
|
|
175
176
|
"voiceBadge": "Kt2smW_voiceBadge",
|
|
176
|
-
"
|
|
177
|
-
"taskChevron": "Kt2smW_taskChevron",
|
|
177
|
+
"taskUpdate": "Kt2smW_taskUpdate",
|
|
178
178
|
"miniWave": "Kt2smW_miniWave",
|
|
179
|
-
"taskActions": "Kt2smW_taskActions",
|
|
180
179
|
"taskStatus": "Kt2smW_taskStatus",
|
|
181
|
-
"
|
|
182
|
-
"
|
|
180
|
+
"taskActions": "Kt2smW_taskActions",
|
|
181
|
+
"taskCard": "Kt2smW_taskCard",
|
|
182
|
+
"bubble": "Kt2smW_bubble"
|
|
183
183
|
};
|
|
184
184
|
//#endregion
|
|
185
185
|
//#region ../ui-voice/src/client/VoiceNodeViews.tsx
|
|
@@ -317,11 +317,11 @@ window.__ModuleLoader__.load({
|
|
|
317
317
|
document.head.appendChild(tag);
|
|
318
318
|
}
|
|
319
319
|
var VoiceOverlay_module_css_default = {
|
|
320
|
+
"root": "GPPB2G_root",
|
|
321
|
+
"status": "GPPB2G_status",
|
|
320
322
|
"stop": "GPPB2G_stop",
|
|
321
|
-
"wave": "GPPB2G_wave",
|
|
322
323
|
"voice-wave": "GPPB2G_voice-wave",
|
|
323
|
-
"
|
|
324
|
-
"status": "GPPB2G_status"
|
|
324
|
+
"wave": "GPPB2G_wave"
|
|
325
325
|
};
|
|
326
326
|
//#endregion
|
|
327
327
|
//#region ../ui-voice/src/client/VoiceOverlay.tsx
|
|
@@ -380,20 +380,20 @@ window.__ModuleLoader__.load({
|
|
|
380
380
|
document.head.appendChild(tag);
|
|
381
381
|
}
|
|
382
382
|
var VoiceSessionMarkers_module_css_default = {
|
|
383
|
-
"deleteStatus": "_0brRca_deleteStatus",
|
|
384
383
|
"childMain": "_0brRca_childMain",
|
|
385
|
-
"childTime": "_0brRca_childTime",
|
|
386
|
-
"marker": "_0brRca_marker",
|
|
387
384
|
"deleteError": "_0brRca_deleteError",
|
|
385
|
+
"childDot": "_0brRca_childDot",
|
|
386
|
+
"childTime": "_0brRca_childTime",
|
|
388
387
|
"slot": "_0brRca_slot",
|
|
389
|
-
"toggle": "_0brRca_toggle",
|
|
390
|
-
"children": "_0brRca_children",
|
|
391
388
|
"child": "_0brRca_child",
|
|
389
|
+
"children": "_0brRca_children",
|
|
390
|
+
"toggle": "_0brRca_toggle",
|
|
392
391
|
"childActions": "_0brRca_childActions",
|
|
392
|
+
"deleteAction": "_0brRca_deleteAction",
|
|
393
|
+
"deleteStatus": "_0brRca_deleteStatus",
|
|
393
394
|
"childMenuButton": "_0brRca_childMenuButton",
|
|
394
|
-
"
|
|
395
|
-
"childLabel": "_0brRca_childLabel"
|
|
396
|
-
"deleteAction": "_0brRca_deleteAction"
|
|
395
|
+
"marker": "_0brRca_marker",
|
|
396
|
+
"childLabel": "_0brRca_childLabel"
|
|
397
397
|
};
|
|
398
398
|
//#endregion
|
|
399
399
|
//#region ../ui-voice/src/client/VoiceSessionMarkers.tsx
|
package/package.json
CHANGED