边读 PDF 边向 AI 追问,高亮截图自动存进笔记
31.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/PhysicalAI-0/dsh-paperforge.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
生态插件
可安装,未声明 dsh 能力
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 35 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-paperforge(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/14 00:17:59
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 58 处,展示前 44 条)
- 读取本地文件lib/index.js:39
return JSON.parse(readFileSync(join(PLUGIN_DIR, "package.json"), "utf8")).version; - 读取本地文件lib/index.js:72
return candidates.find((candidate) => existsSync(candidate)) || candidates[0] || ""; - 读取本地文件lib/index.js:95
return candidates.find((candidate) => candidate === "python" || candidate === "python3" || existsSync(candidate)) || "python"; - 读取本地文件lib/index.js:145
if (!existsSync(paths.highlights)) return []; - 读取本地文件lib/index.js:146
const raw = readFileSync(paths.highlights, "utf8"); - 写入本地文件lib/index.js:158
mkdirSync(paths.dir, { recursive: true }); - 写入本地文件lib/index.js:161
writeFileSync(paths.highlights, JSON.stringify(list, null, 1), "utf8"); - 执行外部命令来自配置/变量lib/index.js:171
execFile( - 读取本地文件lib/index.js:195
if (!existsSync(pdfPath) || !statSync(pdfPath).isFile()) { - 写入本地文件lib/index.js:293
writeFileSync(join(paths.assets, name), buffer); - 写入本地文件lib/index.js:359
mkdirSync(paths.dir, { recursive: true }); - 写入本地文件lib/index.js:380
writeFileSync(store, JSON.stringify(map, null, 2), "utf8"); - 写入本地文件lib/index.js:385
writeFileSync(store, JSON.stringify(map, null, 2), "utf8"); - 写入本地文件lib/notes.js:152
writeFileSync(temp, text, "utf8"); - 写入本地文件lib/notes.js:153
renameSync(temp, file); - 写入本地文件lib/notes.js:162
mkdirSync(paths.assets, { recursive: true }); - 读取本地文件lib/notes.js:163
if (!existsSync(paths.note)) { - 读取本地文件lib/notes.js:168
const current = readFileSync(paths.note, "utf8"); - 读取本地文件lib/notes.js:172
if (!existsSync(backup)) writeFileSync(backup, current, "utf8"); - 写入本地文件lib/notes.js:172
if (!existsSync(backup)) writeFileSync(backup, current, "utf8"); - 读取本地文件lib/notes.js:179
const current = readFileSync(paths.note, "utf8"); - 读取本地文件lib/library.js:15
if (!existsSync(file)) return 0; - 读取本地文件lib/library.js:16
const list = JSON.parse(readFileSync(file, "utf8")); - 读取本地文件lib/library.js:37
entries = readdirSync(dir, { withFileTypes: true }); - 读取本地文件lib/library.js:63
mtime = statSync(path).mtimeMs; - 读取本地文件lib/library.js:72
hasNote: existsSync(paths.note), - 读取本地文件lib/markdown-file.js:52
const stat = statSync(real); - 写入本地文件lib/markdown-file.js:61
writeFileSync(temp, text, "utf8"); - 写入本地文件lib/markdown-file.js:63
chmodSync(temp, statSync(file).mode & 0o7777); - 读取本地文件lib/markdown-file.js:63
chmodSync(temp, statSync(file).mode & 0o7777); - 写入本地文件lib/markdown-file.js:67
renameSync(temp, file); - 读取本地文件lib/markdown-file.js:85
const disk = readFileSync(guard.real, "utf8"); - 写入本地文件lib/markdown-file.js:130
mkdirSync(dir, { recursive: true }); - 读取本地文件lib/markdown-file.js:136
for (let n = 2; existsSync(file); n += 1) file = join(dir, `${base}-${n}.md`); - 写入本地文件lib/markdown-file.js:137
writeFileSync(file, String(content ?? ""), { encoding: "utf8", flag: "wx" }); - 读取本地文件lib/assets.js:25
entries = readdirSync(dir, { withFileTypes: true }); - 读取本地文件lib/assets.js:56
text = readFileSync(file, "utf8"); - 读取本地文件lib/assets.js:85
if (!existsSync(notesRoot)) return result; - 读取本地文件lib/assets.js:89
papers = readdirSync(notesRoot, { withFileTypes: true }); - 读取本地文件lib/assets.js:98
entries = readdirSync(assets, { withFileTypes: true }); - 删除本地文件lib/assets.js:115
unlinkSync(full); - 发起网络请求verify.mjs:100
const response = await logRoute.fetch( - 发起网络请求verify.mjs:118
const response = await clipRoute.fetch( - 发起网络请求verify.mjs:166
const response = await route.fetch(
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 划词高亮
- 划词提问
- 框选截图记笔记
PaperForge — 在 DSH 里锻造你对论文的理解:划词高亮、划词提问(每篇论文一个专属会话)、框选截图记笔记并带反向链接。
README
由 DeepSeek 最新模型翻译生成在 DSH 里读论文:边读、边问、边记
快速开始 ·亮点 · TODO ·开发手册 ·
License: MIT DSH Plugin DSH Repo
读懂一篇论文,留下自己的思考。 从论文库点开 PDF,原文、专属 AI 会话与 Markdown 笔记并排展开:选中难懂的段落,带着上下文向 AI 追问;划下重要的文字,框选值得留存的图表,高亮与截图自动收进本地笔记。下次打开,接着上次的思考往下读。
News
- 2026-09-29
- 原生多栏阅读布局:左边会话列表,中间本篇论文的 AI 会话,右边 PDF|笔记。
- 新增会话 Summary 与复制路径;笔记目录改为 paperforge_notes,不再引用的图片自动清理。
- Markdown 块级编辑:所有 .md 都能原地编辑、自动保存。
- 阅读链路重做:论文库、笔记实时预览、每篇论文一个专属 AI 会话。
- 2026-09-28 — 首个版本发布;改为 DSH 原生 dsh plugin 安装。
展开完整文档(README 剩余 1 节)
在 DSH 里读论文:边读、边问、边记 快速开始 ·亮点 · TODO ·开发手册 · License: MIT DSH Plugin DSH Repo 读懂一篇论文,留下自己的思考。 从论文库点开 PDF,原文、专属 AI 会话与 Markdown 笔记并排展开:选中难懂的段落,带着上下文向 AI 追问;划下重要的文字,框选值得留存的图表,高亮与截图自动收进本地笔记。下次打开,接着上次的思考往下读。 News - 2026-09-29 - 原生多栏阅读布局:左边会话列表,中间本篇论文的 AI 会话,右边 PDF|笔记。 - 新增会话 Summary 与复制路径;笔记目录改为 paperforge_notes,不再引用的图片自动清理。 - Markdown 块级编辑:所有 .md 都能原地编辑、自动保存。 - 阅读链路重做:论文库、笔记实时预览、每篇论文一个专属 AI 会话。 - 2026-09-28 — 首个版本发布;改为 DSH 原生 dsh plugin 安装。 亮点 阅读布局:左边会话列表,中间本篇论文的 AI 会话,右边 PDF 与笔记 论文库左侧栏「论文」列出工作区里的 PDF,点一篇进入阅读布局标注划词高亮(六色)与框选截图自动写进笔记;选段也可复制为原文或 Markdown 引用 Ask AI划词「Ask AI」或页头「AI」:问题带上 @论文、页码与选段,发进本篇论文的会话 Markdown 编辑所有 .md 都能原地编辑:点一块改源码,离开即渲染;自动保存,与插件、AI 的改动自动合并 Summary论文库「会话」页签勾选会话,生成一份 Summary(Markdown):每 3 个一批引用,最后综合复制路径任意文档页头的复制图标,一键复制文件路径 笔记:点一块改源码,其余保持渲染 Summary:勾选的会话由 AI 汇总成一份 Markdown 截图中的论文页面来自 Vaswani et al., Attention Is All You Need(arXiv:1706.03762),按 Google 的授权注明出处、用于学术用途。Logo 与章节图标由 AI 图像模型生成。 快速开始 前置条件:DSH 0.1.7+,PATH 上有 pnpm。 dsh plugin --profile web add github:PhysicalAI-0/dsh-paperforge 或克隆后本地安装(改代码后重启 dsh web 即生效): git clone https://github.com/PhysicalAI-0/dsh-paperforge.git && cd dsh-paperforge dsh plugin --profile web add . 在放论文的目录启动 dsh web(这个目录也要是 DSH 的工作区),左侧栏出现「论文」即安装成功。卸载:dsh plugin --profile web remove dsh-paperforge。 笔记放在哪 /paperforge_notes/ ├─ /.md 笔记(标准 Markdown,可直接编辑) ├─ /assets/ 截图;不再被任何笔记引用的图片约 2 分钟后自动删除 ├─ /highlights.json、session.json 高亮位置、与论文会话的绑定 └─ Summary/ 会话 Summary 配置(可选) 在 ~/.dsh/profiles/web/cordis.patch.yml 里按 id 覆盖: - id: paperforge config: workspaceRoot: # 缺省 = 启动 dsh web 的目录 notesDir: paperforge_notes # 笔记根目录名(旧版默认是 notes) model: # 论文会话用的模型;不写则沿用当前模型 provider: deepseek-official name: deepseek-flash reasoningEffort: high 不要写 - insert:(插件会被加载两次)。配置了 model 时,DSH 也会把它存为新会话的默认模型。 TODO - [ ] Markdown 即时渲染(类似 Vditor):图片点击放大、块拖拽排序 - [ ] 富渲染:mermaid 流程图 / 时序图 / 甘特图、echarts 图表、脑图 - [ ] 为同一篇论文开多个会话(页头「AI」按钮) - [ ] 按页、按图读论文的工具与读图 skill,降低读图的 token 消耗 - [ ] 问答要点自动写回笔记 - [ ] 统一为 JavaScript:用 mupdf 替换 Python 边车;论文库扫描改为异步 已知限制 - 右侧栏最多两栏(DSH 限制),更多窗口请拖成浮动。 - 论文会话在第一次提问前,左侧列表显示为「新会话」,DSH 的「新建会话」可能复用它。 - Markdown 按块编辑:撤销只在当前块内;跨块的引用式链接与脚注可能不生效;工作区外或超过 2 MB 的 .md 只能预览。 - Summary:DSH 每条消息最多引用 3 个会话,插件分批发送;内容由 AI 用写文件工具写入。 - 不同目录下的同名 PDF 共用一个笔记文件夹;笔记里的章节名固定为中文。 开发 pixi run test # 单元测试 pixi run verify # 契约与冒烟测试 插件分两半:浏览器半 lib/client.js,宿主半 lib/index.js 等(注册 /api/paper.* 路由)。另有可选的 Python 边车 py/,只用于把高亮写进 PDF 文件本身。开发前先读 AGENTS.md:DSH 插件的硬约束、关键 API、踩过的坑和路线图都在里面。 缘起与致谢 作者是 alphaXiv 的重度用户,本插件「划词即问、就地记笔记」的交互正是受它启发。但它的问答额度有限,模型也不能替换,于是把「划词 → 追问 → 落笔记」搬回自己掌控的 DSH:不重复造阅读器,复用 DSH 原生的预览、会话与模型配置。 PaperForge 与 alphaXiv 及其团队无任何隶属、赞助或背书关系,也不包含其任何代码或素材。 License MIT © dsh-paperforge contributors
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
PhysicalAI-0/dsh-paperforge
边读 PDF 边向 AI 追问,高亮截图自动存进笔记
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,359已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,514已汉化DSH
71.8
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,289已汉化DSH
71.6
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 92,675已汉化DSH
71.2
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,522已汉化DSH
71
这是你的仓库?认领条目