Skip to content

[Bug] storages/workspace.json 是内存缓存 —— 外部改文件被静默忽略,无通知、无重载 #473

Closed as not planned

Description

@greyoak111

Bug 5 · storages/workspace.json 是内存缓存 —— 改文件无效、无通知、无重载

严重度:中 —— 外部工具(脚本、CLI、运维)无法安全地修改工作区归属

症状

外部工具(脚本 / CLI / 运维任务)修改 storages/workspace.json 之后,
宿主不认这次修改 —— 无错误、无警告、无日志。读回仍是旧值。
调用方以为成功,实际完全无效。

最小复现(实测)

直接编辑 storages/workspace.json,把一个 sessionId 加入某工作区的 sessionIds
  → 磁盘回读:7 个会话 ✅(写入成功)
  → workspaceRegistry.list() 读回:6 个会话 ❌(仍是旧值)
  → 无任何日志、无任何警告

根因

宿主把工作区记录缓存在内存(workspaceRegistry),
不监听 storages/workspace.json 的文件变化。

文件写入成功,但内存态不被更新,也不会被回写。
(此条未定位到具体源码位置,结论由行为反推 —— 见「实测」。)

期望

  • 要么监听文件变化并重载
  • 要么明确拒绝外部编辑(例如加锁 / 校验 / 文档声明「此文件只允许进程内修改」)
  • 至少:文档里写明它不可外部编辑

现状是最坏的一种:接受写入、静默忽略。

影响面

任何在工作区归属上做外部自动化的人或工具(批量整理、迁移脚本、运维任务)。
现状下这类工具无法安全实现 —— 它们会「成功」,而结果无效。



被测版本:DSH Desktop 0.9.0(内核 @deepseek-ai/* = 0.1.5-rc.2) · macOS / Apple Silicon (arm64)

Activity

  1. yaojin3616 commented on Oct 28, 2026

    @yaojin3616
    Contributor

    这里说明一下:workspace.json 是运行时管理的内部数据,暂不支持在程序运行中直接修改文件并自动重载。这类修改不能作为可靠的工作区管理方式,热加载需求先按不计划支持关闭。谢谢反馈。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions