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

Typst 排版助手 James-Yao-xj/dsh-plugin-goodtypst

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

GoodTypst:把 Typst 文档接进 DSH 会话——改稿、编译、看排版结果

31.3/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/21 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add James-Yao-xj/dsh-plugin-goodtypst
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · dev
装得上吗
实装验证未通过(runtime_boot_failed),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 13 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(runtime_boot_failed · 2026/10/31) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件
查看扫描证据(共 2 处,展示前 2 条)
  • 读取本地文件
    lib/templates.js:66
    return readFileSync(new URL(relativePath, TEMPLATE_ROOT), 'utf8');
  • 读取本地文件
    lib/templates.js:75
    return readFileSync(new URL(`${id}.md`, PROMPT_ROOT), 'utf8');
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools@deepseek-ai/schemastery@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
description: "GoodTypst:把 Typst 文档接进 DSH 会话——内置阅读文稿与演示文稿两套模板,并用风格检查守住版式" kind: "package-bundle" dsh-plugin-goodtypst Typst 是一套排版语言:一份 .typ 源文件编译成 PDF、PNG 或 SVG。 这个插件解决的事很具体——在会话里写 typst 稿子时,版式守不住。模型很容易把课程笔记写成五彩斑斓的卡片堆,把幻灯片写成左右两块带框的对比框。所以这里内置两套模板(阅读文稿 / 演示文稿),与用户认可的样例逐字同版式,再用一份风格检查把跑偏的写法拦下来。 两种模板 | kind | 适用 | 版式 | 生成的文件 | | reading | 课程笔记、讲稿整理、长文阅读 | A4 纵向、单栏、纯黑白、ctyp 处理中英混排 | <name>.typ | | slides | 课程汇报、论文分享、答辩 | 4:3、PKU 配色、单栏要点式 | <name>.typ、template.typ、assets/images/pku-logo.svg | 两份模板的版式分别对齐 Lesson2.typ 与 Slides/template.typ:页边距、页眉页脚、标题字号字重、表格与代码的居中方式都是照抄的,不是“看着像”。
展开完整文档(README 剩余 1 节)
description: "GoodTypst:把 Typst 文档接进 DSH 会话——内置阅读文稿与演示文稿两套模板,并用风格检查守住版式" kind: "package-bundle"

dsh-plugin-goodtypst

Typst 是一套排版语言:一份 .typ 源文件编译成 PDF、PNG 或 SVG。

这个插件解决的事很具体——在会话里写 typst 稿子时,版式守不住。模型很容易把课程笔记写成五彩斑斓的卡片堆,把幻灯片写成左右两块带框的对比框。所以这里内置两套模板(阅读文稿 / 演示文稿),与用户认可的样例逐字同版式,再用一份风格检查把跑偏的写法拦下来。

两种模板

| kind | 适用 | 版式 | 生成的文件 |
| reading | 课程笔记、讲稿整理、长文阅读 | A4 纵向、单栏、纯黑白、ctyp 处理中英混排 | <name>.typ |
| slides | 课程汇报、论文分享、答辩 | 4:3、PKU 配色、单栏要点式 | <name>.typ、template.typ、assets/images/pku-logo.svg |

两份模板的版式分别对齐 Lesson2.typ 与 Slides/template.typ:页边距、页眉页脚、标题字号字重、表格与代码的居中方式都是照抄的,不是“看着像”。

预览

阅读文稿:A4 单栏、纯黑白,页眉一行灰线,页脚居中页码。

阅读文稿示例

演示文稿:封面与内容页。页眉左侧是本页语境、右侧校徽,页脚右侧页码;标题用红、强调句用蓝,其余全是黑色正文。

演示文稿封面

演示文稿内容页

工具

| 工具 | 作用 |
| goodtypst_templates | 列出两种模板的适用场景与硬性约束,用来在两者之间做选择 |
| goodtypst_new | 用模板起稿:写入口文件、填标题页元数据;幻灯片同时写主题与校徽。已存在的文件不覆盖 |
| goodtypst_check | 按风格约束检查现有 .typ,返回带行号的违规列表(error / warn) |
| goodtypst_status | 插件是否就绪;传入路径时顺带报文件行数、首行 |

风格约束

用户在会话里说“用 Typst 写个文稿”时,插件注入的系统提示要求模型先问一句:阅读文稿还是演示文稿。选定之后按模板起稿,写完用 goodtypst_check 自查,error 清零才算交付。

阅读文稿

- 整份文档只有黑白灰:没有 fill、rgb(...)、highlight、底色、渐变。不要写出五彩斑斓的页面。
- 不用卡片容器(rect、box、block),不用多栏(columns、grid)。
- 页眉页脚、字体、标题编号由模板固定:不写 #set page、#set text、#show。
- 表格、代码块、图片一律居中;来源说明用脚注。
- 不用直角引号与双直角引号(U+300C/U+300D、U+300E/U+300F):引文用“……”或者不加引号。

演示文稿

- 一页一个论点:title 是结论(“操作带来明显提升”),section 是这句结论的语境,不是章节名。
- 一列往下排:禁止 grid、columns 这类并列结构,包括两列 keypoint 并排。
- 数字写进句子:禁止 metric 那种“大号数字 + 一行小字”的排版。
- 禁止带边框或底色的卡片:rect、box、block 配 stroke / fill。这是 AI 味最重的写法。
- 不用表格;需要对比就按“A 是……;B 是……”的顺序陈述。
- 颜色只能来自主题变量:pku-red、pku-blue、pku-gray、pku-light、accent。
- 一页正文不超过 60 个汉字,长句拆成要点。
- 不用直角引号与双直角引号(U+300C/U+300D、U+300E/U+300F):引文用“……”或者不加引号。

风格检查是行级正则,不是语法检查:它拦的是上色、卡片、并列结构、数字块、改版式这几类典型跑偏,Typst 语法错误交给 typst compile。

用法

最省事的是让模型走一遍:

1. “用 Typst 写一份汇报”→ 模型问:阅读文稿还是演示文稿;
2. 用户选定后,goodtypst_new 在指定路径生成模板副本;
3. 模型往模板里填内容,goodtypst_check 自查到 error 为零;
4. 交付后自行 typst compile <file>.typ 出 PDF。

也可以手动起稿:把 templates/reading.typ 或整个 templates/slides/ 目录复制到项目里,改文件顶部的几个变量即可。

安装

插件的源码放在工作区的 plugins/ 下,profile 用 link: 链进去,改完源码立刻可见。

1. 装依赖(插件自己的 node_modules)
cd plugins/dsh-plugin-goodtypst
pnpm install

2. 链进 profile
cd ~/.dsh/profiles/desktop
pnpm add link:/Users/capyapple/Documents/deepseek-harness/default-workspace/plugins/dsh-plugin-goodtypst

然后确认 profile 的 package.json 里 dsh.profile.bundles 包含 dsh-plugin-goodtypst,重启 DeepSeek Harness 生效。

卸载:pnpm remove dsh-plugin-goodtypst,并把 dsh.profile.bundles 里那一项删掉。

配置

默认值在 cordis.patch.yml 里声明,想改就在 profile 自己的 cordis.patch.yml 里用同一个 id(goodtypst)覆盖——覆盖是整块 config 替换。

| 字段 | 默认 | 含义 |
| typstBinary | typst | 编译器位置;默认走 PATH,也可以写绝对路径 |
| maxSourceBytes | 4194304 | 单个 .typ 的读取上限,超过就报错 |

环境要求

- DSH 0.2.0-rc.2(cordis ~4.0.4)
- Typst 编译器(本机验证版本 0.15.1)——插件本身不调用它,出 PDF 时用
- 阅读文稿模板依赖 @preview/ctyp:0.3.0,首次编译时 Typst 会自动下载并缓存

已知限制

- 还不会编译:编译、错误定位、按页出图是下一版的事,见下面的路线。
- 写文件走 ctx.fs,受 DSH 文件策略约束;workspace-write 模式下只能写工作区内的路径。
- 风格检查只看写法,不看内容长度;“一页不超过 60 个汉字”这类密度要求靠提示词约束。

路线

1. 两套模板 + 风格提示 + 风格检查(0.2.0 已完成)
2. goodtypst_compile:调 typst compile,把 PDF 放到临时目录,失败时带回 typst 的原始报错与行号
3. 出图:--format png --ppi 按页出图,让模型和你都能直接看到排版结果
4. 可调:--root、--font-path、默认输出格式做成配置项

关于校徽

templates/slides/assets/images/pku-logo.svg 是北京大学校徽,原始位图打包进 SVG,这样整套模板保持纯文本、可以直接随仓库分发。校徽版权归北京大学,仓库里的这份只用于个人课程与汇报场景;换成自己的单位标志只需替换该文件。

开发

pnpm install
pnpm test # node --test test/*.test.js

测试不启动 DSH,也不用真 ctx:ctx.tools / ctx.fs / ctx.systemPrompt 换成记录用的假对象,defineTool 和 schemastery 用真包,所以 schema 与配置默认值走的是和线上同一条代码路径。

模板改动的验证方式:templates/slides/ 目录本身就能直接 typst compile slides.typ;阅读文稿需要先装 ctyp。

许可

MIT,见 LICENSE。
预览分享卡片长什么样 ↓James-Yao-xj/dsh-plugin-goodtypst
分享 · DeepSeek Harness Hub
James-Yao-xj/dsh-plugin-goodtypst

GoodTypst:把 Typst 文档接进 DSH 会话——改稿、编译、看排版结果

回到顶部