Codex 风格的 `@file` 文件引用:输入框里搜索并引用工作区所有格式的文件(.java、.vue、PDF、图片、无扩展名、隐藏文件),无索引上限。dsh-at-file 的替代品。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:hatsuyuki0103/dsh-at-any
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek Harness Web 界面的工作区路径引用插件。在输入框输入 @,可以搜索当前工作区并插入文件或目录路径。
与 dsh-at-file 的区别:索引不再有数量上限(默认收录全部源文件,不截断),所有格式的文件(.java、.vue、.ts、XML、YAML、图片、PDF、无扩展名文件、隐藏文件如 .env 等)都能被 @ 到;产物目录(target/dist/node_modules 等)仍默认跳过。


使用方式
从 @ 菜单选择结果后,路径会保留在输入内容中。输入框上方的引用栏可以打开路径或移除引用。
请检查 @docs/spec.pdf
每次 agent 开始处理前,插件会确认该路径位于当前工作区且仍然存在。确认成功后,插件会补充一条简短的引用消息:
<workspace-reference path="docs/spec.pdf" kind="file" />
引用消息仅包含工作区相对路径和路径类型。插件不会打开引用文件,也不会列出引用目录中的内容。任务需要读取时,由 agent 使用当前会话中可用的工具处理该路径。
文件格式和文件大小不会改变处理流程。PDF 与其他工作区文件使用相同的路径引用机制。
以上机制适用于 0.3.0 及后续版本。早期版本会在提交时读取文件内容,并受文件大小限制。
路径选择器
普通关键词只匹配文件名。完整名称、前缀和紧凑匹配会排在前面,长目录路径中分散的字符不会产生无关结果。
关键词中包含 / 时,选择器会依次匹配路径片段。例如,src/view 可以找到 src/client/view.ts。输入 src/ 也可以搜索该路径下的条目。
高亮目录候选后,按右方向键可以进入该目录。输入内容会推进到 @路径/,末尾不添加空格,候选菜单会继续显示。按回车或使用鼠标选择目录时,仍会完成该目录引用。
候选项优先显示文件名,下方显示父目录。遇到重名文件时,父目录也会写入主标题。内置 SVG 图标可区分目录、源代码、文本、PDF、图片、数据与配置、压缩包以及其他文件。
默认索引会跳过常见的版本控制目录、IDE 元数据、依赖目录、缓存和构建产物。目前涵盖 VS Code、Visual Studio、JetBrains IDE、Fleet、Eclipse、Android 与 Gradle、Xcode、CMake、Flutter、.NET、Unity、Unreal,以及常见的 JavaScript 和 Python 输出目录。desktop.ini、Thumbs.db 和 .DS_Store 这类系统元数据文件也会默认排除。
安装或更新
dsh plugin --profile web add https://github.com/hatsuyuki0103/dsh-at-any/archive/refs/tags/v0.1.0.tar.gz
已有安装也使用这条命令更新。安装完成后重启 dsh web,确保 Host 和浏览器客户端加载 0.1.0。
替换 dsh-at-file:本插件与 dsh-at-file 使用相同的
atFile服务命名空间,二者不能同时启用。升级路径:先移除旧插件(编辑 profile 的package.json,删除"dsh-at-file": "file:..."依赖行,或运行dsh plugin --profile web remove dsh-at-file),再安装本插件并重启dsh web。
文件过滤
在 设置 -> 文件提及 中管理文件名过滤规则。

- 全局 保存所有工作区共用的规则。
- 工作区 保存当前所选工作区路径的附加规则。每个工作区都有独立列表,面板中会同时显示该工作区继承的全局规则。
每条规则可以单独选择匹配方式和大小写设置:
- Exact 匹配一个完整文件名,不接受路径分隔符。
- Regex 使用 JavaScript 正则表达式匹配完整文件名。匹配内容不包含父目录或工作区路径。
- 区分大小写 可以用于任何 Exact 或 Regex 规则,默认关闭。
规则可以逐项添加和删除。无效正则会在保存前显示错误,Host 也会拒绝无效规则。恢复默认值 会重置全局列表,清空工作区规则 只会移除当前工作区的附加项。
设置通过插件自己的 Host 接口保存到 DSH web profile。已有的字符串规则会继续作为不区分大小写的 Exact 规则使用,包括全局列表和工作区列表。修改规则时会清除相关索引缓存,下一次输入 @ 即可使用新规则。
配置
当前配置只影响路径选择器的索引:
maxIndexedFiles索引条目的软上限,默认 1,000,000(实际上不截断)。仅当工作区文件数超过该值时索引才会截断;普通项目不会触发。ignoreDirs替换内置的忽略目录列表。设置为[]时会索引所有目录。
请把完整配置写入所选 profile 的 cordis.patch.yml。常用路径为 ~/.dsh/profiles/web/cordis.patch.yml。
- id: dsh-at-any
config:
maxIndexedFiles: 100000
省略 ignoreDirs 会继续使用内置列表。填写该字段时,请列出所有需要排除的目录名。
路径处理
- 选择器索引当前工作区中的常规文件和目录,并跳过已配置的目录名与符号链接。
- Host 遍历工作区时会合并全局和当前工作区的文件名规则。被过滤的条目不会占用
maxIndexedFiles,也不会发送到浏览器。 - Host 接受工作区相对路径。绝对路径以及越出工作区的路径会被忽略。
- 只有用户输入的文本可以生成引用消息。
- 点击引用路径时会调用 Harness 的
host.openPath端点。 - 每个会话的路径索引缓存 30 秒。
@路径不能包含空白字符或另一个@字符。- 手动输入的路径只要位于工作区且确实存在,仍然可以引用。
当前 agent 可能没有处理某种文件格式的工具。DSH 的 read 用于 UTF-8 文本,read_image 用于支持的图片格式。PDF 的处理能力取决于当前会话提供的工具。
开发
pnpm install
pnpm run check
pnpm run test
pnpm run build
开发环境默认官方 deepseek-ai/deepseek-harness 仓库位于 ../deepseek-harness,与该仓库的默认克隆目录一致。lib/ 中的构建产物会提交到仓库,因此 profile 安装过程无需运行包构建脚本。
License
MIT
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-task-board★ 8296
侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
zhu1090093659/dsh-web#packages/dsh-web-all★ 8296
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。
omdsh-dev/DSH-better-sidebar★ 3968
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。
ccch1mneyyy/dsh-TUI★ 3948
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 3877
右下角常驻的小鲸鱼挂件:余额、今日已用与每轮对话消耗(含峰谷价),余额预警与今日预算的泡泡内容都可编辑;泡泡点击序列模块化自定义,支持并列加权 A/B、随机台词与随机图片;内置 30+ 厂商模板(OpenAI / OpenRouter / Kimi / 硅基流动 / 方舟 / 智谱 / MiniMax 等),按模型查余额与订阅额度;另有任务结束音效、导入音频、自定义角色与资源管理。数据全在本机,无遥测。
Devin-AXIS/deepseek-design#deepseek-idesign★ 1413
可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。