新诉讼可视化 · 时间轴大师

SkillDocs & knowledge

Turn raw case materials into a faithful, court-ready case timeline (SVG + PNG + PPTX + VSDX + drawio, plus a traceability index in Word). Use this whenever the user hands over litigation materials — a judgment, complaint, defence, evidence list, contract, bank or Alipay statement, WeChat screenshots, scanned exhibits, photos, or just a spoken account — and wants the chronology drawn: 时间轴, 案件经过时间轴, 事实经过, 时间线, 梳理时间, 把经过画出来, 做一张时间轴图, 诉讼时效时间轴, 履约经过, 付款经过, 供货经过, 催告与送达经过, 两方主张对读. Also trigger when the user says 帮我梳理一下这个案子的经过, 把这些材料做成图, 这些证据整理成时间轴, or supplies scanned/photographed materials with no text layer and expects them read. Handles multiple materials at once, mixed formats (docx / txt / text-layer PDF / scanned PDF / images), and declares which events came from reading images. Default scenario is Chinese litigation; internal instructions are in Chinese because the constraints they encode were written and argued in Chinese.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the 新诉讼可视化 · 时间轴大师 skill

What this skill tells your AI

The instructions your AI receives, as published by miaoqichuan/new-litigation-visualization in plugins/mqc-nlv/skills/mqc-timeline-master/SKILL.md and read by ahel’s review.

时间轴大师,用数学,画准一张时间轴。

它替你解决的那件事

律师手上的材料是散的。一份判决书、几份合同、一叠证据目录、一段微信记录、 几张手机拍的照片,时间散落在其中。要把这些变成一张能交出去的图,难的从来不是画, 是两件事:该上图的事有没有抽全,抽全了排不排得下。

这个模块把这两件事分开做。前半段读材料,判断哪一句写的是已经发生的事实,把它们 归成事项;后半段接过这份清单,用纸张的物理尺寸算出每一个模块该摆在哪里、能有多宽、 能写多少字。两段之间只交接一个数,交接完就互不干涉。

材料怎么顺手怎么给:判决书、起诉状、答辩状、代理意见、合同、证据目录、银行与 支付宝流水、微信聊天记录、扫描件、手机照片,甚至一段口述。不必先整理,不必改格式, 也不必自己先画一张。没有文字层的扫描件与照片同样读得出来,做法是先逐页探测可读 字符数,再按 150 DPI 栅格化,然后逐页看图;交付时会声明哪几份出自读图,那几项请你 自己回原件复核一遍。

为什么能画准:位置、尺寸、容量全部是算出来的

一张 A4 有多宽是定死的。绘图宽 958 px,来自 A4 横版的 1070 减去两侧各 56 的留白。 这个数不由人改,后面所有的数都从它推出来。

推的顺序是一环扣一环的。时间轴上有几个时点,轴就被分成几段,每一段的长度决定了模块 落在哪里;位置定住,才知道相邻两个模块之间还剩多少空;剩多少空,决定一个模块能有 多宽;宽度定了,才知道这个模块能写几个字。所以先定位置,再定尺寸,最后才定能写 多少字,不能倒过来。

这些数不是查表得来的,换一份材料就换一组。编号型的卡宽由事项数压出来:八个事项时 189 px、十二个时 121 px、十六个时 96 px,卡片跟着变矮变窄,列距也从 110 收到 58。 日期型不一样,它的卡宽固定 214 px,因为时点多了是轴上挤、不是卡片变窄,正文至多 六行、约 84 字。期间型更特别,它的容量不是一个数而是每段各一个,条身长度由那一段的 真实天数决定,同一张图上各段差别可以从一个字到三十九个字。

放得下几个模块,同样是算的。第一道是一条不等式:

模块宽 × n  ≤  绘图宽 × 层数

全部模块的横向总宽不许超过绘图宽乘层数。它抓的是逐字段比对抓不住的那一类错,也就是 每个数看着都对、合起来却自相矛盾。

参数交出来之后还有第二道,用一组恒成立的关系把它验算一遍:

图宽 = 2 · 边距 + (n−1) · 列距 + 最小模块宽

等式两边只要差 0.5 像素就当场报错,并指名是哪一处尺寸算漏了。四项、八项、十二项、 十六项、二十项五档实测,差全部是 0.00。这一列不是差不多,是精确相等。

