Files
hermes-skills/skills/legal/contract-portfolio-analysis/references/output-style-consistency.md
T

2.9 KiB

Output Style Consistency — Three-Layer Defense

Problem (2026-06-30 Maggie discovery)

When processing multiple campuses in separate sessions, the LLM's data-extractor output drifts in style because earlier campus outputs are no longer in context. The first batch (解放中路→星月, 7 campuses) was consistent due to context anchoring — each campus saw the previous output and copied its style. When 跃龙路 was processed in a new session, the LLM had no reference and generated a different style:

  • H列: bullet-list format instead of paragraph-style
  • K列: statistical tag format ("10项风险(3高/5中/2低)") instead of narrative ("【整体评价】...")
  • L列: categorized headers ("【核心缺失16项】") instead of numbered list

Maggie: "金额,风险,模版对比各列内容的审查和修改意见表达都不一样了"

Root Cause

LLM context anchoring effect: style consistency comes from seeing previous outputs in context, not from prompt instructions alone. When context window resets between sessions, the anchoring is lost.

Three-Layer Defense (implemented in nantong-lease-audit v2 workflow)

Layer 1: Fixed Templates in Workflow Prompt

In the data-extractor role's procedure, embed concrete style examples with explicit "禁止" (prohibited) patterns:

# H列 format: paragraph-style with 【】category headers, no bullets
# K列 format: 【整体评价】opening + ❗【需客户核实】numbered list
# L列 format: one-line relationship statement + numbered diff list
# J列: exactly "履行中"/"已到期"/"已解除", no parenthetical explanations

Layer 2: Reference Loading Before Generation

Before generating data for a new campus, load the most recent completed campus's xlsx and extract H/K/L content as style anchor:

REF_XLSX=$(ls -t /path/to/房租物业合同/*/*梳理*.xlsx 2>/dev/null | head -1)

Read with openpyxl, inject into prompt context. LLM sees "previous campus looks like this" and naturally aligns.

Layer 3: Post-Processing Validation

Run output-style-check.py after generation, before upload:

python3 ~/.hermes/scripts/output-style-check.py <campus>-row-data.json

Checks 8 rules:

  • H列: no bullet symbols (•/-/*), no "【category·clause】" merged headers
  • K列: no statistical openings ("X项风险(Y高/Z中)"), no "序号·等级·条款号" tags, no markdown tables, must have 【整体评价】
  • L列: no statistical openings ("X处差异(Y缺失/Z修改)"), no "【核心缺失/修改】" sub-headers, no "vs" separators
  • J列: exact match "履行中"/"已到期"/"已解除"

Exit 0 = pass, exit 1 = list violations for fix.

Workflow Integration

In nantong-lease-audit.yaml v2 (hash C77579MQ9QPKE), the data-extractor procedure sections 5-6 implement layers 1-2. Layer 3 is run manually after workflow completes, before xlsx generation.

Script Location

~/.hermes/scripts/output-style-check.py — standalone, no dependencies beyond stdlib json/re/sys.