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

稿件审阅 Biogod2020/dsh-article-review

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

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
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 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
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 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 许可证
预览分享卡片长什么样 ↓Biogod2020/dsh-article-review
分享 · DeepSeek Harness Hub
Biogod2020/dsh-article-review

description: "在 DSH 中阅读、批注与修改 Markdown 稿件,查看 AI…

回到顶部