Skip to content

[Windows][CLI/MCP] 默认数据目录与 doctor 报告不一致,未设置 READANY_HOME 时返回空书库 #659

Description

@CL-SC552

环境

ReadAny Desktop:v1.3.5

ReadAny CLI:v0.1.0

Windows 版本:Windows 11 x64

Node.js:v24.13.0

MCP Profile:readonly

ReadAny 实际数据目录:%APPDATA%\com.readany.app

问题描述

在 Windows 上,ReadAny Desktop 中已经存在书籍和标注数据,doctor 也能报告 Windows 数据目录,但通过默认配置启动 CLI/MCP 后,books.list 返回空书库。

进一步检查发现,实际数据访问模块在没有设置 READANY_HOME 时,没有使用 doctor 所报告的 Windows 数据目录,而是使用了不适用于 Windows 的默认目录。

这导致诊断结果与实际读取行为不一致。

复现步骤

在 Windows 版 ReadAny 中添加至少一本书。

确认数据位于:

%APPDATA%\com.readany.app

不设置 READANY_HOME。

使用默认配置启动 readonly MCP:

{
"mcpServers": {
"readany": {
"command": "readany",
"args": [
"mcp",
"serve",
"--profile",
"readonly"
]
}
}
}

调用 books.list。

对比 doctor 报告的数据目录。

实际结果

doctor 能识别或报告 %APPDATA%\com.readany.app;

MCP 可以正常启动并列出工具;

books.list 返回空书库;

ReadAny Desktop 中实际已有书籍;

显式设置 READANY_HOME 后,同一个查询立即能够读取现有书库。

预期结果

Windows 上所有 CLI/MCP 数据访问模块应与 doctor 使用同一套数据目录解析逻辑。

在没有显式设置 READANY_HOME 时,应默认读取:

%APPDATA%\com.readany.app

如果实际目录不存在或无法识别,应返回明确错误或警告,而不是成功启动后静默返回空书库。

已验证的临时解决办法

向 ReadAny MCP 进程显式传入:

READANY_HOME=%APPDATA%\com.readany.app

例如在 Codex 项目级配置中设置对应环境变量。重启客户端后:

books.list 能识别现有书籍;

章节、书签、高亮和阅读位置均可读取;

该变量只影响 ReadAny MCP 进程,不移动或修改桌面端数据。

可能原因

根据实际表现推测,doctor 与数据访问模块可能分别实现了数据目录解析,其中一个使用了 Windows 的 %APPDATA%,另一个仍使用其他平台的默认目录。

这是根据行为作出的推测,尚未确认具体源码位置。

建议

建议:

让 doctor、CLI 工具和 MCP Server 共用同一个数据目录解析函数;

在 doctor --json 中同时输出“检测到的目录”和“运行时实际使用的目录”;

数据库文件不存在时给出警告,避免把错误目录表现为空书库;

在 MCP 启动日志中输出经过隐私处理的数据目录;

增加 Windows 无 READANY_HOME 环境变量的自动化测试。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions