diff --git a/CHANGELOG.md b/CHANGELOG.md index 967baf4..64c8e5a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,7 +44,7 @@ - supports `--install` / `--uninstall` - uninstall restores all recorded changes - writes install/uninstall records under `~/.openclaw/dirigent-install-records/` -- Added discord-control-api with: +- Added discord-control-api with: (historical; later migrated into plugin internal Discord REST control) - `channel-private-create` (create private channel for allowlist) - `channel-private-update` (update allowlist/overwrites for existing channel) - `member-list` (guild members list with pagination + optional field projection) diff --git a/FEAT.md b/FEAT.md index 76b2f6e..4d3fefa 100644 --- a/FEAT.md +++ b/FEAT.md @@ -120,4 +120,4 @@ Turn management is handled entirely by the plugin. Manual control via slash comm - Private channel create/update with permission overwrites - Member list with pagination + field projection - Guardrails: action validation, id-list limits, response-size limit -- Runs as optional companion service (`discord-control-api/`) +- (Migrated) Discord control now runs in-plugin via direct Discord REST (no companion service) diff --git a/NEW_FEAT.md b/NEW_FEAT.md index 04133d7..d57a957 100644 --- a/NEW_FEAT.md +++ b/NEW_FEAT.md @@ -5,7 +5,7 @@ 当前 turn manager 初始化依赖 `recordChannelAccount`(被动观察频道里出现过哪些 bot account)。 在新频道/低活跃频道中,可能出现 turn state 未及时建立,导致 `currentSpeaker` 为空(`undefined/null`)并引发调度异常。 -同时,`discord-control-api` 以独立 sidecar 运行增加了部署与运维复杂度。 +(已完成迁移)原 `discord-control-api` sidecar 带来部署与运维复杂度,现已改为插件内直连 Discord REST。 --- @@ -22,7 +22,7 @@ ### A. 架构调整 - 新增模块:`plugin/discord-control.ts` -- 迁移当前 `discord-control-api/server.mjs` 的核心能力为模块函数: +- (已迁移)将原 `discord-control-api/server.mjs` 核心能力迁移为插件模块函数: - `channelPrivateCreate` - `channelPrivateUpdate` - `guildMemberList` diff --git a/docs/PR_SUMMARY.md b/docs/PR_SUMMARY.md index 64be235..f8c8502 100644 --- a/docs/PR_SUMMARY.md +++ b/docs/PR_SUMMARY.md @@ -51,5 +51,5 @@ This PR delivers two tracks: ## Rollback - Disable plugin entry or remove plugin path from OpenClaw config -- Stop `discord-control-api` process +- (Legacy note) `discord-control-api` sidecar has been removed; Discord control is in-plugin now - Keep no-reply API stopped if not needed diff --git a/docs/TEST_REPORT.md b/docs/TEST_REPORT.md index 53c0635..3c192d0 100644 --- a/docs/TEST_REPORT.md +++ b/docs/TEST_REPORT.md @@ -8,7 +8,7 @@ 1. Dirigent 基础静态与脚本测试 2. no-reply-api 隔离集成测试 -3. discord-control-api 功能测试(dryRun + 实操) +3. (历史)discord-control-api 功能测试(dryRun + 实操,当前版本已迁移为 in-plugin) 未覆盖: @@ -53,7 +53,7 @@ make check check-rules test-api --- -### B. discord-control-api dryRun + 实操测试 +### B. (历史)discord-control-api dryRun + 实操测试(当前版本已迁移) 执行内容与结果: @@ -113,7 +113,7 @@ make check check-rules test-api ### 2) 回归测试 -- discord-control-api 引入后,不影响 Dirigent 原有流程 +- (历史结论)discord-control-api 引入后,不影响 Dirigent 原有流程;现已迁移为 in-plugin 实现 - 规则校验脚本在最新代码继续稳定通过 ### 3) 运行与安全校验 diff --git a/docs/TURN-WAKEUP-PROBLEM.md b/docs/TURN-WAKEUP-PROBLEM.md index d9c42ea..f78eb72 100644 --- a/docs/TURN-WAKEUP-PROBLEM.md +++ b/docs/TURN-WAKEUP-PROBLEM.md @@ -78,7 +78,7 @@ When current speaker NO_REPLYs, have **that bot** send a brief handoff message i **Challenges:** - Adds visible noise to the channel (could use a convention like a specific emoji reaction) - The no-reply'd bot can't send messages (it was silenced) -- Could use the discord-control-api to send as a different bot +- Could use in-plugin Discord REST control to send as a different bot (sidecar removed) ### 6. Timer-Based Retry (Pragmatic) @@ -93,7 +93,7 @@ After advancing the turn, set a short timer (e.g., 2-3 seconds). If no new messa **Solution 5 (Bot-to-Bot Handoff)** is the most pragmatic with current constraints. The implementation would be: 1. In the `message_sent` hook, after detecting NO_REPLY and advancing the turn: -2. Use the discord-control-api to send a short message (e.g., `[轮转]` or a specific emoji) from the **next speaker's bot account** in the channel +2. Use in-plugin Discord REST control to send a short message (e.g., `[轮转]` or a specific emoji) from the **next speaker's bot account** in the channel 3. This real Discord message triggers OpenClaw to route it to all agents 4. The turn manager allows only the (now-current) next speaker to respond 5. The next speaker sees the original conversation context in their session history and responds appropriately