交接的顺序也是定死的:前端交出事项清单,后端按这一档的几何算出每个模块能写多少字, 把这个数交回去,前端再按这个数把字写到位。反过来先写好再排,就只剩两条路, 把字截掉或者把版面挤坏。

抽事实那一段没有公式可用。哪一句是事实、哪几句属于同一件事,是读懂内容之后的判断, 正则拿不到(试过一版按日期与文书名切分的正则切割器,在真材料上切出三组同名、一组 吞掉六成句子)。所以那一段交给模型做,代价是每一条判断都要能对回原句去核。

图上的字,回得去原句

卡片上每一段文字,都必须是原句删掉一些字之后剩下的样子。以原句「2021年3月5日, 双方签订设备采购合同」为例:写成「双方签订设备采购合同」通过;写成「双方签署」 换了词,拦住;写成「设备采购合同由双方签订」调了词序,拦住;补一个原句没有的字, 同样拦住。所以图上的每一句都指得回材料里的哪一句。

不进主轴的有三类:合同条款是约定,诉请是主张,付款计划是承诺。要画到期未付, 材料里得另有记载,比如一笔付款回单、一份催告函、一次对账。它不评价证据, 不认定事实,不给法律意见。

三种形态,由材料的性质定

编号型(numbered_point_timeline)的轴上距离只表先后,等距排开。时点密集、或者 没有精确日期时用它。它是阶梯的底,永远画得出。

日期型(dated_point_timeline)的轴按等长单位格铺开,距离本身在说话。时效届满与 起诉之间隔了多久、催告之后沉默了多久,这一类论点不在事情本身、在事情之间的距离上。 只有日期型能让空白成为证据。

期间型(proportional_gantt)把几段有长度的期间画成条,条长与重叠位置就是主张。 诉讼时效、保证期间、借款与计息起止、工期顺延与停工、租赁期、代持期,都属于这一档。 它还能同时承载时点,落在轴上画成虚线竖线加标注,所以不必另造一种混合型。

形态不由人选。判定顺序是期间型、日期型、编号型,材料的性质满足哪一档的硬条件就走 哪一档。

泳道:有几方各自的主张,就分几道

单侧用于只有一方叙述的材料,全部事项落在轴的一侧。这一档是有讲究的:一方转述对方的 话仍然带着这一方的身份,所以只有一方的材料就是单侧,不许分两侧标上原告主张与被告 主张。

双泳道用于两方各自的材料对读,比如判决书里的诉称与辩称、起诉状对答辩状。原告在上、 被告在下,这个上下是材料给的语义,不许翻转。

同一侧还可以再拆成多条横带,每侧最多三条、两侧共六条。它用来体现层级关系, 比如集团与子公司与项目公司、一审与二审与执行、主债务与保证与反担保。要说明的是, 横带是几何上的错开,泳道是语义上的分方,两件事不是一件:同一方的内容始终放在一起, 所以侧标签始终只有两个,上方一个、下方一个。

侧标签只写百分百确认得了的东西:材料上写着的身份或角色,比如原告与被告、甲方与乙方、 供货方与采购方、支出与收入、公司名。自认、违约、抗辩这类法律定性一律不写,说不准就 不出侧标签。

排不开的时候它不硬画

不缩字号,不截断,不硬塞。横向放得下几个事项由这一档的几何算出来,字越多每张卡越高, 能叠的层就越少,上限跟着降。走不通就自动落到下一档:日期型排不开就走编号型,横向排 不开就转成纵向长图并分页,纵向的事项数没有上限。所以它总归给得出一张图,或者当场 指名是哪一条约束不成立。

同一份材料,换谁跑、跑几次,出来都是同一张图。难的那部分不在模型手里,所以换一个更 弱的模型,出来仍是同一张。

它只画时间轴

流程图、当事人关系图、层级树、A/B 对比表不在这里,柱状图折线图饼图这类数据图表 也不做。那三类共七种由同一个插件里的 mqc-litigation-visual-redraw(诉讼可视化重画) 负责,它同时也能把你已经有的一张图重画得更好看。

你会拿到什么

一次交出五个文件,全部转写自同一份母版,位置与尺寸逐元素对齐,不是各画一遍:

文件用什么打开给谁用
.svgIllustrator · Figma · 浏览器主交付物,插进 Word 再编辑
.pptxPowerPoint · WPS讲课与庭前演示,每个方框双击就能改字
.vsdxProcessOn · Visio · WPS · Edraw在你本来就在用的那个工具里接着改
.drawiodraw.io同上
.png任何看图工具定稿位图,插进 Word 直接打印、微信发

.png 是位图之外,另外四种都能继续编辑,方框选得中、文字改得动,不是把图片贴 进容器。

三种视觉风格共用同一套几何,变的只是表达。奇川风以灰阶为底、一处深红标重点,交 当事人与客户;白描是纯黑白线稿,为打印、复印与卷宗附件准备;歸藏风用克莱因蓝, 适合讲课与对外传播。

另附一份溯源索引,是一份 Word 三线表,五列:序号、图上的元素、出自哪一份材料、 哪一句、核验方式。文字层材料标逐字,读图来的那几项标读图并单独说明它们没有文字层 可以逐字比对,请你自己回原件复核。打印出来夹在卷宗里,逐项对得回去;哪一项不对, 当场指得出来。

重画那一套的优势,整套继承下来

时间轴大师不是从零起步的。同一个插件里的第一个模块诉讼可视化重画已经开源并冻结, 它的四样东西这里原样继承,一个字都没重写:同一套几何(圆角、拐角、箭头、连线, 一个数都没重新拍过)、同一套视觉(三档风格、灰阶分层、深红是唯一的重音)、同一套导出 (五种格式的转写器,逐元素对齐)、同一套纪律(只许删不许改写,排布走不通就落档、 不硬画)。

所以它一上手就是成品的样子:同样的审美、同样的克制、同样能直接打印。新增的那一半是 把材料读成事实、把排布算准,这两件重画本来不做。

装在哪都能用

这是一个标准的 SKILL.md 目录,没有任何产品特定的胶水代码。凡是能读 skill 指令的 agent 都装得上:Claude Code 用两行命令从插件市场装(/plugin marketplace add/plugin install),Codex 放进 skills 目录,DeepSeek Harness 挂 customSkillDirs 即可、不必构建,Cursor 与 Aider 等读的是同一份 SKILL.md。同一份仓库,不维护两套。

两个模块都不联网、不调外部接口、不需要任何凭据,只读你给的材料,只往你指定的目录 写文件。

你要做的只有勾选

最多五个问题:材料用哪几份、时间取哪一段、这张图呈报给谁、整份还是取其中几段、深红 标在哪一处。报个编号就行,不写代码,不改配置,不学语法。

该问的才问,三处会自己跳过:只有一份材料时不问第一问;材料里日期不足八个、或者只 覆盖一小段时间时不问第二问;风格不是奇川风时不问标红那一问,因为白描是单色、 歸藏风有自己的视觉规则。不回答就走默认。

其余的一律不问:图种、层数、卡宽、字数、分页,那些是算出来的。

质量

排布的五条产出路径各有一套常驻穷举,合计 2476 种情形:期间型 1260、期间型形态 360、 日期型 640、纵向 180、分页 36。每一组的结局只许两种,要么拒绝并给出机械理由, 要么画出来且十项全过,中间那种一组都不许有。此外还有横向容量附表 44 格逐格实际 渲染核对、阶梯兜底 6 组(四个到一百二十个事项,必须永远给得出图)。不是抽样, 不是挑几组跑给人看,每改一次全跑一遍,碰坏任何一种当场就红。

两百多条回归判据,每一条都做过故意改坏必须报错的验证。约束表分 C、D、M、P 四个 系列,每条约束带编号,代码里执行它的那一行带同样编号的标记,守卫比对两边的编号 集合,缺一个多一个都报错,所以文档与实现漂开会被当场抓住。

零第三方依赖,纯 Python 3 标准库。

装完先跑一次自检

Python 3。出 PNG 需要 LibreOffice 或 poppler,读扫描件需要 poppler 的 pdftoppm, 溯源索引需要 node。装完跑一次环境自检,它会逐项告诉你缺什么、缺了会退化成什么样。 没有一项是装不上,都是少一种格式。

自检脚本属于共享内核。在完整仓库里,它在同级的重画模块下:

python3 ../mqc-litigation-visual-redraw/scripts/doctor.py

在 SkillHub 那种单目录分发包里,内核随包带上,直接跑:

python3 scripts/doctor.py

