# dsh-context-imports
在会话启动时,把 AGENTS.md 里引用的文件注入模型上下文。
DSH 自带的 agent-instructions 插件会注入 AGENTS.md 本体,但里面的 `@路径` 引用只是普通文本,模型看不到。这个插件按 Claude Code 的方式处理这些引用:把每个被引用的文件读出来,加进会话上下文。
[English](README.md) | 中文
---
## 解决什么问题
| | 没有这个插件 | 装上之后 |
|---|---|---|
| AGENTS.md 本体 | 由官方 agent-instructions 注入 | 仍由它注入,不重复 |
| `@docs/architecture.md` 这类引用 | 普通文本,被忽略 | 文件全文进入上下文 |
| 引用里还有引用 | 没人处理 | 递归展开,深度可控 |
| 上下文压缩之后 | 被引用的文件随历史一起消失 | 自动重新注入 |
| 恢复旧会话 | 可能叠出第二份 | 检测到已有注入就跳过 |
## 工作原理
```text
agent/session-start(新会话 / 恢复 / 清空 / 压缩后)记录场景
agent/pre-step(每一步)决定是否注入
├─ 扫描指令文件(默认 AGENTS.md、CLAUDE.md)里的 @路径 引用
│ ├─ 跳过围栏代码块;路径必须带文件扩展名
│ ├─ 相对路径按引用者所在目录解析
│ └─ 按解析后的路径去重,循环引用不会死循环
├─ 合并显式配置的 files 列表(这些文件注入全文;指令文件只扫描,不会重复注入)
├─ 预算限制:单文件 64 KB(超出就截断并标注),总量 128 KB(放不下的跳过并标注);
│ 文件不存在只记一行提示,不报错
├─ 活跃历史里最多保留一份注入:全量事件日志按指纹扫描,
│ 压缩真的把旧块压掉之后,下一次会话启动会重新注入
└─ 注入内容追加在整条消息序列的末尾,排在 AGENTS.md 和其他上下文之后
```
注入的消息是一个 `