基于 AgentSDK 开发的综合演示项目,完整展示 AgentSDK Phase 6 的所有核心功能。
🎯 本项目目标: 作为 AgentSDK 的最佳参考实现,帮助开发者快速理解和上手 AgentSDK 的所有功能。
- 🔧 Middleware 系统:
- Summarization Middleware: 自动总结长对话(>170k tokens)
- Filesystem Middleware: 6个文件系统工具(fs_read, fs_write, fs_edit, fs_grep, fs_glob, fs_ls)
- SubAgent Middleware: 任务委托给子代理执行
- 可视化控制台: 查看 Middleware 状态、工具列表和统计信息
- 洋葱模型架构: 支持自定义 Middleware,优先级控制
-
🌐 HTTP 请求工具:
- 支持 6 种 HTTP 方法(GET/POST/PUT/DELETE/PATCH/HEAD)
- 自动 JSON 解析
- 自定义请求头和请求体
- 可配置超时(默认 30 秒)
-
🔍 Web 搜索工具:
- 基于 Tavily API 的实时搜索
- 支持 3 种主题类型(general/news/finance)
- 可配置结果数量(1-10)
- 可选包含完整页面内容
- 💬 智能对话:与 AI 进行自然对话,获取写作建议
- ✍️ 写作工具:
- 🎨 润色:提升文本质量和表达
- 🔄 改写:用不同风格重写内容
- 📝 扩写:丰富和扩展文本内容
- 📋 总结:提取关键信息
- 🌐 翻译:多语言翻译支持
- 💾 会话管理:保存和管理多个写作会话
- 🔄 实时响应:通过 WebSocket 获取流式 AI 响应
- 🤝 多 Agent 协作:Pool 和 Room 机制实现 Agent 间消息路由
- ⚡ Skills 系统:Commands 和 Skills 注入
- Go + Gin - 高性能 Web 框架
- AgentSDK - AI Agent 开发框架
- WebSocket - 实时通信
- 本地存储 - JSON 文件持久化
- React + TypeScript - 现代化前端框架
- Vite - 快速构建工具
- Shadcn/ui - 精美 UI 组件库
- TailwindCSS - 实用优先的 CSS 框架
- TanStack Query - 强大的数据管理
本项目使用 yunwu.ai 代理 Anthropic API。
- 访问 yunwu.ai 注册账号
- 访问 API Key 管理页面 创建 Token
- (可选)访问 充值页面 充值,新用户赠送 $0.2
编辑项目根目录的 .env 文件:
# 将下面的占位符替换为您的真实 API Key
ANTHROPIC_API_KEY=sk-ant-your-actual-key-here
# 服务器端口
PORT=8080
# 模型配置(可选,默认使用最便宜的 haiku)
MODEL=claude-3-haiku-20240307./scripts/test-yunwu-key.shcd backend
go mod tidy
go run main.go后端将在 http://localhost:8080 启动
cd frontend
npm install
npm run dev前端将在 http://localhost:5173 启动
打开浏览器访问 http://localhost:5173,应用包含以下页面:
- 多 Agent 协作演示
- Pool 和 Room 管理
- 工作流编排
- 基础对话界面
- 会话管理
- 实时 WebSocket 通信
- 查看所有可用的 Middleware
- Middleware 工具列表
- 功能说明和使用示例
- 支持的 Middleware:
- summarization: 自动总结长对话
- filesystem: 6 个文件系统工具
- subagent: 子代理任务委托
- HTTP 请求工具测试界面
- Web 搜索工具演示
- 支持的工具:
- http_request: HTTP/HTTPS 请求(6 种方法)
- web_search: Tavily API 搜索(需要 API Key)
- Commands 列表
- Skills 查看
- 执行 Skills 命令
项目提供了几个便捷脚本(位于 scripts/ 目录):
# 测试 API Key 是否有效
./scripts/test-yunwu-key.sh
# 测试完整 API 功能
./scripts/test-api.sh
# 启动后端(便捷脚本)
./scripts/start-backend.sh
# 启动前端(便捷脚本)
./scripts/start-frontend.shyunwu.ai 支持以下 Anthropic 模型(按价格从低到高):
| 模型名称 | 输入价格 | 输出价格 | 适用场景 |
|---|---|---|---|
claude-3-haiku-20240307 |
$0.25/M tokens | $1.25/M tokens | ⭐ 推荐:快速、便宜 |
claude-3-5-haiku-20241022 |
$1/M tokens | $5/M tokens | 平衡性能和成本 |
claude-3-5-sonnet-20241022 |
$3/M tokens | $15/M tokens | 高质量写作 |
claude-3-opus-20240229 |
$15/M tokens | $75/M tokens | 最高质量 |
- Base URL:
https://yunwu.ai - Anthropic 原生格式:
/v1/messages - API Key 格式:
x-api-key: sk-ant-xxx
原因:API Key 无效或未配置
解决方案:
- 确认已在 yunwu.ai 创建 API Key
- 检查
.env文件中的ANTHROPIC_API_KEY配置 - 运行
./scripts/test-yunwu-key.sh测试
原因:
- 请求频率过高
- 账户余额不足
- 服务器负载过高
解决方案:
- 检查账户余额:https://yunwu.ai/topup
- 降低请求频率
- 稍后重试
诊断步骤:
- 运行
./scripts/test-yunwu-key.sh检查 API Key - 查看后端日志:
tail -f /tmp/backend.log - 检查浏览器控制台是否有 WebSocket 错误
- 确认后端和前端都在运行
agentdemo/
├── backend/ # 后端代码
│ ├── agent/ # Agent 管理和模板
│ ├── api/ # HTTP API 和路由
│ ├── models/ # 数据模型
│ ├── storage/ # 数据持久化
│ ├── ws/ # WebSocket 处理
│ └── main.go # 入口文件
├── frontend/ # 前端代码
│ ├── src/
│ │ ├── components/ # React 组件
│ │ ├── hooks/ # 自定义 Hooks
│ │ ├── services/ # API 客户端
│ │ └── types/ # TypeScript 类型
│ └── package.json
├── docs/ # 文档目录
│ ├── OSS_SETUP.md # 开源设置指南
│ ├── README_SKILLS.md # Skills 功能说明
│ └── SKILLS_DEMO.md # Skills 演示文档
├── scripts/ # 脚本目录
│ ├── test-yunwu-key.sh # API Key 测试脚本
│ ├── test-api.sh # 完整功能测试脚本
│ ├── start-backend.sh # 启动后端脚本
│ └── start-frontend.sh # 启动前端脚本
├── .env # 环境变量配置
└── README.md # 项目说明文档
cd backend
# 添加新依赖
go get github.com/some/package
# 运行测试
go test ./...
# 构建
go build -o bin/server main.gocd frontend
# 添加新依赖
npm install package-name
# 类型检查
npm run type-check
# 构建生产版本
npm run buildPOST /api/sessions- 创建新会话GET /api/sessions- 获取会话列表GET /api/sessions/:id- 获取会话详情DELETE /api/sessions/:id- 删除会话
POST /api/sessions/:id/chat- 发送消息GET /api/sessions/:id/messages- 获取消息历史GET /ws/:sessionId- WebSocket 连接
POST /api/writing/polish- 润色文本POST /api/writing/rewrite- 改写文本POST /api/writing/expand- 扩写文本POST /api/writing/summarize- 总结文本POST /api/writing/translate- 翻译文本
欢迎提交 Issue 和 Pull Request!
MIT License
注意:本项目仅用于演示和学习目的。在生产环境中使用时,请确保:
- 妥善保管 API Key(不要提交到版本控制)
- 实现适当的用户认证和授权
- 添加速率限制和错误处理
- 使用生产级数据库替代文件存储