dsh-at-file 使用指南
为 DSH Web 端增加 Codex 风格的 `@` 文件选择器:选择路径后只向模型注入存在性引用,不读取文件内容;内置文件过滤与按工作区隔离的设置项。
本文为派生内容(基于 wiki / faq / compatibility_json 自动组装),非 AI 即时创作。
本文由本站基于该插件已收录的字段自动派生(wiki / faq / compatibility_json / readme),非 AI 即时创作。每节末尾标源字段。
快速上手
dsh-at-file
— 源: plugin_wiki.wiki_content
安装与验证
dsh plugin --profile web add github:omdsh-dev/dsh-at-file
复制以上命令在 DSH Web Profile 内运行。安装完成后在「插件列表」启用即可。
— 源: plugins.install
关键要点
- 全局 保存所有工作区共用的规则。
- 工作区 保存当前所选工作区路径的附加规则。每个工作区都有独立列表,面板中会同时显示该工作区继承的全局规则。
- Exact 匹配一个完整文件名,不接受路径分隔符。
- Regex 使用 JavaScript 正则表达式匹配完整文件名。匹配内容不包含父目录或工作区路径。
- 区分大小写 可以用于任何 Exact 或 Regex 规则,默认关闭。
— 源: plugin_wiki.readme_zh (fallback readme_raw)
常见问题
粘贴进来的 @路径 会被识别吗?
默认不会。插件用 U+2060 不可见字符给粘贴的 @ 打标记,并在 Settings → File mentions 里默认勾选 "Ignore @ mentions in pasted text";如需恢复旧行为,关掉它即可(README.md:25 / src/paste.ts:7)。
插件会把文件内容发送给模型吗?
不会。插件只扫描消息正文里的 @path、校验路径存在于当前工作区,然后把 <workspace-reference path="…" kind="file|directory" /> 这条只含路径和类型的小消息注入到 prompt;文件内容由 agent 自己用当前会话里的 read / read_image 等工具去读取(src/mention.ts:1-8 / README.md:23)。
我能引用工作区之外的文件吗?
不能。Host 在 src/mention.ts:69-74 直接拒绝绝对路径与跳出 cwd 的相对路径(用 path.relative 判定越界即丢弃),所以越界 token 只会原样保留为普通文字。
怎么过滤不想出现在选择器里的文件?
打开 Settings → File mentions:Global 列表是所有工作区共享的基底,Workspace 列表是当前工作区的附加规则;每条规则可独立选 Exact/Regex 与是否区分大小写,Regex 写错时保存前会报错,Host 也会再次拒绝(README.md:60-66 / src/contract.ts:66-79)。
大工作区索引会不会卡死?
默认 maxIndexedFiles=5000,walk 用 opendir 流式逐条读取且不跟随 symlink,超额会立即停止并把 truncated=true 一并返回;用户也可以在 cordis.patch.yml 里把上限调到 10000 等数值(src/files.ts:99-158 / src/index.ts:52)。
PDF 怎么办?
选择器把 PDF 当成普通路径条目,不做特殊处理;模型是否能读取 PDF 取决于当前会话里挂的 agent 工具(DSH 提供 read 处理 UTF-8 文本、read_image 处理支持的图片,PDF 需要额外工具),这是 README.md:98 已声明的边界。
怎么升级到新版本?
重跑同一条安装命令即可(README.md:49 强调更新=重装),然后重启 dsh web,确保 Host 与浏览器都加载新版本;构建产物 lib/ 已提交到仓库,不需要从源码再 build。
路径索引每次输入都重算吗?
不会。客户端按 session 缓存索引 30 秒(src/client/source.ts:34 INDEX_TTL_MS),Host 端按 cwd 缓存;filter 变化或连接 reset 会清掉缓存。
— 源: plugin_wiki.faq_json
兼容性
- DSH: 未声明
- Node: 未声明
- Platforms: macOS, Windows, Linux
— 源: plugin_wiki.compatibility_json
踩坑提醒
安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。
— 来源:通用规则