npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

dsh-latex-studio

v0.4.4

Published

MiKTeX-native LaTeX compile & VTO typesetting loop for DeepSeek Harness (daily compile + visual typesetting loop with a persistent defect ledger).

Downloads

324

Readme

dsh-latex-studio

License: MIT Node: ^22.19.0 || >=24.0.0 DSH: >=0.2.0-rc.2 (tested on v0.2.1-rc.5) Platform: Windows + MiKTeX

dsh-latex-studio 是专为 DeepSeek Harness (DSH) 桌面端 打造的 MiKTeX 原生 LaTeX 编译诊断与视觉排版优化(VTO)闭环插件。

通过 10 个原生工具 与 3 个专业技能,让 AI 编写 LaTeX 文档时告别“盲写盲改”和“只管生成不管版面”,提供从 本地多趟编译、错误行号追踪、PDF 逐页渲染看图、18 类视觉版面缺陷诊断、受限安全修复 到 多重门禁复核与一键回滚 的全自动化闭环能力。


1. 为什么需要这个插件?

在长文本或学术论文写作中,大语言模型编写 LaTeX 往往面临两个根本痛点:

  1. 反馈缺失(编译盲区): 模型一次性输出 .tex 后,如果没有编译环境,根本无法知道代码能否通过编译。即使用外部脚本跑了编译,传统引擎报错日志(.log)动辄上千行,模型难以提取结构化的精准错误位置(哪个文件、哪一行、什么原因)。
  2. “编译通过” ≠ “可以交付/投稿”: 这是学术出版与专业排版最头疼的问题。孤行寡行(Widows/Orphans)、浮动体远离正文引用、双栏下方严重空洞、Overfull 溢出黑块、表格字号凌乱、正文超预算页数 等典型的二维版面缺陷,在源码和纯文本 .log 中是完全隐形的。

dsh-latex-studio 的解决方案:

  • 精准日志诊断:内置针对 MiKTeX / TeX 引擎的日志解析器,提供带有 file:line 的结构化错误与警告,让模型改错有的放矢。
  • 本地视觉闭环(VTO,参考 PaperFit 方法学):无缝将编译出的 PDF 逐页光栅化为高保真图片送入视觉多模态通道,让模型“亲眼看到”渲染版面,配合专业 checklist 识别 18 类版面缺陷。
  • 守卫门禁与反伪修复(Guard & Policy):严密保护内容完整性,坚决杜绝 AI 偷删引用文献(\cite)、误删标签(\label/\ref)或用 \resizebox、硬编码 \vspace、滥用 \newpage、恶意缩字体等手段“掩盖”排版问题。
  • 带台账与自动回滚:每一轮修复均有快照备份,门禁复核失败支持一键回滚;跨轮次持久化缺陷台账,精准捕捉问题是否复发。

2. 核心特性

  • 🖥️ MiKTeX 原生与零外部运行时依赖: 核心硬依赖仅需本地安装好的 MiKTeX。编译引擎(pdflatex/xelatex/lualatex)、参考文献工具(bibtex/biber)以及页图渲染后端(Poppler pdftoppm 与 Ghostscript mgs.exe)全部使用 MiKTeX 本地自带组件。不需要额外部署 Python 环境或复杂第三方服务。
  • 🔄 智能双路编译驱动: 优先探测并使用 latexmk(享受 .fls 依赖追踪与增量编译);在没有 Perl 运行时的环境下,自动无缝回落到自研的多趟循环驱动(引擎 → 自动按需运行 bibtex/biber/makeindex → 直至 .aux 稳定收敛,最多 4 趟)。
  • 🛡️ 严格的内容保全与原子化写操作: 任何写入操作(vto_fix)必须经过前置预检与 Diff 确认;执行写入时先备份,写入后立即比对内容键集合(\cite、\label、\ref、\caption),若有破坏或语法阻断自动安全回滚。
  • 📋 跨轮次缺陷台账(Defect Ledger): 缺陷记录持久化在 .latex-studio/state.json 中。验证门禁能够识别“上一轮声明已修复、本轮又再次出现”的回归现象,防止模型陷入死循环。
  • 🔒 本地优先与隐私闸门(uploadScope): 所有页图渲染均在本地完成。统一的隐私闸门机制默认采用 external-only,绝不擅自向云端或第三方解析服务上传您的未发表论文手稿。
  • ⚙️ 完整的图形化配置表单(0.4.0+): 在 DSH 桌面端的“插件”管理界面中直接提供 17 个配置项的可视化表单,支持实时修改、热保存与一键恢复默认。

