原记录归因于"演示项目缺 financial.operating_cashflow 导致模型引用未知字段", 与代码不符:已定义但本次无值的字段仍会建键(apply_candidate 无条件建键), 不会触发该守卫,补该字段因此不可能修好它。 更正为字段表三处缺陷(方法文档 inputs 超出字段表、守卫比对错集合、未下发字段清单), 并补记实测结果、证据路径,以及一项未修复的完整性漏报(skill-quality 只遍历已存在值的字段)。 Co-Authored-By: Claude Code <noreply@anthropic.com>
8.3 KiB
四批交付记录
口径见 16 交付纠偏规格 §4:每批必须列出页面入口、操作步骤、 实际结果、证据位置、剩余缺口;未接通项标"部分完成"。
第一批:接通正常预审执行链
状态:部分完成(执行链已接通并经真实运行验收;模型类技能已能跑完全程,见文末 「更正记录」;界面点击本身尚未由自动化驱动,材料确认步骤未在浏览器中完整走一遍)。
页面入口
| 入口 | 位置 |
|---|---|
| 发起预审 | /xingbang-workbench?project=DEMO-B「材料与问题」页 → 顶部"开始AI预审"按钮 |
| 查看结果与依据 | 同页「预审与推进沙盘」面板:主审意见、核查结果、核查维度(10)、每条"查看依据" |
操作步骤(实际执行)
- 启动 v2:后端
uvicorn app:app --port 8012(带XINGBANG_DEMO_ROLE_LOGIN=1)、 前端npm run dev -- -p 3212。 - 经前端代理发起预审(与页面按钮同一请求):
POST /api/risk-agent/project-assistant/projects/DEMO-B/runs,角色头manager。 - 等 worker 执行结束(轮询运行状态)。
- 读取
GET .../prescreen/projects/DEMO-B/runs/{run_id}。 - 浏览器打开工作台并渲染面板截图。
实际结果
- 运行结束状态
partial,视图recommendation=supplement,probability=null。 - 维度 10 个:5 已核查 / 2 待核实 / 3 存在阻断项;阶段 1–2
(
corporate.consistency、corporate.cashflow、corporate.assets、corporate.coverage、skill-quality、skill-finance、skill-credit、demo.coverage、rules-corporate、corporate.analysis)。 - 核查结果 4 条(
lease.coverage.below_demo_threshold、lease.asset.duplicate、financial.cashflow.missing、financial.liabilities.conflict),各带依据与组件版本。 - 证据 14 条随视图返回,界面"查看依据"可展开来源与定位。
- 未完成项 1 条:
RUN_STEP_FAILED 金租对公业务综合核查:未配置受信模型,语义核查未执行——模型不可用时如实标未完成,不伪造结论。 - 缺证 2 项:
financial.operating_cashflow、存在尚未人工确认的材料候选。 - 反复发起产生多条记录(本轮 3 条),旧记录仍可读;轨迹引用指向本次运行。
- 呈现判定:10 维超出雷达可读范围 → 界面改用分组列表并保留全部维度(AC-44 真实分支)。
证据位置
| 内容 | 位置 |
|---|---|
| 会话内验证日志 | 本轮运行输出(发起→轮询→读视图) |
| 端到端测试 | backend/test_prescreen_from_run.py(12 项,真实 enqueue + worker 执行) |
| 界面渲染 | claude_use/tmp/v2-batch1-panel.png(本机截图,未入库) |
| 全量验证 | test-evidence/20260930-123451-0228966/(scripts/verify.py 11/11 PASS,531 项单测) |
| 推送状态 | 已推送 origin/main:f118721..c5edb40;git ls-remote origin main 实测与本地 HEAD 一致 |
剩余缺口
- 界面点击未由自动化驱动:本机无 playwright/puppeteer/chromium-cli,发起预审是通过 与页面按钮同一条代理请求完成的;"点按钮"这一步没有脚本化证据。
- 材料确认已走通(部分闭合):通过应用自己的入口补齐演示项目缺的字段——
POST /documents上传按解析器键名书写的材料(operating_cashflow: 1200)→ 项目待确认候选 →POST /supplements带candidate_ids确认 →financial.operating_cashflow等 3 个字段生效(revision 5→6)。 未闭合部分:仍是接口调用而非浏览器点击。 - 演示角色需要
XINGBANG_DEMO_ROLE_LOGIN=1:否则 worker 的authorized()会把 演示角色发起的运行判为"权限已撤销"(运行会失败但可读)。这是配置要求,需写入部署说明。 - 模型已接通并能跑完全程(2026-09-30 第二轮更正,见下方「更正记录」):配置 DeepSeek
(
XINGBANG_LOCAL_MODEL_*)后,模型类技能corporate.analysis真实发起调用。 本轮首测仍报模型引用未知字段——但根因不是缺financial.operating_cashflow; 修复字段表三处缺陷后,模型跑完全程:工具调用 11 次 / 预算 18,降级记录为空。 - 取消中的运行不产出视图(只处理 completed/partial/failed)。
更正记录(2026-09-30 第二轮实测)
更正:本节原先记为"模型已接通,但预算不足",其归因有误。第二轮用真实模型复测后确认:
模型引用未知字段与缺financial.operating_cashflow无关。 "已定义但本次无值"的 字段,键仍然存在(backend/services/assistant_materials.py的apply_candidate无条件建键), 不会触发该守卫;补这个字段因此不可能修好它。实测补件后(revision 2→4,缺证清零)报错照旧。- 真正被拒的是
repayment.*,进而是字段表的三处缺陷:backend/skills/financial-leasing-*/SKILL.md的inputs声明了 8 个 S1 标准字段表里 不存在的字段:还款来源、涉诉、增信、保证金、保险、客户名称;- 字段守卫比对的是"当前恰好有值的字段",而非标准字段表,于是把"标准字段但本次无数据" 误判为未知字段——与提示词自身"缺失资料标 unknown"自相矛盾;
- 模型从未被告知允许使用的字段名,只能靠猜(实测先猜
repayment.annual_amount, 放开后改猜metrics.debt_ratio)。
- 工具预算不是约束:跑通的那次实际只用了 11 次,原值 12 本就够用。
max_tool_calls12→18、超时 120s→180s 保留作余量,但不构成修复。
已修复(4 个文件):
| 文件 | 改动 |
|---|---|
backend/services/assistant_materials.py |
补 8 个标准字段;NUMERIC 排除两个非数值字段;legal.case_count 加非负整数校验 |
backend/services/assistant_model.py |
守卫改为比对标准字段表;向模型下发 standard_fields;提示词加字段约束;删除遮蔽模块级导入的局部导入 |
backend/services/project_assistant.py |
补 insurance.→租赁物、deposit.→增信 维度前缀 |
backend/services/component_registry.py |
方案预算与版本(1.0.0→1.1.0) |
字段表三处是代码层改动,对既有数据库立即生效;预算存放在冻结组件里,需走
POST /components 草稿 → publish 才对既有库生效。
实测结果(一次性临时库 + DeepSeek,演示库未改动):corporate.analysis 由 failed
变为 partial(部分结果为 unknown,属如实标注而非失败),降级记录为空,
核查结果 3 条 → 14 条。证据:test-evidence/20260930-171301-962d425/
(scripts/verify.py 11/11 PASS,531 项单测)。
本轮新发现、尚未修复:skill-quality 的完整性检查只遍历"已存在值的字段"
(backend/services/skill_executor.py),因此从未提供过的字段永远不会被判为缺失——
真实项目下"资料完整性"会漏报。建议单独立项,不并入本批。
运行环境配置(本地演示,2026-09-30 实测)
复现本记录需要以下环境变量。密钥一律不入库、不写入任何文件:本地演示用 shell 变量 展开传入,正式环境请用部署系统的密钥管理。
XINGBANG_DEMO_ROLE_LOGIN=1 # 演示角色发起运行必需,否则 worker 判"权限已撤销"
XINGBANG_LOCAL_MODEL_URL=https://api.deepseek.com/v1
XINGBANG_LOCAL_MODEL_NAME=deepseek-flash # 可换 deepseek-v4-pro(语义核查质量优先)
XINGBANG_LOCAL_MODEL_KEY=<你的 DeepSeek API Key>
# 后端启动前清空代理:实测直连 api.deepseek.com 可用(HTTP 200),
# 系统代理 127.0.0.1:7890 不可用(HTTP 000,与 AGENTS.md 记录的坑一致)
启动:cd backend && venv/Scripts/python.exe -m uvicorn app:app --host 127.0.0.1 --port 8012;
前端:npm run dev -- -p 3212,并设 RISK_AGENT_BACKEND_URL=http://127.0.0.1:8012(v2 隔离端口)。
第二批:完成历史经验加工流程
状态:未开始。
第三批:按已确认原型完成新版界面
状态:未开始。
第四批:接通评审反馈与改进发布
状态:未开始。