diff --git a/zhuyuan-agent/core/hldp_memory.py b/zhuyuan-agent/core/hldp_memory.py index 54e3c36..549f300 100644 --- a/zhuyuan-agent/core/hldp_memory.py +++ b/zhuyuan-agent/core/hldp_memory.py @@ -114,10 +114,23 @@ class HLDPTreeStore: def ensure_path(self, path: str, node_type: str, persona_id: str = None, epoch_id: str = None, title: str = "", summary: str = "", parent_path: str = None) -> str: - """确保树路径存在,不存在则创建。返回 path。""" + """确保树路径存在,不存在则创建(含递归父节点)。返回 path。""" + # 先确保父路径存在 + if parent_path: + parent_exists = self.conn.execute( + "SELECT 1 FROM hldp_nodes WHERE path=?", (parent_path,)).fetchone() + if not parent_exists: + # 递归创建父节点 + grandparent = "/".join(parent_path.split("/")[:-1]) if "/" in parent_path else None + pp_type = "epoch" if parent_path.count("/") == 2 else \ + "index" if parent_path.count("/") == 3 else "branch" + self.ensure_path( + path=parent_path, node_type=pp_type, + persona_id=persona_id, epoch_id=epoch_id, + parent_path=grandparent) + cur = self.conn.execute("SELECT path FROM hldp_nodes WHERE path=?", (path,)) if cur.fetchone(): - # 更新 self.conn.execute( "UPDATE hldp_nodes SET title=?, summary=?, updated_at=datetime('now') WHERE path=?", (title, summary, path))