danmu-tui 0.4.4 → 0.5.0
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 +121 -273
- package/THIRD_PARTY_NOTICES.md +23 -0
- package/package.json +1 -1
- package/vendor/darwin-arm64/danmu +0 -0
- package/vendor/darwin-x64/danmu +0 -0
- package/vendor/linux-arm64/danmu +0 -0
- package/vendor/linux-x64/danmu +0 -0
- package/vendor/win32-x64/danmu.exe +0 -0
package/README.md
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<a href="https://danmu.elazer.wang">
|
|
3
|
-
<img src="website/public/logo-pixel.svg" alt="DANMU 官方 Logo" width="96" height="96">
|
|
2
|
+
<a href="https://danmu.elazer.wang/">
|
|
3
|
+
<img src="https://raw.githubusercontent.com/rockythink/shisui-danmu/main/website/public/logo-pixel.svg" alt="DANMU 官方 Logo" width="96" height="96">
|
|
4
4
|
</a>
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
7
|
<h1 align="center">DANMU</h1>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
|
-
<strong
|
|
11
|
-
|
|
10
|
+
<strong>面向知识型主播的免费开源弹幕与提问工作台。</strong><br>
|
|
11
|
+
在终端里看互动、找问题、审核助手回复,保留每场记录。
|
|
12
12
|
</p>
|
|
13
13
|
|
|
14
14
|
<p align="center">
|
|
15
|
-
<a href="https://danmu.elazer.wang"
|
|
16
|
-
|
|
15
|
+
<a href="https://danmu.elazer.wang/">官方网站</a> ·
|
|
16
|
+
<a href="https://danmu.elazer.wang/guide/"><strong>使用手册</strong></a> ·
|
|
17
17
|
<a href="https://github.com/rockythink/shisui-danmu/releases/latest">下载最新版</a>
|
|
18
18
|
</p>
|
|
19
19
|
|
|
@@ -21,361 +21,209 @@
|
|
|
21
21
|
<a href="https://github.com/rockythink/shisui-danmu/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/rockythink/shisui-danmu/ci.yml?style=flat-square&label=build&colorA=111827&colorB=4ADE80" alt="Build"></a>
|
|
22
22
|
<a href="https://github.com/rockythink/shisui-danmu/releases/latest"><img src="https://img.shields.io/github/v/release/rockythink/shisui-danmu?style=flat-square&colorA=111827&colorB=22D3EE" alt="Release"></a>
|
|
23
23
|
<a href="https://github.com/rockythink/shisui-danmu/blob/main/LICENSE"><img src="https://img.shields.io/github/license/rockythink/shisui-danmu?style=flat-square&colorA=111827&colorB=F472B6" alt="License"></a>
|
|
24
|
-
<img src="https://img.shields.io/badge/Rust-1.89%2B-F8FAFC?style=flat-square&colorA=111827&logo=rust&logoColor=white" alt="Rust 1.89+">
|
|
25
|
-
<img src="https://img.shields.io/badge/OBS_WebSocket-v5-FACC15?style=flat-square&colorA=111827" alt="OBS WebSocket v5">
|
|
26
24
|
</p>
|
|
27
25
|
|
|
28
|
-
<p align="center">
|
|
29
|
-
macOS · Linux · Windows | Bilibili | Ratatui | MPL-2.0
|
|
30
|
-
</p>
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
**DANMU** 是面向知识型主播的免费开源弹幕与提问工作台。它把 B 站的历史弹幕、实时互动、重点问题、发送状态和有限 OBS 控制放进同一个终端界面,让主播少盯几个窗口,多留一点注意力给正在讲的内容。
|
|
35
|
-
|
|
36
|
-
它不是播放器,也不是另一套 OBS。它只解决直播时最容易失控的那一段:**看见互动、辨认问题、快速回应、保留现场。**
|
|
37
|
-
|
|
38
|
-
## v0.4.4 更新:历史逐条滚动,停播连续确认
|
|
39
|
-
|
|
40
|
-
- **历史不再整页跳动**:每个滚轮事件移动一条消息;从回复选择接续当前位置,新消息到达时保留阅读锚点,`End` 返回实时。
|
|
41
|
-
- **OBS 状态更明确**:连接状态统一为单个 `●`,绿色表示已连接,红色表示未连接。
|
|
42
|
-
- **停播连续确认**:`/obs stop` 打开弹窗,默认选中“返回”;方向键确认后显示 3 秒倒计时,Esc 可取消,不再输入 `/obs confirm` 或 `/obs cancel`。
|
|
43
|
-
|
|
44
|
-
完整说明与安装包见 [v0.4.4 Release](https://github.com/rockythink/shisui-danmu/releases/tag/v0.4.4)。更新后重新启动 TUI。
|
|
45
|
-
|
|
46
|
-
### v0.4.3:互动可读,正文不动
|
|
47
|
-
|
|
48
|
-
- 进场、点赞移到弹幕框底边,不挤动正文,也不占用弹幕历史缓存。
|
|
49
|
-
- 提示姓名至少稳定展示 2 秒,同批合并,进场优先;重复互动仅按可靠用户 ID 合并。
|
|
50
|
-
- 只保留当前批次与下一批摘要,不积压点名队列;历史浏览和回复选择保持稳定。
|
|
51
|
-
|
|
52
|
-
历史说明见 [v0.4.3 Release](https://github.com/rockythink/shisui-danmu/releases/tag/v0.4.3)。
|
|
26
|
+
<p align="center">macOS · Linux · Windows | Bilibili | Ratatui | MPL-2.0</p>
|
|
53
27
|
|
|
54
|
-
|
|
28
|
+
DANMU 把 B 站历史弹幕、实时互动、重点问题、发送状态和有限 OBS 控制放在同一个终端里。它不是播放器,也不是完整直播画布或另一套 OBS。
|
|
55
29
|
|
|
56
30
|
<p align="center">
|
|
57
31
|
<a href="https://danmu.elazer.wang/danmu-product-demo.mp4">
|
|
58
|
-
<img src="assets/danmu-product-demo.gif" alt="DANMU
|
|
32
|
+
<img src="https://raw.githubusercontent.com/rockythink/shisui-danmu/main/assets/danmu-product-demo.gif" alt="DANMU 基础功能实录:启动、实时弹幕与终端交互" width="100%">
|
|
59
33
|
</a>
|
|
60
34
|
</p>
|
|
61
35
|
|
|
62
|
-
|
|
36
|
+
这是基础功能实录,**不代表已经展示 v0.5.0 的 AI 助手流程**。点击画面观看完整 MP4。
|
|
63
37
|
|
|
64
|
-
|
|
65
|
-
<a href="https://danmu.elazer.wang"><strong>访问 DANMU 官网</strong></a>
|
|
66
|
-
·
|
|
67
|
-
<a href="https://danmu.elazer.wang/danmu-product-demo.mp4"><strong>观看完整 MP4(56 秒)</strong></a>
|
|
68
|
-
</p>
|
|
69
|
-
|
|
70
|
-
## 为什么做 DANMU
|
|
38
|
+
## v0.5.0 变化
|
|
71
39
|
|
|
72
|
-
|
|
40
|
+
- **本机 ACP 助手**:接入用户自己的原生 AI 工具,打开面板、连接模型、启动值班与允许公开发送分别控制。Pi 提供显式准备命令 `danmu setup pi`,不代装原生 Pi、不登录、不启动推理。
|
|
41
|
+
- **工作区与历史**:可编辑人设资料、按房间历史索引、跨场检索和维护副本;旧消息标记为 `↶`,不会重新进入 AI 队列。后台加载不阻塞主界面,修复先备份,不删除原始 Journal。
|
|
42
|
+
- **统一设置与账号**:`/settings` 汇集五类设置;主账号与独立助手号分开管理、分开发送队列,独立号失效不回退主号。审核与编辑保留人工草稿。
|
|
43
|
+
- **候选安全与发送诊断**:未知或重复本批目标整批拒绝,随后继续处理新消息;真实连接、协议、身份和磁盘错误仍明确暴露。发送未确认不自动补发。
|
|
44
|
+
- **低成本合批与轮次诊断**:普通空白、纯笑声和平台已识别纯表情可跳过;连续空轮后普通消息按 5–10 秒合批,点名不等合批但仍受单飞与授权限制。`/diag` 区分零候选、原生无正文、待审、拒绝和真正错误。
|
|
45
|
+
- **官网使用手册**:用 Astro Starlight 承载完整操作文档,提供章节导航与搜索;README 保持为产品入口。
|
|
73
46
|
|
|
74
|
-
|
|
47
|
+
从 0.4.5 升级请沿用原安装渠道,运行 `danmu --version` 确认 `0.5.0`,再自行重启所有旧 TUI 实例。无需删除历史库。历史版本说明见 [Releases](https://github.com/rockythink/shisui-danmu/releases)。
|
|
75
48
|
|
|
76
|
-
|
|
77
|
-
- **不漏重要互动**:历史窗口与实时流合并、去重,断线自动重连;
|
|
78
|
-
- **问题留在眼前**:键盘选中弹幕、插入回复对象、设置重点消息;
|
|
79
|
-
- **发送结果可确认**:长弹幕按 Unicode 字素安全分段,并等待主播身份回流;
|
|
80
|
-
- **现场状态可感知**:直播状态、开播时长、看过、点赞、弹幕与在线人数分层显示;
|
|
81
|
-
- **OBS 只做必要的事**:场景、推流、静音和单路麦克风电平,不复制完整控制台;
|
|
82
|
-
- **结束后还有记录**:每场直播写入独立 Journal,可搜索并导出快照。
|
|
49
|
+
## 安装与首次启动
|
|
83
50
|
|
|
84
|
-
|
|
51
|
+
任选一种渠道,安装后的命令都叫 `danmu`:
|
|
85
52
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
任选一种渠道;安装后的命令都叫 `danmu`。
|
|
89
|
-
|
|
90
|
-
| 渠道 | 命令 | 适用环境 |
|
|
53
|
+
| 渠道 | 安装命令 | 适用环境 |
|
|
91
54
|
| --- | --- | --- |
|
|
92
|
-
| npm | `npm install -g danmu-tui` |
|
|
93
|
-
| Bun | `bun install -g danmu-tui` |
|
|
55
|
+
| npm | `npm install -g danmu-tui` | Node.js 18+ |
|
|
56
|
+
| Bun | `bun install -g danmu-tui` | Bun |
|
|
94
57
|
| Homebrew | `brew install rockythink/tap/danmu` | macOS、Linux |
|
|
95
|
-
| Cargo | `cargo install shisui-danmu --locked` |
|
|
58
|
+
| Cargo | `cargo install shisui-danmu --locked` | Rust 1.89+ |
|
|
96
59
|
| 安装脚本 | 见下方 | macOS、Linux、Windows Git Bash |
|
|
97
|
-
|
|
|
98
|
-
|
|
99
|
-
产品名统一为 **DANMU**。为保持已有仓库链接和本地数据目录兼容,GitHub 仓库与 Cargo 包继续使用 `shisui-danmu`,npm 包使用 `danmu-tui`;所有渠道安装后的可执行命令均为 `danmu`。
|
|
100
|
-
|
|
101
|
-
npm 与 Bun 安装的是同一份 Rust 原生程序,不是 JavaScript 重写;包内不运行 `postinstall` 下载脚本。无需全局安装也可以直接执行:
|
|
102
|
-
|
|
103
|
-
```bash
|
|
104
|
-
npx danmu-tui <房间号>
|
|
105
|
-
bunx danmu-tui <房间号>
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
无 Node、Bun、Homebrew 或 Rust 环境时,使用安装脚本:
|
|
60
|
+
| 预编译包 | [GitHub Releases](https://github.com/rockythink/shisui-danmu/releases/latest) | 下列五种平台构建 |
|
|
109
61
|
|
|
110
62
|
```bash
|
|
111
63
|
curl -fsSL https://raw.githubusercontent.com/rockythink/shisui-danmu/main/script/install_release.sh | bash
|
|
112
64
|
```
|
|
113
65
|
|
|
114
|
-
|
|
66
|
+
脚本按平台下载 Release、校验 SHA-256,默认安装到 `~/.local/bin/danmu`。npm/Bun 包同样运行 Rust 原生程序,不是 JavaScript 重写,也不通过 `postinstall` 下载二进制。
|
|
115
67
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
danmu
|
|
120
|
-
|
|
68
|
+
| 平台 | Release 文件 |
|
|
69
|
+
| --- | --- |
|
|
70
|
+
| macOS Apple Silicon | `shisui-danmu-macos-aarch64.tar.gz` |
|
|
71
|
+
| macOS Intel | `shisui-danmu-macos-x86_64.tar.gz` |
|
|
72
|
+
| Linux x86_64 | `shisui-danmu-linux-x86_64.tar.gz` |
|
|
73
|
+
| Linux aarch64 | `shisui-danmu-linux-aarch64.tar.gz` |
|
|
74
|
+
| Windows x86_64 | `shisui-danmu-windows-x86_64.zip` |
|
|
121
75
|
|
|
122
|
-
|
|
76
|
+
每个压缩包都有同名 `.sha256`。以上是**基础 TUI** 的构建范围;内置 ACP Runner 要求 Unix,部分宿主还有更窄的平台限制,不宣传 Windows 内置 AI 可用。
|
|
123
77
|
|
|
124
78
|
```bash
|
|
125
|
-
danmu --
|
|
79
|
+
danmu --version
|
|
80
|
+
danmu <房间号>
|
|
126
81
|
```
|
|
127
82
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
### 3. 登录并发送弹幕(可选)
|
|
83
|
+
公开监看无需登录。需要人工发送时,登录的是 DANMU,而不是浏览器:
|
|
131
84
|
|
|
132
85
|
```bash
|
|
133
86
|
danmu --login
|
|
87
|
+
danmu <房间号>
|
|
134
88
|
```
|
|
135
89
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
```bash
|
|
139
|
-
danmu --logout
|
|
140
|
-
```
|
|
90
|
+
用哔哩哔哩客户端扫码;进入后在输入框写正文,按 Enter 发送,粘贴只插入内容。`danmu --logout` 只退出 DANMU 主账号。发送区的 `?` 表示送达未确认,不应当作确定失败自动重发。
|
|
141
91
|
|
|
142
|
-
|
|
92
|
+
升级、PATH、启动自检及各渠道细节见 [安装与升级](https://danmu.elazer.wang/guide/#安装与升级)。
|
|
143
93
|
|
|
144
|
-
##
|
|
94
|
+
## 高频操作
|
|
145
95
|
|
|
146
|
-
|
|
|
96
|
+
| 操作 | 入口 |
|
|
147
97
|
| --- | --- |
|
|
148
|
-
|
|
|
149
|
-
|
|
|
150
|
-
|
|
|
151
|
-
|
|
|
152
|
-
|
|
|
153
|
-
|
|
|
154
|
-
|
|
|
98
|
+
| 搜索指令,返回时保留草稿与光标 | Ctrl+O 或 `/commands` |
|
|
99
|
+
| 设置与操作总菜单 | `/settings` |
|
|
100
|
+
| 切换消息布局 | Tab |
|
|
101
|
+
| 浏览历史 / 选择回复对象 | ↑↓ / Shift+↑↓ |
|
|
102
|
+
| 插入选中对象的 @ | 选择后 Enter |
|
|
103
|
+
| 取消当前操作 / 返回实时 | Esc;浏览或选择状态下 End 也返回实时 |
|
|
104
|
+
| 助手运行面板 / 候选审核 | Ctrl+G 或 `/ai` / `/review` |
|
|
105
|
+
| 暂停助手与撤销发送许可 | Ctrl+P 或 `/pause` |
|
|
106
|
+
| 重点消息 / 搜索归档 | `/pin` / `/find [关键词]` |
|
|
107
|
+
| 诊断与上轮摘要 | `/diag`,F1 或 `?` 展开详情 |
|
|
108
|
+
| 安全退出 | Ctrl+C 或 `/quit` |
|
|
155
109
|
|
|
156
|
-
|
|
110
|
+
正常编辑输入时 End 是行尾。主界面可原生拖选文字,用终端复制快捷键复制;macOS 的 ⌘C 是复制,Ctrl+C 是退出。
|
|
157
111
|
|
|
158
|
-
|
|
159
|
-
| --- | --- | --- |
|
|
160
|
-
| `◉` | 累计看过 | `WATCHED_CHANGE.data.num` |
|
|
161
|
-
| `♥` | 累计点赞 | `LIKE_INFO_V3_UPDATE.data.click_count` |
|
|
162
|
-
| `▤` | 本次运行收到的实时弹幕数 | 本地会话计数 |
|
|
163
|
-
| `●` | 当前在线人数 | 登录后读取 `getOnlineRank.data.onlineNum` |
|
|
112
|
+
OBS 从 `danmu --configure-obs` 或 `/settings obs` 配置。`/obs start` 会真的开始推流;`/obs stop` 需要确认,随后 3 秒内可按 Esc 取消。退出 DANMU 不会停止 OBS 推流。
|
|
164
113
|
|
|
165
|
-
|
|
114
|
+
## AI 与平台边界
|
|
166
115
|
|
|
167
|
-
|
|
116
|
+
**程序开源免费,不等于外部模型免费。** 原生宿主的安装、登录、订阅、模型费用和搜索额度由用户及对应服务管理。
|
|
168
117
|
|
|
169
|
-
|
|
118
|
+
1. 在 `/settings` → AI助手 → 模型选择已安装、已认证的宿主;连接/同步只读取模型与思考档位,不开始值班。
|
|
119
|
+
2. `/ai start` 开始处理新消息;先用 `/review` 阅读候选,完整看过后 Shift+Enter 批准。编辑中的 Enter 只保存,不发送。
|
|
120
|
+
3. 自动发送必须由本人明确授权。保存过的自动偏好,仅在同房间、同发送 UID 且启动恢复检查通过时续用;暂停、身份或房间变化、身份失效会撤权。批量批准当前候选不授权未来候选。
|
|
170
121
|
|
|
171
|
-
|
|
172
|
-
| --- | --- |
|
|
173
|
-
| 打开命令面板 | `/` |
|
|
174
|
-
| 切换信息流 / 聊天布局 | `Tab` |
|
|
175
|
-
| 浏览历史 | 鼠标滚轮,每次移动一条消息,不整页跳动 |
|
|
176
|
-
| 回到最新消息 | `End` |
|
|
177
|
-
| 选择回复对象 | `Shift+↑/↓` |
|
|
178
|
-
| 插入 `@用户名` | 选择后按 `Enter` |
|
|
179
|
-
| 取消选择或退出 | `Esc` |
|
|
180
|
-
| 安全退出 | `Ctrl+C` 或 `/quit` |
|
|
181
|
-
| 行首 / 行尾 | `Home` / `End`,或 `Ctrl+A/E` |
|
|
182
|
-
| 删除到行首 / 删除前一个词 | `Ctrl+U/W` |
|
|
183
|
-
|
|
184
|
-
### TUI 命令
|
|
185
|
-
|
|
186
|
-
| 命令 | 作用 |
|
|
187
|
-
| --- | --- |
|
|
188
|
-
| `/help` | 显示命令面板操作提示 |
|
|
189
|
-
| `/login` · `/logout` | 扫码登录或清除独立登录态 |
|
|
190
|
-
| `/layout` | 切换信息流与聊天布局 |
|
|
191
|
-
| `/theme` | 打开主题选择;`/theme reload` 热加载自定义主题 |
|
|
192
|
-
| `/names show\|hide` | 显示或隐藏用户名 |
|
|
193
|
-
| `/time show\|hide` | 显示或隐藏消息时间 |
|
|
194
|
-
| `/feature` | 将当前选中消息设为重点 |
|
|
195
|
-
| `/archive [关键词]` | 搜索历史会话 |
|
|
196
|
-
| `/obs` · `/obs status` | 检查或查看 OBS 状态 |
|
|
197
|
-
| `/obs mute\|unmute` | 静音或取消静音所配置的麦克风 |
|
|
198
|
-
| `/obs scene [名称]` | 列出或切换场景 |
|
|
199
|
-
| `/obs config mic [名称]` | 列出或选择单路麦克风输入 |
|
|
200
|
-
| `/obs start` | 开始推流 |
|
|
201
|
-
| `/obs config password` | 隐藏输入并更新 TUI 私有 OBS 密码文件 |
|
|
202
|
-
| `/obs stop` | 打开停播确认弹窗,默认选中“返回”;按 ↑ 选中“确认”并按 Enter,倒计时 3 秒后停止推流;确认与倒计时期间可按 Esc 返回 |
|
|
203
|
-
| `/quit` | 安全退出并写入会话状态 |
|
|
204
|
-
|
|
205
|
-
## OBS 接入
|
|
122
|
+
Unix 用户接入官方 Node 版 Pi 前,先自行安装并认证 Pi,再执行:
|
|
206
123
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
2. 启用 WebSocket 服务器,记下端口;如启用了身份验证,同时准备密码;
|
|
211
|
-
3. 运行配置向导:
|
|
124
|
+
```bash
|
|
125
|
+
danmu setup pi
|
|
126
|
+
```
|
|
212
127
|
|
|
213
|
-
|
|
214
|
-
danmu --configure-obs
|
|
215
|
-
```
|
|
128
|
+
这只准备应用私有的 `pi-acp@0.0.33`,需要 Node.js 20+ 与 npm;重复执行复用已准备适配器,不加载用户全局扩展,不替换不可用模型或思考档位。完整流程见 [Pi 接入示例](https://danmu.elazer.wang/guide/#pi接入示例)。
|
|
216
129
|
|
|
217
|
-
|
|
218
|
-
5. 进入 TUI 后运行 `/obs status` 验证连接。
|
|
130
|
+
当前适配列表为 OMP、Gemini、Claude Code、Codex、OpenCode、Pi、Amp、GitHub Copilot CLI、DeepSeek Harness。**适配实现或隔离验证不等于九种宿主、所有真实模型均已验收。** 具体版本与限制见[开发接入向导](https://github.com/rockythink/shisui-danmu/blob/main/docs/agent-onboarding.md#九宿主接入与认证边界)。
|
|
219
131
|
|
|
220
|
-
|
|
132
|
+
平台目前只接入 B 站。模型不能授权发送、操作电脑或自报送达;联网默认关闭,开启也仅准入搜索。麦克风状态不是语音内容识别。连续空轮合批不承诺固定省费比例、永不漏答或永不报错。
|
|
221
133
|
|
|
222
|
-
|
|
134
|
+
## 文档
|
|
223
135
|
|
|
224
|
-
|
|
136
|
+
- **[官网使用手册](https://danmu.elazer.wang/guide/)**:安装、设置、OBS、AI、审核、账号、成本、数据与排错。
|
|
137
|
+
- [故障排查](https://danmu.elazer.wang/guide/#故障排查):先看诊断、保留草稿和原始历史,不靠删库或重放旧消息解决问题。
|
|
138
|
+
- [命令参考](https://danmu.elazer.wang/guide/#命令参考与进一步阅读):完整 CLI、TUI 与高级隔离入口。
|
|
139
|
+
- [开发接入向导](https://github.com/rockythink/shisui-danmu/blob/main/docs/agent-onboarding.md)、[功能矩阵](https://github.com/rockythink/shisui-danmu/blob/main/docs/terminal-feature-matrix.md):实现契约与验证边界,不代替用户手册。
|
|
225
140
|
|
|
226
|
-
|
|
141
|
+
用户手册只维护在官网的 Starlight 内容目录,随源码版本管理,不另维护一份 GitHub 操作手册。
|
|
227
142
|
|
|
228
|
-
|
|
143
|
+
## 高级集成
|
|
229
144
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
[--room <房间号>]
|
|
233
|
-
[--single-line <true|false>]
|
|
234
|
-
[--show-time <true|false>]
|
|
235
|
-
[--show-name <true|false> | --hide-name]
|
|
236
|
-
[--theme <主题名>]
|
|
237
|
-
[--config <路径>]
|
|
238
|
-
```
|
|
145
|
+
<details>
|
|
146
|
+
<summary>外部 Agent、CLI/MCP 契约与隔离运行</summary>
|
|
239
147
|
|
|
240
|
-
|
|
148
|
+
### 连接已有实例
|
|
241
149
|
|
|
242
|
-
|
|
150
|
+
外部 Agent 与 TUI 连接同一运行实例,不另启动 TUI、不读取平台凭据。用户须显式提供绝对私有目录:
|
|
243
151
|
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
single_line = true
|
|
247
|
-
chat_layout = false
|
|
248
|
-
show_time = true
|
|
249
|
-
show_name = true
|
|
152
|
+
```bash
|
|
153
|
+
danmu --instance /绝对私有实例目录 <房间号>
|
|
250
154
|
```
|
|
251
155
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
### True Color 主题
|
|
255
|
-
|
|
256
|
-
内置四套深色主题:
|
|
156
|
+
另一个终端或宿主连接该实例:
|
|
257
157
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
- `gruvbox-dark`
|
|
262
|
-
|
|
263
|
-
```text
|
|
264
|
-
/theme
|
|
265
|
-
/theme tokyo-night
|
|
266
|
-
/theme reload
|
|
158
|
+
```bash
|
|
159
|
+
danmu --instance /绝对私有实例目录 agent status '{}'
|
|
160
|
+
danmu --instance /绝对私有实例目录 mcp
|
|
267
161
|
```
|
|
268
162
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
## 数据、凭据与恢复
|
|
272
|
-
|
|
273
|
-
DANMU 使用独立命名空间,不读取商业 GUI、浏览器或其他直播工具的数据:
|
|
163
|
+
MCP 入口由宿主以 stdio 启动,stdout 只输出 JSON-RPC。没有 `--instance` 时基础 TUI 仍可使用,但不向外部 Agent 开放端点。
|
|
274
164
|
|
|
275
|
-
|
|
276
|
-
- OBS 密码:独立 `obs-password` 文件,Unix 权限 `0600`;可由 `OBS_API_PASSWORD` 临时覆盖;不使用系统钥匙串;
|
|
277
|
-
- OBS 非敏感配置:独立 `obs-control.json`;
|
|
278
|
-
- 主题与启动配置:平台配置目录中的 `shisui-danmu/`;
|
|
279
|
-
- 会话记录:每场直播一个目录,持续追加 `journal.jsonl`;
|
|
280
|
-
- 正常结束:额外生成 `snapshot.json` 与 `summary.md`;
|
|
281
|
-
- 异常退出:下次进入同一房间时恢复未结束会话。
|
|
165
|
+
### 共用业务契约
|
|
282
166
|
|
|
283
|
-
|
|
167
|
+
CLI:`danmu --instance DIR agent 操作 'JSON对象'`。MCP 工具名为 `danmu_操作`,宿主可能增加服务器名前缀。
|
|
284
168
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
D --> J[JSONL Session Journal]
|
|
293
|
-
C[CLI / TOML / Theme Catalog] --> T
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
- `src/bilibili/`:房间解析、历史补偿、WebSocket、账号与发送;
|
|
297
|
-
- `src/domain/`:标准事件、会话、指标、去重与问题分类;
|
|
298
|
-
- `src/obs.rs`、`src/obs/`:有限 OBS 控制与电平聚合;
|
|
299
|
-
- `src/terminal/`:Ratatui 渲染、输入、二维码与电平表;
|
|
300
|
-
- `src/persistence.rs`:追加式 Journal、恢复、搜索和导出。
|
|
169
|
+
| 操作 | 参数与结果 |
|
|
170
|
+
| --- | --- |
|
|
171
|
+
| `status` | 返回本场 `session`、`active`、`available`、`sending_enabled`、最新 `cursor`;不授权 |
|
|
172
|
+
| `messages` | `session`、`cursor`、`limit`(1..200,默认 50)、`wait_ms`(0..25000);返回到达顺序的稳定消息 ID、消费 `cursor`、`latest_cursor`、`oldest_cursor` 及 `gap`。空页是正常超时,不自动标黄 |
|
|
173
|
+
| `report` | `session`、`caller`、`request_id`、`message_id`、`state`(`processing` / `finished` / `failed`);不能自报 confirmed |
|
|
174
|
+
| `reply` | `session`、`caller`、`request_id`、原 `message_id`、`text`、`candidate`;`candidate=true` 等待 TUI 确认;受理不代表发送 |
|
|
175
|
+
| `result` | `session`、`caller`、`request_id`;查询 `awaiting_approval` / `accepted` / `sending` / `confirmed` / `uncertain` / `rejected` / `cancelled` |
|
|
301
176
|
|
|
302
|
-
|
|
177
|
+
完整流程见[共享 danmu-duty Skill](https://github.com/rockythink/shisui-danmu/blob/main/agent-package/skills/danmu-duty/SKILL.md)。每场保留 512 项增量事件、4096 项幂等操作;超出窗口明确 `gap`,幂等记录满则拒绝新请求而非驱逐旧记录。同一操作重传必须保持 `caller`、`request_id` 与参数不变;不同调用者可合法回复同一原消息。
|
|
303
178
|
|
|
304
|
-
|
|
179
|
+
每次启动或新场都有独立随机 `session`;旧请求不跨场补发,预载历史不充当增量游标。外部工具不能开自动许可;生产启动恢复只采用本人先前保存、范围仍匹配且核验通过的授权,工具重连本身不恢复权限。
|
|
305
180
|
|
|
306
|
-
|
|
181
|
+
Unix 实例目录 0700、描述文件 0600;端点只绑定 127.0.0.1 随机端口,使用实例私有随机 token 与独占目录锁。同一系统用户不是抵御恶意本机代码的 OS 沙箱,不向不可信进程共享实例目录。
|
|
307
182
|
|
|
308
|
-
|
|
183
|
+
### MCP 取消语义
|
|
309
184
|
|
|
310
|
-
|
|
185
|
+
每连接最多 16 个未回收工具调用,完成后回收容量。`notifications/cancelled` 按当前连接的 JSON-RPC `requestId` 取消尚未完成的 `danmu_messages` 有限等待,释放读取连接,不再发送该取消请求的响应。未知或已完成 ID 忽略;完成早于取消时,允许已经发出的一次响应。
|
|
311
186
|
|
|
312
|
-
|
|
187
|
+
取消通知不撤销已提交回复,不开关发送许可。按 [MCP 取消规范](https://modelcontextprotocol.io/specification/2025-11-25/basic/utilities/cancellation),客户端应停止等待被取消 ID,而不是继续等待正常空页。发送结果不确定时查询原请求,不使用新 ID 猜测重发。
|
|
313
188
|
|
|
314
|
-
|
|
189
|
+
Runner 持有时 `status.driver=runner`。外部读/查保留,同一内置调用者 `danmu-assistant` 的 `report/reply` 返回 `runner_active`;其他独立调用者仍受原权限控制。不要换调用者绕过同一助手互斥;切换前由用户停止旧外部值班,DANMU 不抢停外部 Agent。
|
|
315
190
|
|
|
316
|
-
|
|
191
|
+
### 外部配置生成器
|
|
317
192
|
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
cd shisui-danmu
|
|
321
|
-
cargo build --release --locked
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
安装到 `~/.local/bin/danmu`:
|
|
325
|
-
|
|
326
|
-
```bash
|
|
327
|
-
./script/install_cli.sh
|
|
193
|
+
```text
|
|
194
|
+
python3 script/agent_config.py --host HOST --binary /绝对路径/danmu --instance /绝对私有实例目录
|
|
328
195
|
```
|
|
329
196
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
```bash
|
|
333
|
-
cargo install --locked --path .
|
|
334
|
-
```
|
|
197
|
+
生成器只打印配置,不安装、不写宿主设置、不启动宿主。`HOST` 可选 `omp`、`claude`、`codex`、`opencode`、`gemini`、`cursor`、`vscode`、`amp`、`pi`;这是外部接入格式列表,不等同于内置 Runner 宿主列表。Amp 使用 `amp.mcpServers`;Pi 只输出明确标记的 CLI 示例,不安装 MCP 扩展。用户负责合并配置、信任服务器与限制宿主自身的其他能力。
|
|
335
198
|
|
|
336
|
-
|
|
199
|
+
### 无房间隔离示例
|
|
337
200
|
|
|
338
201
|
```bash
|
|
339
|
-
|
|
202
|
+
INSTANCE="$(mktemp -d /tmp/danmu-agent.XXXXXX)"
|
|
203
|
+
danmu --instance "$INSTANCE" local --assistant
|
|
340
204
|
```
|
|
341
205
|
|
|
342
|
-
|
|
206
|
+
`local` 要求全新的空私有目录,只使用人工输入与 LocalTransport,不读取生产配置、不登录、不连接真实房间或 OBS。`--assistant` 只打开面板,不启动模型或授权。
|
|
343
207
|
|
|
344
|
-
|
|
345
|
-
- 严格 `clippy`
|
|
346
|
-
- 全目标测试
|
|
347
|
-
- Release 构建
|
|
348
|
-
- CLI 冒烟
|
|
208
|
+
在这个隔离 TUI 内可输入 `/event 观众甲 怎样理解增量游标?`,用 `/local confirmed|uncertain|rejected` 选择本地传输结果,用 `/session end|new` 演练场次切换。这些是本地 TUI 命令,不是外部 CLI/MCP 控制口;外部五操作不能启动 Runner、注入事件或批准发送。
|
|
349
209
|
|
|
350
|
-
|
|
210
|
+
工具/本地入口不能混用房间、登录、OBS、回放或生产配置参数。`setup pi` 独立执行,不接受 `--instance` 等 TUI 参数。退出只移除该实例端点并释放锁,保留记录;本地自动许可不保存为真实房间授权。
|
|
351
211
|
|
|
352
|
-
|
|
212
|
+
</details>
|
|
353
213
|
|
|
354
|
-
|
|
355
|
-
| --- | --- |
|
|
356
|
-
| macOS Apple Silicon | `shisui-danmu-macos-aarch64.tar.gz` |
|
|
357
|
-
| macOS Intel | `shisui-danmu-macos-x86_64.tar.gz` |
|
|
358
|
-
| Linux x86_64 | `shisui-danmu-linux-x86_64.tar.gz` |
|
|
359
|
-
| Linux aarch64 | `shisui-danmu-linux-aarch64.tar.gz` |
|
|
360
|
-
| Windows x86_64 | `shisui-danmu-windows-x86_64.zip` |
|
|
361
|
-
|
|
362
|
-
指定版本或安装目录:
|
|
363
|
-
|
|
364
|
-
```bash
|
|
365
|
-
curl -fsSL https://raw.githubusercontent.com/rockythink/shisui-danmu/main/script/install_release.sh | \
|
|
366
|
-
DANMU_VERSION=v0.4.4 DANMU_INSTALL_DIR="$HOME/bin" bash
|
|
367
|
-
```
|
|
214
|
+
## 开发、贡献与许可
|
|
368
215
|
|
|
369
|
-
|
|
216
|
+
需要 Rust 1.89+;网站构建使用 Node.js 24。
|
|
370
217
|
|
|
371
218
|
```bash
|
|
372
|
-
|
|
219
|
+
git clone https://github.com/rockythink/shisui-danmu.git
|
|
220
|
+
cd shisui-danmu
|
|
221
|
+
./script/verify.sh
|
|
222
|
+
./script/install_cli.sh
|
|
373
223
|
```
|
|
374
224
|
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
## License、商标与安全
|
|
225
|
+
`verify.sh` 执行格式检查、严格 Clippy、全目标测试、Release 构建及 CLI 冒烟。CI 在 macOS、Linux、Windows 执行 Rust 门禁,并构建官网。平台协议留在 Adapter,领域模块不直接依赖 B 站协议字段。贡献前阅读 [CONTRIBUTING.md](https://github.com/rockythink/shisui-danmu/blob/main/CONTRIBUTING.md)。
|
|
378
226
|
|
|
379
|
-
|
|
227
|
+
源代码采用 [MPL-2.0](https://github.com/rockythink/shisui-danmu/blob/main/LICENSE),第三方说明见 [THIRD_PARTY_NOTICES.md](https://github.com/rockythink/shisui-danmu/blob/main/THIRD_PARTY_NOTICES.md)。开源许可不授予 DANMU 名称、Logo 或其他品牌资产的商标许可,详见 [TRADEMARKS.md](https://github.com/rockythink/shisui-danmu/blob/main/TRADEMARKS.md)。
|
|
380
228
|
|
|
381
|
-
|
|
229
|
+
安全问题按 [SECURITY.md](https://github.com/rockythink/shisui-danmu/blob/main/SECURITY.md) 私下报告。不要在公开 Issue 中提交 Cookie、CSRF token、OBS 密码、模型认证、Bridge token 或含个人信息的历史记录。
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# Third-party notices
|
|
2
2
|
|
|
3
|
+
## agent-client-protocol
|
|
4
|
+
|
|
5
|
+
- Repository: <https://github.com/agentclientprotocol/rust-sdk>
|
|
6
|
+
- Version: 2.1.0 (exact Cargo.lock pin; default features disabled).
|
|
7
|
+
- License: Apache-2.0
|
|
8
|
+
- Usage: official typed ACP v1 client, JSON-RPC correlation and dispatch. The
|
|
9
|
+
application retains bounded transport and native-host/business authorization.
|
|
10
|
+
- Transitive versions and license identifiers are captured in the 04-SDK
|
|
11
|
+
dependency evidence; no adapter or native Agent is bundled.
|
|
12
|
+
|
|
13
|
+
## rusqlite / libsqlite3-sys
|
|
14
|
+
|
|
15
|
+
- Repository: <https://github.com/rusqlite/rusqlite>
|
|
16
|
+
- Locked versions: rusqlite 0.37.0, libsqlite3-sys 0.35.0.
|
|
17
|
+
- Rust binding license: MIT. Bundled SQLite implements the room-scoped persistent FTS5 history index.
|
|
18
|
+
|
|
19
|
+
## toml_edit
|
|
20
|
+
|
|
21
|
+
- Repository: <https://github.com/toml-rs/toml>
|
|
22
|
+
- Locked version: 0.23.10+spec-1.0.0.
|
|
23
|
+
- License: MIT OR Apache-2.0.
|
|
24
|
+
- Usage: update TUI preferences without discarding user TOML comments or unrelated sections.
|
|
25
|
+
|
|
3
26
|
## obws
|
|
4
27
|
|
|
5
28
|
- Repository: <https://forge.dnaka91.rocks/dnaka91/obws>
|
package/package.json
CHANGED
|
Binary file
|
package/vendor/darwin-x64/danmu
CHANGED
|
Binary file
|
package/vendor/linux-arm64/danmu
CHANGED
|
Binary file
|
package/vendor/linux-x64/danmu
CHANGED
|
Binary file
|
|
Binary file
|