跳转到内容

desktop/src-tauri/crates/core/src/adapters/framework.rs

第 1 条注释,第 1 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1

//! 适配器框架:discover → detect → scan → map → capability 统一接口,

第 2 条注释,第 2 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:2

//! 以及把扫描结果接入 M1 `commit_batch` 管线的运行器(V12:重复扫描不增量)。

第 3 条注释,第 3 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:3

//!(空行)

第 4 条注释,第 4 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:4

//! 规则要点:

第 5 条注释,第 5 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:5

//! - discover:候选路径 + 环境覆盖 + 手工根,有界枚举,不全盘扫描;

第 6 条注释,第 6 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:6

//! - detect:文件 magic/记录类型/schema 指纹 + Agent 目录版本注册表分派;

第 7 条注释,第 7 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:7

//! 未知/缺失版本默认尝试该 Agent 最新内置解析器并带兼容标记(V17/V30),

第 8 条注释,第 8 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:8

//! 已确认不兼容的版本与未知格式 fail closed 返回受限;

第 9 条注释,第 9 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:9

//! - scan:增量游标读取(JSONL 游标 = 文件身份 + generation + 完整行字节偏移 + 解析上下文);

第 10 条注释,第 10 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:10

//! - capability:每源字段能力声明,供未来数据源页使用;

第 11 条注释,第 11 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:11

//! - 诊断只存字段名/错误码/位置,不复制原始内容。

第 12 条注释,第 25 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:25

/// 单源每轮墙钟超时初值(architecture.md:30 秒)。

第 13 条注释,第 27 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:27

/// 发现阶段的文件/目录上界(有界探测)。

第 14 条注释,第 31 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:31

/// detect 入口的瞬态 IO 错误判定:杀软/产品进程短暂持锁

第 15 条注释,第 32 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:32

/// (Windows 共享违例 → PermissionDenied)、超时、枚举后文件被清理。

第 16 条注释,第 33 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:33

/// 瞬态错误必须 Pending 下轮重探,不能固化为扫描失败或 UnknownFormat。

第 17 条注释,第 45 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:45

/// detect 文件头读取助手:`Ok(None)` = 瞬态不可读(调用方返回 Pending);

第 18 条注释,第 46 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:46

/// 硬错误上抛 CoreError。

第 19 条注释,第 63 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:63

/// 发现上下文。环境变量以显式 map 传入,便于测试且不依赖真实进程环境。

第 20 条注释,第 71 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:71

/// 候选根的来源依据。

第 21 条注释,第 75 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:75

/// 环境变量覆盖(值是变量名,不是内容)。

第 22 条注释,第 77 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:77

/// 平台默认用户目录。

第 23 条注释,第 79 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:79

/// 用户手工添加的根。

第 24 条注释,第 83 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:83

/// 一个有界枚举后的候选根。

第 25 条注释,第 91 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:91

/// 格式探测结果(architecture.md 未知版本兼容约定):

第 26 条注释,第 92 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:92

/// - Supported:Agent 身份与输入类型已确认。已知版本按注册表映射分派(KnownVersion);

第 27 条注释,第 93 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:93

/// 未知/缺失版本默认选择该 Agent 最新内置解析器(LatestFallback),结果须带兼容标记。

第 28 条注释,第 94 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:94

/// UnsupportedVersion:已确认版本不兼容,例如固定源码中的格式不同;不尝试回退。

第 29 条注释,第 95 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:95

/// - UnknownFormat:Agent 身份或格式无法确认,fail closed;不得返回“成功 0 条”(V17)。

第 30 条注释,第 100 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:100

/// 来源原始版本;版本字段缺失时为 None(仍可 LatestFallback)。

第 31 条注释,第 112 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:112

/// 文件尚无可判定内容(如新建空文件):下轮重探。

第 32 条注释,第 116 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:116

/// 单项能力可用性。

第 33 条注释,第 125 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:125

/// 结构化能力声明(发现/探测/映射/增量/去重/完整性/维护/定时/限制)。

第 34 条注释,第 134 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:134

/// 字段能力:token/缓存读/缓存写/逐次请求/模型/时间/费用/延迟。

第 35 条注释,第 145 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:145

/// 逐文件扫描目标。

第 36 条注释,第 149 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:149

/// 规范化后的文件路径(只进本地库,不进对外输出)。

第 37 条注释,第 151 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:151

/// source_files.file_id(规范化路径字符串)。

第 38 条注释,第 153 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:153

/// source_files.file_identity / checkpoint scope_key(跨改名稳定)。

第 39 条注释,第 155 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:155

/// 探测到的当前文件状态。

第 40 条注释,第 157 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:157

/// 按文件续读规则确定的 generation;重扫时已使用新值。

第 41 条注释,第 159 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:159

/// 本次是否从头重扫(替换/截断/重建)。

第 42 条注释,第 163 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:163

/// 已存储的扫描状态(游标 + 解析上下文)。

第 43 条注释,第 170 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:170

/// 扫描限制。

