前言¶
DeepSeek Harness 在处理长上下文时会对模型输出进行压缩。这种压缩会静默丢弃项目的约定、计划、技术栈决策和当前工作状态,导致模型在后续操作中偏离初衷。针对这个问题,一种经过验证的方案是将这些长期记忆外化到维护文档中,并强制模型在每次操作前读取这些文件,以从文件中重新“脱水”记忆,而不是依赖有损的压缩摘要。
插件介绍¶
dsh-maintainer-doc-guard 是一个 DeepSeek Harness bundle,由 huxin7735-collab 维护。它将长期项目记忆保存在上下文窗口之外,并确保长轮次的回答能够对用户的实际请求负责。该插件通过一套机制,在每次操作前强制模型校准上下文,防止因记忆丢失导致的执行漂移。
核心功能¶
该插件包含五个主要功能模块,以及一个用于文档管理的侧边栏标签页。
-
维护文档提醒
插件注册了一个系统提示词部分 (maintainer-doc-guard)。该部分列出工作区中的维护文档(plan.md, conventions.md, stack.md, state.md, maintainer/README.md),并指示模型在每次操作或思考轮次前阅读相关文档。
相比于在每一步前插入消息,使用系统提示词部分可以避免消息在会话日志中累积,确保指令在每次提示词组装时重新评估。 -
先例门
插件实现了一个tools/pre-execute防守机制。当模型尝试编辑受保护的基础设施区域(如插件、预设、技能)时,该机制会阻止操作,除非会话中已经读取过至少一个具有相同基本名称的先例文件。
这是为了防止模型仅凭记忆编写基础设施代码,从而引入 invented APIs。当操作被阻止时,模型会看到具体的候选文件列表,例如:
Blocked by maintainer-doc-guard: you are about to write "<target>", which lives
in a guarded infrastructure area, but this session has not read any working
"index.js" precedent that shows the real contract.
“相同基本名称”在这里作为“该类文件的工作类比”的代理,而非证明。
-
意图门
插件实现了第二个tools/pre-execute防守机制。先例门负责控制“如何”编写,而意图门负责控制“是否值得”编写。如果一个步骤没有说明其目的,且该步骤包含副作用(如写入文件),意图门会在第一次遇到此类调用时进行拒绝。这迫使模型在执行前明确陈述意图,如果无法陈述,则应停止并询问,而不是盲目执行。 -
目标锚点
插件在系统提示词中添加了一个目标锚点部分。该部分会逐字引用用户的最新指令,并附带明确的优先级规则:- 用户的最新指令(目标锚点内容)
- 模型在上一轮中陈述的计划
- 模型自行发现的线索或分支任务
这确保了在长轮次中,模型不会因为自行推导的分支任务而偏离用户的原始请求。
-
催促阶段
插件在阻断操作前增加了一个更正阶段。它会在模型执行被拒绝的第一次操作时注入一个提醒,而不是直接阻断;在长轮次中触发一次提醒;只有当违规行为重复发生时才会进行阻断。这种设计允许模型在纠正前有机会调整其行为。
配置项¶
插件在 Harness 设置页面提供了若干配置项,用于调整其行为:
docsDir:用于覆盖默认的文档目录.dsh-maintainer-doc-guard/。gate.maxDeniesPerTarget:限制针对同一个目标文件的重复拒绝次数,防止死锁。anchor.order:调整目标锚点在系统提示词组装中的位置。anchor.inSubagents:控制是否在委托的子代理中也启用目标锚点。
注意事项¶
- 环境要求:插件需要 Node.js 版本 20 或更高。
- 内存读取:插件对维护文档的读取是内存中的,基于会话身份进行索引,不会持久化保存。
- 子代理行为:默认情况下,子代理不会接收目标锚点。这是为了保持正确性,因为子代理是由委托消息启动的,而非由用户直接输入,渲染用户最新指令会颠倒优先级规则。如需启用,需设置
anchor.inSubagents: true。 - 许可证:当前未找到该插件的许可证信息。
结语¶
dsh-maintainer-doc-guard 通过强制模型在每次操作前校准维护文档、引用用户最新指令以及引入意图和先例守卫,解决了长上下文压缩导致的记忆丢失和意图漂移问题。对于需要长期维护和复杂迭代的 DeepSeek Harness 工作流,该插件提供了必要的结构化约束。