这两年,大家都在聊 AI Agent。

有人觉得 Agent 就是给 ChatGPT 加几个工具,有人觉得 Agent 就是工作流,还有人认为,只要接上 MCP,就算做出了 Agent。

但我自己真正做下来以后,越来越觉得:

AI Agent 的核心,不是“让 AI 会聊天”,而是让 AI 能够在真实环境里完成任务。

我是王仕宇,一个写了很多年代码的程序员。

过去几年,我做过 Java、Go、Python、Node.js,也做过网站、微信小程序、macOS 应用、API 平台和各种开发者工具。最近一段时间,我把越来越多精力放到了 AI Agent 上。

而且我做 Agent 的思路,可能和很多纯 AI 从业者不太一样。

我并不是先研究“怎么让模型更聪明”,而是从工程师的角度出发:

怎么让模型接入现有系统?怎么调用真实工具?怎么操作文件?怎么执行代码?怎么访问数据库?怎么调用图片、视频模型?怎么让它把一个任务真正做完?

这篇文章,我想完整讲一下,我是如何理解和实践 AI Agent 的。


一、我理解的 AI Agent,到底是什么?

先说一个最简单的定义。

普通大模型的工作流程通常是:

用户输入
   ↓
大模型
   ↓
返回文字

比如:

用户:
帮我写一个 Nginx 配置。

AI:
server {
    listen 80;
    ...
}

到这里,AI 的任务就结束了。

它只能告诉你“应该怎么做”。

但是 Agent 不一样。

一个真正的 Agent,更像这样:

用户提出目标
     ↓
Agent 理解任务
     ↓
分析当前环境
     ↓
决定下一步行动
     ↓
调用工具
     ↓
获取执行结果
     ↓
再次判断
     ↓
继续调用工具
     ↓
直到任务完成

例如:

用户:
帮我把这个 Go 项目部署到服务器。

传统 AI 可能会告诉你:

git clone xxx
cd project
docker compose up -d

但是 Agent 应该能够真正去执行:

1. SSH 登录服务器
2. 查看系统版本
3. 判断 Docker 是否安装
4. 安装 Docker
5. clone 项目
6. 检查 docker-compose.yml
7. 修改配置
8. 启动容器
9. 查看日志
10. 请求健康检查接口
11. 如果失败继续排查
12. 部署成功后返回结果

这就是我认为 Agent 和普通 ChatBot 最大的区别。

一句话概括:

ChatBot 给你答案,Agent 帮你做事。


二、我做 Agent,第一步不是写 Agent

这一点其实非常重要。

很多人一开始做 Agent,就想着:

while True:
    response = llm(...)

然后加一个 Tool Calling。

最后发现 Demo 能跑,但是一放到真实业务里就非常难用。

我做 Agent 时,通常第一件事情不是写 Agent,而是:

先把能力拆出来。

比如我希望 AI 能够完成图片生成。

那我不会直接把“图片生成逻辑”硬编码进 Agent。

我会先做一个独立能力:

generate_image

如果需要图片编辑,再增加:

edit_image

如果是视频:

generate_video
get_video_status

如果是服务器:

execute_shell
read_file
write_file
restart_service

如果是 GitHub:

search_repository
read_file
create_issue
create_pull_request

Agent 最终只是:

这些能力的调度器。

这也是我现在越来越认同的一种 Agent 架构。


三、我的 Agent 架构:Model + Tools + Context + Loop

如果把我现在理解的 Agent 极度简化,可以写成:

Agent = LLM + Tools + Context + Loop

分别解释一下。

1. LLM

也就是 Agent 的“大脑”。

比如:

GPT
Claude
Gemini
DeepSeek
Grok

模型主要负责:

理解目标
分析问题
制定下一步行动
选择工具
解析工具结果
判断任务是否完成

但是模型本身通常不负责真正执行任务。


2. Tools

Tool 是 Agent 的“手”。

比如:

搜索网页
执行 Shell
查询数据库
调用 API
读写文件
发送邮件
生成图片
生成视频
操作浏览器
读取 GitHub

