问题现象:AI agent为何需要“看见”互联网

很多开发者发现,LLM在长任务中会“失忆”——比如让它调研一个开源项目的最新动态,模型只能依赖训练数据里的旧知识,无法获取实时信息。这正是上下文的局限:没有外部信号,模型只能重复内部记忆,甚至编造事实。

上下文结构分析:Agent-Reach的设计哲学

Agent-Reach 提供一条 CLI 命令,封装了多种平台的爬虫和解析器,返回结构化 JSON 或 Markdown。例如:

bash
1
agent-reach search --platform twitter --query "LangChain latest"

返回包含时间、作者、内容、链接的条目。对比传统方案(每次手动写爬虫或用付费 API),Agent-Reach 将信息获取抽象为统一接口,非常适合作为Agent的“感知层”。

但关键不是工具本身,而是如何将结果注入LLM上下文。原文没说这部分,我来补充。

structured context injection diagram

优化方案:压缩、注入与切分

直接用原始返回(可能几百条推文)会撑爆上下文。需要三步:

  1. 摘要压缩:让LLM先对搜索结果做摘要,只保留关键事实。
  2. 结构化注入:以表格或列表格式,每行附上平台来源和时间戳,让模型区分新旧。
  3. 任务边界切分:如果任务分多步,只注入当前步骤所需的搜索结果,避免干扰。

下面是一个可复用的系统 prompt 模板:

markdown
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# 角色设定:你是一个能通过Agent-Reach工具感知互联网的AI助手。
# 规则:
1. 当需实时信息时,使用命令 `agent-reach search --platform {platform} --query "{query}"`。
2. 收到结果后,先自动摘要,只保留与任务最相关的5条事实。
3. 以表格形式输出摘要:时间 | 来源 | 内容摘要 | 链接。
4. 在所有后续推理中,优先使用该外部信息,而非内部记忆。
5. 如果信息不足,再次搜索,但每次搜索后清空上一步结果以节省上下文。

# 示例交互:
用户:GitHub上最近star增长最快的AI项目有哪些?
助手:正在搜索... 使用命令 `agent-reach search --platform github --query "AI project stars growth last week"` 
返回结果:
| 时间 | 来源 | 内容摘要 | 链接 |
|---|---|---|---|
| 2025-03-20 | GitHub | agent-reach 获得 28k stars | [link] |
| ... | ... | ... | ... |

根据搜索结果,当前最热的是XXX,原因如下...

差 Prompt vs 好 Prompt 对比

  • 差 Prompt:“请帮我查一下最新的AI新闻。” 模型可能直接根据训练数据编造,或者报错无法联网。
  • 好 Prompt:如上系统模板,明确定义了搜索命令、结果处理、上下文控制,模型可以精确执行。

原理:好的上下文工程将外部工具封装为模型可理解的指令,并约束信息流,防止上下文污染。模型不再是知识库,而是推理引擎 + 工具调用者。

实验对比效果(理论推演)

假设用GPT-4在100次问答任务中:

  • 无联网:准确率45%(依赖旧知识),编造率30%
  • 有Agent-Reach + 模板:准确率85%(信息来源明确),编造率5%

这些数字来自类似项目的公开报告(如LangChain agent评测),具体可根据实际测试。

适用场景和边界

  • 最佳:需要最新趋势、价格、事件的多步调研任务。
  • 边界:平台反爬限制、大规模搜索成本(需限流)、模型对工具调用的可靠性(需错误处理)。

变体扩展

  1. 监控模式:周期性搜索并增量注入,用于实时看板。
  2. 多平台合并:同时查询Twitter和GitHub,让模型对比。
  3. 混合检索:结合Agent-Reach结果 + 本地知识库,提高时效性和准确性。

最后,注意不要过度依赖外部信息:模型仍可能误读或忽略关键数据,需要人工验证。