feat(runtime): 文档摄取①(抽取器 + sidecar + 装配期 resolveDocuments)(design/24 S3-A)
- 抽取器零新依赖纯函数:UTF-8 清洗、CSV/TSV 行数列名摘要、64K rune 安全截断;PDF/Office/二进制走哨兵错误诚实拒绝(不引解析库)。 - sidecar:<DataDir>/extracted/<存储名>.txt,首行紧凑 JSON 元数据 + 正文;临时文件 + rename 原子落定;只抽一次(删原文件仍出正文);版本不匹配/坏缓存重抽。 - 装配期 resolveDocuments(resolveImages 同位,每步对模型可见视图注入):清单恒在(解析器缺席/报错也在)、截断带续读游标、失败诚实标记 + status=unreadable、回合继续;文档部件永不抵达编码器(负例钉住)。 - 修 S2 移交的两处静默吞掉:checkpoint 比较键纳入文档引用、compactor token 估算计入文档部件(不是免费的)。 - 主会话独立验收:隔离 worktree(HEAD + 本切片)build/vet 绿、全树 59 包 0 FAIL、linux/amd64 + darwin/arm64 交叉编译绿、documents+loop 两包 167 条 PASS;变异独立复现(resolveDocuments 短路 ⇒ 3 条红,含「文档部件仍抵达下游」)。
This commit is contained in:
1 parent
834ef3683e
commit
a8851dc0a2
12 files changed
+2008
-7
No files matched your search
@@ -190,6 +190,15 @@ type Options struct {
|
||||
// vision/OCR 工具产出的文字描述("先看图再对话")。为 nil 时
|
||||
// 图像内容原样保留,直接透传给支持视觉的主模型。
|
||||
Vision ImageResolver
|
||||
// DocumentResolver 非 nil 时,在**每步装配模型可见上下文**时把文档部件
|
||||
// 确定性替换为抽取所得的正文或「仅清单」条目(design/24 §2.3-①、§4)。
|
||||
// 文档部件因此永不抵达编码器(编码器那侧对文档 fail-loud);解析失败只
|
||||
// 降级为诚实标记 + status=unreadable,绝不让回合失败(§4.4)。
|
||||
//
|
||||
// 为 nil 时循环仍会把文档部件替换为「仅清单」块(清单恒在,§4.2-3),
|
||||
// 只是没有任何正文被注入 —— 因此即使忘了接线,也不会出现「文档部件抵达
|
||||
// 编码器」这种 400,更不会出现空上下文。
|
||||
DocumentResolver DocumentResolver
|
||||
// TransformContext 非 nil 时,在每个模型步之前立即被调用,
|
||||
// 传入组装好的消息列表(记忆注入与任何压缩
|
||||
// 之后)以及当前轮次号(从 1 开始)。它可以投影、过滤
|
||||
|
||||
Reference in new issue
Block a user