logo
0
0
WeChat Login
cfool<cfool.wang@gmail.com>
docs: add streaming and parallel tool calls documentation

AI Agent 开发教程

Node.js License

欢迎来到 AI Agent 开发教程!本教程将带你从零开始,一步步构建一个最小可运行的命令行 AI 智能体(Agent),帮助你从代码层面理解AI Agent的逻辑。

你将不仅仅是调用 API,而是深入理解 Agent 的核心架构:大脑(LLM)、记忆(Context)、手脚(Tools)和技能(Skills)

项目简介

这是一个可运行的代码库,教程中的每个阶段都对应 Git 历史中的关键 Commit。你可以通过 git checkout 切换到对应状态,亲自修改代码并观察效果。

最终你将获得:

  • 一个能够执行 Shell 命令的 AI Agent
  • 支持多模型切换(Gemini、DeepSeek、智谱、腾讯混元)
  • 完整的工具系统(文件读写、命令执行等)
  • MCP 协议集成能力
  • Sub-Agent 协作模式
  • 可扩展的 Skill 系统

快速开始

# 1. 克隆项目 git clone <repository-url> cd try_agent # 2. 安装依赖 npm install # 3. 配置环境变量(至少配置一个模型的 API Key) cp .env.example .env # 或手动创建 .env,填入至少一个 API Key # 例如: echo "GEMINI_API_KEY=your_api_key_here" > .env # 4. 运行 npm start

详细配置请参考 环境配置 (Setup)

前置要求

  • Node.js: v18 或更高版本
  • Git: 用于版本控制
  • API Key: 至少一个模型供应商的 API Key(Gemini / DeepSeek / 智谱 / 腾讯混元)

教程目录

建议按以下顺序阅读和实践:

🏁 准备工作

📚 核心概念

🛠️ 实战开发

🚀 进阶架构

学习建议

本项目不仅仅是文档,更是一个可运行的代码库。 教程中的每个阶段都对应 Git 历史中的关键 Commit。你可以通过 git checkout 切换到对应状态,亲自修改代码并观察效果。

推荐学习路径:

  1. 先阅读 核心概念 建立认知基础
  2. 按顺序完成实战开发章节,每章都有对应的 Git Branch
  3. 动手修改代码,观察变化
  4. 尝试进阶架构,扩展 Agent 能力

项目结构

try_agent/ ├── docs/ # 文档 ├── src/ # 源代码 │ ├── index.ts # 入口文件 │ ├── chat.ts # Agent 核心逻辑(ReAct 循环) │ ├── chat-events.ts # 事件总线(TUI 解耦) │ ├── mcp-client.ts # MCP 协议客户端 │ ├── project-context.ts # 项目上下文注入 │ ├── system-prompt.ts # 系统提示词管理 │ ├── tool-registry.ts # 工具注册中心 │ ├── context/ # 上下文管理 │ │ └── chat-compress-service.ts # 对话历史压缩服务 │ ├── model/ # 模型客户端 │ │ ├── client.ts # 模型注册与切换(多模型适配) │ │ └── providers/ # 模型供应商实现 │ │ ├── types.ts # 供应商接口定义 │ │ ├── gemini.ts # Google Gemini │ │ ├── deepseek.ts # DeepSeek │ │ ├── zhipu.ts # 智谱 AI │ │ ├── tencent.ts # 腾讯混元 │ │ └── openai-compatible.ts # OpenAI 兼容接口 │ ├── tools/ # 工具实现 │ │ ├── run-shell-command.ts # Shell 命令执行 │ │ ├── read-file.ts # 文件读取 │ │ ├── write-file.ts # 文件写入 │ │ ├── edit-file.ts # 文件编辑 │ │ ├── read-folder.ts # 目录读取 │ │ ├── sub-agent-tool.ts # Sub-Agent 调用工具 │ │ └── skill-tool.ts # Skill 调用工具 │ ├── subagents/ # 子智能体系统 │ │ ├── sub-agent-types.ts # Sub-Agent 类型定义 │ │ ├── sub-agent-registry.ts # Sub-Agent 注册中心 │ │ └── codebase-investigator.ts # 代码库调查员 │ ├── skills/ # 技能系统 │ │ ├── skill-types.ts # Skill 类型定义 │ │ ├── skill-registry.ts # Skill 注册中心 │ │ └── skill-loader.ts # Skill 加载器 │ ├── tui/ # TUI 交互界面 │ │ ├── index.tsx # TUI 入口 │ │ ├── types.ts # UI 类型定义 │ │ ├── slash-commands.ts # 斜杠命令注册表 │ │ ├── use-chat.ts # Chat 状态管理 hook │ │ ├── use-command-list.ts # 命令补全 hook │ │ └── components/ # Ink/React 组件 │ ├── prompts/ # 系统提示词模板 │ │ ├── gemini-cli.md # Gemini CLI 风格 │ │ ├── coding-mentor.md # 编程导师 │ │ ├── strict-engineer.md # 严格工程师 │ │ ├── personal-assistant.md # 个人助手 │ │ ├── sarcastic-friend.md # 毒舌朋友 │ │ └── anime-girl.md # 二次元少女 │ └── utils/ # 工具函数 │ └── frontmatter.ts # Frontmatter 解析 ├── .agent/ # Agent 配置(技能和代理) ├── .env # 环境变量配置 ├── .mcp.json # MCP 服务器配置 ├── package.json # 项目依赖 └── tsconfig.json # TypeScript 配置

常用命令

命令说明
npm start启动 Agent

常见问题

Q: 启动后没有反应? A: 检查 .env 文件是否正确配置了 API Key。

Q: 如何切换模型? A: 运行时使用 /use <model-name> 命令(如 /use deepseek-v3.2),或在 .env 中设置 MODEL 环境变量。(在 第 9 部分:TUI 中,/use 将升级为交互式的 /model 命令)

Q: Token 超限怎么办? A: 参考 上下文管理 章节。

许可证

本项目采用 MIT 许可证。


开始你的 AI Agent 之旅吧! 🚀