前言¶
在 DeepSeek Harness(DSH)里,每个会话都是「没有记忆」的智能体。新开一条对话,模型不会自动知道你工作区里认知库、工具库怎么命名、哪些目录能改。常见做法是每次在提示词里重复规则,或者指望某条「主会话」——但用户自己建的会话插件注入不进去,规则容易变成两个版本。
dsh-milieu 把「环境 = 信息 + 工具」这套约定写进工作区文件,并在需要时用状态与变更摘要提醒重读。下面介绍它解决什么问题、装好后会改哪些路径,以及预加载会话和重读提示怎么开。
这是什么¶
dsh-milieu 是维护者 sxwpskd 发布的 DSH 工作流类插件(npm 包名 dsh-milieu,当前版本 0.1.0,MIT 许可证)。仓库简介是「dsh-milieu 插件开发仓库」;核心价值用 README 里的一句话概括:让工作区成为新的单位——把协议装进工作区,让 AI 按同一套结构管理工作区,而不是每个会话从零发明目录和流程。
插件以当前 DSH 进程权限读写工作区;安装前建议在 GitHub 上查看源码与 LICENSE,确认符合你的使用场景。
它解决什么问题¶
资料里列出的痛点与对应能力如下:
- 新会话从零开始:提供预加载会话(
preloadSession),在工作区维护一条「已经读过工作区」的会话;默认关闭,因为会真跑一次 agent,消耗 token 并改动会话列表。 - 认知会过期:会话重读机制——工作区变更达到阈值时,客户端按五关判据决定是否弹出「要不要重读」;只提示,不自动重发,改代码、跑脚本不会被打断。
- AI 工作区杂乱无章:情景协议规范三个库(认知
review/、工具tools/、外部external/),并在AGENTS.md托管段与.dsh-milieu/三份文档里固定定义。
核心功能¶
会话开场:补库、写协议、状态与状态页¶
每次会话开场,宿主侧大致做四件事(见 README「它做什么」):
- 补全三个库目录:缺则创建
review/、tools/、external/,只建目录,不铺内容。 - 把协议写进工作区:在
AGENTS.md中仅维护<!-- dsh-milieu:begin … -->到<!-- dsh-milieu:end -->之间的托管段,段外不动;同时写入.dsh-milieu/下的定义、建议、原因三份文件。 - 生成状态文件:扫描工作区,记录变更事件流,供客户端判断是否需要提醒重读。
- 注入状态页:在认知库写入或刷新
review/STATE.md(路径可由statePath配置,默认STATE.md);首装无页时先建带判断段标记的骨架。
为什么写文件而不是只注入提示词? 用户可能自己建会话,插件管不到那条会话,但读同一工作区的 AI 仍能看到 AGENTS.md 与库目录,避免「两个版本的协议」。
预加载会话与重读提示¶
- 预加载:开启
preloadSession后,若没有「已读过」的受管会话则创建并让 agent 真读一次;空白会话补读;已被使用的旧会话转为active后再建干净的新预加载会话。 - 重读提醒:客户端依次判断会话是否受管、是否已弹过、工作区是否变化、变化是否够大、距最后活动是否超过
promptThresholdMs(默认 5 分钟)等,全部通过才弹卡片。 - 重读请求带变更摘要:30 天内使用过的会话可附带「文件名 + 旧→新大小」;超过 30 天则主要提供文件名与索引(认知库最多 20 条等,见
criteria.staleDays/staleMaxReview)。
协议要点(跨会话共用)¶
协议核心:环境 = 信息 + 工具。信息分为认知库与外部库;工具库规范工作流程。完整定义在仓库的 DEFINITION.md,建议与原因见 SUGGESTIONS.md、RATIONALE.md。README 说明:不装插件也可以采用这套协议约定。
运行脉络(30 秒版)¶
安装 → 打开工作区
├─ 会话开场:补三库 → 写协议 → 生成状态文件 → 注入状态页
├─ 切进会话:读状态文件 → 五关判据 → (工作区变了就)弹卡片
└─ 点「重读」:发一条带变更摘要的请求 → 该会话的 AI 重新认识工作区
安装与启用¶
需要 DSH 0.2.x(含 0.2.1 预发布);本包零依赖。装完后完全退出 DSH 再打开。
从 npm(推荐)
dsh plugin --profile desktop add dsh-milieu
Web 版把 desktop 换成 web。也可在 DSH 插件管理器 → 安装 → 填写 dsh-milieu。
从 GitHub
github:sxwpskd/dsh-milieu
钉版本可在 commit 页复制 SHA,写成 github:sxwpskd/dsh-milieu#<sha>。
装好后的建议(README 原文):让 AI 读一下插件说明,调整配置,整理工作区。预加载会话与重读机制依赖阈值配置,一般需要改配置才会按预期启动;preloadSession 默认为 false。
典型用法与配置入口¶
- 安装并重启 DSH 后打开目标工作区,确认
AGENTS.md出现 milieu 托管段、.dsh-milieu/与三库目录(若原先不存在)。 - 在插件配置或补丁层
cordis.patch.yml中按需覆盖DEFAULT_CONFIG(顶层在index.js);判据默认值在criteria.js。常用项包括:
-preloadSession:是否维护预加载会话(默认关)。
-libs.review/libs.tools/libs.external:三库目录名(默认review、tools、external)。
-injectState/injectBudgetKiB:是否注入状态页及预算(默认 true / 128 KiB),超预算则跳过、不截断。
-criteria.structuralThreshold、contentThreshold、promptThresholdMs等:控制何时弹重读卡片(例如默认新增/消失 1 个文件、内容改动 5 个文件、最后活动超过 5 分钟等)。 - 工作区可选
.dsh-milieu.json:可覆盖libs、inventory.excludePaths、changes、criteria等(详见 README 表格)。 - 若启用预加载:认知库需满足 readiness(默认至少 10 个文件且 ≥ 10 KB);全新空工作区会被拦住,避免在尚未建立认知时自动跑 agent。
- 工作区变更后,在界面根据卡片选择「重读」,请求中会带上变更视图摘要。
排查预加载失败时可查看 .dsh-milieu/preload.json;客户端调试可将 criteria.debug 设为 true 在聊天里看一行自报状态。
它会写工作区的哪些地方¶
只维护以下范围(卸载插件不会自动删除,需手动撤销):
| 位置 | 行为 |
|---|---|
AGENTS.md |
仅托管段 |
.dsh-milieu/ |
协议三份 + preload.json 等 |
review/、tools/、external/ |
缺则建目录 |
认知库内 STATE.md |
材料段;只重写 <!-- judgement --> 以下部分 |
另有状态相关写入如 milieu-state.json(见 README「设计纪律」写入面说明)。
适用场景与注意¶
适合谁
- 长期在单一 DSH 工作区里做 agent 开发,希望认知库、工具库、外部材料目录稳定,且任意会话(含用户自建)都能读到同一协议。
- 需要「工作区变了再提醒 AI 重读」,而不是每次改文件就自动打断当前对话。
- 愿意接受插件在工作区落盘协议文件,并可能手动维护
review/等内容。
边界与限制(README「边界与已知限制」)
preloadSession默认关;预加载受认知库 readiness 限制。- 多工作区:
workspaceRoot为空时,仅一个工作区则直接用,多个时取平台顺序第一个;「每个工作区各管各的」尚未完成。 - 无持久日志(规划中);失败只报告、不假装成功,也不拖垮宿主。
- 不做定期整理,只做协议、状态、预加载、重读提示四件事。
DSH 社区插件目录位于独立站点 SkillHub 上的 dsh-milieu 页,与 DeepSeek / 幻方无官方从属关系;生态理念是「一切皆插件」,本文介绍的是社区维护的 dsh-milieu,不是官方内置功能。
结尾¶
dsh-milieu 把「环境 = 信息 + 工具」写进工作区,用状态文件与可选的预加载会话缓解「每条对话从零认知」的问题,并在变更够大时用卡片提示重读。若你要试装,从 npm 或 GitHub 按上文命令安装,读 README 调 preloadSession 与 criteria,再整理三库与认知库规模。