@cxyhhhhh/dsh-qqbot 0.5.4-dev.202610301949 → 0.5.4-dev.202610302202

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/CHANGELOG.md CHANGED
@@ -34,6 +34,11 @@
34
34
  - **文件发送路径白名单解析符号链接**:按真实位置判定,root 内的符号链接指向外部时拒绝访问。(#94)
35
35
  - **图片附件按真实格式命名扩展名**:QQ 网关对图片统一标注 `image/png`(实际多为 GIF/JPEG),落盘文件名照搬导致按扩展名解码的读图工具失败;现按文件头(magic bytes)识别真实格式并校正扩展名,字节不变、不转码,识别不了的格式保持原行为。(#76)
36
36
  - **统一 workspace 路径解析**:新增插件目录单一事实源(`~/.dsh-qqbot`),workspace、media、模型偏好等子路径统一派生,未配置 `cwd` 时不再误用宿主进程目录(此前导致 workspace 内文件发送被误拒);不存在的文件也改为报「文件不存在」而非误报路径不允许。
37
+ - **vision 配置自动补写不再破坏 settings.yaml**:启动时为视觉模型补写 `input` 声明改用文档保真编辑(注释、锚点、其他配置原样保留)+ 原子写 + 并发冲突时放弃重试,此前全量重序列化会抹掉文件里的全部注释与排版。
38
+ - **偏好文件并发安全**:`model-prefs.json`(会话 id 映射,多实例/多进程共享)改为原子写 + 写前合并其他写者的条目,多 bot 或多 profile 并存不再互相覆盖丢映射;删除操作带墓碑防止被并发写复活;读取/写入失败升级为可见告警(此前仅 debug 甚至静默,映射丢失表现为「QQ 里丢上下文」且无从排查)。
39
+ - **修复会话列表可能打不开**:恢复会话失败时只在确认磁盘上确实没有该会话后才新建,日志损坏、后端故障等原因不再沿用同一会话 id 重复创建(此前会把同一 id 写进多个目录,宿主随后拒绝加载整个会话列表);这类故障改为明确报错并记录日志,恢复后原会话历史仍在。
40
+ - **修复并发消息可能切错会话**:旧版本的会话 id 由用户标识确定性派生,仅用于迁移存量会话,不再用于新建;同一会话的并发请求(斜杠指令与普通消息同时到达)合并为一次恢复/创建,不再产生两个互相覆盖且无人回收的会话实例。
41
+ - **vision 配置补写不再丢数字精度**:补写 `input` 声明时整数按原文保留,用户 `settings.yaml` 里的大整数(安装 id、时间戳等)不再被截断。
37
42
 
38
43
  ### 内部改进
39
44
 
package/CHANGELOG_EN.md CHANGED
@@ -34,6 +34,11 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
34
34
  - **File-send path allowlist resolves symlinks**: paths are judged by their real locations; a symlink inside an allowed root pointing outside is rejected. (#94)
35
35
  - **Image attachments named by their real format**: the QQ gateway labels all images `image/png` (most are actually GIF/JPEG), so saved files carried wrong extensions and extension-based image decoding failed; extensions are now corrected from the file header (magic bytes) — bytes unchanged, no transcoding, unknown formats keep the original behavior. (#76)
36
36
  - **Unified workspace path resolution**: introduced a single source of truth for the plugin data directory (`~/.dsh-qqbot`), from which the workspace, media, and model-preference paths are uniformly derived; without an explicit `cwd` the host process directory is no longer wrongly used (previously causing workspace file sends to be denied). Missing files now report "file not found" instead of a misleading path denial.
37
+ - **Vision config auto-patch no longer clobbers settings.yaml**: the startup fix-up that declares `input` for the vision model now uses fidelity-preserving document editing (comments, anchors, and other settings kept as-is) with atomic writes and conflict-aware retry; the previous full re-serialization wiped all comments and formatting from the file.
38
+ - **Concurrent-safe preference file**: `model-prefs.json` (the session-id mapping shared by multi-bot and multi-profile setups) now writes atomically and merges other writers' entries before overwriting, so coexisting bots/profiles no longer clobber each other's mappings; deletions carry tombstones so concurrent writes cannot resurrect them; load/write failures surface as visible warnings (previously debug-only or silent — a lost mapping showed up as "lost context in QQ" with nothing to trace).
39
+ - **Fixed an unopenable session list**: when resuming a session fails, a new one is created only after confirming the session is genuinely absent on disk; corrupt logs and backend failures no longer recreate the same session id (which used to write one id into several directories, after which the host refused to load the whole session list). Such failures now fail loudly with a log entry, and the original history is still there once the fault clears.
40
+ - **Fixed concurrent messages landing on the wrong session**: the legacy session id derived from the user identity is now only used to migrate existing sessions, never to create new ones; concurrent requests for the same session (a slash command arriving alongside a normal message) are coalesced into one resume/create, so two mutually overwriting, never-reclaimed session instances are no longer produced.
41
+ - **Vision config patch keeps numeric precision**: integers are preserved verbatim when the `input` declaration is added, so large integers in the user's `settings.yaml` (install ids, timestamps) are no longer truncated.
37
42
 
38
43
  ### Internal
39
44
 
@@ -25,9 +25,23 @@ export interface HostAdapter {
25
25
  globalService(name: string): unknown | undefined;
26
26
  /** 官方 fork seed 构造;旧宿主无导出时返回 undefined */
27
27
  buildForkSeed(events: readonly unknown[], boundary: number): Promise<readonly unknown[] | undefined>;
28
+ /** 会话 header 读取(取 agentPreset 等);会话不存在、服务缺失或读取失败返回 undefined */
29
+ sessionHeader(sessionId: string): Promise<SessionHeaderLike | undefined>;
30
+ /**
31
+ * 会话是否存在于持久化层。
32
+ *
33
+ * `undefined` = 没有求证手段(宿主未注册 sessionPersistence,或其形态不含
34
+ * `stat`)。调用方不得把它当成「不存在」——那正是重建已存在会话、撞出重复
35
+ * id 的根因。后端真故障时照常抛出。
36
+ */
37
+ sessionExists(sessionId: string): Promise<boolean | undefined>;
28
38
  /** 探测结果摘要(启动契约检查用) */
29
39
  readonly capabilities: string[];
30
40
  }
41
+ /** 会话 header 的最小结构(只读插件关心的字段;`agentPreset` 在 header 顶层) */
42
+ export interface SessionHeaderLike {
43
+ agentPreset?: string;
44
+ }
31
45
  export declare function createHostAdapter(ctx: Context, logger?: AdapterLogger): HostAdapter;
32
46
  /** 测试辅助:清空模块缓存 */
33
47
  export declare function _resetAdapterCache(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/host/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,aAAa;AACb,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,oDAAoD;IACpD,aAAa,CAAC,OAAO,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,SAAS,OAAO,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;KAAE,GAAG,SAAS,OAAO,EAAE,CAAC;IACvH,uCAAuC;IACvC,UAAU,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,OAAO,CAAA;KAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAChF,iCAAiC;IACjC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACjD,0CAA0C;IAC1C,aAAa,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC;IACrG,sBAAsB;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CACjC;AAkBD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,WAAW,CA8DnF;AAWD,kBAAkB;AAClB,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/host/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,aAAa;AACb,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,oDAAoD;IACpD,aAAa,CAAC,OAAO,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,SAAS,OAAO,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;KAAE,GAAG,SAAS,OAAO,EAAE,CAAC;IACvH,uCAAuC;IACvC,UAAU,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,OAAO,CAAA;KAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAChF,iCAAiC;IACjC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACjD,0CAA0C;IAC1C,aAAa,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC;IACrG,gEAAgE;IAChE,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;IACzE;;;;;;OAMG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC/D,sBAAsB;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAwCD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,WAAW,CAmFnF;AAWD,kBAAkB;AAClB,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
@@ -6,6 +6,16 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
6
6
  }
7
7
  return path;
8
8
  };
9
+ /**
10
+ * 取出可用的持久化服务;形态不匹配返回 undefined。
11
+ *
12
+ * 宿主服务是版本漂移点,必须探测方法是否存在再调用:直接调用缺失的方法会抛
13
+ * `TypeError`,与「后端故障」混在一起,让调用方误以为求证过了。
14
+ */
15
+ function statCapablePersistence(ctx) {
16
+ const persistence = safeGet(ctx, 'sessionPersistence');
17
+ return typeof persistence?.stat === 'function' ? persistence : undefined;
18
+ }
9
19
  /** 模块级函数的动态 import 结果缓存(spec 变量路径绕开本地依赖类型检查) */
10
20
  const moduleCache = new Map();
11
21
  async function importModule(spec, logger) {
@@ -26,6 +36,10 @@ export function createHostAdapter(ctx, logger) {
26
36
  const capabilities = [];
27
37
  // events 读取路径只有运行时才能确定,sessionEvents 内自适应
28
38
  capabilities.push('sessionEvents(s自适应)');
39
+ // 可能在插件启动后才注册,sessionExists/sessionHeader 内每次重新探测;此处仅记录启动时形态
40
+ capabilities.push(statCapablePersistence(ctx)
41
+ ? 'sessionPersistence.stat(可用)'
42
+ : 'sessionPersistence.stat(不可用,会话存在性判定降级)');
29
43
  let resolveFn;
30
44
  const presets = safeGet(ctx, 'agentPresets');
31
45
  if (presets && typeof presets.serviceFor === 'function') {
@@ -66,6 +80,23 @@ export function createHostAdapter(ctx, logger) {
66
80
  globalService(name) {
67
81
  return safeGet(ctx, name);
68
82
  },
83
+ async sessionHeader(sessionId) {
84
+ const persistence = statCapablePersistence(ctx);
85
+ if (!persistence)
86
+ return undefined;
87
+ try {
88
+ return (await persistence.stat(sessionId))?.header;
89
+ }
90
+ catch {
91
+ return undefined; // 读不到 preset 不该阻断会话打开,回落到当前 effective preset
92
+ }
93
+ },
94
+ async sessionExists(sessionId) {
95
+ const persistence = statCapablePersistence(ctx);
96
+ if (!persistence)
97
+ return undefined;
98
+ return (await persistence.stat(sessionId)) !== undefined;
99
+ },
69
100
  async buildForkSeed(events, boundary) {
70
101
  const mod = await importModule('@deepseek-ai/dsh-session/fork', logger);
71
102
  const fn = mod?.buildForkSeed;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/host/adapter.ts"],"names":[],"mappings":";;;;;;;;AA4BA,gDAAgD;AAChD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA+C,CAAC;AAE3E,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,MAAsB;IAC9D,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,GAAwC,CAAC;IAC7C,IAAI,CAAC;QACH,GAAG,GAAG,CAAC,MAAM,MAAM,kCAAC,IAAI,EAAC,CAA4B,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,GAAG,SAAS,CAAC;QAChB,MAAM,EAAE,IAAI,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAY,EAAE,MAAsB;IACpE,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,0CAA0C;IAC1C,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAEzC,IAAI,SAAuF,CAAC;IAC5F,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,CAE9B,CAAC;IACd,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACxD,SAAS,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,UAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9D,YAAY,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IACrD,CAAC;IAED,OAAO;QACL,YAAY;QAEZ,aAAa,CAAC,OAAO;YACnB,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,UAAU;gBAAE,OAAO,OAAO,CAAC,cAAc,EAAE,CAAC;YAClF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI;YAC1B,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBACrC,IAAI,KAAK;wBAAE,OAAO,KAAK,CAAC;gBAC1B,CAAC;gBAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;YAChC,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC;YACzE,MAAM,EAAE,GAAG,GAAG,EAAE,eAEH,CAAC;YACd,IAAI,OAAO,EAAE,KAAK,UAAU;gBAAE,OAAO,SAAS,CAAC;YAC/C,IAAI,CAAC;gBACH,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,aAAa,CAAC,IAAI;YAChB,OAAO,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ;YAClC,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,+BAA+B,EAAE,MAAM,CAAC,CAAC;YACxE,MAAM,EAAE,GAAG,GAAG,EAAE,aAEH,CAAC;YACd,IAAI,OAAO,EAAE,KAAK,UAAU;gBAAE,OAAO,SAAS,CAAC;YAC/C,IAAI,CAAC;gBACH,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,qBAAqB;AACrB,SAAS,OAAO,CAAC,GAAY,EAAE,IAAY;IACzC,IAAI,CAAC;QACH,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAY,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,kBAAkB;AAClB,MAAM,UAAU,kBAAkB;IAChC,WAAW,CAAC,KAAK,EAAE,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/host/adapter.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,13 @@ export declare const DESCRIBE_IMAGE_TOOL_NAME = "qqbot_describe_image";
8
8
  *
9
9
  * 模型配置界面不暴露 `input` 字段,用户通过界面配置的视觉模型默认是纯文本,
10
10
  * 会导致 pi-ai adapter 拒绝图片输入。这里在启动时兜底:未声明 image 时自动补 `[text, image]`。
11
- * 幂等(已声明则跳过),解析/写入失败仅 warn 不阻断启动。
11
+ *
12
+ * 写入遵循与 setup/persist.ts 相同的约束(该文件是宿主用户级配置,多写者共存):
13
+ * - 文档保真:eemeli/yaml Document API 原地编辑,注释/锚点/其他配置原样保留;
14
+ * - 原子写:同目录临时文件 + rename,崩溃不留半份文件;
15
+ * - 乐观校验:写入窗口内文件被外部改动则放弃本次补写(幂等,下次启动再补);
16
+ * - fail-closed:解析失败仅 warn 不阻断启动(视觉功能可另行手动配置)。
17
+ * 幂等:已声明 image 则不写(不触 mtime,不引发宿主重载)。
12
18
  */
13
19
  export declare function ensureVisionInputModal(vision: VisionConfig, logger: Logger): void;
14
20
  /** 注册 qqbot_describe_image 工具(服务缺失时优雅降级,不阻断插件启动) */
@@ -1 +1 @@
1
- {"version":3,"file":"vision-tool.d.ts","sourceRoot":"","sources":["../../src/media/vision-tool.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AASnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AA2B1C,iDAAiD;AACjD,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AA2H/D;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAwCjF;AAED,oDAAoD;AACpD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAqElG"}
1
+ {"version":3,"file":"vision-tool.d.ts","sourceRoot":"","sources":["../../src/media/vision-tool.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AASnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AA2B1C,iDAAiD;AACjD,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AA2H/D;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA4EjF;AAED,oDAAoD;AACpD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAqElG"}
@@ -8,11 +8,11 @@
8
8
  *
9
9
  * 手写 ToolDefinition(标准 JSON Schema),避免引入 dsh-tools 的 8 个 peer 依赖。
10
10
  */
11
- import { existsSync, readFileSync, writeFileSync } from 'node:fs';
11
+ import { existsSync, readFileSync, renameSync, unlinkSync, writeFileSync } from 'node:fs';
12
12
  import { readFile, stat } from 'node:fs/promises';
13
13
  import { homedir } from 'node:os';
14
14
  import { basename, join, resolve } from 'node:path';
15
- import yaml from 'js-yaml';
15
+ import { parseDocument, isMap, isSeq, isScalar } from 'yaml';
16
16
  import { BlockAssembler, createUserMessage } from '@deepseek-ai/dsh-llm';
17
17
  /** 工具名(qqbot 前缀避免与外部 describe-image 包的同名工具冲突) */
18
18
  export const DESCRIBE_IMAGE_TOOL_NAME = 'qqbot_describe_image';
@@ -134,7 +134,13 @@ function resolveDshHome() {
134
134
  *
135
135
  * 模型配置界面不暴露 `input` 字段,用户通过界面配置的视觉模型默认是纯文本,
136
136
  * 会导致 pi-ai adapter 拒绝图片输入。这里在启动时兜底:未声明 image 时自动补 `[text, image]`。
137
- * 幂等(已声明则跳过),解析/写入失败仅 warn 不阻断启动。
137
+ *
138
+ * 写入遵循与 setup/persist.ts 相同的约束(该文件是宿主用户级配置,多写者共存):
139
+ * - 文档保真:eemeli/yaml Document API 原地编辑,注释/锚点/其他配置原样保留;
140
+ * - 原子写:同目录临时文件 + rename,崩溃不留半份文件;
141
+ * - 乐观校验:写入窗口内文件被外部改动则放弃本次补写(幂等,下次启动再补);
142
+ * - fail-closed:解析失败仅 warn 不阻断启动(视觉功能可另行手动配置)。
143
+ * 幂等:已声明 image 则不写(不触 mtime,不引发宿主重载)。
138
144
  */
139
145
  export function ensureVisionInputModal(vision, logger) {
140
146
  if (!vision.enabled || !vision.provider || !vision.model)
@@ -144,28 +150,67 @@ export function ensureVisionInputModal(vision, logger) {
144
150
  if (!existsSync(settingsPath))
145
151
  return;
146
152
  // YAML 禁止 tab 缩进(配置界面/编辑器可能写入),读入时把行首 tab 规范化为空格
147
- const raw = readFileSync(settingsPath, 'utf8');
148
- const normalized = raw.replace(/^\t+/gm, (tabs) => ' '.repeat(tabs.length));
149
- const doc = yaml.load(normalized);
150
- if (doc === null || typeof doc !== 'object')
153
+ const before = readFileSync(settingsPath, 'utf8');
154
+ const normalized = before.replace(/^\t+/gm, (tabs) => ' '.repeat(tabs.length));
155
+ // intAsBigInt:整数不经 double 中转,避免回写时把用户其他配置里的大整数
156
+ // (安装 id、时间戳等)截断到 2^53 精度
157
+ const doc = parseDocument(normalized, { intAsBigInt: true });
158
+ if (doc.errors.length > 0)
159
+ throw new Error(`settings.yaml 解析失败: ${doc.errors[0]?.message ?? 'unknown'}`);
160
+ const root = doc.contents;
161
+ if (!isMap(root))
162
+ throw new Error('settings.yaml 顶层不是映射');
163
+ // 逐层定位 llm-pi-ai.providers.{provider}.models(原地遍历,保留原文)
164
+ const piAi = root.get('llm-pi-ai', true);
165
+ if (!isMap(piAi)) {
166
+ logger.warn(`im-qqbot: settings.yaml 未找到 llm-pi-ai,请手动确认 vision 模型已声明 image 输入`);
167
+ return;
168
+ }
169
+ const providers = piAi.get('providers', true);
170
+ if (!isMap(providers)) {
171
+ logger.warn(`im-qqbot: settings.yaml 未找到 llm-pi-ai.providers.${vision.provider},请手动确认 vision 模型已声明 image 输入`);
151
172
  return;
152
- const piAi = doc['llm-pi-ai'];
153
- const provider = piAi?.providers?.[vision.provider];
154
- const models = provider?.models;
155
- if (!Array.isArray(models)) {
173
+ }
174
+ const provider = providers.get(vision.provider, true);
175
+ if (!isMap(provider)) {
176
+ logger.warn(`im-qqbot: settings.yaml 未找到 llm-pi-ai.providers.${vision.provider},请手动确认 vision 模型已声明 image 输入`);
177
+ return;
178
+ }
179
+ const models = provider.get('models', true);
180
+ if (!isSeq(models)) {
156
181
  logger.warn(`im-qqbot: settings.yaml 未找到 llm-pi-ai.providers.${vision.provider}.models,请手动确认 vision 模型已声明 image 输入`);
157
182
  return;
158
183
  }
159
- const model = models.find((m) => typeof m === 'object' && m !== null && m.id === vision.model);
160
- if (model === undefined) {
184
+ const model = models.items.find((item) => isMap(item) && isScalar(item.get('id', true)) && String(item.get('id', true)) === vision.model);
185
+ if (model === undefined || !isMap(model)) {
161
186
  logger.warn(`im-qqbot: settings.yaml 未找到 vision 模型 ${vision.model},请手动确认已声明 image 输入`);
162
187
  return;
163
188
  }
164
- const input = model.input;
165
- if (Array.isArray(input) && input.includes('image'))
166
- return; // 已声明,幂等跳过
167
- model.input = ['text', 'image'];
168
- writeFileSync(settingsPath, yaml.dump(doc), 'utf8');
189
+ // 幂等:已声明 image 则不写(不触 mtime)
190
+ const input = model.get('input', true);
191
+ if (isSeq(input) && input.items.some((i) => isScalar(i) && i.value === 'image'))
192
+ return;
193
+ // 原地补写 input: [text, image],其余内容(注释/锚点/格式)原样保留
194
+ model.set('input', ['text', 'image']);
195
+ const next = doc.toString({ lineWidth: 0 });
196
+ // 乐观校验:写入窗口内被外部改动(宿主设置流程)则放弃,下次启动幂等重试
197
+ if (readFileSync(settingsPath, 'utf8') !== before) {
198
+ logger.warn('im-qqbot: settings.yaml 在写入窗口内被外部修改,跳过 vision input 补写(下次启动重试)');
199
+ return;
200
+ }
201
+ // 原子写:同目录临时文件 + rename
202
+ const tmpPath = `${settingsPath}.imqqbot.tmp`;
203
+ try {
204
+ writeFileSync(tmpPath, next, 'utf8');
205
+ renameSync(tmpPath, settingsPath);
206
+ }
207
+ catch (err) {
208
+ try {
209
+ unlinkSync(tmpPath);
210
+ }
211
+ catch { /* 临时文件可能不存在 */ }
212
+ throw err;
213
+ }
169
214
  logger.info(`im-qqbot: 已为 vision 模型补充 input: [text, image] (${vision.provider}/${vision.model})`);
170
215
  }
171
216
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"vision-tool.js","sourceRoot":"","sources":["../../src/media/vision-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vision-tool.js","sourceRoot":"","sources":["../../src/media/vision-tool.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"model-resolver.d.ts","sourceRoot":"","sources":["../../src/model/model-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAUzD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAU;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;gBAG/B,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,aAAa,EACrB,MAAM,CAAC,EAAE,MAAM;IAWjB;;;;OAIG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI7D;;;;;;;;;OASG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAW1D;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAIxD;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIvC;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIxC;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIpD;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAIzD;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIjD;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIrD;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIxC;;;;;OAKG;IACH,cAAc,IAAI,UAAU;IAc5B;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IA+BzC;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAgBzB,OAAO,CAAC,YAAY;IAoBpB,6DAA6D;IAC7D,OAAO,CAAC,UAAU;IASlB,6CAA6C;IAC7C,OAAO,CAAC,aAAa;CAatB"}
1
+ {"version":3,"file":"model-resolver.d.ts","sourceRoot":"","sources":["../../src/model/model-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAUzD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAU;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;gBAG/B,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,aAAa,EACrB,MAAM,CAAC,EAAE,MAAM;IAYjB;;;;OAIG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI7D;;;;;;;;;OASG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAW1D;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAIxD;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIvC;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIxC;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIpD;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAIzD;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIjD;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIrD;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIxC;;;;;OAKG;IACH,cAAc,IAAI,UAAU;IAc5B;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IA+BzC;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAgBzB,OAAO,CAAC,YAAY;IAoBpB,6DAA6D;IAC7D,OAAO,CAAC,UAAU;IASlB,6CAA6C;IAC7C,OAAO,CAAC,aAAa;CAatB"}
@@ -10,7 +10,7 @@ export class ModelResolver {
10
10
  this.ctx = ctx;
11
11
  this.config = config;
12
12
  this.logger = logger;
13
- this.prefs = new PrefsStore(config.debug ? (msg) => this.logger?.debug(msg) : undefined);
13
+ this.prefs = new PrefsStore(config.debug ? (msg) => this.logger?.debug(msg) : undefined, { onError: (msg) => this.logger?.warn(`im-qqbot: ${msg}`) });
14
14
  this.settings = new SettingsReader();
15
15
  }
16
16
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../src/model/model-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../src/model/model-resolver.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import type { ModelRoute } from './types.ts';
2
2
  /** 日志回调(可选) */
3
3
  type DebugFn = (msg: string) => void;
4
+ /** 持久化异常回调(可选,应接 warn 级日志——映射丢失影响会话连续性,需可见) */
5
+ type ErrorFn = (msg: string) => void;
4
6
  export declare class PrefsStore {
5
7
  /** per-peer 模型偏好(内存态) */
6
8
  private overrides;
@@ -8,10 +10,16 @@ export declare class PrefsStore {
8
10
  private sessionIds;
9
11
  /** per-peer preset 偏好(内存态) */
10
12
  private presets;
13
+ /** 本进程显式删除的 key(防止并发合并把删除复活) */
14
+ private deleted;
11
15
  /** 隔离偏好文件路径 */
12
16
  private readonly prefsPath;
13
17
  private readonly debugLog?;
14
- constructor(debugLog?: DebugFn);
18
+ private readonly onError?;
19
+ constructor(debugLog?: DebugFn, options?: {
20
+ path?: string;
21
+ onError?: ErrorFn;
22
+ });
15
23
  getOverride(sessionKey: string): ModelRoute | undefined;
16
24
  setOverride(sessionKey: string, route: ModelRoute): void;
17
25
  clearOverride(sessionKey: string): boolean;
@@ -23,6 +31,19 @@ export declare class PrefsStore {
23
31
  setPreset(sessionKey: string, presetId: string): void;
24
32
  clearPreset(sessionKey: string): boolean;
25
33
  private load;
34
+ /**
35
+ * 读取磁盘当前状态用于合并。
36
+ *
37
+ * 不存在 → null(首次写);损坏(半截 JSON 等)→ 先备份原文件再返回 null:
38
+ * 损坏文件通常只是尾部截断,前面的映射条目往往完好,直接覆盖会把它们一并
39
+ * 丢掉(用户表现为「QQ 里丢上下文」且无从恢复)。备份保留一份人工可救的证据。
40
+ */
41
+ private readDiskState;
42
+ /** 损坏文件只备份一次(避免每次写入都产生新备份),失败不阻断写入 */
43
+ private corruptedBackedUp;
44
+ private backupCorrupted;
45
+ /** 合并内存与磁盘(内存覆盖同 key,磁盘独有的其他写者条目保留,墓碑 key 除外) */
46
+ private mergeDisk;
26
47
  private write;
27
48
  }
28
49
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"prefs-store.d.ts","sourceRoot":"","sources":["../../src/model/prefs-store.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAe;AACf,KAAK,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;AAWrC,qBAAa,UAAU;IACrB,yBAAyB;IACzB,OAAO,CAAC,SAAS,CAAiC;IAClD,0CAA0C;IAC1C,OAAO,CAAC,UAAU,CAA6B;IAC/C,8BAA8B;IAC9B,OAAO,CAAC,OAAO,CAA6B;IAC5C,eAAe;IACf,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAU;gBAExB,QAAQ,CAAC,EAAE,OAAO;IAQ9B,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIvD,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAKxD,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAM1C,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAMxC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIpD,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAKzD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAQ3C,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIjD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKrD,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAQxC,OAAO,CAAC,IAAI;IA+BZ,OAAO,CAAC,KAAK;CAad"}
1
+ {"version":3,"file":"prefs-store.d.ts","sourceRoot":"","sources":["../../src/model/prefs-store.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAe;AACf,KAAK,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;AACrC,+CAA+C;AAC/C,KAAK,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;AAkBrC,qBAAa,UAAU;IACrB,yBAAyB;IACzB,OAAO,CAAC,SAAS,CAAiC;IAClD,0CAA0C;IAC1C,OAAO,CAAC,UAAU,CAA6B;IAC/C,8BAA8B;IAC9B,OAAO,CAAC,OAAO,CAA6B;IAC5C,gCAAgC;IAChC,OAAO,CAAC,OAAO,CAAmF;IAClG,eAAe;IACf,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAU;gBAEvB,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;IAS9E,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIvD,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAMxD,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAS1C,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAMxC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIpD,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAMzD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAW3C,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIjD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMrD,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAWxC,OAAO,CAAC,IAAI;IAmCZ;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAkBrB,sCAAsC;IACtC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe;IAYvB,iDAAiD;IACjD,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,KAAK;CAqBd"}
@@ -2,9 +2,15 @@
2
2
  * PrefsStore — per-peer 会话偏好持久化(模型 + preset)
3
3
  *
4
4
  * 隔离文件 I/O 操作,便于单元测试时 mock。
5
- * 存储路径:~/.dsh-qqbot/model-prefs.json
5
+ * 存储路径:~/.dsh-qqbot/model-prefs.json(全局共享,多实例/多进程共存)。
6
+ *
7
+ * 并发安全(该文件存在多个写者——同进程多 bot 实例、跨进程多 profile):
8
+ * - 原子写:同目录临时文件 + rename,崩溃不留半份文件;
9
+ * - 写前合并:重读磁盘,保留其他写者的条目,内存覆盖同 key(本进程视角权威);
10
+ * - 删除墓碑:本进程显式删除的 key 在合并时压住磁盘旧值,防止「删除被并发写复活」。
6
11
  */
7
- import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
12
+ import { readFileSync, writeFileSync, renameSync, unlinkSync, existsSync, mkdirSync } from 'node:fs';
13
+ import { randomBytes } from 'node:crypto';
8
14
  import { resolve, dirname } from 'node:path';
9
15
  import { PLUGIN_HOME } from "../shared/dirs.js";
10
16
  export class PrefsStore {
@@ -14,12 +20,16 @@ export class PrefsStore {
14
20
  sessionIds = new Map();
15
21
  /** per-peer preset 偏好(内存态) */
16
22
  presets = new Map();
23
+ /** 本进程显式删除的 key(防止并发合并把删除复活) */
24
+ deleted = { overrides: new Set(), sessionIds: new Set(), presets: new Set() };
17
25
  /** 隔离偏好文件路径 */
18
26
  prefsPath;
19
27
  debugLog;
20
- constructor(debugLog) {
21
- this.prefsPath = resolve(PLUGIN_HOME, 'model-prefs.json');
28
+ onError;
29
+ constructor(debugLog, options) {
30
+ this.prefsPath = options?.path ?? resolve(PLUGIN_HOME, 'model-prefs.json');
22
31
  this.debugLog = debugLog;
32
+ this.onError = options?.onError;
23
33
  this.load();
24
34
  }
25
35
  // ── Override 操作 ──
@@ -28,12 +38,15 @@ export class PrefsStore {
28
38
  }
29
39
  setOverride(sessionKey, route) {
30
40
  this.overrides.set(sessionKey, route);
41
+ this.deleted.overrides.delete(sessionKey);
31
42
  this.write();
32
43
  }
33
44
  clearOverride(sessionKey) {
34
45
  const deleted = this.overrides.delete(sessionKey);
35
- if (deleted)
46
+ if (deleted) {
47
+ this.deleted.overrides.add(sessionKey);
36
48
  this.write();
49
+ }
37
50
  return deleted;
38
51
  }
39
52
  hasOverride(sessionKey) {
@@ -45,12 +58,15 @@ export class PrefsStore {
45
58
  }
46
59
  setSessionId(sessionKey, sessionId) {
47
60
  this.sessionIds.set(sessionKey, sessionId);
61
+ this.deleted.sessionIds.delete(sessionKey);
48
62
  this.write();
49
63
  }
50
64
  clearSessionId(sessionKey) {
51
65
  const deleted = this.sessionIds.delete(sessionKey);
52
- if (deleted)
66
+ if (deleted) {
67
+ this.deleted.sessionIds.add(sessionKey);
53
68
  this.write();
69
+ }
54
70
  return deleted;
55
71
  }
56
72
  // ── Preset 操作 ──
@@ -59,12 +75,15 @@ export class PrefsStore {
59
75
  }
60
76
  setPreset(sessionKey, presetId) {
61
77
  this.presets.set(sessionKey, presetId);
78
+ this.deleted.presets.delete(sessionKey);
62
79
  this.write();
63
80
  }
64
81
  clearPreset(sessionKey) {
65
82
  const deleted = this.presets.delete(sessionKey);
66
- if (deleted)
83
+ if (deleted) {
84
+ this.deleted.presets.add(sessionKey);
67
85
  this.write();
86
+ }
68
87
  return deleted;
69
88
  }
70
89
  // ── 私有方法 ──
@@ -97,21 +116,99 @@ export class PrefsStore {
97
116
  }
98
117
  }
99
118
  catch (err) {
100
- this.debugLog?.(`loadPrefs failed: ${err instanceof Error ? err.message : String(err)}`);
119
+ const msg = `loadPrefs failed: ${err instanceof Error ? err.message : String(err)}`;
120
+ // 解析失败(半截 JSON 等)意味着 sessionKey→sessionId 映射丢失,
121
+ // 会话将回退固定 id——影响连续性,必须可见而非仅 debug
122
+ this.onError?.(msg);
123
+ this.debugLog?.(msg);
124
+ }
125
+ }
126
+ /**
127
+ * 读取磁盘当前状态用于合并。
128
+ *
129
+ * 不存在 → null(首次写);损坏(半截 JSON 等)→ 先备份原文件再返回 null:
130
+ * 损坏文件通常只是尾部截断,前面的映射条目往往完好,直接覆盖会把它们一并
131
+ * 丢掉(用户表现为「QQ 里丢上下文」且无从恢复)。备份保留一份人工可救的证据。
132
+ */
133
+ readDiskState() {
134
+ if (!existsSync(this.prefsPath))
135
+ return null;
136
+ let raw;
137
+ try {
138
+ raw = readFileSync(this.prefsPath, 'utf8');
139
+ }
140
+ catch {
141
+ return null; // 读不到(权限/并发删除):按首次写处理,不备份
142
+ }
143
+ try {
144
+ const data = JSON.parse(raw);
145
+ if (typeof data !== 'object' || data === null)
146
+ throw new Error('not an object');
147
+ return data;
148
+ }
149
+ catch {
150
+ this.backupCorrupted(raw);
151
+ return null;
152
+ }
153
+ }
154
+ /** 损坏文件只备份一次(避免每次写入都产生新备份),失败不阻断写入 */
155
+ corruptedBackedUp = false;
156
+ backupCorrupted(raw) {
157
+ if (this.corruptedBackedUp)
158
+ return;
159
+ this.corruptedBackedUp = true;
160
+ const backupPath = `${this.prefsPath}.corrupted.${Date.now()}`;
161
+ try {
162
+ writeFileSync(backupPath, raw, 'utf8');
163
+ this.onError?.(`model-prefs.json 损坏,已备份原文件到 ${backupPath}(会话映射可能丢失,可从备份人工恢复)`);
164
+ }
165
+ catch (err) {
166
+ this.onError?.(`model-prefs.json 损坏且备份失败: ${err instanceof Error ? err.message : String(err)}`);
101
167
  }
102
168
  }
169
+ /** 合并内存与磁盘(内存覆盖同 key,磁盘独有的其他写者条目保留,墓碑 key 除外) */
170
+ mergeDisk(disk) {
171
+ const pick = (mem, diskMap, tomb) => {
172
+ const out = Object.fromEntries(mem.entries());
173
+ if (diskMap && typeof diskMap === 'object') {
174
+ for (const [key, value] of Object.entries(diskMap)) {
175
+ if (key in out || tomb.has(key))
176
+ continue;
177
+ out[key] = value;
178
+ }
179
+ }
180
+ return out;
181
+ };
182
+ return {
183
+ overrides: pick(this.overrides, disk?.overrides, this.deleted.overrides),
184
+ sessionIds: pick(this.sessionIds, disk?.sessionIds, this.deleted.sessionIds),
185
+ presets: pick(this.presets, disk?.presets, this.deleted.presets),
186
+ };
187
+ }
103
188
  write() {
104
189
  try {
105
190
  mkdirSync(dirname(this.prefsPath), { recursive: true });
106
- const data = {
107
- overrides: Object.fromEntries(this.overrides.entries()),
108
- sessionIds: Object.fromEntries(this.sessionIds.entries()),
109
- presets: Object.fromEntries(this.presets.entries()),
110
- };
111
- writeFileSync(this.prefsPath, JSON.stringify(data, null, 2), 'utf8');
191
+ const data = this.mergeDisk(this.readDiskState());
192
+ // 原子写:同目录临时文件 + rename(同分区保证原子,崩溃不留半份文件)。
193
+ // tmp 名带进程+随机后缀:跨进程并发写时各自的临时文件互不覆盖,
194
+ // rename 只会带走自己写的那份(固定名会让 A 的 rename 落盘 B 的内容)
195
+ const tmpPath = `${this.prefsPath}.${process.pid}.${randomBytes(4).toString('hex')}.tmp`;
196
+ try {
197
+ writeFileSync(tmpPath, JSON.stringify(data, null, 2), 'utf8');
198
+ renameSync(tmpPath, this.prefsPath);
199
+ }
200
+ catch (err) {
201
+ try {
202
+ unlinkSync(tmpPath);
203
+ }
204
+ catch { /* 临时文件可能不存在 */ }
205
+ throw err;
206
+ }
112
207
  }
113
208
  catch (err) {
114
- this.debugLog?.(`writePrefs failed: ${err instanceof Error ? err.message : String(err)}`);
209
+ const msg = `writePrefs failed: ${err instanceof Error ? err.message : String(err)}`;
210
+ this.onError?.(msg);
211
+ this.debugLog?.(msg);
115
212
  }
116
213
  }
117
214
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prefs-store.js","sourceRoot":"","sources":["../../src/model/prefs-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prefs-store.js","sourceRoot":"","sources":["../../src/model/prefs-store.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,14 @@ import type { DshAgent, DshAgentRegistry, PresetEntry, PresetSwitchOutcome, Sess
9
9
  export declare function latestCompletedPrefixBoundary(events: readonly unknown[]): number | undefined;
10
10
  export declare class SessionManager {
11
11
  private sessions;
12
+ /**
13
+ * 同 key 正在进行的 getOrCreate(singleflight)。
14
+ *
15
+ * 斜杠命令与待答问题截获位于 concurrencyGuard 之前(见 gateway/middleware-setup),
16
+ * 与普通消息不串行:同 key 并发进入会各自 resume/create,产出两个 agent,
17
+ * 后写入 sessions 的覆盖前者且前者无人 dispose(泄漏)。
18
+ */
19
+ private inflight;
12
20
  private readonly evictor;
13
21
  private readonly modelResolver;
14
22
  private readonly ctx;
@@ -85,8 +93,29 @@ export declare class SessionManager {
85
93
  /** 候选命中后落盘,后续永远走 prefs */
86
94
  private persistSessionId;
87
95
  private composePreset;
88
- /** 获取或恢复或创建会话(get → resume → create) */
96
+ /** 获取或恢复或创建会话(get → resume → create);同 key 并发合并为一次 */
89
97
  getOrCreate(scope: ChatScope, peerId: string, senderId: string, replyTarget: ReplyTarget): Promise<SessionRecord>;
98
+ /** getOrCreate 的实际打开流程(已通过 singleflight 保证同 key 串行) */
99
+ private openSession;
100
+ /**
101
+ * resume 失败后是否允许首次创建。
102
+ *
103
+ * 只有「会话确实不在盘上」才可创建:损坏/占用/后端故障沿用同一 id 重建,会把
104
+ * 同一 sessionId 写进多个 project 目录,宿主 `list()` 随后报 duplicate,会话
105
+ * 列表整体打不开(对齐宿主 `restoreOrCreateConfigured` 的 fail-loud 语义)。
106
+ *
107
+ * @returns 允许创建返回 true;拒绝时已记录 warn,调用方应抛出原 resume 错误。
108
+ */
109
+ private mayCreateAfterResumeFailure;
110
+ /**
111
+ * 确认候选会话缺失后决定用哪个 id 新建。
112
+ *
113
+ * - resume 等待期间 prefs 被并发改写(`/new` 换新会话):采用 prefs 的最新 id,
114
+ * 否则内存与 prefs 指向不同会话,重启后用户被切走;
115
+ * - 候选来自 0.5.x 确定性派生:一律铸造新 id,确定性 id 不进入新建路径;
116
+ * - 候选来自 prefs 且确认缺失:沿用该 id 新建,prefs 无需改写。
117
+ */
118
+ private resolveCreateId;
90
119
  findBySessionId(sessionId: string): SessionRecord | undefined;
91
120
  findByAgent(agent: DshAgent): SessionRecord | undefined;
92
121
  remove(scope: ChatScope, peerId: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,10 @@
5
5
  * - c2c: peerId = senderId (用户 openid)
6
6
  * - group: peerId = groupOpenid
7
7
  *
8
- * SessionId 由 sessionKey 确定性派生(SHA-256),
9
- * 保证同一个用户/群的消息始终路由到同一个会话,
10
- * 重启后可根据 key 恢复 session。
8
+ * sessionKey → sessionId 的映射存于 prefs(`model-prefs.json`),新会话 id 由
9
+ * `mintSessionId()` 铸造(`session-` + UUID,与宿主一致)。0.5.x 的 SHA-256 确定性
10
+ * 派生 id 仅用于探测存量会话并迁移,不再用于新建——确定性 id 跨进程必然相同,
11
+ * 两个进程各自新建会把同一 id 写入不同 project 目录。
11
12
  *
12
13
  * 支持 agent-presets 系统:通过 setup hook 在 create/resume 时
13
14
  * 挂载 preset(工具集、prompt sections 等),实现场景化配置。
@@ -53,6 +54,14 @@ export function latestCompletedPrefixBoundary(events) {
53
54
  }
54
55
  export class SessionManager {
55
56
  sessions = new Map();
57
+ /**
58
+ * 同 key 正在进行的 getOrCreate(singleflight)。
59
+ *
60
+ * 斜杠命令与待答问题截获位于 concurrencyGuard 之前(见 gateway/middleware-setup),
61
+ * 与普通消息不串行:同 key 并发进入会各自 resume/create,产出两个 agent,
62
+ * 后写入 sessions 的覆盖前者且前者无人 dispose(泄漏)。
63
+ */
64
+ inflight = new Map();
56
65
  evictor;
57
66
  modelResolver;
58
67
  ctx;
@@ -124,22 +133,7 @@ export class SessionManager {
124
133
  * 读不到(服务缺失 / session 不存在 / 未记录 agentPreset)返回 undefined。
125
134
  */
126
135
  async resolvePersistedPreset(sessionId) {
127
- let persistence;
128
- try {
129
- persistence = this.ctx.get('sessionPersistence');
130
- }
131
- catch {
132
- return undefined;
133
- }
134
- if (!persistence)
135
- return undefined;
136
- try {
137
- const { meta } = await persistence.load(sessionId);
138
- return meta?.agentPreset;
139
- }
140
- catch {
141
- return undefined;
142
- }
136
+ return (await this.host.sessionHeader(sessionId))?.agentPreset;
143
137
  }
144
138
  // ── 模型相关(委托给 ModelResolver) ──
145
139
  getEffectiveModel(scope, peerId) {
@@ -391,7 +385,7 @@ export class SessionManager {
391
385
  return {};
392
386
  }
393
387
  }
394
- /** 获取或恢复或创建会话(get → resume → create) */
388
+ /** 获取或恢复或创建会话(get → resume → create);同 key 并发合并为一次 */
395
389
  async getOrCreate(scope, peerId, senderId, replyTarget) {
396
390
  const key = this.sessionKey(scope, peerId);
397
391
  const existing = this.sessions.get(key);
@@ -400,7 +394,28 @@ export class SessionManager {
400
394
  existing.lastActivity = Date.now();
401
395
  return existing;
402
396
  }
397
+ // singleflight:同 key 并发复用同一次 resume/create,后到者只更新回复目标
398
+ const pending = this.inflight.get(key);
399
+ if (pending) {
400
+ const shared = await pending;
401
+ shared.replyTarget = replyTarget;
402
+ shared.lastActivity = Date.now();
403
+ return shared;
404
+ }
405
+ const task = this.openSession(key, scope, peerId, senderId, replyTarget);
406
+ this.inflight.set(key, task);
407
+ try {
408
+ return await task;
409
+ }
410
+ finally {
411
+ this.inflight.delete(key);
412
+ }
413
+ }
414
+ /** getOrCreate 的实际打开流程(已通过 singleflight 保证同 key 串行) */
415
+ async openSession(key, scope, peerId, senderId, replyTarget) {
403
416
  const route = this.modelResolver.getEffectiveRoute(key);
417
+ // prefs 命中 = 已知存量会话;miss 时取 0.5.x 派生 id 仅作存量探测候选,不用于新建
418
+ const candidateIsLegacy = this.modelResolver.getSessionId(key) === undefined;
404
419
  let sessionId = SessionId(this.currentSessionId(key));
405
420
  this.logger.info(`getOrCreate: key=${key} route=${route ? `${route.provider}/${route.model}` : 'host-default'} sessionId=${sessionId}`);
406
421
  let agent;
@@ -431,13 +446,10 @@ export class SessionManager {
431
446
  this.persistSessionId(key, sessionId);
432
447
  this.logger.info(`resumed session: key=${key} preset=${agentPreset ?? 'none'} route=${resumeRoute ? `${resumeRoute.provider}/${resumeRoute.model}` : 'session-own'}`);
433
448
  }
434
- catch {
435
- // 无存量会话:弃用候选,铸造新 id
436
- if (!this.modelResolver.getSessionId(key)) {
437
- sessionId = SessionId(mintSessionId());
438
- this.modelResolver.setSessionId(key, sessionId);
439
- this.logger.info(`migrated to minted session id: key=${key} sessionId=${sessionId}`);
440
- }
449
+ catch (err) {
450
+ if (!(await this.mayCreateAfterResumeFailure(key, sessionId, err)))
451
+ throw err;
452
+ sessionId = this.resolveCreateId(key, sessionId, candidateIsLegacy);
441
453
  const created = await this.agents.create({
442
454
  sessionId,
443
455
  meta: {
@@ -449,7 +461,8 @@ export class SessionManager {
449
461
  });
450
462
  agent = created.agent;
451
463
  handle = created;
452
- this.logger.info(`created new session: key=${key} preset=${agentPreset ?? 'none'}`);
464
+ this.persistSessionId(key, sessionId);
465
+ this.logger.info(`created new session: key=${key} sessionId=${sessionId} preset=${agentPreset ?? 'none'}`);
453
466
  }
454
467
  }
455
468
  const record = {
@@ -467,6 +480,57 @@ export class SessionManager {
467
480
  this.sessions.set(key, record);
468
481
  return record;
469
482
  }
483
+ /**
484
+ * resume 失败后是否允许首次创建。
485
+ *
486
+ * 只有「会话确实不在盘上」才可创建:损坏/占用/后端故障沿用同一 id 重建,会把
487
+ * 同一 sessionId 写进多个 project 目录,宿主 `list()` 随后报 duplicate,会话
488
+ * 列表整体打不开(对齐宿主 `restoreOrCreateConfigured` 的 fail-loud 语义)。
489
+ *
490
+ * @returns 允许创建返回 true;拒绝时已记录 warn,调用方应抛出原 resume 错误。
491
+ */
492
+ async mayCreateAfterResumeFailure(key, sessionId, resumeError) {
493
+ const context = `key=${key} sessionId=${sessionId} resumeErr=${errorText(resumeError)}`;
494
+ let exists;
495
+ try {
496
+ exists = await this.host.sessionExists(sessionId);
497
+ }
498
+ catch (probeError) {
499
+ // 求证本身失败(持久化后端故障):无法断言不在盘上,按存在处理
500
+ this.logger.warn(`refusing to recreate session, existence unknown: ${context} probeErr=${errorText(probeError)}`);
501
+ return false;
502
+ }
503
+ if (exists === true) {
504
+ this.logger.warn(`refusing to recreate existing session: ${context}`);
505
+ return false;
506
+ }
507
+ if (exists === undefined) {
508
+ // 宿主无 sessionPersistence.stat:没有求证手段,只能按 resume 结果创建(= 修复前行为)
509
+ this.logger.warn(`creating session without existence check (host lacks sessionPersistence.stat): ${context}`);
510
+ }
511
+ return true;
512
+ }
513
+ /**
514
+ * 确认候选会话缺失后决定用哪个 id 新建。
515
+ *
516
+ * - resume 等待期间 prefs 被并发改写(`/new` 换新会话):采用 prefs 的最新 id,
517
+ * 否则内存与 prefs 指向不同会话,重启后用户被切走;
518
+ * - 候选来自 0.5.x 确定性派生:一律铸造新 id,确定性 id 不进入新建路径;
519
+ * - 候选来自 prefs 且确认缺失:沿用该 id 新建,prefs 无需改写。
520
+ */
521
+ resolveCreateId(key, candidate, candidateIsLegacy) {
522
+ const latest = this.modelResolver.getSessionId(key);
523
+ if (latest !== undefined && latest !== candidate) {
524
+ this.logger.info(`adopting concurrently written session id: key=${key} sessionId=${latest}`);
525
+ return SessionId(latest);
526
+ }
527
+ if (candidateIsLegacy) {
528
+ const minted = SessionId(mintSessionId());
529
+ this.logger.info(`migrated to minted session id: key=${key} sessionId=${minted}`);
530
+ return minted;
531
+ }
532
+ return candidate;
533
+ }
470
534
  findBySessionId(sessionId) {
471
535
  for (const record of this.sessions.values()) {
472
536
  if (record.sessionId === sessionId)
@@ -565,6 +629,10 @@ export class SessionManager {
565
629
  return this.sessions.size;
566
630
  }
567
631
  }
632
+ /** 错误文案(日志用) */
633
+ function errorText(err) {
634
+ return err instanceof Error ? err.message : String(err);
635
+ }
568
636
  /** 从消息对象中提取纯文本(用于导出/统计) */
569
637
  function extractMessageText(message) {
570
638
  const blocks = message?.content;
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cxyhhhhh/dsh-qqbot",
3
- "version": "0.5.4-dev.202610301949",
3
+ "version": "0.5.4-dev.202610302202",
4
4
  "icon": "./assets/icons/qq_logo.svg",
5
5
  "description": "在 QQ 私聊和群聊里直接对话 DeepSeek Harness。 Chat with DeepSeek Harness in QQ private and group chats.",
6
6
  "type": "module",