[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-trpc-group--trpc-agent-go":3,"tool-trpc-group--trpc-agent-go":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 真正成长为懂上",150037,2,"2026-04-10T23:33:47",[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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":72,"owner_avatar_url":73,"owner_bio":74,"owner_company":75,"owner_location":75,"owner_email":75,"owner_twitter":75,"owner_website":75,"owner_url":76,"languages":77,"stars":97,"forks":98,"last_commit_at":99,"license":100,"difficulty_score":32,"env_os":101,"env_gpu":102,"env_ram":102,"env_deps":103,"category_tags":108,"github_topics":109,"view_count":32,"oss_zip_url":75,"oss_zip_packed_at":75,"status":17,"created_at":115,"updated_at":116,"faqs":117,"releases":158},5006,"trpc-group\u002Ftrpc-agent-go","trpc-agent-go","trpc-agent-go is a powerful Go framework for building intelligent agent systems using large language models (LLMs) and tools.","trpc-agent-go 是一款专为 Go 语言开发者打造的强大框架，旨在简化基于大语言模型（LLM）的智能体系统构建过程。它解决了传统开发中智能体逻辑复杂、多角色协作困难以及状态记忆难以持久化等痛点，让开发者能够轻松创建具备思考、记忆、协作和执行能力的自主智能应用。\n\n该工具特别适合后端工程师、AI 应用开发者及架构师使用，尤其是那些希望利用 Go 语言高性能特性来构建企业级 AI 服务的团队。无论是开发智能客服机器人、数据分析助手，还是实现复杂的 DevOps 自动化流程，trpc-agent-go 都能提供坚实的技术支撑。\n\n其核心技术亮点包括：支持链式、并行及基于图结构的多智能体编排，实现了类似 LangGraph 的类型安全工作流；内置强大的持久化记忆系统，确保智能体在跨会话中保持上下文感知；拥有丰富的工具生态，可无缝集成外部 API、数据库及 MCP 协议；同时具备生产级可观测性、自动提示词缓存优化及版本化产物管理功能。凭借高性能与低延迟优势，trpc-agent-go 帮助开发者高效落地从概念验证到大规模部署的各类 AI 应用场景。","English | [中文](README.zh_CN.md)\n\n# tRPC-Agent-Go\n\n[![Go Reference](https:\u002F\u002Fpkg.go.dev\u002Fbadge\u002Ftrpc.group\u002Ftrpc-go\u002Ftrpc-agent-go.svg)](https:\u002F\u002Fpkg.go.dev\u002Ftrpc.group\u002Ftrpc-go\u002Ftrpc-agent-go)\n[![Go Report Card](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftrpc-group_trpc-agent-go_readme_2b4a70945b89.png)](https:\u002F\u002Fgoreportcard.com\u002Freport\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go)\n[![LICENSE](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache--2.0-green.svg)](https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fblob\u002Fmain\u002FLICENSE)\n[![Releases](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Frelease\u002Ftrpc-group\u002Ftrpc-agent-go.svg?style=flat-square)](https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Freleases)\n[![Tests](https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Factions\u002Fworkflows\u002Fprc.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Factions\u002Fworkflows\u002Fprc.yml)\n[![Coverage](https:\u002F\u002Fcodecov.io\u002Fgh\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fapp.codecov.io\u002Fgh\u002Ftrpc-group\u002Ftrpc-agent-go\u002Ftree\u002Fmain)\n[![Documentation](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocs-Website-blue.svg)](https:\u002F\u002Ftrpc-group.github.io\u002Ftrpc-agent-go\u002F)\n\n**A powerful Go framework for building intelligent agent systems** that transforms how you create AI applications. Build autonomous agents that think, remember, collaborate, and act with unprecedented ease.\n\n**Why tRPC-Agent-Go?**\n\n- **Intelligent Reasoning**: Advanced hierarchical planners and multi-agent orchestration\n- **Rich Tool Ecosystem**: Seamless integration with external APIs, databases, and services\n- **Persistent Memory**: Long-term state management and contextual awareness\n- **Multi-Agent Collaboration**: Chain, parallel, and graph-based agent workflows\n- **GraphAgent**: Type-safe graph workflows with multi-conditional routing, functionally equivalent to LangGraph for Go\n- **Agent Skills**: Reusable `SKILL.md` workflows with safe execution\n- **Artifacts**: Versioned storage for files produced by agents and tools\n- **Prompt Caching**: Automatic cost optimization with 90% savings on cached content\n- **Evaluation & Benchmarks**: Eval sets + metrics to measure quality over time\n- **UI & Server Integration**: AG-UI (Agent-User Interaction),\n  and Agent-to-Agent (A2A) interoperability\n- **Production Ready**: Built-in telemetry, tracing, and enterprise-grade reliability\n- **High Performance**: Optimized for scalability and low latency\n\n## Use Cases\n\n**Perfect for building:**\n\n- **Customer Support Bots** - Intelligent agents that understand context and solve complex queries\n- **Data Analysis Assistants** - Agents that query databases, generate reports, and provide insights\n- **DevOps Automation** - Smart deployment, monitoring, and incident response systems\n- **Business Process Automation** - Multi-step workflows with human-in-the-loop capabilities\n- **Research & Knowledge Management** - RAG-powered agents for document analysis and Q&A\n\n## Key Features\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd width=\"50%\" valign=\"top\">\n\n### Multi-Agent Orchestration\n\n```go\n\u002F\u002F Chain agents for complex workflows\npipeline := chainagent.New(\"pipeline\",\n    chainagent.WithSubAgents([]agent.Agent{\n        analyzer, processor, reporter,\n    }))\n\n\u002F\u002F Or run them in parallel\nparallel := parallelagent.New(\"concurrent\",\n    parallelagent.WithSubAgents(tasks))\n```\n\n\u003C\u002Ftd>\n\u003Ctd width=\"50%\" valign=\"top\">\n\n### Advanced Memory System\n\n```go\n\u002F\u002F Persistent memory with search\nmemory := memorysvc.NewInMemoryService()\nagent := llmagent.New(\"assistant\",\n    llmagent.WithTools(memory.Tools()),\n    llmagent.WithModel(model))\n\n\u002F\u002F Memory service managed at runner level\nrunner := runner.NewRunner(\"app\", agent,\n    runner.WithMemoryService(memory))\n\n\u002F\u002F Agents remember context across sessions\n```\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd valign=\"top\">\n\n### Rich Tool Integration\n\n```go\n\u002F\u002F Any function becomes a tool\ncalculator := function.NewFunctionTool(\n    calculate,\n    function.WithName(\"calculator\"),\n    function.WithDescription(\"Math operations\"))\n\n\u002F\u002F MCP protocol support\nmcpTool := mcptool.New(serverConn)\n```\n\n\u003C\u002Ftd>\n\u003Ctd valign=\"top\">\n\n### Production Observability\n\n```go\n\u002F\u002F Start Langfuse integration\nclean, _ := langfuse.Start(ctx)\ndefer clean(ctx)\n\nrunner := runner.NewRunner(\"app\", agent)\n\u002F\u002F Run with Langfuse attributes\nevents, _ := runner.Run(ctx, \"user-1\", \"session-1\", \n    model.NewUserMessage(\"Hello\"),\n    agent.WithSpanAttributes(\n        attribute.String(\"langfuse.user.id\", \"user-1\"),\n        attribute.String(\"langfuse.session.id\", \"session-1\"),\n    ))\n```\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd valign=\"top\">\n\n### Agent Skills\n\n```go\n\u002F\u002F Skills are folders with a SKILL.md spec.\nrepo, _ := skill.NewFSRepository(\".\u002Fskills\")\n\n\u002F\u002F Let the agent load and run skills on demand.\ntools := []tool.Tool{\n    skilltool.NewLoadTool(repo),\n    skilltool.NewRunTool(repo, localexec.New()),\n}\n```\n\n`NewFSRepository` also accepts an HTTP(S) URL (for example, a `.zip` or\n`.tar.gz` archive). The payload is downloaded and cached locally (set\n`SKILLS_CACHE_DIR` to override the cache location).\n\n`NewFSRepository` also accepts multiple roots, which is useful for\ncombining shared skills with user-private skills. In a long-lived\nprocess, call `repo.Refresh()` after installing, deleting, or renaming a\nskill so the next turn sees the updated skill set.\n\nIf you wire Skills through `LLMAgent` with `llmagent.WithCodeExecutor(...)`,\nconsider also setting\n`llmagent.WithEnableCodeExecutionResponseProcessor(false)` so Markdown fenced\ncode blocks embedded in assistant text do not auto-execute while `skill_run` is\nenabled.\n\n\u003C\u002Ftd>\n\u003Ctd valign=\"top\">\n\n### Evaluation & Benchmarks\n\n```go\nevaluator, _ := evaluation.New(\"app\", runner, evaluation.WithNumRuns(3))\ndefer evaluator.Close()\nresult, _ := evaluator.Evaluate(ctx, \"math-basic\")\n_ = result.OverallStatus\n```\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## Table of Contents\n\n- [tRPC-Agent-Go](#trpc-agent-go)\n  - [Use Cases](#use-cases)\n  - [Key Features](#key-features)\n    - [Multi-Agent Orchestration](#multi-agent-orchestration)\n    - [Advanced Memory System](#advanced-memory-system)\n    - [Rich Tool Integration](#rich-tool-integration)\n    - [Production Observability](#production-observability)\n    - [Agent Skills](#agent-skills)\n    - [Evaluation \\& Benchmarks](#evaluation--benchmarks)\n  - [Table of Contents](#table-of-contents)\n  - [Documentation](#documentation)\n  - [Quick Start](#quick-start)\n    - [Prerequisites](#prerequisites)\n    - [Run the Example](#run-the-example)\n    - [Basic Usage](#basic-usage)\n    - [Stop \u002F Cancel a Run](#stop--cancel-a-run)\n  - [Examples](#examples)\n    - [1. Tool Usage](#1-tool-usage)\n    - [2. LLM-Only Agent](#2-llm-only-agent)\n    - [3. Multi-Agent Runners](#3-multi-agent-runners)\n    - [4. Graph Agent](#4-graph-agent)\n    - [5. Memory](#5-memory)\n    - [6. Knowledge](#6-knowledge)\n    - [7. Telemetry \\& Tracing](#7-telemetry--tracing)\n    - [8. MCP Integration](#8-mcp-integration)\n    - [9. AG-UI Demo](#9-ag-ui-demo)\n    - [10. Evaluation](#10-evaluation)\n    - [11. Agent Skills](#11-agent-skills)\n    - [12. Artifacts](#12-artifacts)\n    - [13. A2A Interop](#13-a2a-interop)\n    - [14. Gateway Server](#14-gateway-server)\n  - [Architecture Overview](#architecture-overview)\n    - [**Execution Flow**](#execution-flow)\n  - [Using Built-in Agents](#using-built-in-agents)\n    - [Multi-Agent Collaboration Example](#multi-agent-collaboration-example)\n  - [Contributing](#contributing)\n    - [**Ways to Contribute**](#ways-to-contribute)\n    - [**Quick Contribution Setup**](#quick-contribution-setup)\n  - [Acknowledgements](#acknowledgements)\n    - [**Enterprise Validation**](#enterprise-validation)\n    - [**Open Source Inspiration**](#open-source-inspiration)\n  - [Star History](#star-history)\n  - [License](#license)\n    - [**Star us on GitHub** • **Report Issues** • **Join Discussions**](#star-us-on-github--report-issues--join-discussions)\n\n## Documentation\n\nReady to dive into tRPC-Agent-Go? Our [documentation](https:\u002F\u002Ftrpc-group.github.io\u002Ftrpc-agent-go\u002F) covers everything from basic concepts to advanced techniques, helping you build powerful AI applications with confidence. Whether you're new to AI agents or an experienced developer, you'll find detailed guides, practical examples, and best practices to accelerate your development journey.\n\n## Quick Start\n\n> **See it in Action**: _[Demo GIF placeholder - showing agent reasoning and tool usage]_\n\n### Prerequisites\n\n- Go 1.21 or later\n- LLM provider API key (OpenAI, DeepSeek, etc.)\n- 5 minutes to build your first intelligent agent\n\n### Run the Example\n\n**Get started in 3 simple steps:**\n\n```bash\n# 1. Clone and setup\ngit clone https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go.git\ncd trpc-agent-go\n\n# 2. Configure your LLM\nexport OPENAI_API_KEY=\"your-api-key-here\"\nexport OPENAI_BASE_URL=\"your-base-url-here\"  # Optional\n\n# 3. Run your first agent!\ncd examples\u002Frunner\ngo run . -model=\"gpt-4o-mini\" -streaming=true\n```\n\n**What you'll see:**\n\n- **Interactive chat** with your AI agent\n- **Real-time streaming** responses\n- **Tool usage** (calculator + time tools)\n- **Multi-turn conversations** with memory\n\nTry asking: \"What's the current time? Then calculate 15 \\* 23 + 100\"\n\n### Basic Usage\n\n```go\npackage main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n\n    \"trpc.group\u002Ftrpc-go\u002Ftrpc-agent-go\u002Fagent\u002Fllmagent\"\n    \"trpc.group\u002Ftrpc-go\u002Ftrpc-agent-go\u002Fmodel\"\n    \"trpc.group\u002Ftrpc-go\u002Ftrpc-agent-go\u002Fmodel\u002Fopenai\"\n    \"trpc.group\u002Ftrpc-go\u002Ftrpc-agent-go\u002Frunner\"\n    \"trpc.group\u002Ftrpc-go\u002Ftrpc-agent-go\u002Ftool\"\n    \"trpc.group\u002Ftrpc-go\u002Ftrpc-agent-go\u002Ftool\u002Ffunction\"\n)\n\nfunc main() {\n    \u002F\u002F Create model.\n    modelInstance := openai.New(\"deepseek-chat\",\n        openai.WithVariant(openai.VariantDeepSeek),\n    )\n\n    \u002F\u002F Create tool.\n    calculatorTool := function.NewFunctionTool(\n        calculator,\n        function.WithName(\"calculator\"),\n        function.WithDescription(\"Execute addition, subtraction, multiplication, and division. \"+\n            \"Parameters: a, b are numeric values, op takes values add\u002Fsub\u002Fmul\u002Fdiv; \"+\n            \"returns result as the calculation result.\"),\n    )\n\n    \u002F\u002F Enable streaming output.\n    genConfig := model.GenerationConfig{\n        Stream: true,\n    }\n\n    \u002F\u002F Create Agent.\n    agent := llmagent.New(\"assistant\",\n        llmagent.WithModel(modelInstance),\n        llmagent.WithTools([]tool.Tool{calculatorTool}),\n        llmagent.WithGenerationConfig(genConfig),\n    )\n\n    \u002F\u002F Create Runner.\n    runner := runner.NewRunner(\"calculator-app\", agent)\n\n    \u002F\u002F Execute conversation.\n    ctx := context.Background()\n    events, err := runner.Run(ctx,\n        \"user-001\",\n        \"session-001\",\n        model.NewUserMessage(\"Calculate what 2+3 equals\"),\n    )\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    \u002F\u002F Process event stream.\n    for event := range events {\n        if event.Object == \"chat.completion.chunk\" {\n            fmt.Print(event.Response.Choices[0].Delta.Content)\n        }\n    }\n    fmt.Println()\n}\n\nfunc calculator(ctx context.Context, req calculatorReq) (calculatorRsp, error) {\n    var result float64\n    switch req.Op {\n    case \"add\", \"+\":\n        result = req.A + req.B\n    case \"sub\", \"-\":\n        result = req.A - req.B\n    case \"mul\", \"*\":\n        result = req.A * req.B\n    case \"div\", \"\u002F\":\n        result = req.A \u002F req.B\n\tdefault:\n\t\treturn calculatorRsp{}, fmt.Errorf(\"invalid operation: %s\", req.Op)\n    }\n    return calculatorRsp{Result: result}, nil\n}\n\ntype calculatorReq struct {\n    A  float64 `json:\"A\"  jsonschema:\"description=First integer operand,required\"`\n    B  float64 `json:\"B\"  jsonschema:\"description=Second integer operand,required\"`\n    Op string  `json:\"Op\" jsonschema:\"description=Operation type,enum=add,enum=sub,enum=mul,enum=div,required\"`\n}\n\ntype calculatorRsp struct {\n    Result float64 `json:\"result\"`\n}\n```\n\n### Dynamic Agent per Request\n\nSometimes your Agent must be created **per request** (for example: different\nprompt, model, tools, sandbox instance). In that case, you can let Runner build\na fresh Agent for every `Run(...)`:\n\n```go\nr := runner.NewRunnerWithAgentFactory(\n    \"my-app\",\n    \"assistant\",\n    func(ctx context.Context, ro agent.RunOptions) (agent.Agent, error) {\n        \u002F\u002F Use ro to build an Agent for this request.\n        a := llmagent.New(\"assistant\",\n            llmagent.WithInstruction(ro.Instruction),\n        )\n        return a, nil\n    },\n)\n\nevents, err := r.Run(ctx,\n    \"user-001\",\n    \"session-001\",\n    model.NewUserMessage(\"Hello\"),\n    agent.WithInstruction(\"You are a helpful assistant.\"),\n)\n_ = events\n_ = err\n```\n\n### Stop \u002F Cancel a Run\n\nIf you want to interrupt a running agent, **cancel the context** you passed to\n`Runner.Run` (recommended). This stops model calls and tool calls safely and\nlets the runner clean up.\n\nImportant: **do not** just “break” your event loop and walk away — the agent\ngoroutine may keep running and can block on channel writes. Always cancel, then\nkeep draining the event channel until it is closed.\n\n#### Option A: Ctrl+C (terminal programs)\n\nConvert Ctrl+C into context cancellation:\n\n```go\nctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)\ndefer stop()\n\nevents, err := r.Run(ctx, userID, sessionID, message)\nif err != nil {\n    return err\n}\nfor range events {\n    \u002F\u002F Drain until the runner stops (ctx canceled or run completed).\n}\n```\n\n#### Option B: Cancel from your code\n\n```go\nctx, cancel := context.WithCancel(context.Background())\ndefer cancel()\n\nevents, err := r.Run(ctx, userID, sessionID, message)\nif err != nil {\n    return err\n}\n\ngo func() {\n    time.Sleep(2 * time.Second)\n    cancel()\n}()\n\nfor range events {\n    \u002F\u002F Keep draining until the channel is closed.\n}\n```\n\n#### Option C: Cancel by `requestID` (for servers \u002F background runs)\n\n```go\nrequestID := \"req-123\"\nevents, err := r.Run(ctx, userID, sessionID, message,\n    agent.WithRequestID(requestID),\n)\n\nmr := r.(runner.ManagedRunner)\n_ = mr.Cancel(requestID)\n```\n\nFor more details (including detached cancellation, resume, and server cancel\nroutes), see `docs\u002Fmkdocs\u002Fen\u002Frunner.md` and `docs\u002Fmkdocs\u002Fen\u002Fagui.md`.\n\n## Examples\n\nThe `examples` directory contains runnable demos covering every major feature.\n\n### 1. Tool Usage\n\n- [examples\u002Fagenttool](examples\u002Fagenttool) – Wrap agents as callable tools.\n- [examples\u002Fmultitools](examples\u002Fmultitools) – Multiple tools orchestration.\n- [examples\u002Fduckduckgo](examples\u002Fduckduckgo) – Web search tool integration.\n- [examples\u002Ffiletoolset](examples\u002Ffiletoolset) – File operations as tools.\n- [examples\u002Ffileinput](examples\u002Ffileinput) – Provide files as inputs.\n- [examples\u002Fagenttool](examples\u002Fagenttool) shows streaming and non-streaming\n  patterns.\n\n### 2. LLM-Only Agent\n\nExample: [examples\u002Fllmagent](examples\u002Fllmagent)\n\n- Wrap any chat-completion model as an `LLMAgent`.\n- Configure system instructions, temperature, max tokens, etc.\n- Receive incremental `event.Event` updates while the model streams.\n\n### 3. Multi-Agent Runners\n\nExample: [examples\u002Fmultiagent](examples\u002Fmultiagent)\n\n- **ChainAgent** – linear pipeline of sub-agents.\n- **ParallelAgent** – run sub-agents concurrently and merge results.\n- **CycleAgent** – iterate until a termination condition is met.\n\n### 4. Graph Agent\n\nExample: [examples\u002Fgraph](examples\u002Fgraph)\n\n- **GraphAgent** – demonstrates building and executing complex, conditional\n  workflows using the `graph` and `agent\u002Fgraph` packages. It shows\n  how to construct a graph-based agent, manage state safely, implement\n  conditional routing, and orchestrate execution with the Runner.\n\n- Multi-conditional fan-out routing:\n\n```go\n\u002F\u002F Return multiple branch keys and run targets in parallel.\nsg := graph.NewStateGraph(schema)\nsg.AddNode(\"router\", func(ctx context.Context, s graph.State) (any, error) {\n    return nil, nil\n})\nsg.AddNode(\"A\", func(ctx context.Context, s graph.State) (any, error) {\n    return graph.State{\"a\": 1}, nil\n})\nsg.AddNode(\"B\", func(ctx context.Context, s graph.State) (any, error) {\n    return graph.State{\"b\": 1}, nil\n})\nsg.SetEntryPoint(\"router\")\nsg.AddMultiConditionalEdges(\n    \"router\",\n    func(ctx context.Context, s graph.State) ([]string, error) {\n        return []string{\"goA\", \"goB\"}, nil\n    },\n    map[string]string{\"goA\": \"A\", \"goB\": \"B\"}, \u002F\u002F Path map or ends map\n)\nsg.SetFinishPoint(\"A\").SetFinishPoint(\"B\")\n```\n\n### 5. Memory\n\nExample: [examples\u002Fmemory](examples\u002Fmemory)\n\n- In‑memory and Redis memory services with CRUD, search and tool integration.\n- How to configure, call tools and customize prompts.\n\n### 6. Knowledge\n\nExample: [examples\u002Fknowledge](examples\u002Fknowledge)\n\n- Basic RAG example: load sources, embed to a vector store, and search.\n- How to use conversation context and tune loading\u002Fconcurrency options.\n\n### 7. Telemetry & Tracing\n\nExample: [examples\u002Ftelemetry](examples\u002Ftelemetry)\n\n- OpenTelemetry hooks across model, tool and runner layers.\n- Export traces to OTLP endpoint for real-time analysis.\n\n### 8. MCP Integration\n\nExample: [examples\u002Fmcptool](examples\u002Fmcptool)\n\n- Wrapper utilities around **trpc-mcp-go**, an implementation of the\n  **Model Context Protocol (MCP)**.\n- Provides structured prompts, tool calls, resource and session messages that\n  follow the MCP specification.\n- Enables dynamic tool execution and context-rich interactions between agents\n  and LLMs.\n\n### 9. AG-UI Demo\n\nExample: [examples\u002Fagui](examples\u002Fagui)\n\n- Exposes a Runner through the AG-UI (Agent-User Interaction) protocol.\n- Built-in Server-Sent Events (SSE) server, plus client samples (for example,\n  CopilotKit and TDesign Chat).\n\n### 10. Evaluation\n\nExample: [examples\u002Fevaluation](examples\u002Fevaluation)\n\n- Evaluate an agent with repeatable eval sets and pluggable metrics.\n- Includes local file-backed runs and in-memory runs.\n\n### 11. Agent Skills\n\nExamples: [examples\u002Fskillrun](examples\u002Fskillrun),\n[examples\u002Fskillfind](examples\u002Fskillfind)\n\n- Skills are folders with a `SKILL.md` spec + optional docs\u002Fscripts.\n- Built-in tools: `skill_load`, `skill_list_docs`, `skill_select_docs`,\n  `skill_run`, and (when the executor supports interactive sessions)\n  `skill_exec`, `skill_write_stdin`, `skill_poll_session`,\n  `skill_kill_session`.\n- `skill_run` is the default one-shot command runner in an isolated\n  workspace.\n- `skill_exec` and the session tools cover interactive stdin\u002FTTY flows\n  without inlining full scripts into the prompt. They are registered\n  only when the code executor exposes `InteractiveProgramRunner`\n  (or falls back to a local engine that does).\n- `skill.NewFSRepository(...)` can scan multiple roots, such as a shared\n  skills directory plus a user-private directory. Use\n  `(*skill.FSRepository).Refresh()` after skill installation or removal\n  in long-lived processes.\n- Prefer using `skill_run` only for commands required by the selected skill\n  docs, not for generic shell exploration.\n- When `LLMAgent` uses `WithCodeExecutor(...)` only to support `skill_run`,\n  disable the response code execution processor with\n  `llmagent.WithEnableCodeExecutionResponseProcessor(false)`. The\n  skill-focused examples (`examples\u002Fskill`, `examples\u002Fskillrun`,\n  `examples\u002Fskilldynamicschema`, and\n  `examples\u002Fstructuredoutputskills`) follow this pattern so fenced code\n  blocks embedded in assistant text do not auto-execute.\n- `examples\u002Fskillfind` demonstrates a real end-to-end discovery flow:\n  the model uses a built-in `skill-find` skill to search the public web,\n  install a public GitHub skill into a user-private directory, refresh\n  the repository, and use the new skill in the same conversation.\n  Local execution stays off by default and can be enabled explicitly\n  when you want to run an installed skill.\n\n### 12. Artifacts\n\nExample: [examples\u002Fartifact](examples\u002Fartifact)\n\n- Save and retrieve versioned files (images, text, reports) produced by tools.\n- Supports multiple backends (in-memory, S3, COS).\n\n### 13. A2A Interop\n\nExample: [examples\u002Fa2aadk](examples\u002Fa2aadk)\n\n- Agent-to-Agent (A2A) interop with an ADK Python A2A server.\n- Demonstrates streaming, tool calls, and code execution across runtimes.\n\n### 14. Gateway Server\n\nExample: [openclaw](openclaw)\n\n- A minimal OpenClaw-like gateway server.\n- Stable session ids and per-session serialization.\n- Basic safety controls: allowlist + mention gating.\n- OpenClaw-like implementation (Telegram + gateway): [openclaw](openclaw)\n\nOther notable examples:\n\n- [examples\u002Fhumaninloop](examples\u002Fhumaninloop) – Human in the loop.\n- [examples\u002Fcodeexecution](examples\u002Fcodeexecution) – Secure code execution.\n\nSee individual `README.md` files in each example folder for usage details.\n\n## Architecture Overview\n\nArchitecture\n\n![architecture](docs\u002Fmkdocs\u002Fassets\u002Fimg\u002Fcomponent_architecture.svg)\n\n### **Execution Flow**\n\n1. **Runner** orchestrates the entire execution pipeline with session management\n2. **Agent** processes requests using multiple specialized components\n3. **Planner** determines the optimal strategy and tool selection\n4. **Tools** execute specific tasks (API calls, calculations, web searches)\n5. **Memory** maintains context and learns from interactions\n6. **Knowledge** provides RAG capabilities for document understanding\n\nKey packages:\n\n| Package     | Responsibility                                                                                              |\n| ----------- | ----------------------------------------------------------------------------------------------------------- |\n| `agent`     | Core execution unit, responsible for processing user input and generating responses.                        |\n| `runner`    | Agent executor, responsible for managing execution flow and connecting Session\u002FMemory Service capabilities. |\n| `model`     | Supports multiple LLM models (OpenAI, DeepSeek, etc.).                                                      |\n| `tool`      | Provides various tool capabilities (Function, MCP, DuckDuckGo, etc.).                                       |\n| `session`   | Manages user session state and events.                                                                      |\n| `memory`    | Records user long-term memory and personalized information.                                                 |\n| `knowledge` | Implements RAG knowledge retrieval capabilities.                                                            |\n| `planner`   | Provides Agent planning and reasoning capabilities.                                                         |\n| `artifact`  | Stores and retrieves versioned files produced by agents and tools (images, reports, etc.).                  |\n| `skill`     | Loads and executes reusable Agent Skills defined by `SKILL.md`.                                             |\n| `event`     | Defines event types and streaming payloads used across Runner and servers.                                  |\n| `evaluation` | Evaluates agents on eval sets using pluggable metrics and stores results.                                  |\n| `server`    | Exposes HTTP servers (Gateway, AG-UI, A2A) for integration and UIs.                                         |\n| `telemetry` | OpenTelemetry tracing and metrics instrumentation.                                                          |\n\n\n## Using Built-in Agents\n\nFor most applications you **do not** need to implement the `agent.Agent`\ninterface yourself. The framework already ships with several ready-to-use\nagents that you can compose like Lego bricks:\n\n| Agent           | Purpose                                             |\n| --------------- | --------------------------------------------------- |\n| `LLMAgent`      | Wraps an LLM chat-completion model as an agent.     |\n| `ChainAgent`    | Executes sub-agents sequentially.                   |\n| `ParallelAgent` | Executes sub-agents concurrently and merges output. |\n| `CycleAgent`    | Loops over a planner + executor until stop signal.  |\n\n### Multi-Agent Collaboration Example\n\n```go\n\u002F\u002F 1. Create a base LLM agent.\nbase := llmagent.New(\n    \"assistant\",\n    llmagent.WithModel(openai.New(\"gpt-4o-mini\")),\n)\n\n\u002F\u002F 2. Create a second LLM agent with a different instruction.\ntranslator := llmagent.New(\n    \"translator\",\n    llmagent.WithInstruction(\"Translate everything to French\"),\n    llmagent.WithModel(openai.New(\"gpt-3.5-turbo\")),\n)\n\n\u002F\u002F 3. Combine them in a chain.\npipeline := chainagent.New(\n    \"pipeline\",\n    chainagent.WithSubAgents([]agent.Agent{base, translator}),\n)\n\n\u002F\u002F 4. Run through the runner for sessions & telemetry.\nrun := runner.NewRunner(\"demo-app\", pipeline)\nevents, _ := run.Run(ctx, \"user-1\", \"sess-1\",\n    model.NewUserMessage(\"Hello!\"))\nfor ev := range events { \u002F* ... *\u002F }\n```\n\nThe composition API lets you nest chains, cycles, or parallels to build complex\nworkflows without low-level plumbing.\n\n## Contributing\n\nWe love contributions! Join our growing community of developers building the future of AI agents.\n\n### **Ways to Contribute**\n\n- **Report bugs** or suggest features via [Issues](https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fissues)\n- **Improve documentation** - help others learn faster\n- **Submit PRs** - bug fixes, new features, or examples\n- **Share your use cases** - inspire others with your agent applications\n\n### **Quick Contribution Setup**\n\n```bash\n# Fork & clone the repo\ngit clone https:\u002F\u002Fgithub.com\u002FYOUR_USERNAME\u002Ftrpc-agent-go.git\ncd trpc-agent-go\n\n# Run tests to ensure everything works\ngo test .\u002F...\ngo vet .\u002F...\n\n# Make your changes and submit a PR!\n```\n\n**Please read** [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines and coding standards.\n\n## Acknowledgements\n\n### **Enterprise Validation**\n\nSpecial thanks to Tencent's business units including **Tencent Yuanbao**, **Tencent Video**, **Tencent News**, **IMA**, and **QQ Music** for their invaluable support and real-world validation. Production usage drives framework excellence!\n\n### **Open Source Inspiration**\n\nInspired by amazing frameworks like **ADK**, **Agno**, **CrewAI**, **AutoGen**, and many others. Standing on the shoulders of giants!\n\n---\n\n## Star History\n\n[![Star History Chart](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftrpc-group_trpc-agent-go_readme_4e07a11620a1.png)](https:\u002F\u002Fstar-history.com\u002F#trpc-group\u002Ftrpc-agent-go&Date)\n\n---\n\n## License\n\nLicensed under the **Apache 2.0 License** - see [LICENSE](LICENSE) file for details.\n\n---\n\n\u003Cdiv align=\"center\">\n\n### **Star us on GitHub** • **Report Issues** • **Join Discussions**\n\n**Built with love by the tRPC-Agent-Go team**\n\n_Empowering developers to build the next generation of intelligent applications_\n\n\u003C\u002Fdiv>\n","中文 | [English](README.zh_CN.md)\n\n# tRPC-Agent-Go\n\n[![Go Reference](https:\u002F\u002Fpkg.go.dev\u002Fbadge\u002Ftrpc.group\u002Ftrpc-go\u002Ftrpc-agent-go.svg)](https:\u002F\u002Fpkg.go.dev\u002Ftrpc.group\u002Ftrpc-go\u002Ftrpc-agent-go)\n[![Go Report Card](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftrpc-group_trpc-agent-go_readme_2b4a70945b89.png)](https:\u002F\u002Fgoreportcard.com\u002Freport\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go)\n[![LICENSE](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache--2.0-green.svg)](https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fblob\u002Fmain\u002FLICENSE)\n[![Releases](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Frelease\u002Ftrpc-group\u002Ftrpc-agent-go.svg?style=flat-square)](https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Freleases)\n[![Tests](https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Factions\u002Fworkflows\u002Fprc.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Factions\u002Fworkflows\u002Fprc.yml)\n[![Coverage](https:\u002F\u002Fcodecov.io\u002Fgh\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fapp.codecov.io\u002Fgh\u002Ftrpc-group\u002Ftrpc-agent-go\u002Ftree\u002Fmain)\n[![Documentation](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocs-Website-blue.svg)](https:\u002F\u002Ftrpc-group.github.io\u002Ftrpc-agent-go\u002F)\n\n**一款功能强大的 Go 框架，用于构建智能代理系统**，彻底改变您创建 AI 应用的方式。轻松构建能够思考、记忆、协作并采取行动的自主代理。\n\n**为什么选择 tRPC-Agent-Go？**\n\n- **智能推理**：先进的分层规划器和多代理编排\n- **丰富的工具生态**：与外部 API、数据库和服务无缝集成\n- **持久化内存**：长期状态管理和上下文感知能力\n- **多代理协作**：链式、并行和基于图的代理工作流\n- **GraphAgent**：类型安全的图工作流，支持多条件路由，功能上等同于 Go 语言中的 LangGraph\n- **代理技能**：可重用的 `SKILL.md` 工作流，具备安全执行机制\n- **工件管理**：对代理和工具生成的文件进行版本化存储\n- **提示缓存**：自动优化成本，缓存内容可节省 90% 的费用\n- **评估与基准测试**：提供评估集和指标，以衡量随时间推移的质量变化\n- **UI 和服务器集成**：AG-UI（代理-用户交互）以及代理间互操作性（A2A）\n- **生产就绪**：内置遥测、追踪和企业级可靠性\n- **高性能**：针对可扩展性和低延迟进行了优化\n\n## 使用场景\n\n**非常适合用于构建：**\n\n- **客户支持机器人**：能够理解上下文并解决复杂问题的智能代理\n- **数据分析助手**：查询数据库、生成报告并提供洞察的代理\n- **DevOps 自动化**：智能部署、监控和事件响应系统\n- **业务流程自动化**：具备人工介入能力的多步骤工作流\n- **研究与知识管理**：基于 RAG 的代理，用于文档分析和问答\n\n## 核心特性\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd width=\"50%\" valign=\"top\">\n\n### 多代理编排\n\n```go\n\u002F\u002F 将代理串联起来以实现复杂的工作流\npipeline := chainagent.New(\"pipeline\",\n    chainagent.WithSubAgents([]agent.Agent{\n        analyzer, processor, reporter,\n    }))\n\n\u002F\u002F 或者并行运行它们\nparallel := parallelagent.New(\"concurrent\",\n    parallelagent.WithSubAgents(tasks))\n```\n\n\u003C\u002Ftd>\n\u003Ctd width=\"50%\" valign=\"top\">\n\n### 高级内存系统\n\n```go\n\u002F\u002F 带搜索功能的持久化内存\nmemory := memorysvc.NewInMemoryService()\nagent := llmagent.New(\"assistant\",\n    llmagent.WithTools(memory.Tools()),\n    llmagent.WithModel(model))\n\n\u002F\u002F 在运行器级别管理的内存服务\nrunner := runner.NewRunner(\"app\", agent,\n    runner.WithMemoryService(memory))\n\n\u002F\u002F 代理可以在不同会话之间记住上下文\n```\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd valign=\"top\">\n\n### 丰富的工具集成\n\n```go\n\u002F\u002F 任何函数都可以成为工具\ncalculator := function.NewFunctionTool(\n    calculate,\n    function.WithName(\"calculator\"),\n    function.WithDescription(\"数学运算\"))\n\n\u002F\u002F 支持 MCP 协议\nmcpTool := mcptool.New(serverConn)\n```\n\n\u003C\u002Ftd>\n\u003Ctd valign=\"top\">\n\n### 生产环境可观测性\n\n```go\n\u002F\u002F 启动 Langfuse 集成\nclean, _ := langfuse.Start(ctx)\ndefer clean(ctx)\n\nrunner := runner.NewRunner(\"app\", agent)\n\u002F\u002F 使用 Langfuse 属性运行\nevents, _ := runner.Run(ctx, \"user-1\", \"session-1\", \n    model.NewUserMessage(\"Hello\"),\n    agent.WithSpanAttributes(\n        attribute.String(\"langfuse.user.id\", \"user-1\"),\n        attribute.String(\"langfuse.session.id\", \"session-1\"),\n    ))\n```\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd valign=\"top\">\n\n### 代理技能\n\n```go\n\u002F\u002F 技能是以 SKILL.md 规范定义的文件夹。\nrepo, _ := skill.NewFSRepository(\".\u002Fskills\")\n\n\u002F\u002F 让代理按需加载和运行技能。\ntools := []tool.Tool{\n    skilltool.NewLoadTool(repo),\n    skilltool.NewRunTool(repo, localexec.New()),\n}\n```\n\n`NewFSRepository` 也接受 HTTP(S) URL（例如 `.zip` 或 `.tar.gz` 归档）。有效载荷会被下载并缓存在本地（可通过设置 `SKILLS_CACHE_DIR` 来覆盖缓存位置）。\n\n`NewFSRepository` 还支持多个根目录，这在将共享技能与用户私有技能结合使用时非常有用。对于长期运行的流程，在安装、删除或重命名技能后调用 `repo.Refresh()`，以便下一次运行能看到更新后的技能集合。\n\n如果您通过 `LLMAgent` 并使用 `llmagent.WithCodeExecutor(...)` 来接入技能，请同时设置 `llmagent.WithEnableCodeExecutionResponseProcessor(false)`，这样当 `skill_run` 功能启用时，助手文本中嵌入的 Markdown 封闭代码块就不会自动执行。\n\n\u003C\u002Ftd>\n\u003Ctd valign=\"top\">\n\n### 评估与基准测试\n\n```go\nevaluator, _ := evaluation.New(\"app\", runner, evaluation.WithNumRuns(3))\ndefer evaluator.Close()\nresult, _ := evaluator.Evaluate(ctx, \"math-basic\")\n_ = result.OverallStatus\n```\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## 目录\n\n- [tRPC-Agent-Go](#trpc-agent-go)\n  - [使用场景](#use-cases)\n  - [关键特性](#key-features)\n    - [多智能体编排](#multi-agent-orchestration)\n    - [高级记忆系统](#advanced-memory-system)\n    - [丰富的工具集成](#rich-tool-integration)\n    - [生产环境可观测性](#production-observability)\n    - [智能体技能](#agent-skills)\n    - [评估与基准测试](#evaluation--benchmarks)\n  - [目录](#table-of-contents)\n  - [文档](#documentation)\n  - [快速入门](#quick-start)\n    - [先决条件](#prerequisites)\n    - [运行示例](#run-the-example)\n    - [基本用法](#basic-usage)\n    - [停止\u002F取消运行](#stop--cancel-a-run)\n  - [示例](#examples)\n    - [1. 工具使用](#1-tool-usage)\n    - [2. 纯LLM智能体](#2-llm-only-agent)\n    - [3. 多智能体运行器](#3-multi-agent-runners)\n    - [4. 图形化智能体](#4-graph-agent)\n    - [5. 记忆](#5-memory)\n    - [6. 知识](#6-knowledge)\n    - [7. 遥测与追踪](#7-telemetry--tracing)\n    - [8. MCP集成](#8-mcp-integration)\n    - [9. AG-UI演示](#9-ag-ui-demo)\n    - [10. 评估](#10-evaluation)\n    - [11. 智能体技能](#11-agent-skills)\n    - [12. 构建产物](#12-artifacts)\n    - [13. A2A互操作](#13-a2a-interop)\n    - [14. 网关服务器](#14-gateway-server)\n  - [架构概览](#architecture-overview)\n    - [**执行流程**](#execution-flow)\n  - [使用内置智能体](#using-built-in-agents)\n    - [多智能体协作示例](#multi-agent-collaboration-example)\n  - [贡献](#contributing)\n    - [**贡献方式**](#ways-to-contribute)\n    - [**快速贡献设置**](#quick-contribution-setup)\n  - [致谢](#acknowledgements)\n    - [**企业级验证**](#enterprise-validation)\n    - [**开源灵感**](#open-source-inspiration)\n  - [星标历史](#star-history)\n  - [许可证](#license)\n    - [**在GitHub上关注我们** • **报告问题** • **参与讨论**](#star-us-on-github--report-issues--join-discussions)\n\n## 文档\n\n准备好深入探索tRPC-Agent-Go了吗？我们的[文档](https:\u002F\u002Ftrpc-group.github.io\u002Ftrpc-agent-go\u002F)涵盖了从基础概念到高级技术的方方面面，助您自信地构建强大的AI应用。无论您是AI智能体的新手还是经验丰富的开发者，都能在这里找到详尽的指南、实用的示例以及最佳实践，加速您的开发之旅。\n\n## 快速入门\n\n> **亲眼见证其运作**：_【演示GIF占位符——展示智能体推理及工具使用】_\n\n### 先决条件\n\n- Go 1.21或更高版本\n- LLM提供商API密钥（OpenAI、DeepSeek等）\n- 5分钟即可搭建您的第一个智能体\n\n### 运行示例\n\n**只需3步即可开始：**\n\n```bash\n# 1. 克隆并设置\ngit clone https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go.git\ncd trpc-agent-go\n\n# 2. 配置您的LLM\nexport OPENAI_API_KEY=\"your-api-key-here\"\nexport OPENAI_BASE_URL=\"your-base-url-here\"  # 可选\n\n# 3. 运行您的第一个智能体！\ncd examples\u002Frunner\ngo run . -model=\"gpt-4o-mini\" -streaming=true\n```\n\n**您将看到：**\n\n- 与AI智能体的**交互式对话**\n- **实时流式**响应\n- **工具使用**（计算器+时间工具）\n- **多轮对话**并具备记忆功能\n\n您可以尝试提问：“现在几点了？然后计算15乘以23再加上100。”\n\n### 基本用法\n\n```go\npackage main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n\n    \"trpc.group\u002Ftrpc-go\u002Ftrpc-agent-go\u002Fagent\u002Fllmagent\"\n    \"trpc.group\u002Ftrpc-go\u002Ftrpc-agent-go\u002Fmodel\"\n    \"trpc.group\u002Ftrpc-go\u002Ftrpc-agent-go\u002Fmodel\u002Fopenai\"\n    \"trpc.group\u002Ftrpc-go\u002Ftrpc-agent-go\u002Frunner\"\n    \"trpc.group\u002Ftrpc-go\u002Ftrpc-agent-go\u002Ftool\"\n    \"trpc.group\u002Ftrpc-go\u002Ftrpc-agent-go\u002Ftool\u002Ffunction\"\n)\n\nfunc main() {\n    \u002F\u002F 创建模型。\n    modelInstance := openai.New(\"deepseek-chat\",\n        openai.WithVariant(openai.VariantDeepSeek),\n    )\n\n    \u002F\u002F 创建工具。\n    calculatorTool := function.NewFunctionTool(\n        calculator,\n        function.WithName(\"calculator\"),\n        function.WithDescription(\"执行加、减、乘、除运算。\"+\n            \"参数：a、b为数值，op取值为add\u002Fsub\u002Fmul\u002Fdiv；\"+\n            \"返回结果为计算结果。\"),\n    )\n\n    \u002F\u002F 启用流式输出。\n    genConfig := model.GenerationConfig{\n        Stream: true,\n    }\n\n    \u002F\u002F 创建智能体。\n    agent := llmagent.New(\"assistant\",\n        llmagent.WithModel(modelInstance),\n        llmagent.WithTools([]tool.Tool{calculatorTool}),\n        llmagent.WithGenerationConfig(genConfig),\n    )\n\n    \u002F\u002F 创建运行器。\n    runner := runner.NewRunner(\"calculator-app\", agent)\n\n    \u002F\u002F 执行对话。\n    ctx := context.Background()\n    events, err := runner.Run(ctx,\n        \"user-001\",\n        \"session-001\",\n        model.NewUserMessage(\"计算2加3等于多少\"),\n    )\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    \u002F\u002F 处理事件流。\n    for event := range events {\n        if event.Object == \"chat.completion.chunk\" {\n            fmt.Print(event.Response.Choices[0].Delta.Content)\n        }\n    }\n    fmt.Println()\n}\n\nfunc calculator(ctx context.Context, req calculatorReq) (calculatorRsp, error) {\n    var result float64\n    switch req.Op {\n    case \"add\", \"+\":\n        result = req.A + req.B\n    case \"sub\", \"-\":\n        result = req.A - req.B\n    case \"mul\", \"*\":\n        result = req.A * req.B\n    case \"div\", \"\u002F\":\n        result = req.A \u002F req.B\n\tdefault:\n\t\treturn calculatorRsp{}, fmt.Errorf(\"无效操作：%s\", req.Op)\n    }\n    return calculatorRsp{Result: result}, nil\n}\n\ntype calculatorReq struct {\n    A  float64 `json:\"A\"  jsonschema:\"description=第一个整数操作数，必填\"`\n    B  float64 `json:\"B\"  jsonschema:\"description=第二个整数操作数，必填\"`\n    Op string  `json:\"Op\" jsonschema:\"description=运算类型，枚举值为add、sub、mul、div，必填\"`\n}\n\ntype calculatorRsp struct {\n    Result float64 `json:\"result\"`\n}\n```\n\n### 每次请求动态创建智能体\n\n有时您的智能体需要**根据每次请求**来创建（例如：不同的提示词、模型、工具、沙箱实例）。在这种情况下，可以让运行器为每一次`Run(...)`构建一个新的智能体：\n\n```go\nr := runner.NewRunnerWithAgentFactory(\n    \"my-app\",\n    \"assistant\",\n    func(ctx context.Context, ro agent.RunOptions) (agent.Agent, error) {\n        \u002F\u002F 使用ro为本次请求构建智能体。\n        a := llmagent.New(\"assistant\",\n            llmagent.WithInstruction(ro.Instruction),\n        )\n        return a, nil\n    },\n)\n\nevents, err := r.Run(ctx,\n    \"user-001\",\n    \"session-001\",\n    model.NewUserMessage(\"你好\"),\n    agent.WithInstruction(\"你是一个乐于助人的助手。\"),\n)\n_ = events\n_ = err\n```\n\n### 停止\u002F取消运行\n\n如果您想中断正在运行的代理，建议**取消传递给 `Runner.Run` 的上下文**。这样做可以安全地停止模型调用和工具调用，并让运行器进行清理。\n\n重要提示：**不要**只是简单地“中断”事件循环就退出——代理协程可能会继续运行，并阻塞在通道写入操作上。务必先取消上下文，然后持续从事件通道中读取数据，直到通道被关闭。\n\n#### 选项 A：Ctrl+C（终端程序）\n\n将 Ctrl+C 转换为上下文取消：\n\n```go\nctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)\ndefer stop()\n\nevents, err := r.Run(ctx, userID, sessionID, message)\nif err != nil {\n    return err\n}\nfor range events {\n    \u002F\u002F 持续读取，直到运行器停止（上下文被取消或运行完成）。\n}\n```\n\n#### 选项 B：从代码中取消\n\n```go\nctx, cancel := context.WithCancel(context.Background())\ndefer cancel()\n\nevents, err := r.Run(ctx, userID, sessionID, message)\nif err != nil {\n    return err\n}\n\ngo func() {\n    time.Sleep(2 * time.Second)\n    cancel()\n}()\n\nfor range events {\n    \u002F\u002F 继续读取，直到通道被关闭。\n}\n```\n\n#### 选项 C：按 `requestID` 取消（适用于服务器或后台运行）\n\n```go\nrequestID := \"req-123\"\nevents, err := r.Run(ctx, userID, sessionID, message,\n    agent.WithRequestID(requestID),\n)\n\nmr := r.(runner.ManagedRunner)\n_ = mr.Cancel(requestID)\n```\n\n更多详细信息（包括分离式取消、恢复以及服务器端取消流程），请参阅 `docs\u002Fmkdocs\u002Fen\u002Frunner.md` 和 `docs\u002Fmkdocs\u002Fen\u002Fagui.md`。\n\n## 示例\n\n`examples` 目录包含可运行的演示，涵盖了所有主要功能。\n\n### 1. 工具使用\n\n- [examples\u002Fagenttool](examples\u002Fagenttool) — 将代理封装为可调用工具。\n- [examples\u002Fmultitools](examples\u002Fmultitools) — 多工具编排。\n- [examples\u002Fduckduckgo](examples\u002Fduckduckgo) — 集成网络搜索工具。\n- [examples\u002Ffiletoolset](examples\u002Ffiletoolset) — 将文件操作封装为工具。\n- [examples\u002Ffileinput](examples\u002Ffileinput) — 提供文件作为输入。\n- [examples\u002Fagenttool](examples\u002Fagenttool) 展示了流式与非流式模式。\n\n### 2. 仅使用 LLM 的代理\n\n示例：[examples\u002Fllmagent](examples\u002Fllmagent)\n\n- 可以将任何聊天补全模型封装为 `LLMAgent`。\n- 配置系统指令、温度、最大令牌数等参数。\n- 在模型流式输出时，接收增量式的 `event.Event` 更新。\n\n### 3. 多代理运行器\n\n示例：[examples\u002Fmultiagent](examples\u002Fmultiagent)\n\n- **ChainAgent** — 子代理的线性流水线。\n- **ParallelAgent** — 并发运行子代理并合并结果。\n- **CycleAgent** — 循环执行，直到满足终止条件。\n\n### 4. 图形化代理\n\n示例：[examples\u002Fgraph](examples\u002Fgraph)\n\n- **GraphAgent** — 使用 `graph` 和 `agent\u002Fgraph` 包展示如何构建和执行复杂的条件工作流。它演示了如何构造基于图的代理、安全地管理状态、实现条件路由，以及通过运行器编排执行过程。\n  \n  多条件分支路由示例：\n  \n  ```go\n  \u002F\u002F 返回多个分支键和并行执行的目标。\n  sg := graph.NewStateGraph(schema)\n  sg.AddNode(\"router\", func(ctx context.Context, s graph.State) (any, error) {\n      return nil, nil\n  })\n  sg.AddNode(\"A\", func(ctx context.Context, s graph.State) (any, error) {\n      return graph.State{\"a\": 1}, nil\n  })\n  sg.AddNode(\"B\", func(ctx context.Context, s graph.State) (any, error) {\n      return graph.State{\"b\": 1}, nil\n  })\n  sg.SetEntryPoint(\"router\")\n  sg.AddMultiConditionalEdges(\n      \"router\",\n      func(ctx context.Context, s graph.State) ([]string, error) {\n          return []string{\"goA\", \"goB\"}, nil\n      },\n      map[string]string{\"goA\": \"A\", \"goB\": \"B\"}, \u002F\u002F 路径映射或终点映射\n  )\n  sg.SetFinishPoint(\"A\").SetFinishPoint(\"B\")\n  ```\n\n### 5. 内存\n\n示例：[examples\u002Fmemory](examples\u002Fmemory)\n\n- 提供内存和 Redis 内存服务，支持 CRUD 操作、搜索及工具集成。\n- 展示如何配置、调用工具以及自定义提示词。\n\n### 6. 知识库\n\n示例：[examples\u002Fknowledge](examples\u002Fknowledge)\n\n- 基本的 RAG 示例：加载数据源、嵌入向量存储并进行检索。\n- 讲解如何利用对话上下文，以及调整加载和并发选项。\n\n### 7. 链路追踪与遥测\n\n示例：[examples\u002Ftelemetry](examples\u002Ftelemetry)\n\n- 在模型、工具和运行器层集成 OpenTelemetry 钩子。\n- 将追踪数据导出到 OTLP 端点，以便进行实时分析。\n\n### 8. MCP 集成\n\n示例：[examples\u002Fmcptool](examples\u002Fmcptool)\n\n- 提供围绕 **trpc-mcp-go** 的封装工具，它是 **模型上下文协议 (MCP)** 的一种实现。\n- 支持遵循 MCP 规范的结构化提示、工具调用、资源消息和会话消息。\n- 实现动态工具执行以及代理与 LLM 之间的丰富上下文交互。\n\n### 9. AG-UI 演示\n\n示例：[examples\u002Fagui](examples\u002Fagui)\n\n- 通过 AG-UI（代理-用户交互）协议暴露运行器。\n- 内置 Server-Sent Events (SSE) 服务器，并提供客户端示例（例如 CopilotKit 和 TDesign Chat）。\n\n### 10. 评估\n\n示例：[examples\u002Fevaluation](examples\u002Fevaluation)\n\n- 使用可重复的评估集和可插拔的指标来评估代理。\n- 包括本地文件驱动的运行和内存中的运行。\n\n### 11. 代理技能\n\n示例：[examples\u002Fskillrun](examples\u002Fskillrun)、[examples\u002Fskillfind](examples\u002Fskillfind)\n\n- 技能是以 `SKILL.md` 规范文件为核心，并可选包含文档或脚本的文件夹。\n- 内置工具包括：`skill_load`、`skill_list_docs`、`skill_select_docs`、`skill_run`，以及（当执行器支持交互式会话时）`skill_exec`、`skill_write_stdin`、`skill_poll_session`、`skill_kill_session`。\n- `skill_run` 是默认的一次性命令执行器，运行于隔离的工作空间中。\n- `skill_exec` 和会话相关工具用于处理交互式的标准输入\u002FTTY 流程，而无需将完整脚本内联到提示中。这些工具仅在代码执行器暴露 `InteractiveProgramRunner` 接口时注册（或回退到本地引擎实现该接口时）。\n- `skill.NewFSRepository(...)` 可以扫描多个根目录，例如共享的技能目录和用户私有的目录。在长期运行的进程中，安装或移除技能后，请调用 `(*skill.FSRepository).Refresh()` 方法刷新仓库。\n- 建议仅将 `skill_run` 用于所选技能文档中明确要求的命令，而不应用于通用的 Shell 探索任务。\n- 当 `LLMAgent` 使用 `WithCodeExecutor(...)` 仅为了支持 `skill_run` 时，可通过 `llmagent.WithEnableCodeExecutionResponseProcessor(false)` 禁用响应中的代码执行处理器。以技能为中心的示例（如 `examples\u002Fskill`、`examples\u002Fskillrun`、`examples\u002Fskilldynamicschema` 和 `examples\u002Fstructuredoutputskills`）均遵循此模式，从而避免助手文本中嵌入的代码块自动执行。\n- `examples\u002Fskillfind` 展示了一个完整的端到端发现流程：模型使用内置的 `skill-find` 技能搜索公共网络，将一个公开的 GitHub 技能安装到用户私有目录中，刷新仓库，并在同一对话中使用新技能。默认情况下，本地执行功能是关闭的，只有在需要运行已安装技能时才可显式启用。\n\n### 12. 艺术品\n\n示例：[examples\u002Fartifact](examples\u002Fartifact)\n\n- 保存并检索由工具生成的版本化文件（图像、文本、报告等）。\n- 支持多种后端存储（内存、S3、COS 等）。\n\n### 13. A2A 互操作\n\n示例：[examples\u002Fa2aadk](examples\u002Fa2aadk)\n\n- 与 ADK Python A2A 服务器进行代理间互操作。\n- 演示跨运行时的流式传输、工具调用和代码执行。\n\n### 14. 网关服务器\n\n示例：[openclaw](openclaw)\n\n- 一个极简的 OpenClaw 风格网关服务器。\n- 提供稳定的会话 ID 和每会话序列化功能。\n- 具备基础的安全控制机制：白名单 + 提及过滤。\n- 类似 OpenClaw 的实现（Telegram + 网关）：[openclaw](openclaw)\n\n其他值得关注的示例：\n\n- [examples\u002Fhumaninloop](examples\u002Fhumaninloop) – 人机协作。\n- [examples\u002Fcodeexecution](examples\u002Fcodeexecution) – 安全的代码执行。\n\n有关使用细节，请参阅每个示例文件夹中的 `README.md` 文件。\n\n## 架构概览\n\n架构\n\n![architecture](docs\u002Fmkdocs\u002Fassets\u002Fimg\u002Fcomponent_architecture.svg)\n\n### **执行流程**\n\n1. **Runner** 协调整个执行流水线，并管理会话。\n2. **Agent** 使用多个专用组件处理请求。\n3. **Planner** 确定最优策略和工具选择。\n4. **Tools** 执行特定任务（API 调用、计算、网络搜索等）。\n5. **Memory** 维护上下文信息，并从交互中学习。\n6. **Knowledge** 提供基于 RAG 的文档理解能力。\n\n关键包：\n\n| 包名     | 职责                                                                                              |\n| ----------- | ----------------------------------------------------------------------------------------------------------- |\n| `agent`     | 核心执行单元，负责处理用户输入并生成响应。                        |\n| `runner`    | 代理执行器，负责管理执行流程，并连接会话\u002F记忆服务的功能。 |\n| `model`     | 支持多种 LLM 模型（OpenAI、DeepSeek 等）。                                                      |\n| `tool`      | 提供各类工具能力（Function、MCP、DuckDuckGo 等）。                                       |\n| `session`   | 管理用户会话状态和事件。                                                                      |\n| `memory`    | 记录用户的长期记忆和个人化信息。                                                 |\n| `knowledge` | 实现 RAG 知识检索能力。                                                            |\n| `planner`   | 提供代理规划和推理能力。                                                         |\n| `artifact`  | 存储并检索由代理和工具生成的版本化文件（图像、报告等）。                  |\n| `skill`     | 加载并执行由 `SKILL.md` 定义的可复用代理技能。                                             |\n| `event`     | 定义 Runner 和服务器之间使用的事件类型及流式负载。                                  |\n| `evaluation` | 使用可插拔指标评估代理在评测集上的表现，并存储结果。                                  |\n| `server`    | 提供 HTTP 服务器（网关、AG-UI、A2A），用于集成和用户界面。                                         |\n| `telemetry` | 开放追踪和度量指标的监控工具。                                                          |\n\n\n## 使用内置代理\n\n对于大多数应用场景，您无需自行实现 `agent.Agent` 接口。框架已经提供了若干开箱即用的代理，您可以像搭积木一样自由组合：\n\n| 代理           | 用途                                             |\n| --------------- | --------------------------------------------------- |\n| `LLMAgent`      | 将 LLM 对话式补全模型封装为代理。     |\n| `ChainAgent`    | 依次执行子代理。                   |\n| `ParallelAgent` | 并发执行子代理，并合并输出。 |\n| `CycleAgent`    | 循环执行规划器和执行器，直到收到停止信号。  |\n\n### 多代理协作示例\n\n```go\n\u002F\u002F 1. 创建一个基础 LLM 代理。\nbase := llmagent.New(\n    \"assistant\",\n    llmagent.WithModel(openai.New(\"gpt-4o-mini\")),\n)\n\n\u002F\u002F 2. 创建另一个具有不同指令的 LLM 代理。\ntranslator := llmagent.New(\n    \"translator\",\n    llmagent.WithInstruction(\"将所有内容翻译成法语\"),\n    llmagent.WithModel(openai.New(\"gpt-3.5-turbo\")),\n)\n\n\u002F\u002F 3. 将它们组合成一个链式代理。\npipeline := chainagent.New(\n    \"pipeline\",\n    chainagent.WithSubAgents([]agent.Agent{base, translator}),\n)\n\n\u002F\u002F 4. 通过 Runner 运行会话并进行遥测。\nrun := runner.NewRunner(\"demo-app\", pipeline)\nevents, _ := run.Run(ctx, \"user-1\", \"sess-1\",\n    model.NewUserMessage(\"你好！\"))\nfor ev := range events { \u002F* ... *\u002F }\n```\n\n组合 API 允许您嵌套链式、循环式或并行式代理，从而构建复杂的流程，而无需编写底层的管道逻辑。\n\n## 贡献\n\n我们非常欢迎贡献！加入我们不断壮大的开发者社区，共同构建人工智能代理的未来。\n\n### **贡献方式**\n\n- 通过 [Issues](https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fissues) 报告问题或提出功能建议\n- 改进文档——帮助更多人更快上手\n- 提交 Pull Request（PR）——修复 bug、添加新功能或示例\n- 分享你的使用场景——用你的代理应用启发他人\n\n### **快速贡献设置**\n\n```bash\n# Fork 并克隆仓库\ngit clone https:\u002F\u002Fgithub.com\u002FYOUR_USERNAME\u002Ftrpc-agent-go.git\ncd trpc-agent-go\n\n# 运行测试以确保一切正常\ngo test .\u002F...\ngo vet .\u002F...\n\n# 进行修改并提交 PR！\n```\n\n**请阅读** [CONTRIBUTING.md](CONTRIBUTING.md)，了解详细的指南和代码规范。\n\n## 致谢\n\n### **企业级验证**\n\n特别感谢腾讯旗下包括 **腾讯元宝**、**腾讯视频**、**腾讯新闻**、**IMA** 和 **QQ 音乐** 等业务部门提供的宝贵支持与实际场景验证。生产环境中的广泛应用推动了框架的持续卓越！\n\n### **开源灵感**\n\n深受 **ADK**、**Agno**、**CrewAI**、**AutoGen** 等众多优秀框架的启发。站在巨人的肩膀上，我们才能走得更远！\n\n---\n\n## 星标历史\n\n[![星标历史图表](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftrpc-group_trpc-agent-go_readme_4e07a11620a1.png)](https:\u002F\u002Fstar-history.com\u002F#trpc-group\u002Ftrpc-agent-go&Date)\n\n---\n\n## 许可证\n\n本项目采用 **Apache 2.0 许可证** 许可——详情请参阅 [LICENSE](LICENSE) 文件。\n\n---\n\n\u003Cdiv align=\"center\">\n\n### **在 GitHub 上为我们加星** • **报告问题** • **参与讨论**\n\n**由 tRPC-Agent-Go 团队用心打造**\n\n_赋能开发者构建下一代智能应用_\n\n\u003C\u002Fdiv>","# tRPC-Agent-Go 快速上手指南\n\ntRPC-Agent-Go 是一个强大的 Go 语言框架，专为构建智能体（Agent）系统设计。它支持多智能体协作、持久化记忆、丰富的工具集成以及生产级的可观测性，帮助开发者轻松打造能思考、能记忆、能协作的 AI 应用。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **Go 版本**：Go 1.21 或更高版本。\n*   **LLM API Key**：需要准备一个大模型提供商的 API Key（如 OpenAI、DeepSeek 等）。\n*   **网络环境**：确保能够访问 GitHub 及对应的 LLM 服务接口。\n\n## 安装步骤\n\n### 1. 克隆项目\n首先，将仓库克隆到本地并进入示例目录：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go.git\ncd trpc-agent-go\n```\n\n### 2. 配置环境变量\n设置您的 LLM 提供商密钥。以 OpenAI 或兼容接口（如 DeepSeek）为例：\n\n```bash\nexport OPENAI_API_KEY=\"your-api-key-here\"\nexport OPENAI_BASE_URL=\"your-base-url-here\"  # 可选，如果是非官方端点需配置此项\n```\n\n> **提示**：国内开发者若使用 DeepSeek 等国内模型，请将 `OPENAI_BASE_URL` 指向相应的国内服务地址。\n\n### 3. 运行首个示例\n运行内置的交互式 Agent 示例，体验实时流式响应和工具调用能力：\n\n```bash\ncd examples\u002Frunner\ngo run . -model=\"gpt-4o-mini\" -streaming=true\n```\n\n启动后，您可以尝试输入：“现在几点了？然后计算 15 * 23 + 100\"，观察 Agent 如何调用时间工具和计算器工具。\n\n## 基本使用\n\n以下是一个最小化的代码示例，展示如何创建一个带有自定义工具（计算器）的 Agent 并执行对话。\n\n### 代码示例\n\n```go\npackage main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n\n    \"trpc.group\u002Ftrpc-go\u002Ftrpc-agent-go\u002Fagent\u002Fllmagent\"\n    \"trpc.group\u002Ftrpc-go\u002Ftrpc-agent-go\u002Fmodel\"\n    \"trpc.group\u002Ftrpc-go\u002Ftrpc-agent-go\u002Fmodel\u002Fopenai\"\n    \"trpc.group\u002Ftrpc-go\u002Ftrpc-agent-go\u002Frunner\"\n    \"trpc.group\u002Ftrpc-go\u002Ftrpc-agent-go\u002Ftool\"\n    \"trpc.group\u002Ftrpc-go\u002Ftrpc-agent-go\u002Ftool\u002Ffunction\"\n)\n\nfunc main() {\n    \u002F\u002F 1. 创建模型实例 (以 DeepSeek 为例)\n    modelInstance := openai.New(\"deepseek-chat\",\n        openai.WithVariant(openai.VariantDeepSeek),\n    )\n\n    \u002F\u002F 2. 定义工具 (计算器)\n    calculatorTool := function.NewFunctionTool(\n        calculator,\n        function.WithName(\"calculator\"),\n        function.WithDescription(\"Execute addition, subtraction, multiplication, and division. \"+\n            \"Parameters: a, b are numeric values, op takes values add\u002Fsub\u002Fmul\u002Fdiv; \"+\n            \"returns result as the calculation result.\"),\n    )\n\n    \u002F\u002F 3. 启用流式输出配置\n    genConfig := model.GenerationConfig{\n        Stream: true,\n    }\n\n    \u002F\u002F 4. 创建 Agent\n    agent := llmagent.New(\"assistant\",\n        llmagent.WithModel(modelInstance),\n        llmagent.WithTools([]tool.Tool{calculatorTool}),\n        llmagent.WithGenerationConfig(genConfig),\n    )\n\n    \u002F\u002F 5. 创建 Runner\n    runner := runner.NewRunner(\"calculator-app\", agent)\n\n    \u002F\u002F 6. 执行对话\n    ctx := context.Background()\n    events, err := runner.Run(ctx,\n        \"user-001\",\n        \"session-001\",\n        model.NewUserMessage(\"Calculate what 2+3 equals\"),\n    )\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    \u002F\u002F 7. 处理事件流\n    for event := range events {\n        if event.Object == \"chat.completion.chunk\" {\n            fmt.Print(event.Response.Choices[0].Delta.Content)\n        }\n    }\n    fmt.Println()\n}\n\n\u002F\u002F 工具函数实现\nfunc calculator(ctx context.Context, req calculatorReq) (calculatorRsp, error) {\n    var result float64\n    switch req.Op {\n    case \"add\", \"+\":\n        result = req.A + req.B\n    case \"sub\", \"-\":\n        result = req.A - req.B\n    case \"mul\", \"*\":\n        result = req.A * req.B\n    case \"div\", \"\u002F\":\n        result = req.A \u002F req.B\n    default:\n        return calculatorRsp{}, fmt.Errorf(\"invalid operation: %s\", req.Op)\n    }\n    return calculatorRsp{Result: result}, nil\n}\n\n\u002F\u002F 请求结构体\ntype calculatorReq struct {\n    A  float64 `json:\"A\"  jsonschema:\"description=First integer operand,required\"`\n    B  float64 `json:\"B\"  jsonschema:\"description=Second integer operand,required\"`\n    Op string  `json:\"Op\" jsonschema:\"description=Operation type,enum=add,enum=sub,enum=mul,enum=div,required\"`\n}\n\n\u002F\u002F 响应结构体\ntype calculatorRsp struct {\n    Result float64 `json:\"result\"`\n}\n```\n\n### 核心步骤解析\n1.  **初始化模型**：通过 `openai.New` 连接大模型服务。\n2.  **注册工具**：使用 `function.NewFunctionTool` 将 Go 函数转换为 Agent 可调用的工具。\n3.  **构建 Agent**：组合模型与工具，创建智能体实例。\n4.  **运行会话**：通过 `runner.Run` 发起请求，并遍历返回的事件流获取流式回复。\n\n更多高级功能（如多智能体编排、记忆系统、GraphAgent 工作流等）请参考官方文档或查看 `examples` 目录下的完整案例。","某电商平台的运维团队需要构建一个能自动分析数据库慢查询日志、定位性能瓶颈并生成优化建议的智能诊断系统。\n\n### 没有 trpc-agent-go 时\n- **流程割裂严重**：开发人员需手动编写脚本串联日志拉取、SQL 解析和大模型分析环节，代码耦合度高且难以维护。\n- **上下文记忆缺失**：每次诊断都是“单次对话”，代理无法记住历史故障特征或之前的优化尝试，导致重复分析相同问题。\n- **多步推理困难**：面对复杂的连锁故障（如锁等待引发超时），缺乏分层规划能力，大模型容易在长链条逻辑中迷失或产生幻觉。\n- **工具集成繁琐**：每接入一个新的监控 API 或数据库驱动，都需要重新编写大量的胶水代码和错误处理逻辑。\n- **生产监控盲区**：缺乏内置的可观测性，代理运行时的延迟、Token 消耗及决策路径难以追踪，上线后不敢完全信任。\n\n### 使用 trpc-agent-go 后\n- **编排简洁高效**：利用 `ChainAgent` 轻松定义“拉取日志->分析索引->生成报告”的自动化流水线，将复杂工作流简化为声明式代码。\n- **持久化记忆增强**：通过内置的 `MemoryService`，代理能跨会话存储历史故障库，遇到相似问题时直接调用过往成功方案，响应速度提升 50%。\n- **智能分层规划**：借助高级规划器，代理能自主拆解复杂故障为子任务，按顺序执行并动态调整策略，准确定位根因。\n- **生态无缝对接**：任何 Go 函数均可一键转换为标准工具（Tool），并原生支持 MCP 协议，快速连接内部监控系统与数据库。\n- **全链路可观测**：内置遥测与追踪功能，实时可视化代理的思考路径与资源消耗，让生产环境的每一次自动决策都透明可控。\n\ntrpc-agent-go 将原本需要数周开发的复杂运维专家系统，缩短为几天即可落地的高可靠生产级应用。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftrpc-group_trpc-agent-go_93a6fb54.png","trpc-group","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Ftrpc-group_cf9c81ac.png","tRPC is a multi-language, pluggable, high performance RPC framework.",null,"https:\u002F\u002Fgithub.com\u002Ftrpc-group",[78,82,86,90,93],{"name":79,"color":80,"percentage":81},"Go","#00ADD8",98.8,{"name":83,"color":84,"percentage":85},"JavaScript","#f1e05a",0.8,{"name":87,"color":88,"percentage":89},"Python","#3572A5",0.2,{"name":91,"color":92,"percentage":89},"Shell","#89e051",{"name":94,"color":95,"percentage":96},"HTML","#e34c26",0,1063,119,"2026-04-07T03:34:31","NOASSERTION","Linux, macOS, Windows","未说明",{"notes":104,"python":105,"dependencies":106},"该工具是基于 Go 语言开发的框架，非 Python 项目。运行需要安装 Go 1.21 或更高版本，并配置大模型提供商（如 OpenAI、DeepSeek）的 API Key。无需本地 GPU 即可运行，计算负载由调用的大模型 API 承担。","不适用",[107],"Go 1.21+",[13,14,15,35],[110,111,112,113,114],"a2a","agent","ai","llm","mcp","2026-03-27T02:49:30.150509","2026-04-11T18:32:46.511955",[118,123,128,133,138,143,148,153],{"id":119,"question_zh":120,"answer_zh":121,"source_url":122},22746,"使用 OpenAI API 方式创建大模型时，New() 函数的第一个参数是实际模型名称还是自定义名称？","该参数通常指代实际的大模型名称或用于标识模型的配置名。如果您想使用特定的模型（如腾讯混元），目前内网已支持，外网支持即将上线。对于本地模型（如 Ollama），可以通过配置 OpenAI 兼容接口直接访问，具体示例可参考：https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Ftree\u002Fmain\u002Fexamples\u002Fprovider","https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fissues\u002F880",{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},22747,"trpc-agent-go 是否支持与 Ollama 等本地大模型交互？","支持。您可以通过配置 OpenAI 兼容接口来直接访问本地部署的大模型（如 Ollama）。框架提供了相关的 Provider 示例代码，您可以参考 examples\u002Fprovider 目录下的实现方式进行配置和调用。","https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fissues\u002F778",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},22748,"在使用 MCP (Model Context Protocol) 工具时，为什么在 Gemini 模型下报错而 OpenAI 正常？","这是由于不同模型对 Tool Schema 的兼容性差异导致的。该问题已在 PR #1257 中修复。解决方法是在您的 go.mod 文件中添加 replace 指令，指向包含修复的最新分支或版本，然后重新拉取依赖即可解决 Gemini 下的 Schema 错误问题。","https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fissues\u002F1252",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},22749,"如何在 AG-UI 中记录多模态信息（如图片、文件）到 trackEvent？","框架目前已原生支持多模态输入。您可以参考官方文档中的多模态输入章节（docs\u002Fmkdocs\u002Fzh\u002Fagui.md）进行配置。如果默认实现无法满足需求，用户可以自行实现 translator 接口来处理特定的多模态内容转换和记录逻辑。相关 SDK 更新见：https:\u002F\u002Fgithub.com\u002Fag-ui-protocol\u002Fag-ui\u002Fpull\u002F979","https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fissues\u002F1096",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},22750,"文档中提到的 WithHost 等方法在 session\u002Fmysql 包中找不到，如何正确配置 MySQL 会话管理？","这是文档描述有误，正确的配置方法应使用 `WithMySQLClientDSN` 函数来初始化 MySQL 会话存储。请确保您使用的是最新版本的库，并参照修正后的用法传入 MySQL 的 DSN 连接字符串即可实现基于 MySQL 的 Session 管理。","https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fissues\u002F699",{"id":144,"question_zh":145,"answer_zh":146,"source_url":147},22751,"Agent 执行过程中出现长时间卡顿（假死）但无报错，如何排查 TTFT (Time To First Token) 过长的问题？","此类问题通常与模型服务商的网络或响应延迟有关。为了精准定位，建议在初始化 model\u002Fanthropic 或 model\u002Fopenai 时使用 `WithChatChunkCallback` 选项注册回调函数。通过该 Hook 可以记录每一个原始流式事件类型及其时间戳，从而分析是哪个阶段导致了延迟。示例代码：\nfunc WithChatChunkCallback(fn ChatChunkCallbackFunc) Option {\n    return func(opts *options) {\n        opts.chatChunkCallback = fn\n    }\n}","https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fissues\u002F1373",{"id":149,"question_zh":150,"answer_zh":151,"source_url":152},22752,"trpc-agent-go 是否支持 Agent 的自动编排（Swarm 模式），还是必须硬编码？","框架已支持 Swarm 模式，允许 Agent 之间基于共享上下文和工作内存进行自主协调和动态任务分配。这种机制类似于 OpenAI 的 handoff 功能，角色处理完任务后可指定下一个执行角色。具体的实现逻辑和动态创建\u002F删除 Agent 的能力可参考相关 PR 代码及讨论。","https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fissues\u002F1229",{"id":154,"question_zh":155,"answer_zh":156,"source_url":157},22753,"流式传输被用户中断或工具调用被拒绝后，为何后续请求会出现非预期的响应内容？","这是因为被中断的请求产生的部分事件（如文件工具、知识库工具调用记录）被错误地持久化到了 session_events 表中。当再次发起相同请求时，这些不完整的上下文被重新加载并提交给大模型，导致逻辑混乱。解决方案需要优化会话管理逻辑，确保只有在完整成功的交互后才将关键状态持久化，或在加载历史事件时过滤掉未完成的中间状态。","https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fissues\u002F1402",[159,164,169,174,179,184,188,192,197,201,206,210,215,220,225,229,234,238,243,248],{"id":160,"version":161,"summary_zh":162,"released_at":163},136452,"v1.8.0","## 变更内容\n* {agent, telemetry}: 由 @liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1410 中为 trace 和 metric 添加 agent 名称和 ID 属性\n* memory: 由 @Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1450 中使预加载适配内存容量\n* memory\u002Fsqlitevec: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1453 中启动时迁移旧版 schema\n* model\u002Fopenai: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1455 中推断仅文本聊天的 DeepSeek 变体\n* graphagent: 由 @liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1464 中记录调用指标，并将默认流式传输设置为 true\n* chore: 由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1466 中添加所有者评审策略检查\n* {server, examples, docs}: 由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1454 中支持 A2UI\n* .github: 由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1470 中移除作者后保留共同所有者\n* openclaw: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1459 中对齐官方技能依赖元数据支持\n* .github: 由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1471 中缩小评审触发条件\n* {graph, a2a}: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1442 中标准化执行错误处理\n* {agent, internal, runner}: 由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1461 中支持运行范围内的结构化输出\n* session\u002Fmysql: 由 @bytethm 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1449 中序列化会话状态更新\n* {benchmark, docs, ci}: 由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1468 中移除基准测试并保护大文件\n* {memory\u002Ftool, docs}: 由 @Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1467 中澄清内存工具使用指南\n* skill: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1458 中跟踪最近使用情况，以确定加载最多的技能\n* {runner, docs}: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1478 中澄清 ToolSet 的生命周期及清理流程\n* .github: 由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1480 中撤销所有者评审策略变更\n* {agent, telemetry, openclaw}: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1479 中添加 Langfuse 管理员 trace 链接\n* tool\u002Fskill: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1452 中添加可插拔的技能装载器\n* {evaluation, docs}: 由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1463 中添加 LLM 评分标准批评者评估器\n* lsc: 由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1365 中支持调用范围内的图事件控制\n* lsc: 由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1485 中添加静态结构导出功能\n* a2a: 由 @hyprh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F14 中支持自定义运行器，并支持构建 a2a 消息钩子","2026-04-07T02:40:19",{"id":165,"version":166,"summary_zh":167,"released_at":168},136453,"v1.7.0","## 变更内容\n* processor：在 convertForeignEvent 中添加内容部分，由 @liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1067 中完成。\n* {log, event, internal\u002Ftelemetry}：禁用短路跟踪\u002F指标，并停止超时计时器，由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1258 中完成。\n* model\u002Fantropic：将 antropic 的默认设置改为不使用提示缓存，由 @sandyskies 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1261 中完成。\n* examples：执行 `go mod tidy` 操作，由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1262 中完成。\n* feat：支持 MCP 工具的 `_meta` 字段，并保持向后兼容性，由 @srcrs 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1256 中完成。\n* llmagent：将上下文传播到 ToolSet 发现中，由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1259 中完成。\n* model\u002Fgemini：为函数调用规范化工具 Schema，由 @bytethm 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1257 中完成。\n* {docs, examples}：澄清图节点钩子，由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1265 中完成。\n* 开发环境搭建，由 @liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1248 中完成。\n* docs：添加用于动态修改请求体的回调函数，由 @liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1273 中完成。\n* model：优化令牌裁剪计算，由 @sandyskies 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1264 中完成。\n* openclaw：添加类似 OpenClaw 的网关和 Telegram 示例，由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1240 中完成。\n* runner：在工具结果上触发摘要生成，由 @Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1275 中完成。\n* {examples, model\u002Fopenai}：通过缓存指标增强令牌跟踪功能，由 @liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1271 中完成。\n* graph：添加可选的 DAG 执行引擎，由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1266 中完成。\n* benchmark：添加多轮 toolsearch 测试，由 @liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1225 中完成。\n* memory：添加 SQLite 和 sqlitevec 后端，由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1280 中完成。\n* openclaw：使代理提示可配置，由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1281 中完成。\n* internal\u002Fflow\u002Fprocessor：在中途摘要后包含原始用户消息，由 @Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1283 中完成。\n* llmagent：允许禁用工具后的提示注入，由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1286 中完成。\n* skill_run：将用户文件输入暂存到工作区，由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1285 中完成。\n* graph：使状态克隆对 JSON 序列化安全，由 @Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1287 中完成。\n* llmagent：限制加载的技能数量（TopK），由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1288 中完成。\n* session\u002Fmemory：添加 SQLite 后端，由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1272 中完成。\n* openclaw：添加网关运行时。","2026-03-17T07:41:17",{"id":170,"version":171,"summary_zh":172,"released_at":173},136454,"openclaw-v0.0.3","**完整变更日志**：https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fcompare\u002Fopenclaw-v0.0.2...openclaw-v0.0.3","2026-03-12T06:26:10",{"id":175,"version":176,"summary_zh":177,"released_at":178},136455,"openclaw-v0.0.2","**完整变更日志**：https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fcompare\u002Fopenclaw-v0.0.1...openclaw-v0.0.2","2026-03-12T05:06:52",{"id":180,"version":181,"summary_zh":182,"released_at":183},136456,"openclaw-v0.0.1","## 变更内容\n* {log, event, internal\u002Ftelemetry}: 由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1258 中实现，禁用短路跟踪\u002F指标，并停止超时计时器。\n* model\u002Fantropic: 由 @sandyskies 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1261 中设置 Anthropic 默认不使用提示缓存。\n* examples: 由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1262 中执行 `go mod tidy` 操作。\n* feat: 由 @srcrs 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1256 中支持 MCP 工具的 `_meta` 字段，并保持向后兼容性。\n* llmagent: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1259 中将上下文传播到工具集发现中。\n* model\u002Fgemini: 由 @bytethm 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1257 中对函数调用的工具模式进行规范化处理。\n* {docs, examples}: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1265 中澄清图节点钩子。\n* 开发环境搭建：由 @liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1248 中完成。\n* docs: 由 @liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1273 中添加用于动态修改请求体的回调。\n* model: 由 @sandyskies 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1264 中优化令牌裁剪计算。\n* openclaw: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1240 中添加类似 OpenClaw 的网关及 Telegram 示例。\n* runner: 由 @Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1275 中在工具结果上触发摘要生成。\n* {examples, model\u002Fopenai}: 由 @liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1271 中通过缓存指标增强令牌跟踪功能。\n* graph: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1266 中添加可选的 DAG 执行引擎。\n* benchmark: 由 @liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1225 中新增多轮 ToolSearch 基准测试。\n* memory: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1280 中添加 SQLite 和 SQLiteVec 后端。\n* openclaw: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1281 中使代理提示可配置。\n* internal\u002Fflow\u002Fprocessor: 由 @Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1283 中在中途摘要后包含原始用户消息。\n* llmagent: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1286 中允许禁用工具调用后的提示注入。\n* skill_run: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1285 中将用户文件输入暂存至工作区。\n* graph: 由 @Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1287 中使状态克隆对 JSON 序列化安全。\n* llmagent: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1288 中限制加载的技能数量（TopK）。\n* session\u002Fmemory: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1272 中添加 SQLite 后端。\n* openclaw: 由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1290 中添加网关运行时。\n* model: 由 @liuzengh 在 https:\u002F\u002Fgithub. 中为 accumulateDelta 添加缺失的令牌。","2026-03-12T04:26:41",{"id":185,"version":186,"summary_zh":75,"released_at":187},136457,"tool\u002Fwikipedia\u002Fv1.6.0","2026-02-26T03:08:41",{"id":189,"version":190,"summary_zh":75,"released_at":191},136458,"memory\u002Fpgvector\u002Fv1.6.0","2026-02-26T03:07:05",{"id":193,"version":194,"summary_zh":195,"released_at":196},136459,"v1.6.0","## 变更内容\n* model：由 @Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1177 中为 OpenAI GPT-5.2 添加上下文窗口。\n* {server\u002Fagui, examples}：由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1171 中升级 agui Go SDK 版本。\n* codeexecutor：由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1178 中省略空文件内容。\n* all：由 @liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1182 中将 TraceChat 更新为使用参数结构体。\n* skill：由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1180 中改进 skill_run IO 示例及制品固定功能。\n* server\u002Fagui：由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1179 中支持流式工具响应事件。\n* docs：由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1154 中重构评估文档。\n* .github：由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1184 中添加 go mod tidy 检查。\n* knowledge\u002Fchunking：由 @DemonZack 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1173 中确保递归 Markdown 分块的 ID 唯一性。\n* session\u002Fsummary：由 @liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1175 中为遥测跟踪添加 task_type 字段。\n* fix(gemini)：由 @sks 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1189 中传播流式错误，并处理工具调用的空输出模式。\n* docs：由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1191 中修复基础路径的使用问题。\n* internal\u002Fflow：由 @bytethm 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1186 中过滤空助手消息。\n* runner：由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1169 中支持请求范围内的代理工厂。\n* session\u002Fsummary：由 @Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1190 中为会话摘要器添加模型回调。\n* examples：由 @bytethm 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1192 中添加技能驱动的动态模式示例。\n* {model, session\u002Fsummary}：由 @Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1174 中添加可配置的每 token 大致字节数选项。\n* evaluation：由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1198 中将 ctxmsg 容器附加到评估上下文。\n* {evaluation, docs, examples}：由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1197 中在追踪模式下支持 actualConversation。\n* langfuse：由 @liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1194 中添加工作流跨度转换功能。\n* {evaluation, docs}：由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1199 中支持跨案例的并行评估。\n* server\u002Fagui：由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1196 中支持多模态用户消息。\n* {agent, evaluation}：由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1200 中确保评估的调用上下文。\n* memory\u002Fextractor：由 @Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-gr","2026-02-26T02:13:58",{"id":198,"version":199,"summary_zh":75,"released_at":200},136460,"server\u002Fagui\u002Fv1.5.1","2026-02-09T03:09:44",{"id":202,"version":203,"summary_zh":204,"released_at":205},136461,"v1.5.0","## 变更内容\n* 图：@WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1027 中实现了嵌套子图的 HITL 中断恢复功能。\n* 评估：@Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1055 中支持工具参数和结果使用任意 JSON 值。\n* 工具\u002F代码执行：@bytethm 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1046 中新增了让 LLM 通过工具调用执行代码的功能。\n* 评估：@Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1062 中支持跟踪评估模式。\n* 修复（跟踪）：@liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1064 中简化了调用消息的 JSON 序列化。\n* 模型\u002FOpenAI：@Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1075 中稳定了流式传输时的工具调用索引。\n* {图、工具}：@Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1078 中实现了中断时保留工具结果的功能。\n* llmflow：@liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1057 中从 callLLM 返回上下文，以帮助在模型回调前后传递上下文信息。\n* 文档：@WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1060 中澄清了代理节点之间的数据传递方式。\n* {服务器\u002Fagui、代理、文档、示例}：@Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1066 中支持 AG-UI 使用外部工具。\n* 图：@WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1065 中为生成配置添加了调用选项。\n* {图、文档}：@WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1058 中限制了执行器任务的并发数。\n* 图：@WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1052 中新增了节点前后的静态中断点。\n* 文档：@WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1056 中扩展了 CycleAgent 的升级功能。\n* 评估：@Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1071 中确保即使测试用例失败也能生成报告。\n* {文档、会话}：@Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1068 中将会话配置中的摘要作业超时时间更新为 60 秒。\n* {.github、图}：@Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1061 中移除了 golangci 的仅新问题过滤，并重构了相关函数。\n* 文档：@WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1076 中解释了图节点自定义事件的有效载荷。\n* 模型\u002FGemini：@Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1089 中确保当部分文本为空时仍保留工具调用。\n* 事件：@Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1086 中改进了事件触发时的上下文错误日志记录。\n* 示例：@Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1085 中实现了 ConsecutiveUserMessageHook，用于处理连续的用户消息。\n* {代理、图、内部}：@Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F1082 中增加了工具调用参数的 JSON 修复选项。\n* 图：@Rememorio 修复了 AddToolsNode 中工具回调未生效的问题。","2026-02-02T05:11:40",{"id":207,"version":208,"summary_zh":75,"released_at":209},136462,"session\u002Fclickhouse\u002Fv1.2.0","2026-01-14T08:31:18",{"id":211,"version":212,"summary_zh":213,"released_at":214},136463,"v1.2.0","## 变更内容\n* telemetry：跳过 InvokeAgent 调用链路的令牌使用属性，由 @liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F972 中实现\n* skill：支持 URL 类技能根路径，由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F965 中实现\n* skill：支持添加 skill_run 允许命令，由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F947 中实现\n* examples：允许 CopilotKit 使用远程代理服务，由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F977 中实现\n* wikipedia-search-tool：为 trpc-agent-go 添加维基百科搜索工具，由 @bluemiao3 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F958 中实现\n* tool：在 Before\u002FAfterToolArgs 中添加 ToolCallID，由 @Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F974 中实现\n* examples：升级 CopilotKit 的依赖项，由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F979 中实现\n* {agent, graph}：为运行器同步添加节点级屏障事件，由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F968 中实现\n* {server\u002Fagui, docs, examples}：使用来自 AG-UI Go SDK 的 RunAgentInput，由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F970 中实现\n* tool：在上下文克隆中保留 ToolCallID，由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F982 中实现\n* {server\u002Fagui, docs, examples}：支持图执行进度，由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F988 中实现\n* {server\u002Fagui, docs, examples}：支持 AGUI 的取消操作，由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F980 中实现\n* {internal\u002Fflow\u002Fprocessor, examples}：聚合具有匹配前缀的摘要，并重写 filterKey 示例，由 @Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F978 中实现\n* {agent, tool, model}：恢复回调中的 panic，由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F986 中实现\n* {docs, examples}：澄清 Langfuse 的 LANGFUSE_HOST 格式，由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F990 中实现\n* langfuse：添加 baggage span 处理器以支持属性传播，由 @liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F991 中实现\n* knowledge：为 tcvector 添加 extractOptions，由 @hyprh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F983 中实现\n* storage\u002Fs3、artifact\u002Fs3：添加可复用的 S3 客户端，并改进 artifact backendRefactor\u002Fs3 存储模块，由 @grignolalouis 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F976 中实现\n* llmagent：添加 WithStructuredOutputJSONSchema 选项，由 @bytethm 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F984 中实现\n* server\u002Fagui：尊重请求截止时间与 WithTimeout 中较早的时间，由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F993 中实现\n* graph：从子代理传播结构化输出，由 @bytethm 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F996 中实现\n* knowledge：支持 Cohere 重新排序器和 Infinity 重新排序器，由 @hyprh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F898 中实现\n* session：优化单个 filterKey 会话的摘要生成","2026-01-14T06:23:14",{"id":216,"version":217,"summary_zh":218,"released_at":219},136464,"v1.1.1","## 变更内容\n* {evaluation, docs, examples}: 支持用于评判模型的环境变量键，由 @Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F967 中实现。\n* session\u002Fsummary: 增强提示词验证功能，由 @Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F969 中实现。\n* session\u002Finternal\u002Fsummary: 重构测试中的异步摘要任务处理逻辑，由 @liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F973 中实现。\n* graph: 添加发出最终模型响应的选项，以恢复先前的行为，由 @WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F971 中实现。\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fcompare\u002Fv0.10.0...v1.1.1","2025-12-31T01:25:11",{"id":221,"version":222,"summary_zh":223,"released_at":224},136465,"v1.1.0","## 变更内容\n* docs\u002Fagent：@liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F913 中修复了拼写错误。\n* trpc-agent-goo：@Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F915 中解决了 README 文件中的冲突。\n* docs\u002Fagent：@liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F914 中修复了拼写错误。\n* session：@hyprh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F892 中实现了在发生错误时持久化错误事件的功能。\n* agent：@WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F897 中为 agenttool 自身的工具调用添加了追加器。\n* graph：@bytethm 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F896 中为隔离的子代理保留了工具调用历史。\n* lsc：@Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F909 中更新了 go.mod 文件，以使用 a2a 的官方版本。\n* internal\u002Fstate\u002Fstate_injection：@nomand-zc 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F910 中支持在调用隔离的情况下进行占位符替换。\n* session\u002Fsummary：@nomand-zc 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F911 中通过并行化任务执行优化了摘要操作的性能。\n* {docs, examples}：@Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F918 中修复了将 WithToolFilterFunc 错误地写为 WithToolFilter 的问题。\n* lsc：@Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F916 中添加了 go.mod 版本验证器，并修复了模块版本问题。\n* graph：@WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F901 中保留了内部模型节点对事件的响应。\n* telemetry：@liuzengh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F917 中将工具定义添加到请求属性中。\n* {evaluation, docs, examples}：@Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F903 中重构了不使用 genai 的评估逻辑。\n* tool\u002Fmcp：@Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F921 中实现当 Content 为空时使用 StructeredContent 的功能。\n* {session, docs, examples}：@Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F893 中支持为 MySQL 会话跟踪事件。\n* memory\u002Fpostgres：@Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F861 中实现了对 memories 表的模式校验。\n* internal\u002Fflow\u002Fprocessor：@Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F924 中修复了在使用规划器时 AfterAgent 回调无法访问完整响应的问题。\n* {evaluation, examples, docs}：@Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F926 中增加了顺序匹配和子集匹配功能。\n* knowledge：@hyprh 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F929 中支持 pgvector dsn 配置。\n* docs：@Flash-LHR 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F932 中修复了 agui 文档中 startSpan 的使用问题。\n* internal\u002Fstate：@WineChord 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F931 中避免截断原始占位符值。\n* model：@Rememorio 在 https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpul 中增强了令牌计数功能，使其包含工具调用。","2025-12-29T10:47:22",{"id":226,"version":227,"summary_zh":75,"released_at":228},136466,"knowledge\u002Fvectorstore\u002Fqdrant\u002Fv0.10.0","2025-12-29T09:16:56",{"id":230,"version":231,"summary_zh":232,"released_at":233},136467,"v0.10.0","## What's Changed\r\n* docs\u002Fagent: fix typo by @liuzengh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F913\r\n* trpc-agent-goo: resolve conflict in readme by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F915\r\n* docs\u002Fagent: fix typo by @liuzengh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F914\r\n* session: persist a error event while error occured by @hyprh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F892\r\n* agent: add appender for agenttool's own tool calls by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F897\r\n* graph: preserve tool call history for isolated subagent by @bytethm in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F896\r\n* lsc: update go.mod to use official version of a2a by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F909\r\n* internal\u002Fstate\u002Fstate_injection: support placeholder replacement with invocation isolation by @nomand-zc in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F910\r\n* session\u002Fsummary: optimize the performance of summary operations by parallelizing task execution by @nomand-zc in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F911\r\n* {docs, examples}: fix WithToolFilterFunc mistakenly written as WithToolFilter by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F918\r\n* lsc: add go.mod version validator and fix module versions by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F916\r\n* graph: preserve the internal model node's response to event by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F901\r\n* telemetry: add tool definitions to request attributes by @liuzengh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F917\r\n* {evaluation, docs, examples}: refactor evaluation without genai by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F903\r\n* tool\u002Fmcp: use StructeredContent when Content is empty by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F921\r\n* {session, docs, examples}: support track event for mysql session by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F893\r\n* memory\u002Fpostgres: implement schema verification for memories table by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F861\r\n* internal\u002Fflow\u002Fprocessor: fix AfterAgent callback cannot access full response when planner is used by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F924\r\n* {evaluation, examples, docs}: add order and subset matching by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F926\r\n* knowledge: support pgvector dsn config by @hyprh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F929\r\n* docs: fix startSpan usage in agui docs by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F932\r\n* internal\u002Fstate: avoid truncating raw placeholder values by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F931\r\n* model: enhance token counting to include tool calls by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F925\r\n* {evaluation, docs}: support NumberTolerance for comparing float point number by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F933\r\n* examples: add tool evaluation test for runner example by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F936\r\n* .github: skip fork repository tag validation by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F937\r\n* session: add schema verification of mysql session, improve index of mysql session by @hyprh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F879\r\n* telemetry: add agent invocation metrics by @liuzengh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F885\r\n* docs: set embedder and vectorstore when new knowledge by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F939\r\n* graph:  add workflow tracing  by @liuzengh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F923\r\n* docs: clarify sub-agent isolation for multi-turn tools by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F935\r\n* agent\u002Fgraphagent: fix lint by @liuzengh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F943\r\n* model\u002Fopenai: fix tool call indices for parallel tool calls with zero index by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F949\r\n* tool: support interrupt inside tools by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F934\r\n* graph: fix duplicate user input after #818 by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F948\r\n* a2a: support reasonning content transfer on a2a by @hyprh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F945\r\n* {docs, examples}: add AppendEvent demo with session management by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F940\r\n* log: correct CallerSkip to 1 for ContextDefault by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F956\r\n* internal\u002Fflow: align isolated invocation reasoning filtering by @bytethm in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F953","2025-12-29T09:03:13",{"id":235,"version":236,"summary_zh":232,"released_at":237},136468,"v0.9.0","2025-12-29T08:46:33",{"id":239,"version":240,"summary_zh":241,"released_at":242},136469,"v0.8.0","## What's Changed\r\n* .github: check go build in examples, interface{} usage and license headers in all go files by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F808\r\n* llmagent: add refresh toolset on run option by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F793\r\n* summary: fix concurrent map read and write by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F815\r\n* agent: provide SubAgentSetter to set subagents by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F792\r\n* feat(artifact): add S3-compatible artifact storage service by @grignolalouis in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F784\r\n* {model\u002Follama, model\u002Fgemini}: standardize options initialization by @nomand-zc in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F806\r\n* .github: enhance gofmt output info to avoid confusion by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F819\r\n* examples: add graph MCP tool example by @bytethm in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F804\r\n* docs: add graph tools QA by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F822\r\n* session\u002Fsummary: add option to skip recent events during summarization by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F810\r\n* graph: per-run channels isolation by @bytethm in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F812\r\n* session: enhance GetSessionSummaryText with filter key support by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F817\r\n* docs: clarify summarization trigger conditions in session docs and comments by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F823\r\n* docs: add graph concurrency note by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F829\r\n* server\u002Fagui: emit text end event when finish_reason occurs by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F825\r\n* docs: enhance callbacks and runner documentation for safe stopping by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F824\r\n* agent\u002Fgraphagent: move initial state preparation after callbacks by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F826\r\n* feat(storage): implement milvus vector store by @chengjoey in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F744\r\n* internal\u002Fstate: preserve numeric literals in session state injection by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F811\r\n* storage: impl mongodb storage by @hyprh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F757\r\n* model: optimize the initialization of TokenCounter and TailoringStrategy by @nomand-zc in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F807\r\n* {llmagent, graphagent}: improve message filtering mode options by @nomand-zc in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F779\r\n* agent\u002Fgraphagent: collect agent error for after agent callback by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F827\r\n* {knowledege, storage}: fix gofmt linter by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F833\r\n* knowledge: fix metadata filter(break changes) and fix issue on pgvector hybrid filtering by @hyprh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F754\r\n* summary: add pre\u002Fpost summary hooks for input\u002Foutput modification by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F838\r\n* session: support hook for GetSession and AppendEvent by @hyprh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F809\r\n* tool: add web fetch by @liuzengh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F722\r\n* summary: fix session events not in user->assistant order after summary by @hyprh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F759\r\n* a2a: support code execution transfer and fix issue on non-streaming a2a transfer by @hyprh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F813\r\n* example: simplify examples of knowledge by @hyprh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F846\r\n* {processor\u002Fcontent, tool\u002Fagent}: enhance message filtering to ensure that invocation.Message is not lost by @nomand-zc in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F818\r\n* examples\u002Fgraph: reorder error handling in streaming response processing by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F820\r\n* graph: fix subgraph event filterKey hierarchy by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F828\r\n* examples: upgrade agui dependencies to prevent known vulnerabilities by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F830\r\n* docs: add RemoveAllMessages guidance to manage message history by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F831\r\n* examples\u002Fsummary: add filterKey example with AppendEventHook for summary by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F848\r\n* knowledge: fix issue on tcvector cond converter by @hyprh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F835\r\n* session\u002Fredis: refacto","2025-12-18T10:22:42",{"id":244,"version":245,"summary_zh":246,"released_at":247},136470,"v0.7.0","## What's Changed\r\n* agui: add UpdateSessionState method for test server to fix test by @liuzengh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F743\r\n* model\u002Fopenai: sanitize empty tool_calls chunks by @bytethm in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F745\r\n* graph: check nil choices from final response by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F747\r\n* docs: update graph.md for consistency and clarity by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F748\r\n* examples: fix format output of graph basic example by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F749\r\n* lsc: use valid version instead of v0.0.0-00010101000000-000000000000 by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F753\r\n* server\u002Fdebug: add detached context for debug server by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F751\r\n* a2a: support a2a compatible with adk by @hyprh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F731\r\n* knowledge: support ocr handling  by @hyprh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F643\r\n* {agent, graph}: implement generic getter for typed state retrieval by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F752\r\n* server\u002Fopenai: add OpenAI-compatible server by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F707\r\n* knowledge\u002Freranker: add query parameters to the rerank interface to provide sufficient contextual information for rerank processing by @nomand-zc in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F729\r\n* {session\u002Fmysql, session\u002Fpostgres}: fix event filtering to ensureat least one user message by @nomand-zc in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F750\r\n* knowledge: fix knowledge reader not auto registered by @hyprh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F760\r\n* agent: add generic getter for typed runtime state retrieval by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F765\r\n* server\u002Fagui: still return existing messages even on snapshot error by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F763\r\n* agent: add runtime state retrieval from context by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F768\r\n* docs: update the code snippet in the session by @liuzengh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F769\r\n* model: append tool outputschema to tool description by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F756\r\n* knowledge\u002Fvectorstore\u002Fpgvector: optimize document update operations to reduce unnecessary network calls by @nomand-zc in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F770\r\n* docs: add track events table for postgres by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F773\r\n* graph: return Done Response event but keep not emit it by @liuzengh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F776\r\n* docs: add callback registration usage by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F771\r\n* {docs, agent}: enhance AfterAgentArgs to include FullResponseEvent by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F775\r\n* {agent,graph,internal\u002Futil}: add internal utility package by @nomand-zc in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F777\r\n* invocation: add logging for notifications to help debug timeout issues by @nomand-zc in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F774\r\n* {server\u002Fagui, graph}: support graph event for agui by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F762\r\n* {session, memory}: simplify duplicate logic in the new service through refactoring by @nomand-zc in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F758\r\n* graph\u002Fcheckpoint\u002Fredis: support redis checkpoint service by @nomand-zc in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F720\r\n* tool: add a new email tool and an example agent for sending email by @201430098137 in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F714\r\n* checkpoint\u002Fredis: fix incorrect log package import by @nomand-zc in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F785\r\n* internal\u002Fflow: use per-invocation include_contents flag by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F780\r\n* {checkpoint\u002Finmemory, checkpoint\u002Fsqlite}: align the semantics of namespaces with Redis by @nomand-zc in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F783\r\n* tool\u002Fmcp: append StructuredContent to mcp results by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F789\r\n* telemetry: add support for thinking_enabled attribute in GenAI tracing by @liuzengh in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F791\r\n* log: add context logger by @WineChord in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F794\r\n* examples: update go.mods and add new one for graph module by @Rememorio in https:\u002F\u002Fgithub.com\u002Ftrpc-group\u002Ftrpc-agent-go\u002Fpull\u002F798\r\n* {server\u002Fagui, docs, examples}: add ctx params for Translate by @Flash-LHR in https:\u002F\u002Fgithub.com\u002Ftrp","2025-12-04T07:00:22",{"id":249,"version":250,"summary_zh":75,"released_at":251},136471,"session\u002Fmysql\u002Fv0.6.0","2025-12-01T13:04:42"]