Phase 1 — 主题理解
你需要详细思考如下要点:
- 合同类型识别(技术服务 / 买卖 / 租赁 / 劳务 / NDA / 框架协议 / 其他)→ 查询
experts/legal-contract-expert/references/terms-library.md确认本类型对应的法律依据与必备条款清单。 - 当事人画像:甲乙方身份(自然人 / 公司 / 政府机构)、是否存在多方、是否涉及境外主体。
- 核心商业条款 5-8 条:标的物/服务、价款/费用、履行期限、验收标准、违约责任、争议解决、保密与知识产权、生效条件。
- 高风险点识别:对方违约风险、不可抗力场景、知识产权归属、数据合规、跨境合规等。
保存到 output/params/topic.yaml:
detected_doc_type: "技术服务合同"
target_length: 4500
target_tone: "正式法律文书,第三人称,中立客观"
contract_type: "technical_service" # 合同类型枚举
parties: ["甲方:XX公司", "乙方:XX公司"]
governing_law: "《民法典》合同编 + 相关行业特别法"
mandatory_clauses: # 本类型必备条款清单(来自 references)
- 合同标的
- 价款与支付
- 履行期限
- 验收标准
- 违约责任
- 争议解决
- 生效条件
risk_level: "high" # 法律合同默认 high
Phase 2 — Research(深度优先,不可跳过)
法律合同不存在"纯格式化跳过 Research"的情形——即便是填空式模板,也必须核对条款合规性。因此本阶段强制执行。
你需要先参考 参数字典 <plugin_root>/core/engines/deep-research/README.md 生成驱动引擎的参数,保存到 output/params/deep-research.yaml。生成参数文件后,再读取 <plugin_root>/core/engines/deep-research/engine.md 执行 6 步状态机,产出信息库快照到 snapshot_path。
默认 deep-research 参数(L2 法律合同专用,区别于 L1 的关键点已高亮):
# 必填参数(运行时由 Phase 1 结果填入)
topic: "<由 Phase 1 主题理解结果填入,含合同类型与核心标的>"
tools: ["web_search", "local_knowledge"] # 同时使用网络检索 + 本地法律知识库
# 可选参数(已为 L2 法律合同配置严格值)
scope: "local_knowledge" # 深度优先,聚焦专业合同知识
max_loops: 3 # 允许更多轮研究(vs L1 的 2)
min_facts_required: 10 # 事实密度要求更高(vs L1 的 5)
gap_check_strict: "strict" # 严格模式:Q1-Q6 全部必须通过
search_dimensions: # 法律合同必搜四维
- "合同类型与法律依据"
- "必备条款清单"
- "典型违约与争议案例"
- "高风险点与防范条款"
tier_priority: # 权威源优先级
- "《民法典》合同编及司法解释"
- "最高法指导性案例"
- "行业主管部门规章"
snapshot_path: "output/research/{topic}_research.md"
研究阶段的最低产出要求(若引擎未达成则自动进入下一 loop):
- 本合同类型的必备条款清单(来自法律法规)
- 本合同类型的常见反模式与坑点(来自案例)
- 用户场景对应的高风险条款建议
Phase 3 — Writing(纯写作 + 输出 critic_config)
Step 3.0 — 生成 critic_config
根据 Phase 1 产出的 output/params/topic.yaml,生成 critic_config 声明(由 doc-writer 消费):
# ===== 模式提示 =====
critic_mode_hint: "per-section" # 法律合同默认 per-section
force_mode: "per-section" # ❌ L2 法律合同禁用 skip,短合同允许 once
# ===== 评分标准 =====
rubrics_files:
- "experts/legal-contract-expert/references/anti-patterns.md"
- "experts/legal-contract-expert/references/terms-library.md"
- "experts/general-writer/references/quality-framework.md"
pass_score: 85 # 法律合同高标准(vs L1 的 75)
max_loops: 3 # 允许最多 2 次重写
# ===== per-section 模式参数 =====
section_params:
scope: "section"
min_issues: 2
min_instructions: 3
must_check:
- "必备条款完整性"
- "法律术语规范性"
- "权利义务对称性"
# ===== full 模式参数 =====
full_params:
scope: "full"
min_issues: 3
min_instructions: 5
must_check:
- "必备条款完整性"
- "条款间逻辑一致性"
- "风险点覆盖度"
- "甲乙方权利义务对称性"
# ===== revision 模式参数 =====
revision_params:
scope: "revision"
min_issues: 1
min_instructions: 2
# ===== 特殊决策 =====
reject_rule: "score < 75 OR missing_mandatory >= 2" # 综合分<75 或必备条款缺失≥2 → 拒绝交付
enable_external_critic: true # 强制启用外部 Critic 做法律审查
模式决策参考(force_mode 生效规则):
if target_length ≤ 2000 且 contract_type ∈ {simple_nda, simple_authorization} → once
else → per-section # 默认走 per-section
# skip 模式对本 Expert 无效(force_mode 阻止)
Step 3.1 — 执行写作
预期 once 模式(短合同)
1. 生成全文 draft → 落盘 output/draft/{title}_v0.md
预期 per-section 模式(默认路径)
条款块切分建议(按法律合同惯例):
- 首部(合同名称、当事人信息、鉴于条款)
- 合同标的
- 价款/费用与支付
- 履行期限与交付
- 验收标准
- 违约责任与赔偿
- 不可抗力
- 知识产权 / 保密
- 争议解决
- 生效、变更、终止与其他
1. 生成条款块大纲 → 落盘 output/draft/{title}_outline.md
2. 对每个条款块 i:
a. 生成条款块 i 的 draft → output/draft/{title}_ch{i}_v0.md
3. 合并全文 → 落盘 output/draft/{title}_merged_v0.md
Step 3.2 — 返回产物
将 draft + critic_config 一起返回给 doc-writer:
本阶段的完整产物清单(落盘到 output/):
output/
├── params/
│ ├── topic.yaml # Phase 1 产出
│ ├── deep-research.yaml # Phase 2 产出
│ └── critic_config.yaml # 本阶段产出(critic 声明)
├── research/
│ └── {topic}_research.md # Phase 2 产出
└── draft/
├── {title}_outline.md # per-section 模式才有
├── {title}_ch{i}_v0.md # per-section 模式的条款块稿
├── {title}_v0.md # once 模式的全文稿
└── {title}_merged_v0.md # per-section 模式合并后的全文稿
Step 3.3 — 决策分支(法律合同的特殊拒绝策略)
注意:以下决策逻辑现在由 doc-writer §3.bis 根据
critic_config.reject_rule执行。此处仅作 Expert 视角的说明。
| 决策 | 说明 |
|---|---|
| PASS(综合分 ≥ 85) | 正常交付 |
| DEGRADED(综合分 < 85 但 ≥ 75) | 可交付,但强烈建议律师人工复核后使用 |
| REJECT(综合分 < 75 或 必备条款缺失 ≥ 2 项) | 拒绝交付!仅输出审查报告 |