环境变量
一、路径
| 变量 | 默认 | 作用 |
|---|---|---|
DSH_HOME | ~/.dsh | Harness 主目录(凭据、profile、会话、源码) |
DSH_HOME 是单根 Harness home 的解析入口,优先级(高 → 低):显式配置路径 → $DSH_HOME → ~/.dsh;shell 工具每次调用也会收到解析后的绝对 DSH_HOME。
二、行为控制
| 变量 | 默认 | 作用 |
|---|---|---|
DSH_TELEMETRY_DISABLED | 未设置 | 任意非空值(含 0/false)在启动前禁用遥测行 |
DSH_TELEMETRY_OTLP_URL | https://harness-telemetry.deepseeksvc.com/v1/logs | 覆盖遥测 OTLP 上报端点(本地开发用) |
DSH_PERMISSION_MODE | workspace-write | 权限预设进程级 fallback:同时改写沙箱模式与批准策略(danger-full-access → never,否则 → ask) |
DSH_TOOLS_MODE | 未设置(= native) | Code Mode 进程级开关,取值 native / code / both;其它值启动即失败 |
DSH_WEB_URL | — | Web GUI 规范地址(运行时注入,不是用户设置) |
DSH_PERMISSION_MODE与DSH_TOOLS_MODE都是进程级临时开关:前者是组合默认的 fallback(见 权限),后者是 Web/headless 共用的临时 Code Mode 入口,等 Web UI 逐会话接管后会被移除。
三、Provider 凭据
| 变量 | 作用 |
|---|---|
DEEPSEEK_API_KEY | 官方 provider 凭据(也可存 ~/.dsh/.env) |
DEEPSEEK_BASE_URL | 官方端点回退(仅可信层生效) |
DEEPSEEK_SEARCH_BASE_URL | Web 搜索端点覆盖 |
DP_* 等自定义 | 自定义 provider 的 apiKeyEnv 引用 |
真实 Provider 变量以你在
llm-pi-ai.providers/llm-deepseek里配的apiKeyEnv为准(见 多模型)。
四、凭据文件
| 文件 | 内容 | 权限 |
|---|---|---|
~/.dsh/.env | DEEPSEEK_API_KEY=... 等(环境层兜底) | 自管 |
~/.dsh/.credentials.yaml | 结构化凭据 | 0600 |
ctx.credentials 逐操作解析这些,引用密钥而非存值(见 凭据)。解析优先级:进程环境 → .credentials.yaml → 调用目录 .env → $DSH_HOME/.env;受管文档从不物化进 process.env,两个 .env 都是普通启动环境层。
五、运行时注入的 DSH_*(非用户设置)
模型 shell 每次调用都会收到一组由 host/registry 收集的受信任 DSH_* 环境——它们不是你能直接设置的变量,而是运行期注入的事实:
| 变量 | 值 | 谁注入 |
|---|---|---|
DSH_HOME | 解析后的绝对 Harness home | registry 内置 |
DSH_SHELL | 1 | registry 内置,标识受管子进程 |
DSH_SESSION_ID | 当前 agent 会话 id | 仅带 agent 的调用 |
DSH_SESSION_JSONL | 当前会话 JSONL 的绝对路径 | 持久化 seam 提供时 |
DSH_WEB_URL 也由 Web host 的 shell-env contributor 以同样方式注入。整个 DSH_* 命名空间受类型限制,是 shell 工具的受信任 overlay,与普通 env 分开;DSH_HOME/DSH_SHELL/DSH_SESSION_ID 是 registry 保留的内置键,list() 不枚举它们。
六、备注
- 遥测匿名身份:导出记录以
$DSH_HOME/.anonymous-user-id(随机 UUID)作为 Resource 的匿名用户 id;删除该文件即重置身份。