@zaofan/dsh-qqbot 1.1.2 → 1.1.4

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.
Files changed (99) hide show
  1. package/README.md +14 -2
  2. package/README_EN.md +7 -1
  3. package/client/qqbot-settings.js +7 -2
  4. package/dist/channel-tools.d.ts.map +1 -1
  5. package/dist/channel-tools.js +29 -3
  6. package/dist/channel-tools.js.map +1 -1
  7. package/dist/commands/botplay.js +2 -2
  8. package/dist/commands/botplay.js.map +1 -1
  9. package/dist/commands/model.d.ts.map +1 -1
  10. package/dist/commands/model.js +4 -1
  11. package/dist/commands/model.js.map +1 -1
  12. package/dist/commands/outmode.d.ts.map +1 -1
  13. package/dist/commands/outmode.js +4 -1
  14. package/dist/commands/outmode.js.map +1 -1
  15. package/dist/commands/session.d.ts +1 -1
  16. package/dist/commands/session.d.ts.map +1 -1
  17. package/dist/commands/session.js +3 -2
  18. package/dist/commands/session.js.map +1 -1
  19. package/dist/config.d.ts +2 -0
  20. package/dist/config.d.ts.map +1 -1
  21. package/dist/config.js +7 -5
  22. package/dist/config.js.map +1 -1
  23. package/dist/features/botplay.d.ts +7 -5
  24. package/dist/features/botplay.d.ts.map +1 -1
  25. package/dist/features/botplay.js +27 -12
  26. package/dist/features/botplay.js.map +1 -1
  27. package/dist/features/group-hub.d.ts +6 -0
  28. package/dist/features/group-hub.d.ts.map +1 -1
  29. package/dist/features/group-hub.js +50 -10
  30. package/dist/features/group-hub.js.map +1 -1
  31. package/dist/features/group-join-request.d.ts.map +1 -1
  32. package/dist/features/group-join-request.js +47 -2
  33. package/dist/features/group-join-request.js.map +1 -1
  34. package/dist/features/history-store.d.ts +2 -2
  35. package/dist/features/history-store.d.ts.map +1 -1
  36. package/dist/features/history-store.js +15 -3
  37. package/dist/features/history-store.js.map +1 -1
  38. package/dist/features/outbound-mode-switch.d.ts +4 -4
  39. package/dist/features/outbound-mode-switch.d.ts.map +1 -1
  40. package/dist/features/outbound-mode-switch.js +27 -9
  41. package/dist/features/outbound-mode-switch.js.map +1 -1
  42. package/dist/features/poll-join-requests.d.ts.map +1 -1
  43. package/dist/features/poll-join-requests.js +42 -27
  44. package/dist/features/poll-join-requests.js.map +1 -1
  45. package/dist/features/preset-switcher.d.ts +4 -4
  46. package/dist/features/preset-switcher.d.ts.map +1 -1
  47. package/dist/features/preset-switcher.js +17 -8
  48. package/dist/features/preset-switcher.js.map +1 -1
  49. package/dist/features/qq-approval.d.ts +9 -4
  50. package/dist/features/qq-approval.d.ts.map +1 -1
  51. package/dist/features/qq-approval.js +26 -14
  52. package/dist/features/qq-approval.js.map +1 -1
  53. package/dist/features/schedule-store.d.ts +4 -4
  54. package/dist/features/schedule-store.d.ts.map +1 -1
  55. package/dist/features/schedule-store.js +18 -4
  56. package/dist/features/schedule-store.js.map +1 -1
  57. package/dist/features/sticker-gate.d.ts +4 -4
  58. package/dist/features/sticker-gate.d.ts.map +1 -1
  59. package/dist/features/sticker-gate.js +20 -4
  60. package/dist/features/sticker-gate.js.map +1 -1
  61. package/dist/features/sticker-store.d.ts +5 -3
  62. package/dist/features/sticker-store.d.ts.map +1 -1
  63. package/dist/features/sticker-store.js +21 -3
  64. package/dist/features/sticker-store.js.map +1 -1
  65. package/dist/gateway/bootstrap.d.ts.map +1 -1
  66. package/dist/gateway/bootstrap.js +18 -14
  67. package/dist/gateway/bootstrap.js.map +1 -1
  68. package/dist/gateway/debounce.d.ts.map +1 -1
  69. package/dist/gateway/debounce.js +9 -24
  70. package/dist/gateway/debounce.js.map +1 -1
  71. package/dist/gateway/middleware-setup.js +2 -2
  72. package/dist/gateway/middleware-setup.js.map +1 -1
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +4 -2
  75. package/dist/index.js.map +1 -1
  76. package/dist/middleware/media-history.d.ts.map +1 -1
  77. package/dist/middleware/media-history.js +4 -1
  78. package/dist/middleware/media-history.js.map +1 -1
  79. package/dist/model/model-resolver.d.ts +24 -12
  80. package/dist/model/model-resolver.d.ts.map +1 -1
  81. package/dist/model/model-resolver.js +89 -20
  82. package/dist/model/model-resolver.js.map +1 -1
  83. package/dist/session/session-manager.d.ts +9 -1
  84. package/dist/session/session-manager.d.ts.map +1 -1
  85. package/dist/session/session-manager.js +60 -9
  86. package/dist/session/session-manager.js.map +1 -1
  87. package/dist/setup.d.ts +15 -3
  88. package/dist/setup.d.ts.map +1 -1
  89. package/dist/setup.js +51 -32
  90. package/dist/setup.js.map +1 -1
  91. package/dist/shared/mention-clean.d.ts +18 -0
  92. package/dist/shared/mention-clean.d.ts.map +1 -0
  93. package/dist/shared/mention-clean.js +42 -0
  94. package/dist/shared/mention-clean.js.map +1 -0
  95. package/dist/transport/inbound.d.ts.map +1 -1
  96. package/dist/transport/inbound.js +3 -1
  97. package/dist/transport/inbound.js.map +1 -1
  98. package/package.json +1 -1
  99. package/settings-host.js +137 -24
