mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-10-19 14:07:36 +02:00
fix: harden checkpoint provenance, scope and atomic binding
This commit is contained in:
1 parent
015e16457e
commit
2c311a6ab1
10 files changed
+256
-13
No files matched your search
@@ -20,6 +20,8 @@
|
||||
|
||||
Eino 默认续接摘要使用 `user` 消息角色传输,但同时带 `_eino_summarization_content_type=summary` 的来源标记;保留的技能上下文使用 `skills` 标记。原始用户输入账本按该元数据排除内部摘要和技能消息,不能仅凭 `role=user` 将生成内容归入用户原文。摘要中的模拟用户账本也不作为原始输入来源导入,避免多轮压缩把模型自己写的目标或操作提升为用户指令。快照和摘要模型的文本记录同时标出内部消息的系统生成来源,明确其不是用户输入或新的授权。
|
||||
|
||||
用户账本的延续优先读取系统消息内的结构化来源元数据,不再从普通助手或工具响应中提取同名文本标签。JSON 检查点恢复、classic/native 转换和系统消息合并均保留这份来源;兼容旧版本时,仅接受系统消息尾部完整的宿主账本区块,不导入嵌在黑板或响应中的片段。
|
||||
|
||||
压缩摘要仍保留在模型工作上下文中,不因来源区分而丢弃进展;主/子代理本轮输入仍来自原始请求及原始聊天记录。不会用 `<summary>` 等文本关键词过滤真正的用户输入。回归测试调用实际 `DefaultFinalize`、连续执行三轮压缩并经过 classic/native 转换,核对原始授权目标与禁止测试本机的约束保留、生成目标与模拟指令不进入用户账本、摘要进展不丢失,以及用户引用摘要文本时仍被视为真正用户输入。
|
||||
|
||||
## 会话工作记录与项目共享事实的读取边界
|
||||
@@ -59,6 +61,8 @@ data/conversation_artifacts/<conversationId>/summarization/
|
||||
|
||||
可按文件名中的时间排序判断快照先后。快照可能在生成摘要前保存,包括失败尝试;相同历史的重试复用文件,因此文件序号不严格等同于成功压缩次数。
|
||||
|
||||
数据库路径为空时,临时快照也使用 `<临时目录>/cyberstrike-summarization/<conversationId>/summarization/snapshots/`,不会退回多个会话共用一个目录。
|
||||
|
||||
子代理、规划器和执行器使用 `summarization/scopes/<scopeHash>/snapshots/`。摘要提供历史快照目录,Agent 可用 `glob` 查找 `transcript-*.txt`,按需回读更早证据。已有旧索引文件不参与新流程,也不会在升级时被自动删除。
|
||||
|
||||
系统复用本次已经生成的压缩摘要,不增加一次额外的模型提取调用。原始历史在生成摘要前就做快照,因此即使摘要遗漏某个精确细节,也还有来源可以追溯。黑板或快照保存失败时会记录告警,保留当前可用摘要继续运行,不提示保存成功。
|
||||
@@ -73,7 +77,7 @@ project:
|
||||
|
||||
`context_checkpoints` 省略时默认开启;设置为 false 可关闭自动黑板续接记录,不影响原始证据快照。没有绑定项目的会话仍保留本地快照,但不会把内容写进其他项目。
|
||||
|
||||
自动记录前会核对会话当前绑定的项目,避免会话在运行期间切换项目后写入旧项目。这里没有增加跨项目搜索。现有项目黑板权限与事实工具的当前会话范围继续适用。
|
||||
自动记录前会核对会话当前绑定的项目,并在实际 SQLite upsert 的同一条写入语句中再次核验绑定,避免检查与写入之间切换项目造成旧运行写入旧项目。绑定不匹配时不新增行,也不改写已有记录。这里没有增加跨项目搜索。现有项目黑板权限与事实工具的当前会话范围继续适用。
|
||||
|
||||
自动记录只在压缩触发时落库,不能代替每次新发现后的即时事实登记。摘要仍可能遗漏细节;具体原文以快照为准。快照累计占用本地存储,保留到对应会话产物被清理。
|
||||
|
||||
@@ -92,3 +96,7 @@ project:
|
||||
Eino 的压缩流程支持在 `Finalize` 中处理摘要并重写上下文,`Callback` 在后处理之后触发;本项目在既有自定义 Finalize 中落库、附上快照引用,然后更新索引。普通消息与原生 AgenticMessage 路径均使用同一留存函数。[Eino Summarization 文档](https://www.cloudwego.io/docs/eino/core_modules/eino_adk/eino_adk_chatmodelagentmiddleware/middleware_summarization/)
|
||||
|
||||
回归覆盖多次压缩保留早期证据、重复快照幂等、原子文件权限、主/子代理记录隔离、已确认事实保持不变、配置关闭、项目不匹配、保存失败不宣称成功、多段文本摘要、普通与原生中间件自动落库/刷新,以及索引硬预算和正文不注入。
|
||||
|
||||
## 追加代码审查验证
|
||||
|
||||
本轮进一步修复工具/助手文本伪装原始用户账本、无数据库路径时临时目录混用,以及项目绑定检查/写入竞态。回归覆盖工具与助手伪造标签、系统黑板嵌入片段、结构化来源 JSON 恢复及系统归一化、错误来源元数据拒绝、classic/native 无数据库路径的独立会话目录,以及切换/解绑项目时拒绝新增和更新且已有证据不变。该改动不迁移或改写历史快照,生产更新应与本轮代码验证结果对应。
|
||||
Reference in new issue
Block a user