框架: 三角色审核skill定版——M3常设审核(opus金标准校准0.45达标,golden/入库)+拆书四步全流程集成(两pass→窗大纲→终检→审核)+金标准七条B4改造清单入档
This commit is contained in:
parent
1e15b05ff7
commit
3279cd7974
@ -33,13 +33,25 @@ disable-model-invocation: true
|
||||
|
||||
**M3 直调形态(创始人 2026-07-13 拍板,现行)**:循环体不再派 opus/haiku 子代理,改为 `scripts/parse_llm.py` 直调 New-API `MiniMax-M3`(经 llm skill)——脚本自己取数(正文/前文实体/已积累卡名录内联进 prompt)→ M3 两 pass(脚手架→范式)→ `parse_ingest` 机械校验入库(比例硬顶/归型/字段越合同/15连字泄漏)。断点续跑按 example_parse_task 状态机逐章跳过已 done 的 pass。
|
||||
|
||||
**放量全流程(每书四步,均 M3)**:
|
||||
|
||||
```bash
|
||||
# 逐章两 pass 拆一本书的指定章区(断点续跑,重跑自动补失败章)
|
||||
.venv/bin/python .claude/skills/parse-book/scripts/parse_llm.py --work-id 4 --from 1 --to 3
|
||||
# ① 逐章两 pass(脚手架→范式;断点续跑,重跑自动补失败章)
|
||||
.venv/bin/python .claude/skills/parse-book/scripts/parse_llm.py --work-id 4 --from 1 --to 50
|
||||
# ② 窗级大纲聚合(每 5–10 万字:多章细纲+正文→阶段大纲;单章对大纲层可能零贡献,不做章内比例强制)
|
||||
.venv/bin/python .claude/skills/parse-book/scripts/parse_outline.py window --work-id 4
|
||||
# ③ 全书拆完:终检(逐窗细纲对账大纲 + 跨段连贯性纵览)
|
||||
.venv/bin/python .claude/skills/parse-book/scripts/parse_outline.py check --work-id 4
|
||||
# ④ 公共卡三角色审核(番茄作家/起点作家/主编,M3 常设步骤;见 review-cards skill)
|
||||
.venv/bin/python .claude/skills/review-cards/scripts/review_cards.py review --batch <批次> --work-id 4
|
||||
# 进度
|
||||
.venv/bin/python .claude/skills/parse-book/scripts/parse_ingest.py progress
|
||||
```
|
||||
|
||||
审核纪律:常设审核=M3(已用 opus 金标准校准,偏差 0.45 达标);fable/opus 只做起量前校准与起量后一次总审核(门禁与优化,不进流程循环)。
|
||||
|
||||
试拆实测病理档(放量前须知):M3 细纲按比例会写超(治=绝对字数上限+压缩重试);type 一律标 craft 且串型混填(prompt 矫正无效,治=B4 环按金标准清单改造 prompt/schema);重跑自噬(治=判重名录排除本章+0 卡不软删);source 偷懒(治=机械回填)。
|
||||
|
||||
## 步骤(自底向上,与创作期规划的自顶向下互为镜像)
|
||||
|
||||
1. 静态分章:import skill(规则,LLM 不参与);
|
||||
|
||||
45
.claude/skills/review-cards/SKILL.md
Normal file
45
.claude/skills/review-cards/SKILL.md
Normal file
@ -0,0 +1,45 @@
|
||||
---
|
||||
name: review-cards
|
||||
description: 公共知识卡三角色审核(番茄作家/起点作家/主编)——拆书流程的常设步骤,MiniMax-M3 执行;检查内容成立性、AI 创作可用性、跨书可参考性,判定 pass/revise/reject 写回卡片。fable/opus 只做起量前校准与起量后总审核。
|
||||
---
|
||||
|
||||
# review-cards —— 公共知识卡三角色审核(M3 常设)
|
||||
|
||||
创始人拍板(2026-07-13):审核是**流程内可复用资产**,不是每批都请 claude 角色扮演——
|
||||
- **常设执行**:MiniMax-M3 扮三角色(番茄作家=爽点商业性 / 起点作家=结构工艺 / 主编=资产 vs 噪声),每批拆书产出的卡过一遍;
|
||||
- **fable/opus 职责**:起量前出金标准校准本 skill(golden/),起量后做一次总审核;
|
||||
- 判定写回 `draft_payload.审核` 节(批次/均分/判定/三角色分与判词),可追溯可复审。
|
||||
|
||||
## 用法
|
||||
|
||||
```bash
|
||||
# 审核(全部或指定书的活卡;三角色各一次 M3 调用)
|
||||
.venv/bin/python .claude/skills/review-cards/scripts/review_cards.py review --batch <批次> [--work-id N] [--dry-run]
|
||||
|
||||
# 校准:与 golden/scores.json(opus 金标准)对照(换模型/改 prompt 后必跑)
|
||||
.venv/bin/python .claude/skills/review-cards/scripts/review_cards.py calibrate --batch <批次>
|
||||
```
|
||||
|
||||
判定阈值:三角色九维均分 ≥3.5 pass / ≥2.5 revise / 其余 reject。
|
||||
|
||||
## 统一判定闸(自 opus 金标准三评审蒸馏,内嵌于审核 prompt)
|
||||
|
||||
换书测试(抹专名换题材仍成立?)· 命名黑话检测 · 装置标签判定(信息差/契诃夫之枪/身份错认各有硬定义)· 伪精确检测(编造的间隔数字)· 同功重复(family 换皮)· 干货位检查(失败模式比手法值钱=手法空洞)· 专名泄漏。
|
||||
|
||||
## 校准记录
|
||||
|
||||
| 日期 | 批次 | 结果 |
|
||||
|---|---|---|
|
||||
| 2026-07-13 | cal-001(19 卡试拆批) | 平均绝对偏差 **0.45**(合格线 ≤0.5)、平均偏差 -0.08(无系统倾向)、最大背离 1.33<1.5;8 卡偏差 ≤0.11。M3 三角色总评独立复现金标准全部四大系统病(同功撞车/命名黑话/伪精确/专名污染)。**已知弱点**:对「场景级走位 vs 可复用范式」辨别偏松(《路人搭讪道具借用式情报截流》金 2.67 → M3 4.0)。 |
|
||||
|
||||
金标准:`golden/金标准-{番茄作家,起点作家,主编}-2026-07-13.md` + `golden/scores.json`(19 卡九维均分)。
|
||||
|
||||
## 金标准对拆书 prompt 的改进清单(B4 优化环的输入,未实施)
|
||||
|
||||
1. 技法指纹先行+跨章聚类去重(母卡+多出处实例,消灭 family 换皮);
|
||||
2. 换书测试闸门+强制占位符(专名/数字打回);
|
||||
3. 两类卡模板:结构型伏笔卡(埋点/回收点/隔章记忆维持三件套)vs 场景型手法卡(复用节奏/异质化/每章上限)——不再硬套埋设/履约框架;
|
||||
4. 装置类型闭合枚举+判定测试;禁「信息差」当万能主标签;
|
||||
5. 翻转重心:每卡强制可迁移因果原则「当X做Y因为读者会Z」+触发条件+滥用反例;砍编造数字;
|
||||
6. 补「读者收益」字段(代入/掌控/期待/打脸/意外);命名用作者短语(「先知降压」),长名降副标题;
|
||||
7. 采样扩到中段爽点章(打脸/升级/反转),别只啃前三章。
|
||||
21
.claude/skills/review-cards/golden/scores.json
Normal file
21
.claude/skills/review-cards/golden/scores.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"延时应答式洗脑成功伪装": 3.0,
|
||||
"面瘫外化式心绪对冲可视化": 3.22,
|
||||
"未来时态回望式处境降险": 3.11,
|
||||
"筹码挂嘴边式第三方威慑锚定": 3.56,
|
||||
"拟人化道具独白式规则灌注": 3.78,
|
||||
"新闻播报式闹剧事件确认": 3.11,
|
||||
"宿主梦境式欲望外泄落点": 2.0,
|
||||
"亲密搭档冒充家长式谎言托管": 3.44,
|
||||
"计划外变量即时消解式伏笔偷换": 3.33,
|
||||
"剧透先知式选项四象限抉择可视化": 3.33,
|
||||
"路线研究借口式职务身份脱敏注入": 3.44,
|
||||
"面部肌肉即时复位式警觉伪装": 2.67,
|
||||
"敌意阈值即时外化式内心杀意标定": 3.11,
|
||||
"路人搭讪道具借用式情报截流": 2.67,
|
||||
"首镜胖瘦差式肉身身份确认": 3.33,
|
||||
"数字自算式减重目标具象化": 3.22,
|
||||
"数值面板首秀式身份自证": 4.0,
|
||||
"苦主自嘲式绝境降压对冲": 3.67,
|
||||
"回望式时间线降维处境评估": 3.33
|
||||
}
|
||||
42
.claude/skills/review-cards/golden/金标准-主编-2026-07-13.md
Normal file
42
.claude/skills/review-cards/golden/金标准-主编-2026-07-13.md
Normal file
@ -0,0 +1,42 @@
|
||||
# 金标准评审 · 资深主编视角(opus,2026-07-13,对象=试拆 19 卡)
|
||||
|
||||
> 校准基准。视角=可复制性与指导价值:这卡进知识库是资产还是噪声。
|
||||
|
||||
## 逐卡(卡名 | 成立性 | 可用性 | 可参考性 | 判词)
|
||||
|
||||
1. 延时应答式洗脑成功伪装 | 4 | 3 | 2 | 内核"给敌人一个他愿意信的解释"真本事;被场景焊死,名字像黑话
|
||||
2. 面瘫外化式心绪对冲可视化 | 3 | 2 | 2 | 烂大街手法包装成术语;照着写只会更套路,与12/13撞车
|
||||
3. 未来时态回望式处境降险 | 3 | 2 | 2 | 与19同书重复;AI学了会写出没有风险感的软场面
|
||||
4. 筹码挂嘴边式第三方威慑锚定 | 3 | 3 | 2 | "人质当悬而未发的枪"起了唬人名字;"隔两章以上"数字是编的
|
||||
5. 拟人化道具独白式规则灌注 | 4 | 4 | 3 | 少见的好卡——反 info-dump 真手艺,能跨题材
|
||||
6. 新闻播报式闹剧事件确认 | 4 | 4 | 3 | 真手艺+这批最好的摘要(通用机制而非剧情复述)
|
||||
7. 宿主梦境式欲望外泄落点 | 2 | 2 | 1 | 一次性搞笑桥段供成范式,纯噪声,垫底
|
||||
8. 亲密搭档冒充家长式谎言托管 | 3 | 3 | 2 | 真价值是堵叙事硬伤;卡名让检索找不到它解决的问题
|
||||
9. 计划外变量即时消解式伏笔偷换 | 3 | 3 | 2 | 内核对;卡名绕到没人读得懂,好东西埋在黑话里
|
||||
10. 剧透先知式选项四象限抉择可视化 | 4 | 3 | 3 | 真手艺但"四象限"名不副实
|
||||
11. 路线研究借口式职务身份脱敏注入 | 3 | 3 | 2 | 内核简单却起了数据脱敏式黑话名,检索灾难
|
||||
12. 面部肌肉即时复位式警觉伪装 | 2 | 2 | 2 | 面瘫内心戏第三次分身,一秒僵硬供成范式
|
||||
13. 敌意阈值即时外化式内心杀意标定 | 3 | 3 | 2 | 有点东西但名字中二,与2/12撞
|
||||
14. 路人搭讪道具借用式情报截流 | 3 | 3 | 2 | 藏了真规矩"借的道具必须场景内还清";整卡被具体场景焊死
|
||||
15. 首镜胖瘦差式肉身身份确认 | 4 | 3 | 3 | 价值在"别念体检报告"的失败模式不在手法本身
|
||||
16. 数字自算式减重目标具象化 | 3 | 3 | 3 | 真原理被减肥场景锁死,卡名太窄埋没通用价值
|
||||
17. 数值面板首秀式身份自证 | 4 | 4 | 3 | 分析扎实失败模式真干货——这批的资产卡
|
||||
18. 苦主自嘲式绝境降压对冲 | 3 | 3 | 2 | 失败模式(吐槽带优越感让主角失温)比手法本身值钱;与2重叠
|
||||
19. 回望式时间线降维处境评估 | 2 | 3 | 2 | 第3卡分身;唯一增量"先知必须逐步失灵"是真规律,可惜埋在重复卡里
|
||||
|
||||
**资产卡**:5、6、17(其次 10、15、16)。**噪声卡**:7、12(毙掉或降级用例),3/19、2/18 需合并。
|
||||
|
||||
## 系统性问题
|
||||
|
||||
1. 命名黑话化+场景焊死=检索死:"XX式YY化ZZ"堆叠既非行业术语检索者又猜不到用途;一句话摘要多复制"定位"=剧情复述而非通用手法陈述——资产变噪声头号原因
|
||||
2. 把偶然当规律+伪精确:一句带过的桥段抬成装置,配编造的间隔数字写得像铁律——false precision 最危险
|
||||
3. 同一手法反复分身冒充多个范式:19 张去重后只有 10–12 个独立技法
|
||||
4. "公共范式"名不副实:5 本全是男频穿越/系统/机甲一条赛道,很多是子类型语气癖;多张语气卡照做会主动泄掉紧张感——可用性为负
|
||||
5. 卡里最值钱的是"失败模式"不是"手法":干货几乎都在失败模式字段,说明拆书 prompt 抓错重心——擅长复述发生了什么,不擅长提炼可迁移原则
|
||||
(附 schema 问题:埋设/履约/间隔是伏笔专用框架,半数卡不是伏笔,硬塞=拿一种规范套另一种规范)
|
||||
|
||||
## prompt 改进建议
|
||||
|
||||
1. 强制"迁移测试"砍场景专名:先写出"这技法在完全不同题材(都市悬疑/古装宫斗)怎么用",写不出=不是范式,打回或降级"用例";摘要固定模板「何时用+怎么做+读者得到什么」且禁止复制"定位"
|
||||
2. 两阶段产卡先聚类去重再出卡;整顿装置类型标签(禁"信息差"这种覆盖 11/19 的万能标签当主标签;标签词表与卡名解耦)
|
||||
3. 翻转重心:每卡强制 (a)可迁移因果原则「当X做Y因为读者会Z」(b)触发条件(什么场景该检索到它)(c)至少一个滥用反例;砍掉编造的章节数字(数不出真实间隔就只许定性)
|
||||
40
.claude/skills/review-cards/golden/金标准-番茄作家-2026-07-13.md
Normal file
40
.claude/skills/review-cards/golden/金标准-番茄作家-2026-07-13.md
Normal file
@ -0,0 +1,40 @@
|
||||
# 金标准评审 · 顶级番茄作家视角(opus,2026-07-13,对象=试拆 19 卡)
|
||||
|
||||
> 校准基准:M3 审核 skill 的评分应与此对齐。视角=爽点节奏/读者留存/商业性。
|
||||
|
||||
## 逐卡(卡名 | 成立性 | 可用性 | 可参考性 | 判词)
|
||||
|
||||
1. 延时应答式洗脑成功伪装 | 3 | 3 | 2 | 真招被埋在原书剧情里,一次性妙笔换本书用不上
|
||||
2. 面瘫外化式心绪对冲可视化 | 4 | 4 | 3 | 面瘫吐槽是真手艺,节奏能落笔——可惜和第13张严重重叠
|
||||
3. 未来时态回望式处境降险 | 4 | 4 | 4 | 穿越者先知降压成立且通用——但与第19张同招换皮
|
||||
4. 筹码挂嘴边式第三方威慑锚定 | 4 | 4 | 3 | 硬通货范式,但字段塞了"海拉/探望权"专名泄漏
|
||||
5. 拟人化道具独白式规则灌注 | 4 | 4 | 3 | 反设定灌输真经验——"千亿夸克"原书数字漏进字段
|
||||
6. 新闻播报式闹剧事件确认 | 3 | 3 | 3 | 路子对但摘要与字段各说各话,绑死原书梗
|
||||
7. 宿主梦境式欲望外泄落点 | 2 | 2 | 2 | 过度解读典型,"YY指标"没法指导落笔
|
||||
8. 亲密搭档冒充家长式谎言托管 | 4 | 3 | 3 | 解决"少年主角没人管"真痛点,但名字绕口核心没提干净
|
||||
9. 计划外变量即时消解式伏笔偷换 | 3 | 3 | 3 | 伏笔术成立但绑在换婴情节上,自造装置分类
|
||||
10. 剧透先知式选项四象限抉择可视化 | 3 | 3 | 3 | "四象限"是AI硬套的伪精确,先知系列扎堆
|
||||
11. 路线研究借口式职务身份脱敏注入 | 4 | 3 | 4 | 通用谍战范式迁移性好——名字像技术黑话
|
||||
12. 面部肌肉即时复位式警觉伪装 | 3 | 3 | 2 | 与第1张同族,攒一起就是灌水
|
||||
13. 敌意阈值即时外化式内心杀意标定 | 4 | 3 | 3 | "留白本身成为信息"真手艺——装置类型自曝与第2张重复
|
||||
14. 路人搭讪道具借用式情报截流 | 2 | 2 | 2 | 场景小动作拆成理论,过度解读
|
||||
15. 首镜胖瘦差式肉身身份确认 | 4 | 4 | 4 | 套路但真好用,本批少见能直接抄
|
||||
16. 数字自算式减重目标具象化 | 4 | 4 | 3 | 内核(量化驱动行动感)能迁移
|
||||
17. 数值面板首秀式身份自证 | 5 | 4 | 4 | 最硬的通用范式,契约意识专业
|
||||
18. 苦主自嘲式绝境降压对冲 | 5 | 4 | 4 | 齐佩甲招牌+留人利器+给了频控——本批最值钱
|
||||
19. 回望式时间线降维处境评估 | 4 | 4 | 4 | 比第3张好(先知逐步失灵制造反压)——留这张删第3张
|
||||
|
||||
## 系统性问题
|
||||
|
||||
1. 近义卡没去重,检索自我稀释(先知降压 3/19/10、面瘫外化 2/12/13、微表情复位 1/12)
|
||||
2. 把"一次性妙笔"误当"可复用范式"(7/14/1)——红线:换一本书还成立、还能指导落笔吗
|
||||
3. 命名和字段全是 AI 黑话且信息冗余(埋设手法与履约方式互相复述摘要)
|
||||
4. 出处细节漏进抽象层破坏跨书复用(海拉/千亿夸克/我老大天老二/专名数字梗)
|
||||
5. 只见文学装置不见读者爽感 + 采样偏科开局(打脸/升级/扮猪吃虎/反转中段引擎零覆盖)
|
||||
|
||||
## prompt 改进建议
|
||||
|
||||
1. 先建"技法指纹"再出卡强制归并:指纹相同合并成母卡+多出处实例;全书拆完跑跨章聚类去重
|
||||
2. 加"换书测试"闸门+强制占位符:抹掉专名数字还成立才进公共库;字段只许占位符(角色A/敌方/某设定)
|
||||
3. 补"读者收益"栏(代入/掌控/期待/打脸/意外/装逼)+采样扩到中段爽点
|
||||
4. 命名用作者黑话短名("先知降压""面瘫吐槽""照镜确认""面板开局"),长名降级副标题
|
||||
43
.claude/skills/review-cards/golden/金标准-起点作家-2026-07-13.md
Normal file
43
.claude/skills/review-cards/golden/金标准-起点作家-2026-07-13.md
Normal file
@ -0,0 +1,43 @@
|
||||
# 金标准评审 · 起点白金作家视角(opus,2026-07-13,对象=试拆 19 卡)
|
||||
|
||||
> 校准基准。视角=长篇结构工艺:伏笔埋收距离/信息差维护成本/装置与主线耦合度。
|
||||
|
||||
## 逐卡(卡名 | 成立性 | 可用性 | 可参考性 | 判词)
|
||||
|
||||
1. 延时应答式洗脑成功伪装 | 4 | 3 | 3 | "伪装挂在敌方已知标签反面"真高级工艺;失败模式表述拧巴,命名太贴设定
|
||||
2. 面瘫外化式心绪对冲可视化 | 4 | 4 | 3 | 表里双轨反差真本事;但是场景级跑梗不是埋收装置,硬套伏笔框架
|
||||
3. 未来时态回望式处境降险 | 4 | 3 | 2 | 工艺真实;与 #19 几乎同卡、与 #18 同源,间隔建议自相矛盾
|
||||
4. 筹码挂嘴边式第三方威慑锚定 | 5 | 4 | 4 | 全批最扎实之一——"不兑现的持续威慑",两条失败模式都真,可迁移
|
||||
5. 拟人化道具独白式规则灌注 | 4 | 4 | 4 | 对治 AI 设定倾倒很有用;但"信息差"标签不成立(主角读者同步获知)
|
||||
6. 新闻播报式闹剧事件确认 | 3 | 2 | 3 | 真喜剧工艺但卡自相打架(定位与摘要矛盾、现编标签、两对埋收混一团)
|
||||
7. 宿主梦境式欲望外泄落点 | 3 | 2 | 2 | 唯一真货"用意象承载内心状态";间隔纪律照抄原文段落结构换书即废
|
||||
8. 亲密搭档冒充家长式谎言托管 | 5 | 4 | 4 | 真结构工——"谎言必须有到期日"是白金级提醒
|
||||
9. 计划外变量即时消解式伏笔偷换 | 5 | 4 | 4 | 高级货:埋近收远双层伏笔+"反对旁白补完",全是真伏笔纪律
|
||||
10. 剧透先知式选项四象限抉择可视化 | 4 | 4 | 3 | "被放弃的选项作伏笔总账"真巧思;命名撒谎(没有象限)
|
||||
11. 路线研究借口式职务身份脱敏注入 | 4 | 4 | 4 | 直击信息差维护成本;命名黑话拖后腿
|
||||
12. 面部肌肉即时复位式警觉伪装 | 4 | 3 | 3 | "微表情伏笔+别用独白填死留白"真本事;身份错认标签乱贴
|
||||
13. 敌意阈值即时外化式内心杀意标定 | 4 | 3 | 3 | "未执行本身成为信息"高级;拿别的卡名当装置分类,标签近亲繁殖
|
||||
14. 路人搭讪道具借用式情报截流 | 4 | 3 | 3 | 真调度技巧;但是场景走位不是伏笔装置,"间隔纪律"只是单场闭环
|
||||
15. 首镜胖瘦差式肉身身份确认 | 3 | 3 | 2 | 反面警告有用;装置类型自打耳光(卡名"确认"标签"错认")
|
||||
16. 数字自算式减重目标具象化 | 3 | 3 | 3 | "清单即承诺"内核成立;信息差标签硬错(算自己体重哪来信息差)
|
||||
17. 数值面板首秀式身份自证 | 5 | 4 | 3 | 最强之一——"面板首秀=为后续数值机制铺契约",三条失败模式全干货,标签少见全对
|
||||
18. 苦主自嘲式绝境降压对冲 | 5 | 4 | 3 | 降压 family 最好一张:失败模式全锋利+给了节奏;与 #3 #19 三卡同功
|
||||
19. 回望式时间线降维处境评估 | 5 | 3 | 3 | "先知逐步失灵制造反压"是全批最锋利一句、真白金结构;但与 #3 同卡且粒度错(全书级决策塞进场景卡)
|
||||
|
||||
## 系统性问题
|
||||
|
||||
1. 去重失败同书同功卡扎堆:超神独占 7 张(3/18/19 三卡同功);12/13 同章同族;15/16 同书同题——应按功能合并,取各卡最锋利的失败模式并入
|
||||
2. 装置类型标签体系混乱通胀乱贴:信息差滥用到不成立处、现编标签、拿卡名当分类——标签集合没有闭合定义
|
||||
3. 框架硬套:场景级语气/走位技巧塞进"埋设—履约—间隔"伏笔框架,逼出照抄原文的伪纪律——伏笔卡和场景手法卡应用不同字段模板
|
||||
4. 抽象度两极分化:贴死情节换书即废的偏多;可迁移内核被埋在书专属外壳下,检索命不中
|
||||
5. 伏笔卡普遍缺"回收点+记忆维持"(reminder 节奏)这一环——长篇伏笔的真正成本所在;失败模式质量参差说明该字段没有统一检验标准
|
||||
|
||||
## prompt 改进建议
|
||||
|
||||
1. 装置类型闭合枚举+每类一句判定测试(信息差=必须存在角色A知道而B/读者不知道的明确落差;契诃夫之枪=预先可见放置+后续引爆,一次性道具不算;身份错认=必须有人把A当成B)——不满足任何一类宁可标"场景手法(非装置)"
|
||||
2. 拆成两类卡模板:结构型伏笔卡强制三件套(埋点/回收点/隔章记忆维持);场景型手法卡改填(复用节奏/异质化要求/每章上限)
|
||||
3. 命名强制"手法内核在前、书专属外壳只进出处";拆完一本跑一次同书按功能去重关
|
||||
|
||||
## 一句话总结
|
||||
|
||||
强的极强(4/8/9/17 白金货),弱的贴死原书(6/7/15 换书即废),中间一大批被"标签乱贴+同功重复+框架硬套"拖累。先修标签判定和去重,整体抬一个档。
|
||||
153
.claude/skills/review-cards/scripts/review_cards.py
Normal file
153
.claude/skills/review-cards/scripts/review_cards.py
Normal file
@ -0,0 +1,153 @@
|
||||
#!/usr/bin/env python3
|
||||
"""review-cards skill:公共知识卡三角色审核(拆书流程常设步骤,MiniMax-M3 执行)。
|
||||
|
||||
创始人拍板(2026-07-13):审核是流程内可复用资产——放量时每批卡由 M3 扮演
|
||||
番茄作家/起点作家/主编三角色审核;fable/opus 只在起量前校准本 skill 质量
|
||||
(金标准见 golden/),起量后做一次总审核。
|
||||
|
||||
流程:三角色各一次 M3 调用(全批卡)→ 三组评分汇总 → 判定(pass/revise/reject)
|
||||
→ 写回 draft_payload.审核 节(可追溯)。--calibrate 与 golden 金标准对照输出一致性。
|
||||
"""
|
||||
import json
|
||||
import pathlib
|
||||
import statistics
|
||||
import sys
|
||||
|
||||
import click
|
||||
import psycopg
|
||||
|
||||
sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[2] / "llm" / "scripts"))
|
||||
from llm import chat, extract_json # noqa: E402
|
||||
|
||||
DSN = ("postgresql://root:f6710e2d0294eb1c10e26a805a64bc54@100.64.0.8:5433/muse-example"
|
||||
"?keepalives=1&keepalives_idle=15&keepalives_interval=5&keepalives_count=3")
|
||||
TENANT, ACTOR = 1, "1"
|
||||
GOLDEN = pathlib.Path(__file__).resolve().parents[1] / "golden"
|
||||
|
||||
# 三角色身份(与金标准评审同源)
|
||||
ROLES = {
|
||||
"番茄作家": "番茄小说网顶级畅销作家(多本10亿+在读爆款)。独特视角:爽点节奏、读者留存、商业性——这卡能不能帮 AI 写出让人上头的东西。",
|
||||
"起点作家": "起点中文网白金作家(以结构工艺著称)。独特视角:长篇结构工艺——伏笔埋收距离、信息差维护成本、装置与主线耦合度。",
|
||||
"主编": "头部网文平台资深主编(二十年审稿)。独特视角:可复制性与指导价值——这卡进知识库是资产还是噪声;最懂垃圾写作课的套路话术。",
|
||||
}
|
||||
|
||||
# 统一判定闸(自 opus 金标准三评审蒸馏的共性红线)
|
||||
CRITERIA = """审查判定要点(每张卡都过一遍):
|
||||
1. 换书测试:抹掉书名/专名/具体数字,换一个完全不同题材(都市悬疑/古装宫斗),这卡还成立、还能指导落笔吗?不成立=一次性妙笔而非范式;
|
||||
2. 命名黑话检测:卡名是"作者会说的话"还是"XX式YY化ZZ"的 AI 修饰语堆叠?摘要是通用手法陈述还是原书剧情复述?
|
||||
3. 标签判定:装置类型是否乱贴(信息差=必须存在角色A知道而B/读者不知道的落差;契诃夫之枪=预先可见放置+后续引爆;身份错认=必须有人把A当成B);
|
||||
4. 伪精确检测:"隔两章以上"这类数字是从原文数出来的还是编的?编的=危险的 false precision;
|
||||
5. 同功重复:与本批其他卡是否同一手法换皮(先知降压/面瘫外化这类 family);
|
||||
6. 干货位检查:失败模式字段是否比手法本身更值钱(是→说明手法总结空洞);
|
||||
7. 专名泄漏:字段里出现原书人名/地名/数字/梗=破坏跨书复用。"""
|
||||
|
||||
REVIEW_PROMPT = """你是{role_desc}
|
||||
|
||||
背景:muse 是 AI 长篇创作系统,从经典网文拆出「公共范式卡」,未来 AI 写新书时检索这些卡作写作参考。你负责质量审核:内容是否成立、AI 创作时是否可用、是否可参考(跨书复用)。
|
||||
|
||||
{criteria}
|
||||
|
||||
下面是本批 {n} 张卡(JSON)。逐卡评分(1-5 整数)并给一句毒舌判词。
|
||||
输出规则(只输出一个 JSON 对象):
|
||||
{{"reviews": [{{"name": "卡名", "cheng": 成立性, "yong": 可用性, "can": 可参考性, "verdict": "一句话判词"}}], "overall": "本批系统性问题一句话"}}
|
||||
|
||||
【卡片】
|
||||
{cards}"""
|
||||
|
||||
|
||||
def load_cards(conn, work_id=None):
|
||||
sql = """SELECT id, draft_payload FROM muse_knowledge_draft
|
||||
WHERE tenant_id=%s AND source_type='parse_book' AND deleted=FALSE"""
|
||||
args = [TENANT]
|
||||
if work_id:
|
||||
sql += " AND source_id=%s"
|
||||
args.append(work_id)
|
||||
return conn.execute(sql + " ORDER BY id", args).fetchall()
|
||||
|
||||
|
||||
@click.group()
|
||||
def cli():
|
||||
"""公共知识卡三角色审核(M3 常设步骤)"""
|
||||
|
||||
|
||||
@cli.command()
|
||||
@click.option("--work-id", type=int, help="只审该书的卡;不给则全部")
|
||||
@click.option("--batch", required=True, help="审核批次号")
|
||||
@click.option("--model", default="MiniMax-M3", show_default=True)
|
||||
@click.option("--dry-run", is_flag=True, help="只打印不写库")
|
||||
def review(work_id, batch, model, dry_run):
|
||||
"""三角色审核并写回 draft_payload.审核 节。判定:均分≥3.5 pass / ≥2.5 revise / 其余 reject。"""
|
||||
with psycopg.connect(DSN) as conn:
|
||||
rows = load_cards(conn, work_id)
|
||||
if not rows:
|
||||
click.echo("无待审卡")
|
||||
return
|
||||
cards_json = json.dumps([r[1] for r in rows], ensure_ascii=False, indent=1)
|
||||
all_reviews = {}
|
||||
for role, desc in ROLES.items():
|
||||
content, usage = chat(REVIEW_PROMPT.format(
|
||||
role_desc=desc, criteria=CRITERIA, n=len(rows), cards=cards_json), model=model)
|
||||
data = extract_json(content)
|
||||
all_reviews[role] = {r["name"]: r for r in data.get("reviews", [])}
|
||||
click.echo(f"[{role}] 评 {len(data.get('reviews', []))} 卡 "
|
||||
f"(in={usage.get('prompt_tokens')}) 总评: {data.get('overall', '')[:80]}")
|
||||
# 汇总判定并写库
|
||||
stats = {"pass": 0, "revise": 0, "reject": 0}
|
||||
for cid, payload in rows:
|
||||
name = payload.get("名称")
|
||||
scores, per_role = [], {}
|
||||
for role in ROLES:
|
||||
r = all_reviews[role].get(name)
|
||||
if r:
|
||||
s = [r.get("cheng", 0), r.get("yong", 0), r.get("can", 0)]
|
||||
scores += s
|
||||
per_role[role] = {"分": s, "判词": r.get("verdict", "")}
|
||||
if not scores:
|
||||
continue
|
||||
avg = round(statistics.mean(scores), 2)
|
||||
verdict = "pass" if avg >= 3.5 else ("revise" if avg >= 2.5 else "reject")
|
||||
stats[verdict] += 1
|
||||
click.echo(f" {verdict:6s} {avg} 《{name}》")
|
||||
if dry_run:
|
||||
continue
|
||||
payload["审核"] = {"批次": batch, "模型": model, "均分": avg,
|
||||
"判定": verdict, "角色": per_role}
|
||||
conn.execute("UPDATE muse_knowledge_draft SET draft_payload=%s, updater=%s WHERE id=%s",
|
||||
(json.dumps(payload, ensure_ascii=False), ACTOR, cid))
|
||||
if not dry_run:
|
||||
conn.commit()
|
||||
click.echo(f"审核完成: pass {stats['pass']} / revise {stats['revise']} / reject {stats['reject']}"
|
||||
+ ("(dry-run 未写库)" if dry_run else ""))
|
||||
|
||||
|
||||
@cli.command()
|
||||
@click.option("--work-id", type=int, help="限定书")
|
||||
@click.option("--batch", required=True, help="要对照的审核批次号(先跑 review)")
|
||||
def calibrate(work_id, batch):
|
||||
"""与 golden/scores.json 金标准对照:输出逐卡偏差与整体一致性(起量前校准用)。"""
|
||||
golden = json.loads((GOLDEN / "scores.json").read_text()) # {卡名: 金标准均分}
|
||||
with psycopg.connect(DSN) as conn:
|
||||
rows = load_cards(conn, work_id)
|
||||
diffs, lines = [], []
|
||||
for _, payload in rows:
|
||||
name = payload.get("名称")
|
||||
audit = payload.get("审核") or {}
|
||||
if audit.get("批次") != batch or name not in golden:
|
||||
continue
|
||||
g, m = golden[name], audit["均分"]
|
||||
diffs.append(m - g)
|
||||
lines.append((abs(m - g), f" Δ{m - g:+.2f} M3={m} 金={g} 《{name}》"))
|
||||
for _, ln in sorted(lines, reverse=True):
|
||||
click.echo(ln)
|
||||
if diffs:
|
||||
click.echo(f"对照 {len(diffs)} 卡:平均偏差 {statistics.mean(diffs):+.2f},"
|
||||
f"平均绝对偏差 {statistics.mean(map(abs, diffs)):.2f},最大 {max(map(abs, diffs)):.2f}")
|
||||
click.echo("校准合格线(拍板前建议):平均绝对偏差 ≤0.5 且无 ≥1.5 的单卡背离")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
cli()
|
||||
except (psycopg.Error, RuntimeError) as e:
|
||||
click.echo(f"[错误] {type(e).__name__}: {e}", err=True)
|
||||
sys.exit(1)
|
||||
@ -228,7 +228,9 @@ flowchart LR
|
||||
- **opus 试拆基准(workflow 已完成)**:机动风暴 1–3 章,范式卡 2 张入库(ch2/ch3 各 1 拒 1 越合同)+ch1 脚手架;opus 也犯 JSON 中文引号/缺逗号病(已被 llm skill 容错吸收)。此产物只作 M3 对比基准,不算正式拆书。
|
||||
- **P2 全语料清洗收口(2026-07-13)**:8 书全清(门①创始人放行)——总删 1,685 段/约 6.1 万字(机破星河 2.4 万/机战无限 1.9 万/超神 0.6 万…),审计全在 example_clean_log(批次 P2-20260713 主删 + fix/fix2/fix3 补删 + P2-sweep 高频水印收割),全库空行归一 8,786 章。守卫体系放量长成:行级垃圾特征+书名豁免+水印裁剪+20%顶带下限+敏感窗备选模型降级(见 clean/SKILL.md)。误删实测 1 例 3 字已修复。已知残留待拍:机动风暴「重贴章题+(第N更 求月票)」嵌正文行变体(求票嫌疑 270 处主源)、感言/请假条整章、作者疲劳话散句。
|
||||
- **B2 试拆收口(2026-07-13,门②已呈报)**:5 本×前 3 章 M3 直调完成——scaffold 15/15 全过(绝对字数上限+压缩重试对症后,细纲 2.9%–7.8%);范式卡三轮迭代后活卡 19 张(样张 `docs/试拆-门②样张.md`,opus 同章基准 `docs/试拆-opus基准-机动风暴.md`)。**M3 三病理已档**:①归型偏科——内容有型区分但 type 一律标 craft,prompt 两轮矫正无效,字段指纹改型又被「串型混填」挫败(一卡混两型字段);②重跑自噬——判重名录含本章旧卡+幂等软删+LLM 随机性组合损耗(已修:名录排除本章+0 卡不软删);③偶发脱敏违规/source 偷懒(守卫拦对+机械回填治)。
|
||||
- **未决**:①门② 试拆样张质检+craft 偏科处理方向(B4 环迭代 / 分型单 pass / 接受先行)②B2 放量(硬停,等创始人新指令)③机动残留变体与感言章处理方式。
|
||||
- **拆书流程增补(2026-07-13 创始人拍板+落地)**:①**窗级大纲聚合**——大纲不从单章抽(单章对大纲层可能零贡献),5–10 万字窗(多章细纲+正文)聚合一次,整本完后拿全体细纲终检(parse_outline.py + 93 表);②**三角色审核常设步骤**——番茄作家/起点作家/主编审核公共卡(成立性/AI 可用性/可参考性),**M3 执行**(review-cards skill);fable/opus 只做起量前校准+起量后总审核。校准已过:opus 三评审金标准入 golden/,M3 对照平均绝对偏差 0.45(合格线 0.5),四大系统病独立复现。首批 19 卡 M3 判定 pass 5 / revise 10 / reject 4。
|
||||
- **金标准评审结论(拆书 prompt 的 B4 改造清单,见 review-cards/SKILL.md)**:同功 family 撞车(19 卡实为 10–12 个独立技法)、命名黑话+专名泄漏、伪精确数字、伏笔框架硬套场景手法、失败模式才是干货位、采样偏科开局——七条改进已档,B4 环实施。
|
||||
- **未决**:①B2 放量(硬停,等创始人新指令;放量流程四步已固化=两 pass→窗大纲→终检→M3 审核)②B4 按金标准清单改造拆书 prompt/schema(craft 偏科等病的根治层)③机动残留变体与感言章处理方式。
|
||||
- **教训入档**:StructuredOutput 工具 schema 属性名仅限 ASCII(中文键 API 400)——schema ASCII 键+入库脚本键名归一;Tailscale 长事务需 keepalive+批量写(逐行两万往返曾半死 16 分钟)。
|
||||
|
||||
## 九·旧(2026-07-10 快照,留档)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user