package/dist/setup.d.ts CHANGED
@@ -15,11 +15,23 @@ export declare function runQrSetup(source?: string): Promise<SetupCredentials |
15
15
  *
16
16
  * 行级编辑(不再整文件 YAML 解析)——cordis.patch.yml 常含宿主 `!!js` 自定义标签,
17
17
  * js-yaml 无法解析会抛错导致自动保存失败(实测线上文件即因此走到手动引导)。
18
- * 只定位/更新顶层 `- id: im-qqbot` 条目块中的 appId/appSecret 行,
19
- * 文件其它内容(含 !!js、其它实例、insert 包装)原样保留。文件不存在时安全重建。
18
+ * 只定位/更新目标实例条目块(顶层或 `- insert:` 内的 4 空格形态)中的 appId/appSecret 行,
19
+ * 文件其它内容(含 !!js、其它实例、insert 包装)原样保留。
20
+ *
21
+ * ⚠️ 2026-09-10 修复两处线上事故:
22
+ * 1. 旧实现把条目名硬编码成 `im-qqbot`, 对 `im-qqbot-2` 这类实例找不到块 →
23
+ * 在文件末尾追加了一个顶层 `- id: im-qqbot`(新版 dsh 无此 entry, 会让整棵插件树加载失败);
24
+ * 现按 instEntryId(来自 config.settingsNs)定位, 且**绝不新建顶层 entry id**。
25
+ * 2. appId 必须写为**带引号的字符串** —— 新版 cordis 严格校验 `$.appId expected string`,
26
+ * 裸数字(appId 示例)会让 preset/插件树整体挂载失败。
27
+ *
28
+ * @param credentials 扫码得到的 appId/appSecret
29
+ * @param profileDir dsh profile 目录(含 cordis.patch.yml)
30
+ * @param logger 日志器
31
+ * @param instEntryId 目标条目 id(即 loader entry id, 默认 `im-qqbot`)
20
32
  */
21
33
  export declare function persistCredentialsToProfile(credentials: SetupCredentials, profileDir?: string, logger?: {
22
34
  info(msg: string, ...args: unknown[]): void;
23
35
  warn(msg: string, ...args: unknown[]): void;
24
- }): boolean;
36
+ }, instEntryId?: string): boolean;
25
37
  //# sourceMappingURL=setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAWA,WAAW;AACX,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAOD;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,SAAc,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAyDvF;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,gBAAgB,EAC7B,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE;IAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;CAAE,GACpG,OAAO,CA2FT"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAWA,WAAW;AACX,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAOD;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,SAAc,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAyDvF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,gBAAgB,EAC7B,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE;IAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;CAAE,EACrG,WAAW,SAAa,GACvB,OAAO,CAgGT"}