第 44 条注释,第 176 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:176

/// 逐文件扫描状态。

第 45 条注释,第 179 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:179

/// 读到当前文件尾。

第 46 条注释,第 181 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:181

/// 达到读取上限或超时,游标停在完整行边界,下轮继续。

第 47 条注释,第 183 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:183

/// 某行超过单行上限:受限,游标停在该行起点,允许受控重试。

第 48 条注释,第 185 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:185

/// 空文件等待内容。

第 49 条注释,第 200 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:200

/// 快照比较结果,仅含选定的数值字段,不含消息正文。

第 50 条注释,第 203 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:203

/// 系列标签(如 "session_cumulative_snapshot"),不含 ID/路径。

第 51 条注释,第 205 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:205

/// 逐次明细的 total_tokens 合计。

第 52 条注释,第 207 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:207

/// 最终累计快照值。

第 53 条注释,第 209 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:209

/// 按已核验规则排除的边界记录合计(如 compaction 携带记录)。

第 54 条注释,第 211 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:211

/// 差值为 detail_sum - (snapshot_final + carried_sum)。

第 55 条注释,第 213 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:213

/// 比较结果为 matched、mismatch 或 no_snapshot。

第 56 条注释,第 217 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:217

/// 一次扫描的产出。

第 57 条注释,第 229 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:229

/// 源文件健康(active / degraded)。

第 58 条注释,第 233 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:233

/// 适配器统一接口。

第 59 条注释,第 236 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:236

/// 统计归属的 Agent 名(事件 agent 字段)。

第 60 条注释,第 238 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:238

/// 有界发现:候选路径 + 环境覆盖 + 手工根;不全盘扫描。

第 61 条注释,第 240 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:240

/// 仅文件访问不依赖发现顺序时,才启用轮换读取。

第 62 条注释,第 244 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:244

/// 由候选根得到稳定的本机实例 ID。

第 63 条注释,第 246 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:246

/// 探测文件标记、记录类型和 schema;按各 Agent 注册表选择版本读取器。

第 64 条注释,第 248 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:248

/// 增量扫描一个已支持的文件。

第 65 条注释,第 256 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:256

/// 重新检查已消费且字节未变化的文件,同时保留游标上下文中的单调修订。

第 66 条注释,第 257 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:257

/// 默认继续跳过;快照适配器可用于一次性的统计/健康规则修正。

第 67 条注释,第 261 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:261

/// 按逐记录检查更新文件级兼容状态,与事件和游标一起提交。

第 68 条注释,第 265 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:265

/// 结构化能力声明。

第 69 条注释,第 268 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:268

/// 仅明确核对过的解析修正可使用完整旧摘要的哈希。

第 70 条注释,第 269 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:269

/// 来源修订必须相同;其他字段变化仍按冲突处理。

第 71 条注释,第 277 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:277

/// 已核对的归档可替代本根目录的文件扫描。

第 72 条注释,第 278 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:278

/// 保留可见错误,不悄然叠加第二种数据格式的用量。

第 73 条注释,第 289 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:289

/// 规范化路径字符串(统一分隔符并去除 Windows verbatim 前缀;仅用于本地身份)。

第 74 条注释,第 296 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:296

/// 有界目录枚举:深度受限、不跟随符号链接、文件数/目录数有上限。

第 75 条注释,第 343 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:343

/// 按已保存的访问记录轮换有限文件集,优先读取尚未访问的文件。

第 76 条注释,第 344 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:344

/// 访问时间相同则保留适配器的发现顺序,仅已提交的文件行

第 77 条注释,第 345 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:345

/// 计为已访问,因此事务回滚后的读取仍保留下一轮的位置。

第 78 条注释,第 373 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:373

/// source_instances 注册输入。enabled 等用户设置在冲突更新时保留。

第 79 条注释,第 374 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:374

/// origin_host_id:本机核验采集传入本地主机 ID;None 表示未区分(legacy_unknown)。

第 80 条注释,第 375 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:375

/// 已属于其他主机的来源不被覆盖;legacy_unknown 来源可被本机核验采集认领

第 81 条注释,第 376 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:376

/// (文件就在本机且 locality 已核验 = 可证明映射,data-contract.md#provenance)。

第 82 条注释,第 390 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:390

/// 来源归属主机(M1a);None → legacy_unknown 命名空间。

第 83 条注释,第 394 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:394

/// 迁移前的历史来源命名空间(v4 前未记录主机身份)。

第 84 条注释,第 473 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:473

/// source_files 行(注册与改名/替换探测用)。

第 85 条注释,第 486 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:486

/// 探测结论(JSON):原始版本、所选格式/parser、选择依据、兼容状态(v3 列)。

第 86 条注释,第 553 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:553

/// 按文件身份查找(改名探测:内容流身份稳定,路径可变)。

第 87 条注释,第 616 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:616

/// 读取检查点(游标 + 解析上下文)。

第 88 条注释,第 640 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:640

/// 由 source_files 行构造 StoredFileState,供文件续读检查使用。