2. 快速安装与环境一键配置

2.1 环境要求

| 依赖项 | 必需性 | 说明 | 快速安装命令(Windows PowerShell) | |---|---|---|---| | MiKTeX | 必需 | 提供编译引擎、bib 工具与 Poppler/Ghostscript 渲染组件 | winget install MiKTeX.MiKTeX | | Strawberry Perl | 推荐 | 用于开启 latexmk 依赖追踪与加速(可选,缺失时自动回落内置驱动) | winget install StrawberryPerl.StrawberryPerl | | chktex | 可选 | 用于 LaTeX 源码的语法风格静态检查 | mpm --install=chktex |

💡 提示:MiKTeX 首次编译包含新宏包的文档时,如果启用了 --enable-installer(插件默认开启),可能会联网按需下载缺失的宏包,属于正常现象。


2.2 首次使用:协助一次性全套配置(强烈推荐)

很多用户在安装插件后,因缺乏完整的编译器与组件栈而不知所措。本插件针对首次使用进行了专门的易用性对齐:

方式 A:Agent 主动引导(会话交互)

在 DSH 桌面端对话框中直接对 Agent 发送:

人类输入:“我刚装好 dsh-latex-studio 插件,请帮我检查并一次性配置好所需的全部环境。”

Agent 会自动启动 latex_doctor 执行整套工具链体检,若缺少依赖,绝不进行“缺一个报一个”的碎片化骚扰,而是主动整理并推荐全套配置方案,并在安装后运行验收闭环。

方式 B:终端一键自动配置脚本

在插件目录下直接运行全套配置脚本:

powershell -ExecutionPolicy Bypass -File tools\setup-latex-stack.ps1

该脚本全自动执行:

  1. 自动检查并静默安装 MiKTeX(含 TeX 引擎、Bib 工具与 Poppler/Ghostscript 页图后端);
  2. 自动安装 Strawberry Perl(激活 latexmk 的 .fls 依赖追踪加速);
  3. 自动开启 MiKTeX 的 [MPM]AutoInstall=1 宏包静默补全(编译遇到新宏包全自动静默下载,免去弹窗阻断);
  4. 自动安装并配置 chktex 语法检查工具;
  5. 自动修复当前会话与用户级环境变量 PATH;
  6. 自动调用 doctor.mjs 打印全绿健康报告。

2.3 插件安装(推荐)

在仓库根目录下执行自带的安装脚本:

cd <本仓库路径>\dsh-latex-studio
node tools/install.mjs

安装脚本会自动执行:

  1. 本地安全打包(执行白名单过滤,确保纯净);
  2. 登记插件至 DSH 的 desktop profile;
  3. 将包树镜像至运行环境并保留已有依赖;
  4. 运行健康检查,安装成功后会提示重启 DSH。

⚠️ 注意:安装或更新完成后,请重启 DSH 桌面端,以便让宿主加载最新的插件逻辑。


2.4 运行健康自检:doctor.mjs

在插件使用前或排查环境问题时,直接在终端运行独立体检脚本:

node tools/doctor.mjs

体检脚本会逐项检查:

  • 核心文件与导出完整性;
  • 10 个工具与 3 个随包技能是否已正常登记;
  • 图形配置项 Schemastery 兼容性;
  • 本机 MiKTeX 编译器引擎路径与版本;
  • 本地 Poppler(pdftoppm)与 Ghostscript(mgs.exe)页图通道是否畅通;
  • BibTeX / Biber 与 chktex 工具链可用性。

预期输出示例:

dsh-latex-studio doctor — v0.4.1
dir: D:\Documents\deepseek harness\DSH插件管理\dsh-latex-studio

  [OK  ] files      28 required files present
  [OK  ] patch      inserts the plugin row with no duplicated defaults
  [OK  ] tools      10 tools registered: latex_doctor, latex_build, latex_lint, bib_tool,
                    vto_start, vto_inspect, vto_fix, vto_verify, vto_report, vto_rollback
  [OK  ] skills     3 skills registered: latex-daily, latex-fix-catalog, latex-vto-loop
  [OK  ] volatile   17 config fields are volatile → editable in the Plugins page
  [OK  ] client     declares dsh.client (web) and exports ./client
  [OK  ] clientBundle lazy-CJS factory, requires react only, registers both config slots
  [OK  ] locale     en/zh display metadata present
  [OK  ] profile    registered in: desktop
  [OK  ] in-sync    repo and installed lib/index.js are identical
  [OK  ] shadows    no discovery root duplicates the plugin-registered skills
  [OK  ] toolchain  engine=D:\MiKTeX\miktex\bin\x64\pdflatex.exe (MiKTeX 26.5) isMiKTeX=true
  [OK  ] render     page-image backend: poppler (pdftoppm+pdfinfo)
  [OK  ] bib        bibliography tooling: bibtex, biber
  [OK  ] chktex     optional static checker available (enable with enableChktex)

