promptfigure 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,45 @@
1
+ # 安装这个技能(AI Agent Skill)
2
+
3
+ > **版本 1.6.10**(2026-09-24)。下载页:https://promptfigure.top/skill 。查最新版:`curl -s https://promptfigure.top/downloads/promptfigure-api.version.json`;本地已装版本看 `SKILL.md` frontmatter 的 `version`。版本语义:主版本=接口不兼容改动(需重读 SKILL.md),次版本=新增能力,修订号=勘误。
4
+
5
+ 把 `promptfigure-api/` 整个文件夹放进你的 AI 工具的技能目录即可:
6
+
7
+ | 工具 | 技能目录(复制到此处) |
8
+ |---|---|
9
+ | Claude Code | `~/.claude/skills/promptfigure-api/` |
10
+ | Claude Desktop(Agent Skills) | 设置 → Skills → 导入本 zip,或放 `~/.claude/skills/` |
11
+ | WorkBuddy / OpenClaw | `~/.workbuddy/skills/promptfigure-api/` |
12
+ | Codex / Cursor / Cline 等任意 Agent | 无技能目录的,把 `SKILL.md` 内容追加到 `AGENTS.md` / `CLAUDE.md` / 规则文件末尾 |
13
+
14
+ 安装后对 AI 说「帮我用 promptFigure 画一张 XXX 图」,它会自动读取 `SKILL.md` 并按流程执行:
15
+ 注册/登录 → 拿 key(或复用你已有的 `PROMPTFIGURE_KEY`)→ 调 API 出图。
16
+
17
+ ## 本包还附带本地插件(plugin/)
18
+
19
+ 一个 zip 两样东西:根目录的 `SKILL.md` 是纯 REST 技能(上面的装法即用);
20
+ `plugin/` 是本地插件(`pf` CLI + promptfigure-local skill + 托盘)。想要「文档只读预览 /
21
+ 锚点定位 / GUI 审批 / 本地规则层 / 矢量导出」这些本机能力时再装它:
22
+
23
+ ```bash
24
+ cd plugin && npm install && npm link # 之后 pf 命令全局可用
25
+ ```
26
+
27
+ 详见 [PLUGIN.md](PLUGIN.md);纯 REST 用户完全不用碰 plugin/。
28
+
29
+ ## 需要准备
30
+
31
+ - 一个账号:https://promptfigure.top 注册(邮箱 + 密码 ≥8 位,无需邮箱验证)
32
+ - 余额:控制台充值($1 起整数,每满 $50 赠 $1);API 按次计费 standard $0.02 / premium $0.15
33
+ - API key:控制台「API 密钥」创建,`pf_` 开头明文只显示一次
34
+
35
+ ## 保持最新
36
+
37
+ 技能会过期。程序化查最新版本(不用下载整个包):
38
+
39
+ ```bash
40
+ curl -s https://promptfigure.top/downloads/promptfigure-api.version.json
41
+ ```
42
+
43
+ 本地 `version` 低于线上 `version` → 到下载页取最新包:https://promptfigure.top/skill
44
+ (直链:https://promptfigure.top/downloads/promptfigure-api.zip ,或 GitHub Release 资产 promptfigure-api-1.6.10.zip)
45
+ 安装说明与 API 文档:https://promptfigure.top/docs/zh-CN/api
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  name: promptfigure-api
3
3
  description: 用 promptFigure 生成科研/学术配图(流程图、机制图、管线图、技术路线图、图形摘要),以及优化已有图表、整文批量升级(数据图本地重绘 + 示意图 AI 重构 + 可编辑矢量版 + 追溯台账)。当用户要「画一张图」「生成论文配图/示意图/机制图/graphical abstract」「把论文里的图变好看/变高级」「批量优化整篇文章的图」「要可编辑的矢量图/PPT 版」、给了 PDF/WPS/Word 文稿要配图或要主动建议插图位、或要配置 promptFigure API key、或要用 REST 接口批量出图时使用。走 https://promptfigure.top 的 /api/v1/generate,Bearer pf_ key 鉴权,返回 base64 PNG。强制学术字体规范(图内无衬线、禁手写/花体)与上下文蒸馏规则(原文段落绝不直接进 prompt,先蒸馏成实体/结构/图种三清单再组装)。网页端有多轮问询/二次确认,API 端一次性提交——所以要把用户绘图意图一次说清楚,服务端负责润色成完整示意。
4
- version: 1.6.8
4
+ version: 1.6.10
5
5
  license: MIT
6
6
  metadata:
7
- version: "1.6.8"
7
+ version: "1.6.10"
8
8
  author: promptFigure (zhangmask)
9
9
  homepage: https://promptfigure.top
10
10
  repository: https://github.com/zhangmask/promptfigure-skill
@@ -22,7 +22,7 @@ metadata:
22
22
  **整个流程里唯一花钱的动作是 API 调用**。所有迭代都在本地免费环节完成:
23
23
 
24
24
  ```
25
- 阶段 0 意图确认(对用户)→ 阶段 1 写提示词 → 阶段 2 提示词审核 → 阶段 3 API 出图 → 阶段 4 成图审核 → 阶段 5 可编辑矢量版(可选,交付后必问用户)
25
+ 阶段 0 意图确认(对用户)→ 阶段 1 写提示词 → 阶段 2 提示词审核 → 阶段 3 API 出图 → 阶段 4 成图审核 → 阶段 6 每轮交付与台账(每轮结束必交)→ 阶段 5 可编辑矢量版(可选,最终成稿时必问用户)
26
26
  ↑__________ 打回/不满意只回到这里改 prompt,免费 __________↑
27
27
  ```
28
28
 
@@ -56,6 +56,22 @@ metadata:
56
56
 
57
57
  ---
58
58
 
59
+ ## 🔴 阶段 6:每轮交付与台账(每轮结束必交,用户随时可查)
60
+
61
+ 每次出图 / 优化 / 批处理结束,在用户工作目录建 `promptfigure-out/`,**每轮交付一个新版本文件夹**(v1 → v2 → v3…),协议全文见 `references/deliverables-ledger.md`,五条硬性要求:
62
+
63
+ 1. **本轮清单**:round-vN.md 列出本轮每张图——图种 / 档位 / 版本 / 本机真实路径 / 插入位置
64
+ 2. **插入位置(两段边界)**:每张图标出插在原文哪两段之间——**上一段最后一句 + 「……」 + 下一段第一句**,用户一眼定位
65
+ 3. **上下文与引用**:用了哪几段明确到 §¶;上下文只放**首句 + 「……」 + 尾句**;用了本地表格/数据/代码文件一律给**引用链接不内联内容**
66
+ 4. **图片版本**:文件名带 `-vN`,旧版永不覆盖,随时可回溯对比
67
+ 5. **两份演进文档**:`paper-with-figures.md`(原文结构 + 已插图,无关段落省略,每次更新同一个)与 `final/paper-final.md`(最终论文版本,附按用户文档格式的可打开副本:Word→docx、LaTeX→tex、WPS→docx)
68
+
69
+ **最终成稿流程**(用户说「定稿」时):先提醒核对数据是否更新 → 用户确认后才 premium 定稿 → 定稿后必问矢量图(提醒:本地 AI 重绘、token 贵、速度慢,比赛/数模默认不做;确认做则按元素分层重绘成可编辑矢量,应用按用户偏好)。
70
+
71
+ 🔴 **CLI 优先**:全程走 `pf`(或 REST 直连)沉淀状态,GUI 只留给人看图和点审批——插件的门禁与留痕都挂在 CLI 上。
72
+
73
+ ---
74
+
59
75
  ## 🔴 草稿策略:低文字密度 + 科研风格基线(2026-09-25 实测定规)
60
76
 
61
77
  standard 档的乱码率随**卡面文字量**上升:实测说明性小字是乱码重灾区
@@ -270,5 +286,6 @@ curl -s https://promptfigure.top/downloads/promptfigure-api.version.json
270
286
  | `references/api-contract.md` | 完整契约、网页工作流 4 步、多语言示例、批处理、WAF |
271
287
  | `references/troubleshooting.md` | 润色失败、WAF 403、balance 滞后、出图质量差 |
272
288
  | `references/document-workflow.md` | 用户给了 `.tex` / `.docx` / `.md` 文稿要配图:怎么定位插图位、从上下文写 prompt、插回文档;LaTeX 编译环境探测与官方下载指引(MiKTeX/TeX Live/TinyTeX/Tectonic/Overleaf) |
289
+ | `references/deliverables-ledger.md` | **每轮交付**:round-vN.md 清单/插入位置/上下文引用、paper-with-figures.md 演进版、final/ 最终论文版本与格式副本、最终成稿流程 |
273
290
  | `references/figure-upgrade-workflow.md` | 用户要**优化已有图表**或**整文批量升级**:结果图数据溯源+本地重绘、示意图 AI 升级、结构组合、单图精修/整文批处理两种模式、figure-ledger.json 追溯台账 |
274
291
  | `references/proactive-upgrade.md` | 用户给的是 **PDF/WPS**(非 LaTeX)、说不出哪里插图要你**主动建议**、要从**原始数据**推演配图、或想参考顶会/SCI 论文的图学风格:PDF 解析、MCM 插图位惯例、四步管线(分析→推演→提示词→迭代)、refs/ 风格库与合规红线 |
@@ -0,0 +1,119 @@
1
+ # 每轮交付与台账(round deliverables & ledger)
2
+
3
+ > 场景:每次用 promptFigure 出图 / 优化图片 / 整文批处理结束后,宿主 AI 必须按本文件产出结构化交付。
4
+ > 目的:用户随时能回答三个问题——**这轮做了什么图、图插在原文哪里、用了什么上下文/数据**。
5
+ > 🔴 本文件是硬性协议:缺任何一项 = 交付不完整。CLI 优先——全程用 `pf` 命令沉淀状态,GUI 只留给人「看一眼 / 点审批」。
6
+
7
+ ---
8
+
9
+ ## 0. CLI 优先原则(2026-09-25 定规)
10
+
11
+ - 出图、核验、审批、定稿全链路都有 CLI:`pf open → craft → render → qa → review resolve → premium`,**能用 CLI 就用 CLI**
12
+ - GUI 只用于两件事:人亲眼看图、人点审批。插件的门禁与留痕都挂在 CLI 上,走 CLI 的每一步都可审计
13
+ - 每轮结束的交付目录里,路径一律引用**用户本机真实路径**(相对当前交付目录优先,跨目录用绝对路径),禁止只给「见图库」这类指不到文件的话
14
+
15
+ ---
16
+
17
+ ## 1. 交付目录结构(每一轮 = 一个新文件夹)
18
+
19
+ 在**用户当前工作目录**(论文旁边)建 `promptfigure-out/`,每轮交付新建递增版本文件夹:
20
+
21
+ ```
22
+ promptfigure-out/
23
+ ├── v1/ ← 第 1 轮交付(每次交付新建一个,v1 → v2 → v3…)
24
+ │ ├── round-v1.md ← 本轮反馈(见 §2 必含项)
25
+ │ └── figures/ ← 本轮产出的图(文件名带版本号)
26
+ │ ├── fig-method-v1.png
27
+ │ └── fig-method-v2.png ← 改版后重新出,旧版保留可回溯
28
+ ├── v2/round-v2.md ← 第 2 轮……
29
+ ├── paper-with-figures.md ← 不断演进的「论文 + 已插图」版(见 §3)
30
+ └── final/ ← 最终论文版本(见 §4,仅最终成稿时建)
31
+ ├── paper-final.md
32
+ └── paper-final.docx ← 格式副本,按用户原文档格式(见 §4)
33
+ ```
34
+
35
+ - 版本号判断:`ls promptfigure-out/` 取最大 N + 1;用户已有自己的目录约定时听用户的
36
+ - `figures/` 里的图**永不覆盖**:同一张图的每个版本都是独立文件(`-v1/-v2/…`),旧版要能随时打开对比
37
+
38
+ ---
39
+
40
+ ## 2. round-vN.md 必含项(本轮反馈)
41
+
42
+ 模板(每轮照此填,没有的项目写「无」并说明原因,禁止静默省略):
43
+
44
+ ```markdown
45
+ # 第 N 轮交付 · YYYY-MM-DD HH:mm
46
+
47
+ ## 本轮清单
48
+ | # | 图 | 图种 | 档位 | 版本 | 本机路径 | 插入位置(§¶) | 状态 |
49
+ |---|---|---|---|---|---|---|---|
50
+ | 1 | 方法流程图 | pipeline | premium | v2 | figures/fig-method-v2.png | §2 ¶1 ↔ §2 ¶2 之间 | 已审批 |
51
+
52
+ ## 插入位置(图放在原文哪两段之间)
53
+ 逐张图给出——**上一段最后一句 + 「……」 + 下一段第一句**,让用户一眼定位:
54
+
55
+ > ……la optimización por enjambre de partículas ajusta automáticamente los principales parámetros.……La estrategia de aumento de datos incluye recorte aleatorio, jitter de color y deformación elástica.
56
+ > (图 1 插在上述两句之间,即 §2 ¶1 末 ↔ §2 ¶2 首)
57
+
58
+ - 自然段为粒度(¶),不用句号硬切;原文没有下一段时注明「§2 段末,文末」
59
+
60
+ ## 所用上下文(只放首尾句,中间省略)
61
+ - 原文上下文:「首句……尾句」(禁止整段贴入;用了哪几段就列哪几条,§¶ 标清楚)
62
+ - 引用范围声明:本次生成具体使用了 §2 ¶1–¶2(明确到段,供用户核对)
63
+
64
+ ## 数据与引用
65
+ - 本地表格/数据文件:[table1.csv](../data/table1.csv)、[run_exp2.m](../code/run_exp2.m) —— **只给引用链接,不内联内容**
66
+ - 参考图:refDataUrl(本地图 /path/to/ref.png)或 refUrl(https://…);用了就标,没用写「无」
67
+
68
+ ## 优化前 → 优化后(仅「优化已有图」任务)
69
+ | 图 | 优化前 | 优化后 | 改了什么 | 所用上下文(首尾句) |
70
+ |---|---|---|---|---|
71
+ | 原图1(曲线组) | figures/orig/fig1-old.png | figures/fig1-v1.png | 色板改语义化、字号 8pt、去 3D | 「首句……尾句」 |
72
+ ```
73
+
74
+ **三条填写铁律**:
75
+ 1. **上下文只放首句 + 尾句,中间一律省略号**——整段进 MD 会让用户无法快速审阅,也让版本 diff 爆炸
76
+ 2. **表格 / 代码 / 数据文件一律引用链接,禁止内联内容**——内联会让 MD 迅速腐烂、版本更新时无法对账;要「看见这轮用了什么」,点链接就是
77
+ 3. **每张图必须看得到版本**(文件名 `-vN` + 清单里的版本列 + 状态列)——版本是回溯和 diff 的唯一坐标
78
+
79
+ ---
80
+
81
+ ## 3. paper-with-figures.md(不断演进的呈现版)
82
+
83
+ - 结构 = 用户原文的章节树;**本轮涉及的段落**照录,**不涉及的段落**一律省略为一行:`……(§3 全文见原文)`
84
+ - 每张图插在自己的插入位置(§2 ¶1 ↔ ¶2 之间),图片用相对路径引用 vN 文件夹里的真实文件
85
+ - 每次交付**更新同一个文件**(或在文件名带版本 `paper-with-figures.vN.md` 保留历史)——用户随时打开这一个文件就能看到「论文现在长什么样」
86
+
87
+ ---
88
+
89
+ ## 4. final/ 最终论文版本
90
+
91
+ 用户要求「最终成稿 / 定稿」时才建,包含:
92
+
93
+ 1. `final/paper-final.md`——最终呈现版(全部已审批图就位、引用与上下文清单汇总)
94
+ 2. `final/paper-final.<用户格式>`——**格式副本,按用户原文档格式来**:
95
+ - Word/.docx → 交付 .docx(有 pandoc/docx 工具就用;无工具要明说「做不了格式副本,交付 MD」)
96
+ - LaTeX/.tex → 交付 .tex(图用 `\includegraphics` 引用真实路径,结构可编译)
97
+ - WPS → 交付 .docx(WPS 可直接打开)
98
+ - 🔴 **副本必须能正常打开**:交付前自己验证(文件非零、结构完整、能找到图);验证不了就明说,禁止交一个打不开的坏副本
99
+
100
+ ---
101
+
102
+ ## 5. 最终成稿流程(用户说「定稿 / 最终版」时按此走)
103
+
104
+ 1. **先提醒核对**:提醒用户「数据有没有更新?要不要重新跑一次核验?」——用户明确确认后,才进入 premium 最终定稿
105
+ 2. **确认高级定稿**:向用户复述「将消耗 premium 档额度出高清定稿,N 张」并取得确认;未确认不动手
106
+ 3. **定稿后问矢量图**(衔接 SKILL.md 阶段 5):
107
+ - 提醒成本:矢量图由**用户自己的 AI 本地重绘**,token 消耗大、速度慢
108
+ - 🔴 **比赛 / 数学建模 / 学术会议竞赛:默认不做**,速度优先;只有时间充裕才做
109
+ 4. **用户确认做矢量图时**:把最终图**按元素分层重绘**为可编辑矢量(PPT 形状 / 分层 SVG 分组,每个模块、箭头、标签是独立对象),在用户偏好的应用里操作——**PPT 还是 WPS 还是其他,按用户主要偏好来**;描摹矢量(位图转路径)一律禁止
110
+
111
+ ---
112
+
113
+ ## 6. 自检清单(每轮交付前过一遍)
114
+
115
+ - [ ] 版本文件夹新建(vN 递增)、图带版本号、旧版未覆盖
116
+ - [ ] round-vN.md 五项齐:清单 / 插入位置(两段边界句)/ 上下文(首尾句)/ 数据引用(链接)/ 优化前后(如适用)
117
+ - [ ] paper-with-figures.md 已更新到含本轮所有图
118
+ - [ ] 路径全部指得到真实文件(md 里的链接点得开)
119
+ - [ ] final/ 仅在最终成稿时出现,格式副本已验证可打开
@@ -17,6 +17,8 @@
17
17
 
18
18
  **一句话分流:数字支撑 → 本地画;结构故事 → API 画;一张图里混着两者 → 拆开,各走各的,最后拼版。**
19
19
 
20
+ > 🔴 **每轮结束必须交付台账**:新建 `promptfigure-out/vN/round-vN.md`——本轮清单(图种/档位/版本/本机路径/插入位置)、每张图的插入位置(上段末句 + …… + 下段首句)、所用上下文(只放首尾句)、数据文件只给引用链接;「优化前 → 优化后」对比也落在这里。全文协议见 `deliverables-ledger.md`。
21
+
20
22
  > 🔴 **「把终稿变成可编辑矢量/PPT 版」不属于以上任何一类**——那不是 matplotlib 的活,也不是出图 API 的活。走 `SKILL.md` **阶段 5**:终稿交付后先问用户要不要,比赛/数模默认不做(速度优先),时间充裕才由**宿主 AI 用本地的矢量工具/代码照着重绘**(禁止描摹,必须每个元素可编辑)。§3 的 matplotlib 只负责 A1 数据图的真数据重绘(防数字造假),不碰任何矢量转换。
21
23
 
22
24
  ---
@@ -375,6 +375,37 @@ pf craft --at "§3.2 ¶2" --figure-type pipeline \
375
375
  - **路径写法**:Git Bash 的 `/c/...`、Windows 的 `C:\...`、POSIX 的 `/home/...` 都能用;
376
376
  但 craft --out 建议用相对路径(当前目录下),最不容易踩环境差异。
377
377
 
378
+ ## 每轮交付与台账(每轮结束必交,CLI 优先)
379
+
380
+ **CLI 优先**:出图、核验、审批、定稿全走 `pf` 命令(`pf next` 永远告诉你下一步);
381
+ GUI 只留给人两件事——亲眼看图、点审批。插件的门禁与留痕都挂在 CLI 上,
382
+ 走 CLI 的每一步在 `events.jsonl` 里可审计;无头环境(SSH/容器/CI)本来就全 CLI。
383
+
384
+ 每轮交付在**用户工作目录**建 `promptfigure-out/`,每轮一个新版本文件夹 `vN/`(v1 → v2…):
385
+
386
+ ```
387
+ promptfigure-out/
388
+ ├── vN/
389
+ │ ├── round-vN.md ← 本轮反馈(下面的必含项)
390
+ │ └── figures/ ← 本轮图(副本或引用,文件名带 -vN)
391
+ ├── paper-with-figures.md ← 论文+已插图的演进版(无关段落省略,每次更新同一个)
392
+ └── final/paper-final.md + 格式副本 ← 最终论文版本(定稿时才建)
393
+ ```
394
+
395
+ **round-vN.md 必含**(与 promptfigure-api skill 的 deliverables-ledger.md 同一协议):
396
+ 1. **本轮清单**:每张图——figureId / 图种 / 档位 / 版本 / 本机真实路径(本插件即
397
+ `~/.promptfigure/projects/<docId>/figures/<figureId>/vN.png`)/ 插入位置(§¶)
398
+ 2. **插入位置(两段边界)**:上一段最后一句 + 「……」 + 下一段第一句,用户一眼定位
399
+ 3. **所用上下文**:用了哪几段明确到 §¶;上下文只放**首句 + 「……」 + 尾句**;
400
+ 数据/表格/代码文件一律给引用链接,不内联内容
401
+ 4. **图片版本**:每张图的每个版本独立文件(vN),旧版永不覆盖
402
+ 5. **优化前→优化后**(优化任务):原图路径 vs 新图路径 + 改了什么 + 所用上下文(首尾句)
403
+
404
+ **最终成稿流程**(用户说「定稿」):提醒核对数据是否更新 → 用户确认后才 premium 定稿 →
405
+ 定稿后必问矢量图(本地 AI 重绘、token 贵、速度慢;比赛/数模默认不做;确认做则按元素
406
+ 分层重绘成可编辑矢量,PPT/WPS 按用户偏好)——完整协议见 promptfigure-api skill 的
407
+ `references/deliverables-ledger.md`。
408
+
378
409
  ## 事件回放
379
410
 
380
411
  `~/.promptfigure/projects/<docId>/events.jsonl` 只追加不改写 —— 审批历史、
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "promptfigure",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "promptFigure 本地插件:为论文配科研图(锚点定位 + 出图 + 审批闭环),随包附带 promptfigure-api / promptfigure-local 两个 skill",
5
5
  "skills": "./skills/"
6
6
  }
