跳转到内容

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、不截断数值。