前言¶
在使用 DeepSeek Harness (DSH) 时,如果每次新会话都需要重新确认本地有哪些开发工具、哪些路径是靠谱的、网络延迟如何,会消耗大量 token 并拖慢对话节奏。dsh-env-profile 解决这个问题:它在后台自动探测本地环境,将信息沉淀为跨会话的全局档案,并生成低开销摘要注入每一轮的系统提示中。
插件简介¶
dsh-env-profile 是一个 DSH 全局经验插件。它负责自动探测本地环境(依赖工具、便捷路径、网络、磁盘),订阅 session/event 折叠每会话统计,沉淀为跨会话的全局档案,并把低开销摘要注入每一轮系统提示。
- 维护者:Yvesgao
- 类别:记忆
- 许可证:MIT
- 当前状态:骨架期 v0.1
核心功能¶
该插件提供以下核心能力:
- 自动探测本地环境:通过宿主探测(如
where.exe、TCP 建连、磁盘采样)收集工具列表、路径、网络状态和磁盘信息。 - 跨会话全局档案沉淀:将探测结果和会话统计存储在
$DSH_HOME/storages/env_profile.json中,形成持久化的环境记忆。 - 低开销摘要注入:将环境摘要以
systemPrompt.section(order 500)的形式注入每轮对话,默认预算硬上限 600 字符。 - 按需查询工具:提供
env_profile工具,支持通过scope参数(如summary/env/sessions/facts/all)查询全量档案。 - LLM 自动抽取:自动从会话历史中抽取知识条目(如用户偏好、项目约定),补充到档案中。
- 关键工具版本探测:探测 git/node/npm/pnpm/python 等常用工具的版本和首个 PATH 路径。
安装与启用¶
官方安装¶
直接使用插件仓库安装:
dsh plugin --profile web add dsh-env-profile
安装后重启 dsh web 生效。
本地开发注意事项¶
本地开发时,由于 pnpm 默认建立 junction(符号链接)可能导致 ESM 解析失败,需要使用物理拷贝方式安装:
# 1) 登记依赖
dsh plugin --profile web add "E:\YourPath\dsh-env-profile"
# 2) 物理拷贝替换 junction(关键步骤)
$dst = "$env:USERPROFILE\.dsh\profiles\web\node_modules\dsh-env-profile"
cmd /c rmdir "$dst"
Copy-Item -Recurse "E:\YourPath\dsh-env-profile" "$dst"
# 3) 重启 dsh web
验证安装¶
- 检查存储目录:
$DSH_HOME/storages/下出现env_profile.json。 - 检查系统提示:在任意会话的系统提示尾部查看是否出现
## Environment profile段落。 - 测试工具:询问“这台机器装了哪些常用工具?”,模型应直接回答,无需现场探测。
工作原理¶
插件构建了一个完整的闭环架构:
- 探测:
lib/probes.js定时或手动触发探测(工具、路径、网络、磁盘),结果存入领域模型。 - 存储:
lib/store.js负责内存镜像与持久化,同步写入 JSON 文件,并进行会话镜像剪枝。 - 注入:
lib/injector.js将生成的摘要插入系统提示(order 500),控制注入预算。 - 查询:
lib/tool.js提供env_profile工具,供 LLM 按需查询全量或特定范围数据。
省 Token 机制¶
- 前缀缓存稳定:摘要由
summarize()生成,排序和格式固定。当档案状态不变时,每轮注入的摘要逐字节相同,DeepSeek 的前缀缓存持续命中,只有尾部变化时才失效。 - 注入预算硬上限:默认 600 字符,超限会截断并提示使用工具获取全量,防止经验注入成本反超收益。
- 探测零模型成本:所有探测操作(
where.exe、文件存在性检查、TCP 建连、磁盘读写)均为宿主侧确定性操作,不占用任何 token。
配置项¶
通过覆盖 cordis.patch.yml 中的配置,可以调整插件行为:
- id: env-profile
config:
injectMaxChars: 400 # 注入预算调小
probeIntervalHours: 24 # 探测更懒
networkHost: api.deepseek.com
trackSessions: true
learnEnabled: false # 关闭 LLM 自动抽取(有 token 成本)
learnIntervalTurns: 5 # 每 5 轮抽取一次
learnMaxInputChars: 4000 # 抽取输入上限
典型用法¶
- 查询摘要:在会话中调用工具。
env_profile scope=summary
- 查询全量:
env_profile scope=env/sessions/facts/all
- 刷新探测:强制重新执行探测。
env_profile refresh
注意事项¶
- 仅支持 Windows:当前探测依赖
where.exe和 Windows 环境变量,POSIX 系统暂不支持。 - 单进程写约束:JSON 后端不支持多进程并发写,勿在多个 DSH 进程同时写同一个
DSH_HOME。 - 骨架期状态:目前为 v0.1 骨架期,核心闭环可用,部分功能(如近义合并、Web 设置页)在路线图中。
结语¶
dsh-env-profile 通过“探测-沉淀-注入-查询”的闭环,将环境信息从“每次解释”变为“开局即知”,有效减少了重复探测和重复解释,降低了 token 消耗。对于需要频繁切换环境或长时间运行会话的开发场景,这是一个实用的辅助工具。