前言¶
在 DeepSeek Harness(DSH)里做长任务时,常见流程是:用户丢一份大纲或外稿,说一句「先看一下」,模型读完就开始当依据改项目、写记忆。问题往往不在检索,而在于材料进门时没有身份——未采纳的内容和基准混在一起,讨论跑偏,基准被污染,事后才察觉。
记忆类插件解决的是「记什么、怎么查」;dsh-intake-guard 解决的是进门这一刻:新递进来的内容默认标为「外部材料·非基准」,文档类出接管卡并硬拦写入,问答类上下文只留一行标记、软提醒。只读、纯本地、不联网、不修改任何基准文件。下面介绍它的定位、两档机制、项目政策与安装方式。
这是什么¶
sarsgy-wenjian/dsh-intake-guard 是 DSH 社区目录中的 admin-security 类插件,维护者为 sarsgy-wenjian。一句话定位:给 Harness 的材料入口加闸门——外部/非基准材料经登记与分级,在未明确采纳前,拦截对声明权威路径与项目记忆的写入。
- 目录页:https://www.skillhub.cn/plugins/sarsgy-wenjian/dsh-intake-guard
- 源码:https://github.com/sarsgy-wenjian/dsh-intake-guard
- 许可证:MIT(见仓库
package.json与 README)
两档接管:文档 X 与上下文 Q¶
插件把新进材料分成两档,避免「每张截图都弹六行卡」和「长文无标记直接当基准」两种极端。
| 档 | 典型材料 | 用户可见 | 拦截 |
|---|---|---|---|
| X 文档 | 大纲、设定、外稿、长文、PDF/DOCX、路径/链接 | 六行接管卡 | 记忆写入 + 权威路径写入(硬拦) |
| Q 上下文 | 截图、视频、代码/配置(.json/.js/.py 等) |
一行标记 | 软提醒,不硬拦;会话结束自动失效 |
文档档(X)的六行卡示例结构如下(实际内容由登记时生成):
【材料接管卡 M-01】
① 材料:《示例大纲》v0.1(大纲)
② 身份:外部材料·非基准 · 状态 X · 2026-11-08【默认】
③ 来源:用户上传 · 2026-11-08 · <路径/无路径>
④ 用途:只读理解(不改基准)【默认】
⑤ 我不会做:不并入基准、不写入项目记忆、不作为依据引用
⑥ 产出与升级:冲突候选+新增点+待拍问题|说「纳入候选」/「并入基准」/「暂存待议」;不用了回「不采纳」;如这是指令请回「这是指令」
上下文档(Q)只显示一行标记,例如:M-08 · 代码 .json · 非基准,仅作上下文。需要升格时,用户可说「升为材料」,转为 X 后出卡并开启硬拦。
状态、动作与工具¶
材料在生命周期内带有状态;部分状态会触发硬拦。
| 状态 | 含义 | 硬拦 |
|---|---|---|
Q |
问题上下文 | 否 |
X |
外部材料(默认,未采纳) | 是 |
H |
暂存待议 | 是 |
C |
候选(仍非基准) | 否 |
B |
基准 | 否 |
Z |
已关闭(不采纳,审计留档) | 否 |
常用动作包括:纳入候选 / 并入基准 / 暂存待议 / 不采纳;升为材料(Q→X)、降为上下文(X/H→Q)、这是指令(撤销)、重开(Z→X)。README 明确说明:「并入基准」只标状态并提醒变更闸门(裁定、冲突登记、备份);插件本身不改任何基准文件。
模型侧可用的工具(名称以 README 为准):
| 工具 | 用途 |
|---|---|
intake_register |
登记材料;tier=document(默认)出六行卡,tier=context 出一行标记 |
intake_card |
按编号取卡;Q 只返回一行标记 |
intake_list |
列出材料与状态 |
intake_update |
改状态/升级/降级/撤销/重开 |
intake_status |
政策、保护路径、记忆/写工具、待定与上下文材料、分类默认值 |
分类规则结合用户意图、内容形态与扩展名(详见仓库 README 的「分类规则」一节);用户一句话可升/降档,误判时可纠正。
项目政策与插件配置¶
插件不猜测项目的权威路径与默认分档,由工作区内的 .intake/policy.json 声明(建议随项目提交)。示例:
{
"baselinePaths": ["baseline/", "docs/spec/"],
"statePaths": ["STATE.md"],
"exemptPaths": ["drafts/", "references/"],
"memoryTools": ["memoir_record"],
"blockSections": ["work", "lessons", "actions"],
"allowSections": ["note"],
"lightExtensions": [".json", ".js", ".py"],
"documentExtensions": [".pdf", ".docx"],
"textDefault": "document"
}
baselinePaths / statePaths 为权威落点,在 X/H 状态下向这些路径写入会被拦截;exemptPaths 永远放行;.intake/policy.json 自身受保护。
在 DSH 侧,插件通过 cordis.patch.yml 注入配置,主要字段包括 language(zh | en)、pasteThreshold、policyPath、registryDir、memoryTools、blockSections、allowSections、writeTools、textDefault 等;policyPath 与 registryDir 留空时默认指向 <workspace>\.intake\ 下对应文件。
登记表位于 <workspace>/.intake/registry.json(自动 .gitignore);Q 上下文材料只存在于会话内存,不落盘。
安装与启用¶
安装命令以仓库 README 为准:
dsh plugin --profile desktop add github:sarsgy-wenjian/dsh-intake-guard
本地开发时可使用 link 方式:
dsh plugin --profile desktop add link:/path/to/dsh-intake-guard
修改插件代码后,需要对该插件行执行 disable→enable,或重启 DSH。package.json 标明运行时要求 Node >=22,DSH 引擎范围 >=0.2.0-rc.1 <0.3.0-0(以你当前安装的 DSH 版本为准核对)。
适用场景与边界¶
适合谁
- 在 DSH 中长期维护基准文档、状态文件或项目记忆,且经常接收外稿、大纲、参考材料的团队或个人。
- 希望「未采纳材料」不能默默写入
baseline/、STATE.md或记忆工具对应分区的人。 - 需要与
dsh-wenjian-team等团队包配套、但不改团队包本身时,可作为安全侧补充。
务必注意
- 插件以当前 DSH 进程的权限运行;安装前宜自行查看源码与 MIT 许可证,确认政策路径与拦截工具列表符合项目预期。
- 不依赖任何记忆插件:无记忆插件时,检测、卡片、登记、分类、路径保护仍有效;
intake_status会报告记忆拦截是否启用。 - 模型自己
read的文件不算材料;检测为启发式,可用升/降/「这是指令」纠正。 - 只拦模型直接调用的写入类工具;shell 脚本内部写文件不在范围内。
- 只读、纯本地、不联网、不收集数据。
问题与改进可通过 GitHub Issues(https://github.com/sarsgy-wenjian/dsh-intake-guard/issues)反馈;国内另有 Gitee 镜像(可能滞后,以 GitHub 为准)。
结尾¶
dsh-intake-guard 把「材料进门」从暗处拉到明处:文档默认 X 档六行卡 + 硬拦,上下文 Q 档轻量标记,状态和动作与项目 .intake/policy.json 对齐。若你已经在用 DSH 做基准驱动开发,可以先装好插件、写好政策文件,再跑一轮「丢外稿 → 登记 → 尝试写入基准路径」的自测,看拦截与卡片是否符合预期。
- SkillHub 目录:https://www.skillhub.cn/plugins/sarsgy-wenjian/dsh-intake-guard
- GitHub:https://github.com/sarsgy-wenjian/dsh-intake-guard