4.4 认知代理与自动化


4.4 认知代理与自动化

让代理自己决定"该查哪段记忆"

前面都是人问机答。这一节往前一步:把 Cognee 的图谱塞进一个能自己决策的 Agent,让它根据任务主动调记忆、做多步推理。这是"记忆层"真正活起来的样子。

这是第四章第四站,对应全册闭环的"自动化"延伸。

代理如何调用图谱

思路是把 cognee.search 包成一个工具(tool),交给 Agent 在需要时调用。Agent 自己决定"现在该查记忆了",而不是你硬编码每一步。

import asyncio, cognee # 把图谱检索包装成 Agent 可调用的工具 async def memory_tool(query: str): results = await cognee.search(query) # 把结果压成文本供 Agent 阅读 return "\n".join( f"{r['entity']} --{r['relation']}--> {r['value']}" for r in results ) async def agent_step(question: str): # 代理自行判断是否需要查记忆 ctx = await memory_tool(question) # 这里用 LLM 结合 ctx 生成最终回答(示意) answer = f"基于记忆:\n{ctx}" return answer async def main(): await cognee.add("./运维手册.pdf") await cognee.cognify() print(await agent_step("磁盘满了先查哪个日志")) asyncio.run(main()) # 系统日志 --路径-->> /var/log/syslog

代理的价值不在"会问答",而在"会按需取记忆"。你不用预先写死"先查日志再查指标",代理看问题自己决定调 memory_tool

自动化流水线的形态

除了单轮代理,Cognee 还支持把建图和查询编进自动化流水线,定时跑。下面示意一个定时增量建图的调度(思想代码)。

自动化流水线的形态

import schedule, time, asyncio, cognee def job(): asyncio.run(cognee.add("./incoming")) # 新文档 asyncio.run(cognee.cognify()) # 增量建图 schedule.every().hour.do(job) # 每小时增量建图 while True: schedule.run_pending() time.sleep(60)

工程上这就是"记忆会自己长大":你只管往 incoming 丢文件,图谱每小时更新一次,代理随时能查最新状态。

案例:运维事故的自动定位

背景:运维知识库里记着"磁盘满→查系统日志→定位 pid"的排障链,希望告警触发时自动给出排查步骤。

操作:告警来了,代理自行沿图谱走排障链。

import asyncio, cognee async def on_alert(alert: str): await cognee.add("./运维手册.pdf") await cognee.cognify() steps = await cognee.search(f"{alert} 该怎么排查") return steps asyncio.run(on_alert("磁盘使用率95%")) # '关注','OOM pid'], 'source':'运维手册.pdf#p3'}]

结果:告警一触发,代理沿图谱给出"查系统日志→看 OOM pid"的具体路径,不用人工翻手册。

解读:这是图谱增强自动化的典型收益——把"人脑里的排障经验"固化成图,让代理在压力下也能走对步骤。若用纯向量库,召回的是一堆相关段落,代理仍要自己拼路径。

变式:若排障手册更新(如日志路径变了),重 add 后图谱关系随之更新,代理下次自动走新路径,无需改代理代码。图变了,逻辑不变。

一个边界:代理该查记忆,但不该改记忆

把 Cognee 塞进 Agent,最容易越界的是让 Agent 拥有写图权限。Agent 自动 add + cognify 听起来智能,但一旦它基于错误中间结论写入,噪声就永久进图。实务纪律:Agent 默认只读(search),写图保留给人工或受控流水线。类比到金融——交易员能查账但不能单方面改总账,改账要独立复核。

# 给 Agent 的图谱工具只暴露读,不暴露写 async def read_only_memory(q): return await cognee.search(q) # 只查 # 不提供 add / cognify,避免 Agent 自写噪声 # Agent 工具集只挂 read_only_memory

这样 Agent 借助记忆做多步推理,却不污染记忆本身,系统长期可控。

权限 风险 建议
只读 search Agent 默认
自动 add 需校验来源
自动 cognify 禁止自动

⚠️ 别让自主 Agent 在无人确认下 cognify——它可能因幻觉把错误关系写死,且难追溯是谁写的。

💡 若确需 Agent 写记忆,加一道"人类确认"或"写入队列+抽样审核",把自动化和安全性隔开。

一个可观测:代理查了什么要留痕

Agent 自动调记忆,出了问题要能复盘"它查了啥、拿到啥、据此做了啥"。建议每次 memory_tool 调用记日志。类比到金融交易——每笔自动下单留流水,出事能回溯,也满足合规。

留痕项 用途
查询内容 查代理意图
返回实体 查记忆质量
后续动作 查决策链

⚠️ 别让自主代理静默运行无日志——一旦它基于错误记忆做了操作,你连"它当时看到啥"都还原不出。

💡 日志接可视化,代理的"思考轨迹"可回放,调试从猜变成看。

本节要点回顾

  • cognee.search 包成工具,代理按需调记忆而非硬编码步骤。
  • 建图可定时自动化,查询按需化,构成持续记忆系统。
  • 图谱让代理在压力下也走对排障路径,经验被固化。

⚠️ 别让代理无限制反复调 search。没结果时设最大重试,否则可能陷入空转烧 token。

💡 代理的"何时查记忆"比"怎么查"更难调,先用规则触发(如检测到关系型问题)再逐步放权给模型。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U