verdict: HEALTHY

3. 两套命令体系与实战

安装插件后,3 个操作守则技能(latex-daily、latex-vto-loop、latex-fix-catalog)会自动注册并注入 DSH 会话中。用户通常只需使用自然语言向 AI 提出要求,模型即可自主组织调用相应工具链。

3.1 怎么用(两个真实场景)

场景 A:日常编译、错误排查与文档交付

当您需要编译一篇 LaTeX 文章并修正编译报错与参考文献时:

用户:帮我把 paper/ 目录下的论文编译通过,参考文献也要对。

模型:latex_doctor({})                       ← 先体检,缺件会直接告诉你装什么
      latex_build({dir:"paper"})             ← 看 status / errors[{file,line}] / overfull
      …按 errors 的行号改 tex,再 latex_build…
      latex_lint({dir:"paper"})              ← 抓伪修复与引用/标签对账
      bib_tool({action:"audit", bib:"paper/refs.bib", tex:["paper/main.tex"]})
      latex_build({dir:"paper"})             ← 门禁:必须 status="passed" 才算交付

判定标准:latex_build 返回 passed 且 errors 为空。没有编译通过不算写完。

场景 B:学术论文版面优化与压页(VTO 全流程)

当您的论文超过页数预算,需要进行视觉版面调优:

用户:这篇双栏论文要压到 9 页,别删内容。

模型:vto_start({dir:"paper", pageBudget:9})     ← 冻结内容基线 + 记录当前页数
      vto_inspect({dir:"paper", pages:"all"})    ← 出页图 + 机检候选 + 带阈值的 checklist
      …逐页看图,按 checklist 的 id 记录缺陷(每项带 visual_indicators 与数值阈值)…
      vto_report({dir:"paper", defects:[{id:"A5", page:3, severity:"major", evidence:"左栏空洞 34%"}]})  ← 写入台账
      vto_fix({dir:"paper", file:"main.tex", find:"…", replace:"…"})        ← apply 默认 false:只看 diff
      vto_fix({…, apply:true})                   ← 备份 → 写 → guard 校验 → 失败自动回滚
      vto_verify({dir:"paper"})                  ← 五项门禁 + verdict + regressions + rollbackTo
      vto_report({dir:"paper", verdict:"pass", changes:[…]})

判定标准:vto_verify 的 verdict 为 pass/pass_with_notes,且 checks.contentIntegrity 严格通过(\cite/\label/\ref/\caption 一个都没丢)。任何一轮 contentIntegrity 失败都先回滚,不要继续叠改动。


3.2 完整工具矩阵(10 个原生工具)

本插件提供两套命令体系,共 10 个原子工具:

基础编译与静态诊断模块(Daily Tools)

| 工具名 | 核心职责 | 常用输入参数 | 关键输出 | |---|---|---|---| | latex_doctor | 环境体检 | refresh (刷新缓存), verifyPdfRead (真实测试渲染), pdfPath | 引擎版本、Poppler/GS 后端状态、修复命令建议 advice[]、渲染探针 renderProbe | | latex_build | 全自动多趟编译 | dir (工程目录,必填), entry (入口tex), engine (auto/pdflatex/xelatex/lualatex), clean | status (passed/failed/skipped), via (latexmk/builtin), pages, pdfPath, errors[{file,line,message}], overfull[] | | latex_lint | 源码静态规则门禁 | dir (必填), entry, rules[] | 伪修复告警(拦截 \resizebox、裸 \vspace、滥用 \newpage 等)、引用/标签对账、chktex 检查结果 | | bib_tool | 参考文献全面治理 | action (lint/format/fill/audit,必填), bib (必填), tex[], write | 结构问题清单、未引用项 uncited[]、正文缺引项 missingInBib[];解析不完整时强制拒绝写入 |

视觉排版与版面优化闭环(VTO Loop Tools)

