外观
动手实验与排障入口
先完成启动。每个实验都记录模式、版本、输入、预期与实际;演示输出不能证明真实模型质量。
| 实验 | 操作 | 预期证据 | 自动化用例 |
|---|---|---|---|
| L01 完整闭环 | 默认答案错误场景→人工通过→下载 | v1问题、v2答案、6素材、视频字幕、ZIP manifest | test_complete_revision_approval_delivery |
| L02 格式与业务错误 | 分别选format_error/business_error | schema_repair与reviewed属于不同路径 | test_schema_error_separate_from_business_error |
| L03 空资料与过滤 | 地区选ZZ;A1改B1 | human且无版本;不跨地区兜底 | test_empty_and_region_mismatch |
| L04 导入后继续 | 给B1导入对应参考,再退回 | 同一任务重新检索、生成 | test_empty_then_import_and_resume |
| L05 资料冲突 | 两份facts对同一key赋不同值 | 检索problem.conflicts,不自动任选一份 | test_source_conflict |
| L06 修订预算 | persistent_error、上限1 | 两个版本后人工;修改答案退回复审 | test_revision_limit_and_manual_edit |
| L07 工具越权 | 让reviewer调用plan_asset | ToolDenied+tool_denied事件 | test_context_and_tool_permissions |
| L08 跨章节一致性 | 同一book_id角色年龄改值 | consistency问题含依据与目标值 | test_cross_chapter_fact_conflict |
| L09 进程中断 | 生成完成后强制杀worker | 新进程从checkpoint恢复,生成不重复 | test_killed_worker_resumes_after_generation |
| L10 租约与旧worker | 租约过期后重新领取 | lease_token变化;旧token更新0行 | test_expired_lease_and_fencing |
| L11 素材超时 | media_timeout场景 | 首次可安全重试,第二次成功 | test_media_timeout_bounded_retry |
| L12 结果不明 | 模拟真实请求已发出后超时/进程死 | unknown不自动重发,回执核对或明确重试 | test_unknown_external_result_not_silently_retried |
| L13 去重与回执 | 重复素材计划、登记前中断 | 相同任务ID集合;receipt重建assets | test_duplicate_plan_and_receipt_recovery |
| L14 内容更新 | 交付后只改c1-reading | c1三类hash变,c2复用,旧task superseded | test_incremental_edit_and_old_result_protection |
| L15 文件损坏 | 受控测试中修改生成文件 | sha256失败阻止交付 | test_corrupt_asset_blocks_delivery |
运行单个实验测试时:
bash
cd system
docker compose stop worker
docker compose --profile test run --rm tests pytest -q tests/test_system.py -k killed_worker
docker compose start worker测试夹具使用独立随机数据库。不要在真实外部服务模式下执行故障注入;该测试套件主动要求demo。真实适配器测试在内存HTTP传输中模拟响应,不发往供应商。
手工进程恢复实验
bash
docker compose kill -s SIGKILL worker
docker compose up -d worker
docker compose logs -f worker应等待超过租约时间,观察lease_recovered。杀进程的时间点不同,重放范围也不同:生成前无checkpoint则重新开始;生成版本已提交但checkpoint未提交则靠node_key避免重复版本;外部素材已接受但无本地回执则进入unknown。自动化kill用例选择生成后的边界,不能替代所有崩溃时间点的穷举。
实验记录模板
| 项 | 记录 |
|---|---|
| 环境 | commit/锁文件、mode、数据库版本、模型配置(不写密钥) |
| 触发 | job_id、version、输入和修改 |
| 预测 | 应到哪个节点、哪些表/文件改变 |
| 观察 | 事件、差异、错误分类、调用次数 |
| 结论 | 是否符合预期;还有什么证据缺失 |
| 讲述 | 先直接解释机制,再给本次复现的STAR |