Files
deepseek-harness/packages/util/paths/README.zh.md
T
Turtle 42e3cceb64 feat(paths): add resolveSessionsRoot as the one shared session-store root
Every surface that persists or lists sessions resolves one directory under
the Harness home, so history is shared across working directories instead
of scattered per project.
2026-07-29 21:14:49 +08:00

29 lines
2.0 KiB
Markdown

# dsh-paths
[English](README.md) | 中文
DeepSeek Harness 用户数据的共享文件系统路径辅助工具。
## DSH 主目录
`resolveDshHome()` 解析 DeepSeek Harness 的单根主目录。优先级从高到低为:显式配置的路径、`$DSH_HOME``~/.dsh`。harness 将所有用户数据保存在同一根目录下。
`dshHomeDisplay()` 以符号方式表示当前根目录,用于面向用户的路径:默认主目录表示为 `~/.dsh`,任何已配置的主目录表示为 `$DSH_HOME`。它绝不会泄露机器的绝对路径。
`DSH_HOME_DIR_NAME` 定义默认用户数据目录名:`.dsh`
`defaultDshHome()` 使用 Node 的平台路径规则,将操作系统主目录与 `.dsh` 拼接,并返回默认 DeepSeek Harness 主目录。
`expandHomePath()` 使用操作系统主目录展开 `~``~/...` 和 Windows 风格的 `~\...` 前缀。它会保留非波浪号路径和 `~user/...` 原样不变。
## 会话存储
`resolveSessionsRoot()` 按与 `resolveDshHome()` 相同的优先级,解析 Harness 主目录下的共享会话存储根目录。`SESSIONS_DIR_NAME` 定义其目录名:`sessions`。每个持久化会话的界面都解析这同一个目录,因此历史记录在各工作目录之间共享,而不是按项目分散;持久化后端仍可在其内部分区。若两个界面解析出不同的根目录,会静默地把同一用户的历史记录拆成互不相交的存储,这正是该位置由此处拥有、而非由各调用方自行拼接的原因。
该包刻意保持规模小且不依赖 harness,以便产品包共享用户数据路径约定,而不必彼此依赖。
## 已知限制与待完成工作
- **展开范围刻意保持狭窄**:只有单独的 `~``~/...``~\...` 使用当前操作系统主目录;`~alice/...` 等指定用户的形式、环境变量和 shell 表达式保持不变。
- **辅助工具不会操作文件系统**:调用方仍负责目录创建、存在性检查、权限,以及对结果路径应用信任策略。