@@ -0,0 +1,45 @@
1
+ # 安装这个技能(AI Agent Skill)
2
+
3
+ > **版本 1.6.10**(2026-09-24)。下载页:https://promptfigure.top/skill 。查最新版:`curl -s https://promptfigure.top/downloads/promptfigure-api.version.json`;本地已装版本看 `SKILL.md` frontmatter 的 `version`。版本语义:主版本=接口不兼容改动(需重读 SKILL.md),次版本=新增能力,修订号=勘误。
4
+
5
+ 把 `promptfigure-api/` 整个文件夹放进你的 AI 工具的技能目录即可:
6
+
7
+ | 工具 | 技能目录(复制到此处) |
8
+ |---|---|
9
+ | Claude Code | `~/.claude/skills/promptfigure-api/` |
10
+ | Claude Desktop(Agent Skills) | 设置 → Skills → 导入本 zip,或放 `~/.claude/skills/` |
11
+ | WorkBuddy / OpenClaw | `~/.workbuddy/skills/promptfigure-api/` |
12
+ | Codex / Cursor / Cline 等任意 Agent | 无技能目录的,把 `SKILL.md` 内容追加到 `AGENTS.md` / `CLAUDE.md` / 规则文件末尾 |
13
+
14
+ 安装后对 AI 说「帮我用 promptFigure 画一张 XXX 图」,它会自动读取 `SKILL.md` 并按流程执行:
15
+ 注册/登录 → 拿 key(或复用你已有的 `PROMPTFIGURE_KEY`)→ 调 API 出图。
16
+
17
+ ## 本包还附带本地插件(plugin/)
18
+
19
+ 一个 zip 两样东西:根目录的 `SKILL.md` 是纯 REST 技能(上面的装法即用);
20
+ `plugin/` 是本地插件(`pf` CLI + promptfigure-local skill + 托盘)。想要「文档只读预览 /
21
+ 锚点定位 / GUI 审批 / 本地规则层 / 矢量导出」这些本机能力时再装它:
22
+
23
+ ```bash
24
+ cd plugin && npm install && npm link # 之后 pf 命令全局可用
25
+ ```
26
+
27
+ 详见 [PLUGIN.md](PLUGIN.md);纯 REST 用户完全不用碰 plugin/。
28
+
29
+ ## 需要准备
30
+
31
+ - 一个账号:https://promptfigure.top 注册(邮箱 + 密码 ≥8 位,无需邮箱验证)
32
+ - 余额:控制台充值($1 起整数,每满 $50 赠 $1);API 按次计费 standard $0.02 / premium $0.15
33
+ - API key:控制台「API 密钥」创建,`pf_` 开头明文只显示一次
34
+
35
+ ## 保持最新
36
+
37
+ 技能会过期。程序化查最新版本(不用下载整个包):
38
+
39
+ ```bash
40
+ curl -s https://promptfigure.top/downloads/promptfigure-api.version.json
41
+ ```
42
+
43
+ 本地 `version` 低于线上 `version` → 到下载页取最新包:https://promptfigure.top/skill
44
+ (直链:https://promptfigure.top/downloads/promptfigure-api.zip ,或 GitHub Release 资产 promptfigure-api-1.6.10.zip)
45
+ 安装说明与 API 文档:https://promptfigure.top/docs/zh-CN/api
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  name: promptfigure-api
3
3
  description: 用 promptFigure 生成科研/学术配图(流程图、机制图、管线图、技术路线图、图形摘要),以及优化已有图表、整文批量升级(数据图本地重绘 + 示意图 AI 重构 + 可编辑矢量版 + 追溯台账)。当用户要「画一张图」「生成论文配图/示意图/机制图/graphical abstract」「把论文里的图变好看/变高级」「批量优化整篇文章的图」「要可编辑的矢量图/PPT 版」、给了 PDF/WPS/Word 文稿要配图或要主动建议插图位、或要配置 promptFigure API key、或要用 REST 接口批量出图时使用。走 https://promptfigure.top 的 /api/v1/generate,Bearer pf_ key 鉴权,返回 base64 PNG。强制学术字体规范(图内无衬线、禁手写/花体)与上下文蒸馏规则(原文段落绝不直接进 prompt,先蒸馏成实体/结构/图种三清单再组装)。网页端有多轮问询/二次确认,API 端一次性提交——所以要把用户绘图意图一次说清楚,服务端负责润色成完整示意。
4
- version: 1.6.8
4
+ version: 1.6.10
5
5
  license: MIT
6
6
  metadata:
7
- version: "1.6.8"
7
+ version: "1.6.10"
8
8
  author: promptFigure (zhangmask)
9
9
  homepage: https://promptfigure.top
10
10
  repository: https://github.com/zhangmask/promptfigure-skill
@@ -22,7 +22,7 @@ metadata:
22
22
  **整个流程里唯一花钱的动作是 API 调用**。所有迭代都在本地免费环节完成:
23
23
 
24
24
  ```
25
- 阶段 0 意图确认(对用户)→ 阶段 1 写提示词 → 阶段 2 提示词审核 → 阶段 3 API 出图 → 阶段 4 成图审核 → 阶段 5 可编辑矢量版(可选,交付后必问用户)
25
+ 阶段 0 意图确认(对用户)→ 阶段 1 写提示词 → 阶段 2 提示词审核 → 阶段 3 API 出图 → 阶段 4 成图审核 → 阶段 6 每轮交付与台账(每轮结束必交)→ 阶段 5 可编辑矢量版(可选,最终成稿时必问用户)
26
26
  ↑__________ 打回/不满意只回到这里改 prompt,免费 __________↑
27
27
  ```
28
28
 
@@ -56,6 +56,22 @@ metadata:
56
56
 
57
57
  ---
58
58
 
59
+ ## 🔴 阶段 6:每轮交付与台账(每轮结束必交,用户随时可查)
60
+
61
+ 每次出图 / 优化 / 批处理结束,在用户工作目录建 `promptfigure-out/`,**每轮交付一个新版本文件夹**(v1 → v2 → v3…),协议全文见 `references/deliverables-ledger.md`,五条硬性要求:
62
+
63
+ 1. **本轮清单**:round-vN.md 列出本轮每张图——图种 / 档位 / 版本 / 本机真实路径 / 插入位置
64
+ 2. **插入位置(两段边界)**:每张图标出插在原文哪两段之间——**上一段最后一句 + 「……」 + 下一段第一句**,用户一眼定位
65
+ 3. **上下文与引用**:用了哪几段明确到 §¶;上下文只放**首句 + 「……」 + 尾句**;用了本地表格/数据/代码文件一律给**引用链接不内联内容**
66
+ 4. **图片版本**:文件名带 `-vN`,旧版永不覆盖,随时可回溯对比
67
+ 5. **两份演进文档**:`paper-with-figures.md`(原文结构 + 已插图,无关段落省略,每次更新同一个)与 `final/paper-final.md`(最终论文版本,附按用户文档格式的可打开副本:Word→docx、LaTeX→tex、WPS→docx)
68
+
69
+ **最终成稿流程**(用户说「定稿」时):先提醒核对数据是否更新 → 用户确认后才 premium 定稿 → 定稿后必问矢量图(提醒:本地 AI 重绘、token 贵、速度慢,比赛/数模默认不做;确认做则按元素分层重绘成可编辑矢量,应用按用户偏好)。
70
+
71
+ 🔴 **CLI 优先**:全程走 `pf`(或 REST 直连)沉淀状态,GUI 只留给人看图和点审批——插件的门禁与留痕都挂在 CLI 上。
72
+
73
+ ---
74
+
59
75
  ## 🔴 草稿策略:低文字密度 + 科研风格基线(2026-09-25 实测定规)
60
76
 
61
77
  standard 档的乱码率随**卡面文字量**上升:实测说明性小字是乱码重灾区
@@ -270,5 +286,6 @@ curl -s https://promptfigure.top/downloads/promptfigure-api.version.json
270
286
  | `references/api-contract.md` | 完整契约、网页工作流 4 步、多语言示例、批处理、WAF |
271
287
  | `references/troubleshooting.md` | 润色失败、WAF 403、balance 滞后、出图质量差 |
272
288
  | `references/document-workflow.md` | 用户给了 `.tex` / `.docx` / `.md` 文稿要配图:怎么定位插图位、从上下文写 prompt、插回文档;LaTeX 编译环境探测与官方下载指引(MiKTeX/TeX Live/TinyTeX/Tectonic/Overleaf) |
289
+ | `references/deliverables-ledger.md` | **每轮交付**:round-vN.md 清单/插入位置/上下文引用、paper-with-figures.md 演进版、final/ 最终论文版本与格式副本、最终成稿流程 |
273
290
  | `references/figure-upgrade-workflow.md` | 用户要**优化已有图表**或**整文批量升级**:结果图数据溯源+本地重绘、示意图 AI 升级、结构组合、单图精修/整文批处理两种模式、figure-ledger.json 追溯台账 |
274
291
  | `references/proactive-upgrade.md` | 用户给的是 **PDF/WPS**(非 LaTeX)、说不出哪里插图要你**主动建议**、要从**原始数据**推演配图、或想参考顶会/SCI 论文的图学风格:PDF 解析、MCM 插图位惯例、四步管线(分析→推演→提示词→迭代)、refs/ 风格库与合规红线 |
@@ -0,0 +1,119 @@
1
+ # 每轮交付与台账(round deliverables & ledger)
2
+
3
+ > 场景:每次用 promptFigure 出图 / 优化图片 / 整文批处理结束后,宿主 AI 必须按本文件产出结构化交付。
4
+ > 目的:用户随时能回答三个问题——**这轮做了什么图、图插在原文哪里、用了什么上下文/数据**。
5
+ > 🔴 本文件是硬性协议:缺任何一项 = 交付不完整。CLI 优先——全程用 `pf` 命令沉淀状态,GUI 只留给人「看一眼 / 点审批」。
6
+
7
+ ---
8
+
9
+ ## 0. CLI 优先原则(2026-09-25 定规)
10
+
11
+ - 出图、核验、审批、定稿全链路都有 CLI:`pf open → craft → render → qa → review resolve → premium`,**能用 CLI 就用 CLI**
12
+ - GUI 只用于两件事:人亲眼看图、人点审批。插件的门禁与留痕都挂在 CLI 上,走 CLI 的每一步都可审计
13
+ - 每轮结束的交付目录里,路径一律引用**用户本机真实路径**(相对当前交付目录优先,跨目录用绝对路径),禁止只给「见图库」这类指不到文件的话
14
+
15
+ ---
16
+
17
+ ## 1. 交付目录结构(每一轮 = 一个新文件夹)
18
+
19
+ 在**用户当前工作目录**(论文旁边)建 `promptfigure-out/`,每轮交付新建递增版本文件夹:
20
+
21
+ ```
22
+ promptfigure-out/
23
+ ├── v1/ ← 第 1 轮交付(每次交付新建一个,v1 → v2 → v3…)
24
+ │ ├── round-v1.md ← 本轮反馈(见 §2 必含项)
25
+ │ └── figures/ ← 本轮产出的图(文件名带版本号)
26
+ │ ├── fig-method-v1.png
27
+ │ └── fig-method-v2.png ← 改版后重新出,旧版保留可回溯
28
+ ├── v2/round-v2.md ← 第 2 轮……
29
+ ├── paper-with-figures.md ← 不断演进的「论文 + 已插图」版(见 §3)
30
+ └── final/ ← 最终论文版本(见 §4,仅最终成稿时建)
31
+ ├── paper-final.md
32
+ └── paper-final.docx ← 格式副本,按用户原文档格式(见 §4)
33
+ ```
34
+
35
+ - 版本号判断:`ls promptfigure-out/` 取最大 N + 1;用户已有自己的目录约定时听用户的
36
+ - `figures/` 里的图**永不覆盖**:同一张图的每个版本都是独立文件(`-v1/-v2/…`),旧版要能随时打开对比
37
+
38
+ ---
39
+
40
+ ## 2. round-vN.md 必含项(本轮反馈)
41
+
42
+ 模板(每轮照此填,没有的项目写「无」并说明原因,禁止静默省略):
43
+
44
+ ```markdown
45
+ # 第 N 轮交付 · YYYY-MM-DD HH:mm
46
+
47
+ ## 本轮清单
48
+ | # | 图 | 图种 | 档位 | 版本 | 本机路径 | 插入位置(§¶) | 状态 |
49
+ |---|---|---|---|---|---|---|---|
50
+ | 1 | 方法流程图 | pipeline | premium | v2 | figures/fig-method-v2.png | §2 ¶1 ↔ §2 ¶2 之间 | 已审批 |
51
+
52
+ ## 插入位置(图放在原文哪两段之间)
53
+ 逐张图给出——**上一段最后一句 + 「……」 + 下一段第一句**,让用户一眼定位:
54
+
55
+ > ……la optimización por enjambre de partículas ajusta automáticamente los principales parámetros.……La estrategia de aumento de datos incluye recorte aleatorio, jitter de color y deformación elástica.
56
+ > (图 1 插在上述两句之间,即 §2 ¶1 末 ↔ §2 ¶2 首)
57
+
58
+ - 自然段为粒度(¶),不用句号硬切;原文没有下一段时注明「§2 段末,文末」
59
+
60
+ ## 所用上下文(只放首尾句,中间省略)
61
+ - 原文上下文:「首句……尾句」(禁止整段贴入;用了哪几段就列哪几条,§¶ 标清楚)
62
+ - 引用范围声明:本次生成具体使用了 §2 ¶1–¶2(明确到段,供用户核对)
63
+
64
+ ## 数据与引用
65
+ - 本地表格/数据文件:[table1.csv](../data/table1.csv)、[run_exp2.m](../code/run_exp2.m) —— **只给引用链接,不内联内容**
66
+ - 参考图:refDataUrl(本地图 /path/to/ref.png)或 refUrl(https://…);用了就标,没用写「无」
67
+
68
+ ## 优化前 → 优化后(仅「优化已有图」任务)
69
+ | 图 | 优化前 | 优化后 | 改了什么 | 所用上下文(首尾句) |
70
+ |---|---|---|---|---|
71
+ | 原图1(曲线组) | figures/orig/fig1-old.png | figures/fig1-v1.png | 色板改语义化、字号 8pt、去 3D | 「首句……尾句」 |
72
+ ```
73
+
74
+ **三条填写铁律**:
75
+ 1. **上下文只放首句 + 尾句,中间一律省略号**——整段进 MD 会让用户无法快速审阅,也让版本 diff 爆炸
76
+ 2. **表格 / 代码 / 数据文件一律引用链接,禁止内联内容**——内联会让 MD 迅速腐烂、版本更新时无法对账;要「看见这轮用了什么」,点链接就是
77
+ 3. **每张图必须看得到版本**(文件名 `-vN` + 清单里的版本列 + 状态列)——版本是回溯和 diff 的唯一坐标
78
+
79
+ ---
80
+
81
+ ## 3. paper-with-figures.md(不断演进的呈现版)
82
+
83
+ - 结构 = 用户原文的章节树;**本轮涉及的段落**照录,**不涉及的段落**一律省略为一行:`……(§3 全文见原文)`
84
+ - 每张图插在自己的插入位置(§2 ¶1 ↔ ¶2 之间),图片用相对路径引用 vN 文件夹里的真实文件
85
+ - 每次交付**更新同一个文件**(或在文件名带版本 `paper-with-figures.vN.md` 保留历史)——用户随时打开这一个文件就能看到「论文现在长什么样」
86
+
87
+ ---
88
+
89
+ ## 4. final/ 最终论文版本
90
+
91
+ 用户要求「最终成稿 / 定稿」时才建,包含:
92
+
93
+ 1. `final/paper-final.md`——最终呈现版(全部已审批图就位、引用与上下文清单汇总)
94
+ 2. `final/paper-final.<用户格式>`——**格式副本,按用户原文档格式来**:
95
+ - Word/.docx → 交付 .docx(有 pandoc/docx 工具就用;无工具要明说「做不了格式副本,交付 MD」)
96
+ - LaTeX/.tex → 交付 .tex(图用 `\includegraphics` 引用真实路径,结构可编译)
97
+ - WPS → 交付 .docx(WPS 可直接打开)
98
+ - 🔴 **副本必须能正常打开**:交付前自己验证(文件非零、结构完整、能找到图);验证不了就明说,禁止交一个打不开的坏副本
99
+
100
+ ---
101
+
102
+ ## 5. 最终成稿流程(用户说「定稿 / 最终版」时按此走)
103
+
104
+ 1. **先提醒核对**:提醒用户「数据有没有更新?要不要重新跑一次核验?」——用户明确确认后,才进入 premium 最终定稿
105
+ 2. **确认高级定稿**:向用户复述「将消耗 premium 档额度出高清定稿,N 张」并取得确认;未确认不动手
106
+ 3. **定稿后问矢量图**(衔接 SKILL.md 阶段 5):
107
+ - 提醒成本:矢量图由**用户自己的 AI 本地重绘**,token 消耗大、速度慢
108
+ - 🔴 **比赛 / 数学建模 / 学术会议竞赛:默认不做**,速度优先;只有时间充裕才做
109
+ 4. **用户确认做矢量图时**:把最终图**按元素分层重绘**为可编辑矢量(PPT 形状 / 分层 SVG 分组,每个模块、箭头、标签是独立对象),在用户偏好的应用里操作——**PPT 还是 WPS 还是其他,按用户主要偏好来**;描摹矢量(位图转路径)一律禁止
110
+
111
+ ---
112
+
113
+ ## 6. 自检清单(每轮交付前过一遍)
114
+
115
+ - [ ] 版本文件夹新建(vN 递增)、图带版本号、旧版未覆盖
116
+ - [ ] round-vN.md 五项齐:清单 / 插入位置(两段边界句)/ 上下文(首尾句)/ 数据引用(链接)/ 优化前后(如适用)
117
+ - [ ] paper-with-figures.md 已更新到含本轮所有图
118
+ - [ ] 路径全部指得到真实文件(md 里的链接点得开)
119
+ - [ ] final/ 仅在最终成稿时出现,格式副本已验证可打开
@@ -17,6 +17,8 @@
17
17
 
18
18
  **一句话分流:数字支撑 → 本地画;结构故事 → API 画;一张图里混着两者 → 拆开,各走各的,最后拼版。**
19
19
 
20
+ > 🔴 **每轮结束必须交付台账**:新建 `promptfigure-out/vN/round-vN.md`——本轮清单(图种/档位/版本/本机路径/插入位置)、每张图的插入位置(上段末句 + …… + 下段首句)、所用上下文(只放首尾句)、数据文件只给引用链接;「优化前 → 优化后」对比也落在这里。全文协议见 `deliverables-ledger.md`。
21
+
20
22
  > 🔴 **「把终稿变成可编辑矢量/PPT 版」不属于以上任何一类**——那不是 matplotlib 的活,也不是出图 API 的活。走 `SKILL.md` **阶段 5**:终稿交付后先问用户要不要,比赛/数模默认不做(速度优先),时间充裕才由**宿主 AI 用本地的矢量工具/代码照着重绘**(禁止描摹,必须每个元素可编辑)。§3 的 matplotlib 只负责 A1 数据图的真数据重绘(防数字造假),不碰任何矢量转换。
21
23
 
22
24
  ---
@@ -375,6 +375,37 @@ pf craft --at "§3.2 ¶2" --figure-type pipeline \
375
375
  - **路径写法**:Git Bash 的 `/c/...`、Windows 的 `C:\...`、POSIX 的 `/home/...` 都能用;
376
376
  但 craft --out 建议用相对路径(当前目录下),最不容易踩环境差异。
377
377
 
378
+ ## 每轮交付与台账(每轮结束必交,CLI 优先)
379
+
380
+ **CLI 优先**:出图、核验、审批、定稿全走 `pf` 命令(`pf next` 永远告诉你下一步);
381
+ GUI 只留给人两件事——亲眼看图、点审批。插件的门禁与留痕都挂在 CLI 上,
382
+ 走 CLI 的每一步在 `events.jsonl` 里可审计;无头环境(SSH/容器/CI)本来就全 CLI。
383
+
384
+ 每轮交付在**用户工作目录**建 `promptfigure-out/`,每轮一个新版本文件夹 `vN/`(v1 → v2…):
385
+
386
+ ```
387
+ promptfigure-out/
388
+ ├── vN/
389
+ │ ├── round-vN.md ← 本轮反馈(下面的必含项)
390
+ │ └── figures/ ← 本轮图(副本或引用,文件名带 -vN)
391
+ ├── paper-with-figures.md ← 论文+已插图的演进版(无关段落省略,每次更新同一个)
392
+ └── final/paper-final.md + 格式副本 ← 最终论文版本(定稿时才建)
393
+ ```
394
+
395
+ **round-vN.md 必含**(与 promptfigure-api skill 的 deliverables-ledger.md 同一协议):
396
+ 1. **本轮清单**:每张图——figureId / 图种 / 档位 / 版本 / 本机真实路径(本插件即
397
+ `~/.promptfigure/projects/<docId>/figures/<figureId>/vN.png`)/ 插入位置(§¶)
398
+ 2. **插入位置(两段边界)**:上一段最后一句 + 「……」 + 下一段第一句,用户一眼定位
399
+ 3. **所用上下文**:用了哪几段明确到 §¶;上下文只放**首句 + 「……」 + 尾句**;
400
+ 数据/表格/代码文件一律给引用链接,不内联内容
401
+ 4. **图片版本**:每张图的每个版本独立文件(vN),旧版永不覆盖
402
+ 5. **优化前→优化后**(优化任务):原图路径 vs 新图路径 + 改了什么 + 所用上下文(首尾句)
403
+
404
+ **最终成稿流程**(用户说「定稿」):提醒核对数据是否更新 → 用户确认后才 premium 定稿 →
405
+ 定稿后必问矢量图(本地 AI 重绘、token 贵、速度慢;比赛/数模默认不做;确认做则按元素
406
+ 分层重绘成可编辑矢量,PPT/WPS 按用户偏好)——完整协议见 promptfigure-api skill 的
407
+ `references/deliverables-ledger.md`。
408
+
378
409
  ## 事件回放
379
410
 
380
411
  `~/.promptfigure/projects/<docId>/events.jsonl` 只追加不改写 —— 审批历史、
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "promptfigure",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "promptFigure 本地插件:在你的 AI 宿主(Codex / Claude Code 等)里为论文配科研图。开文档(LaTeX 本地编译)、画锚点、本地规则层组装提示词、调出图、收审批。npm 安装即附带 promptfigure-local / promptfigure-api 两个 Agent Skill。",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,45 @@
1
+ # 安装这个技能(AI Agent Skill)
2
+
3
+ > **版本 1.6.10**(2026-09-24)。下载页:https://promptfigure.top/skill 。查最新版:`curl -s https://promptfigure.top/downloads/promptfigure-api.version.json`;本地已装版本看 `SKILL.md` frontmatter 的 `version`。版本语义:主版本=接口不兼容改动(需重读 SKILL.md),次版本=新增能力,修订号=勘误。
4
+
5
+ 把 `promptfigure-api/` 整个文件夹放进你的 AI 工具的技能目录即可:
6
+
7
+ | 工具 | 技能目录(复制到此处) |
8
+ |---|---|
9
+ | Claude Code | `~/.claude/skills/promptfigure-api/` |
10
+ | Claude Desktop(Agent Skills) | 设置 → Skills → 导入本 zip,或放 `~/.claude/skills/` |
11
+ | WorkBuddy / OpenClaw | `~/.workbuddy/skills/promptfigure-api/` |
12
+ | Codex / Cursor / Cline 等任意 Agent | 无技能目录的,把 `SKILL.md` 内容追加到 `AGENTS.md` / `CLAUDE.md` / 规则文件末尾 |
13
+
14
+ 安装后对 AI 说「帮我用 promptFigure 画一张 XXX 图」,它会自动读取 `SKILL.md` 并按流程执行:
15
+ 注册/登录 → 拿 key(或复用你已有的 `PROMPTFIGURE_KEY`)→ 调 API 出图。
16
+
17
+ ## 本包还附带本地插件(plugin/)
18
+
19
+ 一个 zip 两样东西:根目录的 `SKILL.md` 是纯 REST 技能(上面的装法即用);
20
+ `plugin/` 是本地插件(`pf` CLI + promptfigure-local skill + 托盘)。想要「文档只读预览 /
21
+ 锚点定位 / GUI 审批 / 本地规则层 / 矢量导出」这些本机能力时再装它:
22
+
23
+ ```bash
24
+ cd plugin && npm install && npm link # 之后 pf 命令全局可用
25
+ ```
26
+
27
+ 详见 [PLUGIN.md](PLUGIN.md);纯 REST 用户完全不用碰 plugin/。
28
+
29
+ ## 需要准备
30
+
31
+ - 一个账号:https://promptfigure.top 注册(邮箱 + 密码 ≥8 位,无需邮箱验证)
32
+ - 余额:控制台充值($1 起整数,每满 $50 赠 $1);API 按次计费 standard $0.02 / premium $0.15
33
+ - API key:控制台「API 密钥」创建,`pf_` 开头明文只显示一次
34
+
35
+ ## 保持最新
36
+
37
+ 技能会过期。程序化查最新版本(不用下载整个包):
38
+
39
+ ```bash
40
+ curl -s https://promptfigure.top/downloads/promptfigure-api.version.json
41
+ ```
42
+
43
+ 本地 `version` 低于线上 `version` → 到下载页取最新包:https://promptfigure.top/skill
44
+ (直链:https://promptfigure.top/downloads/promptfigure-api.zip ,或 GitHub Release 资产 promptfigure-api-1.6.10.zip)
45
+ 安装说明与 API 文档:https://promptfigure.top/docs/zh-CN/api
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  name: promptfigure-api
3
3
  description: 用 promptFigure 生成科研/学术配图(流程图、机制图、管线图、技术路线图、图形摘要),以及优化已有图表、整文批量升级(数据图本地重绘 + 示意图 AI 重构 + 可编辑矢量版 + 追溯台账)。当用户要「画一张图」「生成论文配图/示意图/机制图/graphical abstract」「把论文里的图变好看/变高级」「批量优化整篇文章的图」「要可编辑的矢量图/PPT 版」、给了 PDF/WPS/Word 文稿要配图或要主动建议插图位、或要配置 promptFigure API key、或要用 REST 接口批量出图时使用。走 https://promptfigure.top 的 /api/v1/generate,Bearer pf_ key 鉴权,返回 base64 PNG。强制学术字体规范(图内无衬线、禁手写/花体)与上下文蒸馏规则(原文段落绝不直接进 prompt,先蒸馏成实体/结构/图种三清单再组装)。网页端有多轮问询/二次确认,API 端一次性提交——所以要把用户绘图意图一次说清楚,服务端负责润色成完整示意。
4
- version: 1.6.8
4
+ version: 1.6.10
5
5
  license: MIT
6
6
  metadata:
7
- version: "1.6.8"
7
+ version: "1.6.10"
8
8
  author: promptFigure (zhangmask)
9
9
  homepage: https://promptfigure.top
10
10
  repository: https://github.com/zhangmask/promptfigure-skill
@@ -22,7 +22,7 @@ metadata:
22
22
  **整个流程里唯一花钱的动作是 API 调用**。所有迭代都在本地免费环节完成:
23
23
 
24
24
  ```
25
- 阶段 0 意图确认(对用户)→ 阶段 1 写提示词 → 阶段 2 提示词审核 → 阶段 3 API 出图 → 阶段 4 成图审核 → 阶段 5 可编辑矢量版(可选,交付后必问用户)
25
+ 阶段 0 意图确认(对用户)→ 阶段 1 写提示词 → 阶段 2 提示词审核 → 阶段 3 API 出图 → 阶段 4 成图审核 → 阶段 6 每轮交付与台账(每轮结束必交)→ 阶段 5 可编辑矢量版(可选,最终成稿时必问用户)
26
26
  ↑__________ 打回/不满意只回到这里改 prompt,免费 __________↑
27
27
  ```
28
28
 
@@ -56,6 +56,22 @@ metadata:
56
56
 
57
57
  ---
58
58
 
59
+ ## 🔴 阶段 6:每轮交付与台账(每轮结束必交,用户随时可查)
60
+
61
+ 每次出图 / 优化 / 批处理结束,在用户工作目录建 `promptfigure-out/`,**每轮交付一个新版本文件夹**(v1 → v2 → v3…),协议全文见 `references/deliverables-ledger.md`,五条硬性要求:
62
+
63
+ 1. **本轮清单**:round-vN.md 列出本轮每张图——图种 / 档位 / 版本 / 本机真实路径 / 插入位置
64
+ 2. **插入位置(两段边界)**:每张图标出插在原文哪两段之间——**上一段最后一句 + 「……」 + 下一段第一句**,用户一眼定位
65
+ 3. **上下文与引用**:用了哪几段明确到 §¶;上下文只放**首句 + 「……」 + 尾句**;用了本地表格/数据/代码文件一律给**引用链接不内联内容**
66
+ 4. **图片版本**:文件名带 `-vN`,旧版永不覆盖,随时可回溯对比
67
+ 5. **两份演进文档**:`paper-with-figures.md`(原文结构 + 已插图,无关段落省略,每次更新同一个)与 `final/paper-final.md`(最终论文版本,附按用户文档格式的可打开副本:Word→docx、LaTeX→tex、WPS→docx)
68
+
69
+ **最终成稿流程**(用户说「定稿」时):先提醒核对数据是否更新 → 用户确认后才 premium 定稿 → 定稿后必问矢量图(提醒:本地 AI 重绘、token 贵、速度慢,比赛/数模默认不做;确认做则按元素分层重绘成可编辑矢量,应用按用户偏好)。
70
+
71
+ 🔴 **CLI 优先**:全程走 `pf`(或 REST 直连)沉淀状态,GUI 只留给人看图和点审批——插件的门禁与留痕都挂在 CLI 上。
72
+
73
+ ---
74
+
59
75
  ## 🔴 草稿策略:低文字密度 + 科研风格基线(2026-09-25 实测定规)
60
76
 
61
77
  standard 档的乱码率随**卡面文字量**上升:实测说明性小字是乱码重灾区
@@ -270,5 +286,6 @@ curl -s https://promptfigure.top/downloads/promptfigure-api.version.json
270
286
  | `references/api-contract.md` | 完整契约、网页工作流 4 步、多语言示例、批处理、WAF |
271
287
  | `references/troubleshooting.md` | 润色失败、WAF 403、balance 滞后、出图质量差 |
272
288
  | `references/document-workflow.md` | 用户给了 `.tex` / `.docx` / `.md` 文稿要配图:怎么定位插图位、从上下文写 prompt、插回文档;LaTeX 编译环境探测与官方下载指引(MiKTeX/TeX Live/TinyTeX/Tectonic/Overleaf) |
289
+ | `references/deliverables-ledger.md` | **每轮交付**:round-vN.md 清单/插入位置/上下文引用、paper-with-figures.md 演进版、final/ 最终论文版本与格式副本、最终成稿流程 |
273
290
  | `references/figure-upgrade-workflow.md` | 用户要**优化已有图表**或**整文批量升级**:结果图数据溯源+本地重绘、示意图 AI 升级、结构组合、单图精修/整文批处理两种模式、figure-ledger.json 追溯台账 |
274
291
  | `references/proactive-upgrade.md` | 用户给的是 **PDF/WPS**(非 LaTeX)、说不出哪里插图要你**主动建议**、要从**原始数据**推演配图、或想参考顶会/SCI 论文的图学风格:PDF 解析、MCM 插图位惯例、四步管线(分析→推演→提示词→迭代)、refs/ 风格库与合规红线 |
@@ -0,0 +1,119 @@
1
+ # 每轮交付与台账(round deliverables & ledger)
2
+
3
+ > 场景:每次用 promptFigure 出图 / 优化图片 / 整文批处理结束后,宿主 AI 必须按本文件产出结构化交付。
4
+ > 目的:用户随时能回答三个问题——**这轮做了什么图、图插在原文哪里、用了什么上下文/数据**。
5
+ > 🔴 本文件是硬性协议:缺任何一项 = 交付不完整。CLI 优先——全程用 `pf` 命令沉淀状态,GUI 只留给人「看一眼 / 点审批」。
6
+
7
+ ---
8
+
9
+ ## 0. CLI 优先原则(2026-09-25 定规)
10
+
11
+ - 出图、核验、审批、定稿全链路都有 CLI:`pf open → craft → render → qa → review resolve → premium`,**能用 CLI 就用 CLI**
12
+ - GUI 只用于两件事:人亲眼看图、人点审批。插件的门禁与留痕都挂在 CLI 上,走 CLI 的每一步都可审计
13
+ - 每轮结束的交付目录里,路径一律引用**用户本机真实路径**(相对当前交付目录优先,跨目录用绝对路径),禁止只给「见图库」这类指不到文件的话
14
+
15
+ ---
16
+
17
+ ## 1. 交付目录结构(每一轮 = 一个新文件夹)
18
+
19
+ 在**用户当前工作目录**(论文旁边)建 `promptfigure-out/`,每轮交付新建递增版本文件夹:
20
+
21
+ ```
22
+ promptfigure-out/
23
+ ├── v1/ ← 第 1 轮交付(每次交付新建一个,v1 → v2 → v3…)
24
+ │ ├── round-v1.md ← 本轮反馈(见 §2 必含项)
25
+ │ └── figures/ ← 本轮产出的图(文件名带版本号)
26
+ │ ├── fig-method-v1.png
27
+ │ └── fig-method-v2.png ← 改版后重新出,旧版保留可回溯
28
+ ├── v2/round-v2.md ← 第 2 轮……
29
+ ├── paper-with-figures.md ← 不断演进的「论文 + 已插图」版(见 §3)
30
+ └── final/ ← 最终论文版本(见 §4,仅最终成稿时建)
31
+ ├── paper-final.md
32
+ └── paper-final.docx ← 格式副本,按用户原文档格式(见 §4)
33
+ ```
34
+
35
+ - 版本号判断:`ls promptfigure-out/` 取最大 N + 1;用户已有自己的目录约定时听用户的
36
+ - `figures/` 里的图**永不覆盖**:同一张图的每个版本都是独立文件(`-v1/-v2/…`),旧版要能随时打开对比
37
+
38
+ ---
39
+
40
+ ## 2. round-vN.md 必含项(本轮反馈)
41
+
42
+ 模板(每轮照此填,没有的项目写「无」并说明原因,禁止静默省略):
43
+
44
+ ```markdown
45
+ # 第 N 轮交付 · YYYY-MM-DD HH:mm
46
+
47
+ ## 本轮清单
48
+ | # | 图 | 图种 | 档位 | 版本 | 本机路径 | 插入位置(§¶) | 状态 |
49
+ |---|---|---|---|---|---|---|---|
50
+ | 1 | 方法流程图 | pipeline | premium | v2 | figures/fig-method-v2.png | §2 ¶1 ↔ §2 ¶2 之间 | 已审批 |
51
+
52
+ ## 插入位置(图放在原文哪两段之间)
53
+ 逐张图给出——**上一段最后一句 + 「……」 + 下一段第一句**,让用户一眼定位:
54
+
55
+ > ……la optimización por enjambre de partículas ajusta automáticamente los principales parámetros.……La estrategia de aumento de datos incluye recorte aleatorio, jitter de color y deformación elástica.
56
+ > (图 1 插在上述两句之间,即 §2 ¶1 末 ↔ §2 ¶2 首)
57
+
58
+ - 自然段为粒度(¶),不用句号硬切;原文没有下一段时注明「§2 段末,文末」
59
+
60
+ ## 所用上下文(只放首尾句,中间省略)
61
+ - 原文上下文:「首句……尾句」(禁止整段贴入;用了哪几段就列哪几条,§¶ 标清楚)
62
+ - 引用范围声明:本次生成具体使用了 §2 ¶1–¶2(明确到段,供用户核对)
63
+
64
+ ## 数据与引用
65
+ - 本地表格/数据文件:[table1.csv](../data/table1.csv)、[run_exp2.m](../code/run_exp2.m) —— **只给引用链接,不内联内容**
66
+ - 参考图:refDataUrl(本地图 /path/to/ref.png)或 refUrl(https://…);用了就标,没用写「无」
67
+
68
+ ## 优化前 → 优化后(仅「优化已有图」任务)
69
+ | 图 | 优化前 | 优化后 | 改了什么 | 所用上下文(首尾句) |
70
+ |---|---|---|---|---|
71
+ | 原图1(曲线组) | figures/orig/fig1-old.png | figures/fig1-v1.png | 色板改语义化、字号 8pt、去 3D | 「首句……尾句」 |
72
+ ```
73
+
74
+ **三条填写铁律**:
75
+ 1. **上下文只放首句 + 尾句,中间一律省略号**——整段进 MD 会让用户无法快速审阅,也让版本 diff 爆炸
76
+ 2. **表格 / 代码 / 数据文件一律引用链接,禁止内联内容**——内联会让 MD 迅速腐烂、版本更新时无法对账;要「看见这轮用了什么」,点链接就是
77
+ 3. **每张图必须看得到版本**(文件名 `-vN` + 清单里的版本列 + 状态列)——版本是回溯和 diff 的唯一坐标
78
+
79
+ ---
80
+
81
+ ## 3. paper-with-figures.md(不断演进的呈现版)
82
+
83
+ - 结构 = 用户原文的章节树;**本轮涉及的段落**照录,**不涉及的段落**一律省略为一行:`……(§3 全文见原文)`
84
+ - 每张图插在自己的插入位置(§2 ¶1 ↔ ¶2 之间),图片用相对路径引用 vN 文件夹里的真实文件
85
+ - 每次交付**更新同一个文件**(或在文件名带版本 `paper-with-figures.vN.md` 保留历史)——用户随时打开这一个文件就能看到「论文现在长什么样」
86
+
87
+ ---
88
+
89
+ ## 4. final/ 最终论文版本
90
+
91
+ 用户要求「最终成稿 / 定稿」时才建,包含:
92
+
93
+ 1. `final/paper-final.md`——最终呈现版(全部已审批图就位、引用与上下文清单汇总)
94
+ 2. `final/paper-final.<用户格式>`——**格式副本,按用户原文档格式来**:
95
+ - Word/.docx → 交付 .docx(有 pandoc/docx 工具就用;无工具要明说「做不了格式副本,交付 MD」)
96
+ - LaTeX/.tex → 交付 .tex(图用 `\includegraphics` 引用真实路径,结构可编译)
97
+ - WPS → 交付 .docx(WPS 可直接打开)
98
+ - 🔴 **副本必须能正常打开**:交付前自己验证(文件非零、结构完整、能找到图);验证不了就明说,禁止交一个打不开的坏副本
99
+
100
+ ---
101
+
102
+ ## 5. 最终成稿流程(用户说「定稿 / 最终版」时按此走)
103
+
104
+ 1. **先提醒核对**:提醒用户「数据有没有更新?要不要重新跑一次核验?」——用户明确确认后,才进入 premium 最终定稿
105
+ 2. **确认高级定稿**:向用户复述「将消耗 premium 档额度出高清定稿,N 张」并取得确认;未确认不动手
106
+ 3. **定稿后问矢量图**(衔接 SKILL.md 阶段 5):
107
+ - 提醒成本:矢量图由**用户自己的 AI 本地重绘**,token 消耗大、速度慢
108
+ - 🔴 **比赛 / 数学建模 / 学术会议竞赛:默认不做**,速度优先;只有时间充裕才做
109
+ 4. **用户确认做矢量图时**:把最终图**按元素分层重绘**为可编辑矢量(PPT 形状 / 分层 SVG 分组,每个模块、箭头、标签是独立对象),在用户偏好的应用里操作——**PPT 还是 WPS 还是其他,按用户主要偏好来**;描摹矢量(位图转路径)一律禁止
110
+
111
+ ---
112
+
113
+ ## 6. 自检清单(每轮交付前过一遍)
114
+
115
+ - [ ] 版本文件夹新建(vN 递增)、图带版本号、旧版未覆盖
116
+ - [ ] round-vN.md 五项齐:清单 / 插入位置(两段边界句)/ 上下文(首尾句)/ 数据引用(链接)/ 优化前后(如适用)
117
+ - [ ] paper-with-figures.md 已更新到含本轮所有图
118
+ - [ ] 路径全部指得到真实文件(md 里的链接点得开)
119
+ - [ ] final/ 仅在最终成稿时出现,格式副本已验证可打开
@@ -17,6 +17,8 @@
17
17
 
18
18
  **一句话分流:数字支撑 → 本地画;结构故事 → API 画;一张图里混着两者 → 拆开,各走各的,最后拼版。**
19
19
 
20
+ > 🔴 **每轮结束必须交付台账**:新建 `promptfigure-out/vN/round-vN.md`——本轮清单(图种/档位/版本/本机路径/插入位置)、每张图的插入位置(上段末句 + …… + 下段首句)、所用上下文(只放首尾句)、数据文件只给引用链接;「优化前 → 优化后」对比也落在这里。全文协议见 `deliverables-ledger.md`。
21
+
20
22
  > 🔴 **「把终稿变成可编辑矢量/PPT 版」不属于以上任何一类**——那不是 matplotlib 的活,也不是出图 API 的活。走 `SKILL.md` **阶段 5**:终稿交付后先问用户要不要,比赛/数模默认不做(速度优先),时间充裕才由**宿主 AI 用本地的矢量工具/代码照着重绘**(禁止描摹,必须每个元素可编辑)。§3 的 matplotlib 只负责 A1 数据图的真数据重绘(防数字造假),不碰任何矢量转换。
21
23
 
22
24
  ---
@@ -375,6 +375,37 @@ pf craft --at "§3.2 ¶2" --figure-type pipeline \
375
375
  - **路径写法**:Git Bash 的 `/c/...`、Windows 的 `C:\...`、POSIX 的 `/home/...` 都能用;
376
376
  但 craft --out 建议用相对路径(当前目录下),最不容易踩环境差异。
377
377
 
378
+ ## 每轮交付与台账(每轮结束必交,CLI 优先)
379
+
380
+ **CLI 优先**:出图、核验、审批、定稿全走 `pf` 命令(`pf next` 永远告诉你下一步);
381
+ GUI 只留给人两件事——亲眼看图、点审批。插件的门禁与留痕都挂在 CLI 上,
382
+ 走 CLI 的每一步在 `events.jsonl` 里可审计;无头环境(SSH/容器/CI)本来就全 CLI。
383
+
384
+ 每轮交付在**用户工作目录**建 `promptfigure-out/`,每轮一个新版本文件夹 `vN/`(v1 → v2…):
385
+
386
+ ```
387
+ promptfigure-out/
388
+ ├── vN/
389
+ │ ├── round-vN.md ← 本轮反馈(下面的必含项)
390
+ │ └── figures/ ← 本轮图(副本或引用,文件名带 -vN)
391
+ ├── paper-with-figures.md ← 论文+已插图的演进版(无关段落省略,每次更新同一个)
392
+ └── final/paper-final.md + 格式副本 ← 最终论文版本(定稿时才建)
393
+ ```
394
+
395
+ **round-vN.md 必含**(与 promptfigure-api skill 的 deliverables-ledger.md 同一协议):
396
+ 1. **本轮清单**:每张图——figureId / 图种 / 档位 / 版本 / 本机真实路径(本插件即
397
+ `~/.promptfigure/projects/<docId>/figures/<figureId>/vN.png`)/ 插入位置(§¶)
398
+ 2. **插入位置(两段边界)**:上一段最后一句 + 「……」 + 下一段第一句,用户一眼定位
399
+ 3. **所用上下文**:用了哪几段明确到 §¶;上下文只放**首句 + 「……」 + 尾句**;
400
+ 数据/表格/代码文件一律给引用链接,不内联内容
401
+ 4. **图片版本**:每张图的每个版本独立文件(vN),旧版永不覆盖
402
+ 5. **优化前→优化后**(优化任务):原图路径 vs 新图路径 + 改了什么 + 所用上下文(首尾句)
403
+
404
+ **最终成稿流程**(用户说「定稿」):提醒核对数据是否更新 → 用户确认后才 premium 定稿 →
405
+ 定稿后必问矢量图(本地 AI 重绘、token 贵、速度慢;比赛/数模默认不做;确认做则按元素
406
+ 分层重绘成可编辑矢量,PPT/WPS 按用户偏好)——完整协议见 promptfigure-api skill 的
407
+ `references/deliverables-ledger.md`。
408
+
378
409
  ## 事件回放
379
410
 
380
411
  `~/.promptfigure/projects/<docId>/events.jsonl` 只追加不改写 —— 审批历史、
package/web/app.js CHANGED
@@ -407,21 +407,27 @@ function paintFigures() {
407
407
  // ---------- 审批控件(侧栏卡片与浮层共用 —— 审批永远针对具体的图) ----------
408
408
  function reviewControls(f) {
409
409
  const rev = state.review[f.figureId] || { status: "pending", note: "" };
410
+ const byLabel = rev.by === "ai" ? '<span class="by-ai" title="这条判定是 AI 写的,不是你——请自己看一眼图再改判">⚠ AI 判定</span>'
411
+ : rev.by === "user" ? '<span class="by-user" title="你本人点的">本人</span>' : "";
410
412
  const box = document.createElement("div");
411
413
  box.className = "review-ctl";
412
414
  box.innerHTML = `
413
- <div class="meta">${badgeOf(rev.status)} <b>${escapeHtml(f.figureId)}</b> @${escapeHtml(f.at)} · ${escapeHtml(latestVer(f).model)}${f.versions.length > 1 ? ` · ${f.versions.length} 版` : ""}</div>
415
+ <div class="meta">${badgeOf(rev.status)} <b>${escapeHtml(f.figureId)}</b> @${escapeHtml(f.at)} · ${escapeHtml(latestVer(f).model)}${f.versions.length > 1 ? ` · ${f.versions.length} 版` : ""}${byLabel ? ` · 审批来源 ${byLabel}` : ""}</div>
414
416
  ${rev.note ? `<div class="meta">意见:${escapeHtml(rev.note)}</div>` : ""}
415
- <textarea class="note-box" placeholder="哪里不对?(可选,AI 会读到)"></textarea>
417
+ <textarea class="note-box" placeholder="写哪里不对或建议(AI 会读到;点「驳回」请写具体缺陷)"></textarea>
416
418
  <div class="btn-row">
417
419
  <button class="btn ok" data-act="approve">通过</button>
418
420
  <button class="btn no" data-act="reject">驳回</button>
419
421
  </div>
422
+ <div class="btn-hint">通过后 AI 才能出高清定稿 · 驳回 = AI 按意见重画 · 反馈 = 只提建议、图仍待你审批</div>
420
423
  <div class="btn-row"><button class="btn ghost" data-act="feedback">提交反馈给 AI</button></div>`;
421
424
  box.querySelectorAll("[data-act]").forEach((btn) => {
422
425
  btn.onclick = async () => {
423
426
  const note = box.querySelector(".note-box").value.trim();
424
427
  const act = btn.dataset.act;
428
+ // 驳回不带意见 = AI 只能盲改(精修状态机拿不到具体缺陷)——拦一道
429
+ if (act === "reject" && !note &&
430
+ !confirm("驳回但没写意见 —— AI 只能盲改。\n建议在上方写清楚哪里不对;确定要空意见驳回?")) return;
425
431
  const status = act === "approve" ? "approved" : act === "feedback" ? "pending" : "rejected";
426
432
  const resp = await fetch(`/api/review?doc=${DOC}`, {
427
433
  method: "POST",
@@ -430,7 +436,7 @@ function reviewControls(f) {
430
436
  });
431
437
  const data = await resp.json();
432
438
  if (!resp.ok) return toast("提交失败:" + (data.error || resp.status));
433
- toast(act === "approve" ? "已通过,AI 可以出定稿了" : act === "feedback" ? "反馈已提交,AI 会读到" : "已驳回");
439
+ toast(act === "approve" ? "已通过,AI 会接着出高清版" : act === "feedback" ? "反馈已提交,AI 会读到" : "已驳回,AI 会按你的意见重画");
434
440
  await loadState(); paintAll();
435
441
  // 审批队列开着 → 这张已离开队列,原位自动落到下一张
436
442
  if (!$("#queue").classList.contains("hidden")) renderQueue();
package/web/style.css CHANGED
@@ -136,6 +136,11 @@ main { flex: 1; display: flex; min-height: 0; }
136
136
  .btn.no { background: var(--red-line); color: #fff; }
137
137
  .btn.no:hover { filter: brightness(1.08); }
138
138
  .btn.ghost { background: #eef1f6; color: var(--ink); }
139
+ /* 审批按钮后果说明(三个按钮的区别一眼可见,别让用户猜) */
140
+ .btn-hint { font-size: 11px; color: var(--ink2); margin-top: 6px; line-height: 1.5; }
141
+ /* 审批来源:AI 自批的图必须让人一眼看出来(监督闭环) */
142
+ .by-ai { background: #fde8e8; color: #9b2c2c; border-radius: 8px; padding: 0 6px; font-weight: 600; }
143
+ .by-user { background: #e8f3ec; color: #1c6b3a; border-radius: 8px; padding: 0 6px; }
139
144
 
140
145
  .evt { font-size: 12px; padding: 6px 0; border-bottom: 1px dashed var(--line); color: var(--ink2); }
141
146
  .evt b { color: var(--ink); font-weight: 600; }