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
@@ -14,6 +14,7 @@ import (
|
||||
"git.yeij.top/AskaEth/Cyrene_v2/internal/persona/loader"
|
||||
personareg "git.yeij.top/AskaEth/Cyrene_v2/internal/persona/registry"
|
||||
"git.yeij.top/AskaEth/Cyrene_v2/internal/runtime/agent"
|
||||
"git.yeij.top/AskaEth/Cyrene_v2/internal/runtime/documents"
|
||||
"git.yeij.top/AskaEth/Cyrene_v2/internal/runtime/embedding"
|
||||
"git.yeij.top/AskaEth/Cyrene_v2/internal/runtime/history"
|
||||
"git.yeij.top/AskaEth/Cyrene_v2/internal/runtime/loop"
|
||||
@@ -222,6 +223,18 @@ func (a *app) wireRuntime() error {
|
||||
a.dispatcher.Invoke,
|
||||
)
|
||||
|
||||
// 文档摄取(design/24 §2.3-①、§4):装配期把文档部件确定性替换为抽取所得
|
||||
// 的正文或「仅清单」条目,文档部件因此永不抵达编码器。路径口径与 S1 的
|
||||
// `POST /api/v1/documents` 同源 —— 原文在 `<DataDir>/uploads/documents`
|
||||
// (gateway 的 documentSubDir),抽取结果缓存到 `<DataDir>/extracted`。
|
||||
// 这里复用同一个 resolveDataDir 结果,两处指向同一棵目录树。
|
||||
docDataDir := resolveDataDir(a.cfg)
|
||||
docResolver := documents.NewResolver(documents.Config{
|
||||
DataDir: docDataDir,
|
||||
UploadsDir: filepath.Join(docDataDir, "uploads", "documents"),
|
||||
Log: a.log,
|
||||
})
|
||||
|
||||
capDecider := a.buildCapacity()
|
||||
// 人格情绪观测器(design/01 §2)在此构建,因为它是 loop 的 turn 边界依赖:
|
||||
// 每个 turn 落定后,该 turn 绑定人格的情绪机与好感度都会推进,返回的心情标签
|
||||
@@ -271,6 +284,7 @@ func (a *app) wireRuntime() error {
|
||||
WorkingMemory: memory.NewWorkingMemory(0),
|
||||
OnStream: a.streamChunk,
|
||||
Vision: visionResolver,
|
||||
DocumentResolver: docResolver,
|
||||
Thinking: thinking,
|
||||
ReasoningEffort: reasoningEffort,
|
||||
ThinkingShowToUser: thinkingShow,
|
||||
|
||||
Reference in new issue
Block a user