AI Agents 实战笔记:从 Prompt 到自主决策的进化

🤖 “AI 不会取代你,但会用 AI 的人会。”

🎯 为什么开始折腾 Agent

2026 年初,Claude Code 和各类 AI 编程工具已经很好用,但它们有个共同的局限——只能响应,不能行动

我想让 AI 能够:

  • 自动爬取数据、分析、产出日报
  • 监控服务器状态并自主决策是否重启
  • 在多个信息源之间协调,完成端到端的工作流

于是我花了三个月,从零搭了一套 Agent 系统。这篇文章记录过程中最值得分享的东西。

🧱 架构演进

Phase 1:Function Calling 链路

最初的想法很简单——让 LLM 调用工具:

1
用户意图 → LLM 理解 → 选择 Tool → 执行 → 结果回传 → LLM 总结

这个阶段用了两个星期就跑通了。核心组件:

  • Tool Registry:一个 Tool 定义,用 JSON Schema 描述参数
  • Executor:沙箱化的 Python/Shell 执行环境
  • Loop Controller:控制 LLM ↔ Tool 的往返次数上限

Phase 2:Memory & Context

第一个问题很快出现了:Agent 记不住上下文

单次对话的理想很丰满,现实是每次调用都要重新描述一遍环境和目标。解决方案借鉴了人脑的工作方式:

  1. Working Memory(工作记忆):当前会话的完整上下文,直接注入 prompt
  2. Short-term Memory(短期记忆):最近 N 轮对话的摘要,用 LLM 自动压缩
  3. Long-term Memory(长期记忆):向量数据库存储的历史经验,按需检索
1
2
3
4
5
6
# 记忆检索的核心逻辑
def retrieve_context(query: str, session_id: str) -> str:
work_mem = session_store.get(session_id)
short_mem = summarize_recent_turns(session_id, n=5)
long_mem = vector_db.search(query, top_k=3)
return compose_prompt(work_mem, short_mem, long_mem)

Phase 3:Multi-Agent 协作

单 Agent 的瓶颈在于「万能胶」式的 prompt 太长,质量下降明显。改成了多 Agent 模式:

Agent 职责
Planner 拆解用户目标为子任务,分配给 Specialist
Coder 编写和执行代码,处理数据
Researcher 联网搜索、阅读文档、提取信息
Critic 审查其他 Agent 的输出,检查逻辑一致性

关键是 Critic Agent——它让我在测试中发现了 Planner 经常过度乐观地估计某个子任务已完成的 bug。

📉 三个最大的坑

1. Token 消耗黑洞

多 Agent 意味着每次交互都在消耗大量 token。优化后我把日均消耗从 $12 降到了 $3:

  • Planner 用轻量模型(Claude Sonnet),Coder 用旗舰模型
  • 工具返回结果做了截断 + 结构化摘要,而不是原样传回
  • 加入 Early Exit 逻辑:简单任务跳过 Planner 直接执行

2. 工具调用的「幻觉」

LLM 有时会调用不存在的工具,或者给工具传了不合理的参数。我的应对:

  • Tool Registry 在每次请求时动态注入当前可用工具列表
  • 工具结果必须包含 error 字段,Agent 据此决定是否重试
  • 设置 hard limit:单次任务最多调用 8 次工具

3. 安全边界

让 AI 执行 Shell 命令是危险的。做了三层防护:

  • 命令白名单 + 危险模式正则拦截
  • Docker 沙箱运行所有 exec 指令
  • 所有操作记录到审计日志,Alert 异常行为

✅ 现在的效果

三个月的迭代后,Agent 已经能实际承担工作:

场景 效果
每日技术新闻摘要 自动抓取 HN / Reddit / 少数派 → 分类 → 输出日报
服务器健康巡检 每 4 小时检查关键指标,异常自动告警
代码 PR Review 辅助 自动跑测试、检查代码规范、生成 review 建议

最大的感受:Agent 不是替代人类决策,而是压缩「信息 → 决策」之间的距离。它让我从「查数据 → 分析 → 写结论」变成了「读结论 → 做判断」。

🔭 下一步

  • 探索 Agent-to-Agent 协议,让不同系统的 Agent 可以互操作
  • 接入更多私有数据源(笔记、代码仓库、阅读记录)
  • 尝试让 Agent 参与长期项目,而不仅仅是单次任务

💡 如果你也在做 Agent 相关的东西,或者对某个细节感兴趣——欢迎在评论区交流。