diff --git a/README.md b/README.md index 132240c..5e08de6 100644 --- a/README.md +++ b/README.md @@ -212,7 +212,7 @@ npm test | 配置项 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `channels.wecom.dynamicAgents.enabled` | boolean | 否 | 是否启用动态 Agent,默认 `true` | -| `channels.wecom.dynamicAgents.adminBypass` | boolean | 否 | 管理员是否绕过动态 Agent,默认 `false` | +| `channels.wecom.dynamicAgents.adminBypass` | boolean | 否 | 管理员私聊是否绕过动态 Agent,默认 `false`;群聊不受此项影响,仍按群路由 | | `channels.wecom.dm.createAgentOnFirstMessage` | boolean | 否 | 私聊是否按用户建独立 Agent,默认 `true` | | `channels.wecom.groupChat.enabled` | boolean | 否 | 是否启用群聊处理,默认 `true` | | `channels.wecom.groupChat.requireMention` | boolean | 否 | 群聊是否要求 @ 才响应,默认 `true` | diff --git a/dynamic-agent.js b/dynamic-agent.js index d1739e4..969ac0d 100644 --- a/dynamic-agent.js +++ b/dynamic-agent.js @@ -59,7 +59,7 @@ export function shouldUseDynamicAgent({ chatType, config, senderIsAdmin = false if (!dynamicConfig.enabled) { return false; } - if (senderIsAdmin && dynamicConfig.adminBypass) { + if (chatType === "dm" && senderIsAdmin && dynamicConfig.adminBypass) { return false; } if (chatType === "group") { diff --git a/tests/dynamic-agent.test.js b/tests/dynamic-agent.test.js index 7c3a1de..ea03abb 100644 --- a/tests/dynamic-agent.test.js +++ b/tests/dynamic-agent.test.js @@ -41,6 +41,19 @@ describe("shouldUseDynamicAgent", () => { }); assert.equal(useDynamic, true); }); + + it("keeps group routing on the group agent for admin when adminBypass is enabled", () => { + const config = { + dynamicAgents: { enabled: true, adminBypass: true }, + groupChat: { enabled: true }, + }; + const useDynamic = shouldUseDynamicAgent({ + chatType: "group", + config, + senderIsAdmin: true, + }); + assert.equal(useDynamic, true); + }); }); describe("extractGroupMessageContent", () => {