如果没有 Tool,模型再聪明,也只能聊天。

所以我现在越来越重视 Tool 层。

甚至我认为:

未来很多 Agent 产品真正的护城河,不一定是模型,而是工具生态。


3. Context

Context 是 Agent 的“工作记忆”。

里面可能包括:

用户需求
历史对话
项目文件
代码仓库
数据库信息
工具执行结果
环境变量
系统规则
业务规则

比如用户说:

把刚才那个项目部署一下。

这里的“刚才那个项目”是什么?

Agent 必须知道。

所以 Context Management 是做复杂 Agent 时绕不开的问题。


4. Loop

最后一个才是 Agent 最重要的部分:

Loop

Agent 并不是调用一次模型就结束。

而是:

思考
↓
行动
↓
观察
↓
再思考
↓
再行动

一直执行,直到:

Task Completed

抽象一点就是:

while not task_completed:

    decision = llm(context)

    if decision.type == "tool":
        result = execute_tool(decision.tool)
        context.append(result)

    elif decision.type == "answer":
        return decision.answer

很多 Agent 框架,本质上都是在这个循环上不断增加能力。


四、先从最简单的 Agent 开始

我们可以直接用 Python 写一个非常简单的 Agent。

假设使用 OpenAI 兼容协议。

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.example.com/v1"
)

messages = [
    {
        "role": "system",
        "content": """
你是一个 AI Agent。

你的目标不是单纯回答问题,
而是分析任务,并决定应该采取什么行动。
"""
    },
    {
        "role": "user",
        "content": "帮我计算 123 * 456"
    }
]

response = client.chat.completions.create(
    model="gpt-5",
    messages=messages
)

print(response.choices[0].message.content)

这个还不是 Agent。

因为它没有行动能力。

接下来,我们给它加工具。


五、给 Agent 加第一只“手”

例如增加一个计算工具:

def calculator(a, b, operator):

    if operator == "+":
        return a + b

    if operator == "-":
        return a - b

    if operator == "*":
        return a * b

    if operator == "/":
        return a / b

    raise ValueError("unsupported operator")

定义 Tool Schema:

tools = [
    {
        "type": "function",
        "function": {
            "name": "calculator",
            "description": "执行数学计算",
            "parameters": {
                "type": "object",
                "properties": {
                    "a": {
                        "type": "number"
                    },
                    "b": {
                        "type": "number"
                    },
                    "operator": {
                        "type": "string",
                        "enum": ["+", "-", "*", "/"]
                    }
                },
                "required": [
                    "a",
                    "b",
                    "operator"
                ]
            }
        }
    }
]

然后交给模型:

response = client.chat.completions.create(
    model="gpt-5",
    messages=messages,
    tools=tools
)

模型可能不会直接回答:

56088

而是返回:

{
  "name": "calculator",
  "arguments": {
    "a": 123,
    "b": 456,
    "operator": "*"
  }
}

Agent 程序再真正执行:

result = calculator(
    a=123,
    b=456,
    operator="*"
)

得到:

56088

然后把结果重新交给模型。

这时候,AI 就第一次从:

“回答问题”

进化到了:

“调用能力解决问题”

六、我更喜欢把 Tool 做成独立模块

随着工具越来越多,如果全部写在一个 Agent 文件里,很快就会变成这样:

agent.py

├── calculator
├── search
├── shell
├── image
├── video
├── github
├── email
├── database
└── ...

最后代码越来越不可维护。

所以我更喜欢:

agent/
├── main.py
├── tools/
│   ├── shell.py
│   ├── browser.py
│   ├── image.py
│   ├── video.py
│   ├── github.py
│   └── database.py
├── prompts/
│   └── system.md
├── memory/
│   └── manager.py
└── llm/
    └── client.py

然后统一注册:

TOOLS = {
    "shell": shell_tool,
    "browser": browser_tool,
    "generate_image": generate_image,
    "generate_video": generate_video,
    "github": github_tool
}

执行的时候:

tool_name = call["name"]

tool = TOOLS.get(tool_name)