第 89 条注释,第 653 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:653

/// 一次源采集运行的配置。

第 90 条注释,第 660 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:660

/// 运行/批次 ID 前缀;实际 ID 追加实例序号。

第 91 条注释,第 662 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:662

/// 采集归属的本机来源主机 ID(M1a);None 表示未区分(legacy_unknown)。

第 92 条注释,第 663 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:663

/// 由应用层经 `Storage::ensure_local_host` 取得后传入。

第 93 条注释,第 667 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:667

/// 逐文件运行报告。

第 94 条注释,第 679 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:679

/// 逐实例运行报告。

第 95 条注释,第 692 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:692

/// 运行一个适配器:发现 → 逐文件探测/扫描 → 单事务提交(V12 语义)。

第 96 条注释,第 693 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:693

/// 返回逐实例报告;单文件失败不中断其他文件,实例提交失败标 failed。

第 97 条注释,第 703 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:703

/// 实例过滤(逐源定时:自定义计划的来源只按自身节奏触发,

第 98 条注释,第 704 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:704

/// 全局刷新排除它们;到期刷新只包含到期实例)。

第 99 条注释,第 707 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:707

/// 仅这些实例参与(None = 不限)。

第 100 条注释,第 709 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:709

/// 这些实例跳过(None = 不排除)。

第 101 条注释,第 729 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:729

/// 带实例过滤的运行(run_adapter_scan 的过滤版;逐源定时接线用)。

第 102 条注释,第 730 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:730

/// 读取前检查 source_instances.enabled,所有触发方式均遵循该设置:

第 103 条注释,第 731 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:731

/// Interval、Startup、Manual 和 FixedTime 仅读取已启用的本地来源。

第 104 条注释,第 732 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:732

/// 保持 set_source_enabled 的行为,实例停用后不再读取。

第 105 条注释,第 733 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:733

/// 停用集加载失败时本适配器 fail-closed(宁可不扫,不越权读取)。

第 106 条注释,第 787 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:787

/// 解析来源文件时不持有写入锁;元数据处理和提交使用该锁。

第 107 条注释,第 859 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:859

/// 两个来源实例可并行解析,共用现有写入器;结果保留请求和根目录顺序。

第 108 条注释,第 954 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:954

// 工作线程 panic 可能留下运行中的任务;由 Storage 的常规恢复处理。

第 109 条注释,第 1007 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1007

/// 元数据处理和提交共用现有写入器;来源解析不持有写入锁。

第 110 条注释,第 1029 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1029

// 根去重(环境覆盖/默认/手工可能指向同一目录;Windows 大小写别名先归一)。

第 111 条注释,第 1058 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1058

// 归档适配器使用空文件列表,自行完成格式探测。

第 112 条注释,第 1137 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1137

// 本次未执行扫描;不能把合并请求报告为已成功完成。

第 113 条注释,第 1187 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1187

// 准备失败和取消均应结束本次运行,

第 114 条注释,第 1188 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1188

// 与归档失败一致,避免留下运行中的任务。

第 115 条注释,第 1372 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1372

// 无任何文件变化时跳过提交(无变化扫描不推进修订号)。

第 116 条注释,第 1390 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1390

// 原生汇总与事件、游标一起提交;任一失败均可完整重放。

第 117 条注释,第 1467 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1467

/// 注册单个文件、检查续读状态,按需探测后增量读取并收集批次结果。

第 118 条注释,第 1468 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1468

/// 返回(文件报告, 是否发生了实际读取)。

第 119 条注释,第 1509 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1509

// 注册/改名探测:路径未命中时按身份命中(同一内容流改名不算新文件)。

第 120 条注释,第 1544 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1544

// 文件字节已全部读取且续读状态连续时,跳过未变化文件。

第 121 条注释,第 1566 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1566

// 首次或重扫时重新探测格式;已确认不兼容的版本与未知格式 fail closed(V17),

第 122 条注释,第 1567 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1567

// 未知/缺失版本按该 Agent 注册表选择最新内置解析器并带兼容标记。

第 123 条注释,第 1705 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1705

// 文件错误隔离不能把取消或其他控制性停止判为数据错误。

第 124 条注释,第 1733 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1733

// 未知版本兼容尝试(V30):无事件或独立有效累计行且带结构诊断 ⇒ 不兼容。

第 125 条注释,第 1734 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1734

// Duplicate/OverlapUnknown 对账快照不能替代有效的用量记录,如缺少逐次记录的旧 Codex。

第 126 条注释,第 1735 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1735

// 保留旧结果、不提交事件/游标/聚合;下轮解析器更新或显式重扫可重新尝试。

第 127 条注释,第 1832 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1832

/// source_files.format_status(v3)的探测 JSON,仅含选定元数据,不含正文。

第 128 条注释,第 1859 行

desktop/src-tauri/crates/core/src/adapters/framework.rs:1859

/// 文件内容流身份:创建时间 + 首采样指纹(追加稳定,不依赖路径)。