| 工具名 | 核心职责 | 常用输入参数 | 关键输出 | |---|---|---|---| | vto_start | 初始化排版优化轮次 | dir, entry, pageBudget (目标页数), template, columnType | 冻结当前引用与文本哈希基线,创建 .latex-studio/state.json | | vto_inspect | 视觉检测与页图渲染 | dir, pdf, pages (如 "all" 或 "1-3"), dpi, focus, parse | 输出页面图片 ContentBlock、18 类排版缺陷核对清单(含视觉特征与数值阈值)、机检信号候选 | | vto_fix | 受限安全源码修复 | dir, file, find, replace, apply (默认 false 仅看 diff), round, force | 变更 Diff、策略校验违规项、内容保全验证、原子备份路径;写入失败或违规自动回滚 | | vto_verify | 多重门禁综合复核 | dir, entry, pdf, pages, pageBudget, round | 重新编译复检,综合输出 verdict (pass/fail/pass_with_notes)、门禁项明细、缺陷复发回归项 regressions[]、回滚轮次建议 rollbackTo | | vto_report | 沉淀轮次排版报告 | dir, round, verdict, changes[], defects[], notes | 生成可读 Markdown 报告与结构化 JSON 报告,持久化更新缺陷台账 | | vto_rollback | 真实执行轮次文件回滚 | dir, round (目标轮次), workDir | 按该轮备份清单真实还原受损文件,自动删除该轮新建的文件,返回 restored[] 恢复清单 |

📌 参数基准规则:

  • dir、bib、tex、latex_doctor.pdfPath 均相对 DSH 会话工作区;
  • entry、file、pdf 均相对 dir 所指定的工程目录;
  • 绝对路径、盘符、UNC 路径与 .. 越界路径一律在入口处安全拦截。

5. 配置参数说明

插件的所有 17 个配置项均支持在 DSH 侧边栏的 插件 → dsh-latex-studio → 配置 页面中直接可视化调整,修改即时保存。

| 配置项 | 默认值 | 作用与人类使用建议 | |---|---|---| | enableDaily | true | 是否加载基础编译与诊断工具(latex_doctor, latex_build 等)。修改后需重载插件生效。 | | enableVto | true | 是否加载 VTO 视觉排版全流程工具集。修改后需重载插件生效。 | | uploadScope | 'external-only' | 隐私闸门:external-only(默认,绝不外发本人手稿)、always(允许第三方解析)、never(完全禁用)。 | | rendererOrder | ['poppler', 'miktex-ghostscript', 'mineru-page'] | 页图渲染后端尝试顺序,按数组优先级依次降级。全部由本地优先提供。 | | popplerPath | '' | 自定义 pdftoppm.exe 路径,留空则自动从 MiKTeX 或系统 PATH 中探测。 | | ghostscriptPath | '' | 自定义 Ghostscript(mgs.exe)路径,留空则自动探测。 | | readPdfToolName | 'read_pdf' | 宿主注入的 PDF 读取工具名称。 | | latexCommand | '' | 编译命令:留空表示自动选择(检测到 Perl 则优先使用 latexmk,否则走内置多趟驱动);也可显式指定 pdflatex、xelatex 等。 | | enableInstaller | true | MiKTeX 下自动添加 --enable-installer 编译参数,缺失宏包时自动按需下载。 | | engineArgs | '' | 额外透传给 TeX 编译引擎的命令行参数(支持单双引号包裹)。 | | compileTimeoutMs| 300000 | 单次编译最长超时时间(毫秒,默认 5 分钟),超时将自动安全终止进程树。 | | renderTimeoutMs | 60000 | 单次页图渲染最长超时时间(毫秒,默认 1 分钟)。 | | workDir | '.latex-studio' | 编译产物、辅助文件、页图、备份快照和报告的存储目录(位于工程内,不污染项目根目录)。 | | pageBudget | null | 目标页数预算。设置后门禁将严格核对总页数是否达标。 | | attachImagesPerRound | 1 | 每一轮诊断主动回传到对话窗口的页图张数。设为 0 可完全关闭图片回显以节省 token。 | | enableChktex | false | 是否在 latex_lint 中启用外部 chktex 工具进行语法风格分析。 | | chktexPath | '' | 自定义 chktex.exe 路径,留空则自动探测。 |


6. 项目结构与目录说明

