[add] Remove unused protected_ids; cap delete_target by actual deletable count.

This commit is contained in:
lanceyq
2026-03-10 19:06:50 +08:00
parent 8b0f806079
commit 86c51559bb

View File

@@ -409,14 +409,13 @@ class SemanticPruner:
) )
msgs = dialog.context.msgs msgs = dialog.context.msgs
# 分类:LLM保护 / 填充 / 其他可删 # 分类:填充 / 其他可删LLM保护消息通过不加入任何桶来隐式保护
protected_ids: set = set()
filler_ids: set = set() filler_ids: set = set()
deletable: List[ConversationMessage] = [] deletable: List[ConversationMessage] = []
for m in msgs: for m in msgs:
if self._msg_matches_tokens(m, preserve_tokens): if self._msg_matches_tokens(m, preserve_tokens):
protected_ids.add(id(m)) pass # 保护消息:不加入任何桶,不会被删除
elif self._is_filler_message(m): elif self._is_filler_message(m):
filler_ids.add(id(m)) filler_ids.add(id(m))
else: else:
@@ -427,7 +426,7 @@ class SemanticPruner:
delete_target = int(total_unrel * proportion) delete_target = int(total_unrel * proportion)
if proportion > 0 and total_unrel > 0 and delete_target == 0: if proportion > 0 and total_unrel > 0 and delete_target == 0:
delete_target = 1 delete_target = 1
max_deletable = max(0, total_unrel - 1) max_deletable = min(len(filler_ids) + len(deletable), max(0, total_unrel - 1))
delete_target = min(delete_target, max_deletable) delete_target = min(delete_target, max_deletable)
# 优先删填充,再删其他可删消息(按出现顺序) # 优先删填充,再删其他可删消息(按出现顺序)
@@ -447,8 +446,11 @@ class SemanticPruner:
kept_msgs = [msgs[0]] kept_msgs = [msgs[0]]
deleted_total = len(msgs) - len(kept_msgs) deleted_total = len(msgs) - len(kept_msgs)
protected_count = len(msgs) - len(filler_ids) - len(deletable)
self._log( self._log(
f"[剪枝-对话] 对话ID={dialog.id} 总消息={len(msgs)} 删除目标={delete_target} 实删={deleted_total} 保留={len(kept_msgs)}" f"[剪枝-对话] 对话ID={dialog.id} 总消息={len(msgs)} "
f"(保护={protected_count} 填充={len(filler_ids)} 可删={len(deletable)}) "
f"删除目标={delete_target} 实删={deleted_total} 保留={len(kept_msgs)}"
) )
dialog.context = ConversationContext(msgs=kept_msgs) dialog.context = ConversationContext(msgs=kept_msgs)