完整文档、约束表与决策记录:https://github.com/MiaoQichuan/new-litigation-visualization


以下为供 AI 读取的操作说明,请勿改写。

时间轴大师

这个 skill 是 mqc-timeline-master ——新诉讼可视化 · New Litigation Visualization(把法律画出来)的时间轴模块。它把律师手上的原始材料忠实还原成一张 案件经过时间轴。

与 v1(mqc-litigation-visual-redraw,重画既有图)的分工:v1 重画,本模块从材料还原。 v1 已冻结,本模块复用它的渲染内核与五种格式导出器,不改它一个字。

这个 skill 的立场

它不是一个通用图表工具,是一个还原工具。

图上的每一个字都要能追回材料原文。所以这里的全部约束都指向一件事:模型可以答错, 但不许错得无声。凡是模型的判断,都要能对句子逐一核验。

三条最要紧的红线,违反其一这张图就不能交:

绝不改为
手写 SVG 坐标、凭眼睛摆位置写 JSON,几何全部由脚本算
改写材料的字(换词、调顺序、补字、概括)只许删减;卡片每段文字必须是原句的子序列
把没发生的事画成发生了(承诺、约定、诉请、我的判断)只画客观发生过的事;说不准就不画

先读什么

总是先读这一份。 然后按需要打开,不要全部预载:

你要做的读这个
判哪句是事实、抽事项、写正文(模型那一半的活)references/model-steps.md
前后端怎么对接、容量握手、读图、侧标签怎么起名references/front-end.md
图为什么长这样、每个数从哪来(C / D / M / P 约束表)references/layout-constraints.md
报错了、卡住了、不确定某句提示是不是失败references/troubleshooting.md一处查完,不用翻别处
一件事为什么这么定、当时否掉了哪些做法docs/adr/动手改之前先读
四份 JSON 的形状与判据python scripts/pipeline.py shape verdicts.json

docs/adr/ 那一条要认真:几十轮接力里,同一件事被重新讨论过多次(扫描件能不能读三轮、 侧标签怎么定两轮)。你想到的做法多半已经被试过并写了失败原因。

黄金律:模型读懂意思,代码算和验

  • 模型做:读材料(含读图)、判哪句是已发生的事实、划分、抽事项、按容量把字写到位。
  • 代码做:算容量、验模型的输出、出图。代码不做拆解 —— 哪几句属于同一件事, 是读懂内容之后的判断,正则拿不到(试过一版正则切割器,在真材料上切出三组同名、 一组吞掉六成句子)。

所以这条路是两趟,不是猜一趟:先定骨架 → 代码算出容量 → 再按容量写字。

工作流(agent 的执行管线)

下面这张表是给你(agent)看的,不是用户要做的步骤。 用户那一侧只有一句话加几次 勾选:他把材料丢进来、说一句「把这些材料画成时间轴」,然后在你问的时候报个编号。 这些命令由你来跑,他不需要敲任何一条,也不需要知道它们存在。

python scripts/pipeline.py next       # 现在走到第几步、下一步跑什么、缺哪个文件
python scripts/pipeline.py steps      # 随时打印这张表

中途接手就先跑 next 换了会话、跑错顺序、文件写坏之后,不要靠猜 —— 它按产物 而不是自称判断走到了哪一步。

没有「一键跑完」,这是故意的:表里标着「用户」的那几步必须等他回答,一口气跑完 等于替他答了,而那几轮勾选是这个 skill 的设计核心。对用户来说这不是几个步骤,是几次 勾选 —— 该问的才问,不回答就走默认。

命令谁做做什么要先写的文件
read <材料...>代码读材料、切句、认叙述块
pick用户第一轮:勾材料来源(可全选;只有一份时自动跳过)
span <编号|全部>用户第二轮:勾时间段(粒度按跨度自适应:多年按年、半年按季度)
style <1-4>用户第三轮:呈报给谁 → 白描 / 奇川风 / 歸藏风 / 让我定
offer模型划分并给勾选清单verdicts.json + parts.json
budget <编号|all>用户勾哪几个部分
capacity代码按真实骨架算形态与容量skeleton.json
title '…'模型图名(容量内)
render <出图.svg>代码校验 → 出图 → 顺带写溯源索引items.json