if not tool:
    raise RuntimeError(
        f"unknown tool: {tool_name}"
    )

result = tool(**call["arguments"])

这样 Agent 本身就变得非常干净。


七、我为什么开始重视 Skill

做到这里,会出现第二个问题。

Tool 太底层。

比如:

curl
read_file
write_file
shell
browser

这些是能力,但是还不是“经验”。

举个例子。

如果我告诉 AI:

给我生成一张 16:9 的文章封面。

底层 Tool 可能只有:

generate_image(prompt, width, height)

但 AI 还需要知道:

什么时候调用?
参数怎么组织?
提示词怎么写?
失败后怎么重试?
图片生成后保存到哪里?
最终怎么返回?

这时候我就会在 Tool 之上再增加一层:

Skill

我现在更愿意把它理解成:

Skill = Tool + Instructions + Workflow + Best Practice

例如:

image-generation-skill/
├── SKILL.md
├── scripts/
│   └── generate.py
└── examples/
    └── prompts.md

SKILL.md 可以告诉 Agent:

# Image Generation Skill

当用户要求:

- 生成图片
- 制作封面
- 绘制插图
- 制作海报

使用本 Skill。

## Workflow

1. 分析用户需要的画面
2. 判断比例
3. 优化 Prompt
4. 调用图片模型
5. 检查返回结果
6. 返回最终图片

这就比单纯暴露 API 好很多。


八、为什么我认为 Skill 非常重要

过去的软件是:

UI
↓
API
↓
Service
↓
Database

但 Agent 时代,中间可能会增加一层:

User
↓
Agent
↓
Skill
↓
Tool
↓
API
↓
Service

Tool 告诉 AI:

“我能做什么。”

Skill 告诉 AI:

“这件事应该怎么做好。”

这是两种完全不同的东西。

例如一个 curl Tool 理论上可以调用全世界几乎所有 HTTP API。

但你不能因此说:

curl = GitHub Skill

GitHub Skill 应该包含:

什么时候查询仓库
怎么搜索代码
怎么读取 Issue
怎么判断问题
怎么修改代码
怎么创建 PR

所以我觉得以后 AI Agent 的竞争,很可能会逐渐从:

谁接的模型多

变成:

谁拥有更多高质量 Skill

九、我正在做的一个方向:让 Agent 获得 AI 生成能力

这是我目前特别感兴趣的一件事情。

大模型本身很强,但很多 Agent 默认只能:

写代码
搜索
运行命令
读写文件

但如果给它增加:

图片生成
图片编辑
视频生成
视频编辑
语音
OCR

能力就完全不同了。

例如一个文章 Agent:

用户:
帮我写一篇 DeepSeek V4 的文章,
并且配三张图。

Agent 可以自己:

1. 搜集资料
2. 整理文章结构
3. 写正文
4. 判断哪里需要图片
5. 为图片生成 Prompt
6. 调用图片模型
7. 保存图片
8. 插入 Markdown
9. 输出完整文章

而不是像以前一样:

AI 写文章
↓
人再打开 Midjourney
↓
自己写 Prompt
↓
下载图片
↓
重新插入文章

Agent 可以把整个流程闭环。


十、再进一步:视频 Agent

图片只是开始。

比如我说:

制作一个 30 秒的 AI 产品宣传视频。

Agent 可以拆成:

目标
↓
生成脚本
↓
拆分镜头
↓
生成分镜 Prompt
↓
生成图片
↓
生成视频
↓
生成旁白
↓
生成字幕
↓
合成
↓
输出最终视频

甚至可以自动拆成:

Scene 01
Scene 02
Scene 03
Scene 04
Scene 05

每一个 Scene 都执行:

Generate Image
      ↓
Image to Video
      ↓
Check Result

最后:

FFmpeg
↓
合成
↓
字幕
↓
音乐
↓
Final.mp4

这时候 Agent 就不再是一个聊天窗口了。

它变成了一套:

自动化生产系统。


十一、我做 Agent 非常看重 API 标准化

这也是我做 API 中转、模型兼容这一类东西以后,一个非常明显的感受。