package/dist/setup.js CHANGED
@@ -72,12 +72,25 @@ export async function runQrSetup(source = 'dsh-qqbot') {
72
72
  *
73
73
  * 行级编辑(不再整文件 YAML 解析)——cordis.patch.yml 常含宿主 `!!js` 自定义标签,
74
74
  * js-yaml 无法解析会抛错导致自动保存失败(实测线上文件即因此走到手动引导)。
75
- * 只定位/更新顶层 `- id: im-qqbot` 条目块中的 appId/appSecret 行,
76
- * 文件其它内容(含 !!js、其它实例、insert 包装)原样保留。文件不存在时安全重建。
75
+ * 只定位/更新目标实例条目块(顶层或 `- insert:` 内的 4 空格形态)中的 appId/appSecret 行,
76
+ * 文件其它内容(含 !!js、其它实例、insert 包装)原样保留。
77
+ *
78
+ * ⚠️ 2026-09-10 修复两处线上事故:
79
+ * 1. 旧实现把条目名硬编码成 `im-qqbot`, 对 `im-qqbot-2` 这类实例找不到块 →
80
+ * 在文件末尾追加了一个顶层 `- id: im-qqbot`(新版 dsh 无此 entry, 会让整棵插件树加载失败);
81
+ * 现按 instEntryId(来自 config.settingsNs)定位, 且**绝不新建顶层 entry id**。
82
+ * 2. appId 必须写为**带引号的字符串** —— 新版 cordis 严格校验 `$.appId expected string`,
83
+ * 裸数字(appId 示例)会让 preset/插件树整体挂载失败。
84
+ *
85
+ * @param credentials 扫码得到的 appId/appSecret
86
+ * @param profileDir dsh profile 目录(含 cordis.patch.yml)
87
+ * @param logger 日志器
88
+ * @param instEntryId 目标条目 id(即 loader entry id, 默认 `im-qqbot`)
77
89
  */
78
- export function persistCredentialsToProfile(credentials, profileDir, logger) {
90
+ export function persistCredentialsToProfile(credentials, profileDir, logger, instEntryId = 'im-qqbot') {
79
91
  const log = logger ?? console;
80
92
  const dir = profileDir;
93
+ const entryId = (instEntryId || 'im-qqbot').trim() || 'im-qqbot';
81
94
  if (!dir) {
82
95
  // 开发模式:插件从源码加载、不在 node_modules 下,无法定位 profile 目录
83
96
  printEnvInstructions(credentials);
@@ -91,28 +104,29 @@ export function persistCredentialsToProfile(credentials, profileDir, logger) {
91
104
  text = readFileSync(patchPath, 'utf8');
92
105
  const eol = text.includes('\r\n') ? '\r\n' : '\n';
93
106
  const lines = text.length ? text.split(/\r\n|\n/) : [];
94
- const yq = (v) => {
95
- // YAML 值引号化: 纯安全字符可不加引号; 否则单引号包裹(内部单引号翻倍)
96
- return /^[A-Za-z0-9_./:\-]+$/.test(v) ? v : `'${v.replace(/'/g, "''")}'`;
97
- };
98
- // 顶层条目行 "- id: im-qqbot"(允许引号包裹的 id)
99
- const HEAD_RE = /^-\s*id:\s*['"]?im-qqbot['"]?\s*$/;
107
+ /** appId/appSecret 一律单引号字符串: 宿主 schema 要求 string, 裸数字会挂载失败 */
108
+ const ystr = (v) => `'${String(v).replace(/'/g, "''")}'`;
109
+ // 条目行: 允许任意缩进(顶层 0 / insert 内 4), id 需精确匹配 entryId
110
+ const esc = entryId.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
111
+ const HEAD_RE = new RegExp(`^\\s*-\\s*id:\\s*['"]?${esc}['"]?\\s*$`);
100
112
  const headIdx = lines.findIndex((l) => HEAD_RE.test(l));
101
113
  let outLines;
102
114
  if (headIdx >= 0) {
103
- // 2a. 已有 im-qqbot 顶层块: 块结束 = 下一个"顶格 - "条目行(或文件尾)
115
+ // 2a. 已有目标块: 块结束 = 下一个"缩进不更深的条目行"(或文件尾)
116
+ const headIndent = (lines[headIdx].match(/^\s*/) ?? [''])[0].length;
104
117
  let blockEnd = lines.length;
105
118
  for (let i = headIdx + 1; i < lines.length; i++) {
106
119
  const li = lines[i];
107
- if (/^\s*-\s/.test(li) && !/^\s+/.test(li)) {
120
+ const ind = ((li.match(/^\s*/) ?? [''])[0]).length;
121
+ if (/- /.test(li) && ind <= headIndent) {
108
122
  blockEnd = i;
109
123
  break;
110
124
  }
111
125
  }
112
126
  const block = lines.slice(headIdx, blockEnd);
113
- // config 字段缩进: 找块内 `config:` 行缩进; 默认 2
114
- let cfgIndent = 2;
115
- const cfgLine = block.findIndex((l) => /^\s*config:\s*$/.test(l));
127
+ // config 字段缩进: 找块内 `config:` 行缩进; 默认 headIndent + 2
128
+ let cfgIndent = headIndent + 2;
129
+ const cfgLine = block.findIndex((l) => new RegExp(`^\\s{${headIndent + 1},}config:\\s*$`).test(l));
116
130
  if (cfgLine >= 0) {
117
131
  cfgIndent = (block[cfgLine].match(/^\s*/) ?? [''])[0].length;
118
132
  }
@@ -122,49 +136,52 @@ export function persistCredentialsToProfile(credentials, profileDir, logger) {
122
136
  const hit = arr.findIndex((l) => re.test(l));
123
137
  if (hit >= 0) {
124
138
  const indent = (arr[hit].match(/^\s*/) ?? [''])[0];
125
- arr[hit] = `${indent}${key}: ${yq(value)}`;
139
+ arr[hit] = `${indent}${key}: ${value}`;
126
140
  return arr;
127
141
  }
128
142
  // 无该键: config: 行后插入; 无 config: 则在 id 行后补 config + 键
129
143
  const insertAt = cfgLine >= 0 ? cfgLine + 1 : 1;
130
144
  const pad = ' '.repeat(valIndent);
131
145
  if (cfgLine < 0) {
132
- arr.splice(1, 0, ' '.repeat(cfgIndent) + 'config:', `${pad}${key}: ${yq(value)}`);
146
+ arr.splice(1, 0, ' '.repeat(cfgIndent) + 'config:', `${pad}${key}: ${value}`);
133
147
  }
134
148
  else {
135
- // 找同 key 族(appId 先于 appSecret 落位; 插入到已有 appId/其它 config 键之前保持整洁)
136
- arr.splice(insertAt, 0, `${pad}${key}: ${yq(value)}`);
149
+ arr.splice(insertAt, 0, `${pad}${key}: ${value}`);
137
150
  }
138
151
  return arr;
139
152
  };
140
- const nb = upsertKey('appId', credentials.appId, block.slice());
141
- upsertKey('appSecret', credentials.appSecret, nb);
153
+ const nb = upsertKey('appId', ystr(credentials.appId), block.slice());
154
+ upsertKey('appSecret', ystr(credentials.appSecret), nb);
142
155
  outLines = lines.slice(0, headIdx).concat(nb, lines.slice(blockEnd));
143
156
  }
144
157
  else {
145
- // 2b. 没有 im-qqbot 顶层块: 文件末尾追加新条目(顶格 "- id:" 形态; 保留原有内容)
158
+ // 2b. 没有目标块: **不再新建顶层 `- id: xxx`**(顶层 id 只能覆盖已存在的 bundle entry,
159
+ // 否则宿主报 patch entry not found / 插件树加载失败)。改用 `- insert:` 包装新增。
146
160
  const tail = lines.slice();
147
161
  while (tail.length > 0 && tail[tail.length - 1] === '')
148
162
  tail.pop();
149
163
  outLines = tail.concat([
150
164
  '',
151
165
  '# QQ Bot 凭据(扫码绑定自动生成)',
152
- '- id: im-qqbot',
153
- ' config:',
154
- ` appId: ${yq(credentials.appId)}`,
155
- ` appSecret: ${yq(credentials.appSecret)}`,
166
+ '- insert:',
167
+ ` - id: ${entryId}`,
168
+ ' name: @zaofan/dsh-qqbot',
169
+ ' config:',
170
+ ` appId: ${ystr(credentials.appId)}`,
171
+ ` appSecret: ${ystr(credentials.appSecret)}`,
172
+ ...(entryId !== 'im-qqbot' ? [` settingsNs: '${entryId}'`] : []),
156
173
  ]);
157
174
  }
158
175
  mkdirSync(dir, { recursive: true });
159
176
  const finalText = (outLines.join(eol)).replace(/\n{3,}/g, '\n\n').trimEnd() + eol;
160
177
  writeFileSync(patchPath, finalText, 'utf8');
161
- log.info(`✔ 凭据已写入: ${patchPath}`);
178
+ log.info(`✔ 凭据已写入: ${patchPath} (entry id: ${entryId})`);
162
179
  log.info(` 下次启动将自动使用保存的凭据`);
163
180
  return true;
164
181
  }
165
182
  catch (err) {
166
183
  log.warn(`写入配置失败: ${err instanceof Error ? err.message : String(err)}`);
167
- printYamlInstructions(credentials, patchPath);
184
+ printYamlInstructions(credentials, patchPath, entryId);
168
185
  return false;
169
186
  }
170
187
  }
@@ -186,13 +203,15 @@ function printEnvInstructions(credentials) {
186
203
  }
187
204
  }
188
205
  /** 正式安装引导:自动写入失败,引导手动在 cordis.patch.yml 配置(console.log 确保可见) */
189
- function printYamlInstructions(credentials, patchPath) {
206
+ function printYamlInstructions(credentials, patchPath, entryId = 'im-qqbot') {
190
207
  console.log('无法自动保存凭据,请手动打开以下文件添加配置:');
191
208
  console.log(` ${patchPath}`);
192
209
  console.log('');
193
- console.log(' - id: im-qqbot');
194
- console.log(' config:');
195
- console.log(` appId: "${credentials.appId}"`);
196
- console.log(` appSecret: "${credentials.appSecret}"`);
210
+ console.log(' - insert:');
211
+ console.log(` - id: ${entryId}`);
212
+ console.log(" name: '@zaofan/dsh-qqbot'");
213
+ console.log(' config:');
214
+ console.log(` appId: '${credentials.appId}'`);
215
+ console.log(` appSecret: '${credentials.appSecret}'`);
197
216
  }
198
217
  //# sourceMappingURL=setup.js.map
package/dist/setup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * 入站 @bot 长 id 清洗(2026-09-11 主人要求省 token):
3
+ * QQ 群消息里 @bot 时, content 会带 `<@botOpenid>`(32 位 hex 的 bot openid),
4
+ * 原样喂 LLM 每条都耗一截 token(当前消息 + 历史折叠都带)。
5
+ * 策略:
6
+ * ① 从 mentions 数组(is_you === true)拿 bot 自身 id → 精确替换成短标记 `@bot`;
7
+ * ② 无 mentions 元数据且 wasMentioned 时, 若 content 里恰好只有 1 个 @ 标记
8
+ * (群聊 @bot 消息通常只 @ 自己) → 兜底替换成 `@bot`;
9
+ * ③ 多个 @ 标记且无法区分 → 不动(避免误伤 @ 其他群友, 那些有语义)。
10
+ * 只清入站, 出站 AI 回复里的 <@对方openid>(用于 @ 人)原样保留。
11
+ */
12
+ export interface MentionLike {
13
+ id?: string;
14
+ is_you?: boolean;
15
+ is_bot?: boolean;
16
+ }
17
+ export declare function replaceBotMention(content: string | undefined | null, mentions?: MentionLike[] | null, wasMentioned?: boolean): string;
18
+ //# sourceMappingURL=mention-clean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mention-clean.d.ts","sourceRoot":"","sources":["../../src/shared/mention-clean.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAClC,QAAQ,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,EAC/B,YAAY,CAAC,EAAE,OAAO,GACrB,MAAM,CA4BR"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * 入站 @bot 长 id 清洗(2026-09-11 主人要求省 token):
3
+ * QQ 群消息里 @bot 时, content 会带 `<@botOpenid>`(32 位 hex 的 bot openid),
4
+ * 原样喂 LLM 每条都耗一截 token(当前消息 + 历史折叠都带)。
5
+ * 策略:
6
+ * ① 从 mentions 数组(is_you === true)拿 bot 自身 id → 精确替换成短标记 `@bot`;
7
+ * ② 无 mentions 元数据且 wasMentioned 时, 若 content 里恰好只有 1 个 @ 标记
8
+ * (群聊 @bot 消息通常只 @ 自己) → 兜底替换成 `@bot`;
9
+ * ③ 多个 @ 标记且无法区分 → 不动(避免误伤 @ 其他群友, 那些有语义)。
10
+ * 只清入站, 出站 AI 回复里的 <@对方openid>(用于 @ 人)原样保留。
11
+ */
12
+ export function replaceBotMention(content, mentions, wasMentioned) {
13
+ const text = String(content ?? '');
14
+ if (!text)
15
+ return text;
16
+ // ① mentions 精确匹配(is_you → bot 自身 openid)
17
+ const botIds = [];
18
+ if (Array.isArray(mentions)) {
19
+ for (const m of mentions) {
20
+ if (m?.is_you && m.id)
21
+ botIds.push(m.id);
22
+ }
23
+ }
24
+ if (botIds.length > 0) {
25
+ let out = text;
26
+ for (const bid of botIds) {
27
+ try {
28
+ out = out.replace(new RegExp(`<@!?${bid}>`, 'g'), '@bot');
29
+ }
30
+ catch { /* 非法 id 跳过 */ }
31
+ }
32
+ return out;
33
+ }
34
+ // ② 无 mentions 元数据 + wasMentioned + 恰好 1 个 @ 标记 → 兜底替换
35
+ if (wasMentioned) {
36
+ const all = [...text.matchAll(/<@!?([A-Za-z0-9]+)>/g)];
37
+ if (all.length === 1)
38
+ return text.replace(/<@!?[A-Za-z0-9]+>/g, '@bot');
39
+ }
40
+ return text;
41
+ }
42
+ //# sourceMappingURL=mention-clean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mention-clean.js","sourceRoot":"","sources":["../../src/shared/mention-clean.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,MAAM,UAAU,iBAAiB,CAC/B,OAAkC,EAClC,QAA+B,EAC/B,YAAsB;IAEtB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,0CAA0C;IAC1C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YAC5D,CAAC;YAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,uDAAuD;IACvD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACvD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"inbound.d.ts","sourceRoot":"","sources":["../../src/transport/inbound.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAa,MAAM,EAA8B,MAAM,aAAa,CAAC;AAsEjF;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAwHf"}
1
+ {"version":3,"file":"inbound.d.ts","sourceRoot":"","sources":["../../src/transport/inbound.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAa,MAAM,EAA8B,MAAM,aAAa,CAAC;AAuEjF;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAwHf"}
@@ -2,6 +2,7 @@ import { createUserMessage } from '@deepseek-ai/dsh-llm';
2
2
  import { clearGroupHistory } from '../features/history-store.js';
3
3
  import { applyInjectRules } from './inject-rules.js';
4
4
  import { inferMediaKind, mediaKindLabel } from './media-kind.js';
5
+ import { replaceBotMention } from '../shared/mention-clean.js';
5
6
  // ── 主处理函数 ──
6
7
  /**
7
8
  * 处理 QQ 入站消息(已经过 SDK 中间件链)
@@ -150,7 +151,8 @@ function assembleAgentBody(msg, state, scope, logger, downloaded) {
150
151
  */
151
152
  function buildUserContent(msg, state, logger) {
152
153
  const parts = [];
153
- const text = (msg.content ?? '').trim();
154
+ // 2026-09-11 主人要求: 入站 @bot 长 openid 转短标记 @bot 省 token(精确按 mentions.is_you 替换)
155
+ const text = replaceBotMention((msg.content ?? '').trim(), msg.mentions, state.mention?.wasMentioned);
154
156
  if (text) {
155
157
  parts.push(text);
156
158
  }
@@ -1 +1 @@
1
- {"version":3,"file":"inbound.js","sourceRoot":"","sources":["../../src/transport/inbound.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inbound.js","sourceRoot":"","sources":["../../src/transport/inbound.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zaofan/dsh-qqbot",
3
- "version": "1.1.2",
3
+ "version": "1.1.4",
4
4
  "description": "QQ Bot IM channel plugin for deepseek-harness (dsh)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
package/settings-host.js CHANGED
@@ -282,9 +282,9 @@ export function apply(ctx) {
282
282
  /** 解析 patch: 返回 {raw, bots:[{id,start,end,ins,cfg:{appId,appSecret,preset,cwd},disabled}], hasFile}
283
283
  * patch 语义(宿主 dsh-app-boot applyEntryPatches): 顶层 `- id: X` 只能覆盖已存在 id(bundle insert 建的);
284
284
  * 新增实例必须 `- insert:` 包装(其下 4 空格 `- id: Y`)。本文件里两种形态都识别。 */
285
- function parsePatch() {
285
+ function parsePatchFrom(rawText) {
286
286
  const hasFile = existsSync(PATCH_FILE);
287
- const raw = hasFile ? readFileSync(PATCH_FILE, 'utf8') : '';
287
+ const raw = rawText !== undefined && rawText !== null ? String(rawText) : (hasFile ? readFileSync(PATCH_FILE, 'utf8') : '');
288
288
  // 行尾容错: 兼容 CRLF(2026-09-08 曾因 patch 被写成 CRLF 导致整段解析失败)
289
289
  const lines = raw.split(/\r?\n/);
290
290
  const bots = [];
@@ -309,7 +309,7 @@ export function apply(ctx) {
309
309
  }
310
310
  j += 1;
311
311
  }
312
- bots.push({ id, start, end: j, ins: false, cfg, disabled });
312
+ bots.push({ id, start, end: j, ins: false, cfg, disabled, headLine: start });
313
313
  i = j;
314
314
  } else if (isTopLine(t) && /^\s*-\s*insert:\s*$/.test(t)) {
315
315
  // insert 形态: 找其下 4 空格 `- id: im-qqbot*`
@@ -342,7 +342,7 @@ export function apply(ctx) {
342
342
  if (isTopLine(lines[j])) break;
343
343
  j += 1;
344
344
  }
345
- bots.push({ id, start: insStart, end: j, ins: true, cfg, disabled });
345
+ bots.push({ id, start: insStart, end: j, ins: true, cfg, disabled, headLine: found.line });
346
346
  i = j;
347
347
  } else {
348
348
  i += 1;
@@ -353,6 +353,8 @@ export function apply(ctx) {
353
353
  }
354
354
  return { raw, hasFile, bots };
355
355
  }
356
+ /** 从磁盘读取并解析(parsePatchFrom 的包装) */
357
+ function parsePatch() { return parsePatchFrom(undefined); }
356
358
 
357
359
  /** 渲染一个实例块。主 im-qqbot(bundle 已 insert)→ 顶层覆盖; 新实例 → `- insert:` 包装(4/6/8 缩进) */
358
360
  function renderBotBlock(inst) {
@@ -379,47 +381,158 @@ export function apply(ctx) {
379
381
  return out.join('\n');
380
382
  }
381
383
 
384
+ /** 在已有条目块内只更新指定键,保留原结构(缩进/位置/未知字段如 groupAdmin、dataRoot、name)。
385
+ * ⚠️ 2026-09-10 新增: 原实现用 renderBotBlock 整块重建 —— 会把 insert: 下的 im-qqbot-2 提成顶层
386
+ * `- id: im-qqbot`(新版无此 entry, 直接让整棵插件树加载失败), 并丢掉 name/settingsNs/historyLimit/
387
+ * groupAdmin/dataRoot 等未在渲染里列出的字段。改为原地增量更新后结构不再被破坏。
388
+ * ⚠️ 2026-09-10 二次修复: 除更新已存在的键外, 还要**补写缺失的键**(如原本没有 cwd 的实例),
389
+ * 否则前端填了 cwd 也保存不进去(实测 im-qqbot-3 只更新 3/4 个键)。disabled 走块头层(children of id)。
390
+ * @param {string[]} lines 文件全部行(会被原地修改)
391
+ * @param {number} start 块首行索引(含, 即 `- id:` 或 `- insert:` 行)
392
+ * @param {number} end 块结束行索引(不含)
393
+ * @param {Record<string,string>} kv 要写入的键值(值为字符串); 已存在则改, 缺失则按规矩新增
394
+ * @returns {number} 实际写入的键数 */
395
+ function updateKeysInBlock(lines, start, end, kv) {
396
+ // 块头行: insert 包装时块首是 `- insert:`, 真正的 `- id:` 在下一行
397
+ let headIdx = start;
398
+ for (let i = start; i < Math.min(start + 3, end); i += 1) {
399
+ if (/^\s*-\s*id:/.test(lines[i])) { headIdx = i; break; }
400
+ }
401
+ const headIndent = ((lines[headIdx] ?? '').match(/^\s*/) ?? [''])[0].length;
402
+ const childIndent = headIndent + 2; // name: / disabled: / config: 的缩进
403
+
404
+ const pending = new Map(Object.entries(kv));
405
+ let touched = 0;
406
+ // ① 已存在的键: 原地改写(保留原缩进)
407
+ for (let i = headIdx + 1; i < end && pending.size > 0; i += 1) {
408
+ const m = /^(\s*)([A-Za-z_][A-Za-z0-9_]*):\s*(.*)$/.exec(lines[i]);
409
+ if (!m) continue;
410
+ const key = m[2];
411
+ if (!pending.has(key)) continue;
412
+ lines[i] = `${m[1]}${key}: ${pending.get(key)}`;
413
+ pending.delete(key);
414
+ touched += 1;
415
+ }
416
+ if (pending.size === 0) return touched;
417
+
418
+ // ② 缺失的键: 找本条目自己的 `config:` 行(缩进 = childIndent, 避免命中嵌套的 groupAdmin 等)
419
+ let cfgLine = -1;
420
+ for (let i = headIdx + 1; i < end; i += 1) {
421
+ if (new RegExp(`^\\s{${childIndent}}config:\\s*$`).test(lines[i])) { cfgLine = i; break; }
422
+ }
423
+ const keyIndent = childIndent + 2; // config 下子键的缩进
424
+ const addLines = [];
425
+ for (const [key, val] of pending) {
426
+ // disabled 属于条目层(childIndent), 也放这里 —— YAML 不要求键顺序
427
+ addLines.push(`${' '.repeat(key === 'disabled' ? childIndent : keyIndent)}${key}: ${val}`);
428
+ }
429
+ if (cfgLine >= 0) {
430
+ // 找 config: 之下最后一个同级键(含其子块), 插在后面。
431
+ // 注意: 同级键的缩进 == keyIndent(不是 >), 用 >= 才能走到最后一个键;
432
+ // 带子块的键(如 groupAdmin:) 其子行缩进 > keyIndent 也要一并跨过。
433
+ let scan = cfgLine + 1;
434
+ let lastLine = cfgLine;
435
+ while (scan < end) {
436
+ const blank = lines[scan].trim() === '';
437
+ const ind = ((lines[scan].match(/^\s*/) ?? [''])[0]).length;
438
+ if (!blank && ind >= keyIndent) { lastLine = scan; scan += 1; continue; }
439
+ break;
440
+ }
441
+ lines.splice(lastLine + 1, 0, ...addLines);
442
+ } else {
443
+ // 没有 config: —— 在块头后补一个 config: 再放键
444
+ let insertAt = end;
445
+ for (let i = headIdx + 1; i < end; i += 1) {
446
+ const ind = ((lines[i].match(/^\s*/) ?? [''])[0]).length;
447
+ if (lines[i].trim() !== '' && ind <= headIndent && /- /.test(lines[i])) { insertAt = i; break; }
448
+ }
449
+ lines.splice(insertAt, 0, `${' '.repeat(childIndent)}config:`, ...addLines);
450
+ }
451
+ return touched + addLines.length;
452
+ }
453
+
454
+
382
455
  /** 保存实例清单(全量同步; 行级重建, 其它插件行/注释原样保留)
383
456
  * 借鉴 dsh-qqbot-panel(2026-09-06): appSecret 空值/掩码(********) = 保留原值,
384
457
  * 只有提供全新非掩码值才覆盖 —— 前端只回显掩码, 不会因漏传/未改而误清 secret。
385
458
  * ⚠️ 2026-09-09: dataRoot 同理 —— 前端不编辑它, 保存时必须保留原值,
386
- * 否则 accounts/save 会把 patch.yml 里的 dataRoot 覆盖掉(图库路径回退 cwd 的根因)。 */
459
+ * 否则 accounts/save 会把 patch.yml 里的 dataRoot 覆盖掉(图库路径回退 cwd 的根因)。
460
+ * ⚠️ 2026-09-10: 已存在的条目改为"原地只更新字段", 不再整块重建(见 updateKeysInBlock 注释)。 */
387
461
  function saveInstances(instances) {
388
462
  const { raw, hasFile, bots } = parsePatch();
389
463
  if (!hasFile) return { ok: false, error: '找不到 cordis.patch.yml(仅 web profile 支持)' };
390
464
  const lines = raw.split('\n');
391
- const edits = [];
465
+ const removals = [];
466
+ const updates = [];
467
+ const appends = [];
392
468
  const targetIds = new Set(instances.filter((x) => !x.remove).map((x) => String(x.id)));
393
- for (const b of bots) {
394
- if (!targetIds.has(b.id)) edits.push({ start: b.start, end: b.end, text: null });
469
+ // 删除: 只删「没被提交的机器人条目」或显式 remove 的条目, 且范围严格限定在该条目自身:
470
+ // 起点 = 它自己的 `- id:` 行(headLine, 不是包裹它的 `- insert:` 行),
471
+ // 终点 = 下一个同级机器人条目的 headLine(或该 insert 块结束)。
472
+ // ⚠️ 2026-09-10 事故一: 原用 { start: b.start }(insert 包装时为 `- insert:` 行) 且 end 取块末,
473
+ // 导致同一 insert 下的其它插件条目(mcp-chrome)被连带删除。现改为按 headLine 精确切分。
474
+ // ⚠️ 2026-09-10 事故二: 前端把"空骨架实例"(如用于禁用幽灵 im-qqbot 的 `- id: im-qqbot`
475
+ // + disabled: true, appId/appSecret 均为空)过滤掉不提交 → 会被当成"要删除"而误删,
476
+ // 删掉后下次启动又触发扫码。故: 无凭据(appId/appSecret 皆空)的条目一律保留, 不参与自动删除。
477
+ const removeIds = new Set(instances.filter((x) => x.remove).map((x) => String(x.id)));
478
+ const doomed = bots.filter((b) => {
479
+ if (removeIds.has(b.id)) return true;
480
+ if (targetIds.has(b.id)) return false;
481
+ const hasCred = !!(b.cfg?.appId || b.cfg?.appSecret);
482
+ return hasCred;
483
+ });
484
+ for (const b of doomed) {
485
+ const sameGroup = bots
486
+ .filter((o) => o !== b && o.ins === b.ins && o.start === b.start && o.headLine > b.headLine)
487
+ .sort((x, y) => x.headLine - y.headLine);
488
+ const nextHead = sameGroup.length ? sameGroup[0].headLine : b.end;
489
+ let tail = nextHead;
490
+ while (tail > b.headLine + 1 && (lines[tail - 1] ?? '').trim() === '') tail -= 1;
491
+ removals.push({ start: b.headLine, end: tail });
395
492
  }
396
493
  for (const inst of instances) {
397
494
  if (inst.remove) continue;
398
- const t = bots.find((b) => b.id === inst.id);
399
- const orig = bots.find((b) => b.id === inst.id);
495
+ const orig = bots.find((b) => b.id === String(inst.id));
400
496
  // 掩码/空 → 保留原 secret(仅当原值存在; 全新账号本就无原值则维持空)
401
- if (!inst.appSecret || inst.appSecret === SECRET_MASK) {
402
- if (orig && orig.cfg?.appSecret) inst.appSecret = orig.cfg.appSecret;
403
- else inst.appSecret = '';
404
- }
497
+ let secret = String(inst.appSecret ?? '');
498
+ if (!secret || secret === SECRET_MASK) secret = orig?.cfg?.appSecret ? String(orig.cfg.appSecret) : '';
405
499
  // 前端不编辑 dataRoot → 保留原值(2026-09-09: 曾因保存覆盖丢失导致图库路径回退 cwd)
406
- if (inst.dataRoot === undefined && orig && orig.cfg?.dataRoot) inst.dataRoot = orig.cfg.dataRoot;
407
- const blockText = renderBotBlock(inst);
408
- if (t) edits.push({ start: t.start, end: t.end, text: blockText });
409
- else edits.push({ append: blockText });
500
+ let dataRoot = inst.dataRoot;
501
+ if (dataRoot === undefined && orig?.cfg?.dataRoot) dataRoot = orig.cfg.dataRoot;
502
+
503
+ if (orig) {
504
+ const kv = {};
505
+ if (inst.appId !== undefined) kv.appId = yq(String(inst.appId));
506
+ if (secret) kv.appSecret = ysec(secret);
507
+ if (inst.preset !== undefined && String(inst.preset) !== '') kv.preset = yq(String(inst.preset));
508
+ if (inst.cwd !== undefined && String(inst.cwd) !== '') kv.cwd = yq(String(inst.cwd));
509
+ if (inst.disabled !== undefined) kv.disabled = inst.disabled ? 'true' : 'false';
510
+ updates.push({ id: String(inst.id), kv });
511
+ } else {
512
+ appends.push(renderBotBlock({ ...inst, appSecret: secret, dataRoot }));
513
+ }
514
+ }
515
+ // 先删块(倒序), 再逐条原地改字段。
516
+ // ⚠️ 每次更新前重新 parsePatch 取最新下标: splice 过(删除或插入新键)之后,
517
+ // 之前算好的 start/end 会错位, 曾导致插入落到错误缩进上把 YAML 写坏。
518
+ for (const r of removals.sort((a, b) => b.start - a.start)) lines.splice(r.start, r.end - r.start);
519
+ for (const u of updates) {
520
+ let fresh = null;
521
+ try {
522
+ const reparsed = parsePatchFrom(lines.join('\n'));
523
+ fresh = reparsed.bots.find((b) => b.id === u.id) ?? null;
524
+ } catch { fresh = null; }
525
+ if (!fresh) continue;
526
+ updateKeysInBlock(lines, fresh.start, fresh.end, u.kv);
410
527
  }
411
- edits.filter((e) => e.start !== undefined).sort((a, b) => b.start - a.start).forEach((e) => {
412
- if (e.text === null) lines.splice(e.start, e.end - e.start);
413
- else lines.splice(e.start, e.end - e.start, ...e.text.split('\n'));
414
- });
415
528
  let out = lines.join('\n').replace(/\n{3,}/g, '\n\n').trimEnd() + '\n';
416
- const appendParts = edits.filter((e) => e.append).map((e) => e.append);
417
- if (appendParts.length) out += (out ? '\n' : '') + appendParts.join('\n') + '\n';
529
+ if (appends.length) out += (out.trimEnd() ? '\n' : '') + appends.join('\n') + '\n';
418
530
  writeFileSync(`${PATCH_FILE}.bak`, raw, 'utf8');
419
531
  writeFileSync(PATCH_FILE, out, 'utf8');
420
532
  return { ok: true, file: PATCH_FILE, needRestart: true };
421
533
  }
422
534
 
535
+
423
536
  // 账号列表(多账号: 每条带 settings ns 与数据目录, 供二级 UI 按账号读写)
424
537
  // 借鉴 zhengjy01/dsh-qqbot-panel(2026-09-06): appSecret 只回显掩码(不泄露明文),
425
538
  // 并带 hasSecret 供前端区分"已保存"与"真空"; 保存时空值/掩码 = 保留原 secret。