desktop/src-tauri/crates/core/src/adapters/kilo/common.rs
第 1 条注释,第 1 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:1
//! Kilo Code CLI 产品特有的公共部分(从根级 usage_map.rs 下沉,V30 目录约定):第 2 条注释,第 2 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:2
//! - usage 映射(`map_kilo`/`KiloUsage`,全互斥关系);第 3 条注释,第 3 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:3
//! - 源 SQLite 只读访问实现(architecture.md#database 末五条):第 4 条注释,第 4 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:4
//! 只读连接 + 短查询;busy/锁时经 Online Backup API 生成系统临时目录暂存副本,第 5 条注释,第 5 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:5
//! 带页/时间/空间上限并清理;仍无法一致读取时把 busy 上抛,由框架保留旧结果;第 6 条注释,第 6 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:6
//! 绝不写源库(不 checkpoint、不改 journal/schema、不新建源端 sidecar)。第 7 条注释,第 7 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:7
//!(空行)第 8 条注释,第 8 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:8
//! 共享的 MappedUsage/finish/sub_checked/矛盾检测仍留在跨 Agent 的 usage_map.rs。第 9 条注释,第 19 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:19
/// kilo(opencode 派生)message.data.tokens:第 10 条注释,第 20 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:20
/// total = input+output+reasoning+cache.read+cache.write 全互斥(与其他源相反,第 11 条注释,第 21 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:21
/// m0-agent-fixtures.md 实读结论)。因此 canonical output_total 须把 reasoning第 12 条注释,第 22 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:22
/// 并入(derived),才能满足统一约定 total_tokens = input_total + output_total。第 13 条注释,第 23 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:23
///(空行)第 14 条注释,第 24 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:24
/// total 为可选值:未完成或失败消息可缺失;真实 7.4.8/7.4.9 测试文件第 15 条注释,第 25 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:25
/// 各有 2/1 条;本机实读库 13,342 条 assistant 中 42 条缺失)——缺失时 source_total第 16 条注释,第 26 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:26
/// source_total 为 None,不补零;所需五桶已知时仍可派生总量。第 17 条注释,第 99 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:99
/// 只读访问来源;探测出现 busy、locked 或 CANTOPEN 时切换到暂存副本。第 18 条注释,第 100 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:100
/// _staging 持有暂存副本清理对象,查询失败后的 drop 也会清理。第 19 条注释,第 124 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:124
/// busy/锁/CANTOPEN 判定(这些错误表示无法一致读取)。第 20 条注释,第 134 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:134
/// 暂存副本参数(architecture.md:设置页/时间/空间上限并清理)。第 21 条注释,第 137 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:137
/// 每步备份页数(限制单步持锁时长)。第 22 条注释,第 139 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:139
/// 暂存副本字节上限;超过上限中止备份,避免占满磁盘。第 23 条注释,第 141 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:141
/// 备份总时限。第 24 条注释,第 149 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:149
// 空间上限 2 GiB:更大的活库不强行暂存(busy/unsupported 保留旧结果)。第 25 条注释,第 151 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:151
// 默认暂存时限 30 秒;超过时限返回 busy,不能视为副本已完成。第 26 条注释,第 157 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:157
/// 打开源库只读连接。busy_timeout 设短:快速失败转暂存副本路径,第 27 条注释,第 158 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:158
/// 不长时间阻塞采集线程。第 28 条注释,第 171 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:171
/// Online Backup 到系统临时目录的一致暂存副本(从只读连接发起,不写源库)。第 29 条注释,第 172 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:172
/// 逐步备份并在页/时间/空间任一超限时中止;中止/失败时先关闭目标连接再删文件第 30 条注释,第 173 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:173
/// (Windows 下打开句柄中的 remove_file 会因共享冲突静默失败留下残留)。第 31 条注释,第 190 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:190
// 闭包内 `?` 只退出闭包:任何失败路径都统一落入下方清理(先关句柄再删文件)。第 32 条注释,第 205 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:205
// StepResult 允许新增结果类型;可重试结果仍受配置限制。第 33 条注释,第 206 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:206
// More:实际拷贝了页,计入空间限制。第 34 条注释,第 217 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:217
// Busy/Locked(#[non_exhaustive] 其余):无进展重试,仍计入超时时间。第 35 条注释,第 218 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:218
// 2026-09-30 修复:此前重试也计入页数,与超时出口竞速产生第 36 条注释,第 219 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:219
// 平台相关的 space cap 误报(CI Linux 页上限先于超时触发)。第 37 条注释,第 227 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:227
// 此处 dest/backup 均已随闭包结束关闭,删除不再受句柄阻塞。第 38 条注释,第 239 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:239
/// 打开 kilo.db 的只读访问:第 39 条注释,第 240 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:240
///(空行)第 40 条注释,第 241 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:241
/// 1. 直接打开只读连接并运行短探测;此函数不显式建立读事务。第 41 条注释,第 242 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:242
/// 2. busy/锁时经 Online Backup 生成暂存副本再读;第 42 条注释,第 243 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:243
/// 3. 仍失败 → CoreError(调用方记 busy/unsupported,保留旧结果)。第 43 条注释,第 244 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:244
///(空行)第 44 条注释,第 245 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:245
/// 绝不写源库。第 45 条注释,第 261 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:261
// 短读失败:用同一只读连接发起到暂存副本的一致备份。第 46 条注释,第 273 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:273
/// kilo.db schema 指纹:表与关键列的存在情况(不含数据、不含正文)。第 47 条注释,第 274 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:274
/// message 必需五列,session 必需八列,其中五列用于用量对账。第 48 条注释,第 288 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:288
/// 缺表或必需列返回 None;持久化指纹只包含表名与列名。第 49 条注释,第 356 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:356
// 缺 total:source_total None,派生总量仍在。第 50 条注释,第 369 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:369
// 直报 total 与派生值不一致时记诊断(包含关系成立才有可比性)。第 51 条注释,第 396 行
desktop/src-tauri/crates/core/src/adapters/kilo/common.rs:396
// 溢出的派生字段保持 None(未知),不 panic、不截断数值。