description: "在 DSH 中阅读、批注与修改 Markdown 稿件,查看 AI…
30.6/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/9 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Biogod2020/dsh-article-review该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · security
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 24 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/3) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包@deepseek-ai/dsh-experimental-paper-review(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/14 16:17:30
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 63 处,展示前 41 条)
- 读取本地文件src/article-input.ts:16
const root = await realpath(workspace) - 读取本地文件src/article-input.ts:19
const source = await realpath(isAbsolute(input.source) ? input.source : resolve(root, input.source)) - 读取本地文件src/article-input.ts:20
const info = await stat(source) - 写入本地文件src/article-input.ts:27
await mkdir(directory, { mode: 0o700 }).catch((error: unknown) => { - 读取本地文件src/article-input.ts:30
const actual = await realpath(directory) - 读取本地文件src/article-input.ts:37
const info = await lstat(source) - 读取本地文件src/article-input.ts:38
if (!info.isFile() || info.isSymbolicLink() || await readFile(source, 'utf8') !== text) throw new Error('Staged article source no longer matches paste - 读取本地文件src/figure-thumbnail.ts:37
const bytes = await readFile(output) - 删除本地文件递归src/figure-thumbnail.ts:46
await rm(directory, { recursive: true, force: true }) - 读取本地文件src/index.ts:79
const content = await readFile(new URL(`../skills/${name}/SKILL.md`, import.meta.url), 'utf8') - 读取本地文件src/index.ts:102
const root = await realpath(await rootFor(sessionId)) - 读取本地文件src/index.ts:121
const root = await realpath(await rootFor(agent.id)) - 读取本地文件src/index.ts:280
return { workspaceRoot: await realpath(await rootFor(exec.agent.id)), path: result.document.path, - 发起网络请求src/index.ts:457
async fetch(request) { - 读取本地文件src/index.ts:485
const workspaceRoot = await realpath(await rootFor(sessionId)) - 读取本地文件src/index.ts:487
if (!cwd || await realpath(cwd) !== workspaceRoot) throw new Error(`Select ${JSON.stringify(workspaceRoot)} as this conversation's workspace before im - 读取本地文件src/owner-lock.ts:43
const current = await lstat(path, { bigint: true }).catch((error: unknown) => { - 删除本地文件src/owner-lock.ts:115
await unlink(temporary).catch((cleanupError: unknown) => { - 删除本地文件src/owner-lock.ts:122
await unlink(temporary).catch((error: unknown) => { - 读取本地文件src/owner-lock.ts:144
const current = await lstat(path, { bigint: true }).catch((error: unknown) => { - 读取本地文件src/owner-lock.ts:160
const current = await lstat(path, { bigint: true }).catch((error: unknown) => { - 删除本地文件src/owner-lock.ts:164
if (current && sameFile(identity, current)) await unlink(path) - 读取本地文件src/pdf-preview-cache.ts:9
const file = await stat(path, { bigint: true }) - 读取本地文件src/selected-file.ts:8
const source = await realpath(selected) - 读取本地文件src/selected-file.ts:9
const path = relative(await realpath(root), source) - 读取本地文件src/selected-file.ts:15
if (!(await stat(source)).isFile()) throw new Error('Choose a file, not a directory') - 读取本地文件src/store.ts:62
const mode = await stat(path).then(info => info.mode & 0o777, (error: unknown) => { if (missing(error)) return 0o600; throw error }) - 写入本地文件src/store.ts:65
try { await rename(temporary, path) } catch (error) { await unlink(temporary); throw error } - 删除本地文件src/store.ts:65
try { await rename(temporary, path) } catch (error) { await unlink(temporary); throw error } - 读取本地文件src/store.ts:76
const stored = await readFile(resolve(root, '.paper-review', 'sessions.json'), 'utf8').catch((error: unknown) => { - 读取本地文件src/store.ts:98
this.root = await realpath(this.workspaceRoot) - 写入本地文件src/store.ts:100
await mkdir(this.stateRoot, { recursive: true, mode: 0o700 }) - 读取本地文件src/store.ts:101
if (await realpath(this.stateRoot) !== this.stateRoot) throw new Error('.paper-review must not be a symlink') - 读取本地文件src/store.ts:148
const stored = await readFile(resolve(this.stateRoot, 'session-paths.json'), 'utf8').catch((error: unknown) => { - 读取本地文件src/store.ts:187
const directory = await realpath(resolve(this.root, path)) - 写入本地文件src/store.ts:308
if (createParents) await mkdir(directory).catch((error: unknown) => { - 写入本地文件src/store.ts:434
await mkdir(folder, { recursive: true }) - 删除本地文件src/store.ts:700
await unlink(`${location.key}.pending`) - 删除本地文件src/store.ts:1059
if (await this.sourceText(source) !== disk) { await unlink(`${key}.pending`); throw new Error('Source changed during acceptance; retry after importing - 删除本地文件src/store.ts:1062
await unlink(`${key}.pending`) - 执行外部命令来自配置/变量validation/run.mjs:6
const result = spawnSync(process.execPath, [executable, 'run', '--config', 'validation/vitest.config.ts', ...process.argv.slice(2)], { cwd: root, stdi
扫描于 2026/10/31(1 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/node-addon-system@deepseek-ai/dsh-native-command@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/cordis-plugin-loader@deepseek-ai/cordis-plugin-include@deepseek-ai/dsh-credentials-local@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-session-projection@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-agent-loop@deepseek-ai/dsh-client-connection给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 批注Markdown稿件
- 修改建议
- 版本对比
DSH Markdown 稿件审阅插件源码:批注、修改建议、版本对比、图表和 BibTeX
README
由 DeepSeek 最新模型翻译生成description: "在 DSH 中阅读、批注与修改 Markdown 稿件,查看 AI 提案、逐词差异及相对上次审阅的累计变化。"
kind: "package-bundle"
DSH Article Review
在 DSH 对话旁读论文、写批注、与 AI 逐段修稿。AI 提交修改提案,你查看差异、接受、拒绝或要求重写。
经历多轮修改后,每段仍对照你最后确认已审的版本,待审变化一目了然。
查看 AI 提案的渲染效果与源码差异
截图使用虚构稿件,含真实模型提案。
核心功能
- 阅读批注:高亮、下划线、评论与全文搜索。
- AI 修稿:替换、增删和重写提案,支持标题、列表、表格。
- 审阅进度:标记、锁定已审段落,追踪后续变化。
- 版本对比:逐词对比与 Markdown 源码差异。
- 图表审阅:预览、提议换图,保留前后副本。
- 文献管理:绑定 BibTeX,定位引用,检查新增引用键。
安装
支持 DSH Desktop 和 Web 0.2.0-rc.2,沿用现有模型配置。
Desktop App
App 自带运行环境,无需另装 Node。
1. 在 App 左侧打开 Plugins(插件),点击 Add plugin(添加插件)。
展开完整文档(README 剩余 1 节)
description: "在 DSH 中阅读、批注与修改 Markdown 稿件,查看 AI 提案、逐词差异及相对上次审阅的累计变化。" kind: "package-bundle" DSH Article Review 在 DSH 对话旁读论文、写批注、与 AI 逐段修稿。AI 提交修改提案,你查看差异、接受、拒绝或要求重写。 经历多轮修改后,每段仍对照你最后确认已审的版本,待审变化一目了然。 查看 AI 提案的渲染效果与源码差异 截图使用虚构稿件,含真实模型提案。 核心功能 - 阅读批注:高亮、下划线、评论与全文搜索。 - AI 修稿:替换、增删和重写提案,支持标题、列表、表格。 - 审阅进度:标记、锁定已审段落,追踪后续变化。 - 版本对比:逐词对比与 Markdown 源码差异。 - 图表审阅:预览、提议换图,保留前后副本。 - 文献管理:绑定 BibTeX,定位引用,检查新增引用键。 安装 支持 DSH Desktop 和 Web 0.2.0-rc.2,沿用现有模型配置。 Desktop App App 自带运行环境,无需另装 Node。 1. 在 App 左侧打开 Plugins(插件),点击 Add plugin(添加插件)。 2. 粘贴预构建发行版地址: github:Biogod2020/dsh-article-review#v0.2.0-rc.3 3. 安装完成后点击 Enable now(立即启用),按提示重启。 4. 选择本地工作区并打开一个对话,在右侧栏选择阅读、批注与局部修改。 5. 点击浏览工作区 → 选择本地文件打开 Markdown 稿件。系统选择窗口属于 App,文件必须位于当前对话工作区内。BibTeX 和替换图片也使用同一 Desktop 选择器。 Desktop 使用独立的 desktop 配置,安装到 web 不会同时安装到 App。升级旧插件时,安装上面的发行版地址,按 App 提示重新加载或重启。macOS Desktop 已实测;Windows 要求见支持范围与兼容性。 若 GitHub 地址连接超时,可下载预构建发行归档,保存下载的 .tar.gz 文件,在 Plugins → Add plugin 中输入该文件的绝对路径。归档已含 lib/index.js 和 lib/client.js,无需解压或构建。 Web 需要 Node.js 22(≥22.19)或 24+: dsh plugin --profile web add 'github:Biogod2020/dsh-article-review#v0.2.0-rc.3' dsh web 安装后重启正在运行的 Web 配置。使用预构建 tag;main 是开发源码。 开始审阅 1. 在右侧栏选择阅读、批注与局部修改,打开 Markdown 稿件。 2. 选中文字添加批注,附到对话输入框,发送修改要求。 3. 在审阅变更中接受、拒绝或要求重写,检查后确认已审。 接受提案更新正文,保留已审基线。审阅记录位于 .paper-review/,随稿件备份,勿提交公开仓库。段落锁仅约束本插件。 操作截图 选中文字,右键添加高亮或批注。 选区操作菜单 保存批注,把修改要求附到对话。 批注与高亮 查看已审进度,跳转章节与段落。 审阅进度与导航 比较两个版本,直接查看字词变化。 版本对比 预览 PDF、审阅换图、浏览文献。 PDF 预览 换图前后对比 文献浏览 窄屏也能顺畅阅读。 文档 - 使用指南:操作与配置。 - 开发与兼容性:构建、工具与持久化。 编辑 Markdown 稿件,图表支持图片与 PDF。其他格式与平台。 MIT 许可证
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Biogod2020/dsh-article-review
description: "在 DSH 中阅读、批注与修改 Markdown 稿件,查看 AI…
相关插件 · 安全 / 权限
智能体逆向工程morluto/rea
用智能体逆向工程任何东西,从应用行为到原生二进制。
★ 415,267已汉化DSH
73.3
智能体集群框架ruvnet/ruflo
面向 Claude Code 与 Codex 的智能体元基座meta-harness。
★ 80,414已汉化MCP
71.9
WorkBuddy 模型接入corrinehu/dsh-workbuddy-connect
2026 年 10 月 20 日起,WorkBuddy…
★ 1,604已汉化DSH
71.7
破甲一键通z91772524-ai/pojia-next
十五个 AI…
★ 967已汉化DSH
71.6
AI 代理虚拟终端strukto-ai/mirage
Mirage 是给 AI 智能体用的虚拟终端:一层 shell,统管数据、命令行和运行时。Unix…
★ 3,756已汉化DSH
70.8
Agent 操作层agentic-os-org/ANOLISA
ANOLISA(Agentic Nexus Operating Layer & Interface System Architecture)|智能体操作系统,带运行时、安全、可观测性,以及 Tokenless 响应压缩,降低 token 用量与成本。
★ 649已汉化DSH
70.7