返回模板

自定义 Node

运行在 EdgeOne Makers 上的极简 Node.js LLM Agent 入门模板,支持流式输出、会话记忆、中断生成和平台工具调用。

框架React.js
应用场景Agents,AI
运行在 EdgeOne Makers 上的极简 Node.js LLM Agent 入门模板,支持流式输出、会话记忆、中断生成和平台工具调用。

Node.js Starter Agent

跑在 EdgeOne Makers 上的极简 Node.js / TypeScript LLM Agent 模板:直接用原生 fetch 调 OpenAI 兼容的 Chat Completions,搭配 EdgeOne 沙箱工具调用与基于 context.store 的会话记忆。不依赖任何 Agent 框架。

Framework: None (raw Node) · Category: Quick Start · Language: TypeScript

Deploy to EdgeOne Makers

概述

如果你想要一个不依赖任何 Agent 框架的最小起点,这就是。整条主流程 —— 拼 prompt → 流式调 LLM → 执行 tool_calls → 续请求 → 收尾,全部用原生 fetch 和一个小巧的 toolRegistry 写完。从上到下读完,就把全部都看完了。

  • SSE 流式聊天 —— 逐 token 推 text_delta,命中工具时推 tool_called
  • EdgeOne 沙箱工具 —— 从 context.tools 拉出 commands / files / code_interpreter / browser,转成 OpenAI function calling schema。
  • 工具调用循环 —— 最多 10 轮:模型返回 tool_callstoolRegistry.execute() → 追加结果 → 续请求,直到给出最终答案。
  • 会话记忆 —— ChatSession(context.store) 通过 EdgeOne Store 读写按会话维度的历史。
  • 可信取消 —— 前端 AbortController + 后端 context.request.signal 真正释放上游 LLM 连接。

环境变量

变量必填说明
AI_GATEWAY_API_KEY模型网关 API Key。可填 Makers Models 的 API Key,也可以是任意 OpenAI 兼容服务商的 Key。
AI_GATEWAY_BASE_URL网关 Base URL。Makers Models 请使用 https://ai-gateway.edgeone.link/v1
AI_GATEWAY_MODEL模型 ID。默认 @makers/deepseek-v4-flash(内置免费模型)。
WSA_API_KEY腾讯云 Web Search API Key。仅在使用联网搜索工具时需要。

模板遵循 OpenAI 兼容协议,可以指向 Makers Models,也可以指向任意 OpenAI 兼容的服务商。

如何获取 AI_GATEWAY_API_KEY

  1. 打开 Makers 控制台
  2. 登录并开通 Makers。
  3. 进入 Makers → Models → API Key,新建一个 Key。
  4. 把它粘到 AI_GATEWAY_API_KEY

内置的 @makers/deepseek-v4-flash 免费但有用量限制,适合验证;生产建议自行绑定付费厂商(BYOK)。

如何获取 WSA_API_KEY

WSA_API_KEY 仅在调用联网搜索工具时需要,参考 文档

本地开发

前置依赖:Node.js ≥ 18,已安装 EdgeOne CLI(npm i -g edgeone)。

npm install
cp .env.example .env       # 然后填入 AI_GATEWAY_API_KEY / AI_GATEWAY_BASE_URL
edgeone makers dev

本地观测面板:http://localhost:8080/agent-metrics

项目结构

node-starter/
├── agents/                          # Node/TS 后端(EdgeOne Makers Agent Functions,有状态)
│   ├── chat/index.ts               # POST /chat —— SSE 流式聊天 + 工具循环
│   ├── chat/stop.ts                # POST /chat/stop —— 中断当前 agent
│   ├── _model.ts                   # LLM 模型配置(私有)
│   ├── _logger.ts                  # 日志工具(私有)
│   ├── _session.ts                 # 基于 context.store 的会话适配(私有)
│   └── _tools.ts                   # EdgeOne 工具注册表(私有)
├── cloud-functions/                 # Node/TS 后端(EdgeOne Makers Node Functions,无状态)
│   ├── history/index.ts            # POST /history —— 对话历史
│   └── _logger.ts                  # 日志工具(私有)
├── src/                             # React + Vite + TypeScript 前端
│   ├── App.tsx                     # 主应用 + SSE 流生命周期管理
│   ├── api.ts                      # /chat、/chat/stop、/history 接口封装
│   └── components/                 # ChatWindow、ChatInput、CodeViewer、ToolIndicators 等
├── package.json
├── vite.config.ts
├── tsconfig.json
└── index.html

_ 开头的文件是私有模块,不会暴露为公开路由。

资源

License

MIT.