dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
English · 简体中文
把本机文件夹里的**论文(PDF/Word/TXT/MD)与数据(CSV/TSV/Excel)**整理成 Zotero 式数据库, 以 DSH Web 右侧悬浮抽屉形态呈现:右侧看文献、屏幕中间阅读、边读边做笔记、表格即改即存。
shell.overlay,不占用内置 details 席位):
列表 + 分类筛选(全部/论文/数据/笔记),头部「导入」支持选文件夹[支持导入整个文件夹]或单文件导入(可选目标目录,重名自动加时间戳),导入后点击刷新,即可查看。
pdf.js 渲染(多页、可选中文本层)
docx-preview 渲染(保留标题/加粗/表格);老 .doc 提示另存为 .docx同名.notes.md
.bak),
支持排序、搜索、分页、ECharts 图表(柱状/折线/饼图)与列统计;超过 2000 行自动只读
paperpanel_read 读取后讲解/总结client/paperpanel-client.js(CommonJS 单文件)→ scripts/build-client.mjs 生成 client.js;
前端第三方库(JSZip/docx-preview/SheetJS/ECharts/pdf.js)构建时内联,离线可用lib/scan.mjs、lib/read.mjs(纯 Node,零第三方依赖)# 方式一:npm(发布后)
dsh plugin --profile web add dsh-paperpanel
# 方式二:GitHub 源码
dsh plugin --profile web add github:Floatingfur/dsh-paperpanel
# 方式三:本地开发(link)
# 在 web profile 的 package.json dependencies 加 "dsh-paperpanel": "link:<本仓库绝对路径>"
# 并在 dsh.profile.bundles 里加 "dsh-paperpanel",重启 dsh web
安装后重启 dsh web,右侧即出现「数据库」抽屉。
在 cordis.patch.yml 的 config.libraryRoots 里配置扫描根目录(默认示例指向 samples)。
把论文/数据放进这些目录(或其子目录)即可,右侧抽屉点「刷新」后可见;或直接用「导入」按钮搬文件进来。
npm run build:client # 改过 client/ 源码后重新生成 client.js
启动 dsh(自动清理占用 3080 端口的旧实例,避免 EADDRINUSE 多实例冲突):
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\start-dsh.ps1
dsh-paperpanel/
package.json # exports / dsh.bundle / dsh.client
cordis.patch.yml # bundle 插入声明(默认 libraryRoots)
index.mjs # Node half:HTTP 路由 + agent 工具 paperpanel_search / paperpanel_read
lib/scan.mjs # 递归扫描内核
lib/read.mjs # 文本/CSV 预览内核
client/paperpanel-client.js # 客户端源码(右侧抽屉 + 中间阅读窗口)
scripts/build-client.mjs # 免打包器构建(内联 vendor)
scripts/start-dsh.ps1 # 启动脚本(自动清理 3080 端口旧实例)
scripts/vendor/ # 前端第三方库 UMD 单文件(构建时内联进 client.js)
client.js # 构建产物(随插件分发)
samples/ # 冒烟样例
GET /paperpanel/api/roots → { ok, roots }GET /paperpanel/api/manifest → { ok, scannedAt, roots, itemCount, items[] }GET /paperpanel/api/preview?path=… → 文本预览GET /paperpanel/api/file?path=… → 原文件(PDF/Word 渲染、表格工作台读取用)POST /paperpanel/api/import?name=…&dir=… → 导入文件到数据目录(白名单校验)POST /paperpanel/api/save → { path, content, encoding } 写回文件(先备份原文件为 .bak)GET/POST /paperpanel/api/note?path=… → 读取/保存该条目的 .notes.md 笔记paperpanel_search:按标题/路径关键词或类型检索清单。paperpanel_read:读取某条目内容(文本正文 / CSV 表头与行 / PDF 元数据)。details 是 single 席位,本插件刻意不占用;改用 shell.overlay(官方 additive 浮层席位)。inputActions 由会话头按钮桥接进来——无活跃会话时「让 AI 讲解」置灰。原文件.bak。*.notes.md 笔记文件不进入扫描列表,避免污染数据库条目。