现在 AI 模型很多:

OpenAI
Claude
Gemini
DeepSeek
Grok
Kling
即梦
MiniMax
...

如果每接一个模型,都单独写一套 SDK:

OpenAIClient
ClaudeClient
DeepSeekClient
GrokClient
...

Agent 会越来越复杂。

所以我比较喜欢做一层统一协议。

例如统一成:

/v1/chat/completions

或者:

/v1/responses

然后模型只是:

{
  "model": "gpt-5.6-sol"
}

换成:

{
  "model": "deepseek-v4"
}

或者:

{
  "model": "grok"
}

对于 Agent 来说,底层模型就可以快速切换。

架构变成:

Agent
   │
   ▼
Unified AI Gateway
   │
   ├── OpenAI
   ├── Claude
   ├── DeepSeek
   ├── Grok
   ├── Gemini
   ├── Image
   └── Video

这也是我越来越重视 AI Gateway 的原因。


十二、Agent 不应该绑定某一个模型

我自己现在有一个很明确的观点:

Agent 和 Model 应该解耦。

Agent 是:

任务系统

Model 是:

推理引擎

两者不是一回事。

今天可能:

Claude

更适合写代码。

明天可能:

GPT

更适合复杂工具调用。

另外一个模型可能:

DeepSeek

成本更低。

所以一个好的 Agent 架构最好是:

agent = Agent(
    model=ModelProvider(
        name="gpt-5.6-sol"
    )
)

然后可以直接:

agent.model = ModelProvider(
    name="deepseek"
)

Agent 的:

Tools
Memory
Skills
Workflow
Permissions

都不需要改变。


十三、真正复杂的是 Context,不是 API

最开始做 Agent 时,很容易觉得最难的是:

Tool Calling

但实际上做到后面会发现:

Tool Calling 很简单。

真正复杂的是 Context。

比如一个 Agent 连续干了 100 步。

每一步都产生:

Prompt
Tool Call
Tool Result
日志
文件内容
错误信息

如果全部塞进上下文:

Token 爆炸

所以必须考虑:

Context Compression
Memory
Summary
Retrieval
Workspace

例如:

短期信息
→ Context

长期信息
→ Memory

大量文件
→ Workspace

历史知识
→ Retrieval

我比较喜欢这种思路:

                 ┌──────────────┐
                 │    Memory    │
                 └──────┬───────┘
                        │
User → Agent → Context Manager
                        │
          ┌─────────────┼─────────────┐
          ▼             ▼             ▼
       Files          Tools         Skills

Agent 不需要把所有东西永远放在 Prompt 里面。

需要的时候再取。


十四、Memory 和数据库不是一回事

这也是非常容易混淆的一个概念。

Memory 并不是单纯:

INSERT INTO memories ...

Agent 的 Memory 至少可以分:

Working Memory
Short-term Memory
Long-term Memory
User Memory
Task Memory

例如:

Working Memory

当前任务:

正在修复 Nginx 403。

Short-term Memory

刚才发现:

文件路径:
/data/static/newlogo.png

Long-term Memory

这个服务器:

使用 CentOS
Nginx 配置位于:
/etc/nginx/conf.d/

User Memory

用户通常:

使用 Go
使用 Docker
服务器主要用 Nginx

有了这些以后,同一个 Agent 才会越来越懂用户。


十五、Agent 一定需要权限系统

这是我认为很多 Demo 完全没有考虑的问题。

如果 Agent 能执行:

rm -rf /

那显然很危险。

所以真实 Agent 必须给 Tool 分权限。

例如:

Level 0
只读

Level 1
低风险写操作

Level 2
系统操作

Level 3
危险操作

比如:

TOOLS = {
    "read_file": {
        "permission": 0
    },

    "write_file": {
        "permission": 1
    },

    "restart_nginx": {
        "permission": 2
    },

    "delete_database": {
        "permission": 3
    }
}

危险操作需要:

Human Approval

例如:

Agent:

准备执行:

DROP TABLE users;

该操作可能导致数据永久删除。

