T02 · Agent Memory Poisoning
- Location
radial_memory/context_manager.py:316- Finding
Persistent Untrusted Memory Can Poison Future Agent Context
- Content
View full analysis
str: """ 模拟「清空上下文窗口,仅注入原点」。 返回应注入 agent context window 的原点字符串。 token 消耗约 100~300,取决于任务线数量。 """ self.current_context_type = "origin" self.active_line_id = None self.active_node_position = None return self._build_reset_context() ``` `radial_memory/context_manager.py:316-326`: ```python def _build_reset_context(self) -> str: """清空后仅注入原点的上下文字符串。""" return ( "【上下文已重置:仅保留原点结构】\n" "当前上下文中没有任何任务节点的具体细节。\n" "调用 load(query) 按需载入目标任务状态。\n\n" + self.memory.get_origin_context() ) ``` `radial_memory/models.py:128-175`: ```python def get_origin_entry(self) -> str: """ 返回此线在原点上下文中的 L0 单行描述。 始终占用极少 token,确保原点紧凑。 """ if not self.nodes: return f"[{self.name}] {self.description} — 暂无任务" latest = self.nodes[0] l0 = latest.summaries.get(0, latest.task_label) return f"[{self.name}] {l0} (共{len(self.nodes)}个节点, 最新:{latest.created_at[:10]})" @dataclass class Origin: project_name: str created_at: str lines: Dict[str, Line] = field(default_factory=dict) def get_context(self) -> str: """ 生成始终注入上下文的原点概况字符串。 格式紧凑,agent 看到后能立刻感知全局结构。 """ if not self.lines: return ( f"【原点 ...[truncated 2888 chars]- Remediation
View remediation
