Commit 12354a37 by ccran

feat: update review flow;

parent 8371d9cd
No preview for this file type
--- ---
name: review-flow-skill name: review-flow-skill
description: 合同审查编排 Skill。用于把 URL 或本地合同文件下载/解析为 txt,逐条覆盖 rules.xlsx 中的审查规则,调用 review-llm-skill 完成路由、审查、反思、合并,并将结果文件上传 description: 合同审查编排说明 Skill。仅提供合同审查的流程、规则覆盖、状态落盘和结果产出要求;LLM 需要根据这些编排规则自行选择并调用合适的 Skill 完成审查
--- ---
# Review Flow Skill # Review Flow Skill
## 定位 ## 定位
`review-flow-skill` 是合同审查的流程编排层。它不直接实现 HTTP、文档解析、Excel 读写或 LLM 提示词,而是按固定顺序组合以下 Skill: `review-flow-skill` 是合同审查的编排说明层。它本身不执行下载、解析、Excel 读写、LLM 审查、上传,也不要求调用固定入口脚本。
使用本 Skill 时,LLM 必须阅读并遵循下方编排规则,自行根据当前任务、输入类型和可用能力选择合适的 Skill 或工具完成审查。常见协作 Skill 包括:
- `http-skill`:URL 输入时下载源文件;审查完成后上传结果文件。 - `http-skill`:URL 输入时下载源文件;审查完成后上传结果文件。
- `doc-excel-skill`:把 Word/PDF/Excel/CSV 解析成 UTF-8 txt;读取 `assets/rules.xlsx`;把 JSON 结果写入 Excel。 - `doc-excel-skill`:把 Word/PDF/Excel/CSV 解析成 UTF-8 txt;读取 `assets/审查规则.xlsx`;把 JSON 结果写入 Excel。
- `review-llm-skill`:执行规则路由、具体审查、反思复核、结果合并。 - `review-llm-skill`:执行规则路由、具体审查、反思复核、结果合并。
如果某个协作 Skill、脚本或工具不可用,LLM 应在不破坏编排约束的前提下选择等价能力完成相同步骤,并在结果中说明替代方式。
## 标准流程 ## 标准流程
1. 输入识别 1. 输入识别
- 如果输入是 `http://``https://` URL,必须先调用 `http-skill` 下载到本地工作目录。
- 如果输入是本地路径,直接进入解析步骤。
- 如果输入是 `http://``https://` URL,应先使用可用的 HTTP 下载能力下载到本地工作目录。
- 如果输入是本地路径,直接进入解析步骤。
2. 文档解析 2. 文档解析
- 优先把待审文件解析为 `.txt`,减少后续上下文占用。 - 优先把待审文件解析为 `.txt`,减少后续上下文占用。
- `.txt` 直接复用。 - `.txt` 直接复用。
- `.doc``.docx``.wps``.pdf` 使用 `doc-excel-skill/scripts/doc_tool.py` 转 txt。 - `.doc``.docx``.wps``.pdf` 应使用可用的文档解析能力转 txt。
- `.xlsx``.xls``.csv``.tsv` 使用 `doc-excel-skill/scripts/excel_tool.py` 读取各 sheet 后序列化为 txt。 - `.xlsx``.xls``.csv``.tsv` 应使用可用的表格解析能力读取各 sheet 后序列化为 txt。
3. 规则加载 3. 规则加载
- 默认从 `skills/review-flow-skill/assets/rules.xlsx` 读取审查规则。
- 默认从 `skills/review-flow-skill/assets/审查规则.xlsx` 读取审查规则。
- 未指定 sheet 时读取所有 sheet。 - 未指定 sheet 时读取所有 sheet。
- 必须覆盖到每一条非空规则。流程不得因为路由未命中而跳过“规则覆盖记录”。 - 必须覆盖到每一条非空规则。流程不得因为路由未命中而跳过“规则覆盖记录”。
4. 状态记录 4. 状态记录
- 每次运行在工作目录生成 `state.json` - 每次运行在工作目录生成 `state.json`
- 状态至少记录:源文件、txt 文件、规则文件、规则总数、当前规则序号、已完成规则、输出文件路径。 - 状态至少记录:源文件、txt 文件、规则文件、规则总数、当前规则序号、已完成规则、输出文件路径。
- 每完成一条规则立即写回状态,用于断点续审。 - 每完成一条规则立即写回状态,用于断点续审。
5. 逐条规则审查 5. 逐条规则审查
- 按规则顺序逐条推进。 - 按规则顺序逐条推进。
- 对每条规则,先对 txt 分块调用 `review-llm-skill``router` 动作 - 对每条规则,先对 txt 分块执行路由判断
- 只有路由命中的分块才调用 `review` 动作 - 只有路由命中的分块才执行具体审查
- 即使所有分块均未命中,该规则也必须标记为已覆盖,并记录路由未命中。 - 即使所有分块均未命中,该规则也必须标记为已覆盖,并记录路由未命中。
6. 单规则反思 6. 单规则反思
- 每条规则的分块审查完成后,将该规则的原始 findings 放入 `context.findings`,调用 `reflect` 动作复核。
- 反思结果写入中间结果文件。
- 每条规则的分块审查完成后,将该规则的原始 findings 放入反思上下文,执行复核。
- 反思结果写入中间结果文件。
7. 全局合并 7. 全局合并
- 所有规则审查完毕后,对反思后的 findings 按 `rule_name``result``original_text` 聚合。 - 所有规则审查完毕后,对反思后的 findings 按 `rule_name``result``original_text` 聚合。
- 同组多条 findings 调用 `merge` 动作融合 `issue``suggestion` - 同组多条 findings 需要融合 `issue``suggestion`
- 输出最终 JSON 和 Excel 汇总文件。 - 输出最终 JSON 和 Excel 汇总文件。
8. 结果上传 8. 结果上传
- 默认使用 `http-skill` 上传最终 Excel 文件。
- 如调用方只需要本地文件,可传 `--no-upload`
## 工具文件 - 如调用方需要上传结果,应使用可用的上传能力上传最终 Excel 文件。
- 如调用方只需要本地文件,可仅保留本地输出。
## 编排资源
- `scripts/review_flow.py`:审查流程编排 CLI。 - `assets/审查规则.xlsx`:默认审查规则库。
- `assets/rules.xlsx`:默认审查规则库。
## 输出文件 ## 输出文件
运行目录默认位于 `skills/review-flow-skill/outputs/run-YYYYmmdd-HHMMSS/`,包含: 每次审查应创建独立运行目录,例如 `skills/review-flow-skill/outputs/{输入文件名}/`,包含:
- `input.txt`:解析后的合同文本。 - `input.txt`:解析后的合同文本。
- `state.json`:断点续审状态。 - `state.json`:断点续审状态。
...@@ -70,59 +73,12 @@ description: 合同审查编排 Skill。用于把 URL 或本地合同文件下 ...@@ -70,59 +73,12 @@ description: 合同审查编排 Skill。用于把 URL 或本地合同文件下
- `findings_reflected.json`:按规则反思后的结果。 - `findings_reflected.json`:按规则反思后的结果。
- `final_findings.json`:全局合并后的最终 JSON 结果。 - `final_findings.json`:全局合并后的最终 JSON 结果。
- `review_result.xlsx`:最终 Excel 汇总文件。 - `review_result.xlsx`:最终 Excel 汇总文件。
- `upload_result.json`:上传结果,仅在上传成功后生成。
## 使用示例
查看帮助:
```bash
python skills/review-flow-skill/scripts/review_flow.py --help
```
审查 URL 文件并上传结果:
```bash
python skills/review-flow-skill/scripts/review_flow.py \
https://example.com/contract.docx
```
审查本地文件,不上传:
```bash
python skills/review-flow-skill/scripts/review_flow.py \
demo/example.docx \
--no-upload
```
只审查指定 sheet:
```bash
python skills/review-flow-skill/scripts/review_flow.py \
demo/example.pdf \
--sheet-name 通用 \
--sheet-name 借款
```
从已有运行目录继续:
```bash
python skills/review-flow-skill/scripts/review_flow.py \
--resume skills/review-flow-skill/outputs/run-20260612-173000
```
调试时限制本次最多推进 3 条规则:
```bash
python skills/review-flow-skill/scripts/review_flow.py \
demo/example.docx \
--max-rules 3 \
--no-upload
```
## 约束 ## 约束
- 不在该 Skill 中重写下载、上传、文档解析、Excel 操作或 LLM 提示词能力。 - 不在该 Skill 中重写下载、上传、文档解析、Excel 操作或 LLM 提示词能力。
- 不把该 Skill 当作可直接执行的审查程序;它只定义编排规则。
- LLM 必须自行根据编排规则选择、组合并调用可用 Skill 或工具完成审查。
- 审查过程必须逐条规则推进并持久化状态。 - 审查过程必须逐条规则推进并持久化状态。
- 规则覆盖记录和最终结果必须落盘,避免只保存在上下文中。 - 规则覆盖记录和最终结果必须落盘,避免只保存在上下文中。
- 默认使用 txt 分块输入 LLM,避免一次性塞入完整合同造成上下文过大。 - 默认使用 txt 分块输入 LLM,避免一次性塞入完整合同造成上下文过大。
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment