fix: tolerate runtime schema drift

This commit is contained in:
Yoilun
2026-05-25 18:43:46 +08:00
parent bb8b8fe732
commit 69e1af7a17
8 changed files with 313 additions and 25 deletions

View File

@@ -60,7 +60,8 @@ curl http://127.0.0.1:18083/api/workflow/events
- 不读取 `.codex/auth.json`
- 不写入 Codex SQLite。
- SQLite 通过纯 Go `modernc.org/sqlite v1.35.0``mode=ro&immutable=1` 打开;缺失 SQLite 返回空列表和低置信度来源说明。
- 运行线程 API 返回聚合 `source` 和分数据源 `sources`;仅 `state_5.sqlite` 或仅 `goals_1.sqlite` 缺失时,聚合来源为 `sqlite_partial`,缺失的一侧为 `sqlite_missing` / `low`
- 运行线程 API 返回聚合 `source` 和分数据源 `sources`;仅 `state_5.sqlite` 或仅 `goals_1.sqlite` 缺失时,聚合来源为 `sqlite_partial` / `medium`,缺失的一侧为 `sqlite_missing` / `low`
- 运行线程读取使用 `PRAGMA table_info` 适配 schema drift缺关键列时对应表返回空列表和 `sqlite_schema_drift` / `low` 证据可选列缺失、NULL 和数值字段按空字符串或文本值处理。
- `.codex/agents/*.toml` 写回必须先备份。
- 当前 `/api/agents` 只读列出 `.codex/agents` 直属 `.toml` 文件,读取前通过 Codex home 边界和 agent TOML 专用 resolver坏 TOML 以单条 `invalid` 状态返回,不导致服务崩溃。
- 当前 `/api/projects` 只读解析 `.codex/config.toml` 中的 `[projects."..."]`,展示路径、显示名、信任等级和目录存在性。
@@ -70,4 +71,4 @@ curl http://127.0.0.1:18083/api/workflow/events
- Codex 内部 SQLite schema 可能变化。
- 运行状态由多来源推断,必须显示置信度。
- Phase 3 真实 SQLite 读取已覆盖临时测试库;如果真实 Codex schema 与当前查询列名不同,需要新增兼容查询而不是降级写死流程
- Phase 3 真实 SQLite 读取已覆盖临时测试库;如果真实 Codex schema 新增字段或缺少可选字段,应继续走 schema-aware 查询和来源证据,而不是让 API 500