是否继续?

所以我不太认可一种观点:

Agent 越自主越好。

我更认为:

Agent 应该在明确的权限边界内尽可能自主。


十六、我做 Agent 很看重“可观察性”

普通脚本失败:

看日志。

Agent 失败会复杂很多。

因为你需要知道:

模型为什么选择这个工具?
调用参数是什么?
工具返回了什么?
为什么又调用另一个工具?
Token 用了多少?
任务用了多少钱?
执行了多少步?

所以最好记录完整 Trace。

例如:

{
  "task_id": "task_001",
  "step": 7,
  "model": "gpt-5.6-sol",
  "action": "tool_call",
  "tool": "execute_shell",
  "arguments": {
    "command": "docker ps"
  },
  "duration": 812,
  "status": "success"
}

一个完整 Agent 系统,我认为至少应该能够看到:

Task
↓
Step
↓
LLM Request
↓
Tool Call
↓
Tool Result
↓
Cost
↓
Latency

否则出问题以后很难调试。


十七、我不太喜欢一开始就上 Multi-Agent

Multi-Agent 最近特别火。

架构看起来很漂亮:

Manager Agent
   │
   ├── Research Agent
   ├── Coding Agent
   ├── Test Agent
   ├── Review Agent
   └── DevOps Agent

但是如果一个 Agent 都没做好,直接上五个 Agent,往往只是:

五倍 Token
+
五倍 Debug 难度

我更推荐:

单 Agent
+
多个 Skill
+
多个 Tool

真正遇到:

上下文隔离
角色专业化
并行任务
独立权限

再拆成 Multi-Agent。


十八、我理想中的 Coding Agent

因为我是程序员,所以 Coding Agent 是我非常关注的一类 Agent。

我觉得一个真正能用的 Coding Agent,不应该只是:

帮我补全代码。

而应该至少拥有:

Repository Search
File Read
File Write
Shell
Git
Test
Build
Lint
Browser
Documentation Search

用户说:

修复这个接口 500。

Agent 应该自己完成:

搜索接口
↓
找到 Controller
↓
找到 Service
↓
找到数据库调用
↓
复现错误
↓
查看日志
↓
修改代码
↓
运行测试
↓
启动项目
↓
请求接口
↓
确认修复

这才是真正让我觉得 Agent 有价值的地方。


十九、我为什么越来越关注 MCP

MCP 对 Agent 最大的意义,在我看来不是“又一个协议”。

而是:

它在尝试标准化 Agent 和外部世界连接的方式。

以前每一个 Agent 都自己写:

GitHub Adapter
Database Adapter
Browser Adapter
Slack Adapter
Filesystem Adapter

以后理论上可以变成:

Agent
  ↓
MCP
  ↓
Tools

比如:

Claude Code
Codex
Cursor
OpenCode

如果都能够消费类似的 MCP Server,那么一个能力就不用重复开发很多遍。

这件事情对开发者特别重要。


二十、但是我认为 Skill 可能比 MCP 更值得关注

MCP 解决的是:

怎么连接工具。

Skill 解决的是:

怎么使用工具完成任务。

例如:

MCP:
我可以操作 GitHub。

而 Skill:

当用户要求修复 Bug 时:

1. 搜索相关 Issue
2. 定位代码
3. 创建分支
4. 修改代码
5. 执行测试
6. 检查 Diff
7. 创建 Pull Request

因此我现在比较喜欢这样的架构:

              Agent
                │
        ┌───────┴────────┐
        │                │
      Skills           Memory
        │
        ▼
       MCP
        │
        ▼
      Tools
        │
        ▼
 External Systems

二十一、我现在怎么看 Agent 的商业机会

如果只做:

ChatGPT 套壳

我觉得空间会越来越小。

因为基础模型厂商自己就能做。

真正有价值的地方可能在下面几层。

第一层:模型

OpenAI
Anthropic
Google
DeepSeek
xAI

普通开发者很难参与训练基础模型。

第二层:AI Gateway

解决:

统一 API
模型路由
计费
限流
Fallback
多 Key
负载均衡

