dsh-context-imports:在会话启动时注入 AGENTS.md 引用的文件

前言

DeepSeek Harness 的 stock agent-instructions 插件会注入 AGENTS.md 文件本身,但文件内的 @path 引用保持为纯文本,模型无法读取。dsh-context-imports 解决了这个问题。它像 Claude Code 一样读取引用文件并将其内容注入到会话上下文中。

安装

使用官方命令安装该插件。

dsh plugin --profile web add dsh-context-imports

安装后无需额外配置即可使用,它会默认扫描 AGENTS.md 和 CLAUDE.md。

核心功能

该插件主要提供以下能力:

  1. 递归展开导入:支持 @path 语法的递归展开,能够处理嵌套引用。
  2. 自动触发时机:在新建会话、恢复会话、清空会话以及会话压缩后自动执行注入。
  3. 历史记录管理:保持活动历史中恰好存在一个注入内容。当压缩操作移除该内容后,下一次会话启动会重新注入。
  4. 字节数预算:限制单个文件和总注入内容的字节数,超限文件会被截断并附带提示。
  5. 多语言设置卡片:在插件配置中提供中、英、日、法、俄、韩六种语言的设置界面。
  6. 官方 API:仅使用 DeepSeek Harness 的官方 API 表面,无 feature-plugin 依赖。

工作原理

插件在会话启动(startup / resume / clear / compact)时记录场景,并在每次步骤前(pre-step)决定是否注入。其处理流程如下:

  1. 扫描指令文件(默认为 AGENTS.md、CLAUDE.md),查找 @path 引用。
  2. 解析相对路径(相对于导入文件的目录),跳过围栏代码块,要求路径必须包含文件扩展名。
  3. 合并显式注入列表(通过 files 配置)和扫描到的导入列表。
  4. 应用字节数预算限制(默认每文件 64KB,总计 128KB)。
  5. 生成 <system-reminder> 消息,包含 <file path="..."> 块,并追加到会话消息末尾。

配置项

在设置中可以调整以下参数:

配置项 默认值 说明
files [] 额外要注入的文件,支持相对路径或绝对路径
scanImports true 是否扫描 AGENTS.md 和其他指令文件中的 @imports
instructionFiles ["AGENTS.md", "CLAUDE.md"] 要扫描的文件列表,这些文件本身不会被重新注入
maxDepth 3 嵌套导入的最大递归深度
maxFileBytes 65536 单个文件的大小限制(字节),超出则截断
maxTotalBytes 131072 总注入内容的字节限制,超出则跳过文件
injectOn all four 触发注入的会话场景(新建、恢复、清空、压缩)
template "" 自定义包裹文本,使用 {{content}} 标记文件内容位置

典型用法

  • 相对路径解析:如果在 AGENTS.md 中引用 @docs/architecture.md,路径将相对于 AGENTS.md 所在目录解析。
  • 消息格式:注入的内容是一个 <system-reminder> 标签,内部包含 <file path="..."> 块,除此之外没有其他内容。
  • 模板自定义:如果需要添加额外的说明文字,可以在设置中配置 template,并在其中使用 {{content}} 占位符。

注意事项

  • 缺失文件:引用的文件如果不存在,会被记录为一条单行注释,而不是导致插件报错。
  • 代码块跳过:被围栏代码块包裹的路径会被跳过,且路径必须包含文件扩展名。
  • AGENTS.md 来源:AGENTS.md 文件本身由 stock agent-instructions 插件注入,此插件只处理其内部的引用。
  • 依赖关系:插件不依赖其他 feature-plugin。

总结

dsh-context-imports 通过解析 AGENTS.md 和 CLAUDE.md 中的 @path 引用,解决了模型无法读取引用文件内容的问题。它支持递归导入、预算控制和多语言配置,适合需要将文档结构化注入上下文的场景。

  • 维护者:ciskonc
  • 许可证:MIT
  • 源码地址:GitHub
  • 插件目录:SkillHub
羽毛球分组比赛记分
小程序二维码

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

小夜