@fg-lab/amadeus-qq 0.0.0-stage → 1.2.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/LICENSE +21 -0
- package/README.md +53 -3
- package/README.zh-CN.md +51 -0
- package/REFERENCE.md +49 -0
- package/assets/market-icon.png +0 -0
- package/cordis.patch.yml +6 -0
- package/docs/COMPATIBILITY.md +17 -0
- package/docs/DATA_MIGRATION.md +26 -0
- package/docs/INSTALL_V1_2.md +22 -0
- package/docs/PUBLISHING.md +26 -0
- package/docs/RELEASE_CHECKLIST.md +23 -0
- package/docs/RELEASE_NOTES.md +38 -0
- package/docs/UPGRADE_POLICY.md +26 -0
- package/docs/V1_SCOPE.md +33 -0
- package/docs/screenshots/account-browser.png +0 -0
- package/docs/screenshots/account-dark-browser.png +0 -0
- package/docs/screenshots/global-desktop.png +0 -0
- package/docs/screenshots/overview-desktop.png +0 -0
- package/docs/screenshots/product-release-20261031.png +0 -0
- package/docs/screenshots/v1.2-overview.png +0 -0
- package/docs/v1.1/PRESET_MATRIX.md +28 -0
- package/docs/v1.1/PROTOTYPE_DIFF.md +15 -0
- package/docs/v1.1/TEST_REPORT.md +20 -0
- package/docs/v1.1/UPGRADE.md +10 -0
- package/docs/verification/V1_REAL_NAPCAT_2026-10-27.md +43 -0
- package/lib/client.js +380 -0
- package/package.json +91 -6
- package/preset.patch.yml +103 -0
- package/screenshots.json +6 -0
- package/scripts/build-client.mjs +52 -0
- package/scripts/registry-guard.mjs +12 -0
- package/scripts/release-audit.mjs +59 -0
- package/scripts/symlink-security.mjs +8 -0
- package/src/account-profile.js +223 -0
- package/src/admin-http.js +361 -0
- package/src/audio.js +428 -0
- package/src/capabilities.js +785 -0
- package/src/client/factory.template.js +82 -0
- package/src/client/logic.js +290 -0
- package/src/config.js +48 -0
- package/src/console/console.css +28 -0
- package/src/console/console.js +538 -0
- package/src/console/index.html +67 -0
- package/src/core.js +892 -0
- package/src/files.js +230 -0
- package/src/index.js +867 -0
- package/src/lease.js +42 -0
- package/src/media.js +246 -0
- package/src/napcat-action-names.js +186 -0
- package/src/native-asr.js +112 -0
- package/src/onebot.js +378 -0
- package/src/outbound-media.js +309 -0
- package/src/owner-workspace.js +394 -0
- package/src/permissions.js +250 -0
- package/src/preset-guard.mjs +579 -0
- package/src/qzone-provider.js +628 -0
- package/src/session-provenance.js +74 -0
- package/src/setup.js +255 -0
- package/src/storage.js +580 -0
- package/src/web-console.js +9 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 jeskoky-pixel
|
|
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.
|
package/README.md
CHANGED
|
@@ -1,3 +1,53 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
# Amadeus Qq
|
|
2
|
+
|
|
3
|
+
<img src="assets/market-icon.png" width="80" alt="Amadeus qq logo">
|
|
4
|
+
|
|
5
|
+
[简体中文](README.zh-CN.md) · [Detailed configuration](REFERENCE.md) · [Issues](https://github.com/jeskoky-pixel/amadeus-qq/issues)
|
|
6
|
+
|
|
7
|
+
QQ conversations with persistent DSH Sessions and explicit Scene permissions.
|
|
8
|
+
|
|
9
|
+
Target package: **`@fg-lab/amadeus-qq@1.2.1`**. Tested runtime baseline: official DSH Desktop **0.2.1-rc.3**. MIT licensed.
|
|
10
|
+
|
|
11
|
+
## Release status
|
|
12
|
+
|
|
13
|
+
Productization candidate. Public npm and GitHub Release publication are pending release gates and npm account authorization. A version in this README is not evidence of publication. See [publishing policy](docs/PUBLISHING.md).
|
|
14
|
+
|
|
15
|
+
## What you can do
|
|
16
|
+
|
|
17
|
+
- Connect an existing local NapCat instance to authorized groups and private chats, each with a persistent DSH Session in your Workspace.
|
|
18
|
+
- Continue a current conversation using read, wait, mark-read and guarded sends; deduplicate delivery attempts and preserve Session history across ordinary configuration edits.
|
|
19
|
+
- Handle supported text, mentions, replies and media through capability-specific checks. Provider-dependent features remain conditional.
|
|
20
|
+
- Choose Observe, Safe Chat, Enhanced or Autonomous Social presets; trusted administrator private chats may use Owner Agent. Global denials and QQ platform permissions always apply.
|
|
21
|
+
- Manage account/profile operations and optional QQ Space capabilities on their separate account page. Availability depends on the actual provider and configured grants.
|
|
22
|
+
- Pause NapCat listening for handoff to another application. QQ owns current conversations; optional Life owns long-term wake scheduling.
|
|
23
|
+
|
|
24
|
+
Example: authorize a test group in Observe, inspect inbound status, then select Safe Chat when ready to allow replies. Use the Web Console to inspect effective permissions instead of assuming that a preset grants every tool.
|
|
25
|
+
|
|
26
|
+
NapCat is not bundled: this plugin does not install, log in to or host NapCat. An unconfigured installation sends nothing. Dangerous tools are not enabled by default. Memory, Life, State and Persona are optional; QQ does not grant access to their private data merely by receiving a message.
|
|
27
|
+
|
|
28
|
+
## Install and configure
|
|
29
|
+
|
|
30
|
+
Install the prebuilt `.tgz` with the official DSH plugin manager into your selected Profile. No local source build is required. Follow [installation instructions](docs/INSTALL_V1_2.md); do not copy configuration into a running Profile by hand.
|
|
31
|
+
|
|
32
|
+
Connect NapCat, choose a Workspace, set the Owner QQ number and authorize individual Scenes. Start with Observe.
|
|
33
|
+
|
|
34
|
+
The other Amadeus plugins are optional. Install only the integrations you need.
|
|
35
|
+
|
|
36
|
+
## Interface
|
|
37
|
+
|
|
38
|
+

|
|
39
|
+
|
|
40
|
+
This is a recorded interface screenshot, not evidence that every real platform capability passed the current release gate. See the detailed reference and verification reports for limitations.
|
|
41
|
+
|
|
42
|
+
## Upgrade and recovery
|
|
43
|
+
|
|
44
|
+
Back up user data before upgrading. Code, persistent user data and recovery backups are separate. Disable stops functionality; uninstall is intended to retain external data. Restoring old code alone does not reverse a database migration.
|
|
45
|
+
|
|
46
|
+
- [Upgrade policy](docs/UPGRADE_POLICY.md)
|
|
47
|
+
- [Data migration and recovery](docs/DATA_MIGRATION.md)
|
|
48
|
+
- [Release checklist](docs/RELEASE_CHECKLIST.md)
|
|
49
|
+
- [Full configuration and limitations](REFERENCE.md)
|
|
50
|
+
|
|
51
|
+
## Ecosystem and license
|
|
52
|
+
|
|
53
|
+
[Amadeus project](https://github.com/jeskoky-pixel/Amadeus-dsh) · [MIT license](LICENSE)
|
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Amadeus Qq
|
|
2
|
+
|
|
3
|
+
<img src="assets/market-icon.png" width="80" alt="Amadeus qq logo">
|
|
4
|
+
|
|
5
|
+
[English](README.md) · [详细配置参考](REFERENCE.md)
|
|
6
|
+
|
|
7
|
+
通过持久 DSH 会话与明确的场景权限连接 QQ。
|
|
8
|
+
|
|
9
|
+
目标发行包:**`@fg-lab/amadeus-qq@1.2.1`**。已验证的官方 DSH Desktop 基线:**0.2.1-rc.3**。许可证:MIT。
|
|
10
|
+
|
|
11
|
+
## 当前发行状态
|
|
12
|
+
|
|
13
|
+
目前是产品化候选。正式 npm 与 GitHub Release 发布仍需通过发布门禁并完成 npm 账户授权;这里的版本号不代表已经公开发行。
|
|
14
|
+
|
|
15
|
+
## 能帮你做什么
|
|
16
|
+
|
|
17
|
+
- 将已登录的本地 NapCat 接入获授权的群聊与私聊,每个场景在指定工作区拥有独立持久 DSH 会话。
|
|
18
|
+
- 用读取、等待补充、标记已读和受权限约束的发送维持当前交流;去重投递,普通配置修改保留会话历史。
|
|
19
|
+
- 支持代码已实现的文字、@、引用及媒体能力,逐项检查权限;依赖 Provider 的功能以实际可用状态为准。
|
|
20
|
+
- 选择仅观察、安全聊天、增强对话或自主群友;仅可信管理员私聊可选择 Owner Agent。全局拒绝与 QQ 平台权限始终有效。
|
|
21
|
+
- 在独立账号页管理资料及可选 QQ 空间能力;是否可用取决于实际 Provider 与授权。
|
|
22
|
+
- 暂停监听以交接给其他应用。QQ 负责当前交流,可选 Life 负责长期自主唤醒。
|
|
23
|
+
|
|
24
|
+
示例:先把测试群加入仅观察模式,确认入站正常,再切换安全聊天允许回复。通过控制台查看有效权限,不要把选择预设理解为开放全部工具。
|
|
25
|
+
|
|
26
|
+
插件不包含 NapCat,不负责其安装、登录或托管。未配置时不会外发,危险工具不默认开放。Memory、Life、State、Persona 均为可选联动,收到 QQ 消息不代表获得其他插件的私有数据权限。
|
|
27
|
+
|
|
28
|
+
## 安装与首次配置
|
|
29
|
+
|
|
30
|
+
使用官方 DSH 插件管理器将预构建 `.tgz` 安装到所需 Profile,无需手工构建源码。按[安装说明](docs/INSTALL_V1_2.md)操作,不要手工改写正在运行的 Profile。
|
|
31
|
+
|
|
32
|
+
配置 NapCat、选择工作区、填写管理员 QQ 号并逐项授权场景。建议先选择仅观察。
|
|
33
|
+
|
|
34
|
+
其他 Amadeus 插件均为可选联动,按需要分别安装。
|
|
35
|
+
|
|
36
|
+
## 界面
|
|
37
|
+
|
|
38
|
+

|
|
39
|
+
|
|
40
|
+
截图展示已有界面,不表示本轮所有真实平台能力均已通过。具体限制请阅读配置参考和验收报告。
|
|
41
|
+
|
|
42
|
+
## 升级与回滚
|
|
43
|
+
|
|
44
|
+
升级前备份用户数据。程序、持久数据和恢复备份分开保存。禁用停止功能;卸载默认保留外部数据。回退旧程序不能自动撤销数据库迁移。
|
|
45
|
+
|
|
46
|
+
- [升级政策](docs/UPGRADE_POLICY.md)
|
|
47
|
+
- [数据迁移与恢复](docs/DATA_MIGRATION.md)
|
|
48
|
+
- [发行检查清单](docs/RELEASE_CHECKLIST.md)
|
|
49
|
+
- [完整配置与限制](REFERENCE.md)
|
|
50
|
+
|
|
51
|
+
[项目主页](https://github.com/jeskoky-pixel/Amadeus-dsh) · [MIT 许可证](LICENSE)
|
package/REFERENCE.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Amadeus QQ 1.2.1(发行候选)
|
|
2
|
+
|
|
3
|
+
此候选版提供预构建 DSH Bundle,可从隔离的 DSH 插件管理器安装 `.tgz`。已在官方 DSH Desktop `0.2.1-rc.3` 附带的运行时验证;公开 npm 与市场收录尚未执行。安装、升级、卸载和数据保留见 [v1.2 安装说明](docs/INSTALL_V1_2.md)、[升级政策](docs/UPGRADE_POLICY.md) 与 [数据迁移](docs/DATA_MIGRATION.md)。此前 1.1.1 的验收记录保留在下文。
|
|
4
|
+
|
|
5
|
+
Amadeus QQ 是独立的 DeepSeek Harness 插件,通过本机 NapCat/OneBot 连接 QQ。每个授权群聊或好友私聊使用一个持久 DSH Session;消息读取、模型工具外发、媒体、回执与权限检查均留在插件内。Memory、Life、State 是可选联动,QQ 单独安装也能处理当前对话。
|
|
6
|
+
|
|
7
|
+
## 首次使用
|
|
8
|
+
|
|
9
|
+
1. 在 DSH Desktop 的插件管理器安装 `@fg-lab/amadeus-qq` 包。打开插件设置页,进入受 DSH Owner 鉴权保护的 Web Console。
|
|
10
|
+
2. 在“全局设置”选择已有 DSH Workspace,填写 Bot QQ 号、唯一 Owner QQ 号、本机 NapCat HTTP/WebSocket 地址及需要的 Access Token。Token 保存后不回显。
|
|
11
|
+
3. 添加授权群号或好友 QQ 号;Owner 私聊自动加入白名单。保存并应用,按页面提示连接 NapCat。
|
|
12
|
+
4. 到“会话管理”选择预设,查看每项**实际生效**的权限,保存。授权 Scene 会在所选 Workspace 中建立独立 Session;可暂停、恢复或移出白名单。
|
|
13
|
+
5. 到“运行与诊断”检查连接、授权和 Session 状态。账号资料与 QQ 空间的授权位于独立的“账号与 QQ 空间”页。
|
|
14
|
+
|
|
15
|
+
默认的普通预设不授予群管理写权限。手工修改权限或行为参数会显示“自定义”;重新选择预设会覆盖该 Scene 的整套预设。“全局设置”可管理对所有 Scene 生效的全局拒绝。可信 Owner、Scene 白名单和 QQ 平台权限始终优先。模型只能通过受控 QQ 工具发送消息,普通文本输出不会自动外发。
|
|
16
|
+
|
|
17
|
+
## 与本地 AstrBot 轮流使用同一个 QQ
|
|
18
|
+
|
|
19
|
+
只运行一个登录该 QQ 号的本机 NapCat。Amadeus QQ 与 AstrBot 可以配置同一 NapCat 的本机 OneBot 地址和各自所需的 Token;同一时间只让一方接管消息。在 Amadeus QQ Web Console 的“全局设置 → QQ 接管”点击“暂停 Amadeus,交给 AstrBot”,确认页面显示“已暂停”后再启动 AstrBot。切回时先停用 AstrBot,再点击“恢复由 Amadeus 接管”。开关仅由 DSH Owner 操作,状态保存在 DSH 配置中,重启后仍有效。
|
|
20
|
+
|
|
21
|
+
暂停会断开 Amadeus 的 WebSocket 接收并拒绝新的 OneBot HTTP 操作、QQ 模型工具外发和 Life 经 QQ 的发送授权;已有 Scene、DSH Session 与历史消息保留。交接前已提交给 NapCat 的请求可能已经执行,无法撤回,结果不确定的动作不会自动重发。AstrBot 接管期间的消息不会自动补入 Amadeus;交接时尚未发起的旧 QQ 唤醒也不会在恢复后延迟回复。
|
|
22
|
+
|
|
23
|
+
## 页面与架构
|
|
24
|
+
|
|
25
|
+
Web Console 有总览、会话管理、功能中心、账号与 QQ 空间、全局设置、运行与诊断六页,支持浅色和深色主题。原生 DSH 设置页仅提供状态与入口。短消息可在有上限的静默窗口内合批;Agent 可等待补充、分条发送或保持沉默。QQ 不拥有长期自主唤醒或冷场定时调度,长期活动由可选的 Life 插件负责。
|
|
26
|
+
|
|
27
|
+
功能中心区分源码接线、Provider 配置与实际平台可用性;显示“源码已接线”并不代表已在所有 NapCat 版本实机验证。QQ 空间依赖单独 Provider。
|
|
28
|
+
|
|
29
|
+
## 验证与当前边界
|
|
30
|
+
|
|
31
|
+
`npm run build` 和 `npm test` 可检查安装包及回归测试。v1.1.1 完整回归为 **303 项:298 通过、0 失败、5 跳过**。隔离 DSH Desktop 已验证 GUI 首次设置、Owner 鉴权、Workspace 内的双 Scene Session、权限编辑、暂停和重启恢复。新交接开关尚未在重装后的真实 NapCat 与 AstrBot 上完成实机切换;[v1.0 真实 QQ 验收](docs/verification/V1_REAL_NAPCAT_2026-10-27.md)只能作为既有能力的历史证据。此次合并仅作为个人电脑实机测试基线,不代表生产部署许可。
|
|
32
|
+
|
|
33
|
+
- [v1.1 测试报告](docs/v1.1/TEST_REPORT.md)
|
|
34
|
+
- [1.1.1 本地 AstrBot 交接验收](docs/verification/QQ_ASTRBOT_HANDOFF_2026-10-29.md)
|
|
35
|
+
- [四插件联合验收与未完成项目](docs/verification/FOUR_PLUGIN_V11_JOINT_2026-10-28.md)
|
|
36
|
+
- [权限预设矩阵](docs/v1.1/PRESET_MATRIX.md)
|
|
37
|
+
- [升级说明](docs/v1.1/UPGRADE.md)
|
|
38
|
+
- [原型差异](docs/v1.1/PROTOTYPE_DIFF.md)
|
|
39
|
+
- [发行说明](docs/RELEASE_NOTES.md)与[兼容性](docs/COMPATIBILITY.md)
|
|
40
|
+
|
|
41
|
+
## 开发与隐私
|
|
42
|
+
|
|
43
|
+
仅在隔离 Profile 和授权测试 QQ 场景验收。不要将生产 DSH Profile、NapCat、QQ Bridge、Memory/Life/State 数据或真实 Token 加入仓库。`npm pack` 生成本地安装包;此仓库不自动发布或部署。项目总览见 [Amadeus-dsh](https://github.com/jeskoky-pixel/Amadeus-dsh)。
|
|
44
|
+
|
|
45
|
+
Persona 等可信 Host 插件可使用只读的 [已授权 Scene 发现契约](docs/PERSONA_SCENE_CONTRACT.md) 在首条消息前配置场景;QQ 白名单与发送权限仍由 QQ 插件管理。
|
|
46
|
+
|
|
47
|
+
## 许可证与发行
|
|
48
|
+
|
|
49
|
+
本仓库采用 [MIT 许可证](LICENSE)。v1.2 发行包已配置为公开 npm 包;GitHub Release、npm 实际发布及 DSH Market 收录状态以发行验收报告为准。
|
|
Binary file
|
package/cordis.patch.yml
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Amadeus QQ 1.1.1 开发基线兼容性
|
|
2
|
+
|
|
3
|
+
| 对象 | 本轮基线 | 契约 |
|
|
4
|
+
| --- | --- | --- |
|
|
5
|
+
| DSH Desktop | 隔离实测 `0.2.1-rc.3` | 使用官方 Session、工具、Settings、Plugin Manager、Config Editor 与 Workspace 服务;其他 DSH 版本需隔离复验。 |
|
|
6
|
+
| Node.js | `>=22.13.0` | 遵循 `package.json` 的 `engines`。 |
|
|
7
|
+
| 本机 NapCat | 现有 OneBot 11 接口 | 首次 GUI 配置本机 HTTP/WS、Token 与授权 Scene;v1.1 候选未重新完成真实入站/外发验收。 |
|
|
8
|
+
| Life | 可选,1.1.0 | 只消费受控 Wake 所在 DSH Session;Life opt-in 不取代 QQ 执行期权限。交接暂停时 QQ 外发授权会拒绝。 |
|
|
9
|
+
| Memory | 可选,1.0.1 | 普通 QQ Scene 的三个 `memory_*` reader 依赖 [可信 Scene ACL 契约](contracts/qq-memory-scene-acl-v1.md),缺失时安全拒绝。 |
|
|
10
|
+
| State | 可选,1.1.0 | QQ 无硬依赖;State 不提供 QQ 权限或独立 Persona。 |
|
|
11
|
+
| Persona | 可选,0.1.0 | 通过可信 QQ Scene 映射选择表达风格;暂停交接时没有新的 QQ 消息唤醒。 |
|
|
12
|
+
|
|
13
|
+
插件包名为 `@fg-lab/amadeus-qq`,Bundle ID 为 `amadeus-qq`。五个插件各自保留独立安装、状态和回滚路径;不共享 SQLite 文件。QQ 不创建第二个主 Agent 或人格。
|
|
14
|
+
|
|
15
|
+
1.0 状态文件可沿用;新 Workspace 绑定会撤销旧 Session 并建立新绑定。先备份独立 QQ 状态与 DSH Profile,再按[升级说明](v1.1/UPGRADE.md)操作。
|
|
16
|
+
|
|
17
|
+
1.1.1 的 QQ 接管开关沿用现有 `connect` 配置;仅切换连接不更改 Workspace、Scene 白名单或 Session 安全指纹。真实 NapCat 与 AstrBot 轮流接管尚待本机验收。
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# QQ 数据迁移契约
|
|
2
|
+
|
|
3
|
+
## 当前格式
|
|
4
|
+
|
|
5
|
+
1.2.1 只修复 Session ID 兼容性,延续 1.2.0 数据结构;以下历史迁移路径继续适用。
|
|
6
|
+
|
|
7
|
+
- 发行包:`@fg-lab/amadeus-qq@1.2.1`
|
|
8
|
+
- 持久 Schema Version:JSON schemaVersion 1 (`src/storage.js`)
|
|
9
|
+
- 数据范围:DSH Profile 中的 Bot/Owner/连接配置、显式绝对路径 `statePath` 中的 Scene、Session 绑定、消息和投递账本;DSH 自身 Session 日志;配置的媒体目录。
|
|
10
|
+
- 本轮迁移:1.1.1 → 1.2.0 不改变状态 schema。未知 `schemaVersion` 会拒绝加载,不能把旧状态重建为空对象。
|
|
11
|
+
|
|
12
|
+
## 未来迁移流程
|
|
13
|
+
|
|
14
|
+
读取并验证当前版本、完整性和关键关联。未知或未来版本拒绝写入,并给出可读的迁移路径提示。现有数据先创建一致性备份;备份失败即停止。每一步迁移使用事务或原子文件替换,幂等且可重试;内容和引用复核通过后才标记新版本。不能通过删除数据库、清空配置或重新建立 Session 来“修复”错误。
|
|
15
|
+
|
|
16
|
+
备份必须位于独立用户数据目录,记录时间、原 Schema Version、目标版本和校验值,不能进入发行包或 Git。恢复时区分:只回滚代码、只恢复配置、完整恢复数据库和 Profile。任何不可逆转换都必须保留升级前快照;旧程序如不支持新格式,必须连同旧数据快照恢复。
|
|
17
|
+
|
|
18
|
+
## v1.2.0 验证清单
|
|
19
|
+
|
|
20
|
+
- 使用 `1.1.1` 的合成数据,核对升级前后字段内容、关联和权限,而不只比较条数。
|
|
21
|
+
- 停用/启用和硬重启后重新读取。
|
|
22
|
+
- 令备份或迁移失败,确认旧数据仍完整且错误可见。
|
|
23
|
+
- 使用与上一版本匹配的备份演练回滚;不把新版本数据库直接交给旧程序。
|
|
24
|
+
- 验证:Scene 权限、Session ID、Owner/白名单、可靠投递与 `unknown` 状态、重启后绑定、连续对话和 NapCat 断开默认值。
|
|
25
|
+
|
|
26
|
+
未在真实 DSH Desktop/Market 运行的项目不得在发行报告里记作通过。
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Amadeus QQ v1.2.1 安装与升级
|
|
2
|
+
|
|
3
|
+
当前为内部发行候选。可从本仓库 PR 的 CI artifact 获取预构建 `fg-lab-amadeus-qq-1.2.1.tgz`;公开 npm、GitHub Release 与外部市场收录尚未执行。隔离测试使用官方 DSH Desktop `0.2.1-rc.3` 附带的 DSH 运行时;Desktop 图形安装仍待验收。普通用户不需要 Node、源码构建或 Codex。
|
|
4
|
+
|
|
5
|
+
## 首次安装
|
|
6
|
+
|
|
7
|
+
1. 在 DSH Desktop 打开目标 Profile 的插件管理器,选择安装本地预构建包;正式发布后也可选择 `@fg-lab/amadeus-qq@1.2.1` 的 npm 源或固定版本 GitHub Release。
|
|
8
|
+
2. 选择 `fg-lab-amadeus-qq-1.2.1.tgz`,确认已安装插件列表显示 `@fg-lab/amadeus-qq@1.2.1`,并打开其设置页。
|
|
9
|
+
3. 在设置中选择 Workspace、填写 Bot/Owner 与 NapCat,添加授权 Scene;未配置或未启用时不会连接或外发。
|
|
10
|
+
4. 按宿主提示重载或重启,回到设置页检查健康状态。安装失败时不要修改数据目录;保留错误信息与原安装包,然后恢复备份的 Profile。
|
|
11
|
+
|
|
12
|
+
## 升级
|
|
13
|
+
|
|
14
|
+
旧版升级前先导出 DSH Profile,停止插件写入,并对用户数据做一致性备份:`statePath` 指向的 Scene JSON、DSH Profile 中的 Bot/Owner/白名单及 DSH Session 日志。使用同一 Profile 安装 v1.2.1 包,不更换 Workspace、插件 ID 和数据路径。重启后检查内容与关键关联;仅在确认新版本正常后清理旧安装包。详细迁移和回滚规则见 [升级政策](UPGRADE_POLICY.md) 与 [数据迁移](DATA_MIGRATION.md)。
|
|
15
|
+
|
|
16
|
+
## 禁用、卸载与恢复
|
|
17
|
+
|
|
18
|
+
禁用只停止功能,保留数据。卸载默认只移除代码;用户数据位于安装包之外。插件管理器对 Profile 中配置条目的保留行为取决于宿主,卸载前必须导出 Profile。重新安装同一版本并恢复原配置路径可重新读取数据。彻底删除数据是独立、明确的人工操作,不能由安装脚本自动执行。
|
|
19
|
+
|
|
20
|
+
## 发行边界
|
|
21
|
+
|
|
22
|
+
当前本地预构建包已通过隔离官方 `dsh plugin` 安装;尚未通过公开 Market 下载源,也未验证生产 QQ/NapCat 或个人 Profile。不要把内部候选包当作已公开发布版本。
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Publishing @fg-lab/amadeus-qq 1.2.1
|
|
2
|
+
|
|
3
|
+
Publication is an explicit operation after release acceptance, not a side effect of a main-branch push. The `npm-publish.yml` workflow is manual and only accepts a version tag whose commit is contained in main. It uses GitHub OIDC (`id-token: write`) and npm provenance, not a repository npm token.
|
|
4
|
+
|
|
5
|
+
## Account setup
|
|
6
|
+
|
|
7
|
+
The npm package must exist and the maintainer must have publication rights in `@fg-lab`. Configure npm Trusted Publishing for owner `jeskoky-pixel`, repository `amadeus-qq`, workflow file `npm-publish.yml`, environment `npm-release`. Never put an npm token or recovery code in an issue, commit or screenshot. Initial package creation may require an authenticated, 2FA-approved publish; OIDC configuration is not assumed to exist before the package does.
|
|
8
|
+
|
|
9
|
+
## Release gates
|
|
10
|
+
|
|
11
|
+
1. Review the final commit, tests, prebuilt assets, license, package inventory and sensitive-file scan.
|
|
12
|
+
2. Complete the current real-runtime and platform gates. CI alone is insufficient.
|
|
13
|
+
3. Test install, upgrade, disable, uninstall/reinstall and recovery using the candidate archive. Retain the package hash and report.
|
|
14
|
+
4. Verify main protection, required checks and protected `v*` tags. Tags cannot be updated or deleted.
|
|
15
|
+
5. Create a tag from the final tested main HEAD. Never reuse a version or move a published tag.
|
|
16
|
+
6. Dispatch the workflow with the exact commit SHA. Its `npm-release` environment must be configured for the same Trusted Publisher identity. Review generated package contents before authorizing any account-side publish.
|
|
17
|
+
7. Download the published npm and GitHub Release archives; compare SHA-256 and npm integrity with the actual published bytes, inspect metadata and install from the public source. If builds differ, do not claim byte identity or silently replace artifacts.
|
|
18
|
+
8. Publish checksums, source commit, tested Desktop version, schema compatibility, upgrade/rollback instructions and known limitations with the release.
|
|
19
|
+
|
|
20
|
+
## Recovery
|
|
21
|
+
|
|
22
|
+
Do not overwrite a published npm version. Investigate and publish a new patch when necessary. Data rollback may require restoring the matching backup, not only old code. Preserve historical archives and checksums. Market directory inclusion is not a security audit; external Market PR submission remains a separate action.
|
|
23
|
+
|
|
24
|
+
## 当前状态
|
|
25
|
+
|
|
26
|
+
正式发行仍以最终验收报告为准。当前本地 npm 认证失效,不能据此确认 Scope 权限或 Trusted Publisher 已配置。普通代码推送不会运行正式发布。禁止将账户凭证写入代码。
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# QQ 固定发行检查单
|
|
2
|
+
|
|
3
|
+
本页是每次发布的质量门禁。v1.2.0 的公开 npm 与 GitHub Release 已获 Owner 授权;第三方市场投稿仍需独立核查。
|
|
4
|
+
|
|
5
|
+
## 源码与包
|
|
6
|
+
|
|
7
|
+
- [ ] 从最新 `main` 创建开发分支;记录源码 Commit SHA、上一个稳定 Tag 和 PR。
|
|
8
|
+
- [ ] 核对包名 `@fg-lab/amadeus-qq`、运行 ID `amadeus-qq`、版本、`dsh.bundle`、`dsh.client`、`engines.dsh`、入口及 `cordis.patch.yml`。
|
|
9
|
+
- [ ] `npm ci --ignore-scripts`、`npm run build`、`npm test`、`npm run verify:release` 通过;额外运行必要的跨插件契约测试。
|
|
10
|
+
- [ ] 用 `npm pack --ignore-scripts` 产生 `.tgz`,检查内容、SHA-256 与预构建 Client/Console/翻译/图标,确认没有凭据、数据库、日志和个人资料。
|
|
11
|
+
- [ ] 在目标官方 DSH Desktop 隔离 Profile 实测单独安装、五插件联合安装、禁用/启用、重启、旧版升级、卸载和恢复。只声明实测过的 DSH 版本。
|
|
12
|
+
|
|
13
|
+
## 数据与兼容
|
|
14
|
+
|
|
15
|
+
- [ ] 按 `UPGRADE_POLICY.md` 和 `DATA_MIGRATION.md` 备份并运行上一稳定版 → 当前版的合成升级回归;验证关键内容、关系、权限、绑定、功能及失败恢复。
|
|
16
|
+
- [ ] 确认数据路径不位于包目录;升级和卸载不删除用户数据;旧版代码回滚与数据库恢复分别演练。
|
|
17
|
+
- [ ] 核对 QQ Scene、Memory、Life、State、Persona 的公开 Host 契约版本与兼容矩阵,避免重复注册、重复注入和双实例。
|
|
18
|
+
|
|
19
|
+
## 发行授权
|
|
20
|
+
|
|
21
|
+
- [ ] 核实包内 MIT `LICENSE` 与 `package.json` 一致;确认 `@fg-lab` 发布权限、`publishConfig.access=public`、npm 登录和 2FA 人工流程。
|
|
22
|
+
- [ ] 准备不可变的 `v1.2.0` Tag、GitHub Release 说明、可下载 `.tgz`、SHA-256、Schema Version、升级/回滚说明;正式创建前完成全部质量门禁,并确认 Tag、源码和 tarball 一致。
|
|
23
|
+
- [ ] `awesome-dsh-plugin` 只增加本仓库对应的 `data/plugins/*.yml`;不编辑生成 README。市场展示、下载源和安装行为实际验证后再提交外部收录 PR。
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
## 1.2.1 compatibility candidate (2026-10-31)
|
|
2
|
+
|
|
3
|
+
Real official Host integration exposed reserved QQ Session IDs without the usual `session-` prefix. QQ now reserves standard `session-UUID` IDs. Life also accepts the exact legacy UUID shape for existing trusted Sessions, including its bounded wake query and configuration UI. Workspace membership, trusted Host identity, permissions and wake authorization remain mandatory. Existing IDs and history are preserved; no schema change, Session recreation or production data migration. Public distribution is pending explicit release approval.
|
|
4
|
+
|
|
5
|
+
# Amadeus QQ 发行说明
|
|
6
|
+
|
|
7
|
+
## 1.2.0 内部发行候选(未公开发布)
|
|
8
|
+
|
|
9
|
+
- 统一 `@fg-lab/amadeus-qq@1.2.0`,保留 Bundle ID `amadeus-qq`、Scene/Session 绑定、权限配置和可靠投递数据;本轮聚焦发行包与升级兼容。
|
|
10
|
+
- 预构建 Client、Bundle Manifest、市场图标和迁移说明已纳入候选包。隔离 DSH Desktop `0.2.1-rc.3` 所附 CLI 完成 1.1.1 → 1.2.0 的合成数据升级、重启和恢复演练。
|
|
11
|
+
- 本仓库经所有者确认采用 MIT;本轮发行源为公开 npm 包和固定版本 GitHub Release 包;实际发布须以最终验收结果为准。
|
|
12
|
+
- Desktop 图形安装、公开 Market 下载及真实 NapCat/模型联合运行仍待验收;公开发行需要单独确认。
|
|
13
|
+
|
|
14
|
+
## 1.1.1 本地交接补丁(未公开发布)
|
|
15
|
+
|
|
16
|
+
- Owner Web Console 增加“QQ 接管”开关:将同一 NapCat 登录在 Amadeus QQ 与本地 AstrBot 之间手动交接。开关经 DSH 配置服务保存并在重启后恢复,Scene 和 DSH Session 绑定不因切换而重建。
|
|
17
|
+
- 暂停时停止 OneBot WebSocket 接收、拒绝新的 HTTP 操作和 QQ 外发授权,并在配置重载前等待已中断操作的本地记账完成。尚未提交的旧唤醒不在恢复后重放,结果不确定的外发不自动重试。
|
|
18
|
+
- 控制台和 DSH 原生状态使用中文显示交接结果。真实 NapCat 与 AstrBot 的双客户端交接需在用户重装后的隔离环境实机验证。
|
|
19
|
+
|
|
20
|
+
## 1.1.0 开发基线(未公开发布)
|
|
21
|
+
|
|
22
|
+
- 六页 Owner 鉴权 Web Console 与简化的 DSH 原生设置入口。首次设置可在 GUI 选择 Workspace、NapCat、Bot、唯一 Owner、Scene 白名单和全局拒绝;Token 不回显。
|
|
23
|
+
- 每个授权 Scene 在选定 Workspace 中建立独立持久 Session;支持暂停、恢复、撤权和重启恢复。
|
|
24
|
+
- 五个权限预设及界面“自定义”状态;普通预设不再继承群管理写权限。权限保存使用修订号冲突检查,执行时继续由可信 Scene Guard 裁决。
|
|
25
|
+
- 当前对话可短时合批、等待补充、按权限发送或沉默;合批静默窗口从最后一条消息计时且有最长等待上限。Life 保持长期自主唤醒职责。
|
|
26
|
+
- 账号资料与 QQ 空间配置分离;功能中心标明源码接线、Provider 与平台验收边界。
|
|
27
|
+
- 本候选尚未完成 v1.1 真实 NapCat 入站/外发与 Life 并发实机验收。详见 [v1.1 测试报告](v1.1/TEST_REPORT.md)。PR #2 已合并 main;尚未公开发布或部署。
|
|
28
|
+
|
|
29
|
+
## 1.0.0
|
|
30
|
+
|
|
31
|
+
- 包版本与收缩后的 v1.0 功能范围对齐;保留包名 `@amadeus/qq` 和 Bundle ID `amadeus-qq`。本次版本收口不新增 QQ 能力。
|
|
32
|
+
- 持续 Scene Session、Owner Agent、五级权限和执行期 Guard、消息与附件回执、本机 NapCat 媒体/ASR、外部音频交接、账号头像与签名、QQ 空间文字/图片说说、原生 Settings 与独立 Web Console 均沿用已审查实现。
|
|
33
|
+
- 普通 QQ Scene 的 Memory reader 仅在 Memory 提供可信 Scene ACL 读契约时可见并执行;缺失或撤销时立即拒绝。Life 的 `externalMessageSessionIds` 只提供唤醒提示,QQ Scene Guard 负责外发授权。
|
|
34
|
+
- 隔离 Desktop、NapCat 与 QQ 的既有实机覆盖见 [验收记录](verification/V1_REAL_NAPCAT_2026-10-27.md);最终包与四插件同 Profile 验收见[联合报告](https://github.com/jeskoky-pixel/Amadeus-dsh/blob/main/docs/verification/AMADEUS_V1_FOUR_PLUGIN_ACCEPTANCE.md)。未部署生产,也未公开发布。
|
|
35
|
+
|
|
36
|
+
## 范围和限制
|
|
37
|
+
|
|
38
|
+
交付范围以 [V1_SCOPE.md](V1_SCOPE.md) 为准。长期平台稳定性、任意目标外发、所有低频 QQ API、移动端视觉细节和未安装的 Host 原生工具没有同等级实机证据;不将这些作为已验证能力宣称。
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# QQ 升级与数据保留政策
|
|
2
|
+
|
|
3
|
+
适用包:`@fg-lab/amadeus-qq`;运行时插件 ID:`amadeus-qq`。v1.2.0 从 `1.1.1` 升级。本政策从 v1.2.0 起用于后续 v1.2.1、v1.3.0 和主版本发布。
|
|
4
|
+
|
|
5
|
+
## 代码、配置与数据
|
|
6
|
+
|
|
7
|
+
安装包只放程序及资源,可在升级时替换。用户数据位于插件包之外:DSH Profile 中的 Bot/Owner/连接配置、显式绝对路径 `statePath` 中的 Scene、Session 绑定、消息和投递账本;DSH 自身 Session 日志;配置的媒体目录。 不能把唯一副本放进 `node_modules`、插件包或可被 Market 清理的安装目录。升级时记录并沿用原 Profile、Bundle ID 和数据路径;若升级后看似空白,先核对路径和 Workspace,不能初始化覆盖。
|
|
8
|
+
|
|
9
|
+
## 四种操作
|
|
10
|
+
|
|
11
|
+
| 操作 | 约定 |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| 安装 | 创建缺失的结构;发现既有数据时先校验,绝不以空默认值覆盖。 |
|
|
14
|
+
| 升级 | 只替换代码;保留 Profile 配置和外部数据。支持的迁移先备份、校验、执行、复核,失败即停止启用。 |
|
|
15
|
+
| 禁用 | 停止监听、定时器和写入,数据仍留在原目录。 |
|
|
16
|
+
| 卸载 | 插件自身不删除用户数据;DSH Market/Plugin Manager 对 Profile 配置的实际保留行为须在目标 Desktop 版本实测,卸载前导出 Profile。彻底清除数据是独立人工操作。 |
|
|
17
|
+
|
|
18
|
+
## 固定升级步骤
|
|
19
|
+
|
|
20
|
+
1. 记录旧包版本/ SHA-256、DSH 版本、数据路径、Schema Version 与跨插件组合;保留旧 `.tgz`。
|
|
21
|
+
2. 停止 QQ 连接和写入,备份 DSH Profile、`statePath` 文件及配置的媒体目录。投递状态为 `unknown` 时先与平台人工对账,不自动重发。
|
|
22
|
+
3. 在隔离 Profile 用官方 Plugin Manager 或已验收的 Market 更新入口安装候选包,不执行用户侧构建脚本。
|
|
23
|
+
4. 重启并检查原有内容、关系、权限、Session/Workspace 绑定、配置及关键功能;重点:Scene 权限、Session ID、Owner/白名单、可靠投递与 `unknown` 状态、重启后绑定、连续对话和 NapCat 断开默认值。
|
|
24
|
+
5. 通过后再在目标 Profile 分批升级。若失败,先禁用,保存故障现场,按 `DATA_MIGRATION.md` 恢复兼容数据库和旧包;不能假设旧代码一定能读已迁移的新数据。
|
|
25
|
+
|
|
26
|
+
每个新版本的 CI 必须从上一稳定版的合成真实格式数据升级到当前版,测试关键字段、关联、权限、重启和失败恢复。跨插件 Host 契约不兼容时应先适配或限制组合版本。小版本不得无说明删除既有能力;弃用需标记、替代方案和兼容周期。
|
package/docs/V1_SCOPE.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Amadeus QQ v1.0 收缩后任务清单
|
|
2
|
+
|
|
3
|
+
更新:2026-10-27。`1.0.0` 已完成限定功能、隔离 DSH Host、真实 NapCat/QQ 与四插件同 Profile 的验收;以下仍区分各项证据来源。
|
|
4
|
+
|
|
5
|
+
| 领域 | 状态 | 剩余边界 |
|
|
6
|
+
| --- | --- | --- |
|
|
7
|
+
| M1 连续交流、去重、权限 | 隔离 DSH 模型调用、重启去重和撤权通过;真实私聊收发及重启后相同 actionId 去重通过 | 大规模长时间运行、QQ 平台风控与跨网络故障未测 |
|
|
8
|
+
| Owner Agent | 可信 Owner 私聊中的 DSH 原生 `pwsh`、`read`、`web_fetch` 实际由模型调用;已注册 Life 工具可由 Owner 调用,撤权后旧 Session 在真实 Host 被拒 | 隔离 Host 未安装 GitHub 工具,不能声称已验证 GitHub 调用;实际可用性取决于 Host 工具注册 |
|
|
9
|
+
| 日常消息 | 真实收取文字、图片、语音;向指定测试私聊发送文字、图片、MP3 语音并通过 `get_msg` 读回 | 长时间顺序性、平台风控与跨网络故障未测 |
|
|
10
|
+
| 群聊发送与附件 | 在仅含 Owner 与测试 Bot 的授权群,真实隔离模型调用 @+face、回复、回应、戳一戳和群附件工具,均返回 delivered;`get_msg` 复核到 @、face、reply 段;群文件根目录确认一个上传文件 | 群内批量/并发、其他消息类型和长时间顺序性未测 |
|
|
11
|
+
| 群附件回执 | 最终包与隔离 Desktop 重启后,新群附件返回 delivered,平台恰有一个匹配文件,经 `get_group_file_url` 解析回执;NapCat 列表会轮换 `file_id`,代码以稳定元数据/计数核对,歧义保留 unknown | 旧的 unknown 上传未被重试,也未确认其平台事实;未知结果仍靠人工对账 |
|
|
12
|
+
| QQ 原生 ASR | 本机 NapCat `fetch_ptt_text` 实际返回文本;隔离 DSH 模型工具得到原消息、发送者及私聊 Scene 绑定的转写,重启后保留 | 第一次平台调用暂时失败,重试成功;不能保证所有语音都可转写 |
|
|
13
|
+
| 外部 TTS 交接 | 受控目录 MP3 经 QQ 插件发送真实 QQ 语音;无内建 TTS 依赖 | 未与具体第三方 TTS 插件联测 |
|
|
14
|
+
| 账号资料 | 测试号头像和签名真实修改、读回并恢复 | QQ 头像恢复后视觉一致,平台重编码导致字节哈希不同;其他资料字段不作为门槛 |
|
|
15
|
+
| QQ 空间 | `qq_qzone` 统一入口;真实测试号的仅自己可见文字/图片说说发布得到 tid,并调用平台删除 | 点赞、评论等已有 Provider 动作仅单元/模拟;其他可见范围未实测 |
|
|
16
|
+
| Memory | 同一隔离官方 DSH Host 中,使用合成标记和真实绑定的群/私聊 Session:精确查询命中私聊标记,未观察到跨 Scene 注入 | 初始宽泛私聊查询未召回该标记;不宣称通用检索完备,长期生产流量未验证 |
|
|
17
|
+
| Life | 同一隔离 Host 的只读联动通过;受控外发 opt-in 已独立验证:intent 持久化 `life-tool:session:` provenance,管理员对同一 allowlist Owner Session 与授权 QQ 私聊开启 `externalMessageSessionIds` 后 wake 执行,模型恰好一次 `qq_send_message`,QQ 返回 delivered,NapCat `get_msg` 与指定 Owner 好友历史确认私有文字;关闭 opt-in 后新 intent 的 wake 为零 QQ 发送 | 首次尝试因错误 provenance 检查未发送,Life 源码已改为读取持久 intent;opt-in 只改变提示指导,不是 Life 级硬闸门,QQ Scene 权限仍是权威;长期自治与任意 QQ 目标未验证 |
|
|
18
|
+
| State | 可选降级,QQ 无硬依赖 | State 1.0.0 已合并;四插件同 Host 联合验收另行记录 |
|
|
19
|
+
| 管理与交付 | 原生 Settings、Admin API 和 Web Console;最终包隔离 Desktop 的 HTTP 路由、匿名拒绝、CSP、禁连状态和真实浏览器中的 Scene 图节点点击/筛选/重置已验收;停用 Memory Bundle 时同一 UI 仍加载并显示授权 Scene 拓扑,确认无 Memory 运行时依赖;权限编辑器保留 | 窄屏由横向滚动/列表回退处理,未做移动端视觉回归;Memory 自身实体 UI 是独立 Mneme 视图,本轮隔离库为空,未绘制新的语义图数据;安装包与 PR 交付见最终报告 |
|
|
20
|
+
|
|
21
|
+
## 已移出 v1.0 门槛
|
|
22
|
+
|
|
23
|
+
消息转发与合并转发、独立历史同步、好友和入群申请审核、群文件管理、大量群设置、内建 TTS、独立 ASR 服务、内建视频/文件理解、QQ 空间全部底层接口重写、复杂跨平台自主规划和大型 Web 仪表盘。已有能力保留。
|
|
24
|
+
|
|
25
|
+
## 验收纪律
|
|
26
|
+
|
|
27
|
+
真实外发只对用户授权的测试私聊和仅含 Owner 与测试 Bot 的授权群执行;群发送/附件证据来自该群。账号资料与空间操作只在测试号进行并已恢复或清理。隔离 NapCat 的 QQ 客户端媒体缓存仍共用系统 `Documents/Tencent Files`,因此本轮不宣称 QQ 客户端级完全隔离。生产 DSH Profile、SnowLuma Bot、QQ Bridge、Memory 与 Life 数据不应直接用作迁移或破坏性测试。
|
|
28
|
+
|
|
29
|
+
当前 `npm test`:281 通过、0 失败、4 跳过;四个跳过项均因本机 Windows 无法创建符号链接。`npm run build` 与 `git diff --check` 通过;`1.0.0` 最终包已在全新隔离 Desktop 与另外三个插件共同安装、加载和停用恢复,详见[联合报告](https://github.com/jeskoky-pixel/Amadeus-dsh/blob/main/docs/verification/AMADEUS_V1_FOUR_PLUGIN_ACCEPTANCE.md)。
|
|
30
|
+
|
|
31
|
+
## 部署与回滚建议
|
|
32
|
+
|
|
33
|
+
先在独立 QQ 状态文件和 `connect:false` 下核对 bot/owner/Scene 白名单、NapCat Token、媒体根与权限上限,再对授权私聊/小群灰度;观察 unknown 投递并人工对账,不自动重发。回滚时停用 QQ Bundle、恢复上一安装包与隔离备份状态,不改动生产 QQ、Memory 或 Life 数据。Life 受控外发只在管理员 opt-in、授权 QQ Scene 与明确目标下使用;该 opt-in 改变提示指导,不是硬性禁止层,QQ 执行权限仍是权威。
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# v1.1 权限预设对照
|
|
2
|
+
|
|
3
|
+
下表是默认继承权限。Scene 内显式 `allow/deny`、全局拒绝、可信 Owner 身份、Provider 状态和 QQ 平台权限会继续决定实际结果;Web Console 显示最终生效值与原因。
|
|
4
|
+
|
|
5
|
+
| 能力 | 仅观察 | 安全聊天 | 增强对话 | 自主群友 | Owner Agent |
|
|
6
|
+
| --- | --- | --- | --- | --- | --- |
|
|
7
|
+
| 读取已授权 Scene | 是 | 是 | 是 | 是 | 是 |
|
|
8
|
+
| 发送普通消息 | 否 | 是 | 是 | 是 | 是 |
|
|
9
|
+
| DSH 搜索与媒体读取 | 否 | 否 | 是 | 是 | 是 |
|
|
10
|
+
| 回应、戳一戳、撤回 | 否 | 否 | 是 | 是 | 是 |
|
|
11
|
+
| 未被 @ 的群消息触发参与判断 | 否 | 否 | 否 | 是 | 不适用 |
|
|
12
|
+
| 群管理写入 | 否 | 否 | 否 | 否 | 不适用 |
|
|
13
|
+
| 账号资料与 QQ 空间 | 否 | 否 | 否 | 否 | 需账号页显式授权 |
|
|
14
|
+
| Owner 文件/Host 工具 | 否 | 否 | 否 | 否 | 仍需单项授权与 Host Guard |
|
|
15
|
+
|
|
16
|
+
Owner Agent 只能用于已配置的可信 Owner 私聊。群管理需要对对应 Scene 手动允许,并由 NapCat/QQ 平台再次拒绝无权操作。`custom` 只是界面编辑状态,不是后端权限模式。手动调整后保留其他字段;重新选择命名预设会重置原有覆盖与行为参数。
|
|
17
|
+
|
|
18
|
+
行为参数默认值:
|
|
19
|
+
|
|
20
|
+
| 预设 | 合批静默窗口 | 续聊等待上限 | 自主接话冷却 | 近期上下文上限 |
|
|
21
|
+
| --- | ---: | ---: | ---: | ---: |
|
|
22
|
+
| 仅观察 | 0 秒 | 0 秒 | 0 秒 | 20 条 |
|
|
23
|
+
| 安全聊天 | 5 秒 | 30 秒 | 0 秒 | 20 条 |
|
|
24
|
+
| 增强对话 | 10 秒 | 30 秒 | 0 秒 | 20 条 |
|
|
25
|
+
| 自主群友 | 12 秒 | 30 秒 | 15 秒 | 20 条 |
|
|
26
|
+
| Owner Agent | 10 秒 | 30 秒 | 0 秒 | 20 条 |
|
|
27
|
+
|
|
28
|
+
“参与活跃度”随请求传给当前对话模型作为判断提示;它不创建定时主动发言。静默窗口有最长等待上限,续聊等待及上下文上限在 QQ 执行路径约束。
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# HTML 原型与实际 Web Console 对照
|
|
2
|
+
|
|
3
|
+
设计参考来自用户提供的 `amadeus_qq_v1_1_console_handoff.zip`。原型是静态交互稿;产品页面由插件自身静态资源及受 DSH Owner 鉴权的 Admin API 驱动。
|
|
4
|
+
|
|
5
|
+
| 原型 | v1.1 实现与差异 |
|
|
6
|
+
| --- | --- |
|
|
7
|
+
| 六类导航、卡片布局、浅色/深色主题 | 已在真实 Web Console 实现。图标与细节并非逐像素复制,以当前插件状态为准。 |
|
|
8
|
+
| 首次设置、Scene 管理 | 真实 Workspace、Bot/Owner、NapCat、白名单与全局拒绝配置;Session ID 来自 DSH。没有硬编码演示数据。 |
|
|
9
|
+
| 预设与自定义 | 改动任一权限/行为参数立即显示自定义;保存使用修订号冲突检查;实际生效权限由后端返回。 |
|
|
10
|
+
| 功能中心 | 显示源码已接线、Provider 条件与待平台确认状态,不把 NapCat 动作目录当作已验证能力。 |
|
|
11
|
+
| 账号/空间 | Owner 授权与 QZone Provider 分开保存;账号级能力不放在普通 Scene 编辑器。 |
|
|
12
|
+
| 诊断 | 展示连接、Workspace、Scene 与 Session 绑定。原型中的演示指标、模拟日志或安全测试按钮未照搬为假数据。 |
|
|
13
|
+
| 窄屏布局 | 保留响应式 CSS;真实窄屏浏览器视觉证据仍待补充。 |
|
|
14
|
+
|
|
15
|
+
界面当前不内置 NapCat 安装器或二维码登录器。用户可在 DSH GUI 完成 QQ 插件配置,但 NapCat 本体仍需按其官方方式安装和登录。v1.1 的真实平台闭环待隔离 NapCat 可用后复验。
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# v1.1 候选测试与验收记录
|
|
2
|
+
|
|
3
|
+
## 本次已验证
|
|
4
|
+
|
|
5
|
+
- `npm run build` 通过;`npm test` 共 **291 项,286 通过、0 失败、5 跳过**。跳过项含 4 项 Windows 符号链接环境能力及 1 项本地 Life 源码缺失条件。
|
|
6
|
+
- 回归覆盖首次配置校验与修订冲突、Owner 同源鉴权、预设/自定义、群管理默认拒绝、Scene 暂停/撤权、不同 Scene Session、Workspace 迁移、短消息合批和重启回放、可选插件缺失降级。
|
|
7
|
+
- 在隔离 DSH Desktop Profile 的真实 Web Console 操作首次设置、预设选择、自定义参数、撤销与保存、账号授权和深色主题。最终包还实测了全局拒绝勾选、保存、页面刷新后保持,以及另一项未保存修改的撤销。未登录的设置请求返回 401。配置持久化后重启,两个授权 Scene 的 Session ID 与 Workspace 归属保持一致;最终包复验见本报告的收尾记录。
|
|
8
|
+
- 真实浏览器截图:[总览](../screenshots/overview-desktop.png)、[全局设置](../screenshots/global-desktop.png);[账号页](../screenshots/account-browser.png)与[深色主题](../screenshots/account-dark-browser.png)是合成数据布局检查,不能作为真实配置或 QQ 外发证据。公开截图已遮蔽真实测试号码与本机路径。
|
|
9
|
+
|
|
10
|
+
## 尚未验证
|
|
11
|
+
|
|
12
|
+
- 本次 v1.1 连接到真实 NapCat 的入站、模型工具外发、连续群聊自然结束、动态撤权和 Life 同时唤醒尚未完成。独立测试 NapCat 进程未能在当前已有桌面实例同时运行,隔离端口未监听。未停止或更改已有实例。v1.0 的[真实 QQ 验收](../verification/V1_REAL_NAPCAT_2026-10-27.md)只能证明当时的版本和场景。
|
|
13
|
+
- 窄屏响应式布局有 CSS 断点与原型参考;本次没有可复核的窄屏真实浏览器截图。其他 DSH/NapCat 版本、长期平台稳定性和日常生产账号未验收。
|
|
14
|
+
- “参与活跃度”是当前模型提示参数,真实模型在不同值下的参与率未测量。不能将它解释为平台级硬概率控制。
|
|
15
|
+
|
|
16
|
+
## 收尾记录
|
|
17
|
+
|
|
18
|
+
最终 `1.1.0` 包通过本地 `npm pack` 构建并重新安装到隔离 DSH Profile;已核对安装后的 `src/core.js`、`src/setup.js` 和 Web Console 脚本与工作树内容哈希一致。重新启动后,Owner 鉴权的设置/Scene/Console API 均返回 200,两个原 Scene 在 DSH Session 列表中仍保持原 Session ID 和相同 Workspace 归属,全局拒绝也写入隔离 Profile 并在重启后保留。未登录设置请求返回 401。
|
|
19
|
+
|
|
20
|
+
候选代码保持独立 QQ 仓库和隔离 DSH Profile。测试 QQ 目标均为事先授权的私聊/小群;此次没有向 QQ 群聊或私聊发送新的测试内容。未修改 DSH 核心、NapCat 本体或 Memory、Life、State 仓库;未合并和发布。
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# 从 1.0.0 升级到 1.1.0
|
|
2
|
+
|
|
3
|
+
1. 先备份 QQ 独立状态文件和 DSH Profile;在隔离 Profile 用 `npm pack` 生成的包升级并检查 Web Console。
|
|
4
|
+
2. 在“全局设置”选择现有 DSH Workspace。既有绝对 `sessionCwd` 仍用于旧配置兼容;选择 Workspace 后新建 Scene Session 归入该 Workspace。
|
|
5
|
+
3. 核对 Bot、唯一 Owner、NapCat 地址与 Scene 白名单。旧版已有的 Scene 权限及消息/投递状态沿用,不自动清除。
|
|
6
|
+
4. 逐 Scene 查看“实际生效”权限。1.1 普通预设不再默认允许群管理;如果确有需要,明确开启单项权限并确认 QQ 平台角色。
|
|
7
|
+
5. 检查账号资料和 QQ 空间页的独立授权。保存后按诊断页提示检查 Provider 和连接。
|
|
8
|
+
6. 重启 DSH Desktop,确认 Session 仍位于所选 Workspace,消息与投递账本连续。旧 Workspace 绑定切换时旧 Session 会撤权,新 Session 会建立。
|
|
9
|
+
|
|
10
|
+
回滚:停用 QQ 插件,恢复 1.0.0 安装包及升级前的独立 QQ 状态/Profile 备份;不要让 1.0 与 1.1 同时连接同一 Bot。当前 PR 未发布到插件市场,也未用于生产部署。
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# v1.0 真实 NapCat/QQ 与隔离 DSH 验收(2026-10-27)
|
|
2
|
+
|
|
3
|
+
## 环境和安全边界
|
|
4
|
+
|
|
5
|
+
- 候选:`codex/m0-baseline`,原 Draft PR #1。隔离 DSH Desktop Profile 安装 QA 包;真实 NapCatQQ Desktop 使用独立 `NCD_DATA_ROOT` 和测试 Bot。生产 DSH Profile、QQ Bridge、Memory/Life 数据未作写入。
|
|
6
|
+
- 用户授权的外发对象包括一个指定测试私聊,以及一个仅含 Owner QQ 与测试 Bot 的授权群;测试期间未向其他群或个人发送。头像、签名和 QQ 空间操作仅作用于登录的测试账号。
|
|
7
|
+
- 真实测试结束后,QQ 插件已停用、隔离 Profile 配置恢复 `connect:false`;测试 NapCat Desktop、BootMain 和 QQ 进程已停止。原 SnowLuma Bot 配置在测试前后哈希一致。Life 受控外发与 Memory 停用 UI 检查使用独立隔离环境,不改变生产配置。
|
|
8
|
+
- NapCat 数据根独立,但 QQ 客户端媒体缓存仍共用系统 `Documents/Tencent Files`;不把此环境描述为客户端级完全隔离。私聊正文、消息 ID、空间 tid、Token、Cookie 和头像原件只保留在忽略的本地 QA 目录,不进入 Git 或安装包。
|
|
9
|
+
|
|
10
|
+
## 实际结果
|
|
11
|
+
|
|
12
|
+
| 场景 | 证据级别与结果 |
|
|
13
|
+
| --- | --- |
|
|
14
|
+
| 连续交互与 Owner | 隔离官方 DSH 模型实际调用 QQ 工具及原生 `pwsh`、`read`,完成本机只读任务;可信 Owner 私聊可见,普通 Scene 的可见性和执行期授权有回归。原 M1 多阶段发送、等待续接、撤权及硬重启见既有隔离 Desktop 报告。 |
|
|
15
|
+
| 真实入站 | NapCat `get_login_info` 成功;收到指定私聊的真实文字、图片和 `record`;`get_msg`/`get_record` 结构与插件读取路径核对。 |
|
|
16
|
+
| QQ 原生转写 | `fetch_ptt_text` 对真实语音首次暂时失败,随后返回非空文本。隔离 DSH 模型经 `qq_transcribe_message_record_native` 获得转写及正确原消息、发送者和私聊 Scene;硬重启后关联仍在。失败路径不编造转写。 |
|
|
17
|
+
| 真实外发 | 隔离 DSH 模型向授权私聊发送文字、图片、MP3 语音,插件返回 `delivered` 与消息 ID;NapCat `get_msg` 读回对应 `text`、`image`、`record` 段。 |
|
|
18
|
+
| 群聊发送 | 在仅含 Owner 与测试 Bot 的授权群,真实隔离模型调用 @+face、回复、回应、戳一戳和群附件发送工具,均返回 delivered;NapCat `get_msg` 复核到 @、face、reply 段,群文件根目录确认一个上传文件。 |
|
|
19
|
+
| 群附件回执 | NapCat 群文件列表会轮换 `file_id`,最终代码改用稳定元数据/计数并在歧义时保留 unknown。最终包与隔离 Desktop 重启后,新群附件返回 delivered,平台恰有一个匹配文件,回执经 `get_group_file_url` 解析;列表 ID 与上传时不同。旧的 unknown 上传没有被重试或改写。 |
|
|
20
|
+
| 账号资料 | 模型工具修改测试号签名和头像成功;签名读回,头像经平台外部接口读回测试图。两者已恢复原内容。头像经 QQ 平台重编码,恢复后视觉一致但字节哈希不同。 |
|
|
21
|
+
| QQ 空间 | `qq_qzone` 用 `audience:self` 发布文字和图片说说,均返回 tid;两个测试 tid 随后通过 NapCat 删除。其他可见范围及互动动作未作真实平台验收。 |
|
|
22
|
+
| 重启持久性 | 隔离 DSH 硬重启后复用相同私聊和空间 `actionId`,返回 `repeated:true`;私聊历史中测试文字只有一条。 |
|
|
23
|
+
| 管理 Web Console | 最终包在隔离 Desktop 的真实浏览器中加载,显示授权群/私聊、Bot 与已观察 QQ ID 的场景图;节点点击、筛选和重置均可用,权限编辑器保留,owner admission 与 CSP 不变。停用 Memory Bundle 后同一 UI 仍加载并显示授权 Scene 拓扑,确认运行时不依赖 Memory;Memory 自身实体 UI 是独立 Mneme 视图,本轮隔离库为空,未绘制新的语义图数据。窄屏由横向滚动及更窄时的列表回退处理,未做移动端视觉回归。 |
|
|
24
|
+
|
|
25
|
+
## 收尾质量修复与同 Host 联动
|
|
26
|
+
|
|
27
|
+
- QQ Connector 的全局执行 guard 曾将 Owner Preset 已开放的动态注册工具再次拒绝。新增失败回归后修复:只有当前绑定、仍处于 Owner Agent 模式的可信管理员私聊,才能调用 Host 中已注册的非 QQ 工具;`run_code`、未知工具、普通私聊和群聊仍拒绝。隔离官方 DSH 中,全新合成 Owner Session 实际调用 `life_intent_create` 成功;旧 Owner Scene 经管理 API 降为 Safe Chat 后,旧 Session 再调用 `web_fetch` 得到执行期拒绝。Owner 的 `web_fetch` 在撤权前也完成一次真实 Host 只读调用。该隔离 Host 未安装 GitHub 工具,因此不宣称 GitHub 实调。
|
|
28
|
+
- QQ 与 Memory 在同一隔离官方 DSH Host 中,使用合成标记和真实绑定的群/私聊 Session 验收 runtime context。精确查询命中了私聊标记,未观察到其他 Scene 的注入;初始宽泛私聊查询未召回该标记,因此不宣称通用 Memory 检索完备。原始 Session ID、标记及记忆内容只留在忽略的私有 QA 目录。
|
|
29
|
+
- Life 1.0.1 候选代码在同一隔离 Host 使用独立数据库与唯一 Owner Session 允许名单。模型工具创建的 intent 持久化了 `life-tool:session:<当前 Owner Session>` 授权来源;管理员对同一 allowlist Owner Session 与授权 QQ 私聊开启 `externalMessageSessionIds` 后,Life wake 执行,模型在该 Scene 恰好一次调用 `qq_send_message`,QQ 工具返回 delivered,NapCat `get_msg` 与指定 Owner 好友历史确认了 Bot 的私有文字。首次尝试曾暴露错误的 provenance 检查且没有发送任何 QQ 消息;Life 源码随后改为读取持久 intent,而不是 wake/binding 授权。关闭 opt-in 后,另一条全新工具授权 intent 的 wake 使用显式非发送提示,模型零次 QQ 发送。该 opt-in 只改变提示指导,不是 Life 级外部工具硬闸门;QQ Scene 的执行权限仍是权威。最终 1.0.1 版本包已在同一隔离 Desktop 安装并硬重启,健康状态正常;完整外发行为测试使用相同运行时代码的独立 QA 包,未重复外发。
|
|
30
|
+
- 入站 `get_image` 现在限制平台响应体大小,并仅接受受控本地路径或 canonical、有界的内联 base64 图片;`get_file` 超限路径也有回归。内联图片分支为单元/模拟证据,未声称真实 NapCat 返回过该形态。
|
|
31
|
+
- QA 收尾后 QQ 和 Life Bundle 均停用,隔离 Profile 恢复 `connect:false` 且无 Life 配置行,QQ 合成状态恢复测试前备份;测试 NapCat 仍停止。受控外发与 Memory 停用 UI 检查另在隔离环境完成,未改生产;生产 DSH、SnowLuma、QQ Bridge、Memory/Life 数据未修改。
|
|
32
|
+
|
|
33
|
+
## 代码门禁与安装产物
|
|
34
|
+
|
|
35
|
+
- `npm test`:264 通过、0 失败、4 跳过。四个跳过项均因本机 Windows 无法创建符号链接,不是外部服务缺失。
|
|
36
|
+
- `npm run build`、打包与 `git diff --check` 通过。
|
|
37
|
+
- `npm pack` 的脱敏产物不含私有 QA 状态和真实凭据;包哈希与安装记录以交付消息为准。同代码包已在隔离 DSH Desktop 安装并经硬重启加载;最终包安装后 QQ 连接保持关闭。
|
|
38
|
+
|
|
39
|
+
## 尚未验证及部署建议
|
|
40
|
+
|
|
41
|
+
- Memory 的 Scene 隔离在本轮只验证了合成标记下的精确命中/无跨 Scene 注入,宽泛查询未召回,不能宣称检索完备。State 没有稳定运行源码,仅验证可选降级。Life 受控外发已有一次完整证据,但 opt-in 只改变提示指导、不是 Life 级硬闸门;长期自治与任意 QQ 目标仍未验证。
|
|
42
|
+
- GitHub 工具、QQ 空间互动、其他可见范围、移动端视觉回归和长时间真实平台稳定性未逐项实测;对应功能保留源码及单元/模拟证据。群发送、@/face/reply、回应、戳一戳和群附件回执已有授权群实机证据。
|
|
43
|
+
- 生产准备应先备份独立 QQ 状态文件,逐项确认 bot/owner/Scene 白名单、NapCat Token、媒体根目录及权限上限,再对授权私聊/小群灰度。群附件注意 NapCat 会轮换 `file_id`,以稳定元数据和文件计数核对;unknown 投递只人工对账,不自动盲重试。回滚时停用 QQ Bundle、恢复上一安装包和隔离备份状态;不改动生产 QQ/Memory/Life 数据。Life 受控外发只能经管理员 opt-in、授权 QQ Scene 和明确目标使用,QQ 执行权限仍是权威;opt-in 不是硬性禁止层。
|