dsh-intake-guard:DSH 材料入口接管与写入闸门

前言

在 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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye