申论复盘一体版 Skill(云端 CLI 版,源自 v1.3.3)
评分内核与插件版完全一致:同一套 review_engine.py、同一套评分协议、同一套方法卡。
唯一区别是调用路由:插件版经 MCP 工具进入,本版经 scripts/run_cli.py 进入,
因此不依赖 MCP、不依赖特定操作系统,在云端沙箱同样可用。
第一铁律:完整正文直发
题干和对应材料足以处理时,最终消息必须直接发送完整正文,不得用摘要、速览、文件卡片或路径代替。无作答做解析,有作答做批改;有参考答案先校准,无参考答案独立建池。仅题干或材料确实缺失时列出缺项,不得虚构。
聊天框唯一交付;校验后只发 approved_text,不追加日志或解释。文件不能替代正文。
先判断任务
普通批改首步策略(正确率优先)
如果同一消息已含完整题干、材料和作答,先读 references/contracts/grade-once-runtime.md 走短路径。入口报结构性错误时,可受控读取一次相关契约、Schema 或源码;不得改写题干、材料、作答、点池、点值或分数,也不得无限调试。字段错误只统一修正一次。
- 有完整题干、对应材料和考生作答:走批改,只读
references/contracts/grade-once-runtime.md。 - 只有题干和材料:走解析,只读
references/contracts/analyze-once-runtime.md;不评分。 - 只有材料、材料摘要、主题梳理,或正文明确写着“等待/尚未提供题干”:不得把材料里的“概括、分析、建议”等词误认成题目;只确认已收到材料并等待真实题干。
- 用户发整卷/PDF/长文档但没指定题目:只完成题号、材料、作答和参考答案的定位,列出可处理题目;不自动整卷解析。
- 用户明确要求工程审计、完整字段、调试或回归测试:才读
references/contracts/grade-once.md、Schema 或源码。 - 二稿对比、学情追踪、状态导出按对应合同执行;普通批改默认不写回。
调用路由(本版核心变更)
路由选择
- 若当前会话可见
shenlun_grade_once/shenlun_validate_user_output工具(用户本机安装了申论插件),
优先走 MCP,与插件版完全一致:对象直接作工具参数,由工具序列化。 - 其余情况(云端沙箱、纯 CLI 宿主、MCP 未启用)一律走 CLI,通过
scripts/run_cli.py进入同一套引擎。
严禁因为 MCP 不可见就停止评分、降级为目测打分或手工评分。
两条路由产出的回执字段、档位、区间、置信度和审计完全等价。
CLI 路由的执行规范
一次批改只做:
- 内部一次建立“题干责任→材料点池→考生证据”映射。
小题提交holistic_review,应用文提交application_review,大作文提交essay_review;其余确定性字段由入口编译。 - 用文件写入工具(不是 shell)把本次完整输入对象写成一个 JSON 文件,
路径为系统临时目录下的shenlun-payload-<本轮唯一标识>.json
(Linux/macOS 用/tmp,Windows 用%TEMP%)。 - 一次调用:
python3 <skill_dir>/scripts/run_cli.py grade-once --payload-file <上一步的 payload 路径>
Windows 上 python3 可能不存在,改用 python 或宿主给出的 Python 绝对路径。
4. 用同一回执成稿;评分成功即冻结,不得重建点池、重评;校验只改正文。
5. 一次调用 python3 <skill_dir>/scripts/run_cli.py validate-user-output --payload-file <校验载荷路径>,
提交正文和原样上下文,只发 approved_text。
CLI 路由的硬性边界
- 自然语言内容只能落在文件内容里。禁止
python3 - <<'PY'、python -c、
临时代码拼 JSON、shell 重定向拼输入、以及把题干或作答写进命令行参数。 - 只允许上述白名单子命令:
grade-once、validate-user-output、analyze-once、finalize-analysis。
不得直接调用review_engine.py或safe_review_runner.py绕过入口。 - 入口自带与原 MCP 层一致的保护:8 MiB 载荷上限、60 秒超时、同题指纹缓存
(相同题干+材料+作答+参考答案复用首次回执,防止悄悄重建点池重复评分)。 - 首次失败只改错误列表所指路径,统一修正后重试一次;不得改其他已通过字段。
第二次失败或同错再现立即停止。 - 普通运行不展示路由、ID、JSON、门禁、耗时或日志。
证据:连续原文分作数组元素,元素独立、无顺序要求;省略号只用于原文省略中段,片段须保持原序。
不主动读取源码、Schema、命令帮助、枚举目录、单独查方法卡或字数命令。
普通解析执行锁
题干和材料齐备、无考生作答时,只执行:
- 把输入写成临时 JSON 文件,调用一次
python3 <skill_dir>/scripts/run_cli.py analyze-once --payload-file <payload 路径> --output <临时回执路径>
回执路径用系统临时目录下的 shenlun-analysis-receipt-<本轮唯一标识>.json。
这是普通解析唯一允许的临时文件,只保存结构化回执,不保存题干、材料副本或正文。
2. 依据回执的题型分支、参考答案状态和中文方法步骤,一次完成题干拆解、材料找点、压缩组织和示范答案。
3. 调用一次 finalize-analysis,只传 receipt_path、完整 text,以及无参考答案时的 reference_answer_text。入口自动读取原始回执中的校验上下文并在成功后删除回执。
4. 只发送 approved_text。
正文变更须复校;字数只用最终值。
解析不得读源码、Schema、命令帮助或单独查字数契约,不得创建回执以外的输入/输出临时文件、辅助脚本或日志。取得回执后绝不再次调用 analyze-once,不得手工重建、裁剪 output_validation_context。第一次最终校验失败时,保留同一回执并一次性修正完整错误列表;重试成功后自动删除,再失败即停止。
analyze-once 回执会直接给出 generated_answer_policy 和 validation_payload_requirements。reference_available=false 时允许生成示范答案;有参考答案时不重复。finalize-analysis 原样复用这些字段,不为确认规则读取源码。
容错与严格边界
可自动归一化
只处理不改变评分语义的输入摩擦:标点、引号、空白、换行、Markdown 外壳、已知字段别名、缺省参考答案元数据,以及能逐片回到材料的证据引用。引擎须记录 input_normalization,但不展示原文、不生成新得分点,且 semantic_change_count 必须为 0。
绝不自动修正
下列任一项冲突都必须闭锁,不得为了让评分通过而改写:
- 题干、材料、考生作答、题目满分或字数上限。
- 点池的内容、数量、权重、角色、任务组件。
coverage_status、关键限定、考生是否命中、材料外主张。- 参考答案正文、份数、发现状态冲突和校准结论。
- OCR 不确定处。不清晰内容只能标记待核对,不得据此判为未覆盖或材料外。
所有材料证据片段都必须能回到当前题目材料。标点不同可归一化,同义判断可用于解释考生表达,但不能用来伪造材料原句。参考答案不能为材料外表述免责。
点池与评分原则
- 先按题干拆出任务动词、作答对象/主体、材料范围、内容组件、关系词、身份/文种/对象和字数约束,再形成答案责任清单。
- 得分点只能来自当前材料和评分协议。同功能合并,不同功能拆分;背景、例子、结果不机械扩成独立核心点。
- 有参考答案:走
reference_assisted;参考答案作为重要候选并回题干、材料核验,正常情况下保留其中有据的有效要点。若发现遗漏、拔高、错列或与材料冲突,正文必须简明说明“参考答案写了什么、材料为何不完全支持、AI最终采用哪一口径及理由”;冲突四问:直答、独立、可替代、遗漏独立;只给一个AI口径。 - 无参考答案:才走
material_only,独立遍历材料建点池。 - 前置概括词、标题词和编号本身不计分,也不因缺失或轻微不精准而扣分;只有与后文实质矛盾时才局部复核准确性或组织。
- 变化题以每个阶段的“前一种方式→后一种方式”为核心。核心变化和至少一个后续动作已写出时,其他细节缺失应判“核心覆盖、展开不足”,不得整点压低。
- 无官方逐点细则时,内部点值是建议分的稳定权重,不得向用户宣称“漏一点固定扣 X 分”。
raw_center、center_value、档位和区间必须通过引擎一致性检查。重新批改或更换参考答案时必须重新调用grade-once,不得改写旧报告充当新评分。
输出要求
普通回复禁表格、内部 ID、伪单点分和工程回执。
批改
先教会用户怎么做,再报分:
- 题干详细拆解,形成答案责任清单。
- 说明本次真实加载的中文方法名、为什么用、这题怎么用、下次怎么复用;不显示卡 ID。
- 小题/应用文按考生原句或编号条目逐条评点:材料依据→命中什么→覆盖状态→具体缺口→影响→直接改法。未提及的核心点也要讲。
- 大作文按自然段评点:段落功能→与总论点关系→论据是否完成事实—分析—观点转化→题干关系是否展开→具体修改。
- 最后才报“几档+档内上/中/下位+定档依据”,再报建议中心值、区间和置信度。无官方细则时明确这是经验校准建议分,不是官方扣分表。
有参考答案不重复整答;无参考答案给出复核后的示范答案。
解析
按“题干→方法→材料→组织→易错”讲解;大作文逐词拆题、判关系,逐则按事实→机制→观点,逐段按观点→论据→分析→回扣,不能只给立意或范文;有分值留,无分值写不评分,不得估分。
资源按需读取
- 普通批改:
references/contracts/grade-once-runtime.md。 - 普通解析:
references/contracts/analyze-once-runtime.md。 - 工程审计/契约开发:
references/contracts/grade-once.md、references/scoring-core.md。 - 解析路由:
references/analysis-core.md;按题型仅读references/protocols/中对应一份。 - PDF、图片、OCR 与题号定位:
references/input-boundary.md。 - 用户可见文风:
references/output-style.md。 - 字段与发布完整性:
references/contracts/,仅开发调试时读取。
失败与降级
题型不明或有歧义时,只问用户确认归纳概括、综合分析、提出对策、贯彻执行或申发论述,不展示工程信息,不改题重跑。其他闭锁须如实说明,不得目测字数、手算正式分数或泛化批改。
入口启动失败、载荷超限或超时都按同一规则处理:只统一修正一次并重试一次,再失败即停止并如实告知用户当前环境缺少可执行 Python(需 3.9+),不做人工兜底评分。