重生之点亮Agent技术栈 -- 通识

2 阅读6分钟

看了一下自己上次写文章分享还是在2022年,转眼间好几年过去了,空闲之余也是该捡起来多写写了,姑且就叫它重生之xxx系列吧

section 1 【历史】

前摇

第一次知道AI追溯至2016年谷歌的AlphaGo击败世界围棋冠军李世石,当时也没什么感觉,只认为这个东西离自己很远,时至2024年底Chatgpt红极一时,才让我知道了AI的强大。此后的模型一代更比一代强,百模争锋,AI改变生活、改变工作方式的势头已经没法让人忽视,毕竟打不过就加入嘛。

AI工程进化的过程

AI工程化能力正在经历三次深刻的范式跃迁,prompt engineering --> context engineering --> harness engineering,每次的跃迁都是对上次的超越。

Prompt Engineering

这个是说提示词工程,只要能给出完善的提示,llm就能给出正确的结果,所以当时大家的重心都在怎么优化提示词上。比如一套好的提示词通常包括四个要素:

  • 清晰指令:明确说明任务目标。
  • 相关上下文:提供必要的背景知识。
  • 适当约束:限定回答范围或风格。
  • 输出格式:指定内容结构(如JSON)。

这里也贴上优化是否有效的工具:字节家的产品

Context Engineering

prompt会有以下问题:

  • 上下文大小限制,不同的模型的上下文大小是有限制的。
  • 输入太杂会影响模型理解
  • 输入的越多token成本就越高

这个时候就需要context engineering,context是指模型输入,是决策所需的全部信息总和,Context engineering则是说在有限的上下文窗口Context Window下通过精心设计给模型的输入内容,达到最佳的效果。不改变模型的结构,只改变模型能“看到”什么。 成熟的上下文工程通常会做三件事:

  • 召回Recall 从大量资料里找出和当前任务最相关的那一部分
  • 压缩Compress 把过长的文档、日志或历史对话压缩成摘要和关键点
  • 组装Assemble 按照特定顺序把信息装进上下文,把最关键的规则和指令放在模型最容易注意的位置

Harness Engineering

模型在真实的环境中连续行动时,如何保证它不跑偏不崩溃不胡说八道,出了错还能拉回来,这个时候就需要harness engineering,也即围绕大模型构建的一整套执行与控制系统,给模型装上手脚规则记忆反馈和约束,让它不只是会说,还能真的做事。

成熟的harness应该有哪些功能?

  • 结构化上下文管理:明确角色、目标、成功标准,先组织信息,再交给模型
  • 工具系统设计
  • 执行编排引擎 把复杂任务拆成稳定顺序,而不是把所有决定一次性交给模型自由发挥
  • 状态与记忆管理
  • 独立评估与观测
  • 约束、校验与恢复机制
可能遇到的问题

上下文焦虑

解决方案:context reset,交接工作状态,用干净的上下文继续跑

自评失真

解决办法:角色分离,Planner 扩规格、定约束、排优先级; Executor 做实现 按规格执行、编码; Evaluator 环境化验收,独立于生产做检查。

section 2 【一些概念】

MCP

一种开放、标准化的通信协议,定义了AI模型与外部数据源、工具之间的连接规范。通过该协议可以给大模型提供实时、动态的外部能力,相当于给大模型安装上了手脚,一般是在会话启动时加载。

比如有佬友开发的提供股票数据的mcp:github.com/elsejj/mcp-…

image.png

如果你想直接看mcp的运行效果可以安装支持mcp的客户端,比如这个modelcontextprotocol.io/clients

新手用 MCP 的顺序建议:

  1. 先不接 MCP,把“读代码/改代码/跑测试/审 diff”练熟
  2. 再只接一个最安全的(比如 filesystem)
  3. 最后才接有写入/网络/数据库权限的(每接一个就做一次验收)

官方入口:

skills

一种包含指令、脚本和资源的模块化能力包或标准化任务模板,向AI灌输了特定领域的专业知识和工作流。

两种加载模式:

  • 全量加载,就是启动的时候把skills目录里面的所有SKILL.md一股脑塞进system prompt
  • 按需加载,只读name+description,匹配到了才加载完整内容

大概长这样:

my-skill/
├── SKILL.md              ← 先读这个(比较短,用来做路由)
└── references/
    ├── detailed-guide.md     ← 需要时才读
    └── anti-patterns.md      ← QA 阶段才读

Skills推荐:skillsmp.com/zh

新手推荐工作流

每次写需求,建议都带上这 4 句:

  1. 先解释你要怎么做
  2. 再改代码
  3. 给我看 diff
  4. 跑测试/构建

如果你团队里多人共用一套规则:

  • 把 Skill 当成“约定俗成的 SOP”
  • 让 AI 在每次任务开始先加载对应 Skill,会稳定很多

function calling

function calling是模型API中的一种能力(如OpenAI的),模型根据对话和已注册的函数描述,输出结构化参数,然后外部系统执行该函数并返回结果。它是实现工具调用的一种常用方式

vibe coding

基于大模型,通过自然语言描述自己的需求,然后ai会直接生成对应的代码程序

上面的概念搞清楚以后就可以做些好玩的东西了,比如这个就是很好的例子,只要有好的idea都可以自己动手去干。

section 3 【一些问题】

现在大模型已经很强了,多家头部大厂也都出了各自的通用Agent,还有必要去自研吗?

我是这么理解的:在一些特定的场景下,通用Agent是没法满足需求的,这个时候就需要自研,比如你在云厂商开机器挂盘等操作,即使提供mcp也是搞不定的,这个时候就需要二开或者自研,

既然需要自研,该怎么实现agent呢?

想掌握agent就得先理解其设计逻辑,需要了解各个环节设计的原因,

开发agent一定要掌握python吗?

在大模型如此厉害的今天,我觉得编程语言已经不是门槛了,技术平权,不会的大模型都会帮你解惑,你需要了解掌握的是其处理流程。

以上是我的对大模型开发的一些拙见,如有问题可以私信进行探讨!

最后

永远牢记一句话:唯一不变的是变化