dsh-env-profile:自动探测环境并注入系统提示

前言

在使用 DeepSeek Harness (DSH) 时,如果每次新会话都需要重新确认本地有哪些开发工具、哪些路径是靠谱的、网络延迟如何,会消耗大量 token 并拖慢对话节奏。dsh-env-profile 解决这个问题:它在后台自动探测本地环境,将信息沉淀为跨会话的全局档案,并生成低开销摘要注入每一轮的系统提示中。

插件简介

dsh-env-profile 是一个 DSH 全局经验插件。它负责自动探测本地环境(依赖工具、便捷路径、网络、磁盘),订阅 session/event 折叠每会话统计,沉淀为跨会话的全局档案,并把低开销摘要注入每一轮系统提示。

  • 维护者:Yvesgao
  • 类别:记忆
  • 许可证:MIT
  • 当前状态:骨架期 v0.1

核心功能

该插件提供以下核心能力:

  1. 自动探测本地环境:通过宿主探测(如 where.exe、TCP 建连、磁盘采样)收集工具列表、路径、网络状态和磁盘信息。
  2. 跨会话全局档案沉淀:将探测结果和会话统计存储在 $DSH_HOME/storages/env_profile.json 中,形成持久化的环境记忆。
  3. 低开销摘要注入:将环境摘要以 systemPrompt.section(order 500)的形式注入每轮对话,默认预算硬上限 600 字符。
  4. 按需查询工具:提供 env_profile 工具,支持通过 scope 参数(如 summary/env/sessions/facts/all)查询全量档案。
  5. LLM 自动抽取:自动从会话历史中抽取知识条目(如用户偏好、项目约定),补充到档案中。
  6. 关键工具版本探测:探测 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

验证安装

  1. 检查存储目录:$DSH_HOME/storages/ 下出现 env_profile.json。
  2. 检查系统提示:在任意会话的系统提示尾部查看是否出现 ## Environment profile 段落。
  3. 测试工具:询问“这台机器装了哪些常用工具?”,模型应直接回答,无需现场探测。

工作原理

插件构建了一个完整的闭环架构:

  1. 探测:lib/probes.js 定时或手动触发探测(工具、路径、网络、磁盘),结果存入领域模型。
  2. 存储:lib/store.js 负责内存镜像与持久化,同步写入 JSON 文件,并进行会话镜像剪枝。
  3. 注入:lib/injector.js 将生成的摘要插入系统提示(order 500),控制注入预算。
  4. 查询:lib/tool.js 提供 env_profile 工具,供 LLM 按需查询全量或特定范围数据。

省 Token 机制

  1. 前缀缓存稳定:摘要由 summarize() 生成,排序和格式固定。当档案状态不变时,每轮注入的摘要逐字节相同,DeepSeek 的前缀缓存持续命中,只有尾部变化时才失效。
  2. 注入预算硬上限:默认 600 字符,超限会截断并提示使用工具获取全量,防止经验注入成本反超收益。
  3. 探测零模型成本:所有探测操作(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 消耗。对于需要频繁切换环境或长时间运行会话的开发场景,这是一个实用的辅助工具。

插件目录 | GitHub 仓库

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