mqc-legal-courseware-master · v0.9.0 · 2026-10-27 · sha256 352e26bf6b768dd2
mqc-legal-courseware-master v0.9.0A
Immutable. This exact content never changes and is served at /api/v1/blob/352e26bf6b768dd2.
---
name: mqc-legal-courseware-master
description: 法律课件大师(法律图表页助手)。只做课件里的法律图表那一页:把 V1–V6 的图(案情时间轴、法律关系图、争点对抗图、大事记简表、类案数据图)放进 12 栏 × 6 行的磁吸网格,配上一句话结论、读图要点、法条、裁判要旨、案例、争议焦点等卡片,导出后整页复制或框选复制进律师自己的 PPT。磁吸做到图里:V7 认得出图里的事件、主体、关系、柱子,能在图上放读图编号(要点卡同号联动)、切片只取几件事放大、聚焦只点亮几个元素(可按编号拆成几页),V6 图表可一键换一种图,导出时按编号自动生成讲课动画(点一下出一个)。V5 对抗图可按页面尺寸现出图、一个要件一页。左栏第一位是图表库(V6 法律图表大师的一百多个法律场景,按场景、画法、关键词找,点一下放进这一页再交给 AI 换成用户的数据),其后「诉讼图(V1–V5)→ 版式 → 卡片 → 适配 → 导出」;一句话结论卡吸在图的上下方。版面可铺满全屏,也可按律所模板或一张截图预留 Logo、天头地脚的位置;风格为奇川风、歸藏风或自定义(模板、截图或一个主色)。用户在编辑器下方的输入框(或选中卡片后的右栏)写一句想法,由对话里的 AI 写卡片或调用 V1–V6 出图。法条与要旨照录原文、案号不编、数字要能由图表推出、字不小于 11px。整套课件用的封面、律所名片、介绍页仍保留。
tags: [法律, 课件, PPT, 演示文稿, 律师, 律所, 讲座, 诉讼可视化]
metadata:
version: 0.9.0
---
# 法律课件大师(V7)
**我们不跟 PowerPoint 比编辑能力。** 比的是:法律人从一堆材料到一套像样的课件有多快,内容靠不靠得住。
做法是「骨架定死、内容交给 AI」:网格、风格、卡片样子、核对规则是固定的;用户说一句想法,AI 按法律场景
生成模块和页面,用户在磁吸界面上拖一拖、改一改,再导出。自由度在想法上,不在像素上。
和其他模块一样:**模型只写 JSON(deck.json),几何由脚本算,导出后回读审计。** V7 只读 V1–V6,不改它们。
## 〇、用户怎么开口
句式:**用法律课件大师,把【材料 / 想法】做成【几页】课件,在【场合】讲给【谁】,用【奇川风 / 歸藏风】。**
| 用户要的 | 怎么做 |
| --- | --- |
| 「打开编辑器,我自己排」 | 第三节:开编辑器(`--detach`),处理完编辑器里的请求就收尾 |
| 「这类数据用什么图好?」 | 编辑器的「图表库」,或 V6 的 `scripts/find.py`:按场景、画法、关键词找,放进来的是示例数据,交给 AI 换成用户的 |
| 一套类案课件 | 先用 V6 出图表说明放进 `assets/`,再写 deck.json(「类案研究」组合) |
| 案情汇报 / 庭前准备 | 用 V2 / V3 / V5 出 SVG 放进 `assets/`(V3 加 `--shape wide` 出横版,竖版放进课件页字太小),配争议焦点卡、风险提示卡 |
| 法条解读 / 普法讲座 | 法条卡(照录原文)+ 要点 + 风险提示;案例复盘用案例卡 + 裁判要旨卡 |
| 律所推介 / 律师介绍 | 先填律所名片(第五节),一键生成介绍页,再按场合润色 |
## 〇之二、运行与交付须知
- **命令从哪里跑。** 本文件里写的 `scripts/…`、`examples/…`、`references/…` 都在**本技能目录**下(这份 SKILL.md 所在的文件夹)。
请在**用户的工作目录**里运行,命令写成 `python3 <本技能目录>/scripts/…`,不要先 `cd` 进本技能目录;脚本自己找得到依赖,在哪里调用都一样。
- **产物放哪里。** 用户的材料、JSON 与产物一律放在用户的工作目录,**不要写进本技能目录**:插件更新时那里会被整个替换,用户也找不到。`build.py 课件名 --new` 在当前目录建课件文件夹;课件文件夹放在用户的工作目录。
- **照实交付。** 脚本打印的核对清单照原样转告用户;没有真的打开看过图片,就不要说「看过了、效果没问题」。
## 一、课件目录
```
my-deck/
deck.json 课件说明(编辑器自动保存;AI 与模型也直接写它)
assets/ 素材:V6 图表说明 *.json、V1–V5 的图 *.svg
brand/ (可选)这套课件专用的律所名片;没有就用本机公共名片 ~/.mqc-nlv/brand/
ai/ 编辑器发给 AI 的请求(requests.json)
exports/ 导出的 PPTX
```
目录名与文件名用 ASCII:Windows 解压 ZIP 时中文文件名会失败。内容、标题用中文没问题。
新建:`python3 scripts/build.py my-deck --new --title "民间借贷类案研究"`
## 二、磁吸网格与卡片
一页 1280×720,**12 栏 × 6 行**,页边距左右 48、上下 56,模块之间一律留 16px。每个模块写它占哪几格:
`x`(第几栏,0 起)、`y`(第几行)、`w`、`h`,都是整数。**不写像素、颜色、字号**——由网格和风格决定。
**法律内容卡**
| type | 卡片 | 字段 | 最小 |
| --- | --- | --- | --- |
| statute | 法条 | `law` 法律名称、`article` 条款、`text` 条文原文 | 4×2 |
| holding | 裁判要旨 | `text` 要旨原文、`court` 法院、`case_no` 案号(至少写一个出处) | 4×2 |
| case | 案例 | `case_no`(必填)、`court`、`cause` 案由、`heading`、`result` 裁判结果、`point` 要点 | 3×2 |
| issue | 争议焦点 | `heading`、`text`;按阅读顺序自动标「争议焦点一、二、三」 | 3×2 |
| risk | 风险提示 | `heading`、`text` | 3×2 |
| evidence | 证据 | `heading`、`items`(一行一份:「名称——证明目的」,自动标证据 1、2、3) | 5×2 |
**通用卡**:title 标题(`level` page / cover / section,`kicker`,`sub`)、text 正文、bullets 要点、step 编号卡、
stat 大数字(`value`、`label`、`note`、`from` 出处图表)、quote 金句(`source` 必填)、note 注释。
**图卡**(关联 V1–V6):chart(V6 图表说明,`file` 或 `spec`,按卡片尺寸重画并过 V6 守卫)、
figure(V1–V5 的 SVG,`file` + `from` 写来自哪个模块,如 `"V2 时间轴大师"`;等比缩放,字小于 11px 就拒)。
**律所卡**:logo(来自名片)、profile 介绍(`who`: `"firm"` 或 `"lawyer:<id>"`,内容实时读名片)、contact 联系方式。
外观 `tone`:card 卡片 / accent 重音卡(只给大数字、编号卡、正文、要点、争议焦点、风险提示;一页只该有一张)/ outline 描边 / bare 无底。
**连成一组**:相邻的同类卡片(法条与要旨一家、正文与要点一家、大数字、编号卡、案例、争议焦点、风险提示各一家),
并排等高或上下等宽、外观相同,自动连成一组(间距收到 4px、内角收小);`"join": false` 拆开。
**组合**(模板):律所(封面带 Logo、律所介绍、律师简介、结束页)、法律(法条解读、案例复盘、争议焦点、庭前准备、
证据梳理、案情经过、类案研究)、通用(封面、章节页、一图一讲、一图一数一讲、整页图、左右两图、图 + 金句、
数字一排、三卡并列、左右对照、标题 + 要点、整页出血图、整页关系图、金句页)。坐标照抄组合,只填字段。
完整格式、坐标见 `references/deck-format.md`。
## 三、编辑器与 AI(主要用法)
```bash
python3 scripts/studio.py my-deck --detach # 你(AI)代用户打开编辑器:独立运行,命令马上返回,浏览器自动打开
python3 scripts/studio.py my-deck --stop # 用户说不用了再关
python3 scripts/studio.py my-deck # 用户自己在终端里开(前台运行,关窗口即退出)
```
**由你代开时一律加 `--detach`。** Agent 的命令有时限(常见 2–10 分钟),到点或一轮结束会把它启动的进程一并清掉:
前台跑、`&` 后台跑,编辑器几分钟后就断了,页面还在、点什么都没反应。`--detach` 让编辑器脱离 Agent 独立运行,
确认浏览器真能连上才返回(退出码 0),**把它打印的网址原样告诉用户**(浏览器没自动弹出时让用户点开)。
退出码 3 = 打不开(多半是 Agent 的沙箱关了网络):把它打印的两条路转告用户——允许这条命令在沙箱外运行再开一次,
或者不开编辑器,改走第四节(你写 deck.json,`build.py` 检查并导出)。
编辑器只听本机 127.0.0.1,材料不出电脑;所以只在**命令跑在用户自己电脑上**的 Agent 里有界面(模型在云端没关系)。
命令跑在云端虚拟机里的(网页版的云端任务等),用户的浏览器连不到那台机器,直接走第四节,不要让用户等界面。
编辑器(0.9.0 起版面改为安静的对话式布局):左边一条侧栏——「新建一页」,然后是入口
「图表库(V6 的法律图表场景)/ 诉讼图(V1–V5 的法律场景 + 已有的图)/ 版式 / 卡片(读图、依据)/ 适配(风格、版面)/ 导出 / 更多」(更多放整套课件用的:封面、章节页、律所名片、介绍页、AI 做整套),
下面是这套课件的全部页面(点一页切过去,拖动调整页序)。点一个入口,旁边滑出它的抽屉;再点一下或点抽屉右上角收起。
中间只有这一页(拖进来吸到格子、同类卡片自动连组、拖到被占的地方旁边的卡片让位、落在卡片上一分为二、拖角和边按格子改大小,
按住 Ctrl / ⌘ 不吸附),新的一页是空页:先去图表库挑一张图,或点一个诉讼图场景。
**图表库**:盖住画布的一整页,卡片是 V6 真画出来的图(按课件风格画),下面写场景名、它回答的问题、画法与适用场合;
先按律师要说明的事分(由什么构成、钱怎么算、流向哪里、风险在哪……),再按场合、画法筛,或搜关键词;
卡片以律师的问题为标题,带「比如」与「核对」。点「放进这一页」或「新建一页」,图卡里先是 V6 的**示例数据**
(卡片记着 `sample: true` 与场景 `recipe`),右栏的 AI 输入框已经写好「按图表库「某场景」……用我的材料出图」。
示例数据导出前一定被拦下(「这张图还是图表库里的示例数据」):你交回用户的数据(apply 带 spec 或 file)后记号自动去掉。
版式、诉讼图场景的缩略图画成一页真的小页面;卡片画成样张(大数字、法条、要旨、证据清单的样子),不是图标。
**宋体标题用方正小标宋本来的字重**:不加粗、不描边(原来加粗 + 描边,比小标宋原样粗一大坨);V1–V6 的图放进来,图里的宋体加粗标题同样改。
导出 PPT 时,编辑器认得出本机装了方正小标宋,标题就用它、不加粗;没装就用宋体加粗(在别人电脑上也不变样)。命令行:`build.py --title-face 方正小标宋简体`。右下角可放大缩小(Ctrl / ⌘ + 滚轮,Ctrl+0 适应窗口)。
顶栏只有课件标题、这一页的检查(「可以导出」或「几处要改 · 几处请核」,点开看明细)、撤销 / 重做、「⋯」(网格、整理、换版式、课件风格、快捷键)与导出。
选中一张卡,右边才出现属性栏:属性、读图(放编号、切片、聚焦、按编号拆页、V5 选要件;V6 图表还有「换一种图」)与检查。
页面下方是交给 AI 的输入框:重做这一页、后面加一页(Ctrl / ⌘ + 回车发出);选中一张卡时在右栏里:让 AI 写这张卡 / 再来一版;选中一张图卡:让 AI 用 V1–V6 生成。
**用户在编辑器里交给 AI 的请求,记在 `ai/requests.json`,由你(对话里的 AI)来做。** 开编辑器之后:
```bash
python3 scripts/ai.py my-deck wait --timeout 90 # 等一阵请求;有就打印上下文(JSON)。不超过 Agent 单条命令时限;没等到(退出码 4)就收尾,不要再 wait
python3 scripts/ai.py my-deck take r3 # 开始做(编辑器里显示「AI 正在做」)
python3 scripts/ai.py my-deck apply r3 result.json # 交回结果:先校验,过了才写进课件;编辑器自动刷新,可撤销
python3 scripts/ai.py my-deck fail r3 --note "缺判决书原文,请先上传"
python3 scripts/ai.py my-deck done r3 --note "法条原文请您上传后再核" # apply 后还有改不了的:收尾并说明
```
一轮:`wait`(或 `list`)→ 读上下文 → `take` → 写结果 → `apply`(看它打印的「还要改」,改到没有为止)→ 待办都处理完就**收尾**:
在对话里告诉用户做好了什么、还缺什么,结束这一轮。**不要一遍遍 `wait` 空等**(0.9.0,缪律师实测:原来写「回到 wait」,
AI 一直等、不收尾,用户看到的是「反反复复搞了半天没有结论」)。你在 `wait` 时编辑器显示「AI 马上开始」;
不在时显示「回对话里说『处理课件请求』」,用户说了你再处理。
apply 打印了「还要改」,请求就还是「正在做」:改好后**对同一个请求**再 `apply`(加页类会换掉上次加的那几页,不会越加越多);
改不了的(缺用户的原文、材料)用 `done --note` 收尾,说清缺什么。上下文里的 `answer` 给了这一类请求的交回写法与照抄就能跑的命令。
用户在对话里说「处理课件请求」时,用 `list` 看所有未处理的。
上下文里有:请求(类型、想法 prompt、目标页 / 卡)、这一页的现状、整套大纲、律所名片摘要、素材清单、
目标卡片的像素尺寸(`target_box`)、规矩。结果的写法:
| 请求 kind | 交回 |
| --- | --- |
| module | `{"module": {字段…}}`:并进那张卡(不写 x/y/w/h 就不动位置) |
| tool | 先按那个模块(V1–V6)的 SKILL.md 出图,V1–V5 的 SVG 或 V6 的图表说明写进 `assets/`(可用 `"assets": {"x.json": …}`),再 `{"module": {"file": "assets/x…"}}`。图要按 `target_box` 出,字缩完不小于 11px;风格与课件一致 |
| page / cover | `{"modules": [模块…]}`:换掉这一页(按网格写坐标) |
| new-page / deck | `{"slides": [{"modules": […]}, …]}`:插在这一页后面 |
都可以加 `"note": "给用户的一句话"`,编辑器里会显示。
**法律垂类的规矩(AI 生成时也一样,最要紧的三条):**
1. **法条、裁判要旨照录原文,不凭记忆写。** 原文只能来自用户给的材料或你查到的官方来源;拿不到就把 `text` 留空,
在 note 里说「请上传原文 / 我查到的出处是…」。导出清单会提醒逐字核对。
2. **案号、法院、当事人不编。** 没有就不写;示例一律标「示例」「虚构」。
3. **数字只许算、不许编。** 大数字写 `from` 指向图表,脚本用 V6 的数字核对推一遍,推不出就拒。
其余:一页说一件事;一张要点卡不超过 5 条;字放不下就拆页,不缩到 16px 以下;整套一种风格,V1–V5 的图风格不符就回原模块重出;不留空卡片。
## 四、检查与导出(不开编辑器时)
```bash
python3 scripts/build.py my-deck --check # 逐页检查,不写文件
python3 scripts/build.py my-deck # 导出到 my-deck/exports/<标题>.pptx
```
退出码:0 成功;1 说明有错;2 有页面没准备好;3 导出后回读没过。**不是 0 就不要交付。**
「请核」是提醒人看一眼的地方(法条、要旨、金句的逐字核对,约数,手填的大数字),照实转告用户。
## 五、律所名片
编辑器「律所」页填一次:Logo(PNG / JPG / SVG,≤ 2MB)、律所名称 / 介绍 / 业务领域 / 地址 / 电话 / 邮箱 / 网址、
每位律师的姓名 / 职务 / 介绍 / 专长 / 代表业绩。存在课件目录的 `brand/`(有就用它),否则存本机公共名片
`~/.mqc-nlv/brand/`(环境变量 `NLV_BRAND_DIR` 可改),以后每套课件都能用。格式见 `scripts/brand.py` 文件头。
- 一键生成:律所介绍页、律师简介页(含代表业绩)、结束页(谢谢 + 联系方式)。不需要 AI;要按场合润色再交给 AI。
- 介绍卡、联系方式卡、Logo 都**实时读名片**:改名片,所有介绍页跟着变。
- 「每页页脚放 Logo」:内容页左下角放小 Logo(已有 Logo 卡的页不重复)。
- **Logo 是 PPTX 里唯一允许的图片**:PNG / JPG 作为图片放进去,在 PowerPoint 里能直接替换;SVG Logo 转成可编辑形状,
它的颜色算律所品牌色。其余元素仍然全是可编辑的形状和文字,回读审计会抓 Logo 以外的任何图片。
## 五之二、自定义风格(从律所自己的模板、截图或一个主色来)
风格只有三种:奇川风、歸藏风、自定义(作者定的:不为哪一家律所单立风格名)。自定义在编辑器「适配」里做:
传模板(.pptx)、传一张截图(取主色),或直接选一个主色;同一次上传顺带算出预留位置。编辑器界面本身是中性灰(白纸、浅灰侧栏、黑色主按钮,有深色模式),不随课件风格变色;奇川风的深红只出现在课件页面上。
从模板做也可以用命令行,两步:
```bash
python3 scripts/template_read.py 模板.pptx -o 读取结果/ --render # 第一步:只读,出读取报告(颜色、字体、版面、Logo、页型、对比度)
python3 scripts/firm_style.py make 读取结果/tokens.json --name 某某律所风 -o 律所名片目录/style.json # 第二步:生成律所风格
```
- **读什么**:主色(主题的 accent1)、主色的深一档与浅色调、正文灰、标题与正文的字体字号、页边距、Logo 的位置与两版(深底用白字版、浅底用彩色版,按图本身的亮度分)、每页的页型。
- **怎么用**(作者定的):封面、章节页用主色满版、白字、深底 Logo;内容页白底、标题用主色;卡片用模板最常用的浅色调。
**中文标题用粗黑体**(PowerPoint 里是微软雅黑加粗),模板没写中文字体时也这样。
**只用主色家族与灰**,模板里的辅助色先不放进来,一页仍只有一处重音。
- **V6 图表跟着换**:图的重音换成律所主色、标题用同一种粗黑体(V6 的 firm_palette,主色要过 V6 的对比度与「不是灰」检查,见 V6 ADR 0011)。
- **V1–V5 的图不拒**:它们没有律所风格的版本,V7 也不改别的模块的颜色;交付清单会提醒「回原模块出白描版放进来更协调」。
- **深底页(封面、章节页)不放图表和图**:放不清,拼页会拦下。
- **校验**:正文在纸上、卡片上,白字在主色上,封面字在封面底上,对比度都要 ≥ 4.5;主色不能接近灰;不能和内置风格同名。过不了就说清是哪一处、差多少。
- **存在哪**:律所名片目录(课件的 `brand/` 或本机公共名片):`style.json`、`template/report.html`、`template/tokens.json`、两版 Logo。**模板本身不留存**(是律所的财产),也不要放进开源仓库。
- **用上**:deck.json 的 `style` 写 `"自定义"`(旧课件里写的律所风格名读进来自动认作「自定义」)。停用时文件改名为 `style.disabled.json`(不删),课件自动换回奇川风。
## 六、导出的 PPTX
- 每页 16:9;每个元素都是能点开改的形状或文字(Logo 除外,见上);连成一组的卡片是四角不同的自由形状。
- 导出后回读审计:页数、XML 合法、图片只有 Logo、颜色在风格白名单里(律所风格就是律所风格文件里的颜色;V1–V5 的图与 SVG Logo 的颜色另行登记)、写的字都在。没过不交付,旧文件不动。暂存区不导出。
## 七、交付时对用户说
一两句:做了几页、哪些地方要人核(法条、要旨、金句、手填的数字)、文件在哪。图被拒时,说清是哪页、该回哪个模块用什么风格、按多大尺寸重出。
## 七之一、出处:鼠标停在图里的元素上(0.8.4)
- 编辑器里鼠标停在图里的事件、柱子上,浮出它出自哪里;选中图卡,右侧「出处」列出全部。**只读原模块写好的出处,不编。**
- **V2 时间轴、V3 关系图**:出图时图旁边有一份 `<名>-trace.json`(V2:事项、材料、第几句、原文摘录;V3:每个主体、每条关系的出处),**和图一起放进 `assets/`**。V3 里没写出处的主体、关系,悬停时明说「没写」。
- **V6 图表**:说明里用了 `dataset` + `view`(逐件记录)的,自动有:每一项来自哪几条记录、编号是什么。
- 其余的图(V1、V4、V5,没用逐件记录的 V6)没有逐项出处,不显示。
- **写进演讲者备注(可选)**:编辑器「导出」里打开「出处写进演讲者备注」,或 `build.py 课件 --notes`。只写有出处的页;讲课时演示者视图里看得到,观众看不到。不打开就一个字节都不加。
## 七之二、读图编号、切片与逐个讲(0.5.0)
- 图卡导入后,V7 认出图里的元素(磁吸点):V1 / V2 的事件与期间、V3 的主体与关系(含关系标注)、V6 的每个数据项。V4 简表、V5 对抗图没有标记,只能整张放。
- 图卡字段:`pins`(读图编号,元素键的列表,最多 9 个)、`crop`(切片,只取这些元素那一块);要点卡 `numbered: true` 时与编号同号。
- 编辑器:选中图 → 右侧「读图」→「放编号」「切片」「生成读图要点」;编号顺序可调,要点跟着换。
- 放不下的图(字 < 11px)照样显示,先切片再导出。导出的 PPTX 里每个元素、每个编号各成一组、按名字命名。
- 聚焦(0.8.0):图卡与图表卡可写 `focus`(元素键列表)——这些元素照常,其余往白里调;整张图仍在。
「按编号拆成几页」:全图这页之后,每个编号一页、只点亮它。V6 图表卡「换一种图」:同一份数据,V6 能画的图都列出来。
## 七之三、左栏、结论卡、讲课动画、V5 兼容层(0.6.0)
- 左栏:图表库(V6 的法律图表场景)→ 诉讼图(V1–V5 的法律场景 + 已有的图)→ 版式 → 卡片(读图 / 依据)→ 适配(风格、版面)→ 导出;整套课件用的都在「更多」。
- 一句话结论卡 `conclusion`:一两行;拖到图的正上方 / 正下方会吸过去、与图同宽。
- 导出默认写讲课动画:有读图编号的页,点一下出「编号 + 它指的元素 + 同号要点」。
- V5:图卡写 `data`(V5 的数据文件,分析输入或图输入都认)与 `part`(第几个要件,从 0 起;不写 = 全部),V7 按图卡宽度调 V5 出图并只取卡片。
## 八、回归
`python3 tests/run_checks.py`(约 670 项):结构校验与旧格式升级、网格与连组、落点与整理、每个组合 × 两种风格、
法律卡(照录、出处、案号、编号)、律所名片(实时读取、一键介绍页、Logo 校验)、Logo 导出与「只许 Logo 一张图」、
AI 请求队列(校验不过不写、取消的不能交)、文字与空卡片、大数字核对、图的缩放与风格、导出审计(含篡改检测)、
编辑器接口与越界防护、编辑器 JS 规则与 Python 逐项对照、示例课件成品账,以及「V1–V6 一个字节没变」。改完必跑,不过不发。