表里没有 mark(第五轮:深红标在哪一处,0 = 不标)—— 它在抽取完事项之后、出图之前问, 且只有奇川风才问,所以不在主序里。python scripts/pipeline.py steps 会一并打印它。

第三轮的三档对应三种风格:法官(开庭、提交法院)→ 白描;当事人与客户(当面讲、 微信发)→ 奇川风;同行、讲课、公众号 → 歸藏风。

扫描件与照片:读图三步

律师给的材料几乎总有扫描件与照片,对方提交的那部分尤其如此。不读图就永远只看得见 一方,而只看见一方的时间轴恰恰是最危险的产物 —— 它看起来完整,实际是单方陈述。

python scripts/read_image.py probe 材料.pdf            # ① 逐页量可读字符
python scripts/read_image.py rasterize 材料.pdf pages/ # ② 150 DPI 栅格化
#                                                       ③ 你逐页看图,写转写稿
python scripts/read_image.py check 转写账目.json        # ④ 页数账 + 编号缺号

用的全是 poppler 自带命令,不装模型、不调 API。判据是「逐页可读字符数」, 不是「pdffonts 有没有字体」(真材料上有反例)。

转写稿要存档(Markdown,每页一节、标页码、写明「这是转写不是原件」),并作为材料 进管线 —— 这样全套忠实判据原封不动生效。图像来源的事项标 medium: "image"locator 用「第 N 页」、image_docs.json 列出读了图的材料,出图时会打印 「这些事项未经逐字核验」。细节见 references/front-end.md 与 ADR 0001、0002。

交付什么

一次出五种可编辑格式加一份溯源索引:

格式给谁用
SVG主交付物,插进 Word、再编辑
PNG预览、归档、微信发
PPTX讲课、庭前演示,每个对象可改
VSDXProcessOn / Visio / WPS
drawiodraw.io 内继续改
溯源索引 docx图上每个元素出自材料何处(五列三线表)

pptx 与 vsdx 是读最终那张 SVG 逐元素转出来的,所以「交付的就是那张图」。

集中红线

绝不改为
手写 SVG 坐标写 JSON,几何由脚本算
改写材料的字只许删减,卡片每段必须是原句的子序列
编造日期,或把「2020 年」判成 2020/1/1certainty 四档按材料精度填;raw 必须逐字可查
承诺或约定的时点当事实(付款计划的付款日、合同交货期限)不进主轴;要画「到期未付」,材料里得另有记载
诉请、申请事项、法律评价当事实那是要什么,不是发生了什么
侧标签写法律定性(自认、违约、抗辩…)只写材料上写着的身份;说不准就不出侧标签
一方材料却分两侧,标「原告主张 / 被告主张」只有一方叙述就是单侧 —— 一方转述对方的话有身份性
图上出现省略号、截断、缩字号超容量在出图前拒绝并要求改短
为了好看等距画不等距的时间那会宣称一个材料没有的精度;比例轴不成立就走编号型
自己拍视觉决定(颜色、字号、要不要标记)视觉决定归作者,问他

三种图种,由材料决定

图种什么时候用
编号型时点密、跨度不成比例、或无确切日期。轴上距离只表先后。它永远画得出,是阶梯的底
日期型全部时点精确到日、且在轴上分得开。轴按等长单位格铺开,距离本身在说话
期间型争点是几段有长度的期间,且互相重叠或包含 —— 条身长度与重叠位置就是论点

图种不由人选,由材料的性质按几何算出,走不通就自动落到下一档(render_figure.deliver 永远给得出一张图)。事项多到横向排不下时自动转纵向并分页。

环境

Python 3,零第三方依赖(读 docx 时用 python-docx,出 PNG 与栅格化用 poppler / LibreOffice,溯源索引用 node 的 docx 库)。全部脚本在 scripts/,全部守卫在 tests/run_checks.py(跑一次约半分钟,两百多条判据;确切条数看它自己,不要在这里写死数字 —— 写死就会漂)。 若这是 SkillHub 的分发包,tests/ 不在其中 —— 回归套件需要若干二进制样本,那个平台不允许上传;要跑回归请取完整仓库:https://github.com/MiaoQichuan/new-litigation-visualization

改动之前跑一次 python tests/run_checks.py,改完再跑一次 —— 它红了就是你改坏了

Signals

GitHub stars
56
Forks
9
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
mqc-timeline-master
Source
github.com/miaoqichuan/new-litigation-visualization