如果你最近在给 DeepSeek Harness 的 Web 界面找「敲个 @ 就能引用工作区文件」的插件,多半会搜到 dsh-at-file。作者 FSMargoo,站内分类落在市场 / 管理,星标 503★,综合分 67.1,周下载量 1,529,许可 MIT,更新放缓——最近一次提交在 36 天前。但真正决定要不要装它的,是它自己 README 最上面那段话。
插件自己先说清楚了
dsh-at-file 的仓库 README 顶部有一条 [!IMPORTANT] 声明:最新官方 DeepSeek Harness 已经内置 @file 与 @session 引用功能,新安装请优先使用官方实现;本插件继续供既有环境使用,后续按 best-effort 随缘维护。站内详情页也把这段声明原样放在最上面。
先把这条摆在开头,是因为它直接改变了答案的形状:对一个全新环境,默认选择应该是官方内置实现,而不是本插件。这不是唱衰它,是它自己写在脸上的定位。
那它为什么还能有 503★、每周上千下载?因为「官方有了」和「已经装好、用顺手了的老环境」是两回事。下面只按可核查的事实拆。
它做的事其实很窄
一句话概括:给 DSH Web 界面加「工作区路径引用」——在输入框里敲 @,搜索当前工作区,插入一个文件或目录路径。
设计取向写在 npm 包自述里:Codex 风格的 @path 引用,只搜索路径,不注入文件内容(without injecting file content)——它交给模型的是「路径」,不是「文件正文」。
从 @ 菜单选中结果后,路径留在你的草稿里,输入框上方的引用栏可以把它打开或移除。每次 Agent 开始一步之前,插件会确认该路径确实位于当前工作区且仍然存在;确认成功后,它会补一条简短的引用消息,形如 <workspace-reference path="docs/spec.pdf" kind="file" />。
这条消息只带两样东西:工作区相对路径与路径类型(file / dir)。插件自己不打开被引用文件,也不列出被引用目录的内容——要不要读、怎么读,取决于当前会话里的 Agent 有没有对应工具。文件格式与大小都不会改变这条流程:PDF 和别的普通工作区文件走的是同一条路径引用。
0.3.0 是行为分水岭
要留意版本。0.3.0 及以后的版本只做路径引用;更早的版本会在提交时读取文件内容,并施加强制文件大小限制。网上那些老教程——「提交时会读文件」「有体积上限」——说的是旧行为,套到新版本上会对不上。
粘贴过来的 @ 默认不生效
默认情况下,粘贴的文字会被当成普通文本。你从别的应用复制一段带 @path 的内容过来,它不会打开选择器、不会出现在引用栏、也不会生成引用标记。想恢复旧行为,需要去 设置 → 文件提及,关掉「忽略粘贴文本中的 @」。
选择器和索引的细节决定手感
- 普通查询按文件名匹配;完整名、前缀、紧凑匹配排在宽松结果之前;
- 空查询时,浅层路径先于深层条目,同深度里目录先于文件;菜单最多暴露 50 个候选;
- 查询里带
/时按路径段顺序匹配,src/view可以命中src/client/view.ts,尾斜杠src/表示在该路径内搜索; - 高亮目录后按
ArrowRight进入,草稿推进为@path/且不带尾随空格,候选菜单保持打开; - 每条结果完整文件名在前、父目录在下;空间够时菜单展开到 537px 设计宽度;重名文件会把父目录并入主标签。
默认索引会跳过版本控制目录、IDE 元数据、依赖树、缓存与构建产物,覆盖常见 IDE 与 JavaScript、Python 输出目录;desktop.ini、Thumbs.db、.DS_Store 默认也排除。
配置只影响索引
配置写进所选 profile 的 cordis.patch.yml,常见路径是 ~/.dsh/profiles/web/cordis.patch.yml:在 dsh-at-file 这条 id 下挂一个 config 字段即可。
两个字段:maxIndexedFiles 是索引工作区条目数的上限;ignoreDirs 会替换内置排除目录名单(不是追加),设成 [] 就是索引所有目录,只有省略该字段才保留内置名单。
路径有明确边界
Host 只接受工作区相对路径,绝对路径和逃出工作区的路径会被忽略;@path token 不能含空白或第二个 @;引用栏只渲染已 settle 索引里确实存在的 token,未知 @text 保持普通文本;选择器索引按会话缓存 30 秒。
那到底要不要装
- 如果你是在搭新环境,官方已经内置
@file/@session,直接用它就行,没必要再叠加一个第三方插件; - 如果你已经装了、习惯了它的选择器手感——
/分段匹配、ArrowRight进目录、内置图标和那套过滤规则——继续用是合理的,它是为既有安装保留的; - 如果你需要它额外的那些细节(Exact / Regex 与大小写开关、
maxIndexedFiles上限、ignoreDirs覆盖),官方内置未必逐条对应,这时它的价值才显出来。
风险侧也要如实说:站内静态扫描把它标为「含敏感能力」(读写 / 删除本地文件,证据是 lib/index.js 里的 opendir 与 stat 调用),尚无人工评估——这不等于「有风险」,也不是「危险」判定。信任档位是「已验证」,本站已在 dsh 0.2.0-rc.2 下真实安装成功(L4 · 真实安装)。装任何插件前,建议先备份 ~/.dsh 配置,出问题好回滚。
总结
它不是「必装」,而是一个定位明确、且自己承认被官方吸收的存量插件。想对照同类插件的中文清单与安装形态,见 DeepSeek Harness Hub 插件清单。
适合与不适合
适合:已经在用它的老环境;需要文件名过滤器的 Exact / Regex 与大小写规则;需要 maxIndexedFiles 控制索引规模;想要「只给路径、不注入正文」这种克制引用方式的人。
不适合:全新搭建、可以直接用官方内置 @file / @session 的环境;把「必须能读 PDF 正文」当硬需求的人(插件不管读取,取决于会话工具);不接受第三方插件触碰本地文件读写的人。
标签:dsh-at-file、DeepSeek Harness、工作区路径引用、插件评测
本文由 DeepSeek Harness Hub 自动整理,数据来源于插件详情页。