[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-VoltAgent--voltagent":3,"tool-VoltAgent--voltagent":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",140436,2,"2026-04-05T23:32:43",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":10,"last_commit_at":50,"category_tags":51,"status":17},4292,"Deep-Live-Cam","hacksider\u002FDeep-Live-Cam","Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具，用户仅需一张静态照片，即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点，让高质量的数字内容创作变得触手可及。\n\n这款工具不仅适合开发者和技术研究人员探索算法边界，更因其极简的操作逻辑（仅需三步：选脸、选摄像头、启动），广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换，还是制作趣味短视频和直播互动，Deep-Live-Cam 都能提供流畅的支持。\n\n其核心技术亮点在于强大的实时处理能力，支持口型遮罩（Mouth Mask）以保留使用者原始的嘴部动作，确保表情自然精准；同时具备“人脸映射”功能，可同时对画面中的多个主体应用不同面孔。此外，项目内置了严格的内容安全过滤机制，自动拦截涉及裸露、暴力等不当素材，并倡导用户在获得授权及明确标注的前提下合规使用，体现了技术发展与伦理责任的平衡。",88924,"2026-04-06T03:28:53",[14,15,13,52],"视频",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[14,35],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":73,"owner_avatar_url":74,"owner_bio":65,"owner_company":75,"owner_location":75,"owner_email":76,"owner_twitter":77,"owner_website":78,"owner_url":79,"languages":80,"stars":101,"forks":102,"last_commit_at":103,"license":104,"difficulty_score":32,"env_os":105,"env_gpu":106,"env_ram":106,"env_deps":107,"category_tags":118,"github_topics":120,"view_count":32,"oss_zip_url":75,"oss_zip_packed_at":75,"status":17,"created_at":141,"updated_at":142,"faqs":143,"releases":172},4359,"VoltAgent\u002Fvoltagent","voltagent","AI Agent Engineering Platform built on an Open Source TypeScript AI Agent Framework","VoltAgent 是一个端到端的 AI 智能体工程平台，旨在帮助开发者高效构建、部署并运维生产级的 AI 应用。它由两部分组成：基于 TypeScript 的开源核心框架，以及提供可视化监控与管理的 VoltOps 控制台（支持云端或自托管）。\n\n在开发复杂的 AI 智能体时，团队常面临记忆管理、多步工作流编排、多模型切换及系统可观测性不足等挑战。VoltAgent 通过模块化设计解决了这些痛点，让开发者既能拥有完全的代码控制权，又能获得企业级的运营视野。\n\n该平台特别适合熟悉 JavaScript\u002FTypeScript 的软件开发者和工程师，尤其是那些需要构建具备长期记忆、复杂工具调用或多智能体协作系统的技术团队。其独特亮点包括：声明式的工作流引擎，让自动化流程更清晰；内置对 Model Context Protocol (MCP) 的支持，无缝连接外部工具；灵活的 LLM 提供商适配，只需修改配置即可切换模型；以及可恢复的流式传输技术，确保用户在中断后能继续接收响应。此外，VoltOps 控制台还提供了从评估、提示词管理到安全护栏的一站式运维能力，让 AI 应用的落地更加稳健可靠","VoltAgent 是一个端到端的 AI 智能体工程平台，旨在帮助开发者高效构建、部署并运维生产级的 AI 应用。它由两部分组成：基于 TypeScript 的开源核心框架，以及提供可视化监控与管理的 VoltOps 控制台（支持云端或自托管）。\n\n在开发复杂的 AI 智能体时，团队常面临记忆管理、多步工作流编排、多模型切换及系统可观测性不足等挑战。VoltAgent 通过模块化设计解决了这些痛点，让开发者既能拥有完全的代码控制权，又能获得企业级的运营视野。\n\n该平台特别适合熟悉 JavaScript\u002FTypeScript 的软件开发者和工程师，尤其是那些需要构建具备长期记忆、复杂工具调用或多智能体协作系统的技术团队。其独特亮点包括：声明式的工作流引擎，让自动化流程更清晰；内置对 Model Context Protocol (MCP) 的支持，无缝连接外部工具；灵活的 LLM 提供商适配，只需修改配置即可切换模型；以及可恢复的流式传输技术，确保用户在中断后能继续接收响应。此外，VoltOps 控制台还提供了从评估、提示词管理到安全护栏的一站式运维能力，让 AI 应用的落地更加稳健可靠。","\u003Cdiv align=\"center\">\n\u003Ca href=\"https:\u002F\u002Fvoltagent.dev\u002F\">\n\u003Cimg width=\"1500\" height=\"276\" alt=\"voltagent\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_8e99924f5199.png\" \u002F>\n\u003C\u002Fa>\n\n\u003Ch3 align=\"center\">\nAI Agent Engineering Platform\n\u003C\u002Fh3>\n\n\u003Cdiv align=\"center\">\nEnglish | \u003Ca href=\"i18n\u002FREADME-cn-traditional.md\">繁體中文\u003C\u002Fa> | \u003Ca href=\"i18n\u002FREADME-cn-bsc.md\">简体中文\u003C\u002Fa> | \u003Ca href=\"i18n\u002FREADME-jp.md\">日本語\u003C\u002Fa> | \u003Ca href=\"i18n\u002FREADME-kr.md\">한국어\u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\u003Cbr\u002F>\n\n\u003Cdiv align=\"center\">\n    \u003Ca href=\"https:\u002F\u002Fvoltagent.dev\">Home Page\u003C\u002Fa> |\n    \u003Ca href=\"https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002F\">Documentation\u003C\u002Fa> |\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvoltagent\u002Fvoltagent\u002Ftree\u002Fmain\u002Fexamples\">Examples\u003C\u002Fa> \n\u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\n\u003Cbr\u002F>\n\n\u003Cdiv align=\"center\">\n\n[![GitHub issues](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002Fvoltagent\u002Fvoltagent)](https:\u002F\u002Fgithub.com\u002Fvoltagent\u002Fvoltagent\u002Fissues)\n[![GitHub pull requests](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues-pr\u002Fvoltagent\u002Fvoltagent)](https:\u002F\u002Fgithub.com\u002Fvoltagent\u002Fvoltagent\u002Fpulls)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n[![Contributor Covenant](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FContributor%20Covenant-2.0-4baaaa.svg)](CODE_OF_CONDUCT.md)\n[![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@voltagent\u002Fcore.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@voltagent\u002Fcore)\n\n[![npm downloads](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002F@voltagent\u002Fcore.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@voltagent\u002Fcore)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1361559153780195478.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https:\u002F\u002Fs.voltagent.dev\u002Fdiscord)\n[![Twitter Follow](https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Fvoltagent_dev?style=social)](https:\u002F\u002Fx.com\u002Fvoltagent_dev)\n\n\u003C\u002Fdiv>\n\n\u003Ch3 align=\"center\">\n⭐ Like what we're doing? Give us a star ⬆️\n\u003C\u002Fh3>\n\nVoltAgent is an end-to-end AI Agent Engineering Platform that consists of two main parts:\n\n- **[Open-Source TypeScript Framework](#core-framework)** – Memory, RAG, Guardrails, Tools, MCP, Voice, Workflow, and more.\n- **[VoltOps Console](#voltops-console)** `Cloud` `Self-Hosted` – Observability, Automation, Deployment, Evals, Guardrails, Prompts, and more.\n\nBuild agents with full code control and ship them with production-ready visibility and operations.\n\n\u003Ch2 id=\"core-framework\">Core TypeScript Framework\u003C\u002Fh2>\n\nWith the open-source framework, you can build intelligent agents with memory, tools, and multi-step workflows while connecting to any AI provider. Create sophisticated multi-agent systems where specialized agents work together under supervisor coordination.\n\n- **[Core Runtime](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fagents\u002Foverview\u002F) (`@voltagent\u002Fcore`)**: Define agents with typed roles, tools, memory, and model providers in one place so everything stays organized.\n- **[Workflow Engine](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fworkflows\u002Foverview\u002F)**: Describe multi-step automations declaratively rather than stitching together custom control flow.\n- **[Supervisors & Sub-Agents](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fagents\u002Fsub-agents\u002F)**: Run teams of specialized agents under a supervisor runtime that routes tasks and keeps them in sync.\n- **[Tool Registry](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fagents\u002Ftools\u002F) & [MCP](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fagents\u002Fmcp\u002F)**: Ship Zod-typed tools with lifecycle hooks and cancellation, and connect to [Model Context Protocol](https:\u002F\u002Fmodelcontextprotocol.io\u002F) servers without extra glue code.\n- **[LLM Compatibility](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fgetting-started\u002Fproviders-models\u002F)**: Swap between OpenAI, Anthropic, Google, or other providers by changing config, not rewriting agent logic.\n- **[Memory](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fagents\u002Fmemory\u002Foverview\u002F)**: Attach durable memory adapters so agents remember important context across runs.\n- **[Resumable Streaming](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fagents\u002Fresumable-streaming\u002F)**: Let clients reconnect to in-flight streams after refresh and continue receiving the same response.\n- **[Retrieval & RAG](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Frag\u002Foverview\u002F)**: Plug in retriever agents to pull facts from your data sources and ground responses (RAG) before the model answers.\n- **[VoltAgent Knowledge Base](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Frag\u002Fvoltagent\u002F)**: Use the managed RAG service for document ingestion, chunking, embeddings, and search.\n- **[Voice](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fagents\u002Fvoice\u002F)**: Add text-to-speech and speech-to-text capabilities with OpenAI, ElevenLabs, or custom voice providers.\n- **[Guardrails](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fguardrails\u002Foverview\u002F)**: Intercept and validate agent input or output at runtime to enforce content policies and safety rules.\n- **[Evals](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fevals\u002Foverview\u002F)**: Run agent eval suites alongside your workflows to measure and improve agent behavior.\n\n#### MCP Server (@voltagent\u002Fmcp-docs-server)\n\nYou can use the MCP server `@voltagent\u002Fmcp-docs-server` to teach your LLM how to use VoltAgent for AI-powered coding assistants like Claude, Cursor, or Windsurf. This allows AI assistants to access VoltAgent documentation, examples, and changelogs directly while you code.\n\n📖 [How to setup MCP docs server](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fgetting-started\u002Fmcp-docs-server\u002F)\n\n## ⚡ Quick Start\n\nCreate a new VoltAgent project in seconds using the `create-voltagent-app` CLI tool:\n\n```bash\nnpm create voltagent-app@latest\n```\n\nThis command guides you through setup.\n\nYou'll see the starter code in `src\u002Findex.ts`, which now registers both an agent and a comprehensive workflow example found in `src\u002Fworkflows\u002Findex.ts`.\n\n```typescript\nimport { VoltAgent, Agent, Memory } from \"@voltagent\u002Fcore\";\nimport { LibSQLMemoryAdapter } from \"@voltagent\u002Flibsql\";\nimport { createPinoLogger } from \"@voltagent\u002Flogger\";\nimport { honoServer } from \"@voltagent\u002Fserver-hono\";\nimport { openai } from \"@ai-sdk\u002Fopenai\";\nimport { expenseApprovalWorkflow } from \".\u002Fworkflows\";\nimport { weatherTool } from \".\u002Ftools\";\n\n\u002F\u002F Create a logger instance\nconst logger = createPinoLogger({\n  name: \"my-agent-app\",\n  level: \"info\",\n});\n\n\u002F\u002F Optional persistent memory (remove to use default in-memory)\nconst memory = new Memory({\n  storage: new LibSQLMemoryAdapter({ url: \"file:.\u002F.voltagent\u002Fmemory.db\" }),\n});\n\n\u002F\u002F A simple, general-purpose agent for the project.\nconst agent = new Agent({\n  name: \"my-agent\",\n  instructions: \"A helpful assistant that can check weather and help with various tasks\",\n  model: openai(\"gpt-4o-mini\"),\n  tools: [weatherTool],\n  memory,\n});\n\n\u002F\u002F Initialize VoltAgent with your agent(s) and workflow(s)\nnew VoltAgent({\n  agents: {\n    agent,\n  },\n  workflows: {\n    expenseApprovalWorkflow,\n  },\n  server: honoServer(),\n  logger,\n});\n```\n\nAfterwards, navigate to your project and run:\n\n```bash\nnpm run dev\n```\n\nWhen you run the dev command, tsx will compile and run your code. You should see the VoltAgent server startup message in your terminal:\n\n```\n══════════════════════════════════════════════════\nVOLTAGENT SERVER STARTED SUCCESSFULLY\n══════════════════════════════════════════════════\n✓ HTTP Server: http:\u002F\u002Flocalhost:3141\n\nTest your agents with VoltOps Console: https:\u002F\u002Fconsole.voltagent.dev\n══════════════════════════════════════════════════\n```\n\nYour agent is now running! To interact with it:\n\n1. Open the Console: Click the [VoltOps LLM Observability Platform](https:\u002F\u002Fconsole.voltagent.dev) link in your terminal output (or copy-paste it into your browser).\n2. Find Your Agent: On the VoltOps LLM Observability Platform page, you should see your agent listed (e.g., \"my-agent\").\n3. Open Agent Details: Click on your agent's name.\n4. Start Chatting: On the agent detail page, click the chat icon in the bottom right corner to open the chat window.\n5. Send a Message: Type a message like \"Hello\" and press Enter.\n\n[![VoltAgent Demo](thumbnail.png)](https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F26340c6a-be34-48a5-9006-e822bf6098a7)\n\n### Running Your First Workflow\n\nYour new project also includes a powerful workflow engine.\n\nThe expense approval workflow demonstrates human-in-the-loop automation with suspend\u002Fresume capabilities:\n\n```typescript\nimport { createWorkflowChain } from \"@voltagent\u002Fcore\";\nimport { z } from \"zod\";\n\nexport const expenseApprovalWorkflow = createWorkflowChain({\n  id: \"expense-approval\",\n  name: \"Expense Approval Workflow\",\n  purpose: \"Process expense reports with manager approval for high amounts\",\n\n  input: z.object({\n    employeeId: z.string(),\n    amount: z.number(),\n    category: z.string(),\n    description: z.string(),\n  }),\n  result: z.object({\n    status: z.enum([\"approved\", \"rejected\"]),\n    approvedBy: z.string(),\n    finalAmount: z.number(),\n  }),\n})\n  \u002F\u002F Step 1: Validate expense and check if approval needed\n  .andThen({\n    id: \"check-approval-needed\",\n    resumeSchema: z.object({\n      approved: z.boolean(),\n      managerId: z.string(),\n      comments: z.string().optional(),\n      adjustedAmount: z.number().optional(),\n    }),\n    execute: async ({ data, suspend, resumeData }) => {\n      \u002F\u002F If we're resuming with manager's decision\n      if (resumeData) {\n        return {\n          ...data,\n          approved: resumeData.approved,\n          approvedBy: resumeData.managerId,\n          finalAmount: resumeData.adjustedAmount || data.amount,\n        };\n      }\n\n      \u002F\u002F Check if manager approval is needed (expenses over $500)\n      if (data.amount > 500) {\n        await suspend(\"Manager approval required\", {\n          employeeId: data.employeeId,\n          requestedAmount: data.amount,\n        });\n      }\n\n      \u002F\u002F Auto-approve small expenses\n      return {\n        ...data,\n        approved: true,\n        approvedBy: \"system\",\n        finalAmount: data.amount,\n      };\n    },\n  })\n  \u002F\u002F Step 2: Process the final decision\n  .andThen({\n    id: \"process-decision\",\n    execute: async ({ data }) => {\n      return {\n        status: data.approved ? \"approved\" : \"rejected\",\n        approvedBy: data.approvedBy,\n        finalAmount: data.finalAmount,\n      };\n    },\n  });\n```\n\nYou can test the pre-built `expenseApprovalWorkflow` directly from the VoltOps console:\n\n[![expense-approval](thumbnail.png)](https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F3d3ea67b-4ab5-4dc0-932d-cedd92894b18)\n\n1.  **Go to the Workflows Page:** After starting your server, go directly to the [Workflows page](https:\u002F\u002Fconsole.voltagent.dev\u002Fworkflows).\n2.  **Select Your Project:** Use the project selector to choose your project (e.g., \"my-agent-app\").\n3.  **Find and Run:** You will see **\"Expense Approval Workflow\"** listed. Click it, then click the **\"Run\"** button.\n4.  **Provide Input:** The workflow expects a JSON object with expense details. Try a small expense for automatic approval:\n    ```json\n    {\n      \"employeeId\": \"EMP-123\",\n      \"amount\": 250,\n      \"category\": \"office-supplies\",\n      \"description\": \"New laptop mouse and keyboard\"\n    }\n    ```\n5.  **View the Results:** After execution, you can inspect the detailed logs for each step and see the final output directly in the console.\n\n## Examples\n\nFor more examples, visit our [examples repository](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Ftree\u002Fmain\u002Fexamples).\n\n- **[Airtable Agent](https:\u002F\u002Fvoltagent.dev\u002Fexamples\u002Fguides\u002Fairtable-agent)** - React to new records and write updates back into Airtable with VoltOps actions.\n- **[Slack Agent](https:\u002F\u002Fvoltagent.dev\u002Fexamples\u002Fguides\u002Fslack-agent)** - Respond to channel messages and reply via VoltOps Slack actions.\n- **[ChatGPT App With VoltAgent](https:\u002F\u002Fvoltagent.dev\u002Fexamples\u002Fagents\u002Fchatgpt-app)** - Deploy VoltAgent over MCP and connect to ChatGPT Apps.\n- **[WhatsApp Order Agent](https:\u002F\u002Fvoltagent.dev\u002Fexamples\u002Fagents\u002Fwhatsapp-ai-agent)** - Build a WhatsApp chatbot that handles food orders through natural conversation. ([Source](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Ftree\u002Fmain\u002Fexamples\u002Fwith-whatsapp))\n- **[YouTube to Blog Agent](https:\u002F\u002Fvoltagent.dev\u002Fexamples\u002Fagents\u002Fyoutube-blog-agent)** - Convert YouTube videos into Markdown blog posts using a supervisor agent with MCP tools. ([Source](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Ftree\u002Fmain\u002Fexamples\u002Fwith-youtube-to-blog))\n- **[AI Ads Generator Agent](https:\u002F\u002Fvoltagent.dev\u002Fexamples\u002Fagents\u002Fai-instagram-ad-agent)** - Generate Instagram ads using BrowserBase Stagehand and Google Gemini AI. ([Source](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Ftree\u002Fmain\u002Fexamples\u002Fwith-ad-creator))\n- **[AI Recipe Generator Agent](https:\u002F\u002Fvoltagent.dev\u002Fexamples\u002Fagents\u002Frecipe-generator)** - Create personalized cooking suggestions based on ingredients and preferences. ([Source](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Ftree\u002Fmain\u002Fexamples\u002Fwith-recipe-generator) | [Video](https:\u002F\u002Fyoutu.be\u002FKjV1c6AhlfY))\n- **[AI Research Assistant Agent](https:\u002F\u002Fvoltagent.dev\u002Fexamples\u002Fagents\u002Fresearch-assistant)** - Multi-agent research workflow for generating comprehensive reports. ([Source](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Ftree\u002Fmain\u002Fexamples\u002Fwith-research-assistant) | [Video](https:\u002F\u002Fyoutu.be\u002Fj6KAUaoZMy4))\n\n\u003Ch2 id=\"voltops-console\">VoltOps Console: LLM Observability - Automation - Deployment\u003C\u002Fh2>\n\nVoltOps Console is the platform side of VoltAgent, providing observability, automation, and deployment so you can monitor and debug agents in production with real-time execution traces, performance metrics, and visual dashboards.\n\n🎬 [Try Live Demo](https:\u002F\u002Fconsole.voltagent.dev\u002Fdemo)\n\n📖 [VoltOps Documentation](https:\u002F\u002Fvoltagent.dev\u002Fvoltops-llm-observability-docs\u002F)\n\n🚀 [VoltOps Platform](https:\u002F\u002Fvoltagent.dev\u002Fvoltops-llm-observability\u002F)\n\n### Observability & Tracing\n\nDeep dive into agent execution flow with detailed traces and performance metrics.\n\n\u003Cimg alt=\"1\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_8fb742f7cfa1.png\" \u002F>\n\n### Dashboard\n\nGet a comprehensive overview of all your agents, workflows, and system performance metrics.\n\n\u003Cimg alt=\"dashboar\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_1d39c8e3e258.png\" \u002F>\n\n### Logs\n\nTrack detailed execution logs for every agent interaction and workflow step.\n\n![VoltOps Logs](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_d6654e007526.png)\n\n### Memory Management\n\nInspect and manage agent memory, context, and conversation history.\n\n![VoltOps Memory Overview](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_65ba00b012e6.png)\n\n### Traces\n\nAnalyze complete execution traces to understand agent behavior and optimize performance.\n\n![VoltOps Traces](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_5b98baee6540.png)\n\n### Prompt Builder\n\nDesign, test, and refine prompts directly in the console.\n\n\u003Cimg  alt=\"prompts\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_002f66742922.png\" \u002F>\n\n### Deployment\n\nDeploy your agents to production with one-click GitHub integration and managed infrastructure.\n\n\u003Cimg alt=\"deployment\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_0560f8db1530.png\" \u002F>\n\n📖 [VoltOps Deploy Documentation](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fdeployment\u002Fvoltops\u002F)\n\n### Triggers & Actions\n\nAutomate agent workflows with webhooks, schedules, and custom triggers to react to external events.\n\n\u003Cimg width=\"1277\"  alt=\"triggers\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_adfb0117ab39.png\" \u002F>\n\n### Monitoring\n\nMonitor agent health, performance metrics, and resource usage across your entire system.\n\n\u003Cimg  alt=\"monitoring\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_de3ceab5cd8b.png\" \u002F>\n\n### Guardrails\n\nSet up safety boundaries and content filters to ensure agents operate within defined parameters.\n\n\u003Cimg  alt=\"guardrails\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_82566fb5117d.png\" \u002F>\n\n### Evals\n\nRun evaluation suites to test agent behavior, accuracy, and performance against benchmarks.\n\n\u003Cimg  alt=\"evals\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_59c244220fc6.png\" \u002F>\n\n### RAG (Knowledge Base)\n\nConnect your agents to knowledge sources with built-in retrieval-augmented generation capabilities.\n\n\u003Cimg  alt=\"rag\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_abf05a91fb8c.png\" \u002F>\n\n## Learning VoltAgent\n\n- **[Start with interactive tutorial](https:\u002F\u002Fvoltagent.dev\u002Ftutorial\u002Fintroduction\u002F)** to learn the fundamentals building AI Agents.\n- **[Documentation](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002F)**: Dive into guides, concepts, and tutorials.\n- **[Examples](https:\u002F\u002Fgithub.com\u002Fvoltagent\u002Fvoltagent\u002Ftree\u002Fmain\u002Fexamples)**: Explore practical implementations.\n- **[Blog](https:\u002F\u002Fvoltagent.dev\u002Fblog\u002F)**: Read more about technical insights, and best practices.\n\n## Contribution\n\nWe welcome contributions! Please refer to the contribution guidelines (link needed if available). Join our [Discord](https:\u002F\u002Fs.voltagent.dev\u002Fdiscord) server for questions and discussions.\n\n## Contributor ♥️ Thanks\n\nBig thanks to everyone who's been part of the VoltAgent journey, whether you've built a plugin, opened an issue, dropped a pull request, or just helped someone out on Discord or GitHub Discussions.\n\nVoltAgent is a community effort, and it keeps getting better because of people like you.\n\n![Contributors](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_54ec8863a673.png)\n\n## License\n\nLicensed under the MIT License, Copyright © 2026-present VoltAgent.\n","\u003Cdiv align=\"center\">\n\u003Ca href=\"https:\u002F\u002Fvoltagent.dev\u002F\">\n\u003Cimg width=\"1500\" height=\"276\" alt=\"voltagent\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_8e99924f5199.png\" \u002F>\n\u003C\u002Fa>\n\n\u003Ch3 align=\"center\">\nAI智能体工程平台\n\u003C\u002Fh3>\n\n\u003Cdiv align=\"center\">\nEnglish | \u003Ca href=\"i18n\u002FREADME-cn-traditional.md\">繁體中文\u003C\u002Fa> | \u003Ca href=\"i18n\u002FREADME-cn-bsc.md\">简体中文\u003C\u002Fa> | \u003Ca href=\"i18n\u002FREADME-jp.md\">日本語\u003C\u002Fa> | \u003Ca href=\"i18n\u002FREADME-kr.md\">한국어\u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\u003Cbr\u002F>\n\n\u003Cdiv align=\"center\">\n    \u003Ca href=\"https:\u002F\u002Fvoltagent.dev\">首页\u003C\u002Fa> |\n    \u003Ca href=\"https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002F\">文档\u003C\u002Fa> |\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvoltagent\u002Fvoltagent\u002Ftree\u002Fmain\u002Fexamples\">示例\u003C\u002Fa> \n\u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\n\u003Cbr\u002F>\n\n\u003Cdiv align=\"center\">\n\n[![GitHub issues](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002Fvoltagent\u002Fvoltagent)](https:\u002F\u002Fgithub.com\u002Fvoltagent\u002Fvoltagent\u002Fissues)\n[![GitHub pull requests](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues-pr\u002Fvoltagent\u002Fvoltagent)](https:\u002F\u002Fgithub.com\u002Fvoltagent\u002Fvoltagent\u002Fpulls)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n[![Contributor Covenant](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FContributor%20Covenant-2.0-4baaaa.svg)](CODE_OF_CONDUCT.md)\n[![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@voltagent\u002Fcore.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@voltagent\u002Fcore)\n\n[![npm downloads](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002F@voltagent\u002Fcore.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@voltagent\u002Fcore)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1361559153780195478.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https:\u002F\u002Fs.voltagent.dev\u002Fdiscord)\n[![Twitter Follow](https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Fvoltagent_dev?style=social)](https:\u002F\u002Fx.com\u002Fvoltagent_dev)\n\n\u003C\u002Fdiv>\n\n\u003Ch3 align=\"center\">\n⭐ 喜欢我们的工作吗？请给我们点个赞吧 ⬆️\n\u003C\u002Fh3>\n\nVoltAgent 是一个端到端的 AI 智能体工程平台，主要由两部分组成：\n\n- **[开源 TypeScript 框架](#core-framework)**：内存、RAG、护栏、工具、MCP、语音、工作流等。\n- **[VoltOps 控制台](#voltops-console)** `云端` `自托管`：可观测性、自动化、部署、评估、护栏、提示词等。\n\n通过该平台，您可以完全掌控代码来构建智能体，并以生产就绪的方式进行部署和运维。\n\n\u003Ch2 id=\"core-framework\">核心 TypeScript 框架\u003C\u002Fh2>\n\n借助这个开源框架，您可以在连接任何 AI 提供商的同时，构建具备记忆、工具和多步工作流的智能体。您还可以创建复杂的多智能体系统，让各个专业智能体在主管的协调下协同工作。\n\n- **[核心运行时](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fagents\u002Foverview\u002F) (`@voltagent\u002Fcore`)**：在一个地方定义具有类型化角色、工具、记忆和模型提供商的智能体，使一切井然有序。\n- **[工作流引擎](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fworkflows\u002Foverview\u002F)**：以声明式方式描述多步骤自动化流程，而无需手动拼接自定义控制流。\n- **[主管与子智能体](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fagents\u002Fsub-agents\u002F)**：在主管运行时下运行一组专业智能体，由主管负责任务分配并保持同步。\n- **[工具注册表](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fagents\u002Ftools\u002F) 和 [MCP](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fagents\u002Fmcp\u002F)**：交付带有生命周期钩子和取消功能的 Zod 类型化工具，并可无需额外胶水代码即可连接到 [Model Context Protocol](https:\u002F\u002Fmodelcontextprotocol.io\u002F) 服务器。\n- **[LLM 兼容性](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fgetting-started\u002Fproviders-models\u002F)**：只需更改配置即可在 OpenAI、Anthropic、Google 等提供商之间切换，而无需重写智能体逻辑。\n- **[记忆](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fagents\u002Fmemory\u002Foverview\u002F)**：附加持久化的记忆适配器，使智能体能够在多次运行中记住重要上下文。\n- **[可恢复流式传输](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fagents\u002Fresumable-streaming\u002F)**：允许客户端在刷新后重新连接到正在进行的流，并继续接收相同的响应。\n- **[检索与 RAG](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Frag\u002Foverview\u002F)**：接入检索智能体，从您的数据源中提取事实，并在模型回答之前对响应进行接地处理（RAG）。\n- **[VoltAgent 知识库](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Frag\u002Fvoltagent\u002F)**：使用托管的 RAG 服务进行文档摄取、分块、嵌入和搜索。\n- **[语音](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fagents\u002Fvoice\u002F)**：通过 OpenAI、ElevenLabs 或自定义语音提供商为智能体添加文本转语音和语音转文本功能。\n- **[护栏](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fguardrails\u002Foverview\u002F)**：在运行时拦截并验证智能体的输入或输出，以执行内容政策和安全规则。\n- **[评估](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fevals\u002Foverview\u002F)**：在工作流中同时运行智能体评估套件，以衡量和改进智能体的行为。\n\n#### MCP 服务器 (@voltagent\u002Fmcp-docs-server)\n\n您可以使用 MCP 服务器 `@voltagent\u002Fmcp-docs-server` 来教会您的 LLM 如何使用 VoltAgent 构建 AI 驱动的编码助手，例如 Claude、Cursor 或 Windsurf。这样，AI 助手就可以在您编写代码时直接访问 VoltAgent 的文档、示例和变更日志。\n\n📖 [如何设置 MCP 文档服务器](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fgetting-started\u002Fmcp-docs-server\u002F)\n\n## ⚡ 快速入门\n\n使用 `create-voltagent-app` CLI 工具，几秒钟内即可创建一个新的 VoltAgent 项目：\n\n```bash\nnpm create voltagent-app@latest\n```\n\n该命令会引导您完成设置。\n\n您将在 `src\u002Findex.ts` 中看到启动代码，其中现在注册了一个代理以及位于 `src\u002Fworkflows\u002Findex.ts` 中的完整工作流示例。\n\n```typescript\nimport { VoltAgent, Agent, Memory } from \"@voltagent\u002Fcore\";\nimport { LibSQLMemoryAdapter } from \"@voltagent\u002Flibsql\";\nimport { createPinoLogger } from \"@voltagent\u002Flogger\";\nimport { honoServer } from \"@voltagent\u002Fserver-hono\";\nimport { openai } from \"@ai-sdk\u002Fopenai\";\nimport { expenseApprovalWorkflow } from \".\u002Fworkflows\";\nimport { weatherTool } from \".\u002Ftools\";\n\n\u002F\u002F 创建日志实例\nconst logger = createPinoLogger({\n  name: \"my-agent-app\",\n  level: \"info\",\n});\n\n\u002F\u002F 可选的持久化内存（移除以使用默认的内存中存储）\nconst memory = new Memory({\n  storage: new LibSQLMemoryAdapter({ url: \"file:.\u002F.voltagent\u002Fmemory.db\" }),\n});\n\n\u002F\u002F 项目中的一个简单通用代理。\nconst agent = new Agent({\n  name: \"my-agent\",\n  instructions: \"一个可以帮助查询天气并处理各种任务的助手\",\n  model: openai(\"gpt-4o-mini\"),\n  tools: [weatherTool],\n  memory,\n});\n\n\u002F\u002F 使用您的代理和工作流初始化 VoltAgent\nnew VoltAgent({\n  agents: {\n    agent,\n  },\n  workflows: {\n    expenseApprovalWorkflow,\n  },\n  server: honoServer(),\n  logger,\n});\n```\n\n之后，导航到您的项目并运行：\n\n```bash\nnpm run dev\n```\n\n运行开发命令时，`tsx` 将编译并运行您的代码。您应该会在终端中看到 VoltAgent 服务器启动消息：\n\n```\n══════════════════════════════════════════════════\nVOLTAGENT 服务器已成功启动\n══════════════════════════════════════════════════\n✓ HTTP 服务器：http:\u002F\u002Flocalhost:3141\n\n使用 VoltOps 控制台测试您的代理：https:\u002F\u002Fconsole.voltagent.dev\n══════════════════════════════════════════════════\n```\n\n您的代理现已运行！要与之交互：\n\n1. 打开控制台：点击终端输出中的 [VoltOps LLM 可观测性平台](https:\u002F\u002Fconsole.voltagent.dev) 链接（或将其复制粘贴到浏览器中）。\n2. 查找您的代理：在 VoltOps LLM 可观测性平台页面上，您应能看到您的代理（例如“my-agent”）。\n3. 打开代理详情：点击您的代理名称。\n4. 开始聊天：在代理详情页面上，点击右下角的聊天图标以打开聊天窗口。\n5. 发送消息：输入类似“Hello”的消息并按 Enter 键。\n\n[![VoltAgent 演示](thumbnail.png)](https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F26340c6a-be34-48a5-9006-e822bf6098a7)\n\n### 运行您的第一个工作流\n\n您的新项目还包含一个强大的工作流引擎。\n\n费用审批工作流展示了带暂停\u002F恢复功能的人工介入自动化流程：\n\n```typescript\nimport { createWorkflowChain } from \"@voltagent\u002Fcore\";\nimport { z } from \"zod\";\n\nexport const expenseApprovalWorkflow = createWorkflowChain({\n  id: \"expense-approval\",\n  name: \"费用审批工作流\",\n  purpose: \"处理需要经理批准的大额费用报销单\",\n\n  input: z.object({\n    employeeId: z.string(),\n    amount: z.number(),\n    category: z.string(),\n    description: z.string(),\n  }),\n  result: z.object({\n    status: z.enum([\"approved\", \"rejected\"]),\n    approvedBy: z.string(),\n    finalAmount: z.number(),\n  }),\n})\n  \u002F\u002F 步骤1：验证费用并检查是否需要审批\n  .andThen({\n    id: \"check-approval-needed\",\n    resumeSchema: z.object({\n      approved: z.boolean(),\n      managerId: z.string(),\n      comments: z.string().optional(),\n      adjustedAmount: z.number().optional(),\n    }),\n    execute: async ({ data, suspend, resumeData }) => {\n      \u002F\u002F 如果我们是从经理的决定处恢复\n      if (resumeData) {\n        return {\n          ...data,\n          approved: resumeData.approved,\n          approvedBy: resumeData.managerId,\n          finalAmount: resumeData.adjustedAmount || data.amount,\n        };\n      }\n\n      \u002F\u002F 检查是否需要经理批准（超过500美元的费用）\n      if (data.amount > 500) {\n        await suspend(\"需要经理批准\", {\n          employeeId: data.employeeId,\n          requestedAmount: data.amount,\n        });\n      }\n\n      \u002F\u002F 自动批准小额费用\n      return {\n        ...data,\n        approved: true,\n        approvedBy: \"system\",\n        finalAmount: data.amount,\n      };\n    },\n  })\n  \u002F\u002F 步骤2：处理最终决定\n  .andThen({\n    id: \"process-decision\",\n    execute: async ({ data }) => {\n      return {\n        status: data.approved ? \"approved\" : \"rejected\",\n        approvedBy: data.approvedBy,\n        finalAmount: data.finalAmount,\n      };\n    },\n  });\n```\n\n您可以直接从 VoltOps 控制台测试预建的 `expenseApprovalWorkflow`：\n\n[![expense-approval](thumbnail.png)](https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F3d3ea67b-4ab5-4dc0-932d-cedd92894b18)\n\n1. **前往工作流页面**：启动服务器后，直接访问 [工作流页面](https:\u002F\u002Fconsole.voltagent.dev\u002Fworkflows)。\n2. **选择您的项目**：使用项目选择器选择您的项目（例如“my-agent-app”）。\n3. **查找并运行**：您将看到列出的“费用审批工作流”。点击它，然后点击“运行”按钮。\n4. **提供输入**：工作流期望一个包含费用详情的 JSON 对象。尝试一笔小额费用以实现自动批准：\n    ```json\n    {\n      \"employeeId\": \"EMP-123\",\n      \"amount\": 250,\n      \"category\": \"office-supplies\",\n      \"description\": \"新的笔记本电脑鼠标和键盘\"\n    }\n    ```\n5. **查看结果**：执行完成后，您可以检查每一步的详细日志，并在控制台中直接查看最终输出。\n\n## 示例\n\n更多示例，请访问我们的 [示例仓库](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Ftree\u002Fmain\u002Fexamples)。\n\n- **[Airtable 代理](https:\u002F\u002Fvoltagent.dev\u002Fexamples\u002Fguides\u002Fairtable-agent)** - 使用 VoltOps 操作对新记录作出反应，并将更新写回 Airtable。\n- **[Slack 代理](https:\u002F\u002Fvoltagent.dev\u002Fexamples\u002Fguides\u002Fslack-agent)** - 响应频道消息，并通过 VoltOps Slack 操作进行回复。\n- **[带有 VoltAgent 的 ChatGPT 应用](https:\u002F\u002Fvoltagent.dev\u002Fexamples\u002Fagents\u002Fchatgpt-app)** - 在 MCP 上部署 VoltAgent，并连接到 ChatGPT 应用。\n- **[WhatsApp 订单代理](https:\u002F\u002Fvoltagent.dev\u002Fexamples\u002Fagents\u002Fwhatsapp-ai-agent)** - 构建一个 WhatsApp 聊天机器人，通过自然对话处理食物订单。([源代码](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Ftree\u002Fmain\u002Fexamples\u002Fwith-whatsapp))\n- **[YouTube 到博客代理](https:\u002F\u002Fvoltagent.dev\u002Fexamples\u002Fagents\u002Fyoutube-blog-agent)** - 使用带有 MCP 工具的监督代理，将 YouTube 视频转换为 Markdown 博客文章。([源代码](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Ftree\u002Fmain\u002Fexamples\u002Fwith-youtube-to-blog))\n- **[AI 广告生成器代理](https:\u002F\u002Fvoltagent.dev\u002Fexamples\u002Fagents\u002Fai-instagram-ad-agent)** - 使用 BrowserBase Stagehand 和 Google Gemini AI 生成 Instagram 广告。([源代码](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Ftree\u002Fmain\u002Fexamples\u002Fwith-ad-creator))\n- **[AI 食谱生成器代理](https:\u002F\u002Fvoltagent.dev\u002Fexamples\u002Fagents\u002Frecipe-generator)** - 根据食材和偏好创建个性化烹饪建议。([源代码](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Ftree\u002Fmain\u002Fexamples\u002Fwith-recipe-generator) | [视频](https:\u002F\u002Fyoutu.be\u002FKjV1c6AhlfY))\n- **[AI 研究助理代理](https:\u002F\u002Fvoltagent.dev\u002Fexamples\u002Fagents\u002Fresearch-assistant)** - 多代理研究工作流，用于生成综合报告。([源代码](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Ftree\u002Fmain\u002Fexamples\u002Fwith-research-assistant) | [视频](https:\u002F\u002Fyoutu.be\u002Fj6KAUaoZMy4))\n\n\u003Ch2 id=\"voltops-console\">VoltOps 控制台：LLM 可观测性、自动化与部署\u003C\u002Fh2>\n\nVoltOps 控制台是 VoltAgent 的平台端，提供可观测性、自动化和部署功能，使您能够通过实时执行跟踪、性能指标和可视化仪表板，在生产环境中监控和调试代理。\n\n🎬 [试用在线演示](https:\u002F\u002Fconsole.voltagent.dev\u002Fdemo)\n\n📖 [VoltOps 文档](https:\u002F\u002Fvoltagent.dev\u002Fvoltops-llm-observability-docs\u002F)\n\n🚀 [VoltOps 平台](https:\u002F\u002Fvoltagent.dev\u002Fvoltops-llm-observability\u002F)\n\n### 可观测性与追踪\n\n通过详细的追踪记录和性能指标，深入洞察代理的执行流程。\n\n\u003Cimg alt=\"1\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_8fb742f7cfa1.png\" \u002F>\n\n### 仪表板\n\n全面了解所有代理、工作流以及系统性能指标。\n\n\u003Cimg alt=\"dashboar\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_1d39c8e3e258.png\" \u002F>\n\n### 日志\n\n跟踪每次代理交互和工作流步骤的详细执行日志。\n\n![VoltOps 日志](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_d6654e007526.png)\n\n### 内存管理\n\n检查和管理代理的内存、上下文和对话历史。\n\n![VoltOps 内存概览](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_65ba00b012e6.png)\n\n### 追踪记录\n\n分析完整的执行追踪记录，以理解代理行为并优化性能。\n\n![VoltOps 追踪记录](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_5b98baee6540.png)\n\n### 提示词构建器\n\n直接在控制台中设计、测试和优化提示词。\n\n\u003Cimg  alt=\"prompts\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_002f66742922.png\" \u002F>\n\n### 部署\n\n通过一键式 GitHub 集成和托管基础设施，将您的代理部署到生产环境。\n\n\u003Cimg alt=\"deployment\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_0560f8db1530.png\" \u002F>\n\n📖 [VoltOps 部署文档](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002Fdeployment\u002Fvoltops\u002F)\n\n### 触发器与操作\n\n使用 Webhook、计划任务和自定义触发器自动执行代理工作流，以响应外部事件。\n\n\u003Cimg width=\"1277\"  alt=\"triggers\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_adfb0117ab39.png\" \u002F>\n\n### 监控\n\n监控整个系统的代理健康状况、性能指标和资源使用情况。\n\n\u003Cimg  alt=\"monitoring\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_de3ceab5cd8b.png\" \u002F>\n\n### 安全护栏\n\n设置安全边界和内容过滤器，以确保代理在定义的参数范围内运行。\n\n\u003Cimg  alt=\"guardrails\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_82566fb5117d.png\" \u002F>\n\n### 评估\n\n运行评估套件，以测试代理的行为、准确性和相对于基准的表现。\n\n\u003Cimg  alt=\"evals\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_59c244220fc6.png\" \u002F>\n\n### RAG（知识库）\n\n通过内置的检索增强生成能力，将您的代理连接到知识源。\n\n\u003Cimg  alt=\"rag\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_abf05a91fb8c.png\" \u002F>\n\n## 学习 VoltAgent\n\n- **[从交互式教程开始](https:\u002F\u002Fvoltagent.dev\u002Ftutorial\u002Fintroduction\u002F)**，学习构建 AI 代理的基础知识。\n- **[文档](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002F)**：深入了解指南、概念和教程。\n- **[示例](https:\u002F\u002Fgithub.com\u002Fvoltagent\u002Fvoltagent\u002Ftree\u002Fmain\u002Fexamples)**：探索实际应用。\n- **[博客](https:\u002F\u002Fvoltagent.dev\u002Fblog\u002F)**：阅读更多技术见解和最佳实践。\n\n## 贡献\n\n我们欢迎贡献！请参阅贡献指南（如有链接需补充）。如有任何问题或讨论，请加入我们的 [Discord](https:\u002F\u002Fs.voltagent.dev\u002Fdiscord) 服务器。\n\n## 致谢 ♥️ 贡献者\n\n非常感谢所有参与 VoltAgent 发展历程的人，无论您是开发了插件、提交了问题、拉取请求，还是仅仅在 Discord 或 GitHub Discussions 上帮助过他人。\n\nVoltAgent 是一项社区协作项目，正是因为有像您们这样的人，它才能不断进步。\n\n![贡献者](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_readme_54ec8863a673.png)\n\n## 许可证\n\n根据 MIT 许可证授权，版权 © 2026 年至今 VoltAgent。","# VoltAgent 快速上手指南\n\nVoltAgent 是一个端到端的 AI Agent 工程平台，包含开源 TypeScript 框架和 VoltOps 控制台。它支持记忆管理、RAG、工作流编排、多智能体协作等功能，帮助开发者构建可生产落地的 AI 应用。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **Node.js**: 版本 18.x 或更高（推荐 20.x+）。\n*   **包管理器**: npm, yarn, pnpm 或 bun。\n*   **代码编辑器**: 推荐 VS Code。\n*   **网络环境**: 能够访问 npm  registry 和外部 AI 模型提供商（如 OpenAI）。\n\n> **提示**：国内开发者若遇到 npm 安装缓慢，可临时切换至国内镜像源：\n> ```bash\n> npm config set registry https:\u002F\u002Fregistry.npmmirror.com\n> ```\n\n## 安装步骤\n\n使用官方提供的 CLI 工具 `create-voltagent-app` 即可在几秒钟内初始化项目。\n\n在终端执行以下命令：\n\n```bash\nnpm create voltagent-app@latest\n```\n\n按照命令行提示完成项目命名和配置。安装完成后，进入项目目录：\n\n```bash\ncd \u003Cyour-project-name>\n```\n\n项目已预置了基础的 Agent 代码和工作流示例（位于 `src\u002Findex.ts` 和 `src\u002Fworkflows\u002Findex.ts`）。\n\n## 基本使用\n\n### 1. 启动开发服务器\n\n在项目根目录下运行以下命令启动服务：\n\n```bash\nnpm run dev\n```\n\n`tsx` 将自动编译并运行代码。当看到以下输出时，表示服务启动成功：\n\n```text\n══════════════════════════════════════════════════\nVOLTAGENT SERVER STARTED SUCCESSFULLY\n══════════════════════════════════════════════════\n✓ HTTP Server: http:\u002F\u002Flocalhost:3141\n\nTest your agents with VoltOps Console: https:\u002F\u002Fconsole.voltagent.dev\n══════════════════════════════════════════════════\n```\n\n### 2. 与 Agent 交互\n\n启动后，您可以通过 VoltOps 控制台直接与 Agent 对话：\n\n1.  **打开控制台**：点击终端输出中的链接 (https:\u002F\u002Fconsole.voltagent.dev) 或在浏览器中访问该地址。\n2.  **选择项目**：在页面左上角选择您当前运行的项目（例如 `my-agent-app`）。\n3.  **进入详情**：在列表中找到您的 Agent（如 `my-agent`），点击进入详情页。\n4.  **开始聊天**：点击右下角的聊天图标，输入消息（例如 \"Hello\" 或 \"今天天气如何\"）并发送。\n\n### 3. 运行工作流 (Workflow)\n\nVoltAgent 内置了强大的工作流引擎。初始化项目包含一个“费用审批工作流”示例，演示了人机协作（Human-in-the-loop）和挂起\u002F恢复功能。\n\n**测试步骤：**\n\n1.  在 VoltOps 控制台顶部导航栏点击 **Workflows**。\n2.  找到 **\"Expense Approval Workflow\"** 并点击。\n3.  点击 **\"Run\"** 按钮。\n4.  在输入框中填入测试数据（JSON 格式）。尝试输入小于 500 的金额以触发自动审批：\n    ```json\n    {\n      \"employeeId\": \"EMP-123\",\n      \"amount\": 250,\n      \"category\": \"office-supplies\",\n      \"description\": \"New laptop mouse and keyboard\"\n    }\n    ```\n5.  点击执行，您可以在控制台中查看每一步的执行日志和最终结果。\n\n### 核心代码结构参考\n\n生成的 `src\u002Findex.ts` 展示了如何定义 Agent 和注册服务：\n\n```typescript\nimport { VoltAgent, Agent, Memory } from \"@voltagent\u002Fcore\";\nimport { LibSQLMemoryAdapter } from \"@voltagent\u002Flibsql\";\nimport { createPinoLogger } from \"@voltagent\u002Flogger\";\nimport { honoServer } from \"@voltagent\u002Fserver-hono\";\nimport { openai } from \"@ai-sdk\u002Fopenai\";\nimport { expenseApprovalWorkflow } from \".\u002Fworkflows\";\nimport { weatherTool } from \".\u002Ftools\";\n\n\u002F\u002F 创建日志实例\nconst logger = createPinoLogger({\n  name: \"my-agent-app\",\n  level: \"info\",\n});\n\n\u002F\u002F 可选：持久化记忆（移除则使用默认内存记忆）\nconst memory = new Memory({\n  storage: new LibSQLMemoryAdapter({ url: \"file:.\u002F.voltagent\u002Fmemory.db\" }),\n});\n\n\u002F\u002F 定义一个通用 Agent\nconst agent = new Agent({\n  name: \"my-agent\",\n  instructions: \"A helpful assistant that can check weather and help with various tasks\",\n  model: openai(\"gpt-4o-mini\"),\n  tools: [weatherTool],\n  memory,\n});\n\n\u002F\u002F 初始化 VoltAgent，注册 Agents 和 Workflows\nnew VoltAgent({\n  agents: {\n    agent,\n  },\n  workflows: {\n    expenseApprovalWorkflow,\n  },\n  server: honoServer(),\n  logger,\n});\n```\n\n现在您已经成功运行了第一个 VoltAgent 应用。您可以前往 [官方文档](https:\u002F\u002Fvoltagent.dev\u002Fdocs\u002F) 探索更多高级功能，如 RAG、多智能体编排和自定义工具集成。","某电商技术团队正在构建一个能处理复杂售后流程（如退货、换货、赔偿协商）的多智能体客服系统，需协调查询订单、调用物流接口及生成安抚话术等多个环节。\n\n### 没有 voltagent 时\n- **流程编排混乱**：开发者需手动编写大量胶水代码来串联多个专用 Agent，状态管理困难，一旦中间步骤失败很难恢复。\n- **供应商锁定风险**：硬编码了特定大模型厂商的 SDK，若想切换至更便宜的模型或尝试新模型，必须重构核心业务逻辑。\n- **上下文记忆缺失**：Agent 无法在跨轮次对话中持久化存储用户关键信息（如订单号、诉求细节），导致用户需重复陈述问题。\n- **运维黑盒**：缺乏统一的观测面板，无法追踪 Agent 的决策路径、工具调用耗时及错误原因，线上排查如同“盲人摸象”。\n- **工具集成繁琐**：每次新增内部 API 作为工具时，都要重复编写类型校验和错误处理逻辑，开发效率低下。\n\n### 使用 voltagent 后\n- **声明式工作流**：利用 Workflow Engine 以声明式方式定义多步自动化流程，内置容错机制，任务中断后可自动从断点恢复。\n- **模型无缝切换**：通过配置文件即可在 OpenAI、Anthropic 等提供商间自由切换，底层 Agent 逻辑无需任何改动。\n- **持久化记忆支持**：直接挂载 Memory 适配器，Agent 能自动记住跨会话的用户上下文，提供连贯的个性化服务。\n- **全链路可观测**：依托 VoltOps Console 实时监控 Agent 运行轨迹、评估效果及资源消耗，快速定位并优化异常节点。\n- **类型安全工具链**：基于 Zod 定义类型安全的工具注册表，自动处理参数校验与生命周期，大幅降低集成门槛。\n\nvoltagent 让团队从繁琐的基础设施搭建中解放出来，专注于业务逻辑创新，实现了生产级多智能体系统的高效交付与稳定运营。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FVoltAgent_voltagent_d6654e00.png","VoltAgent","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FVoltAgent_e51f56aa.png",null,"info@voltagent.dev","voltagent_dev","https:\u002F\u002Fvoltagent.dev","https:\u002F\u002Fgithub.com\u002FVoltAgent",[81,85,89,93,97],{"name":82,"color":83,"percentage":84},"TypeScript","#3178c6",95.3,{"name":86,"color":87,"percentage":88},"CSS","#663399",2.5,{"name":90,"color":91,"percentage":92},"JavaScript","#f1e05a",1.9,{"name":94,"color":95,"percentage":96},"MDX","#fcb32c",0.2,{"name":98,"color":99,"percentage":100},"Shell","#89e051",0,7286,725,"2026-04-06T06:29:23","MIT","Linux, macOS, Windows","未说明",{"notes":108,"python":106,"dependencies":109},"该项目是基于 TypeScript 的 AI Agent 工程平台，非 Python 项目。需通过 npm 包管理器安装依赖，建议使用 Node.js 环境运行。核心功能包括代理编排、工作流引擎、RAG 及 MCP 支持。运行时默认启动本地 HTTP 服务器（端口 3141），并可连接云端或自托管的 VoltOps Console 进行观测和管理。",[110,111,112,113,114,115,116,117],"@voltagent\u002Fcore","@voltagent\u002Flibsql","@voltagent\u002Flogger","@voltagent\u002Fserver-hono","@ai-sdk\u002Fopenai","zod","tsx","npm",[15,14,119,13,35],"音频",[121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140],"agents","ai","chatbots","llm","mcp","nodejs","typescript","javascript","tts","framework","llm-observability","observability","ai-agents","ai-agents-framework","rag","aiagentframework","chatgpt","multiagent","open-source","openai","2026-03-27T02:49:30.150509","2026-04-06T18:52:23.964523",[144,149,153,157,162,167],{"id":145,"question_zh":146,"answer_zh":147,"source_url":148},19824,"如何自定义技能（Skill）的系统提示词，只包含名称和描述而非完整指令？","你可以使用 `workspace.skills` 的相关 API 自行组装技能提示词，而不是依赖默认注入的完整 `SKILL.md` 内容。具体做法是先调用 `discoverSkills` 获取技能列表，然后映射出名称、描述和路径信息。示例代码如下：\n\n```typescript\nconst discoveredSkills = (await workspace.skills?.discoverSkills({ refresh: true })) || [];\nconst skills = discoveredSkills.map((skill) => ({\n  id: String(skill.id ?? ''),\n  name: String(skill.name ?? skill.id ?? 'unknown-skill'),\n  description: String(skill.description ?? 'No description'),\n}));\nconst skillLines = skills.length > 0\n  ? skills.map((skill) => `- ${skill.name}: ${skill.description} (path: ${skill.id}\u002FSKILL.md)`)\n  : ['- (none discovered)'];\n\nreturn [\n  '## Skills',\n  '',\n  'A skill is a set of local instructions stored in a `SKILL.md` file.',\n  '',\n  '### Available Skills',\n  ...skillLines,\n];\n```\n这样你可以构建一个更简洁、仅包含元数据的技能提示部分。","https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fissues\u002F1045",{"id":150,"question_zh":151,"answer_zh":152,"source_url":148},19825,"为什么 Agent 尝试通过 execute_command 访问技能文件会失败？","因为工作区技能（Workspace Skills）不能通过沙箱中的 `execute_command` 命令直接访问（如 `ls \u002Fskills` 或 `cat \u002Fskills\u002F...`），这些操作会因权限或缺少目录而失败。正确的方式是使用专用工具，例如 `workspace_read_skill_script` 来读取技能脚本或引用。系统提示中应明确指导 Agent 使用这些专用工具，而不是通用的命令行工具。",{"id":154,"question_zh":155,"answer_zh":156,"source_url":148},19826,"在 LocalSandbox 和 E2B 环境中运行 Playwright 有什么区别？","在 LocalSandbox 中，Playwright 能正常工作是因为宿主机器上已经安装了它（存在于 PATH 或全局安装中）。如果沙箱运行时未安装 Playwright，`execute_command` 将会失败。对于 E2B 环境，官方提供了一个可用的示例配置，确保环境预装了 Playwright 及相关依赖。参考链接：https:\u002F\u002Fgithub.com\u002Fe2b-dev\u002Fe2b-cookbook\u002Ftree\u002Fmain\u002Fexamples\u002Fplaywright-in-e2b。总结：LocalSandbox 依赖宿主机环境，E2B 需要使用预配置好的镜像，任何缺少浏览器或依赖的沙箱环境都需要先进行资源供给（provisioning）才能成功运行。",{"id":158,"question_zh":159,"answer_zh":160,"source_url":161},19827,"如何在自定义工具中获取 AI SDK 提供的 toolCallId 等元数据？","早期版本中，Agent 的工具包装器只转发了 `args` 参数，导致无法访问 `toolCallId` 等元数据。该问题已通过 PR #754 修复。更新后，Agent 的工具包装逻辑已改为转发 AI SDK 工具调用的完整对象（包括 `toolCallId` 和其他属性）。请确保你的 `@voltagent\u002Fcore` 包已升级到包含此修复的版本，之后在自定义工具实现中即可直接访问完整的工具调用数据。","https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fissues\u002F746",{"id":163,"question_zh":164,"answer_zh":165,"source_url":166},19828,"Anthropic 的 webSearch 工具在重复提问时报错，如何解决？","这是一个已知 Bug，表现为首次提问正常，但重复相同问题时引发错误。维护者已在相关的 Pull Request 中进行了修复。如果你仍遇到此问题，请确保你使用的是最新版本的 `@ai-sdk\u002Fanthropic` 和 `@voltagent\u002Fcore`。维护者确认修复已合入主分支，通常不需要额外的配置更改，升级依赖即可解决。","https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fissues\u002F780",{"id":168,"question_zh":169,"answer_zh":170,"source_url":171},19829,"VoltAgent 是否支持复杂的多步工作流（Workflow）？","是的，VoltAgent 支持定义、执行和监控涉及多个 Agent 的复杂多步流程。工作流允许编排 Agent，使得一个步骤的输出可以作为后续步骤的输入，并支持条件逻辑、分支和并行执行。这使得 VoltAgent 能够处理需要多 Agent 协作的复杂任务。你可以在项目中定义类似 `expenseApprovalWorkflow` 的工作流，并在初始化 `VoltAgent` 时将其注册到 `workflows` 配置项中。","https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fissues\u002F2",[173,178,183,188,193,198,203,208,213,218,223,228,233,238,243,247,252,256,261,266],{"id":174,"version":175,"summary_zh":176,"released_at":177},117862,"@voltagent\u002Fcore@2.6.14","### 补丁变更\n\n-   [#1183](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1183) [`b48f107`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002Fb48f1077e847bc1dc4d0d42966dee8e6a01ed444) 感谢 [@omeraplak](https:\u002F\u002Fgithub.com\u002Fomeraplak)! - 新增功能：将选定的助手消息元数据持久化到内存中\n\n    您可以在代理级别或每个请求级别启用持久化的助手消息元数据。\n\n    ```ts\n    const result = await agent.streamText(\"Hello\", {\n      memory: {\n        userId: \"user-1\",\n        conversationId: \"conv-1\",\n        options: {\n          messageMetadataPersistence: {\n            usage: true,\n            finishReason: true,\n          },\n        },\n      },\n    });\n    ```\n\n    启用此功能后，从内存中获取消息时，助手 `UIMessage.metadata` 将包含 `usage` 和 `finishReason` 等字段，而不仅仅是流式传输时的元数据。\n\n    REST API 请求也可以通过 `options.memory.options` 启用相同的行为：\n\n    ```bash\n    curl -X POST http:\u002F\u002Flocalhost:3141\u002Fagents\u002Fassistant\u002Ftext \\\n      -H \"Content-Type: application\u002Fjson\" \\\n      -d '{\n        \"input\": \"Hello\",\n        \"options\": {\n          \"memory\": {\n            \"userId\": \"user-1\",\n            \"conversationId\": \"conv-1\",\n            \"options\": {\n              \"messageMetadataPersistence\": {\n                \"usage\": true,\n                \"finishReason\": true\n              }\n            }\n          }\n        }\n      }'\n    ```\n\n-   [#1167](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1167) [`195155b`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002F195155b734d2c2956b957ba6382f71b6e942e7a9) 感谢 [@octo-patch](https:\u002F\u002Fgithub.com\u002Focto-patch)! - 修复：为 MiniMax 提供商使用与 OpenAI 兼容的适配器\n","2026-04-01T17:46:48",{"id":179,"version":180,"summary_zh":181,"released_at":182},117863,"@voltagent\u002Fserver-core@2.1.11","### 补丁变更\n\n-   [#1183](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1183) [`b48f107`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002Fb48f1077e847bc1dc4d0d42966dee8e6a01ed444) 感谢 [@omeraplak](https:\u002F\u002Fgithub.com\u002Fomeraplak)! - 功能：将选定的助手消息元数据持久化到内存中\n\n    你可以在代理级别或每个请求级别启用持久化的助手消息元数据。\n\n    ```ts\n    const result = await agent.streamText(\"Hello\", {\n      memory: {\n        userId: \"user-1\",\n        conversationId: \"conv-1\",\n        options: {\n          messageMetadataPersistence: {\n            usage: true,\n            finishReason: true,\n          },\n        },\n      },\n    });\n    ```\n\n    启用此功能后，从内存中获取消息时，助手 `UIMessage.metadata` 将包含 `usage` 和 `finishReason` 等字段，而不仅仅是流式传输时的元数据。\n\n    REST API 请求也可以通过 `options.memory.options` 启用相同的行为：\n\n    ```bash\n    curl -X POST http:\u002F\u002Flocalhost:3141\u002Fagents\u002Fassistant\u002Ftext \\\n      -H \"Content-Type: application\u002Fjson\" \\\n      -d '{\n        \"input\": \"Hello\",\n        \"options\": {\n          \"memory\": {\n            \"userId\": \"user-1\",\n            \"conversationId\": \"conv-1\",\n            \"options\": {\n              \"messageMetadataPersistence\": {\n                \"usage\": true,\n                \"finishReason\": true\n              }\n            }\n          }\n        }\n      }'\n    ```\n\n-   更新了依赖项 \\[[`b48f107`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002Fb48f1077e847bc1dc4d0d42966dee8e6a01ed444), [`195155b`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002F195155b734d2c2956b957ba6382f71b6e942e7a9)]：\n    -   @voltagent\u002Fcore@2.6.14\n","2026-04-01T17:46:45",{"id":184,"version":185,"summary_zh":186,"released_at":187},117864,"@voltagent\u002Fcore@2.6.13","### 补丁变更\n\n-   [#1172](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1172) [`8cb2aa5`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002F8cb2aa59016641deba0947adcb5a2e4d4970ce08) 感谢 [@omeraplak](https:\u002F\u002Fgithub.com\u002Fomeraplak)! - 修复：加强提示上下文使用情况的遥测监控\n    -   在估算提示上下文使用量时，遮盖嵌套的大型二进制字段\n    -   在序列化嵌套的提示消息内容时，保留对循环引用的检测\n    -   将仅运行时使用的工具元数据从工具模式的令牌估算中排除\n    -   当缓存和推理令牌跨度属性的值为零时，避免发出这些属性\n","2026-03-25T14:06:53",{"id":189,"version":190,"summary_zh":191,"released_at":192},117865,"@voltagent\u002Fag-ui@1.0.7","### 补丁变更\n\n-   [#1137](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1137) [`bb6e9b1`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002Fbb6e9b1e3d81e21dd885a24dc0863b67d249f3b6) 感谢 [@corners99](https:\u002F\u002Fgithub.com\u002Fcorners99)! - 新增（ag-ui）：支持 ACTIVITY_SNAPSHOT 和 ACTIVITY_DELTA 事件\n","2026-03-25T14:06:50",{"id":194,"version":195,"summary_zh":196,"released_at":197},117866,"@voltagent\u002Fcore@2.6.12","### 补丁变更\n\n-   [#1169](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1169) [`25b21d0`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002F25b21d00fc74663a414eefabe35f7b4058ec9e71) 感谢 [@omeraplak](https:\u002F\u002Fgithub.com\u002Fomeraplak)! - 功能：添加用于可观测性的预估提示上下文遥测数据\n    -   在 LLM 链路中记录系统指令、对话消息和工具 Schema 的预估提示上下文拆分信息\n    -   向可观测性消费者公开 LLM 链路上的缓存 Token 使用量和推理 Token 使用量\n    -   为提示上下文估算辅助函数添加测试用例\n","2026-03-21T00:10:20",{"id":199,"version":200,"summary_zh":201,"released_at":202},117867,"@voltagent\u002Fcore@2.6.11","### 补丁变更\n\n-   [#1168](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1168) [`2075bd9`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002F2075bd9884b5a7f59ca04cd1aaa213b0852aafc7) 感谢 [@omeraplak](https:\u002F\u002Fgithub.com\u002Fomeraplak)! - 修复：在评估评分器的跟踪跨度上发出 LLM 判断模型的 token 使用量及提供商成本的遥测数据\n\n    VoltAgent 现在会在实时评估评分器的跟踪跨度上记录 LLM 判断模型、token 使用量、缓存 token、推理 token，以及提供商上报的成本详情。\n\n    这样可以使评分器侧的使用情况在可观测性后端中可见，并支持下游进行成本汇总，从而区分代理成本与评估评分器成本。\n\n-   [#1163](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1163) [`6f14c4d`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002F6f14c4d0dcabe35feba7352e8a7b67d5280a61b9) 感谢 [@omeraplak](https:\u002F\u002Fgithub.com\u002Fomeraplak)! - 修复：在结构化输出失败时保留使用量和提供商成本元数据\n\n    当 `generateText` 收到成功的模型响应，但未能生成结构化输出时，VoltAgent 现在会将解析后的使用量、结束原因以及提供商元数据保留在最终的错误路径上。\n\n    这样可以为可观测性跟踪保留提供商上报的成本数据，并通过 `VoltAgentError.metadata` 将相同的元数据提供给错误钩子。","2026-03-20T16:03:58",{"id":204,"version":205,"summary_zh":206,"released_at":207},117868,"@voltagent\u002Fserver-hono@2.0.8","### 补丁变更\n\n-   [`b523a60`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002Fb523a601b29a8522261393a3228ca1c9e6c53379) 感谢 [@omeraplak](https:\u002F\u002Fgithub.com\u002Fomeraplak)! - 功能：发布最新的 Hono 服务器工作流路由更新\n\n    ### 变更内容\n\n    -   在 Hono 服务器包中暴露最新的工作流执行端点\n    -   包含用于连接到活跃工作流流和重放工作流执行的 OpenAPI 路由定义\n    -   发布当前 `@voltagent\u002Fserver-hono` 的路由接口，使开发服务器的安装与最新仓库的行为保持一致\n","2026-03-18T01:32:49",{"id":209,"version":210,"summary_zh":211,"released_at":212},117869,"@voltagent\u002Fag-ui@1.0.6","### 补丁变更\n\n-   [#1149](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1149) [`19c4fcf`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002F19c4fcfc10ba0908e47c482b17355715c7467da3) 感谢 [@corners99](https:\u002F\u002Fgithub.com\u002Fcorners99)! - 修复：在消息转换中，工具调用部分使用 `input` 而不是 `args`\n\n    在将带有工具调用的 CopilotKit 助手消息转换为 VoltAgent 格式时，\n    适配器曾将 `args` 设置到工具调用部分。然而，AI SDK 的 `ToolCallPart` 接口预期使用 `input`，\n    这导致 Anthropic 提供者发送了 `undefined` 作为 tool_use 的输入——API 回应拒绝，并抛出以下错误：\n\n    “messages.N.content.N.tool_use.input：输入应为有效的字典”","2026-03-16T21:12:28",{"id":214,"version":215,"summary_zh":216,"released_at":217},117870,"@voltagent\u002Fcore@2.6.10","### 补丁变更\n\n-   [#1155](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1155) [`52bda94`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002F52bda94d948c9f42eb4d88db388bd4f44a59b3be) 感谢 [@omeraplak](https:\u002F\u002Fgithub.com\u002Fomeraplak)! - 修复：在可观测性跨度中捕获提供商报告的 OpenRouter 成本\n\n    ### 变更内容\n\n    -   将 OpenRouter 提供商报告的成本元数据转发到 LLM 跨度和根代理跨度。\n    -   为下游成本消费者记录 `usage.cost` 和 `usage.cost_details.upstream_inference_*` 属性。\n    -   在可观测性文档中记录 OpenRouter 使用情况统计以及基于自定义 `onEnd` 钩子的成本报告。","2026-03-16T21:12:25",{"id":219,"version":220,"summary_zh":221,"released_at":222},117871,"@voltagent\u002Fcore@2.6.8","### 补丁变更\n\n-   [#1146](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1146) [`c7b4c45`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002Fc7b4c453b7ddf2b25d8d536d8681fb9baaad9bd7) 感谢 [@omeraplak](https:\u002F\u002Fgithub.com\u002Fomeraplak)! - 改进 `Agent.generateText` 在模型未生成最终输出时（例如在工具调用步骤之后）的结构化输出错误处理。\n    -   当请求 `output` 时，立即检测到缺失的 `result.output`，并抛出一个描述性的 `VoltAgentError` (`STRUCTURED_OUTPUT_NOT_GENERATED`)，而不是稍后才显示模糊的 `AI_NoOutputGeneratedError`。\n    -   在错误中包含结束原因以及步骤和工具的元数据，以便于调试。\n    -   在 `VoltAgent` 日志中添加针对缺失结构化输出的未捕获拒绝提示。","2026-03-10T00:12:33",{"id":224,"version":225,"summary_zh":226,"released_at":227},117872,"@voltagent\u002Fcore@2.6.7","### Patch Changes\n\n-   [#1141](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1141) [`faa5023`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002Ffaa5023ae6983fe5cb165e0fed4ec89882422d7f) Thanks [@omeraplak](https:\u002F\u002Fgithub.com\u002Fomeraplak)! - feat: add per-call memory read-only mode via `memory.options.readOnly`.\n\n    When `readOnly` is enabled, the agent still reads conversation context and working memory, but skips memory writes for the current call.\n\n    What changes in read-only mode:\n\n    -   Conversation message persistence is disabled.\n    -   Step persistence\u002Fcheckpoint writes are disabled.\n    -   Background input persistence for context hydration is disabled.\n    -   Working memory write tools are disabled (`update_working_memory`, `clear_working_memory`).\n    -   Read-only tool remains available (`get_working_memory`).\n\n    `@voltagent\u002Fserver-core` now accepts `memory.options.readOnly` in request schema\u002Foptions parsing.\n\n    ### Before\n\n    ```ts\n    await agent.generateText(\"Summarize this\", {\n      memory: {\n        userId: \"user-123\",\n        conversationId: \"conv-456\",\n      },\n    });\n    \u002F\u002F reads + writes memory\n    ```\n\n    ### After\n\n    ```ts\n    await agent.generateText(\"Summarize this\", {\n      memory: {\n        userId: \"user-123\",\n        conversationId: \"conv-456\",\n        options: {\n          readOnly: true,\n        },\n      },\n    });\n    \u002F\u002F reads memory only, no writes\n    ```\n\n-   [#1142](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1142) [`0f7ee7c`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002F0f7ee7cbebec0fac039928af8b0a3a58cfbba82a) Thanks [@SergioChan](https:\u002F\u002Fgithub.com\u002FSergioChan)! - fix(core): avoid duplicating stdout\u002Fstderr stream content in sandbox summary metadata\n","2026-03-06T18:45:10",{"id":229,"version":230,"summary_zh":231,"released_at":232},117873,"@voltagent\u002Fserver-core@2.1.10","### Patch Changes\n\n-   [#1141](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1141) [`faa5023`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002Ffaa5023ae6983fe5cb165e0fed4ec89882422d7f) Thanks [@omeraplak](https:\u002F\u002Fgithub.com\u002Fomeraplak)! - feat: add per-call memory read-only mode via `memory.options.readOnly`.\n\n    When `readOnly` is enabled, the agent still reads conversation context and working memory, but skips memory writes for the current call.\n\n    What changes in read-only mode:\n\n    -   Conversation message persistence is disabled.\n    -   Step persistence\u002Fcheckpoint writes are disabled.\n    -   Background input persistence for context hydration is disabled.\n    -   Working memory write tools are disabled (`update_working_memory`, `clear_working_memory`).\n    -   Read-only tool remains available (`get_working_memory`).\n\n    `@voltagent\u002Fserver-core` now accepts `memory.options.readOnly` in request schema\u002Foptions parsing.\n\n    ### Before\n\n    ```ts\n    await agent.generateText(\"Summarize this\", {\n      memory: {\n        userId: \"user-123\",\n        conversationId: \"conv-456\",\n      },\n    });\n    \u002F\u002F reads + writes memory\n    ```\n\n    ### After\n\n    ```ts\n    await agent.generateText(\"Summarize this\", {\n      memory: {\n        userId: \"user-123\",\n        conversationId: \"conv-456\",\n        options: {\n          readOnly: true,\n        },\n      },\n    });\n    \u002F\u002F reads memory only, no writes\n    ```\n\n-   Updated dependencies \\[[`faa5023`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002Ffaa5023ae6983fe5cb165e0fed4ec89882422d7f), [`0f7ee7c`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002F0f7ee7cbebec0fac039928af8b0a3a58cfbba82a)]:\n    -   @voltagent\u002Fcore@2.6.7\n","2026-03-06T18:45:07",{"id":234,"version":235,"summary_zh":236,"released_at":237},117874,"@voltagent\u002Fcore@2.6.6","### Patch Changes\n\n-   [`99680b1`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002F99680b1a9e22e9e94019ef014734da898c493e6c) Thanks [@omeraplak](https:\u002F\u002Fgithub.com\u002Fomeraplak)! - feat: add runtime memory envelope (`options.memory`) and deprecate legacy top-level memory fields\n\n    ### What's New\n\n    -   Added a preferred per-call memory envelope:\n        -   `options.memory.conversationId` for conversation-scoped memory\n        -   `options.memory.userId` for user-scoped memory\n        -   `options.memory.options` for memory behavior overrides (`contextLimit`, `semanticMemory`, `conversationPersistence`)\n    -   Kept legacy top-level fields for backward compatibility:\n        -   `options.conversationId`, `options.userId`, `options.contextLimit`, `options.semanticMemory`, `options.conversationPersistence`\n    -   Legacy fields are now marked deprecated in type\u002Fdocs, and envelope values are preferred when both are provided.\n\n    ### Usage Examples\n\n    Legacy (still supported, deprecated):\n\n    ```ts\n    await agent.generateText(\"Hello\", {\n      userId: \"user-123\",\n      conversationId: \"conv-123\",\n      contextLimit: 20,\n      semanticMemory: {\n        enabled: true,\n        semanticLimit: 5,\n      },\n      conversationPersistence: {\n        mode: \"step\",\n        debounceMs: 150,\n      },\n    });\n    ```\n\n    Preferred (new `memory` envelope):\n\n    ```ts\n    await agent.generateText(\"Hello\", {\n      memory: {\n        userId: \"user-123\",\n        conversationId: \"conv-123\",\n        options: {\n          contextLimit: 20,\n          semanticMemory: {\n            enabled: true,\n            semanticLimit: 5,\n          },\n          conversationPersistence: {\n            mode: \"step\",\n            debounceMs: 150,\n          },\n        },\n      },\n    });\n    ```\n\n    ### Server and Resumable Stream Alignment\n\n    -   `@voltagent\u002Fserver-core` now accepts\u002Fdocuments the `options.memory` envelope in request schemas.\n    -   Resumable stream identity resolution now reads `conversationId`\u002F`userId` from `options.memory` first and falls back to legacy fields.\n    -   Added tests for:\n        -   parsing `options.memory` in server schemas\n        -   resolving resumable stream keys from `options.memory`\n","2026-03-06T05:00:04",{"id":239,"version":240,"summary_zh":241,"released_at":242},117875,"@voltagent\u002Fserver-core@2.1.9","### Patch Changes\n\n-   [`99680b1`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002F99680b1a9e22e9e94019ef014734da898c493e6c) Thanks [@omeraplak](https:\u002F\u002Fgithub.com\u002Fomeraplak)! - feat: add runtime memory envelope (`options.memory`) and deprecate legacy top-level memory fields\n\n    ### What's New\n\n    -   Added a preferred per-call memory envelope:\n        -   `options.memory.conversationId` for conversation-scoped memory\n        -   `options.memory.userId` for user-scoped memory\n        -   `options.memory.options` for memory behavior overrides (`contextLimit`, `semanticMemory`, `conversationPersistence`)\n    -   Kept legacy top-level fields for backward compatibility:\n        -   `options.conversationId`, `options.userId`, `options.contextLimit`, `options.semanticMemory`, `options.conversationPersistence`\n    -   Legacy fields are now marked deprecated in type\u002Fdocs, and envelope values are preferred when both are provided.\n\n    ### Usage Examples\n\n    Legacy (still supported, deprecated):\n\n    ```ts\n    await agent.generateText(\"Hello\", {\n      userId: \"user-123\",\n      conversationId: \"conv-123\",\n      contextLimit: 20,\n      semanticMemory: {\n        enabled: true,\n        semanticLimit: 5,\n      },\n      conversationPersistence: {\n        mode: \"step\",\n        debounceMs: 150,\n      },\n    });\n    ```\n\n    Preferred (new `memory` envelope):\n\n    ```ts\n    await agent.generateText(\"Hello\", {\n      memory: {\n        userId: \"user-123\",\n        conversationId: \"conv-123\",\n        options: {\n          contextLimit: 20,\n          semanticMemory: {\n            enabled: true,\n            semanticLimit: 5,\n          },\n          conversationPersistence: {\n            mode: \"step\",\n            debounceMs: 150,\n          },\n        },\n      },\n    });\n    ```\n\n    ### Server and Resumable Stream Alignment\n\n    -   `@voltagent\u002Fserver-core` now accepts\u002Fdocuments the `options.memory` envelope in request schemas.\n    -   Resumable stream identity resolution now reads `conversationId`\u002F`userId` from `options.memory` first and falls back to legacy fields.\n    -   Added tests for:\n        -   parsing `options.memory` in server schemas\n        -   resolving resumable stream keys from `options.memory`\n\n-   Updated dependencies \\[[`99680b1`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002F99680b1a9e22e9e94019ef014734da898c493e6c)]:\n    -   @voltagent\u002Fcore@2.6.6\n","2026-03-06T05:00:01",{"id":244,"version":245,"summary_zh":241,"released_at":246},117876,"@voltagent\u002Fresumable-streams@2.0.2","2026-03-06T04:59:58",{"id":248,"version":249,"summary_zh":250,"released_at":251},117877,"@voltagent\u002Fag-ui@1.0.5","### Patch Changes\n\n-   [#1135](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1135) [`a447ca3`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002Fa447ca3228712edbf19f53979a0429c773cc4aa3) Thanks [@corners99](https:\u002F\u002Fgithub.com\u002Fcorners99)! - fix(core,ag-ui): guard double writer.close() and RUN_FINISHED after RUN_ERROR\n","2026-03-06T03:32:08",{"id":253,"version":254,"summary_zh":250,"released_at":255},117878,"@voltagent\u002Fcore@2.6.5","2026-03-06T03:32:05",{"id":257,"version":258,"summary_zh":259,"released_at":260},117879,"@voltagent\u002Fcore@2.6.4","### Patch Changes\n\n-   [#1131](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1131) [`9a3ff6b`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002F9a3ff6bf8c30016f7867d867a23ad5b180448073) Thanks [@omeraplak](https:\u002F\u002Fgithub.com\u002Fomeraplak)! - fix(core): persist reasoning and tool parts across step checkpoint flushes (#1130)\n\n    When `conversationPersistence.mode = \"step\"` was used with tool calls, some checkpoint flows could\n    persist incomplete assistant messages and lose non-text parts in stored conversation history.\n\n    This update preserves complete assistant message parts during checkpoint merges and persistence\n    flushes, including reasoning, tool-call, tool-result, and text parts.\n\n    Regression coverage is expanded with end-to-end agent persistence tests against both LibSQL and\n    PostgreSQL backends to reduce the chance of similar regressions.\n\n-   [#1123](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1123) [`13f4f40`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002F13f4f40df980b5b114ea58b23e5683c8a1b208dc) Thanks [@omeraplak](https:\u002F\u002Fgithub.com\u002Fomeraplak)! - fix: prevent duplicate assistant message persistence during step checkpoints (#1121)\n\n    When `conversationPersistence.mode = \"step\"` flushed around tool results, the same assistant\n    response could be persisted multiple times with different `message_id` values. This created\n    duplicate assistant rows in memory and could surface downstream provider errors like duplicate\n    OpenAI reasoning item ids.\n\n    This update keeps a stable assistant response message id across step checkpoints and skips duplicate\n    step response payloads before buffering, so intermediate checkpoint flushes update the same memory\n    message instead of inserting new duplicates.\n","2026-03-04T20:35:58",{"id":262,"version":263,"summary_zh":264,"released_at":265},117880,"create-voltagent-app@0.2.19","### Patch Changes\n\n-   [`3e00061`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002F3e000619065e856cc5f66a32f92862ee21650b47) Thanks [@omeraplak](https:\u002F\u002Fgithub.com\u002Fomeraplak)! - feat(create-voltagent-app): add package manager selection with Bun support (#1129)\n\n    The CLI now detects available package managers (`pnpm`, `bun`, `yarn`, `npm`) and lets users\n    choose which one to use during project setup.\n\n    The selected package manager is used for dependency installation and post-create run instructions.\n    If no package manager is detected, the CLI now falls back to `npm` with a clear warning.\n","2026-03-04T20:35:55",{"id":267,"version":268,"summary_zh":269,"released_at":270},117881,"@voltagent\u002Fcore@2.6.3","### Patch Changes\n\n-   [#1123](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1123) [`527f2cf`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002F527f2cf1bdbb1ef830f1567504ec7aa24881a84b) Thanks [@omeraplak](https:\u002F\u002Fgithub.com\u002Fomeraplak)! - fix: prevent duplicate assistant message persistence during step checkpoints (#1121)\n\n    When `conversationPersistence.mode = \"step\"` flushed around tool results, the same assistant\n    response could be persisted multiple times with different `message_id` values. This created\n    duplicate assistant rows in memory and could surface downstream provider errors like duplicate\n    OpenAI reasoning item ids.\n\n    This update keeps a stable assistant response message id across step checkpoints and skips duplicate\n    step response payloads before buffering, so intermediate checkpoint flushes update the same memory\n    message instead of inserting new duplicates.\n\n-   [#1122](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fpull\u002F1122) [`e03e1ec`](https:\u002F\u002Fgithub.com\u002FVoltAgent\u002Fvoltagent\u002Fcommit\u002Fe03e1ec582bdc3bde3b2872997a78a40bbcc2e04) Thanks [@omeraplak](https:\u002F\u002Fgithub.com\u002Fomeraplak)! - Avoid reinitializing serverless observability remote exporters when the resolved VoltOps endpoint and headers are unchanged. This prevents unnecessary provider shutdown\u002Frecreation cycles that can surface as noisy \"Processor shutdown\" traces in long-lived serverless instances.\n\n    Adds a unit test to ensure repeated environment sync calls do not trigger duplicate `updateServerlessRemote` invocations when config is stable.\n","2026-03-03T20:25:40"]