dsh-recorder-card 0.1.0 → 0.1.1
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.md +97 -95
- package/README.zh.md +97 -95
- package/client.js +3 -0
- package/package.json +14 -1
- package/vendor/LICENSE +21 -0
- package/vendor/recorder-protocol.js +2 -0
package/README.md
CHANGED
|
@@ -1,95 +1,97 @@
|
|
|
1
|
-
# dsh-recorder-card
|
|
2
|
-
|
|
3
|
-
[中文](README.zh.md) · [Contributing](CONTRIBUTING.md) · [Roadmap](ROADMAP.md) · [Architecture](docs/architecture.md) · [Changelog](CHANGELOG.md)
|
|
4
|
-
|
|
5
|
-
**`dsh-recorder-card`** is a third-party **DeepSeek Harness (DSH)** plugin under development for connecting **AI recorder cards** over BLE.
|
|
6
|
-
|
|
7
|
-
> **Development preview:** the repository contains a plugin skeleton and browser card implementation. Import, transcription, and archive integration are not complete. DSH compatibility and hardware behavior still need verification.
|
|
8
|
-
|
|
9
|
-
## Purpose
|
|
10
|
-
|
|
11
|
-
The intended workflow is to record meetings, interviews, or notes on a dedicated device, transfer audio over BLE, and archive it with a transcript in DSH. Hardware recording does not use the computer's microphone.
|
|
12
|
-
|
|
13
|
-
The implementation follows the [upstream AI recorder card protocol](https://github.com/nextproto1024/ai-recorder-card-open-protocol). Support for a particular card or firmware must be verified; a shared product name alone does not establish compatibility.
|
|
14
|
-
|
|
15
|
-
## Current status
|
|
16
|
-
|
|
17
|
-
“Implemented” means code exists, not that it has passed DSH or hardware testing. No verified compatibility baseline is recorded yet.
|
|
18
|
-
|
|
19
|
-
| Capability | Implementation | Verification / remaining work |
|
|
20
|
-
|---|---|---|
|
|
21
|
-
| Bundle manifest and Skill provider | Implemented; local contract/package checks pass | Verify loading and Skill discovery in DSH |
|
|
22
|
-
| Browser connection, battery, recording state and controls | Implemented | Verify in the target browser with a real card |
|
|
23
|
-
| Browser file listing | Implemented | Verify multi-frame lists and completion handling |
|
|
24
|
-
| Browser file import | Placeholder | Button only displays a message; transfer and Host persistence are missing |
|
|
25
|
-
| Host Python CLI calls | Wrapper implemented | CLI is not bundled; configuration and execution need verification |
|
|
26
|
-
| `recorder_*` Agent tools and Client–Host communication | Not implemented | Registration and transport APIs need confirmation |
|
|
27
|
-
| Transcription providers and archive integrity | Planned | No complete plugin workflow or verified default provider |
|
|
28
|
-
|
|
29
|
-
See [ROADMAP.md](ROADMAP.md) for acceptance criteria.
|
|
30
|
-
|
|
31
|
-
Local regressions cover notification parsing, session/list cleanup, incomplete-list timeout warnings, and serialized session writes using simulated hooks and BLE. Run `npm test`; see [local checks](CONTRIBUTING.md#local-checks-without-hardware) for coverage and limits. These checks do not replace DSH or real-device verification.
|
|
32
|
-
|
|
33
|
-
After a list timeout, write failure, or unconfirmed end response, disconnect and reconnect before reading the list again. Same-session retries are blocked to avoid treating late responses as a new complete list. Received entries remain explicitly unconfirmed; status and recording controls remain available.
|
|
34
|
-
|
|
35
|
-
## Installation status
|
|
36
|
-
|
|
37
|
-
There is currently no verified end-user installation procedure documented here.
|
|
38
|
-
|
|
39
|
-
- **Local development:** follow the candidate DSH loading procedure in [CONTRIBUTING.md](CONTRIBUTING.md), then record the exact runtime version and results.
|
|
40
|
-
- **npm:**
|
|
41
|
-
- **GitHub / Web UI installation:** bundle installation and activation have not been verified. User instructions will follow release acceptance.
|
|
42
|
-
|
|
43
|
-
## Development requirements
|
|
44
|
-
|
|
45
|
-
- A DSH environment exposing plugin development capabilities; supported versions/profiles are not established yet.
|
|
46
|
-
- For browser experiments: Chrome or Edge with `navigator.bluetooth` available, Bluetooth access, and a protocol-compatible card. Record the actual browser/OS combination tested.
|
|
47
|
-
- Node.js for syntax checks; the minimum version remains to be established with the target DSH runtime.
|
|
48
|
-
- For Host CLI experiments only: a separate upstream checkout, Python, and that checkout's declared dependencies. This repository contains no `tools/` directory or Python requirements file.
|
|
49
|
-
|
|
50
|
-
## First development check
|
|
51
|
-
|
|
52
|
-
1. Follow the local checks and candidate DSH loading procedure in [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
53
|
-
2. Verify that the card renders and the bundled Skill is discoverable.
|
|
54
|
-
3. With a real device, verify connection, status, recording controls, and file listing separately.
|
|
55
|
-
4. Record failures and environment details. Import and transcription are future acceptance steps, not working quick-start commands.
|
|
56
|
-
|
|
57
|
-
## Architecture
|
|
58
|
-
|
|
59
|
-
| Component | File | Current role |
|
|
60
|
-
|---|---|---|
|
|
61
|
-
| Host | [index.js](index.js) | Skill registration and internal Python CLI wrapper; tools/transport pending |
|
|
62
|
-
| Client | [client.js](client.js) | React card using browser BLE; import placeholder |
|
|
63
|
-
| Skill | [skill/SKILL.md](skill/SKILL.md) | Capability checks, resource locations, and device constraints |
|
|
64
|
-
| Protocol | [vendor/recorder-protocol.js](vendor/recorder-protocol.js) | CRC, frames, parsers, and command primitives |
|
|
65
|
-
| Loader | [cordis.patch.yml](cordis.patch.yml) | Plugin loader entry |
|
|
66
|
-
|
|
67
|
-
See [architecture and open decisions](docs/architecture.md) for BLE ownership, external CLI configuration, and planned data flow.
|
|
68
|
-
|
|
69
|
-
## Transcription plan
|
|
70
|
-
|
|
71
|
-
The selected default integration target is DSH speech-to-text; Doubao, an OpenAI-compatible ASR endpoint, and local SenseVoice ONNX are optional future backends. These are not supported provider options today. The Host method only invokes an external script; it does not implement the DSH backend, provider selection, or a `transcriptionProvider` setting. M4 implements and validates the selected default before expanding support.
|
|
72
|
-
|
|
73
|
-
## Data plan
|
|
74
|
-
|
|
75
|
-
```text
|
|
76
|
-
archive/audio/ # intended destination for imported audio
|
|
77
|
-
archive/corpus/ # intended destination for transcript Markdown
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
The intended relationship uses `audio_sha256` to associate transcripts with audio and prevent unsafe reuse. This repository does not yet implement or validate that storage contract. Relative output paths in the Host wrapper resolve under its configured `repoRoot`, which may be an external checkout.
|
|
81
|
-
|
|
82
|
-
Keep audio, transcripts, device addresses, and credentials out of version control. See [.gitignore](.gitignore); check external checkouts' ignore rules too.
|
|
83
|
-
|
|
84
|
-
## Contributing
|
|
85
|
-
|
|
86
|
-
For AI-assisted collaboration, start with [AGENTS.md](AGENTS.md) and the [developer](docs/roles/open-source-developer.md) or [QA](docs/roles/qa.md) role. These documents are shared across tools; `.cursor/rules/` is an optional Cursor adapter. See [role setup](CONTRIBUTING.md#development-and-qa-roles) for explicit loading instructions when a tool does not discover the entry point automatically.
|
|
87
|
-
|
|
88
|
-
Read [CONTRIBUTING.md](CONTRIBUTING.md). Keep this README and [README.zh.md](README.zh.md) aligned when behavior or status changes. Completed changes belong in [CHANGELOG.md](CHANGELOG.md); future work belongs in [ROADMAP.md](ROADMAP.md).
|
|
89
|
-
|
|
90
|
-
## License and related projects
|
|
91
|
-
|
|
92
|
-
[MIT](LICENSE) © 2026 SynSwarm DAO.
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
1
|
+
# dsh-recorder-card
|
|
2
|
+
|
|
3
|
+
[中文](README.zh.md) · [Contributing](CONTRIBUTING.md) · [Roadmap](ROADMAP.md) · [Architecture](docs/architecture.md) · [Changelog](CHANGELOG.md)
|
|
4
|
+
|
|
5
|
+
**`dsh-recorder-card`** is a third-party **DeepSeek Harness (DSH)** plugin under development for connecting **AI recorder cards** over BLE.
|
|
6
|
+
|
|
7
|
+
> **Development preview:** the repository contains a plugin skeleton and browser card implementation. Import, transcription, and archive integration are not complete. DSH compatibility and hardware behavior still need verification. Published on npm as `dsh-recorder-card@0.1.0` (development preview).
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
The intended workflow is to record meetings, interviews, or notes on a dedicated device, transfer audio over BLE, and archive it with a transcript in DSH. Hardware recording does not use the computer's microphone.
|
|
12
|
+
|
|
13
|
+
The implementation follows the [upstream AI recorder card protocol](https://github.com/nextproto1024/ai-recorder-card-open-protocol). Support for a particular card or firmware must be verified; a shared product name alone does not establish compatibility.
|
|
14
|
+
|
|
15
|
+
## Current status
|
|
16
|
+
|
|
17
|
+
“Implemented” means code exists, not that it has passed DSH or hardware testing. No verified compatibility baseline is recorded yet.
|
|
18
|
+
|
|
19
|
+
| Capability | Implementation | Verification / remaining work |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| Bundle manifest and Skill provider | Implemented; local contract/package checks pass | Verify loading and Skill discovery in DSH |
|
|
22
|
+
| Browser connection, battery, recording state and controls | Implemented | Verify in the target browser with a real card |
|
|
23
|
+
| Browser file listing | Implemented | Verify multi-frame lists and completion handling |
|
|
24
|
+
| Browser file import | Placeholder | Button only displays a message; transfer and Host persistence are missing |
|
|
25
|
+
| Host Python CLI calls | Wrapper implemented | CLI is not bundled; configuration and execution need verification |
|
|
26
|
+
| `recorder_*` Agent tools and Client–Host communication | Not implemented | Registration and transport APIs need confirmation |
|
|
27
|
+
| Transcription providers and archive integrity | Planned | No complete plugin workflow or verified default provider |
|
|
28
|
+
|
|
29
|
+
See [ROADMAP.md](ROADMAP.md) for acceptance criteria.
|
|
30
|
+
|
|
31
|
+
Local regressions cover notification parsing, session/list cleanup, incomplete-list timeout warnings, and serialized session writes using simulated hooks and BLE. Run `npm test`; see [local checks](CONTRIBUTING.md#local-checks-without-hardware) for coverage and limits. These checks do not replace DSH or real-device verification.
|
|
32
|
+
|
|
33
|
+
After a list timeout, write failure, or unconfirmed end response, disconnect and reconnect before reading the list again. Same-session retries are blocked to avoid treating late responses as a new complete list. Received entries remain explicitly unconfirmed; status and recording controls remain available.
|
|
34
|
+
|
|
35
|
+
## Installation status
|
|
36
|
+
|
|
37
|
+
There is currently no verified end-user installation procedure documented here.
|
|
38
|
+
|
|
39
|
+
- **Local development:** follow the candidate DSH loading procedure in [CONTRIBUTING.md](CONTRIBUTING.md), then record the exact runtime version and results.
|
|
40
|
+
- **npm:** published as `dsh-recorder-card@0.1.0`; install spec `dsh plugin add dsh-recorder-card`. End-user installation and activation in DSH have not been verified yet.
|
|
41
|
+
- **GitHub / Web UI installation:** bundle installation and activation have not been verified. User instructions will follow release acceptance.
|
|
42
|
+
|
|
43
|
+
## Development requirements
|
|
44
|
+
|
|
45
|
+
- A DSH environment exposing plugin development capabilities; supported versions/profiles are not established yet.
|
|
46
|
+
- For browser experiments: Chrome or Edge with `navigator.bluetooth` available, Bluetooth access, and a protocol-compatible card. Record the actual browser/OS combination tested.
|
|
47
|
+
- Node.js for syntax checks; the minimum version remains to be established with the target DSH runtime.
|
|
48
|
+
- For Host CLI experiments only: a separate upstream checkout, Python, and that checkout's declared dependencies. This repository contains no `tools/` directory or Python requirements file.
|
|
49
|
+
|
|
50
|
+
## First development check
|
|
51
|
+
|
|
52
|
+
1. Follow the local checks and candidate DSH loading procedure in [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
53
|
+
2. Verify that the card renders and the bundled Skill is discoverable.
|
|
54
|
+
3. With a real device, verify connection, status, recording controls, and file listing separately.
|
|
55
|
+
4. Record failures and environment details. Import and transcription are future acceptance steps, not working quick-start commands.
|
|
56
|
+
|
|
57
|
+
## Architecture
|
|
58
|
+
|
|
59
|
+
| Component | File | Current role |
|
|
60
|
+
|---|---|---|
|
|
61
|
+
| Host | [index.js](index.js) | Skill registration and internal Python CLI wrapper; tools/transport pending |
|
|
62
|
+
| Client | [client.js](client.js) | React card using browser BLE; import placeholder |
|
|
63
|
+
| Skill | [skill/SKILL.md](skill/SKILL.md) | Capability checks, resource locations, and device constraints |
|
|
64
|
+
| Protocol | [vendor/recorder-protocol.js](vendor/recorder-protocol.js) | CRC, frames, parsers, and command primitives |
|
|
65
|
+
| Loader | [cordis.patch.yml](cordis.patch.yml) | Plugin loader entry |
|
|
66
|
+
|
|
67
|
+
See [architecture and open decisions](docs/architecture.md) for BLE ownership, external CLI configuration, and planned data flow.
|
|
68
|
+
|
|
69
|
+
## Transcription plan
|
|
70
|
+
|
|
71
|
+
The selected default integration target is DSH speech-to-text; Doubao, an OpenAI-compatible ASR endpoint, and local SenseVoice ONNX are optional future backends. These are not supported provider options today. The Host method only invokes an external script; it does not implement the DSH backend, provider selection, or a `transcriptionProvider` setting. M4 implements and validates the selected default before expanding support.
|
|
72
|
+
|
|
73
|
+
## Data plan
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
archive/audio/ # intended destination for imported audio
|
|
77
|
+
archive/corpus/ # intended destination for transcript Markdown
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
The intended relationship uses `audio_sha256` to associate transcripts with audio and prevent unsafe reuse. This repository does not yet implement or validate that storage contract. Relative output paths in the Host wrapper resolve under its configured `repoRoot`, which may be an external checkout.
|
|
81
|
+
|
|
82
|
+
Keep audio, transcripts, device addresses, and credentials out of version control. See [.gitignore](.gitignore); check external checkouts' ignore rules too.
|
|
83
|
+
|
|
84
|
+
## Contributing
|
|
85
|
+
|
|
86
|
+
For AI-assisted collaboration, start with [AGENTS.md](AGENTS.md) and the [developer](docs/roles/open-source-developer.md) or [QA](docs/roles/qa.md) role. These documents are shared across tools; `.cursor/rules/` is an optional Cursor adapter. See [role setup](CONTRIBUTING.md#development-and-qa-roles) for explicit loading instructions when a tool does not discover the entry point automatically.
|
|
87
|
+
|
|
88
|
+
Read [CONTRIBUTING.md](CONTRIBUTING.md). Keep this README and [README.zh.md](README.zh.md) aligned when behavior or status changes. Completed changes belong in [CHANGELOG.md](CHANGELOG.md); future work belongs in [ROADMAP.md](ROADMAP.md).
|
|
89
|
+
|
|
90
|
+
## License and related projects
|
|
91
|
+
|
|
92
|
+
[MIT](LICENSE) © 2026 SynSwarm DAO.
|
|
93
|
+
|
|
94
|
+
The vendored protocol and its inline copy in `client.js` include code from NextProto's AI recorder card open protocol, © 2026 NextProto, under the [upstream MIT license](vendor/LICENSE). This notice is included in the npm package.
|
|
95
|
+
|
|
96
|
+
- [AI recorder card open protocol](https://github.com/nextproto1024/ai-recorder-card-open-protocol): external protocol and CLI source.
|
|
97
|
+
- [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness): intended host runtime.
|
package/README.zh.md
CHANGED
|
@@ -1,95 +1,97 @@
|
|
|
1
|
-
# dsh-recorder-card
|
|
2
|
-
|
|
3
|
-
[English](README.md) · [贡献指南](CONTRIBUTING.md) · [路线图](ROADMAP.md) · [架构](docs/architecture.md) · [更新记录](CHANGELOG.md)
|
|
4
|
-
|
|
5
|
-
**`dsh-recorder-card`** 是一个开发中的第三方 **DeepSeek Harness (DSH)** 插件,用于通过 BLE 接入 **AI 录音卡**。
|
|
6
|
-
|
|
7
|
-
> **开发预览:** 当前仓库包含插件骨架和浏览器卡片实现,导入、转写和归档尚未打通。DSH
|
|
8
|
-
|
|
9
|
-
## 项目用途
|
|
10
|
-
|
|
11
|
-
目标流程是:用专用设备记录会议、采访或笔记,通过 BLE 传回音频,再在 DSH 中归档并转写。硬件录音不使用电脑麦克风。
|
|
12
|
-
|
|
13
|
-
实现依据[上游 AI 录音卡协议](https://github.com/nextproto1024/ai-recorder-card-open-protocol)。具体卡片和固件是否兼容,需要实测确认;产品名称相同不代表协议兼容。
|
|
14
|
-
|
|
15
|
-
## 当前状态
|
|
16
|
-
|
|
17
|
-
“已有实现”仅表示存在代码,不代表已经通过 DSH 或硬件测试。目前尚未记录经过验证的兼容环境基线。
|
|
18
|
-
|
|
19
|
-
| 能力 | 实现状态 | 验证情况 / 剩余工作 |
|
|
20
|
-
|---|---|---|
|
|
21
|
-
| Bundle 清单和 Skill provider | 已有实现,本地合约与包检查通过 | 待验证 DSH 加载和 Skill 发现 |
|
|
22
|
-
| 浏览器连接、电量、录音状态与控制 | 已有实现 | 待目标浏览器及实机验证 |
|
|
23
|
-
| 浏览器文件列表 | 已有实现 | 待验证多帧列表和结束处理 |
|
|
24
|
-
| 浏览器文件导入 | 占位 | 按钮仅显示提示,尚缺传输和 Host 落盘 |
|
|
25
|
-
| Host 调用 Python CLI | 已有封装 | 未随包提供 CLI,配置及执行待验证 |
|
|
26
|
-
| `recorder_*` Agent 工具和前后端通信 | 未实现 | 待确认注册及通信接口 |
|
|
27
|
-
| 转写后端和归档完整性 | 规划中 | 尚无插件完整流程或已验证的默认后端 |
|
|
28
|
-
|
|
29
|
-
验收标准见 [ROADMAP.md](ROADMAP.md)。
|
|
30
|
-
|
|
31
|
-
本地回归测试通过模拟 hooks 和 BLE,覆盖通知解析、会话和列表请求清理、列表超时与不完整结果提示,以及会话内串行写入。运行 `npm test`;覆盖范围和限制见[本地检查](CONTRIBUTING.md#local-checks-without-hardware)。这些检查不能替代 DSH 或实机验证。
|
|
32
|
-
|
|
33
|
-
列表超时、写入失败或结束响应未确认成功后,需先断开并重新连接,再读取列表。当前连接禁止列表重试,避免把迟到响应当作新请求的完整结果。已收到的条目仍明确标为未确认,状态刷新和录音控制可继续使用。
|
|
34
|
-
|
|
35
|
-
## 安装状态
|
|
36
|
-
|
|
37
|
-
目前尚无已验证的最终用户安装流程。
|
|
38
|
-
|
|
39
|
-
- **本地开发:** 按[贡献指南](CONTRIBUTING.md)中的候选 DSH 加载流程验证,并记录准确的运行时版本和结果。
|
|
40
|
-
- **npm:**
|
|
41
|
-
- **GitHub / Web 界面安装:** 尚未验证 bundle 安装和启用;通过发布验收后再补充用户安装步骤。
|
|
42
|
-
|
|
43
|
-
## 开发环境要求
|
|
44
|
-
|
|
45
|
-
- 提供插件开发能力的 DSH 环境;支持的版本及 profile 尚未确定。
|
|
46
|
-
- 浏览器实验需要 Chrome 或 Edge、可用的 `navigator.bluetooth`、蓝牙访问权限,以及协议兼容的录音卡。需记录实际测试的浏览器和系统组合。
|
|
47
|
-
- 本地语法检查需要 Node.js;最低支持版本待结合目标 DSH 运行时确定。
|
|
48
|
-
- 仅 Host CLI 实验需要:单独获取的上游仓库、Python,以及该版本上游声明的依赖。本仓库不包含 `tools/` 目录或 Python 依赖清单。
|
|
49
|
-
|
|
50
|
-
## 首次开发验证
|
|
51
|
-
|
|
52
|
-
1. 完成[贡献指南](CONTRIBUTING.md)中的本地检查和候选 DSH 加载流程。
|
|
53
|
-
2. 确认录音卡片能够显示,内置 Skill 能被发现。
|
|
54
|
-
3. 使用实机分别验证连接、状态、录音控制和文件列表。
|
|
55
|
-
4. 记录失败项及环境信息。导入和转写属于后续验收项,目前没有可用的快速开始命令。
|
|
56
|
-
|
|
57
|
-
## 架构
|
|
58
|
-
|
|
59
|
-
| 组件 | 文件 | 当前职责 |
|
|
60
|
-
|---|---|---|
|
|
61
|
-
| Host | [index.js](index.js) | Skill 注册和内部 Python CLI 封装;工具及通信待接入 |
|
|
62
|
-
| Client | [client.js](client.js) | 使用浏览器 BLE 的 React 卡片;导入为占位 |
|
|
63
|
-
| Skill | [skill/SKILL.md](skill/SKILL.md) | 能力检查、资源定位及设备操作约束 |
|
|
64
|
-
| 协议 | [vendor/recorder-protocol.js](vendor/recorder-protocol.js) | CRC、组帧、解析及命令原语 |
|
|
65
|
-
| 加载配置 | [cordis.patch.yml](cordis.patch.yml) | 插件加载条目 |
|
|
66
|
-
|
|
67
|
-
BLE 连接归属、外部 CLI 配置及规划中的数据流见[架构与待决事项](docs/architecture.md)。
|
|
68
|
-
|
|
69
|
-
## 转写规划
|
|
70
|
-
|
|
71
|
-
默认接入目标已确定为 DSH 内置语音转写;豆包、OpenAI 兼容 ASR 接口和本地 SenseVoice ONNX 为后续可选后端。目前它们不是已支持的 provider 选项。现有 Host 方法只调用外部脚本,没有实现 DSH 后端、provider 选择或 `transcriptionProvider` 配置。M4 先实现并验证既定默认后端,再扩展支持范围。
|
|
72
|
-
|
|
73
|
-
## 数据规划
|
|
74
|
-
|
|
75
|
-
```text
|
|
76
|
-
archive/audio/ # 计划存放导入的音频
|
|
77
|
-
archive/corpus/ # 计划存放转写 Markdown
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
计划使用 `audio_sha256` 指纹关联音频与转写,避免错误复用。当前仓库尚未实现或验证这一存储约定。Host 封装中的相对输出路径以配置的 `repoRoot` 为基准,该位置可能是外部仓库。
|
|
81
|
-
|
|
82
|
-
音频、转写、设备地址和密钥不得提交到版本库。参见 [.gitignore](.gitignore);使用外部仓库时,也需检查其忽略规则。
|
|
83
|
-
|
|
84
|
-
## 贡献
|
|
85
|
-
|
|
86
|
-
使用 AI 工具协作时,从 [AGENTS.md](AGENTS.md) 进入,再读取[开发者](docs/roles/open-source-developer.md)或 [QA](docs/roles/qa.md) 职责。这些文档供不同工具共用,`.cursor/rules/` 仅为可选的 Cursor 适配层。工具未自动发现入口时,按[角色使用说明](CONTRIBUTING.md#development-and-qa-roles)显式要求读取。
|
|
87
|
-
|
|
88
|
-
请阅读 [CONTRIBUTING.md](CONTRIBUTING.md)。行为或状态变化时,同步维护本文件和 [README.md](README.md)。已完成的变化写入 [CHANGELOG.md](CHANGELOG.md),未来工作放入 [ROADMAP.md](ROADMAP.md)。
|
|
89
|
-
|
|
90
|
-
## 许可证与相关项目
|
|
91
|
-
|
|
92
|
-
[MIT](LICENSE) © 2026 SynSwarm DAO。
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
1
|
+
# dsh-recorder-card
|
|
2
|
+
|
|
3
|
+
[English](README.md) · [贡献指南](CONTRIBUTING.md) · [路线图](ROADMAP.md) · [架构](docs/architecture.md) · [更新记录](CHANGELOG.md)
|
|
4
|
+
|
|
5
|
+
**`dsh-recorder-card`** 是一个开发中的第三方 **DeepSeek Harness (DSH)** 插件,用于通过 BLE 接入 **AI 录音卡**。
|
|
6
|
+
|
|
7
|
+
> **开发预览:** 当前仓库包含插件骨架和浏览器卡片实现,导入、转写和归档尚未打通。DSH 兼容性及实机行为仍待验证。已发布到 npm:`dsh-recorder-card@0.1.0`(开发预览版)。
|
|
8
|
+
|
|
9
|
+
## 项目用途
|
|
10
|
+
|
|
11
|
+
目标流程是:用专用设备记录会议、采访或笔记,通过 BLE 传回音频,再在 DSH 中归档并转写。硬件录音不使用电脑麦克风。
|
|
12
|
+
|
|
13
|
+
实现依据[上游 AI 录音卡协议](https://github.com/nextproto1024/ai-recorder-card-open-protocol)。具体卡片和固件是否兼容,需要实测确认;产品名称相同不代表协议兼容。
|
|
14
|
+
|
|
15
|
+
## 当前状态
|
|
16
|
+
|
|
17
|
+
“已有实现”仅表示存在代码,不代表已经通过 DSH 或硬件测试。目前尚未记录经过验证的兼容环境基线。
|
|
18
|
+
|
|
19
|
+
| 能力 | 实现状态 | 验证情况 / 剩余工作 |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| Bundle 清单和 Skill provider | 已有实现,本地合约与包检查通过 | 待验证 DSH 加载和 Skill 发现 |
|
|
22
|
+
| 浏览器连接、电量、录音状态与控制 | 已有实现 | 待目标浏览器及实机验证 |
|
|
23
|
+
| 浏览器文件列表 | 已有实现 | 待验证多帧列表和结束处理 |
|
|
24
|
+
| 浏览器文件导入 | 占位 | 按钮仅显示提示,尚缺传输和 Host 落盘 |
|
|
25
|
+
| Host 调用 Python CLI | 已有封装 | 未随包提供 CLI,配置及执行待验证 |
|
|
26
|
+
| `recorder_*` Agent 工具和前后端通信 | 未实现 | 待确认注册及通信接口 |
|
|
27
|
+
| 转写后端和归档完整性 | 规划中 | 尚无插件完整流程或已验证的默认后端 |
|
|
28
|
+
|
|
29
|
+
验收标准见 [ROADMAP.md](ROADMAP.md)。
|
|
30
|
+
|
|
31
|
+
本地回归测试通过模拟 hooks 和 BLE,覆盖通知解析、会话和列表请求清理、列表超时与不完整结果提示,以及会话内串行写入。运行 `npm test`;覆盖范围和限制见[本地检查](CONTRIBUTING.md#local-checks-without-hardware)。这些检查不能替代 DSH 或实机验证。
|
|
32
|
+
|
|
33
|
+
列表超时、写入失败或结束响应未确认成功后,需先断开并重新连接,再读取列表。当前连接禁止列表重试,避免把迟到响应当作新请求的完整结果。已收到的条目仍明确标为未确认,状态刷新和录音控制可继续使用。
|
|
34
|
+
|
|
35
|
+
## 安装状态
|
|
36
|
+
|
|
37
|
+
目前尚无已验证的最终用户安装流程。
|
|
38
|
+
|
|
39
|
+
- **本地开发:** 按[贡献指南](CONTRIBUTING.md)中的候选 DSH 加载流程验证,并记录准确的运行时版本和结果。
|
|
40
|
+
- **npm:** 已发布 `dsh-recorder-card@0.1.0`,安装 spec 为 `dsh plugin add dsh-recorder-card`。DSH 内的最终用户安装和启用尚未验证。
|
|
41
|
+
- **GitHub / Web 界面安装:** 尚未验证 bundle 安装和启用;通过发布验收后再补充用户安装步骤。
|
|
42
|
+
|
|
43
|
+
## 开发环境要求
|
|
44
|
+
|
|
45
|
+
- 提供插件开发能力的 DSH 环境;支持的版本及 profile 尚未确定。
|
|
46
|
+
- 浏览器实验需要 Chrome 或 Edge、可用的 `navigator.bluetooth`、蓝牙访问权限,以及协议兼容的录音卡。需记录实际测试的浏览器和系统组合。
|
|
47
|
+
- 本地语法检查需要 Node.js;最低支持版本待结合目标 DSH 运行时确定。
|
|
48
|
+
- 仅 Host CLI 实验需要:单独获取的上游仓库、Python,以及该版本上游声明的依赖。本仓库不包含 `tools/` 目录或 Python 依赖清单。
|
|
49
|
+
|
|
50
|
+
## 首次开发验证
|
|
51
|
+
|
|
52
|
+
1. 完成[贡献指南](CONTRIBUTING.md)中的本地检查和候选 DSH 加载流程。
|
|
53
|
+
2. 确认录音卡片能够显示,内置 Skill 能被发现。
|
|
54
|
+
3. 使用实机分别验证连接、状态、录音控制和文件列表。
|
|
55
|
+
4. 记录失败项及环境信息。导入和转写属于后续验收项,目前没有可用的快速开始命令。
|
|
56
|
+
|
|
57
|
+
## 架构
|
|
58
|
+
|
|
59
|
+
| 组件 | 文件 | 当前职责 |
|
|
60
|
+
|---|---|---|
|
|
61
|
+
| Host | [index.js](index.js) | Skill 注册和内部 Python CLI 封装;工具及通信待接入 |
|
|
62
|
+
| Client | [client.js](client.js) | 使用浏览器 BLE 的 React 卡片;导入为占位 |
|
|
63
|
+
| Skill | [skill/SKILL.md](skill/SKILL.md) | 能力检查、资源定位及设备操作约束 |
|
|
64
|
+
| 协议 | [vendor/recorder-protocol.js](vendor/recorder-protocol.js) | CRC、组帧、解析及命令原语 |
|
|
65
|
+
| 加载配置 | [cordis.patch.yml](cordis.patch.yml) | 插件加载条目 |
|
|
66
|
+
|
|
67
|
+
BLE 连接归属、外部 CLI 配置及规划中的数据流见[架构与待决事项](docs/architecture.md)。
|
|
68
|
+
|
|
69
|
+
## 转写规划
|
|
70
|
+
|
|
71
|
+
默认接入目标已确定为 DSH 内置语音转写;豆包、OpenAI 兼容 ASR 接口和本地 SenseVoice ONNX 为后续可选后端。目前它们不是已支持的 provider 选项。现有 Host 方法只调用外部脚本,没有实现 DSH 后端、provider 选择或 `transcriptionProvider` 配置。M4 先实现并验证既定默认后端,再扩展支持范围。
|
|
72
|
+
|
|
73
|
+
## 数据规划
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
archive/audio/ # 计划存放导入的音频
|
|
77
|
+
archive/corpus/ # 计划存放转写 Markdown
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
计划使用 `audio_sha256` 指纹关联音频与转写,避免错误复用。当前仓库尚未实现或验证这一存储约定。Host 封装中的相对输出路径以配置的 `repoRoot` 为基准,该位置可能是外部仓库。
|
|
81
|
+
|
|
82
|
+
音频、转写、设备地址和密钥不得提交到版本库。参见 [.gitignore](.gitignore);使用外部仓库时,也需检查其忽略规则。
|
|
83
|
+
|
|
84
|
+
## 贡献
|
|
85
|
+
|
|
86
|
+
使用 AI 工具协作时,从 [AGENTS.md](AGENTS.md) 进入,再读取[开发者](docs/roles/open-source-developer.md)或 [QA](docs/roles/qa.md) 职责。这些文档供不同工具共用,`.cursor/rules/` 仅为可选的 Cursor 适配层。工具未自动发现入口时,按[角色使用说明](CONTRIBUTING.md#development-and-qa-roles)显式要求读取。
|
|
87
|
+
|
|
88
|
+
请阅读 [CONTRIBUTING.md](CONTRIBUTING.md)。行为或状态变化时,同步维护本文件和 [README.md](README.md)。已完成的变化写入 [CHANGELOG.md](CHANGELOG.md),未来工作放入 [ROADMAP.md](ROADMAP.md)。
|
|
89
|
+
|
|
90
|
+
## 许可证与相关项目
|
|
91
|
+
|
|
92
|
+
[MIT](LICENSE) © 2026 SynSwarm DAO。
|
|
93
|
+
|
|
94
|
+
协议副本及 `client.js` 中的内联副本包含 NextProto AI 录音卡开放协议的代码,© 2026 NextProto,遵循[上游 MIT 许可证](vendor/LICENSE)。该声明随 npm 包分发。
|
|
95
|
+
|
|
96
|
+
- [AI 录音卡开放协议](https://github.com/nextproto1024/ai-recorder-card-open-protocol):外部协议与 CLI 来源。
|
|
97
|
+
- [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness):目标宿主运行时。
|
package/client.js
CHANGED
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
// Protocol primitives inlined from the upstream sdk/javascript/qs668-protocol.js
|
|
4
4
|
// (MIT) so the card needs no extra module-format resolution. Canonical copy is
|
|
5
5
|
// vendor/recorder-protocol.js.
|
|
6
|
+
// Copyright (c) 2026 NextProto (upstream protocol portions).
|
|
7
|
+
// Full upstream copyright and permission notice: vendor/LICENSE
|
|
8
|
+
// https://github.com/nextproto1024/ai-recorder-card-open-protocol
|
|
6
9
|
//
|
|
7
10
|
// DSH constraints (from cordis-plugin-development references):
|
|
8
11
|
// - register into a slot with ctx.slots.inject / ctx.slots.register
|
package/package.json
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-recorder-card",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Development-preview DSH plugin for AI recorder cards, with browser BLE control and file-listing code. DSH and hardware verification pending; audio import and transcription integration are planned.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"deepseek",
|
|
7
|
+
"deepseek-harness",
|
|
8
|
+
"dsh",
|
|
9
|
+
"recorder",
|
|
10
|
+
"recording-card",
|
|
11
|
+
"voice-recorder",
|
|
12
|
+
"ble",
|
|
13
|
+
"bluetooth",
|
|
14
|
+
"audio",
|
|
15
|
+
"ai-recorder"
|
|
16
|
+
],
|
|
4
17
|
"private": false,
|
|
5
18
|
"type": "module",
|
|
6
19
|
"scripts": {
|
package/vendor/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 NextProto
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// Vendored from nextproto1024/ai-recorder-card-open-protocol (MIT License).
|
|
2
2
|
// https://github.com/nextproto1024/ai-recorder-card-open-protocol
|
|
3
|
+
// Copyright (c) 2026 NextProto
|
|
4
|
+
// Full upstream copyright and permission notice: ./LICENSE
|
|
3
5
|
|
|
4
6
|
export const UUIDS = Object.freeze({
|
|
5
7
|
service: "0000ae20-0000-1000-8000-00805f9b34fb",
|