Skip to content

[Bug]: 会话恢复机制导致无限递归创建 recovery 文件,文件名超长溢出 #5940

Description

@hhhh-hua

Version line

v2 — Go rewrite (1.x), main-v2 (active development)

Exact version

1.16.0

What happened?

问题描述

Reasonix 在每次对话交互后,都会自动创建一个新的 recovery 分支文件。这些 recovery 文件会不断嵌套叠加(recovery 套 recovery),最终导致文件名超出 Windows 系统路径长度限制(260 字符),程序无法继续写入,并反复报错。

复现步骤

  1. global workspace 下启动 Reasonix。
  2. 发送任意一条消息,等待 AI 回复。
  3. 观察 sessions/ 文件夹,会发现每次回复都会生成一个新的 -recovery- 文件。
  4. 多次交互后,recovery 文件名不断嵌套叠加,最终触发 Windows 系统错误。

实际结果

  • 每次消息交互生成 1 个或多个 recovery 分支文件。
  • 文件名不断叠加 -recovery- 后缀,如:
    ...-recovery-xxx-recovery-yyy-recovery-zzz-...
  • 最终因文件名/路径超长,Windows 报错:
    The filename, directory name, or volume label syntax is incorrect.

预期结果

正常情况下,recovery 分支应仅在会话文件被外部修改且本地有未保存内容时生成一次,不应在每次正常对话交互时反复触发,更不应递归备份 recovery 文件本身。

环境信息

  • 操作系统:Windows [你的版本,如 Windows 11 22H2]
  • Reasonix 版本:[运行 reasonix --version 获取]
  • 安装方式npm i -g reasonix / 其他方式

完整报错日志


session changed on disk; unsaved local transcript was saved as recovery branch 20260704-164753.986992000-deepseek-v4-flash-recovery-8271e6ff518d8612-recovery-8771b70e4adc500e-recovery-ce8493d9a942cc00-recovery-1bbe5bc45415a143-recovery-0910ac8344c04bdb-recovery-65f08f792bc863f9-recovery-5f4542b0a0754c18

Session belongs to global workspace; switched tab from global workspace to match the saved session.

Session autosave failed: recover stale session snapshot: lock recovery session file: open C:\Users\36029\AppData\Roaming\reasonix\projects\C--Users-36029-AppData-Roaming-reasonix-global-workspace\sessions\20260704-164753.986992000-deepseek-v4-flash-recovery-8271e6ff518d8612-recovery-8771b70e4adc500e-recovery-ce8493d9a942cc00-recovery-1bbe5bc45415a143-recovery-0910ac8344c04bdb-recovery-65f08f792bc863f9-recovery-5f4542b0a0754c18-recovery-0be72b4ff7e15767.jsonl.lock: The filename, directory name, or volume label syntax is incorrect.

Session autosave failed: recover stale session snapshot: lock recovery session file: open C:\Users\36029\AppData\Roaming\reasonix\projects\C--Users-36029-AppData-Roaming-reasonix-global-workspace\sessions\20260704-164753.986992000-deepseek-v4-flash-recovery-8271e6ff518d8612-recovery-8771b70e4adc500e-recovery-ce8493d9a942cc00-recovery-1bbe5bc45415a143-recovery-0910ac8344c04bdb-recovery-65f08f792bc863f9-recovery-5f4542b0a0754c18-recovery-0be72b4ff7e15767.jsonl.lock: The filename, directory name, or volume label syntax is incorrect.

Session autosave failed: recover stale session snapshot: lock recovery session file: open C:\Users\36029\AppData\Roaming\reasonix\projects\C--Users-36029-AppData-Roaming-reasonix-global-workspace\sessions\20260704-164753.986992000-deepseek-v4-flash-recovery-8271e6ff518d8612-recovery-8771b70e4adc500e-recovery-ce8493d9a942cc00-recovery-1bbe5bc45415a143-recovery-0910ac8344c04bdb-recovery-65f08f792bc863f9-recovery-5f4542b0a0754c18-recovery-0be72b4ff7e15767.jsonl.lock: The filename, directory name, or volume label syntax is incorrect.

Steps to reproduce

复现步骤

  1. global workspace 下启动 Reasonix。
  2. 发送任意一条消息,等待 AI 回复。
  3. 观察 sessions/ 文件夹,会发现每次回复都会生成一个新的 -recovery- 文件。
  4. 多次交互后,recovery 文件名不断嵌套叠加,最终触发 Windows 系统错误。

OS / platform

win 11

Relevant logs or output

⚠
session changed on disk; unsaved local transcript was saved as recovery branch 20260704-164753.986992000-deepseek-v4-flash-recovery-8271e6ff518d8612-recovery-8771b70e4adc500e-recovery-ce8493d9a942cc00-recovery-1bbe5bc45415a143-recovery-0910ac8344c04bdb-recovery-65f08f792bc863f9-recovery-5f4542b0a0754c18
⚠
Session belongs to global workspace; switched tab from global workspace to match the saved session.
⚠
Session autosave failed: recover stale session snapshot: lock recovery session file: open C:\Users\36029\AppData\Roaming\reasonix\projects\C--Users-36029-AppData-Roaming-reasonix-global-workspace\sessions\20260704-164753.986992000-deepseek-v4-flash-recovery-8271e6ff518d8612-recovery-8771b70e4adc500e-recovery-ce8493d9a942cc00-recovery-1bbe5bc45415a143-recovery-0910ac8344c04bdb-recovery-65f08f792bc863f9-recovery-5f4542b0a0754c18-recovery-0be72b4ff7e15767.jsonl.lock: The filename, directory name, or volume label syntax is incorrect.
⚠
Session autosave failed: recover stale session snapshot: lock recovery session file: open C:\Users\36029\AppData\Roaming\reasonix\projects\C--Users-36029-AppData-Roaming-reasonix-global-workspace\sessions\20260704-164753.986992000-deepseek-v4-flash-recovery-8271e6ff518d8612-recovery-8771b70e4adc500e-recovery-ce8493d9a942cc00-recovery-1bbe5bc45415a143-recovery-0910ac8344c04bdb-recovery-65f08f792bc863f9-recovery-5f4542b0a0754c18-recovery-0be72b4ff7e15767.jsonl.lock: The filename, directory name, or volume label syntax is incorrect.
⚠
Session autosave failed: recover stale session snapshot: lock recovery session file: open C:\Users\36029\AppData\Roaming\reasonix\projects\C--Users-36029-AppData-Roaming-reasonix-global-workspace\sessions\20260704-164753.986992000-deepseek-v4-flash-recovery-8271e6ff518d8612-recovery-8771b70e4adc500e-recovery-ce8493d9a942cc00-recovery-1bbe5bc45415a143-recovery-0910ac8344c04bdb-recovery-65f08f792bc863f9-recovery-5f4542b0a0754c18-recovery-0be72b4ff7e15767.jsonl.lock: The filename, directory name, or volume label syntax is incorrect.

Metadata

Metadata

Assignees

No one assigned

    Labels

    agentCore agent loop (internal/agent, internal/control)bugSomething isn't workingdata-lossData loss (sessions, config, history)v2Go rewrite (1.x) — main-v2 branch, active developmentwindowsWindows-specific

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions