Sivia 科研配图工作台
这个技能解决什么问题
把论文变成科研配图,而且分成两个明确分开的阶段:
论文 / 方法说明
→ 阶段一:overview 配图(图片 + 完整 ImageGen prompt + 设计说明)→ 停下来等确认
→ 阶段二:只有用户明确要求,才重建为可编辑的 PPTX / draw.io
关键区别在于它不是一个「帮我画张图」的提示词包。它带一套科学论证优先的流程:
先读懂论文的问题、既有局限、真正的方法贡献、输入输出与证据,再决定这张图应该讲什么;
然后是选图型角色、写逐区域的生产 prompt、核对 prompt 长度下限、生成、检查、交付。
只有图被明确确认之后,才进入可编辑重建。
⚠️ 最重要的一条行为约束:默认只交图片
第一次交付永远是「图片 + 完整 prompt + 简短设计说明」,然后结束这一轮,问用户要改什么、
要不要可编辑 PPT。 不要顺手开始做 PPT。
- 用户说「这图不错」= 锁定构图,不等于授权做 PPT
- 只有明确的「这版确认了,现在做成可编辑 PPT」才进入重建阶段
- 一个「最终要做 PPT」的旧目标不能跳过这个出图后的选择
- 已经给了确认过的图 + 明确的复刻要求 = 这个条件已满足
这条是上游反复强调的(references/design-scientific-figure.md 与
references/imagegen-first-workflow.md),也是它和普通作图提示词包最大的差别。
四角色协议
即使一个 agent 同时扮演全部四个角色,也要在逻辑上分开:
Designer 定科学内容与版式 → Drawer 只负责按规格落对象 → Reviewer 出证据化判定 →
Corrector 把缺陷翻译成最小对象级操作。不要把 Reviewer 的意见直接当结论执行,也不要
让 Drawer 自己宣布通过。
三条主路径与读哪个文件
| 你要做什么 | 读这个文件 |
|---|---|
| 设计:论文 → overview / 机制图,写 prompt,生成图片 | references/design-scientific-figure.md(核心,先读这个) |
| 审阅:独立视觉审查、候选对比、修正后复验 | references/audit-scientific-figure.md |
| 纠正:把审阅发现翻译成对象级最小修改 | references/correct-scientific-figure.md |
| 重建(PPT / WPS) | references/edit-powerpoint-live.md |
| 重建(draw.io) | references/recreate-scientific-figure-in-drawio.md |
| 重建总纲:把给定图/已确认图复刻成可编辑图形 | references/recreate-scientific-figure.md |
> 上游这些是 skills/<名字>/SKILL.md,本包按平台「目录最多两级」的要求扁平化成
> references/<名字>.md。内容一字未改(链接已同步重写,77 条相对链接零死链)。
> 上游正文里写的 $edit-powerpoint-live、$audit-scientific-figure 这类引用,
> 在本包里就是同名的 references/*.md —— 不是要你去调用别的技能。
按需读取的参考文档(都放在 references/)
| 什么时候读 | 文档 |
|---|---|
| 新建 ImageGen 主导的图、或继续一张已确认的视觉稿 | imagegen-first-workflow.md |
| 写模板化的 ImageGen prompt(含长度规则) | imagegen-prompt-detail.md |
| 源材料是论文 / 方法节 / 公式 / 补充材料 | manuscript-to-figure-workflow.md |
| 要选内置模板、或想了解模板的来历与边界 | prompt-templates.md |
| 做 overview / 图形摘要 / 高密度方法图 | overview-narrative.md |
| 涉及美感、视觉质量、「美化」类要求 | fundamental-visual-grammar.md + publication-aesthetic-review.md |
| 手绘 / 铅笔 / 白板 / Excalidraw 风格 | hand-drawn-technical-style.md |
| 要规划混合素材(可编辑几何 vs 栅格证据) | asset-production.md |
| 用户要求「不看现有图先独立设计再对比」 | blind-figure-gym.md |
| 后端卡住 / 无效操作 / 需要独立原生文件兜底 | reconstruction-recovery.md |
| 需要标题隐藏版等真实审阅副本 | review-copies.md |
| 完整端到端流程(中英) | workflow.md / workflow_ZH.md |
内置模板与长度硬门槛
包里带两个完整模板,它们是内部生产资源,不是要用户粘贴的命令:
| 图型角色 | 模板文件 | 非空白字符数 |
|---|---|---|
| 方法总览(overview) | references/overview-template.txt |
15,356 |
| 机制细节(mechanism) | references/mechanism-template.txt |
17,973 |
硬规则:每次生成或修订,提交给图像生成工具的 prompt,其非空白 Unicode 字符数
必须 ≥ 它绑定的模板。核对方法(用包内脚本,就是上游那一份):
python3 scripts/check_prompt_length.py --template <模板.txt> --prompt <你实际要提交的prompt.txt>
三条容易被忽略的细节:
- 要核对你「实际提交的那份文本」 —— 不能先核一份长的、再提交一份短的摘要或只写改动
- 模板里的
[方括号]是给助手填的槽位,最终 prompt 里不能残留未填的槽位、
不能有等待选择的备选布局 - 删掉可选内容后不要把下限也跟着调低;用户明确指定了知识库案例时,
那个案例的完整 prompt 才是下限,不是这里的默认值
知识库不在本包内(重要)
上游的知识库是 149.7 MB(Git LFS 托管的图片—prompt 配对),远超平台 3 MB 上限,
本包不含。包内只留了它的结构与索引,让你知道该有什么、以及怎么自己建:
references/knowledge-base.md—— 知识库的分类说明与检索用法references/knowledge-base-index.json—— 有效索引原文(10 个用户已确认的图片—prompt 配对)
要真正用上知识库,二选一:
- 克隆上游拿完整知识库(含
knowledge-base/),按references/knowledge-base.md使用 - 自己建库:
scripts/里有上游的建库与校验脚本
(validate_knowledge_base.py、build_paper_knowledge_wave.py、
finalize_knowledge_base.py、import_paper_knowledge_v2.py、build_knowledge_showcase.py)
没有知识库也能工作 —— 走内置的两个完整模板这条默认路径即可。
上游对此的表述很明确:这是「内置详细模板」与「知识库案例」两条并行资源。
WorkBuddy 运行环境与适配
路径与引用映射
| 上游写法 | 本包 / WorkBuddy |
|---|---|
skills/<名字>/SKILL.md |
references/<名字>.md |
skills/<名字>/references/x.md |
references/x.md |
skills/<名字>/references/templates/x.txt |
references/x.txt |
skills/<名字>/scripts/x.py |
scripts/x.py |
$<名字>(技能互相调用) |
同名 references/<名字>.md |
codex plugin marketplace add … / Claude Code /plugin install |
不适用;本包装在 ~/.workbuddy/skills/sivia/ |
~/.sivia/(上游状态目录) |
本包不写这个目录 |
CLAUDE.md / AGENTS.md |
工作区 .workbuddy/memory/MEMORY.md 或 ~/.workbuddy/MEMORY.md |
图像生成:WorkBuddy 里可用
上游说「Sivia 自己不提供栅格生成模型」,要按客户端实际可用的图像工具来做。
WorkBuddy 本机可用 ImageGen 工具,所以 ImageGen-first 路线是通的。
在别的客户端里没有该工具时,要如实报告缺少渲染能力,
不要假装写了个 prompt 就等于生成了图片。
MCP 工具需要手动配置(三台服务)
上游的 drawio_* 与 powerpoint_* 工具由三台 MCP 服务提供。WorkBuddy 不会自动读取
上游的 .codex-plugin/plugin.json,需要手动加进 ~/.workbuddy/mcp.json
(注意是 mcp.json,不是 .mcp.json),把 <技能目录> 换成绝对路径:
{
"mcpServers": {
"sivia-drawio-live": {
"command": "node",
"args": ["<技能目录>/scripts/drawio-live-server.mjs"]
},
"sivia-drawio-files": {
"command": "node",
"args": ["<技能目录>/scripts/drawio-server.mjs"]
},
"sivia-powerpoint": {
"command": "node",
"args": ["<技能目录>/scripts/powerpoint-server.mjs"]
}
}
}
配好后不会自动生效:到「连接器管理」页面右上角的自定义连接器入口,点「信任」该服务。
三台服务各自需要什么,见 references/limitations.md —— 其中两台需要本机装有
draw.io 桌面版或 PowerPoint/WPS,只有不装任何应用也能用的那几个工具是纯文件操作。
本机(Windows)运行提示
- 技能根目录:
~/.workbuddy/skills/sivia(Windows:C:\Users\<你>\.workbuddy\skills\sivia) - 本机 bash shim 可能缺
head/tail/ls/which/mkdir—— 改用python3 -c或先写成.py再跑 - 本机 python3:
C:\Users\user\.workbuddy\binaries\python\versions\3.13.12\python.exe - 需要绝对路径调用时用
python3 "<技能目录>/scripts/<脚本>.py"
运行依赖(如实列清)
| 需要 | 用来做什么 |
|---|---|
| Python 3 标准库 | check_prompt_length.py、建库与校验脚本、MCP 的 OOXML 桥接 |
| Node 18+ | 仅在要用 MCP 服务(scripts/*.mjs)或跑 test/pay-flow.test.mjs 时需要 |
| Pillow(可选) | 栅格资产的保留像素 / 实际 alpha 检查(inspect_raster_asset.py、extract_outlined_artwork.py) |
| python-pptx(可选) | file-backed OOXML 桥接(powerpoint-mac-bridge.py,即 PowerPoint/WPS 的默认后端) |
| defusedxml(可选) | 生成标题隐藏版等审阅副本(prepare-overview-review.py) |
Node 侧三个 MCP 服务零第三方依赖(只用 node: 内置模块,无需 npm install)。
阶段一的安全规则
- 绝不编造科学内容 —— 读不清的文本、被遮挡的边界要记为显式的歧义,不要猜
- 不要为了好看把内容撑满或抽稀 —— 空白只有承担功能(分隔层级、保护焦点、预留连线通道、
改善分组)才算数;不要为了让内容变大而保留没有功能的空带 - 不要把高密度栅格研究变成稀疏方框图 —— 用户要的是栅格研究就做栅格研究
- 栅格资产必须逐个声明(
raster_reason/source_is_tightly_cropped/
atomic_raster_unit/contains_reconstructable_content/decomposition_note),
一张图里还含可分离的文字、边框、箭头、图例、坐标轴、表格、常规图表 → 拒绝 - 不要用截图代替可编辑对象;不要靠放大裁剪图掩盖采样不足
- 经验证的像素与真实 alpha 要用包内只读工具检查,别只凭肉眼:
python3 scripts/inspect_raster_asset.py --image robot.png --width-mm 30 --require-transparent
云端托管(可选,支付宝按量付费)
本地全部能力免费、离线。若要托管执行并拿到可分享的 HTML 报告:
POST /check-figure-prompt 提交一份图 prompt(+ 绑定的模板名)→ 返回自包含 HTML
「配图 prompt 体检报告」:长度门(对照 15,356 / 17,973 的真实下限)、未填槽位、
待选备选布局、被误引入的参考论文事实、区域化程度、publication 模式下残留的脚手架。
协议走支付宝 AI 按量付费(HTTP 402 / A2M):
| 步骤 | 协议 |
|---|---|
| 1. 探测报价 | GET /price(免费) |
| 2. 下发账单 | 402 + Payment-Needed 响应头(Base64URL,商家 RSA2 本地加签) |
| 3. 携凭证重试 | Payment-Proof 请求头 → 调 alipay.aipay.agent.payment.verify |
| 4. 交付与回执 | 200 + Payment-Validation 响应头 → 异步调 alipay.aipay.agent.fulfillment.confirm |
订单落在 SQLite(out_trade_no 主键、trade_no UNIQUE),幂等:
同一凭证重放原样返回已保存结果,不重复扣费。
付费买的是托管执行与报告产物,不是不同的判定标准 —— 报告里每个数字都能在本机用
同一份代码复算(它调用的就是包内 scripts/check_prompt_length.py 的同一个函数)。
⚠️ 本地联调只证明协议逻辑,不等于可上线。 上线还差:支付宝企业账号 + 签约入驻、
生产密钥与真实 serviceId、官方沙箱 a2m run 联调。
详见 references/pay-per-use.md(智能体侧行为)、service/README.md(配置与运维)。
⚠️ 本包没有交付什么
本包是上游的 6 个流程技能 + 全部参考文档 + 可独立运行的脚本层,
不是整个插件。以下要另行获取或平台不允许:
| 上游内容 | 为什么不在包内 |
|---|---|
knowledge-base/(149.7 MB,Git LFS) |
远超 3 MB 上限;只交付结构与索引,见上文 |
assets/examples/、examples/**/review/(约 5.2 MB 的 PNG / PPTX) |
展示与审阅产物,非运行必需 |
support-sivia(Star 邀请技能) |
与配图功能无关;上游 1.1.3 已删掉它的启动钩子。本包不含任何 Star 索取行为 |
scripts/powerpoint-bridge.ps1(127 KB,Windows COM 桥接) |
平台不接受 .ps1 文件类型。失去它意味着 Windows COM 那条路不能用 —— 但默认后端是 OOXML 桥接,仍然可用 |
officejs/ 加载项(含 PNG 图标) |
平台不接受 .png,且需要三层目录 + 侧载 HTTPS 证书。powerpoint_officejs_status 会如实报「未连接」 |
research/(开发期研究脚本与夹具) |
建库用的中间研究产物,非运行必需 |
tests/*.ps1 与 4 个依赖 .ps1 的契约测试 |
随 .ps1 一起失去;包内交付其余 4 个 Python 测试套件(41 项)作为保真证据 |
| 仪表盘、订阅、遥测 | 属上游插件运行时 |
规则本体一字未减:6 个流程技能的 SKILL.md 与 18 份参考文档、2 个完整模板
全部逐字交付,只做了文件位置扁平化与链接重写。逐条对照见
references/workbuddy-notes.md,各项边界见 references/limitations.md。
保真证据
包内 test/upstream-tests.py 是上游自己写的 Python 测试,断言逐字搬过来,
只把 pytest/unittest 换成一个零依赖 shim:
python3 test/upstream-tests.py
覆盖上游的 4 个纯逻辑套件:test_prompt_length(7)、test_raster_asset(12)、
test_outlined_artwork(6)、test_prepare_overview_review(16)。
⚠️ 通过数取决于你装没装那两个可选依赖 —— 脚本本身会如实汇报,
不要照抄某个数字:
| 运行环境 | 实际执行 | 结果 |
|---|---|---|
| 只装 Python 3(默认) | prompt_length + raster_asset + outlined_artwork |
通过 25 项 |
+ defusedxml |
换成 prompt_length + prepare_overview_review |
通过 23 项 |
+ Pillow 与 defusedxml |
全部 4 个套件 | 通过 41 项 |
因为 raster_asset / outlined_artwork 需要 Pillow,
prepare_overview_review 需要 defusedxml,缺哪个就跳过哪个(跳过的套件会明确打印出来,
且不计入通过数)。上面那个 41 就是两者都装齐时的数字。
> 如果这些上游用例全过而你的用例失败,那是上游行为如此,不是移植错了。
未移植的 7 个套件会在输出里逐条列出并说明原因,且不计入通过数。
端到端付费链路:
node test/pay-flow.test.mjs
上游与许可
- 上游:<https://github.com/exsinger-hub/Sivia>(MIT)—— 作者 gatina
- 上游祖先:Scientific Illustrator
by icebird1998(MIT),Sivia 在它的可编辑绘图后端与
Designer–Drawer–Reviewer–Corrector 流程上做了扩展 - 本包:逐字交付上游指令层与脚本层;新增扁平化适配、WorkBuddy 说明、付费服务与文档
- 署名与第三方声明见
THIRD_PARTY_NOTICES.md