输入框内 session 范围的 @文件/@文件夹提及:Git 感知索引、拖放与粘贴受管上传、经校验的路径标记。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:tipoLi5890/dsh-file-mention
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
English: README.md
提供 DeepSeek Harness (DSH)
Web composer 使用的安全、session-scoped @ 檔案/資料夾提及與檔案拖放。
外掛插入的是輕量路徑參照,不會把檔案內容當附件或直接注入 context。agent step 開始前,Host
會重新驗證每一個路徑並加入只含路徑與類型的 <workspace-reference> marker;agent 再依自己的
工具與任務需要決定是否、如何讀取。
功能
- 檔案與資料夾 — 只打
@就開啟 workspace 清單,繼續輸入 basename 或 path 片段過濾。 - Git-aware index — tracked + untracked/non-ignored;已刪除 tracked path 排除。非 Git workspace 使用有深度/數量限制的 filesystem walk。
- 可控索引 —
.aiinclude可納入 Git 忽略的必要檔案,巢狀規則採 last-match-wins; dirty/mtime 讓變更與最近檔案優先,indexVersion與 workspace watcher 精準失效 cache。 - 快速輸入 — 每個 session 只抓一份 index,具備
warm()、single-flight、30 秒 stale-while-revalidate、Client 本地排序與可選的最近路徑優先。 - 不歧義引用 — pick 保留完整相對路徑;空白路徑使用
@"quoted path"。 - 送出前驗證 —
agent/pre-step驗證 workspace confinement、symlink realpath、存在性與 file/directory 類型,不讀內容。 - 鍵盤完成 — 方向鍵 + Enter 或 Tab,Tab 走 input-trigger controller。
- 受控拖放 — 串流至 temp file 後原子落盤,具單檔/session/global quota、retention、進度與取消; 純圖片仍交給內建圖片列。
- 貼上即上傳 — 貼上非圖片檔案時走同一受控上傳管線,不再落入內建圖片 intake 而失敗;純圖片貼上仍交給內建圖片列。
- 保留游標插入 — 上傳完成的
@路徑透過凍結契約slash/input-insert-text(draftRev CAS 加游標重映射)插入至上傳前記錄的游標位置,失敗時退回附加到結尾。 - Reference Tray — composer 下方以檔案/資料夾卡片呈現引用,可複製、reveal、逐筆移除或 一次清空,保留周圍草稿文字。
- Control Center — 以總覽、索引、上傳、輸出四個分頁取代平面設定表,提供即時 index 診斷、儲存用量、ignore presets、重建索引與清理過期上傳。
- 候選資訊 — 可顯示 changed-file status;瀏覽器本地 recent-path history 讓常用路徑優先, 不會把使用紀錄送到 Host。
- 官方 UI slots — Reference Tray、Control Center 與輸出 companion 都使用支援的 DSH integration points。
- 可選輸出 companion — 只讓 Host 驗證通過的 assistant inline-code path 顯示開啟/reveal 操作, 不使用 MutationObserver。
- 零建置 — 手寫 Host ESM 與 lazy-CJS browser bundle;React 由 DSH Client runtime 提供。
畫面範例
瀏覽工作區檔案與資料夾
篩選並選取檔案
檔案提及設定頁
將本機檔案拖入輸入區
從 Reference Tray 使用受控上傳
安裝
需要相容的 DSH Web profile,並具備 client input-trigger、runtime 與 locale services。
dsh plugin --profile web add github:tipoLi5890/dsh-file-mention
本機開發:
dsh plugin --profile web add link:/絕對路徑/dsh-file-mention
dsh --profile web --dump-config
安裝/更新後請重啟 DSH Web。
使用方式
| 操作 | 結果 |
|---|---|
@ |
開啟淺層優先排序的 workspace 檔案/資料夾清單 |
@readme |
找到 README.md 等 basename 命中 |
@src/ma |
依完整相對路徑搜尋 |
選 src/main.js |
插入 @src/main.js |
選 docs/file with spaces.md |
插入 @"docs/file with spaces.md" |
選 docs/ |
插入 @docs/ |
| 方向鍵 + Tab | 接受目前反白的 files candidate |
| 拖入非圖片檔 | 複製至 managed uploads 並於游標處插入其路徑 |
| 貼上非圖片檔 | 以相同方式上傳並於游標處插入其路徑 |
基於安全邊界,picker 不再提供 @/、@~/、@../ 的 workspace 外瀏覽;Host index root
永遠由指定 session 決定。
運作原理
Host
POST /api/file-mention/index 接受 { "sessionId": "..." }。Host 從 session state
取得 cwd,建立/快取 Git 或 fallback index,只回相對檔案/資料夾 path。
POST /api/file-mention/upload?sessionId=&name= 接受單一 raw file body。Host 依設定檢查單檔、
session 與 global quota,串流至同檔案系統 temp file,再以 no-clobber hard-link 原子完成,回 managed absolute path。
POST /api/file-mention/settings 讀寫 plugin-owned JSON 設定;POST /api/file-mention/status
提供不含路徑明細的 index/storage 統計,POST /api/file-mention/maintenance 可重建指定 session
的 index 或清除超過保留期的 upload;POST /api/file-mention/path-action
只對目前 workspace 或 managed upload 執行 check/reveal,系統程序以 execFile argument array 啟動。
在 agent/pre-step,只掃 direct user mentions。relative path 必須仍位於 session.cwd;
absolute path 只有在 managed upload root 中才會被標記。marker 範例:
<workspace-reference path="src/main.js" kind="file" />
Browser
Browser 註冊 @/files input source;每個 session 抓一次完整但有界的 index,每次按鍵只在
本地排序,pick 回傳純文字 insertion outcome。dirty、mtime 與可選的 browser-local recent
counts 會在相關度同分時優先。
connection reset 會清掉全部 index state。
Capture-phase drag handler 接管含非圖片檔的 drag,使用 XHR streaming body 顯示進度並允許取消;
插入則走 conversation.input.dock 提供的 inputActions.setDraft,不再修改 textarea DOM。
限制
| 限制 | 數值 |
|---|---|
| Index entries | 20,000 |
| 非 Git traversal depth | 32 |
| Client menu rows | 40 |
| Host/Client index freshness | 30 秒 |
| 單一拖入檔案 | 50 MiB |
.aiinclude files |
50 |
| JSON request body | 256 KiB |
| Session upload quota | 250 MiB(可設定) |
| Global upload quota | 2 GiB(可設定) |
| Upload retention | 7 天(可設定) |
Git workspace 遵守 .gitignore。非 Git fallback 跳過 hidden entries、symlink、VCS metadata、
dependencies、cache 與常見 build outputs。
開發與文件
npm run check
不需安裝 dependency,也沒有 build step。詳細文件:
授權
MIT © 2026 dsh-file-mention contributors
链接
同类插件
zhu1090093659/dsh-web-ui#packages/dsh-web-ui-all★ 4634
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。
omdsh-dev/DSH-better-sidebar★ 2203
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。
ccch1mneyyy/dsh-TUI★ 1996
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。
omdsh-dev/dsh-at-file★ 391
Codex 风格的 `@file` 文件引用,输入框里直接搜索并引用工作区文件。
omdsh-dev/dsh-genui★ 223
助手回复内渲染交互式 UI 组件:布局、图表、表单、测验、mermaid、3D 场景与回传事件循环。
huiliyi37/dsh-tianshu-tui★ 215
DeepSeek Harness 的终端 UI(TUI)。