前言¶
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。
核心功能¶
该插件主要提供以下能力:
- 递归展开导入:支持
@path语法的递归展开,能够处理嵌套引用。 - 自动触发时机:在新建会话、恢复会话、清空会话以及会话压缩后自动执行注入。
- 历史记录管理:保持活动历史中恰好存在一个注入内容。当压缩操作移除该内容后,下一次会话启动会重新注入。
- 字节数预算:限制单个文件和总注入内容的字节数,超限文件会被截断并附带提示。
- 多语言设置卡片:在插件配置中提供中、英、日、法、俄、韩六种语言的设置界面。
- 官方 API:仅使用 DeepSeek Harness 的官方 API 表面,无 feature-plugin 依赖。
工作原理¶
插件在会话启动(startup / resume / clear / compact)时记录场景,并在每次步骤前(pre-step)决定是否注入。其处理流程如下:
- 扫描指令文件(默认为 AGENTS.md、CLAUDE.md),查找
@path引用。 - 解析相对路径(相对于导入文件的目录),跳过围栏代码块,要求路径必须包含文件扩展名。
- 合并显式注入列表(通过
files配置)和扫描到的导入列表。 - 应用字节数预算限制(默认每文件 64KB,总计 128KB)。
- 生成
<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 引用,解决了模型无法读取引用文件内容的问题。它支持递归导入、预算控制和多语言配置,适合需要将文档结构化注入上下文的场景。