[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-cgoinglove--better-chatbot":3,"tool-cgoinglove--better-chatbot":61},[4,18,26,36,44,52],{"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 真正成长为懂上",141543,2,"2026-04-06T11:32:54",[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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[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},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":53,"name":54,"github_repo":55,"description_zh":56,"stars":57,"difficulty_score":10,"last_commit_at":58,"category_tags":59,"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,60],"视频",{"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":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":78,"owner_email":79,"owner_twitter":79,"owner_website":80,"owner_url":81,"languages":82,"stars":99,"forks":100,"last_commit_at":101,"license":102,"difficulty_score":32,"env_os":103,"env_gpu":104,"env_ram":105,"env_deps":106,"category_tags":115,"github_topics":118,"view_count":32,"oss_zip_url":79,"oss_zip_packed_at":79,"status":17,"created_at":139,"updated_at":140,"faqs":141,"releases":172},4571,"cgoinglove\u002Fbetter-chatbot","better-chatbot","Just a Better Chatbot. Powered by Agent & MCP & Workflows.","better-chatbot 是一款功能强大的开源 AI 聊天机器人，旨在为个人和团队提供超越基础对话的智能体验。它不仅仅是一个聊天界面，更是一个集成了智能体（Agent）、模型上下文协议（MCP）和可视化工作流的综合平台，有效解决了传统聊天工具功能单一、难以执行复杂任务及缺乏自动化能力的痛点。\n\n这款工具非常适合开发者、技术研究人员以及希望构建定制化 AI 应用的企业团队使用。其核心亮点在于对 MCP 协议的深度支持，允许用户轻松连接外部工具，实现浏览器自动化、代码执行（JS\u002FPython）、数据可视化及实时网络搜索等功能。此外，better-chatbot 还具备独特的视觉工作流编辑器，让用户无需编写复杂代码即可设计自定义智能体；支持多模态交互，包括图像生成与编辑，以及集成 MCP 工具的实时语音助手。\n\n在用户体验上，它引入了直观的\"@\"提及语法，让用户能瞬间调用任何预设工具或智能体。基于 Next.js 和 Vercel AI SDK 构建，better-chatbot 支持本地优先部署，并兼容 OpenAI、Claude、Gemini 等主流大模型。只需一个 API 密钥，用","better-chatbot 是一款功能强大的开源 AI 聊天机器人，旨在为个人和团队提供超越基础对话的智能体验。它不仅仅是一个聊天界面，更是一个集成了智能体（Agent）、模型上下文协议（MCP）和可视化工作流的综合平台，有效解决了传统聊天工具功能单一、难以执行复杂任务及缺乏自动化能力的痛点。\n\n这款工具非常适合开发者、技术研究人员以及希望构建定制化 AI 应用的企业团队使用。其核心亮点在于对 MCP 协议的深度支持，允许用户轻松连接外部工具，实现浏览器自动化、代码执行（JS\u002FPython）、数据可视化及实时网络搜索等功能。此外，better-chatbot 还具备独特的视觉工作流编辑器，让用户无需编写复杂代码即可设计自定义智能体；支持多模态交互，包括图像生成与编辑，以及集成 MCP 工具的实时语音助手。\n\n在用户体验上，它引入了直观的\"@\"提及语法，让用户能瞬间调用任何预设工具或智能体。基于 Next.js 和 Vercel AI SDK 构建，better-chatbot 支持本地优先部署，并兼容 OpenAI、Claude、Gemini 等主流大模型。只需一个 API 密钥，用户即可快速免费部署属于自己的高级 AI 助手，灵活满足从简单问答到复杂任务自动化的多样化需求。","> [!WARNING] \n> The author of this project has paused development until February, however, I (@brrock) will try and address vulnerabilities and issues. If you are contributing, you might have to wait until development continues.\n\u003Cimg width=\"1184\" height=\"576\" alt=\"thumbnail\" loading=\"lazy\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_07f09cbd3bb0.png\" \u002F>\n\n[![MCP Supported](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FMCP-Supported-00c853)](https:\u002F\u002Fmodelcontextprotocol.io\u002Fintroduction)\n[![Local First](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLocal-First-blue)](https:\u002F\u002Flocalfirstweb.dev\u002F)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1374047276074537103?label=Discord&logo=discord&color=5865F2)](https:\u002F\u002Fdiscord.gg\u002FgCRu69Upnp)\n\n[![Deploy with Vercel](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_a4c0f8073a9c.png)](\u003Chttps:\u002F\u002Fvercel.com\u002Fnew\u002Fclone?repository-url=https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot&env=BETTER_AUTH_SECRET&env=OPENAI_API_KEY&env=GOOGLE_GENERATIVE_AI_API_KEY&env=ANTHROPIC_API_KEY&envDescription=BETTER_AUTH_SECRET+is+required+(enter+any+secret+value).+At+least+one+LLM+provider+API+key+(OpenAI,+Claude,+or+Google)+is+required,+but+you+can+add+all+of+them.+See+the+link+below+for+details.&envLink=https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fblob\u002Fmain\u002F.env.example&demo-title=better-chatbot&demo-description=An+Open-Source+Chatbot+Template+Built+With+Next.js+and+the+AI+SDK+by+Vercel.&products=[{\"type\":\"integration\",\"protocol\":\"storage\",\"productSlug\":\"neon\",\"integrationSlug\":\"neon\"},{\"type\":\"integration\",\"protocol\":\"storage\",\"productSlug\":\"upstash-kv\",\"integrationSlug\":\"upstash\"},{\"type\":\"blob\"}]>)\n\n🚀 **[Live Demo](https:\u002F\u002Fbetter-chatbot-demo.vercel.app\u002F)** | See the experience in action in the [preview](#preview) below!\n\n#### Demo Chats\n\n- **MCP Tools Demo:** [Chat with Tools](https:\u002F\u002Fbetter-chatbot-demo.vercel.app\u002Fexport\u002Fa4820921-8012-496b-8a5d-13757050bafe)\n- **Image Generation Demo:** [Chat with Image Generation](https:\u002F\u002Fbetter-chatbot-demo.vercel.app\u002Fexport\u002F452ad745-9efb-49ae-9114-10db15f1b827)\n\n## Quick Start 🚀\n\n> **Get your app running in minutes! No installation or payment required.**\n\nYou only need **one AI Provider API Key** (OpenAI, Claude, Gemini, etc.). Everything else runs on free tiers - database, file storage, and hosting.\n\n👉 **[Click this guide to deploy your site with just a few clicks](docs\u002Ftips-guides\u002Fvercel.md)**\n\n---\n\n**Better Chatbot** - A better open-source AI chatbot for individuals and teams, inspired by ChatGPT, Claude, Grok, and Gemini.\n\n• **Multi-AI Support** - Integrates all major LLMs: OpenAI, Anthropic, Google, xAI, Ollama, and more  \n• **Powerful Tools** - MCP protocol, web search, JS\u002FPython code execution, data visualization  \n• **Image Generation** - Create and edit images with AI models (OpenAI, Google Gemini, xAI)  \n• **Automation** - Custom agents, visual workflows, artifact generation  \n• **Collaboration** - Share agents, workflows, and MCP configurations with your team  \n• **Voice Assistant** - Realtime voice chat with full MCP tool integration  \n• **Intuitive UX** - Instantly invoke any feature with `@mention`  \n• **Quick Start** - Deploy free with Vercel Deploy button\n\nBuilt with Vercel AI SDK and Next.js, combining the best features of leading AI services into one platform.\n\n## Table of Contents\n\n- [Table of Contents](#table-of-contents)\n- [Preview](#preview)\n  - [🧩 Browser Automation with Playwright MCP](#-browser-automation-with-playwright-mcp)\n  - [🔗 Visual Workflows as Custom Tools](#-visual-workflows-as-custom-tools)\n  - [🤖 Custom Agents](#-custom-agents)\n  - [🎙️ Realtime Voice Assistant + MCP Tools](#️-realtime-voice-assistant--mcp-tools)\n  - [⚡️ Quick Tool Mentions (`@`) \\& Presets](#️-quick-tool-mentions---presets)\n  - [🧭 Tool Choice Mode](#-tool-choice-mode)\n  - [🛠️ Default Tools](#️-default-tools)\n    - [🌐 Web Search](#-web-search)\n    - [⚡️ JS,PYTHON Executor](#️-jspython-executor)\n    - [📊 Data Visualization Tools](#-data-visualization-tools)\n- [Getting Started](#getting-started)\n  - [Quick Start (Docker Compose Version) 🐳](#quick-start-docker-compose-version-)\n  - [Quick Start (Local Version) 🚀](#quick-start-local-version-)\n  - [Environment Variables](#environment-variables)\n- [📘 Guides](#-guides)\n  - [🔌 MCP Server Setup \\& Tool Testing](#-mcp-server-setup--tool-testing)\n  - [🐳 Docker Hosting Guide](#-docker-hosting-guide)\n  - [▲ Vercel Hosting Guide](#-vercel-hosting-guide)\n  - [🗂️ File Storage Drivers](#️-file-storage-drivers)\n  - [🎯 System Prompts \\& Chat Customization](#-system-prompts--chat-customization)\n  - [🔐 OAuth Sign-In Setup](#-oauth-sign-in-setup)\n  - [🕵🏿 Adding openAI like providers](#-adding-openai-like-providers)\n  - [🧪 E2E Testing Guide](#-e2e-testing-guide)\n- [💡 Tips](#-tips)\n  - [💬 Temporary Chat Windows](#-temporary-chat-windows)\n- [🗺️ Roadmap](#️-roadmap)\n- [🙌 Contributing](#-contributing)\n- [💬 Join Our Discord](#-join-our-discord)\n\n> This project is evolving at lightning speed! ⚡️ We're constantly shipping new features and smashing bugs. **Star this repo** to join the ride and stay in the loop with the latest updates!\n\n## Preview\n\nGet a feel for the UX — here's a quick look at what's possible.\n\n### 🧩 Browser Automation with Playwright MCP\n\n![preview](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_7dba607964d8.png)\n\n**Example:** Control a web browser using Microsoft's [playwright-mcp](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fplaywright-mcp) tool.\n\n- The LLM autonomously decides how to use tools from the MCP server, calling them multiple times to complete a multi-step task and return a final message.\n\nSample prompt:\n\n```prompt\n1. Use the @tool('web-search') to look up information about “modelcontetprotocol.”\n\n2. Then, using : @mcp(\"playwright\")\n   - navigate Google (https:\u002F\u002Fwww.google.com)\n   - Click the “Login” button\n   - Enter my email address (neo.cgoing@gmail.com)\n   - Clock the \"Next\"  button\n   - Close the browser\n```\n\n\u003Cbr\u002F>\n\n### 🔗 Visual Workflows as Custom Tools\n\n\u003Cimg width=\"1912\" height=\"953\" alt=\"workflow\" loading=\"lazy\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_34eea5eb4606.png\" \u002F>\n\n\u003Cimg width=\"1567\" alt=\"workflow-mention\" loading=\"lazy\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_867f1a426c46.png\" \u002F>\n\n**Example:** Create custom workflows that become callable tools in your chat conversations.\n\n- Build visual workflows by connecting LLM nodes (for AI reasoning) and Tool nodes (for MCP tool execution)\n- Publish workflows to make them available as `@workflow_name` tools in chat\n- Chain complex multi-step processes into reusable, automated sequences\n\n\u003Cbr\u002F>\n\n### 🤖 Custom Agents\n\n\u003Cimg width=\"1567\" alt=\"agent-example\" loading=\"lazy\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_82596d6fef42.png\" \u002F>\n\n**Example:** Create specialized AI agents with custom instructions and tool access.\n\n- Define custom agents with specific system prompts and available tools\n- Easily invoke agents in chat using `@agent_name`\n- Build task-specific assistants like a GitHub Manager agent with issue\u002FPR tools and project context\n\nFor instance, create a GitHub Manager agent by:\n\n- Providing GitHub tools (issue\u002FPR creation, comments, queries)\n- Adding project details to the system prompt\n- Calling it with `@github_manager` to manage your repository\n\n\u003Cbr\u002F>\n\n### 🎙️ Realtime Voice Assistant + MCP Tools\n\n\u003Cp align=\"center\">\n  \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fe2657b8c-ce0b-40dd-80b6-755324024973\" width=\"100%\" \u002F>\n\u003C\u002Fp>\n\nThis demo showcases a **realtime voice-based chatbot assistant** built with OpenAI's new Realtime API — now extended with full **MCP tool integration**.\nTalk to the assistant naturally, and watch it execute tools in real time.\n\n### ⚡️ Quick Tool Mentions (`@`) & Presets\n\n\u003Cimg width=\"1225\" alt=\"image\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_89caaae6d858.png\" loading=\"lazy\"\u002F>\n\nQuickly call tool during chat by typing `@toolname`.\nNo need to memorize — just type `@` and pick from the list!\n\n**Tool Selection vs. Mentions (`@`) — When to Use What:**\n\n- **Tool Selection**: Make frequently used tools always available to the LLM across all chats. Great for convenience and maintaining consistent context over time.\n- **Mentions (`@`)**: Temporarily bind only the mentioned tools for that specific response. Since only the mentioned tools are sent to the LLM, this saves tokens and can improve speed and accuracy.\n\nEach method has its own strengths — use them together to balance efficiency and performance.\n\nYou can also create **tool presets** by selecting only the MCP servers or tools you need.\nSwitch between presets instantly with a click — perfect for organizing tools by task or workflow.\n\n### 🧭 Tool Choice Mode\n\n\u003Cimg width=\"1225\" alt=\"image\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_bbd6912fb86b.png\" loading=\"lazy\"\u002F>\n\nControl how tools are used in each chat with **Tool Choice Mode** — switch anytime with `⌘P`.\n\n- **Auto:** The model automatically calls tools when needed.\n- **Manual:** The model will ask for your permission before calling a tool.\n- **None:** Tool usage is disabled completely.\n\nThis lets you flexibly choose between autonomous, guided, or tool-free interaction depending on the situation.\n\n### 🛠️ Default Tools\n\n#### 🌐 Web Search\n\n\u003Cimg width=\"1034\" height=\"940\" alt=\"web-search\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_bde76ebd16bd.png\" \u002F>\n\nBuilt-in web search powered by [Exa AI](https:\u002F\u002Fexa.ai). Search the web with semantic AI and extract content from URLs directly in your chats.\n\n- **Optional:** Add `EXA_API_KEY` to `.env` to enable web search\n- **Free Tier:** 1,000 requests\u002Fmonth at no cost, no credit card required\n- **Easy Setup:** Get your API key instantly at [dashboard.exa.ai](https:\u002F\u002Fdashboard.exa.ai)\n\n#### 🎨 Image Generation\n\n\u003Cimg width=\"1034\" height=\"940\" loading=\"lazy\" alt=\"image-generation\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_24a881e5d2d2.png\" \u002F>\n\nBuilt-in image generation and editing capabilities powered by AI models. Create, edit, and modify images directly in your chats.\n\n- **Supported Operations:** Image generation, editing, and composition\n- **Current Models:** Gemini Nano Banana, OpenAI\n\n#### ⚡️ JS,PYTHON Executor\n\n\u003Cimg width=\"1225\" alt=\"js-executor-preview\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_60bd0861c2a3.png\" loading=\"lazy\"\u002F>\n\nIt is a simple JS execution tool.\n\n#### 📊 Data Visualization Tools\n\n**Interactive Tables**: Create feature-rich data tables with advanced functionality:\n\n- **Sorting & Filtering**: Sort by any column, filter data in real-time\n- **Search & Highlighting**: Global search with automatic text highlighting\n- **Export Options**: Export to CSV or Excel format with lazy-loaded libraries\n- **Column Management**: Show\u002Fhide columns with visibility controls\n- **Pagination**: Handle large datasets with built-in pagination\n- **Data Type Support**: Proper formatting for strings, numbers, dates, and booleans\n\n**Chart Generation**: Visualize data with various chart types (bar, line, pie charts)\n\n> Additionally, many other tools are provided, such as an HTTP client for API requests and more.\n\n\u003Cbr\u002F>\n\n…and there's even more waiting for you.\nTry it out and see what else it can do!\n\n\u003Cbr\u002F>\n\n## Getting Started\n\n> This project uses [pnpm](https:\u002F\u002Fpnpm.io\u002F) as the recommended package manager.\n\n```bash\n# If you don't have pnpm:\nnpm install -g pnpm\n```\n\n### Quick Start (Docker Compose Version) 🐳\n\n```bash\n# 1. Install dependencies\npnpm i\n\n# 2. Enter only the LLM PROVIDER API key(s) you want to use in the .env file at the project root.\n# Example: The app works with just OPENAI_API_KEY filled in.\n# (The .env file is automatically created when you run pnpm i.)\n\n# 3. Build and start all services (including PostgreSQL) with Docker Compose\npnpm docker-compose:up\n\n```\n\n### Quick Start (Local Version) 🚀\n\n```bash\npnpm i\n\n#(Optional) Start a local PostgreSQL instance\n# If you already have your own PostgreSQL running, you can skip this step.\n# In that case, make sure to update the PostgreSQL URL in your .env file.\npnpm docker:pg\n\n# Enter required information in the .env file\n# The .env file is created automatically. Just fill in the required values.\n# For the fastest setup, provide at least one LLM provider's API key (e.g., OPENAI_API_KEY, CLAUDE_API_KEY, GEMINI_API_KEY, etc.) and the PostgreSQL URL you want to use.\n\npnpm build:local && pnpm start\n\n# (Recommended for most cases. Ensures correct cookie settings.)\n# For development mode with hot-reloading and debugging, you can use:\n# pnpm dev\n```\n\nAlternative: Use Docker Compose for DB only (run app via pnpm)\n\n```bash\n# Start Postgres only via compose\n# Ensure your .env includes: POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB matching POSTGRES_URL\ndocker compose -f docker\u002Fcompose.yml up -d postgres\n\n# Apply migrations\npnpm db:migrate\n\n\n# Run app locally\npnpm dev   # or: pnpm build && pnpm start\n```\n\nOpen [http:\u002F\u002Flocalhost:3000](http:\u002F\u002Flocalhost:3000) in your browser to get started.\n\n### Environment Variables\n\nThe `pnpm i` command generates a `.env` file. Add your API keys there.\n\n```dotenv\n# === LLM Provider API Keys ===\n# You only need to enter the keys for the providers you plan to use\nGOOGLE_GENERATIVE_AI_API_KEY=****\nOPENAI_API_KEY=****\nXAI_API_KEY=****\nANTHROPIC_API_KEY=****\nOPENROUTER_API_KEY=****\nOLLAMA_BASE_URL=http:\u002F\u002Flocalhost:11434\u002Fapi\n\n\n\n# Secret for Better Auth (generate with: npx @better-auth\u002Fcli@latest secret)\nBETTER_AUTH_SECRET=****\n\n# (Optional)\n# URL for Better Auth (the URL you access the app from)\nBETTER_AUTH_URL=\n\n# === Database ===\n# If you don't have PostgreSQL running locally, start it with: pnpm docker:pg\nPOSTGRES_URL=postgres:\u002F\u002Fyour_username:your_password@localhost:5432\u002Fyour_database_name\n\n# (Optional)\n# === Tools ===\n# Exa AI for web search and content extraction (optional, but recommended for @web and research features)\nEXA_API_KEY=your_exa_api_key_here\n\n\n# Whether to use file-based MCP config (default: false)\nFILE_BASED_MCP_CONFIG=false\n\n# === File Storage ===\n# Vercel Blob is the default storage driver (works in both local dev and production)\n# Pull the token locally with `vercel env pull`\nFILE_STORAGE_TYPE=vercel-blob\nFILE_STORAGE_PREFIX=uploads\nBLOB_READ_WRITE_TOKEN=\n\n# -- S3 (coming soon) --\n# FILE_STORAGE_TYPE=s3\n# FILE_STORAGE_PREFIX=uploads\n# FILE_STORAGE_S3_BUCKET=\n# FILE_STORAGE_S3_REGION=\n\n# (Optional)\n# === OAuth Settings ===\n# Fill in these values only if you want to enable Google\u002FGitHub\u002FMicrosoft login\n\n#GitHub\nGITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n#Google\nGOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n# Set to 1 to force account selection\nGOOGLE_FORCE_ACCOUNT_SELECTION=\n\n\n# Microsoft\nMICROSOFT_CLIENT_ID=\nMICROSOFT_CLIENT_SECRET=\n# Optional Tenant Id\nMICROSOFT_TENANT_ID=\n# Set to 1 to force account selection\nMICROSOFT_FORCE_ACCOUNT_SELECTION=\n\n# Set this to 1 to disable user sign-ups.\nDISABLE_SIGN_UP=\n\n# Set this to 1 to disallow adding MCP servers.\nNOT_ALLOW_ADD_MCP_SERVERS=\n```\n\n\u003Cbr\u002F>\n\n## 📘 Guides\n\nStep-by-step setup guides for running and configuring better-chatbot.\n\n#### [🔌 MCP Server Setup & Tool Testing](.\u002Fdocs\u002Ftips-guides\u002Fmcp-server-setup-and-tool-testing.md)\n\n- How to add and configure MCP servers in your environment\n\n#### [🐳 Docker Hosting Guide](.\u002Fdocs\u002Ftips-guides\u002Fdocker.md)\n\n- How to self-host the chatbot using Docker, including environment configuration.\n\n#### [▲ Vercel Hosting Guide](.\u002Fdocs\u002Ftips-guides\u002Fvercel.md)\n\n- Deploy the chatbot to Vercel with simple setup steps for production use.\n\n#### [🗂️ File Storage Drivers](.\u002Fdocs\u002Ftips-guides\u002Ffile-storage.md)\n\n- Cloud-based file storage with Vercel Blob (default) for seamless uploads in both development and production. S3 support coming soon.\n\n#### [🎯 System Prompts & Chat Customization](.\u002Fdocs\u002Ftips-guides\u002Fsystem-prompts-and-customization.md)\n\n- Personalize your chatbot experience with custom system prompts, user preferences, and MCP tool instructions\n\n#### [🔐 OAuth Sign-In Setup](.\u002Fdocs\u002Ftips-guides\u002Foauth.md)\n\n- Configure Google, GitHub, and Microsoft OAuth for secure user login support.\n\n#### [🕵🏿 Adding openAI like providers](docs\u002Ftips-guides\u002Fadding-openAI-like-providers.md)\n\n- Adding openAI like ai providers\n\n#### [🧪 E2E Testing Guide](.\u002Fdocs\u002Ftips-guides\u002Fe2e-testing-guide.md)\n\n- Comprehensive end-to-end testing with Playwright including multi-user scenarios, agent visibility testing, and CI\u002FCD integration\n  \u003Cbr\u002F>\n\n## 💡 Tips\n\n#### [💬 Temporary Chat Windows](.\u002Fdocs\u002Ftips-guides\u002Ftemporary_chat.md)\n\n- Open lightweight popup chats for quick side questions or testing — separate from your main thread.\n\n## 🗺️ Roadmap\n\nPlanned features coming soon to better-chatbot:\n\n- [x] **File Upload & Storage** (Vercel Blob integration)\n- [x] **Image Generation**\n- [ ] **Collaborative Document Editing** (like OpenAI Canvas: user & assistant co-editing)\n- [ ] **RAG (Retrieval-Augmented Generation)**\n- [ ] **Web-based Compute** (with [WebContainers](https:\u002F\u002Fwebcontainers.io) integration)\n\n💡 If you have suggestions or need specific features, please create an [issue](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues)!\n\n## 💖 Support\n\nIf this project has been helpful to you, please consider supporting its development:\n\n- ⭐ **Star** this repository\n- 🐛 **Report** bugs and suggest features\n- 💰 **[Become a sponsor](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fcgoinglove)** to support ongoing development\n\nYour support helps maintain and improve this project. Thank you! 🙏\n\n## 🙌 Contributing\n\nWe welcome all contributions! Bug reports, feature ideas, code improvements — everything helps us build the best local AI assistant.\n\n> **⚠️ Please read our [Contributing Guide](.\u002FCONTRIBUTING.md) before submitting any Pull Requests or Issues.** This helps us work together more effectively and saves time for everyone.\n\n**For detailed contribution guidelines**, please see our [Contributing Guide](.\u002FCONTRIBUTING.md).\n\n**Language Translations:** Help us make the chatbot accessible to more users by adding new language translations. See [language.md](.\u002Fmessages\u002Flanguage.md) for instructions on how to contribute translations.\n\nLet's build it together 🚀\n\n## 💬 Join Our Discord\n\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1374047276074537103?label=Discord&logo=discord&color=5865F2)](https:\u002F\u002Fdiscord.gg\u002FgCRu69Upnp)\n\nConnect with the community, ask questions, and get support on our official Discord server!\n","> [!WARNING] \n> 该项目的作者已暂停开发至二月，不过我（@brrock）会尽力修复漏洞和问题。如果你正在贡献代码，可能需要等到开发恢复后再继续。\n\u003Cimg width=\"1184\" height=\"576\" alt=\"thumbnail\" loading=\"lazy\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_07f09cbd3bb0.png\" \u002F>\n\n[![MCP 支持](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FMCP-Supported-00c853)](https:\u002F\u002Fmodelcontextprotocol.io\u002Fintroduction)\n[![本地优先](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLocal-First-blue)](https:\u002F\u002Flocalfirstweb.dev\u002F)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1374047276074537103?label=Discord&logo=discord&color=5865F2)](https:\u002F\u002Fdiscord.gg\u002FgCRu69Upnp)\n\n[![使用 Vercel 部署](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_a4c0f8073a9c.png)](\u003Chttps:\u002F\u002Fvercel.com\u002Fnew\u002Fclone?repository-url=https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot&env=BETTER_AUTH_SECRET&env=OPENAI_API_KEY&env=GOOGLE_GENERATIVE_AI_API_KEY&env=ANTHROPIC_API_KEY&envDescription=BETTER_AUTH_SECRET+is+required+(enter+any+secret+value).+At+least+one+LLM+provider+API+key+(OpenAI,+Claude,+or+Google)+is+required,+but+you+can+add+all+of+them.+See+the+link+below+for+details.&envLink=https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fblob\u002Fmain\u002F.env.example&demo-title=better-chatbot&demo-description=An+Open-Source+Chatbot+Template+Built+With+Next.js+and+the+AI+SDK+by+Vercel.&products=[{\"type\":\"integration\",\"protocol\":\"storage\",\"productSlug\":\"neon\",\"integrationSlug\":\"neon\"},{\"type\":\"integration\",\"protocol\":\"storage\",\"productSlug\":\"upstash-kv\",\"integrationSlug\":\"upstash\"},{\"type\":\"blob\"}]>)\n\n🚀 **[在线演示](https:\u002F\u002Fbetter-chatbot-demo.vercel.app\u002F)** | 在下方的【预览】中查看实际体验！\n\n#### 演示对话\n\n- **MCP 工具演示:** [与工具聊天](https:\u002F\u002Fbetter-chatbot-demo.vercel.app\u002Fexport\u002Fa4820921-8012-496b-8a5d-13757050bafe)\n- **图像生成演示:** [与图像生成聊天](https:\u002F\u002Fbetter-chatbot-demo.vercel.app\u002Fexport\u002F452ad745-9efb-49ae-9114-10db15f1b827)\n\n## 快速开始 🚀\n\n> **几分钟内即可运行你的应用！无需安装或付费。**\n\n你只需要一个 AI 提供商的 API 密钥（如 OpenAI、Claude、Gemini 等）。其他部分都可使用免费层级的服务——数据库、文件存储和托管。\n\n👉 **[点击此指南，只需几下就能部署你的网站](docs\u002Ftips-guides\u002Fvercel.md)**\n\n---\n\n**Better Chatbot** —— 一款面向个人和团队的更优秀的开源 AI 聊天机器人，灵感来源于 ChatGPT、Claude、Grok 和 Gemini。\n\n• **多 AI 支持** —— 集成所有主流 LLM：OpenAI、Anthropic、Google、xAI、Ollama 等  \n• **强大工具** —— MCP 协议、网页搜索、JS\u002FPython 代码执行、数据可视化  \n• **图像生成** —— 使用 AI 模型（OpenAI、Google Gemini、xAI）创建和编辑图像  \n• **自动化** —— 自定义智能体、可视化工作流、成果物生成  \n• **协作** —— 与团队共享智能体、工作流和 MCP 配置  \n• **语音助手** —— 实时语音聊天，全面集成 MCP 工具  \n• **直观 UX** —— 使用 `@mention` 即可快速调用任何功能  \n• **快速启动** —— 使用 Vercel 部署按钮即可免费部署\n\n基于 Vercel AI SDK 和 Next.js 构建，将领先 AI 服务的最佳特性整合到一个平台中。\n\n## 目录\n\n- [目录](#table-of-contents)\n- [预览](#preview)\n  - [🧩 使用 Playwright MCP 进行浏览器自动化](#-browser-automation-with-playwright-mcp)\n  - [🔗 可视化工作流作为自定义工具](#-visual-workflows-as-custom-tools)\n  - [🤖 自定义智能体](#-custom-agents)\n  - [🎙️ 实时语音助手 + MCP 工具](#️-realtime-voice-assistant--mcp-tools)\n  - [⚡️ 快速工具提及 (`@`) & 预设](#️-quick-tool-mentions---presets)\n  - [🧭 工具选择模式](#-tool-choice-mode)\n  - [🛠️ 默认工具](#️-default-tools)\n    - [🌐 网页搜索](#-web-search)\n    - [⚡️ JS,PYTHON 执行器](#️-jspython-executor)\n    - [📊 数据可视化工具](#-data-visualization-tools)\n- [入门](#getting-started)\n  - [快速开始（Docker Compose 版本） 🐳](#quick-start-docker-compose-version-)\n  - [快速开始（本地版本） 🚀](#quick-start-local-version-)\n  - [环境变量](#environment-variables)\n- [📘 指南](#-guides)\n  - [🔌 MCP 服务器设置 & 工具测试](#-mcp-server-setup--tool-testing)\n  - [🐳 Docker 托管指南](#-docker-hosting-guide)\n  - [▲ Vercel 托管指南](#-vercel-hosting-guide)\n  - [🗂️ 文件存储驱动程序](#️-file-storage-drivers)\n  - [🎯 系统提示 & 聊天定制](#-system-prompts--chat-customization)\n  - [🔐 OAuth 登录设置](#-oauth-sign-in-setup)\n  - [🕵🏿 添加类似 OpenAI 的提供商](#-adding-openai-like-providers)\n  - [🧪 E2E 测试指南](#-e2e-testing-guide)\n- [💡 小贴士](#-tips)\n  - [💬 临时聊天窗口](#-temporary-chat-windows)\n- [🗺️ 路线图](#️-roadmap)\n- [🙌 贡献](#-contributing)\n- [💬 加入我们的 Discord](#-join-our-discord)\n\n> 本项目正以惊人的速度发展！⚡️ 我们不断推出新功能并修复 bug。请 **星标此仓库**，加入我们，随时了解最新动态！\n\n## 预览\n\n感受一下用户体验——以下是一些可能的操作示例。\n\n### 🧩 使用 Playwright MCP 进行浏览器自动化\n\n![预览](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_7dba607964d8.png)\n\n**示例:** 使用微软的 [playwright-mcp](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fplaywright-mcp) 工具控制网页浏览器。\n\n- LLM 会自主决定如何使用 MCP 服务器上的工具，多次调用它们来完成一个多步骤的任务，并返回最终消息。\n\n示例提示：\n\n```prompt\n1. 使用 @tool('web-search') 查找关于“modelcontetprotocol”的信息。\n\n2. 然后，使用 : @mcp(\"playwright\")\n   - 导航到 Google (https:\u002F\u002Fwww.google.com)\n   - 点击“登录”按钮\n   - 输入我的邮箱地址 (neo.cgoing@gmail.com)\n   - 点击“下一步”按钮\n   - 关闭浏览器\n```\n\n\u003Cbr\u002F>\n\n### 🔗 可视化工作流作为自定义工具\n\n\u003Cimg width=\"1912\" height=\"953\" alt=\"workflow\" loading=\"lazy\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_34eea5eb4606.png\" \u002F>\n\n\u003Cimg width=\"1567\" alt=\"workflow-mention\" loading=\"lazy\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_867f1a426c46.png\" \u002F>\n\n**示例:** 创建自定义工作流，使其成为聊天对话中可调用的工具。\n\n- 通过连接 LLM 节点（用于 AI 推理）和工具节点（用于 MCP 工具执行）来构建可视化工作流\n- 发布工作流，使其在聊天中作为 `@workflow_name` 工具可用\n- 将复杂的多步骤流程串联成可重复使用的自动化序列\n\n\u003Cbr\u002F>\n\n### 🤖 自定义智能体\n\n\u003Cimg width=\"1567\" alt=\"agent-example\" loading=\"lazy\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_82596d6fef42.png\" \u002F>\n\n**示例**：使用自定义指令和工具访问权限创建专业化的 AI 智能体。\n\n- 定义具有特定系统提示和可用工具的自定义智能体\n- 在聊天中通过 `@agent_name` 轻松调用智能体\n- 构建任务专用助手，例如带有议题\u002FPR 工具和项目上下文的 GitHub 管理员智能体\n\n例如，通过以下步骤创建一个 GitHub 管理员智能体：\n\n- 提供 GitHub 工具（创建议题\u002FPR、评论、查询）\n- 将项目详情添加到系统提示中\n- 使用 `@github_manager` 调用它来管理你的仓库\n\n\u003Cbr\u002F>\n\n### 🎙️ 实时语音助手 + MCP 工具\n\n\u003Cp align=\"center\">\n  \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fe2657b8c-ce0b-40dd-80b6-755324024973\" width=\"100%\" \u002F>\n\u003C\u002Fp>\n\n此演示展示了基于 OpenAI 新实时 API 构建的 **实时语音聊天机器人助手** — 现已扩展为完全集成 **MCP 工具**。\n自然地与助手交谈，观看它实时执行工具操作。\n\n### ⚡️ 快速工具提及（`@`）及预设\n\n\u003Cimg width=\"1225\" alt=\"image\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_89caaae6d858.png\" loading=\"lazy\"\u002F>\n\n在聊天过程中，只需输入 `@toolname` 即可快速调用工具。\n无需记忆——只需键入 `@` 并从列表中选择即可！\n\n**工具选择与提及（`@`）——何时使用哪种方式：**\n\n- **工具选择**：使常用工具在所有聊天中始终对 LLM 可用。非常适合方便使用，并可在长时间内保持一致的上下文。\n- **提及（`@`）**：仅临时绑定所提及的工具用于该次响应。由于只有提及的工具会被发送给 LLM，这可以节省 token，并提高速度和准确性。\n\n每种方法都有其优势——将它们结合使用，以平衡效率和性能。\n\n你还可以通过仅选择所需的 MCP 服务器或工具来创建 **工具预设**。\n只需单击一下即可立即切换预设——非常适合按任务或工作流程组织工具。\n\n### 🧭 工具选择模式\n\n\u003Cimg width=\"1225\" alt=\"image\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_bbd6912fb86b.png\" loading=\"lazy\"\u002F>\n\n使用 **工具选择模式** 控制每个聊天中工具的使用方式——随时可通过 `⌘P` 切换。\n\n- **自动**：模型会在需要时自动调用工具。\n- **手动**：模型将在调用工具前请求您的许可。\n- **无**：完全禁用工具使用。\n\n这使您能够根据具体情况灵活选择自主、引导或无工具交互。\n\n### 🛠️ 默认工具\n\n#### 🌐 网络搜索\n\n\u003Cimg width=\"1034\" height=\"940\" alt=\"web-search\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_bde76ebd16bd.png\" \u002F>\n\n内置网络搜索功能，由 [Exa AI](https:\u002F\u002Fexa.ai) 提供支持。使用语义 AI 搜索网络，并直接在聊天中提取 URL 中的内容。\n\n- **可选**：将 `EXA_API_KEY` 添加到 `.env` 文件中以启用网络搜索\n- **免费层级**：每月 1,000 次请求，无需付费，无需信用卡\n- **轻松设置**：立即在 [dashboard.exa.ai](https:\u002F\u002Fdashboard.exa.ai) 获取 API 密钥\n\n#### 🎨 图像生成\n\n\u003Cimg width=\"1034\" height=\"940\" loading=\"lazy\" alt=\"image-generation\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_24a881e5d2d2.png\" \u002F>\n\n内置图像生成和编辑功能，由 AI 模型提供支持。直接在聊天中创建、编辑和修改图像。\n\n- **支持的操作**：图像生成、编辑和合成\n- **当前模型**：Gemini Nano Banana、OpenAI\n\n#### ⚡️ JS、PYTHON 执行器\n\n\u003Cimg width=\"1225\" alt=\"js-executor-preview\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_readme_60bd0861c2a3.png\" loading=\"lazy\"\u002F>\n\n这是一个简单的 JS 执行工具。\n\n#### 📊 数据可视化工具\n\n**交互式表格**：创建功能丰富的数据表格，具备高级功能：\n\n- **排序与筛选**：按任意列排序，实时筛选数据\n- **搜索与高亮显示**：全局搜索并自动高亮文本\n- **导出选项**：使用惰性加载库导出为 CSV 或 Excel 格式\n- **列管理**：通过可见性控件显示\u002F隐藏列\n- **分页**：内置分页功能，可处理大型数据集\n- **数据类型支持**：正确格式化字符串、数字、日期和布尔值\n\n**图表生成**：使用各种图表类型（柱状图、折线图、饼图）可视化数据\n\n> 此外，还提供了许多其他工具，例如用于 API 请求的 HTTP 客户端等。\n\n\u003Cbr\u002F>\n\n……还有更多精彩内容等着你。\n快来试试看吧！\n\n\u003Cbr\u002F>\n\n## 开始使用\n\n> 本项目推荐使用 [pnpm](https:\u002F\u002Fpnpm.io\u002F) 作为包管理器。\n\n```bash\n# 如果尚未安装 pnpm：\nnpm install -g pnpm\n```\n\n### 快速开始（Docker Compose 版本） 🐳\n\n```bash\n# 1. 安装依赖\npnpm i\n\n# 2. 在项目根目录的 .env 文件中，仅填写您想要使用的 LLM 提供商 API 密钥。\n# 例如：只需填写 OPENAI_API_KEY，应用即可运行。\n# （运行 pnpm i 时会自动创建 .env 文件。）\n\n# 3. 使用 Docker Compose 构建并启动所有服务（包括 PostgreSQL）\npnpm docker-compose:up\n\n```\n\n### 快速开始（本地版本） 🚀\n\n```bash\npnpm i\n\n#（可选）启动本地 PostgreSQL 实例\n# 如果您已经运行了自己的 PostgreSQL，则可以跳过此步骤。\n# 在这种情况下，请确保更新 .env 文件中的 PostgreSQL URL。\npnpm docker:pg\n\n# 在 .env 文件中填写必要信息\n# .env 文件会自动生成。只需填写所需值即可。\n# 为了最快设置，至少提供一个 LLM 提供商的 API 密钥（例如 OPENAI_API_KEY、CLAUDE_API_KEY、GEMINI_API_KEY 等）以及您想要使用的 PostgreSQL URL。\n\npnpm build:local && pnpm start\n\n#（大多数情况下推荐。可确保正确的 Cookie 设置。）\n# 对于支持热重载和调试的开发模式，可以使用：\n# pnpm dev\n```\n\n替代方案：仅使用 Docker Compose 运行数据库（通过 pnpm 运行应用）\n\n```bash\n# 仅通过 compose 启动 Postgres\n# 确保您的 .env 包含：POSTGRES_USER、POSTGRES_PASSWORD、POSTGRES_DB，且与 POSTGRES_URL 匹配\ndocker compose -f docker\u002Fcompose.yml up -d postgres\n\n# 应用迁移\npnpm db:migrate\n\n\n# 在本地运行应用\npnpm dev   # 或：pnpm build && pnpm start\n```\n\n在浏览器中打开 [http:\u002F\u002Flocalhost:3000](http:\u002F\u002Flocalhost:3000)，即可开始使用。\n\n### 环境变量\n\n运行 `pnpm i` 命令会生成一个 `.env` 文件。请在其中添加您的 API 密钥。\n\n```dotenv\n# === LLM 提供商 API 密钥 ===\n# 您只需填写计划使用的提供商密钥\nGOOGLE_GENERATIVE_AI_API_KEY=****\nOPENAI_API_KEY=****\nXAI_API_KEY=****\nANTHROPIC_API_KEY=****\nOPENROUTER_API_KEY=****\nOLLAMA_BASE_URL=http:\u002F\u002Flocalhost:11434\u002Fapi\n\n\n\n# Better Auth 的密钥（使用：npx @better-auth\u002Fcli@latest secret 生成）\nBETTER_AUTH_SECRET=****\n\n#（可选）\n\n# Better Auth 的 URL（您访问应用的 URL）\nBETTER_AUTH_URL=\n\n# === 数据库 ===\n# 如果您本地没有运行 PostgreSQL，请使用以下命令启动：pnpm docker:pg\nPOSTGRES_URL=postgres:\u002F\u002Fyour_username:your_password@localhost:5432\u002Fyour_database_name\n\n# （可选）\n# === 工具 ===\n# Exa AI 用于网络搜索和内容提取（可选，但建议用于 @web 和研究功能）\nEXA_API_KEY=your_exa_api_key_here\n\n\n# 是否使用基于文件的 MCP 配置（默认：false）\nFILE_BASED_MCP_CONFIG=false\n\n# === 文件存储 ===\n# Vercel Blob 是默认的存储驱动程序（在本地开发和生产环境中均可使用）\n# 在本地通过 `vercel env pull` 获取令牌\nFILE_STORAGE_TYPE=vercel-blob\nFILE_STORAGE_PREFIX=uploads\nBLOB_READ_WRITE_TOKEN=\n\n# -- S3（即将推出）--\n# FILE_STORAGE_TYPE=s3\n# FILE_STORAGE_PREFIX=uploads\n# FILE_STORAGE_S3_BUCKET=\n# FILE_STORAGE_S3_REGION=\n\n# （可选）\n# === OAuth 设置 ===\n# 仅当您希望启用 Google\u002FGitHub\u002FMicrosoft 登录时才填写这些值\n\n# GitHub\nGITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n# Google\nGOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n# 设置为 1 可强制选择账户\nGOOGLE_FORCE_ACCOUNT_SELECTION=\n\n\n# Microsoft\nMICROSOFT_CLIENT_ID=\nMICROSOFT_CLIENT_SECRET=\n# 可选的租户 ID\nMICROSOFT_TENANT_ID=\n# 设置为 1 可强制选择账户\nMICROSOFT_FORCE_ACCOUNT_SELECTION=\n\n# 将此设置为 1 可禁用用户注册。\nDISABLE_SIGN_UP=\n\n# 将此设置为 1 可禁止添加 MCP 服务器。\nNOT_ALLOW_ADD_MCP_SERVERS=\n```\n\n\u003Cbr\u002F>\n\n## 📘 指南\n\n逐步设置指南，帮助您运行和配置 better-chatbot。\n\n#### [🔌 MCP 服务器设置与工具测试](.\u002Fdocs\u002Ftips-guides\u002Fmcp-server-setup-and-tool-testing.md)\n\n- 如何在您的环境中添加和配置 MCP 服务器\n\n#### [🐳 Docker 托管指南](.\u002Fdocs\u002Ftips-guides\u002Fdocker.md)\n\n- 如何使用 Docker 自行托管聊天机器人，包括环境配置。\n\n#### [▲ Vercel 托管指南](.\u002Fdocs\u002Ftips-guides\u002Fvercel.md)\n\n- 通过简单的设置步骤将聊天机器人部署到 Vercel，以供生产使用。\n\n#### [🗂️ 文件存储驱动程序](.\u002Fdocs\u002Ftips-guides\u002Ffile-storage.md)\n\n- 基于云的文件存储，使用 Vercel Blob（默认）实现开发和生产环境中的无缝上传。S3 支持即将推出。\n\n#### [🎯 系统提示与聊天自定义](.\u002Fdocs\u002Ftips-guides\u002Fsystem-prompts-and-customization.md)\n\n- 使用自定义系统提示、用户偏好和 MCP 工具说明，个性化您的聊天机器人体验\n\n#### [🔐 OAuth 登录设置](.\u002Fdocs\u002Ftips-guides\u002Foauth.md)\n\n- 配置 Google、GitHub 和 Microsoft 的 OAuth，以支持安全的用户登录。\n\n#### [🕵🏿 添加类似 OpenAI 的提供商](docs\u002Ftips-guides\u002Fadding-openAI-like-providers.md)\n\n- 添加类似 OpenAI 的 AI 提供商\n\n#### [🧪 端到端测试指南](.\u002Fdocs\u002Ftips-guides\u002Fe2e-testing-guide.md)\n\n- 使用 Playwright 进行全面的端到端测试，包括多用户场景、代理可见性测试以及 CI\u002FCD 集成\n  \u003Cbr\u002F>\n\n## 💡 技巧\n\n#### [💬 临时聊天窗口](.\u002Fdocs\u002Ftips-guides\u002Ftemporary_chat.md)\n\n- 打开轻量级弹出式聊天窗口，用于快速解答旁支问题或进行测试——与您的主对话线程分开。\n\n## 🗺️ 路线图\n\nbetter-chatbot 即将推出的计划功能：\n\n- [x] **文件上传与存储**（Vercel Blob 集成）\n- [x] **图像生成**\n- [ ] **协作文档编辑**（类似于 OpenAI Canvas：用户与助手共同编辑）\n- [ ] **RAG（检索增强生成）**\n- [ ] **基于 Web 的计算**（结合 [WebContainers](https:\u002F\u002Fwebcontainers.io) 集成）\n\n💡 如果您有任何建议或需要特定功能，请创建一个 [issue](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues)！\n\n## 💖 支持\n\n如果该项目对您有所帮助，请考虑支持其开发：\n\n- ⭐ **Star** 此仓库\n- 🐛 **报告** 问题并提出功能建议\n- 💰 **[成为赞助者](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fcgoinglove)**，以支持持续开发\n\n您的支持有助于维护和改进该项目。感谢！ 🙏\n\n## 🙌 贡献\n\n我们欢迎所有贡献！无论是错误报告、功能想法还是代码改进，每一份帮助都能让我们打造最佳的本地 AI 助手。\n\n> **⚠️ 请在提交任何 Pull Request 或 Issue 之前阅读我们的 [贡献指南](.\u002FCONTRIBUTING.md)。** 这将帮助我们更高效地合作，并节省大家的时间。\n\n**有关详细的贡献指南**，请参阅我们的 [贡献指南](.\u002FCONTRIBUTING.md)。\n\n**语言翻译：** 通过添加新的语言翻译，帮助我们让更多的用户能够使用该聊天机器人。有关如何贡献翻译的说明，请参阅 [language.md](.\u002Fmessages\u002Flanguage.md)。\n\n让我们一起构建吧 🚀\n\n## 💬 加入我们的 Discord\n\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1374047276074537103?label=Discord&logo=discord&color=5865F2)](https:\u002F\u002Fdiscord.gg\u002FgCRu69Upnp)\n\n在我们的官方 Discord 服务器上与社区交流、提问并获得支持！","# Better Chatbot 快速上手指南\n\nBetter Chatbot 是一个基于 Next.js 和 Vercel AI SDK 构建的开源 AI 聊天机器人模板。它支持多模型接入（OpenAI, Claude, Gemini 等）、MCP 协议工具调用、代码执行、图像生成及实时语音助手等功能。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**: Windows, macOS 或 Linux\n*   **Node.js**: 推荐版本 v18.17 或更高\n*   **包管理器**: 项目推荐使用 **pnpm**\n*   **API Key**: 至少需要一个主流大模型提供商的 API Key（如 `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GOOGLE_GENERATIVE_AI_API_KEY` 等）\n*   **可选依赖**:\n    *   **Docker & Docker Compose**: 如果您希望使用容器化部署（包含数据库）。\n    *   **PostgreSQL**: 如果选择本地运行且不使用 Docker，需自行准备数据库。\n\n## 安装步骤\n\n### 1. 安装 pnpm (如果尚未安装)\n\n```bash\nnpm install -g pnpm\n```\n\n### 2. 克隆项目并安装依赖\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot.git\ncd better-chatbot\npnpm i\n```\n> 运行 `pnpm i` 后，项目根目录会自动生成 `.env` 文件模板。\n\n### 3. 配置环境变量\n\n编辑项目根目录下的 `.env` 文件，填入您的 LLM 提供商 API Key。至少配置一项即可运行。\n\n```bash\n# .env 文件示例\nBETTER_AUTH_SECRET=any_secret_value_here\nOPENAI_API_KEY=sk-your-openai-key\n# 或者\nANTHROPIC_API_KEY=sk-ant-your-anthropic-key\n# 或者\nGOOGLE_GENERATIVE_AI_API_KEY=your-google-key\n\n# 可选：启用网络搜索功能\nEXA_API_KEY=your-exa-key\n```\n\n### 4. 启动项目\n\n您可以选择以下两种方式之一启动服务：\n\n#### 方式 A：Docker Compose 启动（推荐，包含数据库）\n此方式会自动拉起 PostgreSQL 数据库和其他必要服务。\n\n```bash\npnpm docker-compose:up\n```\n\n#### 方式 B：本地开发模式启动\n如果您已自行配置好本地 PostgreSQL 数据库，可直接运行：\n\n```bash\npnpm dev\n```\n\n启动成功后，通常在浏览器访问 `http:\u002F\u002Flocalhost:3000` 即可看到界面。\n\n## 基本使用\n\n启动项目后，您可以通过以下方式体验核心功能：\n\n### 1. 基础对话\n在聊天框输入问题，系统将自动调用您配置的默认大模型进行回答。\n\n### 2. 快捷调用工具 (`@` 命令)\n无需切换菜单，直接在输入框输入 `@` 即可唤起工具列表。这是该项目的核心交互方式。\n\n*   **调用网络搜索**: 输入 `@web-search` 然后描述查询内容。\n    ```text\n    @web-search 查询最新的 Model Context Protocol 文档\n    ```\n*   **调用代码执行器**: 输入 `@js` 或 `@python` 让 AI 编写并运行代码。\n    ```text\n    @python 计算斐波那契数列的前 10 项并绘制图表\n    ```\n*   **调用自定义 Agent 或工作流**: 如果您创建了特定的 Agent（如 GitHub 管理员），可通过 `@agent_name` 直接调用。\n    ```text\n    @github_manager 检查当前仓库未关闭的 Issue\n    ```\n\n### 3. 工具控制模式\n按下 `⌘P` (Mac) 或 `Ctrl+P` (Windows\u002FLinux) 可快速切换工具使用策略：\n*   **Auto**: 模型自动决定何时调用工具。\n*   **Manual**: 模型调用工具前需用户确认。\n*   **None**: 禁用所有工具，仅进行纯文本对话。\n\n### 4. 一键部署 (可选)\n如果您不想本地运行，可以直接点击项目首页的 **Deploy with Vercel** 按钮，按照指引填写 API Key 即可在云端免费部署实例。","某初创公司的数据分析师需要快速完成竞品市场数据的抓取、清洗、可视化并生成报告，同时希望将这一流程固化为团队可复用的自动化能力。\n\n### 没有 better-chatbot 时\n- **工具割裂严重**：需要在浏览器手动搜索、复制数据到 Excel、再切换至 Python 环境写代码绘图，上下文频繁中断，效率极低。\n- **协作门槛高**：整理好的分析脚本和 Prompt 散落在个人笔记中，团队成员难以直接复用或理解其逻辑，导致重复造轮子。\n- **交互方式单一**：无法通过自然语言直接调用复杂的浏览器自动化或代码执行功能，非技术背景的同事难以参与数据分析过程。\n- **流程无法沉淀**：每次分析都是“一次性”操作，缺乏将“搜索 - 计算 - 绘图”串联成固定工作流的机制，难以规模化应用。\n\n### 使用 better-chatbot 后\n- **一站式闭环操作**：利用 `@mention` 直接调用 Playwright MCP 自动抓取网页数据，并通过内置的 JS\u002FPython 执行器即时清洗与可视化，全程无需切换窗口。\n- **可视化工作流复用**：将成功的分析步骤保存为“视觉工作流”，团队成员只需一键加载即可重现相同的分析逻辑，大幅降低协作成本。\n- **自然语言驱动复杂任务**：即使是非技术人员，也能通过语音或文字指令让 Agent 自动调用工具链完成从数据获取到报告生成的全过程。\n- **能力资产化**：自定义的 Agent 和 MCP 配置可轻松分享给团队，将个人的分析技巧转化为组织的标准化数字资产。\n\nbetter-chatbot 通过将分散的 AI 模型、工具协议与工作流引擎深度融合，把单次零散的对话升级为可沉淀、可协作的智能化生产管线。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcgoinglove_better-chatbot_07f09cbd.png","cgoinglove","choi sung keun","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fcgoinglove_1336b1bf.png","Open to new opportunities at great companies — feel free to reach out!\r\n\r\n💌 neo.cgoing@gmail.com","FreeLance","seoul",null,"https:\u002F\u002Fcgoinglove.github.io?lang=en","https:\u002F\u002Fgithub.com\u002Fcgoinglove",[83,87,91,95],{"name":84,"color":85,"percentage":86},"TypeScript","#3178c6",97.6,{"name":88,"color":89,"percentage":90},"CSS","#663399",2.3,{"name":92,"color":93,"percentage":94},"Dockerfile","#384d54",0.1,{"name":96,"color":97,"percentage":98},"JavaScript","#f1e05a",0,1063,337,"2026-04-06T14:06:25","MIT","Linux, macOS, Windows","未说明 (基于云 API 调用，本地运行无需特定 GPU，除非使用本地 Ollama 模型)","未说明",{"notes":107,"python":108,"dependencies":109},"该项目是一个基于 Next.js 和 Vercel AI SDK 的 Web 应用，主要通过 API 调用外部大模型（如 OpenAI, Claude, Google 等），而非在本地运行大型模型。因此没有特定的 GPU 或显存要求。推荐使用 pnpm 作为包管理器。可通过 Docker Compose 一键部署包含数据库的全套环境，或直接部署到 Vercel。若需使用本地模型，可集成 Ollama。","未说明 (项目主要基于 Node.js\u002FNext.js，需安装 pnpm)",[110,111,112,113,114],"Next.js","Vercel AI SDK","pnpm","PostgreSQL","Docker (可选)",[13,116,14,35,117,15],"音频","插件",[119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138],"chatbot","mcp","ollama","mcp-client","ai","mcp-server","vercel","agent","ai-chatbot","openai","web-ui","openai-realtime","voice-ai","nextjs","workflow","claude","gemini","automation","low-code","ui","2026-03-27T02:49:30.150509","2026-04-07T03:52:49.719789",[142,147,152,157,162,167],{"id":143,"question_zh":144,"answer_zh":145,"source_url":146},20800,"如何部署到生产环境或进行自托管（Self-Hosting）？","建议优先基于 Docker 创建部署指南。虽然 Vercel 部署很简单，但 MCP 服务器在 Vercel 上存在限制。一旦 Docker 托管可行，再为 Vercel 创建必要的接口（如 MCPConfigStorage、DB 等）。如果需要提交代码，请针对 `feat\u002Fself-hosting` 分支创建 PR。","https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F9",{"id":148,"question_zh":149,"answer_zh":150,"source_url":151},20801,"MCP 连接是否支持 OAuth 认证（如 Outlook, Gmail, ServiceNow 等）？","如果你使用 MCP remote，它会自动处理 OAuth。你可以尝试运行以 `npx MCP-remote` 开头的命令，通常即可生效。此外，官方修复也即将发布。","https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F93",{"id":153,"question_zh":154,"answer_zh":155,"source_url":156},20802,"在云端版本中添加 MCP 服务器时提示\"Not allowed to add MCP servers\"错误怎么办？","这可能是由于某些模型的工具输入 schema 不兼容导致的。建议尝试使用对工具支持较好的模型，例如 OpenAI 系列模型、Grok 或 Claude，这些模型通常能更智能地处理工具调用。","https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F181",{"id":158,"question_zh":159,"answer_zh":160,"source_url":161},20803,"运行 docker-compose 时出现\"permission denied while trying to connect to the Docker daemon socket\"错误如何解决？","这通常是 Docker 权限问题。请检查你是否在使用 rootless Docker 模式，或者尝试在命令前加上 `sudo` 来提升权限执行。不需要查看大量日志，重点解决 socket 连接权限即可。","https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F285",{"id":163,"question_zh":164,"answer_zh":165,"source_url":166},20804,"如何在 MCP Client 调用工具时传递当前用户的 Token 或自定义参数？","目前的 `callTool` 方法可能不支持直接传递自定义参数。对于需要将现有项目的 accessToken 传递给 API 的场景（例如通过 OIDC 认证后），通常需要在集成时将 token 携带到 `\u002Fapi\u002Fchat` 路由，并在后端处理逻辑中将其注入到 MCP 客户端与服务器的连接上下文中。具体实现可能需要修改运行时配置或等待后续功能更新。","https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F5",{"id":168,"question_zh":169,"answer_zh":170,"source_url":171},20805,"添加新的 MCP 服务器时界面卡住或无法删除怎么办？","这是一个已知的滞后性问题。如果在创建新 Agent 时遇到\"Internal Server Error\"，可以尝试刷新网页，通常 Agent 会在刷新后成功创建并正常工作。维护者正在测试和修复此类问题。","https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F217",[173,178,183,188,193,198,203,208,213,218,223,228,233,238,243,248,253,258,263,268],{"id":174,"version":175,"summary_zh":176,"released_at":177},126783,"v1.26.0","### 功能\n\n* 添加 LaTeX\u002FTeX 数学公式渲染支持 ([#318](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F318)) ([c0a8b5b](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Fc0a8b5b9b28599716013c83cac03fa5745ffd403)) 由 @jezweb 实现\n\n\n### 错误修复\n\n* 对非所有者隐藏 MCP 服务器凭据 ([#317](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F317)) ([#319](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F319)) ([6e32417](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F6e32417535c27f1215f96d68b7302dba4a1b904d)) 由 @jezweb 实现","2025-11-22T15:58:01",{"id":179,"version":180,"summary_zh":181,"released_at":182},126784,"v1.25.0","### 功能\n\n* S3 存储及更丰富的文件支持 ([#301](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F301)) ([051a974](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F051a9740a6ecf774bfead9ce327c376ea5b279a5)) 由 @mrjasonroy 实现\n\n\n### 错误修复\n\n* staticModels 中 gpt-4.1-mini 的模型名称 ([#299](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F299)) ([4513ac0](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F4513ac0e842f588a24d7075af8700e3cc7a3eb39)) 由 @mayur9210 实现","2025-10-30T03:29:08",{"id":184,"version":185,"summary_zh":186,"released_at":187},126785,"v1.24.0","### 功能\n\n* 生成图片工具（Nano Banana）([#284](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F284)) ([984ce66](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F984ce665ceef7225870f4eb751afaf65bf8a2dd4)) 由 @cgoinglove 实现\n* OpenAI 图片生成 ([#287](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F287)) ([0deef6e](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F0deef6e8a83196afb1f44444ab2f13415de20e73)) 由 @cgoinglove 实现","2025-10-06T12:57:51",{"id":189,"version":190,"summary_zh":191,"released_at":192},126786,"v1.23.0","### 功能\n\n* 导出聊天线程 ([#278](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F278)) ([23e79cd](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F23e79cd570c24bab0abc496eca639bfffcb6060b)) 由 @cgoinglove 实现\n* **文件存储：** 图片上传、使用 AI 生成个人资料 ([#257](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F257)) ([46eb43f](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F46eb43f84792d48c450f3853b48b24419f67c7a1)) 由 @brrock 实现\n\n\n### 错误修复\n\n* 将 DISABLE_SIGN_UP 应用于 OAuth 提供者 ([#282](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F282)) ([bcc0db8](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Fbcc0db8eb81997e54e8904e64fc76229fbfc1338)) 由 @cgoing-bot 实现\n* Ollama 禁用问题 ([#283](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F283)) ([5e0a690](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F5e0a690bb6c3f074680d13e09165ca9fff139f93)) 由 @cgoinglove 实现","2025-10-04T14:18:40",{"id":194,"version":195,"summary_zh":196,"released_at":197},126787,"v1.22.0","\r\n### 功能特性\r\n\r\n* 管理员与角色权限 ([#270](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F270)) ([63bddca](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F63bddcaa4bc62bc85204a0982a06f2bed09fc5f5)) 由 @mrjasonroy 实现\r\n* Groq 提供者支持 ([#268](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F268)) ([aef213d](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Faef213d2f9dd0255996cc4184b03425db243cd7b)) 由 @cgoinglove 实现\r\n* 在模型选择中隐藏未配置 API 密钥的 LLM 提供者 ([#269](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F269)) ([63c15dd](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F63c15dd386ea99b8fa56f7b6cb1e58e5779b525d)) 由 @cgoinglove 实现\r\n* **语音聊天：** 绑定智能体工具 ([#275](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F275)) ([ed45e82](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Fed45e822eb36447f2a02ef3aa69eeec88009e357)) 由 @cgoinglove 实现\r\n\r\n\r\n### 错误修复\r\n\r\n* 确保 PKCE 能够正常用于 MCP Server 认证 ([#256](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F256)) ([09b938f](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F09b938f17ca78993a1c7b84c5a702b95159542b2)) 由 @jvg123 实现","2025-09-25T01:44:31",{"id":199,"version":200,"summary_zh":201,"released_at":202},126788,"v1.21.0","### 功能特性\n\n* 代理共享 ([#226](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F226)) ([090dd8f](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F090dd8f4bf4fb82beb2cd9bfa0b427425bbbf352)) 由 @mrjasonroy 实现\n* AI v5 ([#230](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F230)) ([0461879](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F0461879740860055a278c96656328367980fa533)) 由 @cgoinglove 实现\n* 改进 Markdown 表格样式 ([#244](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F244)) ([7338e04](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F7338e046196f72a7cc8ec7903593d94ecabcc05e)) 由 @hakonharnes 实现\n\n\n### 错误修复\n\n* [#111](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F111)  防止长时间运行的工具调用期间 MCP 服务器断开连接 ([#238](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F238)) ([b5bb3dc](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Fb5bb3dc40a025648ecd78f547e0e1a2edd8681ca)) 由 @cgoinglove 实现","2025-08-24T06:42:25",{"id":204,"version":205,"summary_zh":206,"released_at":207},126789,"v1.20.2","### 错误修复\n\n* 改进错误提示，优化用户体验和动画处理（[#227](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F227)）（[35d62e0](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F35d62e05bb21760086c184511d8062444619696c)），作者：@cgoinglove\n* **mcp：** 确保数据库与内存管理在各服务器实例间同步（[#229](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F229)）（[c4b8ebe](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Fc4b8ebe9566530986951671e36111a2e529bf592)），作者：@cgoinglove","2025-08-09T01:54:40",{"id":209,"version":210,"summary_zh":211,"released_at":212},126790,"v1.20.1","### 错误修复\n\n* **mcp:** 修复 MCP 无限加载问题 ([#220](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F220)) ([c25e351](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Fc25e3515867c76cc5494a67e79711e9343196078)) 由 @cgoing-bot 提供","2025-08-06T16:17:50",{"id":214,"version":215,"summary_zh":216,"released_at":217},126791,"v1.20.0","### 功能特性\n\n* 将 Qwen3 Coder 添加到 OpenRouter 的模型文件中 ([#206](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F206)) ([3731d00](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F3731d007100ac36a814704f8bde8398ce1378a4e)) 由 @brrock 提供\n* 改进认证配置及社交登录处理 ([#211](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F211)) ([cd25937](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Fcd25937020710138ab82458e70ea7f6cabfd03ca)) 由 @mrjasonroy 提供\n* 引入交互式表格创建功能，并增强可视化工具 ([#205](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F205)) ([623a736](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F623a736f6895b8737acaa06811088be2dc1d0b3c)) 由 @cgoing-bot 提供\n* **mcp:** OAuth 实现 ([#208](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F208)) ([136aded](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F136aded6de716367380ff64c2452d1b4afe4aa7f)) 由 @cgoinglove 提供\n* **网页搜索:** 将 Tavily API 替换为 Exa AI 集成 ([#204](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F204)) ([7140487](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F7140487dcdadb6c5cb6af08f92b06d42411f7168)) 由 @cgoing-bot 提供\n\n\n### 错误修复\n\n* 实现聊天提及输入的响应式水平布局，优化用户体验，并生成 Agent Prompt ([43ec980](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F43ec98059e0d27ab819491518263df55fb1c9ad3)) 由 @cgoinglove 提供\n* **mcp:** 为 Vercel 环境设计安全的 MCP 管理器初始化逻辑 ([#202](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F202)) ([708fdfc](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F708fdfcfed70299044a90773d3c9a76c9a139f2f)) 由 @cgoing-bot 提供","2025-08-04T17:12:59",{"id":219,"version":220,"summary_zh":221,"released_at":222},126792,"v1.19.1","### 错误修复\n\n* **agent:** 改进 EditAgent 组件中的代理加载逻辑和验证处理 [#198](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F198) ([ec034ab](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Fec034ab51dfc656d7378eca1e2b4dc94fbb67863))，由 @cgoinglove 完成\n* **agent:** 更新 ChatMentionSchema 中的 description 字段，允许其为 null 或 undefined 类型 ([3e4532d](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F3e4532d4c7b561ad03836c743eefb7cd35fe9e74))，由 @cgoinglove 完成\n* **i18n:** 更新英文、西班牙文和法文 JSON 文件中的代理描述字段，以提高清晰度和一致性 ([f07d1c4](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Ff07d1c4dc64b96584faa7e558f981199834a5370))，由 @cgoinglove 完成\n* 无效的 'tools'：数组过长。预期最大长度为 128 的数组，但实际接收到的数组长度为 217。[#197](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F197) ([b967e3a](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Fb967e3a30be3a8a48f3801b916e26ac4d7dd50f4))，由 @cgoinglove 完成","2025-07-29T05:25:39",{"id":224,"version":225,"summary_zh":226,"released_at":227},126793,"v1.19.0","\n\n### Features\n\n* Add Azure OpenAI provider support with comprehensive testing ([#189](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F189)) ([edad917](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Fedad91707d49fcb5d3bd244a77fbaae86527742a)) by @shukyr\n* add bot name preference to user settings ([f4aa588](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Ff4aa5885d0be06cc21149d09e604c781e551ec4a)) by @cgoinglove\n* **agent:** agent and archive  ([#192](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F192)) ([c63ae17](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Fc63ae179363b66bfa4f4b5524bdf27b71166c299)) by @cgoinglove\n\n\n### Bug Fixes\n\n* enhance event handling for keyboard shortcuts in chat components ([95dad3b](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F95dad3bd1dac4b6e56be2df35957a849617ba056)) by @cgoinglove\n* refine thinking prompt condition in chat API ([0192151](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F0192151fec1e33f3b7bc1f08b0a9582d66650ef0)) by @cgoinglove","2025-07-28T16:22:00",{"id":229,"version":230,"summary_zh":231,"released_at":232},126794,"v1.18.0","\r\n![think2](https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F36c1e086-41ec-4ba3-bbe1-198558899c3d)\r\n\r\n### Features\r\n\r\n* add sequential thinking tool and enhance UI components ([#183](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F183)) ([5bcbde2](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F5bcbde2de776b17c3cc1f47f4968b13e22fc65b2)) by @cgoinglove","2025-07-24T10:03:03",{"id":234,"version":235,"summary_zh":236,"released_at":237},126795,"v1.17.1","\n\n### Bug Fixes\n\n* ensure thread date fallback to current date in AppSidebarThreads component ([800b504](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F800b50498576cfe1717da4385e2a496ac33ea0ad)) by @cgoinglove\n* link to the config generator correctly ([#184](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F184)) ([1865ecc](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F1865ecc269e567838bc391a3236fcce82c213fc0)) by @brrock\n* python executor ([ea58742](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Fea58742cccd5490844b3139a37171b1b68046f85)) by @cgoinglove","2025-07-23T16:28:28",{"id":239,"version":240,"summary_zh":241,"released_at":242},126796,"v1.17.0","\n\n### Features\n\n* add Python execution tool and integrate Pyodide support ([#176](https:\u002F\u002Fgithub.com\u002Fbetter-chatbot\u002Fbetter-chatbot\u002Fissues\u002F176)) ([de2cf7b](https:\u002F\u002Fgithub.com\u002Fbetter-chatbot\u002Fbetter-chatbot\u002Fcommit\u002Fde2cf7b66444fe64791ed142216277a5f2cdc551)) by @cgoinglove\n\n\n### Bug Fixes\n\n* generate title by user message ([9ee4be6](https:\u002F\u002Fgithub.com\u002Fbetter-chatbot\u002Fbetter-chatbot\u002Fcommit\u002F9ee4be69c6b90f44134d110e90f9c3da5219c79f)) by @cgoinglove\n* generate title sync ([5f3afdc](https:\u002F\u002Fgithub.com\u002Fbetter-chatbot\u002Fbetter-chatbot\u002Fcommit\u002F5f3afdc4cb7304460606b3480f54f513ef24940c)) by @cgoinglove","2025-07-18T06:04:01",{"id":244,"version":245,"summary_zh":246,"released_at":247},126797,"v1.16.0","\u003Cimg width=\"1061\" height=\"585\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F05236655-67f9-4589-bfd2-60db36821735\" \u002F>\r\n\r\n\r\n### Features\r\n\r\n* Lazy Chat Title Generation: Save Empty Title First, Then Generate and Upsert in Parallel ([#162](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F162)) ([31dfd78](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F31dfd7802e33d8d4e91aae321c3d16a07fe42552)) by @cgoinglove\r\n* publish container to GitHub registry ([#149](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F149)) ([9f03cbc](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F9f03cbc1d2890746f14919ebaad60f773b0a333d)) by @codingjoe\r\n* update mention ux ([#161](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F161)) ([7ceb9c6](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F7ceb9c69c32de25d523a4d14623b25a34ffb3c9d)) by @cgoinglove\r\n\r\n\r\n### Bug Fixes\r\n\r\n* bug(LineChart): series are incorrectly represented [#165](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F165) ([4e4905c](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F4e4905c0f7f6a3eca73ea2ac06f718fa29b0f821)) by @cgoinglove\r\n* ignore tool binding on unsupported models (server-side) ([#160](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F160)) ([277b4fe](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F277b4fe986d5b6d9780d9ade83f294d8f34806f6)) by @cgoinglove\r\n* js executor tool and gemini model version ([#169](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F169)) ([e25e10a](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Fe25e10ab9fac4247774b0dee7e01d5f6a4b16191)) by @cgoinglove\r\n* **scripts:** parse openai compatible on windows ([#164](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F164)) ([41f5ff5](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F41f5ff55b8d17c76a23a2abf4a6e4cb0c4d95dc5)) by @axel7083\r\n* **workflow-panel:** fix save button width ([#168](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F168)) ([3e66226](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F3e6622630c9cc40ff3d4357e051c45f8c860fc10)) by @axel7083","2025-07-15T16:37:46",{"id":249,"version":250,"summary_zh":251,"released_at":252},126798,"v1.15.0","\n\n### Features\n\n* Add js-execution tool and  bug fixes(tool call) ([#148](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F148)) ([12b18a1](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F12b18a1cf31a17e565eddc05764b5bd2d0b0edee)) by @cgoinglove\n\n\n### Bug Fixes\n\n* enhance ToolModeDropdown with tooltip updates and debounce functionality ([d06db0b](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Fd06db0b3e1db34dc4785eb31ebd888d7c2ae0d64)) by @cgoinglove","2025-07-11T13:19:01",{"id":254,"version":255,"summary_zh":256,"released_at":257},126799,"v1.14.1","\n\n### Bug Fixes\n\n* tool select ui ([#141](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F141)) ([0795524](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F0795524991a7aa3e17990777ca75381e32eaa547)) by @cgoinglove","2025-07-09T08:53:39",{"id":259,"version":260,"summary_zh":261,"released_at":262},126800,"v1.14.0","\n\n### Features\n\n* web-search with images ([bea76b3](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Fbea76b3a544d4cf5584fa29e5c509b0aee1d4fee)) by @cgoinglove\n* **workflow:** add auto layout feature for workflow nodes and update UI messages ([0cfbffd](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F0cfbffd631c9ae5c6ed57d47ca5f34b9acbb257d)) by @cgoinglove\n* **workflow:** stable workflow  ( add example workflow : baby-research ) ([#137](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fissues\u002F137)) ([c38a7ea](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Fc38a7ea748cdb117a4d0f4b886e3d8257a135956)) by @cgoinglove\n\n\n### Bug Fixes\n\n* **api:** handle error case in chat route by using orElse for unwrap ([25580a2](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002F25580a2a9f6c9fbc4abc29fee362dc4b4f27f9b4)) by @cgoinglove\n* **workflow:** llm structure Output ([c529292](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fbetter-chatbot\u002Fcommit\u002Fc529292ddc1a4b836a5921e25103598afd7e3ab7)) by @cgoinglove","2025-07-07T13:00:27",{"id":264,"version":265,"summary_zh":266,"released_at":267},126801,"v1.13.0","\r\n\u003Cimg width=\"1423\" alt=\"web-search\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F906dad8c-e699-43ee-ad1d-2fae83358b6f\" \u002F>\r\n\r\n\r\n### Features\r\n\r\n* Add web search and content extraction tools using Tavily API ([#126](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fmcp-client-chatbot\u002Fissues\u002F126)) ([f7b4ea5](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fmcp-client-chatbot\u002Fcommit\u002Ff7b4ea5828b33756a83dd881b9afa825796bf69f)) by @cgoing-bot\r\n\r\n\r\n### Bug Fixes\r\n\r\n* workflow condition node issue ([78b7add](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fmcp-client-chatbot\u002Fcommit\u002F78b7addbba51b4553ec5d0ce8961bf90be5d649c)) by @cgoinglove\r\n* **workflow:** improve mention handling by ensuring empty values are represented correctly ([92ff9c3](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fmcp-client-chatbot\u002Fcommit\u002F92ff9c3e14b97d9f58a22f9df2559e479f14537c)) by @cgoinglove\r\n* **workflow:** simplify mention formatting by removing bold styling for non-empty values ([ef65fd7](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fmcp-client-chatbot\u002Fcommit\u002Fef65fd713ab59c7d8464cae480df7626daeff5cd)) by @cgoinglove","2025-07-04T14:29:00",{"id":269,"version":270,"summary_zh":271,"released_at":272},126802,"v1.12.1","\n\n### Bug Fixes\n\n* **workflow:** enhance structured output handling and improve user notifications ([dd43de9](https:\u002F\u002Fgithub.com\u002Fcgoinglove\u002Fmcp-client-chatbot\u002Fcommit\u002Fdd43de99881d64ca0c557e29033e953bcd4adc0e)) by @cgoinglove","2025-07-02T16:48:25"]