🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

文件面板与引用 lijian-ui/dsh-file-manager

DeepSeek Harness
lijian-ui62 天前有提交已提供中文文档扫描:含敏感能力

侧栏浏览编辑文件,输入框 @ 引用并带行号

29.4/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add lijian-ui/dsh-file-manager
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]—
静态安装检查有提示项,装前建议看一眼 README
数据截至 2026/09/25·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 62 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@lijian-ui/dsh-file-manager(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/22 17:50:25

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 51 处,展示前 37 条)
  • 读取本地文件
    lib/index.js:1271
    canonical = await realpath(root);
  • 读取本地文件
    lib/index.js:1358
    real = await realpath(probe);
  • 读取本地文件
    lib/index.js:1521
    dirents = await readdir(resolved.abs, { withFileTypes: true });
  • 读取本地文件
    lib/index.js:1556
    info = await stat(resolved.abs);
  • 读取本地文件
    lib/index.js:1574
    data = await readFile(resolved.abs);
  • 读取本地文件
    lib/index.js:1592
    if (info.size <= budget) data = await readFile(resolved.abs);
  • 写入本地文件
    lib/index.js:1677
    await mkdir(dirname(resolved.abs), { recursive: true });
  • 写入本地文件
    lib/index.js:1678
    await writeFile(resolved.abs, content, "utf8");
  • 写入本地文件
    lib/index.js:1692
    async rename(root, rel, newName) {
  • 写入本地文件
    lib/index.js:1720
    await rename(resolved.abs, target);
  • 写入本地文件
    lib/index.js:1730
    async mkdir(root, rel) {
  • 写入本地文件
    lib/index.js:1744
    await mkdir(resolved.abs);
  • 删除本地文件
    lib/index.js:1883
    await rm(resolved.abs, {
  • 写入本地文件
    scripts/copy-mermaid.mjs:39
    await mkdir(dirname(target), { recursive: true })
  • 写入本地文件
    scripts/copy-mermaid.mjs:40
    await copyFile(source, target)
  • 读取本地文件
    scripts/copy-mermaid.mjs:41
    const info = await stat(target)
  • 发起网络请求
    src/client/api.ts:19
    response = await fetch(path, {
  • 读取本地文件
    src/host/fs-service.ts:61
    real = await realpath(probe)
  • 读取本地文件
    src/host/fs-service.ts:224
    dirents = await readdir(resolved.abs, { withFileTypes: true })
  • 读取本地文件
    src/host/fs-service.ts:258
    info = await stat(resolved.abs)
  • 读取本地文件
    src/host/fs-service.ts:269
    data = await readFile(resolved.abs)
  • 读取本地文件
    src/host/fs-service.ts:288
    data = await readFile(resolved.abs)
  • 读取本地文件
    src/host/fs-service.ts:328
    info = await stat(resolved.abs)
  • 写入本地文件
    src/host/fs-service.ts:360
    await mkdir(dirname(resolved.abs), { recursive: true })
  • 写入本地文件
    src/host/fs-service.ts:361
    await writeFile(resolved.abs, content, 'utf8')
  • 写入本地文件
    src/host/fs-service.ts:393
    await renameFile(resolved.abs, target)
  • 写入本地文件
    src/host/fs-service.ts:401
    async mkdir(root: string, rel: string): Promise<{ ok: true } | PanelError> {
  • 写入本地文件
    src/host/fs-service.ts:409
    await mkdir(resolved.abs)
  • 写入本地文件
    src/host/fs-service.ts:425
    await writeFile(resolved.abs, '', { flag: 'wx' })
  • 删除本地文件递归
    src/host/fs-service.ts:513
    await rm(resolved.abs, { recursive: true, force: true })
  • 读取本地文件
    src/host/gate.ts:62
    canonical = await realpath(root)
  • 读取本地文件
    src/host/git-service.ts:355
    const real = await realpath(join(repo.repo, p))
  • 读取本地文件
    src/host/office-preview.ts:46
    if (existsSync(vendorPath)) return vendorPath
  • 读取本地文件
    src/host/office-preview.ts:319
    const info = await stat(absPath)
  • 读取本地文件
    src/host/routes.ts:434
    await pipeline(createReadStream(result.abs, range === null ? undefined : { start: range.start, end: range.end }), res)
  • 读取本地文件
    src/host/routes.ts:461
    const [data, info] = await Promise.all([readFile(assetPath), stat(assetPath)])
  • 读取本地文件
    src/host/routes.ts:461
    const [data, info] = await Promise.all([readFile(assetPath), stat(assetPath)])
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-input-trigger@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-settings@deepseek-ai/dsh-subprocess@deepseek-ai/dsh-system-prompt
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 侧栏浏览编辑文件
  • 输入框@引用文件
  • 引用带行号
展开完整介绍(144 字)↓

为 DeepSeek Harness 桌面端(dsh web)开发的插件:聊天区右侧的 Explorer 文件面板 + Preview 预览面板(FileManager 风格,Apache-2.0 参考实现非抄录),以及输入框 @ 引用项目文件(树形多选弹窗 + 输入框内胶囊 + 行号)

README

由 DeepSeek 最新模型翻译生成
dsh-file-manager — DSH Web GUI 右侧文件管理面板 + @ 文件引用 为 DeepSeek Harness 桌面端(dsh web)开发的插件:聊天区右侧的 Explorer 文件面板 + Preview 预览面板(FileManager 风格,Apache-2.0 参考实现非抄录),以及输入框 @ 引用项目文件(树形多选弹窗 + 输入框内胶囊 + 行号)。数据全部来自真实文件系统与真实 git 仓库,无 mock。 功能 右侧面板 - Explorer(最右栏):文件 / 变更 双 tab。 - 文件树:整行点击展开/收起目录、打开文件;顶部文件名搜索(150ms 防抖,点击结果定位到树)。 - Git 变更:读取真实 git status(porcelain v1 -z),支持 stage / unstage / discard(untracked 走删除、tracked 走 restore,批量放弃有确认)。 - 文件树右键菜单:复制路径、复制名称、在文件管理器中显示、用默认应用打开、重命名、新建文件、新建文件夹、删除(二次确认)。 - 拖拽文件行到聊天输入框,即把相对路径插入草稿。
展开完整文档(README 剩余 1 节)
dsh-file-manager — DSH Web GUI 右侧文件管理面板 + @ 文件引用

为 DeepSeek Harness 桌面端(dsh web)开发的插件:聊天区右侧的 Explorer 文件面板 + Preview 预览面板(FileManager 风格,Apache-2.0 参考实现非抄录),以及输入框 @ 引用项目文件(树形多选弹窗 + 输入框内胶囊 + 行号)。数据全部来自真实文件系统与真实 git 仓库,无 mock。

功能

右侧面板

- Explorer(最右栏):文件 / 变更 双 tab。
- 文件树:整行点击展开/收起目录、打开文件;顶部文件名搜索(150ms 防抖,点击结果定位到树)。
- Git 变更:读取真实 git status(porcelain v1 -z),支持 stage / unstage / discard(untracked 走删除、tracked 走 restore,批量放弃有确认)。
- 文件树右键菜单:复制路径、复制名称、在文件管理器中显示、用默认应用打开、重命名、新建文件、新建文件夹、删除(二次确认)。
- 拖拽文件行到聊天输入框,即把相对路径插入草稿。
- Preview(右二栏):多 tab 预览,支持 markdown / html / code / diff / csv / pdf / word / excel / ppt / 图片 / 文本 / url。源码/预览切换、分屏编辑(比例持久化)、保存(mtime 冲突检测)、下载、刷新、中键关闭、右键批量关闭。
- Mermaid 图表:markdown 预览中的 - 明暗主题跟随、偏好按项目隔离持久化、总开关(设置 → Web UI 插件)。

@ 文件引用(重点)

在聊天输入框输入 @ 打开 pi-desktop 风格树形多选弹窗(懒加载目录树 + 文件名搜索 + 复选框多选):

- 选中文件/目录 → 输入框内出现胶囊(绿色 图标 + 文件名 + 行号),引用文字隐藏,发送时才还原为 @相对路径:行号 纯文本发给模型。
- 行号:文件引用自动携带整个文件的行数(@path:1-N);在预览面板选中代码片段再点「添加到对话」,胶囊只携带选中区域的行号(@path:start-end)。
- 胶囊是 dsh 原生引用对象(非文字装饰):Backspace 整删、复制/粘贴保留语义、发送时经插件注册的 file 引用 codec 序列化。
- 目录引用为 @路径/ 纯文本(目录无行号概念)。

安装 sh 从 npm(发布后)
dsh plugin --profile web add @lijian-ui/dsh-file-manager

从仓库直接 link(开发/联调,clone 即可用,lib 已构建入库)
git clone https://github.com/lijian-ui/dsh-file-manager.git
cd dsh-file-manager
dsh plugin --profile web add link:$(pwd)

安装后重启 dsh web,打开项目会话即可看到聊天区右侧面板;在输入框输入 @ 体验文件引用。

桌面壳(dsh-desktop)开发期以本地 symlink 联调:node_modules/@lijian-ui/dsh-file-manager → extensions/file-manager,源码改动后 npm run build 重新生成 lib/,重启 dev 生效。

架构

- host 半区(src/index.ts + src/host/):cordis 插件,经 /filemgr/* HTTP 路由提供目录列举、文件读取(文本 80k 字符上限 / 图片 data URL)、写入(mtime 冲突检测)、文件名搜索、git status / stage / unstage / discard、SSE 变更流;所有操作过工作区门卫(realpath 规范化 + 前缀校验)且仅限 loopback。
- browser 半区(src/client/):框架无关状态核心(store.ts)、拖拽引擎(drag.ts)、DOM 布局控制器(layout.ts,向 shell 三栏 grid 追加面板轨道)、React 组件(explorer / scm / preview / picker)。
- picker/FilePickerModal.tsx — @ 树形多选弹窗(bridge + modal,监听输入框裸 @ 打开)。
- file-source.ts — 注册 file 输入触发 source(仅提供引用 codec,惰性菜单参与者)。
- reference.ts — 引用胶囊插入(slash/input-insert-reference bail,@path:lines 序列化)。
- preview/selection.ts — 预览选区 → 行号区间换算。
- styles/chip.module.css — 胶囊视觉(浅灰圆角 + 绿色 图标,全局覆盖 [data-decoration="chip"])。
- 工作流约定:改插件后必须 npm run build(重生成 lib/)再重启 dev,二者缺一不可。

构建 sh
npm install
npm run build # tsc -b + tsdown → lib/
npm run test # vitest

署名

本项目是 FileManager(iOfficeAI/FileManager,Apache-2.0)右侧面板系统的复刻实现:尺寸、颜色、动效、交互参数来自对 v2.1.53 的实测调研,实现为全新代码,未大段抄录源码。上游版权归 FileManager 项目所有,本项目按 Apache-2.0 约定保留署名。
预览分享卡片长什么样 ↓lijian-ui/dsh-file-manager
分享 · DeepSeek Harness Hub
lijian-ui/dsh-file-manager

侧栏浏览编辑文件,输入框 @ 引用并带行号

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部