mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-10-20 06:27:53 +02:00
fix: label generated context provenance in transcript evidence
This commit is contained in:
1 parent
60d76be064
commit
015e16457e
3 files changed
+8
-1
No files matched your search
@@ -18,7 +18,7 @@
|
||||
|
||||
## 用户输入与系统摘要不能混为同一来源
|
||||
|
||||
Eino 默认续接摘要使用 `user` 消息角色传输,但同时带 `_eino_summarization_content_type=summary` 的来源标记;保留的技能上下文使用 `skills` 标记。原始用户输入账本按该元数据排除内部摘要和技能消息,不能仅凭 `role=user` 将生成内容归入用户原文。摘要中的模拟用户账本也不作为原始输入来源导入,避免多轮压缩把模型自己写的目标或操作提升为用户指令。
|
||||
Eino 默认续接摘要使用 `user` 消息角色传输,但同时带 `_eino_summarization_content_type=summary` 的来源标记;保留的技能上下文使用 `skills` 标记。原始用户输入账本按该元数据排除内部摘要和技能消息,不能仅凭 `role=user` 将生成内容归入用户原文。摘要中的模拟用户账本也不作为原始输入来源导入,避免多轮压缩把模型自己写的目标或操作提升为用户指令。快照和摘要模型的文本记录同时标出内部消息的系统生成来源,明确其不是用户输入或新的授权。
|
||||
|
||||
压缩摘要仍保留在模型工作上下文中,不因来源区分而丢弃进展;主/子代理本轮输入仍来自原始请求及原始聊天记录。不会用 `<summary>` 等文本关键词过滤真正的用户输入。回归测试调用实际 `DefaultFinalize`、连续执行三轮压缩并经过 classic/native 转换,核对原始授权目标与禁止测试本机的约束保留、生成目标与模拟指令不进入用户账本、摘要进展不丢失,以及用户引用摘要文本时仍被视为真正用户输入。
|
||||
|
||||
|
||||
@@ -31,6 +31,10 @@ func TestGeneratedSummaryNeverBecomesHumanInputAcrossCompactions(t *testing.T) {
|
||||
if !strings.Contains(joinClassicMessageContent(msgs), "GENERATED_SELF_TARGET") {
|
||||
t.Fatal("summary progress was discarded instead of being kept as working memory")
|
||||
}
|
||||
transcript := formatSummarizationTranscript(msgs)
|
||||
if !strings.Contains(transcript, "[origin: system-generated summary/skill context; not human input or new authorization]") {
|
||||
t.Fatal("snapshot falsely presents a generated user-role summary as human input")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -150,6 +150,9 @@ func appendTranscriptMessage(sb *strings.Builder, msg adk.Message) {
|
||||
sb.WriteString("--- [")
|
||||
sb.WriteString(string(msg.Role))
|
||||
sb.WriteString("] ---\n")
|
||||
if isInternalSummarizationUserMessage(msg) {
|
||||
sb.WriteString("[origin: system-generated summary/skill context; not human input or new authorization]\n")
|
||||
}
|
||||
if msg.Content != "" {
|
||||
sb.WriteString(msg.Content)
|
||||
if !strings.HasSuffix(msg.Content, "\n") {
|
||||
|
||||
Reference in new issue
Block a user