第三层:Tools / MCP

解决:

Agent 能做什么。

第四层:Skills

解决:

Agent 怎么把事情做好。

第五层:Vertical Agent

例如:

编程 Agent
电商 Agent
内容 Agent
运维 Agent
销售 Agent
客服 Agent
视频 Agent

我个人更看好后面三层。


二十二、我自己真正想做的,不是一个“万能聊天机器人”

如果让我总结一下我现在做 AI Agent 的方向,我不会说:

我要做一个更聪明的 ChatGPT。

我更希望做的是:

给 AI 不断增加能力。

今天增加:

图片生成

明天增加:

视频生成

后天增加:

服务器运维

然后再增加:

GitHub
Browser
Database
Email
Search
Payment
Deployment

最后,一个模型背后可能拥有几十个甚至几百个 Skill。

用户只需要告诉它:

我想做什么。

剩下的问题由 Agent 自己拆解。

这才是我眼里的 Agent。


二十三、最终形态可能是一个 AI 操作系统

再往后想一步。

现在电脑的模式是:

人
↓
GUI
↓
Application
↓
Operating System

用户需要自己:

打开浏览器
打开 VS Code
打开终端
打开 Photoshop
打开 Excel

AI Agent 时代可能变成:

人
↓
自然语言
↓
Agent
↓
Skill / Tool
↓
Application / API / OS

用户不再需要知道:

哪个软件能完成这件事。

只需要说:

帮我把昨天的数据整理成 Excel,
分析异常,
生成一份报告,
再发给团队。

Agent 自己决定:

查数据库
↓
Python
↓
Excel
↓
Chart
↓
PDF
↓
Email

所以从这个角度看:

Agent 本质上可能是在重新定义人与计算机之间的交互层。


二十四、如果今天让我重新从 0 开始做 Agent

我的路线会非常简单。

先不要做什么:

超级 Agent
通用 Agent
AutoGPT 2.0
Multi-Agent Platform

先做一个很具体的问题。

比如:

代码 Agent

第一阶段只给它:

read_file
write_file
search
shell

做到:

可以修一个真实 Bug。

第二阶段加入:

Git
Test
Browser

做到:

可以完成一个完整 Issue。

第三阶段加入:

Memory
Skill
MCP

第四阶段再考虑:

Multi-Agent
Planning
Long-running Task
Human-in-the-loop

Agent 最怕的其实不是功能少。

而是:

什么都能做,
但是没有一件事能稳定做完。

二十五、最后

我从传统后端开发一路做到现在,越来越明显地感觉到一个变化:

过去我们写程序,是我们自己把流程写死。

if condition {
    doA()
} else {
    doB()
}

未来越来越多的软件,会变成:

目标
+
规则
+
工具
+
环境

然后由模型动态决定:

下一步做什么。

这是一个非常大的变化。

以前我们写的是:

Workflow

未来越来越多时候,我们写的可能是:

Capability

我们不再需要告诉系统:

第一步必须做什么,
第二步必须做什么,
第三步必须做什么。

而是告诉 Agent:

你有什么工具,
你有什么权限,
你必须遵守什么规则,
最终目标是什么。

剩下的路径,让它自己寻找。

所以,如果你问我:

王仕宇是如何做 AI Agent 的?

我的答案并不是用了哪个框架,也不是用了哪个模型。

而是四句话:

把能力做成 Tool。
把经验做成 Skill。
把模型当成大脑。
让 Agent 在真实环境中把任务跑完。

模型会越来越强。

GPT、Claude、Gemini、DeepSeek、Grok 还会不断迭代。

但我觉得对于普通开发者来说,真正值得积累的东西,是:

Tools
Skills
Workflow
Context
Memory
Infrastructure
Domain Knowledge

因为模型可以替换。

而这些东西,最终会组成属于你自己的 Agent 能力体系。

这也是我现在研究 AI Agent 最感兴趣的地方。

不是再做一个聊天机器人。

而是:

让 AI 真正拥有干活的能力。

一起成为勇猛精进的人类。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