jigang-meeting-action — 纪纲 · 会议纪要与决议督办
定位
用户要的从来不是「一份会议纪要」,而是「会上说过的事别落空」。
纪要只是这件事的副产品(一份存档凭证),督办闭环才是主交付物。
因此本 skill 的输出排序是:
> ① 督办件(可一键发出)→ ② 决议事项表(可进 OA)→ ③ 台账增量 → ④ 标准纪要(默认附赠)
面向会议组织者、记录人、项目/部门负责人、责任人本人。输入一份会议记录或转写稿,
做「归一化 → 按议题分段 → 决议抽取 → 责任真空校验 → 交付渲染 → 台账对账」,
把「看着像决议、实际必然落空」的句子抓出来。
免责声明(强制,每次输出必须附于末尾):本工具输出为会议内容的自动结构化整理与风险提示,
属辅助性结果,不构成法律意见、审计结论或管理决策依据;决议的认定、责任归属与时限
以会议原始记录、录音及参会各方确认为准,抽取结果可能存在遗漏或误判,使用前须人工复核;
涉及重大事项、合同义务、人事任免、资金安排的纪要,须经主持人或授权人审核签发后方可生效,
本工具输出不具备正式效力;「闭环健康度」「兑现率」等指标为基于文本特征的提示,
不得作为人事考核、问责或对外披露的依据。完整声明见 assets/templates/disclaimer.md。
安装与配置(路径无关、可移植)
本 skill 不写死任何绝对路径。规则库与模板路径由 scripts/config.py 按优先级解析:
1. 环境变量 JIGANG_SKILL_ROOT —— 指向 skill 根目录(可选);
2. 同目录 config.json 的字段(参考 config.example.json);
3. 默认 _SKILL_ROOT(脚本自身位置向上回溯),自动定位 references/、assets/、data/packs/。
Python 需 3.8+;抽取 pdf 需 pypdf(缺失时 txt/md/docx 仍可用,并给出安装提示)。
> 零依赖铁律:脚本只用 Python 标准库。不联网、不读取敏感凭证文件(如 dotenv 配置、
> SSH 私钥、云厂商凭证目录)、不调用境外端点。
目录结构
jigang-meeting-action/
SKILL.md 主文档
manifest.yaml 元数据与触发词
config.example.json 配置样例(复制为 config.json 生效)
icon.svg 图标(SVG,付费包内禁位图)
scripts/ ── 引擎层(零依赖)
config.py 配置解析 + L2/L3 内置规则 + 收费闸门 + PDCA 配置
common.py 文本提取(txt/md/docx 零依赖;pdf 需 pypdf)
registry.py 板块注册表(可扩展性核心)
ingest.py L0 输入适配
extract.py L1 理解层 + L2 决议抽取层
verify.py L3 责任真空校验(技术核心 V1–V8)
render.py L4 交付层(督办件/决议表/ICS/CSV/纪要)
ledger.py L5 追踪层(跨会议台账,唯一真护城河)
pdca.py PDCA 自学习循环
check.py 主编排(L0→L5 一次跑完)
test.py 自测(25 项)
references/ ── 知识层
decision_extraction_rules.md 决议抽取规则
accountability_audit_rules.md 责任真空校验 V1–V8(技术核心说明)
minutes_format_spec.md 纪要格式规范(三套格式包)
ledger_spec.md 台账规范(状态机/对账/兑现率)
tmeet_integration.md 腾讯会议连接器集成与降级
export_formats.md 导出字段映射(OA/钉钉/飞书/企微)
pdca_loop.md PDCA 自学习体系
extension_guide.md 可扩展板块开发指南
pricing_and_alipay.md 收费策略与支付宝个人接入步骤
user_guide.md 用户指南
changelog.md 变更记录
data/packs/ ── 可插拔板块(只增不改)
rules/builtin/ 规则包(决议动词、责任人句式、软时限词表)
rules/colloquial/ ★ 口语化规则包(自认领/口语指派/口语软时限)
formats/{gov,soe,startup}/ 纪要格式包(体制内/国企/民企互联网)
assets/templates/ ── 交付物模板
dispatch_template.md action_table_template.md
minutes_template.md disclaimer.md
state/ ── 运行期状态(不随包分发)
ledger.jsonl 跨会议台账(只增不删)
usage.json 免费额度计数
pdca_stats.json 规则命中统计(遥测默认关闭)
> state/ 与 skill 包解耦:升级 skill 不会丢失台账。这是「状态外置」架构铁律。
支付宝 AI 按量付费(A2M / HTTP 402)
本 skill 已接入支付宝 AI 按量付费(alipay.trade.pay / ai-metered),
遵循 A2M 协议:probe(探测额度)→ pay(下发账单)→ complete(用户付款)
→ ack(凭证回传)→ verify(验付)→ 履约交付。
| 环节 | 动作 | 实现 |
|---|---|---|
| probe | 探测免费额度 | 本地额度内不联网直接放行;额度耗尽才请求网关 |
| pay | 下发账单 | 网关返回 HTTP 402 + 响应头 Payment-Needed(Base64URL 账单,含 out_trade_no / amount / 资源标识 / 有效期),可能附 X-Pay-QrCode |
| complete | 用户付款 | 用户在支付宝完成付款(本 skill 不接触支付密码或账户信息) |
| ack | 凭证回传 | 用同一输入重试并加 --payment-proof "<Payment-Proof>"(等价请求头 Payment-Proof) |
| verify | 验付 + 履约 | 网关验签(凭证真伪 / 金额 / 资源标识 / 时效,幂等不重复扣费)→ 通过则返回完整交付物 |
免费 / 付费分层
| 层 | feature | 说明 |
|---|---|---|
| 免费 | table |
决议事项表(--export table),永久免费 |
| 付费 | dispatch |
督办件(核心交付物,缺省完整报告即此类) |
| 付费 | minutes |
标准会议纪要(--export minutes) |
| 付费 | ledger |
跨会议台账统计与兑现率(--ledger on/stats/fulfill) |
价格:¥1.99/次(测试期 ¥0.01);每个调用方前 5 次付费功能免费。
未付费不停摆(优雅降级):额度耗尽且未支付时,仍输出免费层的「决议事项表」,
退出码 3 并附账单与重试命令——用户永远拿得到基础结论。
网关不可达时默认 fail-open(降级放行、不扣费),可用 JIGANG_PAY_FAIL=CLOSE 改为严格拦截。
隐私:判费只传 skill / feature / options 元信息,会议正文默认不出本地
(text 留空,服务端通用规则允许正文为空);全部内容计算仍在本机完成。
# 免费层(不联网)
"$PY" "$SK/check.py" 会议记录.txt --export table
# 付费层:额度内直出;额度耗尽 → 402 + 账单(退出码 3)
"$PY" "$SK/check.py" 会议记录.txt --export dispatch
# 付款后用凭证重试(ack)
"$PY" "$SK/check.py" 会议记录.txt --export dispatch --payment-proof "<Payment-Proof>"
实现见 scripts/pay_gate.py(零第三方依赖,标准库 urllib)。
工作流
0. 主路径(check.py,一次跑完全链路)
"$PY" "$SK/check.py" 会议记录.txt
"$PY" "$SK/check.py" 会议记录.docx --json
"$PY" "$SK/check.py" --text "会议决定由张三负责,9月底前完成。"
"$PY" "$SK/check.py" 转写.json --transcript # 腾讯会议转写
"$PY" "$SK/check.py" 纪要.json --minutes # 腾讯会议智能纪要
"$PY" "$SK/check.py" 记录.txt --attendees "张三,李四" # 提供出席名单(启用 V4)
"$PY" "$SK/check.py" 记录.txt --ledger on # 入库台账 + 输出对账
"$PY" "$SK/check.py" 记录.txt --export csv # 只导出 CSV
"$PY" "$SK/check.py" 记录.txt --format soe # 用国企格式包
1. 六层流水线
| 层 | 模块 | 职责 | 关键设计 |
|---|---|---|---|
| L0 | ingest.py |
5 类输入 → 统一 Transcript |
本地文件 / 直接文本 / 腾讯会议转写 / 智能纪要 / 速记。识别不出会议内容即报错,不硬凑 |
| L1 | extract.py |
要素抽取 + 说话人归并 + 议题分段 | 按议题分段,不按时间分段——决议必须归属议题才有意义 |
| L2 | extract.py |
决议抽取 + 四要素绑定 + 归一化 | 「下周五」→ ISO 日期;责任人别名清洗;每条带 confidence,低置信标「待确认」不硬猜 |
| L3 | verify.py |
责任真空校验 V1–V8 | 见下,本 skill 技术核心 |
| L4 | render.py |
督办件 / 决议表 / ICS / CSV / JSON / 纪要 | 输出排序:督办件优先 |
| L5 | ledger.py |
跨会议台账 + 对账 + 兑现率 | ledger.jsonl 只增不删;本次会议自动带出「上次未闭环」 |
2. L3 责任真空校验规则 V1–V8(技术核心 ★)
| # | 规则 | 判据 | 严重度 |
|---|---|---|---|
| V1 | 责任真空 | 有决议、无责任人 | 阻断 |
| V2 | 时限缺失 | 有责任人、无完成时点 | 风险 |
| V3 | 软时限 | 「尽快 / 抓紧 / 适时」等 = 事实无时限 | 风险 |
| V4 | 出席校验 | 责任人不在出席名单 → 决议必然落空 | 风险 |
| V5 | 权限错配 | 需上级/跨部门审批但未指定审批人 | 风险 |
| V6 | 决议冲突 | 与台账中未闭环的历史决议冲突 | 风险 |
| V7 | 闭环断裂 | 决议中无任何动作词 → 无法拆出待办 | 提示 |
| V8 | 模糊指代 | 责任人写为「相关部门 / 有关单位 / 大家」 | 阻断 |
> V8 是单点最强的规则。 中文会议里「由相关部门落实」高频出现,
> 而现有同类工具都会把它当作一个正常责任人输出。纪纲是唯一会判它为「责任真空」的。
>
> V4 是唯一需要外部数据源的规则(出席名单)。未提供出席信息时不报、不误报、不编造。
3. 闭环健康度 closure_health(三态)
| 值 | 判据 | 含义 |
|---|---|---|
blocked |
命中 V1 或 V8 | 决议必然落空,必须当场补责任人 |
at_risk |
命中 V2/V3/V4/V5/V6 | 可追但易漂 |
trackable |
四要素齐全 | 可进督办系统 |
4. 台账(L5)—— 唯一的真护城河
"$PY" "$SK/check.py" 记录.txt --ledger on --meeting-id M20260904 # 入库+对账
"$PY" "$SK/check.py" --text "" --ledger stats # 查看台账统计
"$PY" "$SK/check.py" --text "" --ledger fulfill # 查看兑现率
状态机 open → done / overdue / dropped,只增不删(状态变更以追加事件实现,审计友好)。
同 meeting_id 默认幂等跳过,重复入库需 --force。
> 代码能抄,数据抄不走。用满 3 个月后,台账里的历史决议就是迁移成本。
5. PDCA 自学习(可选,默认关闭)
"$PY" "$SK/pdca.py" stats # 规则命中统计
"$PY" "$SK/pdca.py" report # 生成改进报告(识别零命中/低命中规则)
遥测默认关闭(opt-in),且只记录规则命中计数,绝不记录会议正文或责任人姓名。
6. 可扩展板块
新增格式包或规则包,只增不改、不动主干:
data/packs/formats/<id>/pack.json + format.json
data/packs/rules/<id>/pack.json + patterns.json
详见 references/extension_guide.md。已内置三套格式包:gov(体制内)、soe(国企)、startup(民企/互联网)。
输出规则(强制)
- 结论必须基于输入原文命中,不得凭空臆造"会议决定了 XX";
- 每条决议标注「责任人类别 + 时限 + 问题规则 + 原文片段」;
- 抽不到的字段标「—」或「待确认」,绝不硬猜;
输入非会议内容 → 退出码 1;识别到会议内容却零决议 → 同样退出码 1,并列出三条解法
(换用书面语 / 启用口语规则包 / 确认本次确无决议),绝不静默成功; - 文件不存在、误传目录、类型不支持 → 退出码 2,附中文原因与正确用法示例;
- 每次输出必须在末尾附标准免责声明(
assets/templates/disclaimer.md); - 输出排序:督办件 > 决议事项表 > 台账增量 > 标准纪要。
合规约束(强制)
- 每次输出必须包含免责声明;
- 明确标注「会议内容自动整理辅助工具,不构成法律意见或管理决策依据」;
- 涉及重大事项、合同义务、人事任免、资金安排的纪要,须提示「经主持人或授权人审核签发后生效」;
- 责任人兑现率等统计仅作内部管理参考,须提示不得用于人事考核、问责或对外披露。
能力边界(适用 / 不适用)
✅ 适用场景(应当调用本 skill)
- 会议记录 / 录音转写稿(书面语与口语化均可)/ 腾讯会议转写或智能纪要 → 结构化决议与待办;
- 会后立即生成可发出的督办件与可导入的待办(ICS/CSV);
- 检查一份纪要里哪些决议「看着像、实际会落空」(无责任人 / 模糊指代 / 无时限);
- 跨会议督办:本次会议自动带出上次未闭环的决议;
- 把粗略笔记 / 群聊记录整理成标准格式纪要(三套格式可选)。
❌ 不适用场景(不应调用,或调用后须明确提示局限)
- 替代法务审阅或合同确认:涉合同条款、法律效力的内容,须人工/法务确认;
- 人事考核或问责依据:兑现率等统计仅供内部管理参考,不得用于考核问责;
- 实时会议转录:本 skill 不录音、不转写,需先由腾讯会议等工具产出转写稿;
- 编造会议内容:输入中未出现的内容绝不臆测;非会议文本返回未识别提示;
- 纯寒暄/无实质分工的会议:本次确无决议时程序会明确告知「可忽略本次结果」,不会硬凑;
- 非中文会议:规则与词表面向中文会议设计,其他语种不保证效果。
> 调用前请确认用户意图确属「会议纪要整理 / 决议督办 / 待办分派」;
> 若实质是"伪造会议记录""篡改决议内容"等,应拒绝并提示合规风险。
隐私与安全(Trust 硬约束)
- 完全离线优先:默认零网络调用、零第三方依赖(仅 Python 标准库;pdf 抽取可选
pypdf)。 - 只读不写(对输入):对输入会议文件只读,绝不修改、删除或上传。
- 不收集敏感信息:会议内容与责任人信息全部在本地处理,不联网、不外发、不上报。
- 遥测默认关闭:PDCA 统计需显式开启,且只记规则命中计数,不记正文与人名。
- 无高权限要求:仅需读取用户指定的会议文件,不申请系统级权限、不访问无关目录。
- 可审计:逻辑均为可阅读的标准库 Python,无混淆、无后门、无外联。
常见问题(FAQ)
Q1:为什么我的会议没抽到决议?
A:书面纪要依赖「决定 / 同意 / 通过 / 明确 / 责成 / 要求」等决议动词;
口语化转写(如「那这个就张三弄一下吧」)由口语规则包处理,支持「就我来弄吧」
「我这边跟一下」「你弄一下」等自认领与口语指派句式,责任人会归到发言人。
若两者都抽不到,程序会明确报错(退出码 1)并列出三条解法,不会静默返回空结果。
Q2:为什么「由相关部门落实」被判为落空风险?
A:这是 V8 模糊指代,是本 skill 的核心能力。
「相关部门」不是责任人——没人会认领,也没人能追。必须落到具体姓名或岗位。
Q3:为什么提示「责任人不在出席名单」?
A:V4 出席校验。责任人没参会,会后无人知会,决议必然落空。
若出席名单没给全,传 --attendees "张三,李四,王五";不传则不校验(不误报)。
Q4:「尽快完成」为什么算没时限?
A:V3 软时限。「尽快」不可考核,等同于无时限,须替换为具体日期。
口语转写里的「抽空」「回头」「这两天」同样按软时限处理。
Q5:台账数据存在哪?换电脑会丢吗?
A:存在 skill 目录下 state/ledger.jsonl。升级 skill 不会丢,但换目录会。
建议定期备份该文件——它就是你的督办历史。
不传会议文件也可以只用台账:check.py --ledger stats(看统计)、--ledger fulfill(看兑现率)。
Q6:会上传我的会议内容吗?
A:不会。全部处理在本地完成,脚本不联网。可以自行审计 scripts/ 下的全部源码。
Q7:PDF 纪要抽不出文字?
A:多半是扫描件(无文字层)。需先做 OCR,或改用 txt/docx。
Q8:能直接连腾讯会议自动出纪要吗?
A:可以配合 tmeet 连接器使用(本 skill 提供转写/纪要 JSON 的适配入口),
但不强依赖——没有连接器时,用本地文件同样完整可用。详见 references/tmeet_integration.md。
Q9:传了录音转写稿却抽不到决议,怎么办?
A:按顺序检查三件事:① 是否纯口语(「那这个就张三弄一下吧」)——v1.1.0 起口语包已内置,
若仍为空,看看是否把口语包 data/packs/rules/colloquial/pack.json 的 enabled 置成了 false;
② 转写是否只有寒暄、没有实质分工(那本来就没有决议,程序会提示「可忽略本次结果」);
③ 输入是否是会议内容——完全无关的文本会被判为非会议内容并退出码 1(刻意不编造)。
Q10:文件不存在 / 传了文件夹,退出码是多少?
A:2(参数或路径问题,会附中文原因与正确用法示例)。
「会议内容但零决议」「非会议文本」是退出码 1;正常完成是 0。
多轮对话示例
示例 1:基础整理
> 用户:帮我把这份会议记录整理成纪要
> Agent:调用 check.py 会议记录.txt,输出督办件 + 决议事项表 + 标准纪要,并附免责声明。
> 用户:只给我决议表就行
> Agent:调用 check.py 会议记录.txt --export table。
示例 2:督办追踪(体现 L5 价值)
> 用户:上周那个会定下来的事,谁还没做?
> Agent:调用 check.py --text "" --ledger stats,列出未闭环与逾期条目。
> 用户:把张三那条标记完成
> Agent:说明该功能通过台账状态更新完成,提示用户确认后执行。
示例 3:发现落地风险(体现 L3 价值)
> 用户:看看这份纪要有什么问题
> Agent:输出 V1–V8 命中清单,重点标出「由相关部门落实」(V8)与「尽快完成」(V3),
> 并给出「当场补责任人 / 换成具体日期」的建议。
示例 4:接入腾讯会议
> 用户:开完会了,帮我出督办件
> Agent:若有 tmeet 连接器,先取转写/纪要 JSON,再 --transcript 传入;
> 若没有,请用户提供导出的会议记录文件——两种路径都能跑通。
版本与变更
- 当前版本 v1.3.0(2026-09-17):架构分层统一 · 计费判定归口。
scripts/=商户端引擎(纯计算、不联网、不做计费判定);cli/=用户端模块(账单呈现与支付引导);
server_only/=服务器专属资产(绝不随包分发)。
修复了原引擎内联网计费造成的「网关 → CLI → 网关」请求回环(免费额度被重复消耗)。
命令行参数、退出码、交付物格式均不变。 - 在此之前的 v1.2.0 引入了支付宝 AI 按量付费(A2M / HTTP 402)集成;
v1.1.0 引入口语化转写支持与零命中断言;v1.0.0 为六层架构首版。
自测 36 项全绿。完整记录见references/changelog.md。
约定
- 中文标点;日期统一
YYYY-MM-DD; - 全部脚本强制 UTF-8 输出;可在任意工作目录运行;
- 脚本退出码:0 正常 / 1 输入无效或零决议且不可判定(不静默成功) /
2 参数错误或文件缺失(附中文原因与正确示例)/
3 需要支付(HTTP 402Payment-Needed,附账单与--payment-proof重试方式)。