dsh-latex-studio/
├── lib/
│   ├── index.js            # 插件宿主入口:按配置注册工具与技能,声明 Schema
│   ├── client.js           # 浏览器半:DSH 插件面板里的 React 配置表单
│   ├── config.js           # 配置项默认值(DEFAULTS)与运行时动态配置
│   ├── core/               # 纯 Node ESM 内核逻辑(零 DSH 依赖,方便单元测试)
│   │   ├── paths.js        # 路径安全守卫(唯一路径校验收口)
│   │   ├── env.js          # 本地编译工具链探测与环境体检报告
│   │   ├── compile.js      # 双路编译驱动(latexmk 优先 + 内置多趟收敛兜底)
│   │   ├── logparse.js     # .log 日志智能解析(文件栈跟踪、错误行号提取)
│   │   ├── lint.js         # 源码静态门禁(伪修复拦截、图表引用对账)
│   │   ├── bib.js          # 参考文献治理(结构审计、格式化与安全校验)
│   │   ├── render.js       # 本地页图渲染降级链(Poppler -> Ghostscript)
│   │   ├── guard.js        # 内容完整性保护快照与密钥泄露扫描
│   │   ├── policy.js       # FORBIDDEN 禁用排版规则差分比对
│   │   ├── state.js        # 跨轮次持久化台账、原子快照备份与回滚实现
│   │   ├── report.js       # Markdown 与 JSON 格式的轮次报告生成
│   │   └── pdfread.js      # 隐私闸门(uploadScope 控制)
│   ├── tools/              # DSH 工具接入层(唯一允许引入 @deepseek-ai/dsh-tools 的地方)
│   │   ├── daily.js        # 4 个 Daily 工具定义与注册
│   │   └── vto.js          # 6 个 VTO 工具定义与注册
│   └── data/               # 布局规范、18 类缺陷分类与阈值数据(JSON 资产)
├── skills/                 # 随包自动注册的 3 个技能守则
│   ├── latex-daily/        # 日常编译排错指南
│   ├── latex-vto-loop/     # 视觉排版循环操作规范
│   └── latex-fix-catalog/  # 排版缺陷标准修复手法目录
├── test/                   # 自动化测试用例(覆盖内核逻辑与文档契约)
├── tools/                  # 维护与发布工具(doctor、install、verify-package 等)
├── cordis.patch.yml        # 插件 Patch 声明
└── THIRD_PARTY_NOTICES.md  # 第三方开源代码与规范许可声明

7. 质量保证与测试

本项目内置完善的自动化测试与发布验证工具:

# 运行全部单测(聚合运行器,要求 0 failed, 0 skipped)
npm test

# 运行特定测试(例如只测 VTO 闭环)
node test/run-all.mjs vto

# 运行安装前封装自证(模拟发布打包、解包与宿主 apply 注册验证)
npm run verify:package

当前测试矩阵包含 12 个测试集、149 项自动化测试,全部通过(ALL GREEN)。


8. 常见问题排查(FAQ)

Q1: 提示 找不到 TeX 引擎 或编译被 skipped 怎么办?

A: 请确保已安装 MiKTeX,并且已将 D:\MiKTeX\miktex\bin\x64(或您的实际安装目录)加入系统环境变量 PATH。您可以直接运行 node tools/doctor.mjs 查看插件探测到的真实路径。

Q2: 为什么 latex_build 提示回落到了内置多趟驱动?

A: 这是正常表现。latexmk 是一个 Perl 脚本,如果您的系统没有安装 Perl 解释器,插件会自动调用内置的多趟编译驱动(反复运行引擎直到 .aux 稳定),同样能保证多重交叉引用与页码正确收敛。若需使用 latexmk,只需安装 Strawberry Perl 即可。

Q3: 为什么 vto_inspect 每次默认只在对话窗口贴出一张图片?

A: 这是出于保护大语言模型上下文窗口与控制 Token 开销的考量。多模态图片消耗的上下文非常大。如果您需要查看全部页面,可以在配置中调大 attachImagesPerRound,或者按工具返回的 pages[].call 命令针对特定页码定向阅读。

Q4: 插件更新后怎么在 DSH 桌面端生效?

A: 重新执行 node tools/install.mjs,然后务必完全退出并重启 DSH 桌面端。正在运行的进程不会热重载底层的包代码。


9. 开源许可证与致谢

  • 本项目采用 MIT License 开源。
  • 视觉排版优化(VTO)的分类学、数值阈值与方法学参考源自论文 PaperFit(arXiv:2605.10341,UCAS / Shanghai AI Laboratory / SJTU,MIT 许可)。
  • 详细第三方规范与代码归属声明请参阅 THIRD_PARTY_NOTICES.md。

本项目的开发、调试与文档验证大量使用 DeepSeek Harness 完成,其中很多模块由 deepseek-flash 模型参与构建。