$DSH_HOME
别名:.dsh、用户数据根、DSH_HOME、harness home
DSH 把所有本机用户数据收在单一根目录下:优先级是「显式配置 > $DSH_HOME 环境变量 > ~/.dsh」,空白的环境变量视为未设置,绝不因此落到当前工作目录。
一句话
DSH 只有一个用户数据根。 会话、profile、技能、预设、凭据、缓存、存储全在它下面,而不是散落在各处。
优先级(高到低)
- 显式配置的路径(调用方传进来的 harness home);
$DSH_HOME环境变量;~/.dsh。
两个细节值得记牢:只有空白的 $DSH_HOME 视为未设置(否则一个空覆盖会把数据根解析成当前工作目录,灾难现场);展开时支持 ~、~/ 与 ~\ 前缀。
做界面显示时有个讲究:解析结果如果等于默认根,显示成 ~/.dsh;否则一律显示成 $DSH_HOME——不把用户的绝对路径印到界面上。
里面装什么(实测本机)
| 目录 / 文件 | 是什么 | 出处 |
|---|---|---|
profiles/<name>/ | 每个 profile 一套插件层栈(见 concept/2) | profile 装载实现 |
skills/ | 用户级技能根(SKILL.md 目录) | @deepseek-ai/dsh-skill-filesystem 的 roots |
.agent-presets/<id>/ | 本地编写的 agent preset,id 即目录名 | @deepseek-ai/dsh-agent-presets 的 USER_PRESET_DIR |
sessions/ | 会话日志 | 会话持久化实现 |
storages/ | 领域存储(实测可见 workspace.json) | @deepseek-ai/dsh-storage-json |
cordis.patch.yml | 机器级用户补丁层,高于每个 profile 自己的层 | @deepseek-ai/dsh 的 homePatchPath |
settings.yaml | 设置文档(实现写法的默认路径,可用配置改) | @deepseek-ai/dsh-settings-file 的 resolveSpec |
与另外两个环境变量别混
DSH_AGENTS_HOME:技能发现的另一个用户级根(默认~/.agents),和$DSH_HOME是两件事;DSH_TELEMETRY_DISABLED:任何非空值(包括0与false)都表示关闭——隐私开关宁可误关不可误开。
未核实 / 未声明
settings.yaml在本机不存在:实测本机数据根下只有.credentials.yaml、dsh-packforge.json等文件,没有settings.yaml。代码里的默认路径是权威事实,但「没有这个文件时设置存在哪」本轮未核实。- 各目录的完整清单未核实:上表只列了实测能看到或代码明确声明的部分。
sessions/的具体布局(目录转义规则、压缩格式)属于会话存储的实现细节,见 tutorial/3 里的相关段落,本轮不做断言。
出处
- 解析规则与显示规则:
@deepseek-ai/dsh-home-paths的lib/index.js(实测所在包版本0.1.0-rc.6)。 - 技能根:
@deepseek-ai/dsh-skill-filesystem的roots()。 - 预设根:
@deepseek-ai/dsh-agent-presets的discovery.js(USER_PRESET_DIR)。 - 设置文件:
@deepseek-ai/dsh-settings-file的resolveSpec。
谁引用了这一条
信息表
- category
- concept.workspace
- layer
- workspace
- spec
- ~/.dsh/profiles/node_modules/@deepseek-ai/dsh-home-paths/lib/index.js(resolveDshHome / dshHomePath / dshHomeDisplay)
- updatedAt
- 2026-10-02
标签:机制、目录、数据
按标签浏览:机制(4)