dsh-anchored-standard context-gate插件源码解析:Harness双路径统一上下文注入控制
dsh-anchored-standard context-gate插件源码解析Harness双路径统一上下文注入控制【免费下载链接】dsh-anchored-standardTwo-phase DeepSeek Harness preset: Minimal-aligned bootstrap, then full Standard tools (Project2 98/99)项目地址: https://gitcode.com/gh_mirrors/ds/dsh-anchored-standarddsh-anchored-standard是一个面向 DeepSeek Harness 的实验性预设项目通过先 Minimal 对齐引导、后 Standard 全量工具的两阶段设计在 Project2 评测中取得 98/99 的成绩。其中context-gate 插件是整个预设的上下文守门人它拦截 Harness 的两条统一注入路径确保会话的首次模型请求不受任何自动注入上下文干扰——这正是锚定 Minimal 轨迹的关键一环。一、为什么需要上下文门禁项目的锚定机制依赖三个杠杆工具 schema、输出预算、注入提醒。实测数据表明技能目录注入在场时锚定完全失效0/9 复现。因此context-gate的设计目标很明确会话未被晋升unpromoted期间首次模型请求必须干净拦截的不是某一个注入来源而是 Harness 的两条统一注入路径本身——这样连未来新增的注入源也天然被覆盖无需维护按来源点名的黑名单 二、总体架构一个插件两条拦截路径插件本体位于 shared/context-gate.mjs诊断名为anchored-context-gate。它的apply(ctx, config)入口注册了三个监听器session/event观察晋升信号、system-prompt/assemble路径 a、agent/pre-step路径 b。路径 asystem-prompt/assemble—— 清空运行时上下文监听系统提示词的组装过程。当会话处于未晋升状态时组装结果的contexts数组被整体置空覆盖整个SystemPrompt.context()家族——沙箱快照、审批策略快照、任何第三方上下文提供者无需逐一枚举门关闭期间循环自身的快照投影因快照从未存在而保持静默晋升后恰好差分注入一条全新的 runtime-context 消息——首轮极简、二轮注入的效果由投影的 diff 机制自然产生插件本身不写任何重注入逻辑。源码见 shared/context-gate.mjs。路径 bagent/pre-step—— 保留claimed 基线剥离一切附加注入前置步骤pre-step的瀑布负载中携带了本步骤从收件箱认领claimed的消息批次。门在门控期间的规则是消息类型是否保留本步骤认领的用户消息、工具结果等 claimed 批次✅ 保留skill-invocation用户主动触发的技能手势allowKinds默认项✅ 保留技能目录、AGENTS.md 摘要、时间/tmux 上下文、hooks、未知第三方插件注入❌ 一律剥离判定不看消息来源身份默认否认而是白名单思维claimed 批次 kind 白名单之外的全部剔除。其中 claimed 消息即使被下游监听器克隆对象引用变化也能通过id匹配识别测试用例专门覆盖了这一点见 test/context-gate.test.mjs。源码见 shared/context-gate.mjs。 一个容易忽略的细节持久历史含压缩摘要从不经过此门——它通过会话表面进入请求而非 pre-step 瀑布因此不受影响。三、晋升状态机epoch 感知的相位判断门什么时候开由共享的状态机 shared/compaction-epoch.mjs 决定核心函数createEpochPromotion的语义是晋升信号会话日志中首次出现持久的tool/call和/或assistant/message事件由promoteOn配置选择默认either即先到先晋升压缩边界compaction/end事件会把边界重置到该 seq 并撤销晋升——压缩后的一次请求本质上是第二次首请求门会重新关闭直到边界之后再次出现晋升信号断点续跑安全相位完全由持久事件派生冷启动时扫描一次会话日志即可重建resume / reload 后状态不丢失兼容旧版session.events与新版snapshotEvents()两种接口。增量更新逻辑见 shared/compaction-epoch.mjs。四、配置项与挂载要点插件只接受 4 个配置键未知键在预设挂载时即报错拼写错误无处隐藏键默认值含义promoteOneither晋升触发either/tool-call/assistant-messageincludeSubagentsfalse是否对子代理subagent同样执行门控enabledtruefalse时两条拦截路径同时关闭可做 A/B 对照allowKinds[skill-invocation]kind 白名单显式写[]表示只保留 claimed 批次挂载顺序是硬约束context-gate必须作为agent.cordis.yml的第一行。因为瀑布式的 after-next 变换按注册顺序的逆序应用只有最先注册加上 pre-step 监听器的prepend: true门才能成为最外层变换——后续任何插件都无法绕过它重新注入。以基础模式为例- id: context-gate name: ./context-gate.mjs config: promoteOn: either includeSubagents: true allowKinds: [skill-invocation]完整配置见 preset/agent.cordis.yml。容错设计两条过滤逻辑自身失败时一律降级为保留全部——门禁的 bug 绝不能吃掉用户上下文同时仅对监听器自身逻辑做 try/catch 保护下游错误照常传播。五、哪些预设挂载了 context-gate由 scripts/sync-modes.mjs 保证shared/是共享插件的唯一事实源各模式目录内的副本是物化生成并提交的保证每个模式目录自包含、可单独安装模式目录promoteOn说明preset/either基础模式锚定核心zero-anchored-standard/assistant-message零工具锚定回合变体whoami-standard/assistant-message你是谁自我介绍锚定变体prefab/either预制会话模式随种子已晋升六、测试与验证完整的零依赖测试套件位于 test/context-gate.test.mjs覆盖未晋升/已晋升两种相位下的两条路径行为、克隆消息识别、压缩边界重新关门、子代理默认跳过与includeSubagents: true的完整门控、enabled: false全关、allowKinds的各种取值、以及全部非法配置在 apply 时抛错。运行方式npm test结语context-gate用不到两百行代码回答了一个关键问题如何在不枚举任何注入来源的前提下保证首次请求的洁净度。答案就是拦截统一路径 基线白名单 epoch 感知状态机三件套。这套首轮极简、二轮全量的注入控制模式也使其可脱离 anchored 预设、被其他需要统一注入控制的 Harness 组合单独复用 插件源码shared/context-gate.mjs晋升状态机shared/compaction-epoch.mjs挂载配置preset/agent.cordis.yml测试用例test/context-gate.test.mjs【免费下载链接】dsh-anchored-standardTwo-phase DeepSeek Harness preset: Minimal-aligned bootstrap, then full Standard tools (Project2 98/99)项目地址: https://gitcode.com/gh_mirrors/ds/dsh-anchored-standard创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考