[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-GetBindu--Bindu":3,"tool-GetBindu--Bindu":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},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,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},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 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":80,"owner_email":81,"owner_twitter":80,"owner_website":82,"owner_url":83,"languages":84,"stars":122,"forks":123,"last_commit_at":124,"license":125,"difficulty_score":23,"env_os":126,"env_gpu":127,"env_ram":127,"env_deps":128,"category_tags":137,"github_topics":138,"view_count":23,"oss_zip_url":80,"oss_zip_packed_at":80,"status":16,"created_at":145,"updated_at":146,"faqs":147,"releases":177},3590,"GetBindu\u002FBindu","Bindu","Bindu: Turn any AI agent into a living microservice -  interoperable, observable, composable.","Bindu 是一款旨在将任意 AI 智能体快速转化为生产级微服务的开源工具。它如同为智能体赋予了“身份证”与“通信协议”，让原本孤立的 AI 模型能够具备独立的数字身份（DID），并支持相互通信、状态监控以及加密支付功能。\n\n在开发过程中，开发者常面临智能体难以标准化部署、跨框架协作困难以及缺乏统一身份认证等挑战。Bindu 通过简单的 `bindufy()` 调用，即可让基于 Agno、LangChain、OpenAI SDK 甚至原生 TypeScript 编写的智能体瞬间获得企业级服务能力，无需重写代码或构建复杂的基础设施。\n\n这款工具主要面向 AI 应用开发者、后端工程师及希望构建多智能体协作系统的研究人员。无论是个人开发者还是技术团队，都能利用它轻松实现智能体的互操作性与商业化闭环。\n\nBindu 的技术亮点在于其基于开放协议构建，原生支持 A2A（代理对代理）通信、AP2 身份验证以及 X402 加密支付标准。它兼容 Python、TypeScript 和 Kotlin 等多种语言，真正实现了“一次编写，处处互联”，让智能体像向日葵一样独立生长又能协同作战，共同构建高效的智","Bindu 是一款旨在将任意 AI 智能体快速转化为生产级微服务的开源工具。它如同为智能体赋予了“身份证”与“通信协议”，让原本孤立的 AI 模型能够具备独立的数字身份（DID），并支持相互通信、状态监控以及加密支付功能。\n\n在开发过程中，开发者常面临智能体难以标准化部署、跨框架协作困难以及缺乏统一身份认证等挑战。Bindu 通过简单的 `bindufy()` 调用，即可让基于 Agno、LangChain、OpenAI SDK 甚至原生 TypeScript 编写的智能体瞬间获得企业级服务能力，无需重写代码或构建复杂的基础设施。\n\n这款工具主要面向 AI 应用开发者、后端工程师及希望构建多智能体协作系统的研究人员。无论是个人开发者还是技术团队，都能利用它轻松实现智能体的互操作性与商业化闭环。\n\nBindu 的技术亮点在于其基于开放协议构建，原生支持 A2A（代理对代理）通信、AP2 身份验证以及 X402 加密支付标准。它兼容 Python、TypeScript 和 Kotlin 等多种语言，真正实现了“一次编写，处处互联”，让智能体像向日葵一样独立生长又能协同作战，共同构建高效的智能体互联网。","\u003Cdiv align=\"center\" id=\"top\">\n  \u003Ca href=\"https:\u002F\u002Fgetbindu.com\">\n    \u003Cpicture>\n      \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_a8962ccf40ec.png\" alt=\"Bindu\" width=\"300\">\n    \u003C\u002Fpicture>\n  \u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\u003Cp align=\"center\">\n  \u003Cem>The identity, communication & payments layer for AI agents\u003C\u002Fem>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"README.md\">🇬🇧 English\u003C\u002Fa> •\n  \u003Ca href=\"README.de.md\">🇩🇪 Deutsch\u003C\u002Fa> •\n  \u003Ca href=\"README.es.md\">🇪🇸 Español\u003C\u002Fa> •\n  \u003Ca href=\"README.fr.md\">🇫🇷 Français\u003C\u002Fa> •\n  \u003Ca href=\"README.hi.md\">🇮🇳 हिंदी\u003C\u002Fa> •\n  \u003Ca href=\"README.bn.md\">🇮🇳 বাংলা\u003C\u002Fa> •\n  \u003Ca href=\"README.zh.md\">🇨🇳 中文\u003C\u002Fa> •\n  \u003Ca href=\"README.nl.md\">🇳🇱 Nederlands\u003C\u002Fa> •\n  \u003Ca href=\"README.ta.md\">🇮🇳 தமிழ்\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fopensource.org\u002Flicenses\u002FApache-2.0\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache%202.0-blue.svg\" alt=\"License\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fhits.sh\u002Fgithub.com\u002FSaptha-me\u002FBindu.svg\">\u003Cimg src=\"https:\u002F\u002Fhits.sh\u002Fgithub.com\u002FSaptha-me\u002FBindu.svg\" alt=\"Hits\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.12+-blue.svg\" alt=\"Python Version\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpepy.tech\u002Fprojects\u002Fbindu\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_ba4ddcfe4090.png\" alt=\"PyPI Downloads\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fbindu\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fbindu.svg\" alt=\"PyPI version\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fbindu\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fbindu\" alt=\"PyPI Downloads\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fcoveralls.io\u002Fgithub\u002FSaptha-me\u002FBindu?branch=v0.3.18\">\u003Cimg src=\"https:\u002F\u002Fcoveralls.io\u002Frepos\u002Fgithub\u002FSaptha-me\u002FBindu\u002Fbadge.svg?branch=v0.3.18\" alt=\"Coverage\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgetbindu\u002FBindu\u002Factions\u002Fworkflows\u002Frelease.yml\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fgetbindu\u002FBindu\u002Factions\u002Fworkflows\u002Frelease.yml\u002Fbadge.svg\" alt=\"Tests\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002F3w5zuYUuwt\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FJoin%20Discord-7289DA?logo=discord&logoColor=white\" alt=\"Discord\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgetbindu\u002FBindu\u002Fgraphs\u002Fcontributors\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fcontributors\u002Fgetbindu\u002FBindu\" alt=\"Contributors\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cbr\u002F>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_7b585eadcc64.jpeg\" alt=\"Bindu — The Internet of Agents\" width=\"720\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cem>\"Like sunflowers turning toward the light, agents collaborate in swarms - each one independent, yet together they create something greater.\"\u003C\u002Fem>\n\u003C\u002Fp>\n\n\u003Cbr\u002F>\n\n\u003Cdiv align=\"center\">\n  \u003Ch3>Onboard your agent in one line\u003C\u002Fh3>\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n  \u003Cpre>\u003Ccode>curl -fsSL https:\u002F\u002Fgetbindu.com\u002Finstall-bindu.sh | bash\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\n\n---\n\n**Bindu** (read: _binduu_) turns any AI agent into a production microservice. Build your agent in any framework — Agno, LangChain, OpenAI SDK, even plain TypeScript — call `bindufy()`, and get a service with DID identity, A2A protocol, OAuth2 auth, and crypto payments. No infrastructure code. No rewriting.\n\nWorks with Python, TypeScript, and Kotlin. Built on open protocols: **A2A**, **AP2**, and **X402**.\n\n\u003Cp align=\"center\">\n  \u003Cstrong>🌟 \u003Ca href=\"https:\u002F\u002Fgetbindu.com\">Register your agent\u003C\u002Fa> • 🌻 \u003Ca href=\"https:\u002F\u002Fdocs.getbindu.com\">Documentation\u003C\u002Fa> • 💬 \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002F3w5zuYUuwt\">Discord Community\u003C\u002Fa>\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n\n---\n\n\u003Cbr\u002F>\n\n## 🎥 Watch Bindu in Action\n\n\u003Cdiv align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=qppafMuw_KI\" target=\"_blank\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_df5f665f35f4.jpg\" alt=\"Bindu Demo\" width=\"640\" style=\"border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);\" \u002F>\n  \u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\u003Cbr\u002F>\n\n## 📋 Prerequisites\n\nBefore installing Bindu, ensure you have:\n\n- **Python 3.12 or higher** - [Download here](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F)\n- **UV package manager** - [Installation guide](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fuv)\n- **API Key Required**: Set `OPENROUTER_API_KEY`, `OPENAI_API_KEY`, or `MINIMAX_API_KEY` in your environment variables. Free OpenRouter models are available for testing. [MiniMax AI](https:\u002F\u002Fplatform.minimaxi.com) offers M2.7 with 1M context window.\n\n\n### Verify Your Setup\n\n```bash\n# Check Python version\nuv run python --version  # Should show 3.12 or higher\n\n# Check UV installation\nuv --version\n```\n\n---\n\n\u003Cbr\u002F>\n\n## 📦 Installation\n\u003Cdetails>\n\u003Csummary>\u003Cb>Users note (Git & GitHub Desktop)\u003C\u002Fb>\u003C\u002Fsummary>\n\nOn some Windows systems, git may not be recognized in Command Prompt even after installation due to PATH configuration issues.\n\nIf you face this issue, you can use *GitHub Desktop* as an alternative:\n\n1. Install GitHub Desktop from https:\u002F\u002Fdesktop.github.com\u002F\n2. Sign in with your GitHub account\n3. Clone the repository using the repository URL:\n   https:\u002F\u002Fgithub.com\u002Fgetbindu\u002FBindu.git\n\nGitHub Desktop allows you to clone, manage branches, commit changes, and open pull requests without using the command line.\n\n\u003C\u002Fdetails>\n\n```bash\n# Install Bindu\nuv add bindu\n\n# For development (if contributing to Bindu)\n# Create and activate virtual environment\nuv venv --python 3.12.9\nsource .venv\u002Fbin\u002Factivate  # On macOS\u002FLinux\n# .venv\\Scripts\\activate  # On Windows\n\nuv sync --dev\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Common Installation Issues\u003C\u002Fb> (click to expand)\u003C\u002Fsummary>\n\n\u003Cbr\u002F>\n\n| Issue | Solution |\n|-------|----------|\n| `uv: command not found` | Restart your terminal after installing UV. On Windows, use PowerShell |\n| `Python version not supported` | Install Python 3.12+ from [python.org](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F) |\n| Virtual environment not activating (Windows) | Use PowerShell and run `.venv\\Scripts\\activate` |\n| `Microsoft Visual C++ required` | Download [Visual C++ Build Tools](https:\u002F\u002Fvisualstudio.microsoft.com\u002Fvisual-cpp-build-tools\u002F) |\n| `ModuleNotFoundError` | Activate venv and run `uv sync --dev` |\n\n\u003C\u002Fdetails>\n\n---\n\n\u003Cbr\u002F>\n\n## 🚀 Quick Start\n\n### Option 1: Manual Setup\n\nCreate your agent script `my_agent.py`:\n\n```python\nimport os\n\nfrom bindu.penguin.bindufy import bindufy\nfrom agno.agent import Agent\nfrom agno.tools.duckduckgo import DuckDuckGoTools\nfrom agno.models.openai import OpenAIChat\n\n# Define your agent\nagent = Agent(\n    instructions=\"You are a research assistant that finds and summarizes information.\",\n    model=OpenAIChat(id=\"gpt-4o\"),\n    tools=[DuckDuckGoTools()],\n)\n\n# Configuration\nconfig = {\n    \"author\": \"your.email@example.com\",\n    \"name\": \"research_agent\",\n    \"description\": \"A research assistant agent\",\n    \"deployment\": {\n        \"url\": os.getenv(\"BINDU_DEPLOYMENT_URL\", \"http:\u002F\u002Flocalhost:3773\"),\n        \"expose\": True,\n    },\n    \"skills\": [\"skills\u002Fquestion-answering\", \"skills\u002Fpdf-processing\"]\n}\n\n# Handler function\ndef handler(messages: list[dict[str, str]]):\n    \"\"\"Process messages and return agent response.\n\n    Args:\n        messages: List of message dictionaries containing conversation history\n\n    Returns:\n        Agent response result\n    \"\"\"\n    result = agent.run(input=messages)\n    return result\n\n# Bindu-fy it\nbindufy(config, handler)\n\n# Use tunnel to expose your agent to the internet\n# bindufy(config, handler, launch=True)\n```\n\n![Sample Agent](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_d29bd26224c4.png)\n\nYour agent is now live at the URL configured in `deployment.url`.\n\nSet a custom port without code changes:\n\n```bash\n# Linux\u002FmacOS\nexport BINDU_PORT=4000\n\n# Windows PowerShell\n$env:BINDU_PORT=\"4000\"\n```\n\nExisting examples that use `http:\u002F\u002Flocalhost:3773` are automatically overridden when `BINDU_PORT` is set.\n\n### Option 2: TypeScript Agent\n\nSame pattern, different language. Create `index.ts`:\n\n```typescript\nimport { bindufy } from \"@bindu\u002Fsdk\";\nimport OpenAI from \"openai\";\n\nconst openai = new OpenAI();\n\nbindufy({\n  author: \"your.email@example.com\",\n  name: \"research_agent\",\n  description: \"A research assistant agent\",\n  deployment: { url: \"http:\u002F\u002Flocalhost:3773\", expose: true },\n  skills: [\"skills\u002Fquestion-answering\"],\n}, async (messages) => {\n  const response = await openai.chat.completions.create({\n    model: \"gpt-4o\",\n    messages: messages.map(m => ({\n      role: m.role as \"user\" | \"assistant\" | \"system\",\n      content: m.content,\n    })),\n  });\n  return response.choices[0].message.content || \"\";\n});\n```\n\nRun it:\n\n```bash\nnpm install @bindu\u002Fsdk openai\nnpx tsx index.ts\n```\n\nThe SDK launches the Bindu core automatically in the background. Your agent is live at `http:\u002F\u002Flocalhost:3773` — same A2A protocol, same DID, same everything.\n\n> See [examples\u002Ftypescript-openai-agent\u002F](examples\u002Ftypescript-openai-agent\u002F) for the full working example with setup instructions.\n\n### Option 3: Zero-Config Local Agent\n\nTry Bindu without setting up Postgres, Redis, or any cloud services. Runs entirely locally using in-memory storage and scheduler.\n\n```bash\npython examples\u002Fbeginner_zero_config_agent.py\n```\n\n### Option 4: Minimal Echo Agent (Testing)\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>View minimal example\u003C\u002Fb> (click to expand)\u003C\u002Fsummary>\n\nSmallest possible working agent:\n\n```python\nimport os\n\nfrom bindu.penguin.bindufy import bindufy\n\ndef handler(messages):\n    return [{\"role\": \"assistant\", \"content\": messages[-1][\"content\"]}]\n\nconfig = {\n    \"author\": \"your.email@example.com\",\n    \"name\": \"echo_agent\",\n    \"description\": \"A basic echo agent for quick testing.\",\n    \"deployment\": {\n        \"url\": os.getenv(\"BINDU_DEPLOYMENT_URL\", \"http:\u002F\u002Flocalhost:3773\"),\n        \"expose\": True,\n    },\n    \"skills\": []\n}\n\nbindufy(config, handler)\n\n# Use tunnel to expose your agent to the internet\n# bindufy(config, handler, launch=True)\n```\n\n**Run the agent:**\n\n```bash\n# Start the agent\npython examples\u002Fecho_agent.py\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Test the agent with curl\u003C\u002Fb> (click to expand)\u003C\u002Fsummary>\n\n\u003Cbr\u002F>\n\nInput:\n```bash\ncurl --location 'http:\u002F\u002Flocalhost:3773\u002F' \\\n--header 'Content-Type: application\u002Fjson' \\\n--data '{\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"message\u002Fsend\",\n    \"params\": {\n        \"message\": {\n            \"role\": \"user\",\n            \"parts\": [\n                {\n                    \"kind\": \"text\",\n                    \"text\": \"Quote\"\n                }\n            ],\n            \"kind\": \"message\",\n            \"messageId\": \"550e8400-e29b-41d4-a716-446655440038\",\n            \"contextId\": \"550e8400-e29b-41d4-a716-446655440038\",\n            \"taskId\": \"550e8400-e29b-41d4-a716-446655440300\"\n        },\n        \"configuration\": {\n            \"acceptedOutputModes\": [\n                \"application\u002Fjson\"\n            ]\n        }\n    },\n    \"id\": \"550e8400-e29b-41d4-a716-446655440024\"\n}'\n```\n\nOutput:\n```bash\n{\n    \"jsonrpc\": \"2.0\",\n    \"id\": \"550e8400-e29b-41d4-a716-446655440024\",\n    \"result\": {\n        \"id\": \"550e8400-e29b-41d4-a716-446655440301\",\n        \"context_id\": \"550e8400-e29b-41d4-a716-446655440038\",\n        \"kind\": \"task\",\n        \"status\": {\n            \"state\": \"submitted\",\n            \"timestamp\": \"2025-12-16T17:10:32.116980+00:00\"\n        },\n        \"history\": [\n            {\n                \"message_id\": \"550e8400-e29b-41d4-a716-446655440038\",\n                \"context_id\": \"550e8400-e29b-41d4-a716-446655440038\",\n                \"task_id\": \"550e8400-e29b-41d4-a716-446655440301\",\n                \"kind\": \"message\",\n                \"parts\": [\n                    {\n                        \"kind\": \"text\",\n                        \"text\": \"Quote\"\n                    }\n                ],\n                \"role\": \"user\"\n            }\n        ]\n    }\n}\n```\n\nCheck the status of the task\n```bash\ncurl --location 'http:\u002F\u002Flocalhost:3773\u002F' \\\n--header 'Content-Type: application\u002Fjson' \\\n--data '{\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"tasks\u002Fget\",\n    \"params\": {\n        \"taskId\": \"550e8400-e29b-41d4-a716-446655440301\"\n    },\n    \"id\": \"550e8400-e29b-41d4-a716-446655440025\"\n}'\n```\n\nOutput:\n```bash\n{\n    \"jsonrpc\": \"2.0\",\n    \"id\": \"550e8400-e29b-41d4-a716-446655440025\",\n    \"result\": {\n        \"id\": \"550e8400-e29b-41d4-a716-446655440301\",\n        \"context_id\": \"550e8400-e29b-41d4-a716-446655440038\",\n        \"kind\": \"task\",\n        \"status\": {\n            \"state\": \"completed\",\n            \"timestamp\": \"2025-12-16T17:10:32.122360+00:00\"\n        },\n        \"history\": [\n            {\n                \"message_id\": \"550e8400-e29b-41d4-a716-446655440038\",\n                \"context_id\": \"550e8400-e29b-41d4-a716-446655440038\",\n                \"task_id\": \"550e8400-e29b-41d4-a716-446655440301\",\n                \"kind\": \"message\",\n                \"parts\": [\n                    {\n                        \"kind\": \"text\",\n                        \"text\": \"Quote\"\n                    }\n                ],\n                \"role\": \"user\"\n            },\n            {\n                \"role\": \"assistant\",\n                \"parts\": [\n                    {\n                        \"kind\": \"text\",\n                        \"text\": \"Quote\"\n                    }\n                ],\n                \"kind\": \"message\",\n                \"message_id\": \"2f2c1a8e-68fa-4bb7-91c2-eac223e6650b\",\n                \"task_id\": \"550e8400-e29b-41d4-a716-446655440301\",\n                \"context_id\": \"550e8400-e29b-41d4-a716-446655440038\"\n            }\n        ],\n        \"artifacts\": [\n            {\n                \"artifact_id\": \"22ac0080-804e-4ff6-b01c-77e6b5aea7e8\",\n                \"name\": \"result\",\n                \"parts\": [\n                    {\n                        \"kind\": \"text\",\n                        \"text\": \"Quote\",\n                        \"metadata\": {\n                            \"did.message.signature\": \"5opJuKrBDW4woezujm88FzTqRDWAB62qD3wxKz96Bt2izfuzsneo3zY7yqHnV77cq3BDKepdcro2puiGTVAB52qf\"  # pragma: allowlist secret\n                        }\n                    }\n                ]\n            }\n        ]\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n \n\n---\n\n \n\n## 🚀 Core Features\n\n| Feature | Description | Documentation |\n|---------|-------------|---------------|\n| 🔐 **Authentication** | Secure API access with Ory Hydra OAuth2 (optional for development) | [Guide →](docs\u002FAUTHENTICATION.md) |\n| 💰 **Payment Integration (X402)** | Accept USDC payments on Base blockchain before executing protected methods | [Guide →](docs\u002FPAYMENT.md) |\n| 💾 **PostgreSQL Storage** | Persistent storage for production deployments (optional - InMemoryStorage by default) | [Guide →](docs\u002FSTORAGE.md) |\n| 📋 **Redis Scheduler** | Distributed task scheduling for multi-worker deployments (optional - InMemoryScheduler by default) | [Guide →](docs\u002FSCHEDULER.md) |\n| 🎯 **Skills System** | Reusable capabilities that agents advertise and execute for intelligent task routing | [Guide →](docs\u002FSKILLS.md) |\n| 🤝 **Agent Negotiation** | Capability-based agent selection for intelligent orchestration | [Guide →](docs\u002FNEGOTIATION.md) |\n| 🌐 **Tunneling** | Expose local agents to the internet for testing (**local development only, not for production**) | [Guide →](docs\u002FTUNNELING.md) |\n| 📬 **Push Notifications** | Real-time webhook notifications for task updates - no polling required | [Guide →](docs\u002FNOTIFICATIONS.md) |\n| 📊 **Observability & Monitoring** | Track performance and debug issues with OpenTelemetry and Sentry | [Guide →](docs\u002FOBSERVABILITY.md) |\n| 🔄 **Retry Mechanism** | Automatic retry with exponential backoff for resilient agents | [Guide →](https:\u002F\u002Fdocs.getbindu.com\u002Fbindu\u002Flearn\u002Fretry\u002Foverview) |\n| 🔑 **Decentralized Identifiers (DIDs)** | Cryptographic identity for verifiable, secure agent interactions and payment integration | [Guide →](docs\u002FDID.md) |\n| 🏥 **Health Check & Metrics** | Monitor agent health and performance with built-in endpoints | [Guide →](docs\u002FHEALTH_METRICS.md) |\n| 🌍 **Language-Agnostic (gRPC)** | Bindufy agents written in TypeScript, Kotlin, Rust, or any language via gRPC adapter | [Guide →](docs\u002FGRPC_LANGUAGE_AGNOSTIC.md) |\n\n---\n\n\u003Cbr\u002F>\n\n## 🎨 Chat UI\n\nBindu includes a beautiful chat interface at `http:\u002F\u002Flocalhost:5173`. Navigate to the `frontend` folder and run `npm run dev` to start the server.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_d5e3719fbc5e.png\" alt=\"Bindu Agent UI\" width=\"640\" style=\"border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);\" \u002F>\n\u003C\u002Fp>\n\n---\n\n\u003Cbr\u002F>\n\n## 🌐 GetBindu.com\n\n[**GetBindu.com**](https:\u002F\u002Fgetbindu.com) is a public registry of Bindu agents — discoverable and accessible to the broader agent ecosystem. Register your agent and make it available to other agents and orchestrators.\n\n---\n\n\u003Cbr\u002F>\n\n## 🛠️ Supported Agent Frameworks\n\nBindu is **framework-agnostic** and tested with:\n\n**Python:**\n- **AG2** (formerly AutoGen)\n- **Agno**\n- **CrewAI**\n- **LangChain**\n- **LlamaIndex**\n- **FastAgent**\n\n**TypeScript:**\n- **OpenAI SDK**\n- **LangChain.js**\n\n**Kotlin:**\n- **OpenAI Kotlin SDK**\n\nBindu is language-agnostic via gRPC — see [docs\u002Fgrpc\u002F](docs\u002Fgrpc\u002F) for how it works and how to add new languages.\n\n**Compatible LLM Providers:**\n- **OpenRouter** — Access 100+ models through a single API\n- **OpenAI** — GPT-4o, GPT-5, and more\n- **[MiniMax AI](https:\u002F\u002Fplatform.minimaxi.com)** — M2.7 (1M context), M2.5, M2.5-highspeed (204K context) via OpenAI-compatible API\n\nWant integration with your favorite framework? [Let us know on Discord](https:\u002F\u002Fdiscord.gg\u002F3w5zuYUuwt)!\n\n---\n\n\u003Cbr\u002F>\n\n## 🧪 Testing\n\nBindu maintains **70%+ test coverage** (target: 80%+):\n\n```bash\n# Unit tests (fast, in pre-commit)\nuv run pytest tests\u002Funit\u002F -v\n\n# E2E gRPC integration tests (real servers, full round-trip)\nuv run pytest tests\u002Fintegration\u002Fgrpc\u002F -v -m e2e\n\n# All tests with coverage\nuv run pytest -n auto --cov=bindu --cov-report=term-missing\nuv run coverage report --skip-covered --fail-under=70\n```\n\n**CI runs automatically on every PR** — unit tests, E2E gRPC tests, and TypeScript SDK build verification. See [`.github\u002Fworkflows\u002Fci.yml`](.github\u002Fworkflows\u002Fci.yml).\n\n---\n\n\u003Cbr\u002F>\n\n## 🔧 Troubleshooting\n\n\u003Cdetails>\n\u003Csummary>Common Issues\u003C\u002Fsummary>\n\n\u003Cbr\u002F>\n\n| Issue | Solution |\n|-------|----------|\n| `Python 3.12 not found` | Install Python 3.12+ and set in PATH, or use `pyenv` |\n| `bindu: command not found` | Activate virtual environment: `source .venv\u002Fbin\u002Factivate` |\n| `Port 3773 already in use` | Set `BINDU_PORT=4000` or override URL with `BINDU_DEPLOYMENT_URL=http:\u002F\u002Flocalhost:4000` |\n| Pre-commit fails | Run `pre-commit run --all-files` |\n| Tests fail | Install dev dependencies: `uv sync --dev` |\n| `Permission denied` (macOS) | Run `xattr -cr .` to clear extended attributes |\n\n**Reset environment:**\n```bash\nrm -rf .venv\nuv venv --python 3.12.9\nuv sync --dev\n```\n\n**Windows PowerShell:**\n```bash\nSet-ExecutionPolicy RemoteSigned -Scope CurrentUser\n```\n\n\u003C\u002Fdetails>\n\n---\n\n\u003Cbr\u002F>\n\n## 🤝 Contributing\n\nWe welcome contributions! Join us on [Discord](https:\u002F\u002Fdiscord.gg\u002F3w5zuYUuwt). Pick the channel that best matches your contribution.\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fgetbindu\u002FBindu.git\ncd Bindu\nuv venv --python 3.12.9\nsource .venv\u002Fbin\u002Factivate\nuv sync --dev\npre-commit run --all-files\n```\n\n> 📖 [Contributing Guidelines](.github\u002Fcontributing.md)\n\n---\n\n\u003Cbr\u002F>\n\n## 📜 License\n\nBindu is open-source under the [Apache License 2.0](https:\u002F\u002Fchoosealicense.com\u002Flicenses\u002Fapache-2.0\u002F).\n\n---\n\n\u003Cbr\u002F>\n\n## 💬 Community\n\nWe 💛 contributions! Whether you're fixing bugs, improving documentation, or building demos—your contributions make Bindu better.\n\n- 💬 [Join Discord](https:\u002F\u002Fdiscord.gg\u002F3w5zuYUuwt) for discussions and support\n- ⭐ [Star the repository](https:\u002F\u002Fgithub.com\u002Fgetbindu\u002FBindu) if you find it useful!\n\n---\n\n\u003Cbr\u002F>\n\n## 👥 Active Moderators\n\nOur dedicated moderators help maintain a welcoming and productive community:\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fraahulrahl\">\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_2c8e485c9a3e.png\" width=\"100px;\" alt=\"Raahul Dutta\"\u002F>\n        \u003Cbr \u002F>\n        \u003Csub>\u003Cb>Raahul Dutta\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n      \u003Cbr \u002F>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FParaschamoli\">\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_1fd0e134b93f.png\" width=\"100px;\" alt=\"Paras Chamoli\"\u002F>\n        \u003Cbr \u002F>\n        \u003Csub>\u003Cb>Paras Chamoli\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n      \u003Cbr \u002F>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fchandan-1427\">\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_b41ee728e270.png\" width=\"100px;\" alt=\"Chandan\"\u002F>\n        \u003Cbr \u002F>\n        \u003Csub>\u003Cb>Chandan\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n      \u003Cbr \u002F>\n    \u003C\u002Ftd>\n    \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n> Want to become a moderator? Reach out on [Discord](https:\u002F\u002Fdiscord.gg\u002F3w5zuYUuwt)!\n\n---\n\n\u003Cbr\u002F>\n\n## 🙏 Acknowledgements\n\nGrateful to these projects:\n\n- [FastA2A](https:\u002F\u002Fgithub.com\u002Fpydantic\u002Ffasta2a)\n- [12 Factor Agents](https:\u002F\u002Fgithub.com\u002Fhumanlayer\u002F12-factor-agents\u002Fblob\u002Fmain\u002Fcontent\u002Ffactor-11-trigger-from-anywhere.md)\n- [A2A](https:\u002F\u002Fgithub.com\u002Fa2aproject\u002FA2A)\n- [AP2](https:\u002F\u002Fgithub.com\u002Fgoogle-agentic-commerce\u002FAP2)\n- [Huggingface chatui](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Fchat-ui)\n- [X402](https:\u002F\u002Fgithub.com\u002Fcoinbase\u002Fx402)\n- [Bindu Logo](https:\u002F\u002Fopenmoji.org\u002Flibrary\u002Femoji-1F33B\u002F)\n- [ASCII Space Art](https:\u002F\u002Fwww.asciiart.eu\u002Fspace\u002Fother)\n\n---\n\n\u003Cbr\u002F>\n\n## 🌌 The Vision\n\n```\na peek into the night sky\n}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}\n{{            +             +                  +   @          {{\n}}   |                *           o     +                .    }}\n{{  -O-    o               .               .          +       {{\n}}   |                    _,.-----.,_         o    |          }}\n{{           +    *    .-'.         .'-.          -O-         {{\n}}      *            .'.-'   .---.   `'.'.         |     *    }}\n{{ .                \u002F_.-'   \u002F     \\   .'-.\\.                   {{\n}}         ' -=*\u003C  |-._.-  |   @   |   '-._|  >*=-    .     + }}\n{{ -- )--           \\`-.    \\     \u002F    .-'\u002F                   }}\n}}       *     +     `.'.    '---'    .'.'    +       o       }}\n{{                  .  '-._         _.-'  .                   }}\n}}         |               `~~~~~~~`       - --===D       @   }}\n{{   o    -O-      *   .                  *        +          {{\n}}         |                      +         .            +    }}\n{{ jgs          .     @      o                        *       {{\n}}       o                          *          o           .  }}\n{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{\n```\n\n_Each symbol is an agent — a spark of intelligence. The tiny dot is Bindu, the origin point in the Internet of Agents._\n\n### NightSky Connection (In Progress)\n\nNightSky enables swarms of agents. Each Bindu is a dot annotating agents with the shared language of A2A, AP2, and X402. Agents can be hosted anywhere — laptops, clouds, or clusters — yet speak the same protocol, trust each other by design, and work together as a single, distributed mind.\n\n---\n\n\u003Cbr\u002F>\n\n## 🗺️ Roadmap\n\n- [x] gRPC transport + language-agnostic SDKs (TypeScript, Kotlin)\n- [ ] Increase test coverage to 80% (in progress)\n- [ ] AP2 end-to-end support\n- [ ] DSPy integration (in progress)\n- [ ] Rust SDK\n- [ ] MLTS support\n- [ ] X402 support with other facilitators\n\n> 💡 [Suggest features on Discord](https:\u002F\u002Fdiscord.gg\u002F3w5zuYUuwt)!\n\n---\n\n\u003Cbr\u002F>\n\n## [We will make this agents bidufied and we do need your help.](https:\u002F\u002Fwww.notion.so\u002Fgetbindu\u002F305d3bb65095808eac2bf720368e9804?v=305d3bb6509580189941000cfad83ae7&source=copy_link)\n\n---\n\n\u003Cbr\u002F>\n\n## 🎓 Workshops\n\n- [AI Native in Action: Agent Symphony](https:\u002F\u002Fwww.meetup.com\u002Fai-native-Amsterdam && India\u002Fevents\u002F311066899\u002F) - [Slides](https:\u002F\u002Fdocs.google.com\u002Fpresentation\u002Fd\u002F1SqGXI0Gv_KCWZ1Mw2SOx_kI0u-LLxwZq7lMSONdl8oQ\u002Fedit)\n\n---\n\n\u003Cbr\u002F>\n\n## ⭐ Star History\n\n[![Star History Chart](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_903d4478b650.png)](https:\u002F\u002Fwww.star-history.com\u002F#getbindu\u002FBindu&Date)\n\n---\n\n\u003Cp align=\"center\">\n  \u003Cstrong>Built with 💛 by the team from Amsterdam && India \u003C\u002Fstrong>\u003Cbr\u002F>\n  \u003Cem>Happy Bindu! 🌻🚀✨\u003C\u002Fem>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>From idea to Internet of Agents in 2 minutes.\u003C\u002Fstrong>\u003Cbr\u002F>\n  \u003Cem>Your agent. Your framework. Universal protocols.\u003C\u002Fem>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgetbindu\u002FBindu\">⭐ Star us on GitHub\u003C\u002Fa> •\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002F3w5zuYUuwt\">💬 Join Discord\u003C\u002Fa> •\n  \u003Ca href=\"https:\u002F\u002Fdocs.getbindu.com\">🌻 Read the Docs\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cbr\u002F>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_c0f77a17961b.jpeg\" alt=\"Bindu\" width=\"720\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cem>\"We believe in the sunflower theory - standing tall together, bringing hope and light to the Internet of Agents.\"\u003C\u002Fem>\n\u003C\u002Fp>\n","\u003Cdiv align=\"center\" id=\"top\">\n  \u003Ca href=\"https:\u002F\u002Fgetbindu.com\">\n    \u003Cpicture>\n      \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_a8962ccf40ec.png\" alt=\"Bindu\" width=\"300\">\n    \u003C\u002Fpicture>\n  \u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\u003Cp align=\"center\">\n  \u003Cem>面向AI智能体的身份、通信与支付层\u003C\u002Fem>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"README.md\">🇬🇧 英文\u003C\u002Fa> •\n  \u003Ca href=\"README.de.md\">🇩🇪 德语\u003C\u002Fa> •\n  \u003Ca href=\"README.es.md\">🇪🇸 西班牙语\u003C\u002Fa> •\n  \u003Ca href=\"README.fr.md\">🇫🇷 法语\u003C\u002Fa> •\n  \u003Ca href=\"README.hi.md\">🇮🇳 印地语\u003C\u002Fa> •\n  \u003Ca href=\"README.bn.md\">🇮🇳 孟加拉语\u003C\u002Fa> •\n  \u003Ca href=\"README.zh.md\">🇨🇳 中文\u003C\u002Fa> •\n  \u003Ca href=\"README.nl.md\">🇳🇱 荷兰语\u003C\u002Fa> •\n  \u003Ca href=\"README.ta.md\">🇮🇳 泰米尔语\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fopensource.org\u002Flicenses\u002FApache-2.0\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache%202.0-blue.svg\" alt=\"许可证\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fhits.sh\u002Fgithub.com\u002FSaptha-me\u002FBindu.svg\">\u003Cimg src=\"https:\u002F\u002Fhits.sh\u002Fgithub.com\u002FSaptha-me\u002FBindu.svg\" alt=\"访问量\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.12+-blue.svg\" alt=\"Python版本\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpepy.tech\u002Fprojects\u002Fbindu\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_ba4ddcfe4090.png\" alt=\"PyPI下载量\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fbindu\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fbindu.svg\" alt=\"PyPI版本\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fbindu\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fbindu\" alt=\"PyPI下载量\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fcoveralls.io\u002Fgithub\u002FSaptha-me\u002FBindu?branch=v0.3.18\">\u003Cimg src=\"https:\u002F\u002Fcoveralls.io\u002Frepos\u002Fgithub\u002FSaptha-me\u002FBindu\u002Fbadge.svg?branch=v0.3.18\" alt=\"覆盖率\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgetbindu\u002FBindu\u002Factions\u002Fworkflows\u002Frelease.yml\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fgetbindu\u002FBindu\u002Factions\u002Fworkflows\u002Frelease.yml\u002Fbadge.svg\" alt=\"测试\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002F3w5zuYUuwt\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F加入Discord-7289DA?logo=discord&logoColor=white\" alt=\"Discord\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgetbindu\u002FBindu\u002Fgraphs\u002Fcontributors\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fcontributors\u002Fgetbindu\u002FBindu\" alt=\"贡献者\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cbr\u002F>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_7b585eadcc64.jpeg\" alt=\"Bindu — 智能体互联网\" width=\"720\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cem>“正如向阳的向日葵一样，智能体会以群体协作的方式共同工作——每个个体都是独立的，但它们合在一起却能创造出更伟大的事物。”\u003C\u002Fem>\n\u003C\u002Fp>\n\n\u003Cbr\u002F>\n\n\u003Cdiv align=\"center\">\n  \u003Ch3>只需一行命令即可部署你的智能体\u003C\u002Fh3>\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n  \u003Cpre>\u003Ccode>curl -fsSL https:\u002F\u002Fgetbindu.com\u002Finstall-bindu.sh | bash\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\n\n---\n\n**Bindu**（读作：宾杜）可以将任何AI智能体转化为生产级微服务。无论你使用哪种框架构建智能体——Agno、LangChain、OpenAI SDK，甚至是纯TypeScript——只需调用`bindufy()`函数，就能获得一个具备DID身份、A2A协议、OAuth2认证和加密支付功能的服务。无需编写基础设施代码，也无需重写现有代码。\n\n支持Python、TypeScript和Kotlin。基于开放协议构建：**A2A**、**AP2**和**X402**。\n\n\u003Cp align=\"center\">\n  \u003Cstrong>🌟 \u003Ca href=\"https:\u002F\u002Fgetbindu.com\">注册你的智能体\u003C\u002Fa> • 🌻 \u003Ca href=\"https:\u002F\u002Fdocs.getbindu.com\">文档\u003C\u002Fa> • 💬 \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002F3w5zuYUuwt\">Discord社区\u003C\u002Fa>\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n\n---\n\n\u003Cbr\u002F>\n\n## 🎥 观看Bindu的实际应用\n\n\u003Cdiv align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=qppafMuw_KI\" target=\"_blank\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_df5f665f35f4.jpg\" alt=\"Bindu演示\" width=\"640\" style=\"border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);\" \u002F>\n  \u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\u003Cbr\u002F>\n\n## 📋 先决条件\n\n在安装Bindu之前，请确保你已具备以下条件：\n\n- **Python 3.12或更高版本** - [在此下载](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F)\n- **UV包管理器** - [安装指南](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fuv)\n- **API密钥要求**：请在环境变量中设置`OPENROUTER_API_KEY`、`OPENAI_API_KEY`或`MINIMAX_API_KEY`。免费的OpenRouter模型可供测试使用。[MiniMax AI](https:\u002F\u002Fplatform.minimaxi.com)提供M2.7模型，具有100万上下文窗口。\n\n\n### 验证你的配置\n\n```bash\n# 检查Python版本\nuv run python --version  # 应显示3.12或更高版本\n\n# 检查UV是否安装成功\nuv --version\n```\n\n---\n\n\u003Cbr\u002F>\n\n## 📦 安装\n\u003Cdetails>\n\u003Csummary>\u003Cb>用户注意（Git与GitHub Desktop）\u003C\u002Fb>\u003C\u002Fsummary>\n\n在某些Windows系统上，即使已经安装了Git，由于PATH配置问题，在命令提示符中仍可能无法识别Git。\n\n如果遇到此问题，你可以使用*GitHub Desktop*作为替代方案：\n\n1. 从https:\u002F\u002Fdesktop.github.com\u002F安装GitHub Desktop。\n2. 使用你的GitHub账号登录。\n3. 使用仓库URL克隆仓库：\n   https:\u002F\u002Fgithub.com\u002Fgetbindu\u002FBindu.git\n\nGitHub Desktop允许你无需使用命令行即可完成克隆、分支管理、提交更改和打开拉取请求的操作。\n\n\u003C\u002Fdetails>\n\n```bash\n# 安装Bindu\nuv add bindu\n\n# 开发模式（若参与Bindu的开发）\n# 创建并激活虚拟环境\nuv venv --python 3.12.9\nsource .venv\u002Fbin\u002Factivate  # macOS\u002FLinux\n# .venv\\Scripts\\activate  # Windows\n\nuv sync --dev\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>常见安装问题\u003C\u002Fb>（点击展开）\u003C\u002Fsummary>\n\n\u003Cbr\u002F>\n\n| 问题 | 解决方法 |\n|-------|----------|\n| `uv: command not found` | 安装UV后重启终端。在Windows上，请使用PowerShell |\n| `Python版本不支持` | 从[python.org](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F)安装Python 3.12+ |\n| 虚拟环境无法激活（Windows） | 使用PowerShell并运行`.venv\\Scripts\\activate` |\n| `需要Microsoft Visual C++` | 下载[Visual C++ Build Tools](https:\u002F\u002Fvisualstudio.microsoft.com\u002Fvisual-cpp-build-tools\u002F) |\n| `ModuleNotFoundError` | 激活虚拟环境并运行`uv sync --dev` |\n\n\u003C\u002Fdetails>\n\n---\n\n\u003Cbr\u002F>\n\n## 🚀 快速入门\n\n### 方案1：手动设置\n\n创建你的智能体脚本`my_agent.py`：\n\n```python\nimport os\n\nfrom bindu.penguin.bindufy import bindufy\nfrom agno.agent import Agent\nfrom agno.tools.duckduckgo import DuckDuckGoTools\nfrom agno.models.openai import OpenAIChat\n\n# 定义你的智能体\nagent = Agent(\n    instructions=\"你是一名研究助理，负责查找并总结信息。\",\n    model=OpenAIChat(id=\"gpt-4o\"),\n    tools=[DuckDuckGoTools()],\n)\n\n# 配置\nconfig = {\n    \"author\": \"your.email@example.com\",\n    \"name\": \"research_agent\",\n    \"description\": \"一名研究助理智能体\",\n    \"deployment\": {\n        \"url\": os.getenv(\"BINDU_DEPLOYMENT_URL\", \"http:\u002F\u002Flocalhost:3773\"),\n        \"expose\": True,\n    },\n    \"skills\": [\"skills\u002Fquestion-answering\", \"skills\u002Fpdf-processing\"]\n}\n\n# 处理函数\ndef handler(messages: list[dict[str, str]]):\n    \"\"\"处理消息并返回智能体响应。\n\n    参数:\n        messages: 包含对话历史的消息字典列表\n\n    返回:\n        智能体的响应结果\n    \"\"\"\n    result = agent.run(input=messages)\n    return result\n\n# 绑定它\nbindufy(配置, 处理函数)\n\n# 使用隧道将你的代理暴露到互联网\n# bindufy(配置, 处理函数, launch=True)\n```\n\n![示例代理](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_d29bd26224c4.png)\n\n你的代理现在已经在 `deployment.url` 中配置的 URL 上线了。\n\n无需更改代码即可设置自定义端口：\n\n```bash\n# Linux\u002FmacOS\nexport BINDU_PORT=4000\n\n# Windows PowerShell\n$env:BINDU_PORT=\"4000\"\n```\n\n当设置了 `BINDU_PORT` 时，现有使用 `http:\u002F\u002Flocalhost:3773` 的示例会自动被覆盖。\n\n### 选项 2：TypeScript 代理\n\n同样的模式，不同的语言。创建 `index.ts`：\n\n```typescript\nimport { bindufy } from \"@bindu\u002Fsdk\";\nimport OpenAI from \"openai\";\n\nconst openai = new OpenAI();\n\nbindufy({\n  author: \"your.email@example.com\",\n  name: \"research_agent\",\n  description: \"一个研究助理代理\",\n  deployment: { url: \"http:\u002F\u002Flocalhost:3773\", expose: true },\n  skills: [\"skills\u002Fquestion-answering\"],\n}, async (messages) => {\n  const response = await openai.chat.completions.create({\n    model: \"gpt-4o\",\n    messages: messages.map(m => ({\n      role: m.role as \"user\" | \"assistant\" | \"system\",\n      content: m.content,\n    })),\n  });\n  return response.choices[0].message.content || \"\";\n});\n```\n\n运行它：\n\n```bash\nnpm install @bindu\u002Fsdk openai\nnpx tsx index.ts\n```\n\nSDK 会在后台自动启动 Bindu 核心。你的代理将在 `http:\u002F\u002Flocalhost:3773` 上线——相同的 A2A 协议、相同的 DID，一切都一样。\n\n> 请参阅 [examples\u002Ftypescript-openai-agent\u002F](examples\u002Ftypescript-openai-agent\u002F) 获取完整的可运行示例及设置说明。\n\n### 选项 3：零配置本地代理\n\n无需设置 Postgres、Redis 或任何云服务即可试用 Bindu。完全在本地运行，使用内存存储和调度器。\n\n```bash\npython examples\u002Fbeginner_zero_config_agent.py\n```\n\n### 选项 4：极简回声代理（测试）\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>查看极简示例\u003C\u002Fb>（点击展开）\u003C\u002Fsummary>\n\n最小可行的代理：\n\n```python\nimport os\n\nfrom bindu.penguin.bindufy import bindufy\n\ndef handler(messages):\n    return [{\"role\": \"assistant\", \"content\": messages[-1][\"content\"]}]\n\nconfig = {\n    \"author\": \"your.email@example.com\",\n    \"name\": \"echo_agent\",\n    \"description\": \"一个用于快速测试的基本回声代理。\",\n    \"deployment\": {\n        \"url\": os.getenv(\"BINDU_DEPLOYMENT_URL\", \"http:\u002F\u002Flocalhost:3773\"),\n        \"expose\": True,\n    },\n    \"skills\": []\n}\n\nbindufy(config, handler)\n\n# 使用隧道将你的代理暴露到互联网\n# bindufy(config, handler, launch=True)\n```\n\n**运行代理：**\n\n```bash\n# 启动代理\npython examples\u002Fecho_agent.py\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>使用 curl 测试代理\u003C\u002Fb>（点击展开）\u003C\u002Fsummary>\n\n\u003Cbr\u002F>\n\n输入：\n```bash\ncurl --location 'http:\u002F\u002Flocalhost:3773\u002F' \\\n--header 'Content-Type: application\u002Fjson' \\\n--data '{\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"message\u002Fsend\",\n    \"params\": {\n        \"message\": {\n            \"role\": \"user\",\n            \"parts\": [\n                {\n                    \"kind\": \"text\",\n                    \"text\": \"Quote\"\n                }\n            ],\n            \"kind\": \"message\",\n            \"messageId\": \"550e8400-e29b-41d4-a716-446655440038\",\n            \"contextId\": \"550e8400-e29b-41d4-a716-446655440038\",\n            \"taskId\": \"550e8400-e29b-41d4-a716-446655440300\"\n        },\n        \"configuration\": {\n            \"acceptedOutputModes\": [\n                \"application\u002Fjson\"\n            ]\n        }\n    },\n    \"id\": \"550e8400-e29b-41d4-a716-446655440024'\n```\n\n输出：\n```bash\n{\n    \"jsonrpc\": \"2.0\",\n    \"id\": \"550e8400-e29b-41d4-a716-446655440024\",\n    \"result\": {\n        \"id\": \"550e8400-e29b-41d4-a716-446655440301\",\n        \"context_id\": \"550e8400-e29b-41d4-a716-446655440038\",\n        \"kind\": \"task\",\n        \"status\": {\n            \"state\": \"submitted\",\n            \"timestamp\": \"2025-12-16T17:10:32.116980+00:00\"\n        },\n        \"history\": [\n            {\n                \"message_id\": \"550e8400-e29b-41d4-a716-446655440038\",\n                \"context_id\": \"550e8400-e29b-41d4-a716-446655440038\",\n                \"task_id\": \"550e8400-e29b-41d4-a716-446655440301\",\n                \"kind\": \"message\",\n                \"parts\": [\n                    {\n                        \"kind\": \"text\",\n                        \"text\": \"Quote\"\n                    }\n                ],\n                \"role\": \"user\"\n            }\n        ]\n    }\n}\n```\n\n检查任务状态\n```bash\ncurl --location 'http:\u002F\u002Flocalhost:3773\u002F' \\\n--header 'Content-Type: application\u002Fjson' \\\n--data '{\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"tasks\u002Fget\",\n    \"params\": {\n        \"taskId\": \"550e8400-e29b-41d4-a716-446655440301\"\n    },\n    \"id\": \"550e8400-e29b-41d4-a716-446655440025'\n```\n\n输出：\n```bash\n{\n    \"jsonrpc\": \"2.0\",\n    \"id\": \"550e8400-e29b-41d4-a716-446655440025\",\n    \"result\": {\n        \"id\": \"550e8400-e29b-41d4-a716-446655440301\",\n        \"context_id\": \"550e8400-e29b-41d4-a716-446655440038\",\n        \"kind\": \"task\",\n        \"status\": {\n            \"state\": \"completed\",\n            \"timestamp\": \"2025-12-16T17:10:32.122360+00:00\"\n        },\n        \"history\": [\n            {\n                \"message_id\": \"550e8400-e29b-41d4-a716-446655440038\",\n                \"context_id\": \"550e8400-e29b-41d4-a716-446655440038\",\n                \"task_id\": \"550e8400-e29b-41d4-a716-446655440301\",\n                \"kind\": \"message\",\n                \"parts\": [\n                    {\n                        \"kind\": \"text\",\n                        \"text\": \"Quote\"\n                    }\n                ],\n                \"role\": \"user\"\n            },\n            {\n                \"role\": \"assistant\",\n                \"parts\": [\n                    {\n                        \"kind\": \"text\",\n                        \"text\": \"Quote\"\n                    }\n                ],\n                \"kind\": \"message\",\n                \"message_id\": \"2f2c1a8e-68fa-4bb7-91c2-eac223e6650b\",\n                \"task_id\": \"550e8400-e29b-41d4-a716-446655440301\",\n                \"context_id\": \"550e8400-e29b-41d4-a716-446655440038\"\n            }\n        ],\n        \"artifacts\": [\n            {\n                \"artifact_id\": \"22ac0080-804e-4ff6-b01c-77e6b5aea7e8\",\n                \"name\": \"result\",\n                \"parts\": [\n                    {\n                        \"kind\": \"text\",\n                        \"text\": \"Quote\",\n                        \"metadata\": {\n                            \"did.message.signature\": \"5opJuKrBDW4woezujm88FzTqRDWAB62qD3wxKz96Bt2izfuzsneo3zY7yqHnV77cq3BDKepdcro2puiGTVAB52qf\"  # pragma: allowlist secret\n                        }\n                    }\n                ]\n            }\n        ]\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n \n\n---\n\n## 🚀 核心功能\n\n| 功能 | 描述 | 文档 |\n|---------|-------------|---------------|\n| 🔐 **身份验证** | 使用 Ory Hydra OAuth2 实现安全的 API 访问（开发阶段可选） | [指南 →](docs\u002FAUTHENTICATION.md) |\n| 💰 **支付集成 (X402)** | 在执行受保护方法之前，接受 Base 区块链上的 USDC 支付 | [指南 →](docs\u002FPAYMENT.md) |\n| 💾 **PostgreSQL 存储** | 用于生产部署的持久化存储（可选 - 默认使用 InMemoryStorage） | [指南 →](docs\u002FSTORAGE.md) |\n| 📋 **Redis 调度器** | 用于多工作进程部署的分布式任务调度（可选 - 默认使用 InMemoryScheduler） | [指南 →](docs\u002FSCHEDULER.md) |\n| 🎯 **技能系统** | 可重用的能力，代理可以宣传并执行这些能力以实现智能任务路由 | [指南 →](docs\u002FSKILLS.md) |\n| 🤝 **代理协商** | 基于能力的代理选择机制，用于智能编排 | [指南 →](docs\u002FNEGOTIATION.md) |\n| 🌐 **隧道技术** | 将本地代理暴露到互联网进行测试（仅限本地开发，不适用于生产环境） | [指南 →](docs\u002FTUNNELING.md) |\n| 📬 **推送通知** | 实时 Webhook 通知，用于任务更新，无需轮询 | [指南 →](docs\u002FNOTIFICATIONS.md) |\n| 📊 **可观测性与监控** | 使用 OpenTelemetry 和 Sentry 跟踪性能并调试问题 | [指南 →](docs\u002FOBSERVABILITY.md) |\n| 🔄 **重试机制** | 具有指数退避的自动重试功能，使代理更具弹性 | [指南 →](https:\u002F\u002Fdocs.getbindu.com\u002Fbindu\u002Flearn\u002Fretry\u002Foverview) |\n| 🔑 **去中心化标识符 (DIDs)** | 用于可验证、安全的代理交互和支付集成的加密身份 | [指南 →](docs\u002FDID.md) |\n| 🏥 **健康检查与指标** | 使用内置端点监控代理的健康状况和性能 | [指南 →](docs\u002FHEALTH_METRICS.md) |\n| 🌍 **语言无关 (gRPC)** | 通过 gRPC 适配器，将用 TypeScript、Kotlin、Rust 或任何其他语言编写的代理绑定到 Bindu | [指南 →](docs\u002FGRPC_LANGUAGE_AGNOSTIC.md) |\n\n---\n\n\u003Cbr\u002F>\n\n## 🎨 聊天界面\n\nBindu 包含一个美观的聊天界面，地址为 `http:\u002F\u002Flocalhost:5173`。导航到 `frontend` 文件夹并运行 `npm run dev` 即可启动服务器。\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_d5e3719fbc5e.png\" alt=\"Bindu 代理界面\" width=\"640\" style=\"border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);\" \u002F>\n\u003C\u002Fp>\n\n---\n\n\u003Cbr\u002F>\n\n## 🌐 GetBindu.com\n\n[**GetBindu.com**](https:\u002F\u002Fgetbindu.com) 是一个公开的 Bindu 代理注册中心——可供更广泛的代理生态系统发现和访问。注册您的代理，使其可供其他代理和编排者使用。\n\n---\n\n\u003Cbr\u002F>\n\n## 🛠️ 支持的代理框架\n\nBindu 是 **框架无关的**，并已在以下框架上进行了测试：\n\n**Python:**\n- **AG2**（原 AutoGen）\n- **Agno**\n- **CrewAI**\n- **LangChain**\n- **LlamaIndex**\n- **FastAgent**\n\n**TypeScript:**\n- **OpenAI SDK**\n- **LangChain.js**\n\n**Kotlin:**\n- **OpenAI Kotlin SDK**\n\nBindu 通过 gRPC 实现语言无关性——请参阅 [docs\u002Fgrpc\u002F](docs\u002Fgrpc\u002F) 了解其工作原理以及如何添加新语言。\n\n**兼容的 LLM 提供商：**\n- **OpenRouter** — 通过单个 API 访问 100 多种模型\n- **OpenAI** — GPT-4o、GPT-5 等\n- **[MiniMax AI](https:\u002F\u002Fplatform.minimaxi.com)** — M2.7（1M 上下文）、M2.5、M2.5-highspeed（204K 上下文）可通过与 OpenAI 兼容的 API 使用\n\n希望与您最喜欢的框架集成吗？请在 [Discord](https:\u002F\u002Fdiscord.gg\u002F3w5zuYUuwt) 上告诉我们！\n\n---\n\n\u003Cbr\u002F>\n\n## 🧪 测试\n\nBindu 的测试覆盖率保持在 **70% 以上**（目标：80% 以上）：\n\n```bash\n# 单元测试（快速，在提交前运行）\nuv run pytest tests\u002Funit\u002F -v\n\n# E2E gRPC 集成测试（真实服务器，完整往返）\nuv run pytest tests\u002Fintegration\u002Fgrpc\u002F -v -m e2e\n\n# 所有测试及覆盖率\nuv run pytest -n auto --cov=bindu --cov-report=term-missing\nuv run coverage report --skip-covered --fail-under=70\n```\n\n**CI 会在每次 PR 提交时自动运行**——包括单元测试、E2E gRPC 测试以及 TypeScript SDK 构建验证。详情请参阅 [`.github\u002Fworkflows\u002Fci.yml`](.github\u002Fworkflows\u002Fci.yml)。\n\n---\n\n\u003Cbr\u002F>\n\n## 🔧 故障排除\n\n\u003Cdetails>\n\u003Csummary>常见问题\u003C\u002Fsummary>\n\n\u003Cbr\u002F>\n\n| 问题 | 解决方案 |\n|-------|----------|\n| `未找到 Python 3.12` | 安装 Python 3.12 或更高版本，并将其添加到 PATH 中，或使用 `pyenv` |\n| `bindu: 命令未找到` | 激活虚拟环境：`source .venv\u002Fbin\u002Factivate` |\n| `端口 3773 已被占用` | 设置 `BINDU_PORT=4000`，或通过 `BINDU_DEPLOYMENT_URL=http:\u002F\u002Flocalhost:4000` 覆盖 URL |\n| pre-commit 失败 | 运行 `pre-commit run --all-files` |\n| 测试失败 | 安装开发依赖：`uv sync --dev` |\n| `权限拒绝`（macOS） | 运行 `xattr -cr .` 清除扩展属性 |\n\n**重置环境：**\n```bash\nrm -rf .venv\nuv venv --python 3.12.9\nuv sync --dev\n```\n\n**Windows PowerShell：**\n```bash\nSet-ExecutionPolicy RemoteSigned -Scope CurrentUser\n```\n\n\u003C\u002Fdetails>\n\n---\n\n\u003Cbr\u002F>\n\n## 🤝 贡献\n\n我们欢迎您的贡献！加入我们的 [Discord](https:\u002F\u002Fdiscord.gg\u002F3w5zuYUuwt)。选择最适合您贡献的频道。\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fgetbindu\u002FBindu.git\ncd Bindu\nuv venv --python 3.12.9\nsource .venv\u002Fbin\u002Factivate\nuv sync --dev\npre-commit run --all-files\n```\n\n> 📖 [贡献指南](.github\u002Fcontributing.md)\n\n---\n\n\u003Cbr\u002F>\n\n## 📜 许可证\n\nBindu 是开源项目，采用 [Apache License 2.0](https:\u002F\u002Fchoosealicense.com\u002Flicenses\u002Fapache-2.0\u002F) 许可证。\n\n---\n\n\u003Cbr\u002F>\n\n## 💬 社区\n\n我们非常感谢大家的贡献！无论您是修复 bug、改进文档，还是构建演示——您的贡献让 Bindu 更加出色。\n\n- 💬 [加入 Discord](https:\u002F\u002Fdiscord.gg\u002F3w5zuYUuwt) 以获取讨论和支持\n- ⭐ 如果您觉得这个项目有用，请 [给仓库点赞](https:\u002F\u002Fgithub.com\u002Fgetbindu\u002FBindu)！\n\n---\n\n\u003Cbr\u002F>\n\n## 👥 积极的版主\n\n我们敬业的版主致力于维护一个友好且高效的社区：\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fraahulrahl\">\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_2c8e485c9a3e.png\" width=\"100px;\" alt=\"Raahul Dutta\"\u002F>\n        \u003Cbr \u002F>\n        \u003Csub>\u003Cb>Raahul Dutta\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n      \u003Cbr \u002F>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FParaschamoli\">\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_1fd0e134b93f.png\" width=\"100px;\" alt=\"Paras Chamoli\"\u002F>\n        \u003Cbr \u002F>\n        \u003Csub>\u003Cb>Paras Chamoli\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n      \u003Cbr \u002F>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fchandan-1427\">\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_b41ee728e270.png\" width=\"100px;\" alt=\"Chandan\"\u002F>\n        \u003Cbr \u002F>\n        \u003Csub>\u003Cb>Chandan\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n      \u003Cbr \u002F>\n    \u003C\u002Ftd>\n    \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n> 想成为版主吗？请在 [Discord](https:\u002F\u002Fdiscord.gg\u002F3w5zuYUuwt) 上联系我们！\n\n---\n\n\u003Cbr\u002F>\n\n## 🙏 致谢\n\n感谢以下项目：\n\n- [FastA2A](https:\u002F\u002Fgithub.com\u002Fpydantic\u002Ffasta2a)\n- [12 Factor Agents](https:\u002F\u002Fgithub.com\u002Fhumanlayer\u002F12-factor-agents\u002Fblob\u002Fmain\u002Fcontent\u002Ffactor-11-trigger-from-anywhere.md)\n- [A2A](https:\u002F\u002Fgithub.com\u002Fa2aproject\u002FA2A)\n- [AP2](https:\u002F\u002Fgithub.com\u002Fgoogle-agentic-commerce\u002FAP2)\n- [Huggingface chatui](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Fchat-ui)\n- [X402](https:\u002F\u002Fgithub.com\u002Fcoinbase\u002Fx402)\n- [Bindu Logo](https:\u002F\u002Fopenmoji.org\u002Flibrary\u002Femoji-1F33B\u002F)\n- [ASCII Space Art](https:\u002F\u002Fwww.asciiart.eu\u002Fspace\u002Fother)\n\n---\n\n\u003Cbr\u002F>\n\n## 🌌 愿景\n\n```\n一瞥夜空\n}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}\n{{            +             +                  +   @          {{\n}}   |                *           o     +                .    }}\n{{  -O-    o               .               .          +       {{\n}}   |                    _,.-----.,_         o    |          }}\n{{           +    *    .-'.         .'-.          -O-         {{\n}}      *            .'.-'   .---.   `'.'.         |     *    }}\n{{ .                \u002F_.-'   \u002F     \\   .'-.\\.                   {{\n}}         ' -=*\u003C  |-._.-  |   @   |   '-._|  >*=-    .     + }}\n{{ -- )--           \\`-.    \\     \u002F    .-'\u002F                   }}\n}}       *     +     `.'.    '---'    .'.'    +       o       }}\n{{                  .  '-._         _.-'  .                   }}\n}}         |               `~~~~~~~`       - --===D       @   }}\n{{   o    -O-      *   .                  *        +          {{\n}}         |                      +         .            +    }}\n{{ jgs          .     @      o                        *       {{\n}}       o                          *          o           .  }}\n{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{\n```\n\n_每一个符号都代表一个智能体——智慧的火花。那个小点就是 Bindu，它是“智能体互联网”中的起点。_\n\n### NightSky 连接（进行中）\n\nNightSky 能够支持智能体群集运作。每个 Bindu 都是一个标记点，用 A2A、AP2 和 X402 的通用语言来标注智能体。这些智能体可以部署在任何地方——笔记本电脑、云端或集群——但它们使用相同的协议进行通信，从设计上就彼此信任，并作为一个统一的分布式心智协同工作。\n\n---\n\n\u003Cbr\u002F>\n\n## 🗺️ 路线图\n\n- [x] gRPC 传输 + 语言无关 SDKs（TypeScript、Kotlin）\n- [ ] 将测试覆盖率提升至 80%（进行中）\n- [ ] 完整支持 AP2\n- [ ] DSPy 集成（进行中）\n- [ ] Rust SDK\n- [ ] 支持 MLTS\n- [ ] 与其他促进者一起支持 X402\n\n> 💡 [在 Discord 上提出功能建议](https:\u002F\u002Fdiscord.gg\u002F3w5zuYUuwt)！\n\n---\n\n\u003Cbr\u002F>\n\n## [我们将使这一智能体生态系统更加完善，而我们也确实需要您的帮助。](https:\u002F\u002Fwww.notion.so\u002Fgetbindu\u002F305d3bb65095808eac2bf720368e9804?v=305d3bb6509580189941000cfad83ae7&source=copy_link)\n\n---\n\n\u003Cbr\u002F>\n\n## 🎓 研讨会\n\n- [AI Native 实战：智能体交响曲](https:\u002F\u002Fwww.meetup.com\u002Fai-native-Amsterdam && India\u002Fevents\u002F311066899\u002F) - [幻灯片](https:\u002F\u002Fdocs.google.com\u002Fpresentation\u002Fd\u002F1SqGXI0Gv_KCWZ1Mw2SOx_kI0u-LLxwZq7lMSONdl8oQ\u002Fedit)\n\n---\n\n\u003Cbr\u002F>\n\n## ⭐ 星标历史\n\n[![星标历史图表](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_903d4478b650.png)](https:\u002F\u002Fwww.star-history.com\u002F#getbindu\u002FBindu&Date)\n\n---\n\n\u003Cp align=\"center\">\n  \u003Cstrong>由来自阿姆斯特丹和印度的团队用心打造\u003C\u002Fstrong>\u003Cbr\u002F>\n  \u003Cem>快乐的 Bindu！🌻🚀✨\u003C\u002Fem>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>从创意到“智能体互联网”，仅需两分钟。\u003C\u002Fstrong>\u003Cbr\u002F>\n  \u003Cem>属于你的智能体，属于你的框架，通用的协议。\u003C\u002Fem>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgetbindu\u002FBindu\">⭐ 在 GitHub 上为我们加星\u003C\u002Fa> •\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002F3w5zuYUuwt\">💬 加入 Discord\u003C\u002Fa> •\n  \u003Ca href=\"https:\u002F\u002Fdocs.getbindu.com\">🌻 阅读文档\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cbr\u002F>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_readme_c0f77a17961b.jpeg\" alt=\"Bindu\" width=\"720\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cem>“我们相信向日葵理论——共同挺立，为‘智能体互联网’带来希望与光明。”\u003C\u002Fem>\n\u003C\u002Fp>","# Bindu 快速上手指南\n\nBindu 是一个为 AI Agent 打造的身份、通信与支付层。它能将任何框架（如 Agno、LangChain、OpenAI SDK 或原生 TypeScript）编写的 AI Agent 一键转换为具备 DID 身份、A2A 协议、OAuth2 认证及加密支付能力的生产级微服务，无需重写代码或构建基础设施。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**：Windows, macOS, 或 Linux\n*   **Python 版本**：3.12 或更高版本\n    *   下载地址：[python.org](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F)\n*   **包管理器**：UV (推荐)\n    *   安装指南：[github.com\u002Fastral-sh\u002Fuv](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fuv)\n*   **API Key**：需在环境变量中配置至少一个 LLM API Key\n    *   `OPENROUTER_API_KEY` (推荐，含免费模型)\n    *   `OPENAI_API_KEY`\n    *   `MINIMAX_API_KEY`\n\n**验证环境：**\n\n```bash\n# 检查 Python 版本 (应为 3.12+)\nuv run python --version\n\n# 检查 UV 安装\nuv --version\n```\n\n## 安装步骤\n\n推荐使用 `uv` 进行安装和管理。\n\n### 1. 安装 Bindu\n\n在项目目录中执行以下命令添加依赖：\n\n```bash\nuv add bindu\n```\n\n### 2. 开发者模式安装（可选）\n\n如果您需要贡献代码或进行深度开发：\n\n```bash\n# 创建并激活虚拟环境 (指定 Python 3.12.9)\nuv venv --python 3.12.9\nsource .venv\u002Fbin\u002Factivate  # macOS\u002FLinux\n# .venv\\Scripts\\activate  # Windows\n\n# 同步开发依赖\nuv sync --dev\n```\n\n> **Windows 用户提示**：如果在 CMD 中遇到 `git` 命令不可用的问题，建议使用 **GitHub Desktop** 克隆仓库，或使用 PowerShell 运行相关命令。\n\n## 基本使用\n\n只需几行代码即可将现有的 Agent 逻辑封装为 Bindu 服务。\n\n### 方式一：Python Agent (基于 Agno)\n\n创建一个名为 `my_agent.py` 的文件：\n\n```python\nimport os\n\nfrom bindu.penguin.bindufy import bindufy\nfrom agno.agent import Agent\nfrom agno.tools.duckduckgo import DuckDuckGoTools\nfrom agno.models.openai import OpenAIChat\n\n# 1. 定义您的 Agent\nagent = Agent(\n    instructions=\"You are a research assistant that finds and summarizes information.\",\n    model=OpenAIChat(id=\"gpt-4o\"),\n    tools=[DuckDuckGoTools()],\n)\n\n# 2. 配置元数据\nconfig = {\n    \"author\": \"your.email@example.com\",\n    \"name\": \"research_agent\",\n    \"description\": \"A research assistant agent\",\n    \"deployment\": {\n        \"url\": os.getenv(\"BINDU_DEPLOYMENT_URL\", \"http:\u002F\u002Flocalhost:3773\"),\n        \"expose\": True,\n    },\n    \"skills\": [\"skills\u002Fquestion-answering\", \"skills\u002Fpdf-processing\"]\n}\n\n# 3. 定义处理函数\ndef handler(messages: list[dict[str, str]]):\n    \"\"\"处理消息并返回 Agent 响应\"\"\"\n    result = agent.run(input=messages)\n    return result\n\n# 4. 启动服务 (Bindu-fy)\nbindufy(config, handler)\n\n# 若需通过隧道将 Agent 暴露到公网，可使用:\n# bindufy(config, handler, launch=True)\n```\n\n**运行 Agent：**\n\n```bash\nuv run python my_agent.py\n```\n\n服务默认启动在 `http:\u002F\u002Flocalhost:3773`。如需自定义端口，可在运行前设置环境变量：\n\n```bash\n# Linux\u002FmacOS\nexport BINDU_PORT=4000\n\n# Windows PowerShell\n$env:BINDU_PORT=\"4000\"\n```\n\n### 方式二：TypeScript Agent\n\nCreate an `index.ts` file:\n\n```typescript\nimport { bindufy } from \"@bindu\u002Fsdk\";\nimport OpenAI from \"openai\";\n\nconst openai = new OpenAI();\n\nbindufy({\n  author: \"your.email@example.com\",\n  name: \"research_agent\",\n  description: \"A research assistant agent\",\n  deployment: { url: \"http:\u002F\u002Flocalhost:3773\", expose: true },\n  skills: [\"skills\u002Fquestion-answering\"],\n}, async (messages) => {\n  const response = await openai.chat.completions.create({\n    model: \"gpt-4o\",\n    messages: messages.map(m => ({\n      role: m.role as \"user\" | \"assistant\" | \"system\",\n      content: m.content,\n    })),\n  });\n  return response.choices[0].message.content || \"\";\n});\n```\n\n**运行 TypeScript Agent：**\n\n```bash\nnpm install @bindu\u002Fsdk openai\nnpx tsx index.ts\n```\n\n### 方式三：零配置本地测试\n\n无需配置数据库或云服务，直接使用内存存储运行最简单的回声测试：\n\n```bash\npython examples\u002Fbeginner_zero_config_agent.py\n```\n\n### 测试您的 Agent\n\n服务启动后，可以使用 `curl` 发送 JSON-RPC 请求进行测试：\n\n```bash\ncurl --location 'http:\u002F\u002Flocalhost:3773\u002F' \\\n--header 'Content-Type: application\u002Fjson' \\\n--data '{\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"message\u002Fsend\",\n    \"params\": {\n        \"message\": {\n            \"role\": \"user\",\n            \"parts\": [{\"kind\": \"text\", \"text\": \"Hello Bindu\"}],\n            \"kind\": \"message\",\n            \"messageId\": \"550e8400-e29b-41d4-a716-446655440038\",\n            \"contextId\": \"550e8400-e29b-41d4-a716-446655440038\",\n            \"taskId\": \"550e8400-e29b-41d4-a716-446655440300\"\n        },\n        \"configuration\": {\"acceptedOutputModes\": [\"application\u002Fjson\"]}\n    },\n    \"id\": \"550e8400-e29b-41d4-a716-446655440024\"\n}'\n```\n\n更多详细文档和示例请访问 [docs.getbindu.com](https:\u002F\u002Fdocs.getbindu.com)。","一家初创团队正在构建一个跨平台的“智能旅行规划系统”，需要让负责机票查询、酒店比价和当地向导的三个独立 AI 代理实时协作并自动完成支付结算。\n\n### 没有 Bindu 时\n- **集成成本高昂**：开发者必须为每个代理手动编写 REST API 封装代码，并自行处理不同框架（如 LangChain 与原生 Python）间的通信协议转换。\n- **身份信任缺失**：代理间缺乏统一的去中心化身份（DID），难以验证调用方合法性，容易遭受恶意请求或数据篡改。\n- **支付流程断裂**：涉及费用结算时，需额外接入第三方支付网关并编写复杂的对账逻辑，无法在代理交互中直接完成原子化支付。\n- **运维监控黑盒**：缺乏标准化的可观测性接口，当多代理协作出错时，难以追踪具体是哪个环节导致了任务失败。\n\n### 使用 Bindu 后\n- **一键微服务化**：只需在现有代码中调用 `bindufy()` 函数，即可将任意框架开发的代理瞬间转化为具备标准 A2A 协议的生产级微服务，无需重写架构。\n- **内置可信身份**：Bindu 自动为每个代理分配 DID 身份并处理 OAuth2 认证，确保只有授权的代理才能加入协作网络，保障交互安全。\n- **原生支付支持**：基于 X402 协议，代理可在对话过程中直接发起和接收加密货币支付，实现了“协商即结算”的闭环体验。\n- **全链路可观测**：平台自带标准化监控层，团队可以清晰看到每个代理的状态、消息流向及性能指标，快速定位并修复协作瓶颈。\n\nBindu 通过提供统一的身份、通信与支付层，让开发者能像组装乐高积木一样，零基础设施成本地构建可互操作、可信赖的 AI 代理集群。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FGetBindu_Bindu_5c66558f.png","GetBindu","getbindu.com","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FGetBindu_15f88599.png","",null,"raahul@getbindu.com","https:\u002F\u002Fgetbindu.com","https:\u002F\u002Fgithub.com\u002FGetBindu",[85,89,93,97,101,105,109,112,115,118],{"name":86,"color":87,"percentage":88},"Python","#3572A5",59.1,{"name":90,"color":91,"percentage":92},"TypeScript","#3178c6",22.6,{"name":94,"color":95,"percentage":96},"Svelte","#ff3e00",16.9,{"name":98,"color":99,"percentage":100},"Kotlin","#A97BFF",0.5,{"name":102,"color":103,"percentage":104},"CSS","#663399",0.3,{"name":106,"color":107,"percentage":108},"Shell","#89e051",0.1,{"name":110,"color":111,"percentage":108},"JavaScript","#f1e05a",{"name":113,"color":114,"percentage":108},"Dockerfile","#384d54",{"name":116,"color":117,"percentage":108},"HTML","#e34c26",{"name":119,"color":120,"percentage":121},"Mako","#7e858d",0,3276,335,"2026-04-04T20:33:53","NOASSERTION","Linux, macOS, Windows","未说明",{"notes":129,"python":130,"dependencies":131},"必须安装 UV 包管理器；需要设置 API 密钥环境变量（如 OPENAI_API_KEY、OPENROUTER_API_KEY 或 MINIMAX_API_KEY）；支持 Python、TypeScript 和 Kotlin；Windows 用户若遇 git 命令问题可使用 GitHub Desktop 替代；开发模式需运行 uv sync --dev。","3.12+",[132,133,134,135,136],"bindu","uv","agno (可选)","openai (可选)","@bindu\u002Fsdk (TypeScript)",[15,13],[139,140,141,142,143,144],"agent-communication","autonomous-agents","agent-orchestration","a2a","ai-agent","machine-learning","2026-03-27T02:49:30.150509","2026-04-06T06:45:32.865079",[148,153,157,162,167,172],{"id":149,"question_zh":150,"answer_zh":151,"source_url":152},16443,"不同端点的错误处理类型不一致怎么办？","在新版本中，错误处理已标准化：\n1. 所有服务器内部错误或配置错误统一使用 `InternalError`（对应 HTTP 500 状态码）。\n2. 资源未找到错误统一使用 `SkillNotFoundError`（对应 HTTP 404 状态码）。\n3. 所有错误响应均采用一致的 JSON-RPC 2.0 格式。\n此前 `skill_detail_endpoint` 等端点误用错误类型的问题已在最新发行版中修复。","https:\u002F\u002Fgithub.com\u002FGetBindu\u002FBindu\u002Fissues\u002F109",{"id":154,"question_zh":155,"answer_zh":156,"source_url":152},16439,"如何验证技能列表端点（skills list endpoint）的输入参数是否有效？","在最新版本中，查询参数已得到严格验证：\n1. 无效的 limit 值（负数或大于 1000）将正确返回 400 Bad Request。\n2. 无效的 offset 值（负数）也会返回 400 错误。\n3. 错误响应遵循一致的 JSON-RPC 格式。\n4. 使用了 SkillQueryParams Pydantic 模型来验证输入。\n5. 错误处理已通过 jsonrpc_error 标准化。\n您可以发送如 `GET \u002Fagent\u002Fskills?limit=-5` 或 `GET \u002Fagent\u002Fskills?limit=5000` 的请求来测试，系统会拒绝这些非法值。",{"id":158,"question_zh":159,"answer_zh":160,"source_url":161},16440,"如果 Bindu Agent 配置中缺少必填字段（如 author, name, deployment.url），会发生什么？","系统会在初始化前进行快速失败（fail-fast）验证。如果缺少必填字段，会抛出带有详细描述信息的 ValueError，而不是模糊的 KeyError。\n例如，如果缺少 `author` 和 `deployment.url`，错误信息将显示：\n\"Invalid Bindu configuration.\nMissing required field(s):\n- author\n- deployment.url\"\n验证逻辑位于 `ConfigValidator.validate_and_process()` 方法中的 `_validate_required_fields()` 函数，确保在 `bindufy()` 初始化完成前捕获所有配置错误。","https:\u002F\u002Fgithub.com\u002FGetBindu\u002FBindu\u002Fissues\u002F300",{"id":163,"question_zh":164,"answer_zh":165,"source_url":166},16441,"Bindu 是否有官方的 Agent 发现或市场系统？","目前不需要单独构建新的发现系统。维护者指出，README 文件中已经提到了目录（directory）部分，用于代理的发现和注册。建议用户先阅读 README 文档，如有进一步讨论需求，可前往 Discord 社区交流。","https:\u002F\u002Fgithub.com\u002FGetBindu\u002FBindu\u002Fissues\u002F154",{"id":168,"question_zh":169,"answer_zh":170,"source_url":171},16442,"默认 Agent 端口是固定的吗？如何修改它？","虽然示例代码和 README 中硬编码了端口 `3773`（例如 `\"url\": \"http:\u002F\u002Flocalhost:3773\"`），但端口实际上是可配置的。\n用户可以通过以下方式修改：\n1. 手动编辑配置字典中的 URL。\n2. 在故障排除部分可以看到使用 `http:\u002F\u002Flocalhost:4000` 的示例。\n该功能允许用户在运行多个本地 Agent、部署 Docker 或避免端口冲突时灵活指定端口，符合 Python Web 框架通过环境变量控制端口的常见模式。","https:\u002F\u002Fgithub.com\u002FGetBindu\u002FBindu\u002Fissues\u002F257",{"id":173,"question_zh":174,"answer_zh":175,"source_url":176},16444,"a2a_protocol 中缺失 payment_payload 验证会导致什么问题，如何解决？","如果在非受保护的方法中访问 `request.state.payment_payload` 而其他支付上下文字段（如 payment_requirements）不存在，可能会引发 AttributeError 导致 500 内部服务器错误。\n解决方案是实施更稳健的检查机制，确保在序列化之前所有三个支付上下文字段都存在。该问题已在最近的代码合并中得到解决，建议使用最新版本的代码以避免此异常。","https:\u002F\u002Fgithub.com\u002FGetBindu\u002FBindu\u002Fissues\u002F291",[178,183,188,193,198,203,208,213,218,223,228,233,238,243,248,253,257],{"id":179,"version":180,"summary_zh":181,"released_at":182},98808,"v2026.12.5","发布：文档分析器与可靠性改进  \n版本：2026.12.5  \n日期：2026年3月19日  \n\n概述  \n--------  \n本次维护与功能发布聚焦于文档分析、支付健壮性、调度器和存储的可靠性，以及整个 UI 和配置界面的易用性提升。此外，本版本还引入了 DSPy 代理示例、结构化 LangGraph 工作流集成，并包含了社区贡献的多项可访问性和文档增强功能。\n\n解决的问题  \n--------------  \n在本次发布之前：  \n- 文档分析器示例未能始终将提取的文本传递到 `FilePart.text` 中，导致下游处理和测试更加困难；  \n- 调度器和存储子系统存在边缘场景问题（如 AnyIO 死锁、CPU 消耗过高、潜在的 OOM），且格式不一致；  \n- 多币种、多资产的支付流程配置较为复杂且容易出错，可能导致重复或部分支付上下文的产生；  \n- 若干示例和配置文件缺少依赖项或要求描述不清，增加了新用户的上手难度。  \n\n在本次发布之后：  \n- 文档分析器能够可靠地保留 `FilePart.text`，支持 PDF\u002FDOCX 媒体类型，并附带专用测试用例；  \n- 存储、调度器、Hydra 中间件和 TaskManager 经过加固，错误处理能力更强，并发安全性更高；  \n- 支付功能无缝支持多种货币及多资产需求，并进行严格的上下文验证；  \n- 示例和文档更新为包含 DSPy、LangGraph 工作流、明确的 API 密钥前置条件，并优化了 README 文件。  \n\n功能特性  \n--------  \n\n1. 文档分析器代理与前端集成  \n   - 新增一个专用的文档分析器代理，配备技能绑定和文档处理的工作流示例；  \n   - 前端显式允许 PDF 和 DOCX 格式，并对动态格式进行合理处理；  \n   - 确保上传的 `FilePart` 对象保留 `text` 属性，以便下游处理器能够直接操作内容；  \n   - 提供专用的 `.env` 和 `skill.yaml` 文件，实现即插即用。  \n\n2. DSPy 代理与结构化 LangGraph 工作流  \n   - 在 `examples\u002Fbeginner\u002F` 目录下新增一个 DSPy 代理示例，演示问答行为；  \n   - 为该 DSPy 示例添加全面的单元测试，以验证其行为并防止回归；  \n   - 集成一个结构化 LangGraph 工作流示例，展示 Bindu 中的高级编排模式。  \n\n3. 支付功能与多币种支持  \n   - 扩展支付逻辑，允许代理在单个配置中接受多种支付币种；  \n   - 实现多资产支付需求，并加强支付上下文的验证；  \n   - 修复 A2A 消息发送端点中重复注入支付上下文的问题；  \n   - 避免因支付状态仅部分设置或格式错误而导致的 500 服务器错误。  \n\n4. 存储、调度器与认证可靠性  \n   - 重构存储层，强化内存子系统，降低 OOM 风险，并优化数据…","2026-03-19T20:03:04",{"id":184,"version":185,"summary_zh":186,"released_at":187},98809,"2026.9.4","发布：用于持久化代理身份的 Vault 集成\n版本：2026.9.4\n日期：2026年2月25日\n\n概述\n--------\n本次主要功能发布新增了 HashiCorp Vault 集成，用于持久化存储 DID 密钥和 Hydra OAuth2 凭证。这解决了在 Kubernetes 部署中，Pod 重启会导致新的代理身份以及孤立的 Hydra OAuth 客户端这一关键问题。\n\n解决的问题\n--------------\n在此版本之前，当 Pod 宕机并重启时：\n❌ 会生成新的 DID 密钥 → 代理身份不同\n❌ 会注册新的 Hydra OAuth 客户端 → 在 Hydra 中产生孤立客户端\n❌ 认证中断 → 客户端无法使用新凭据进行认证\n\n而在启用 Vault 后：\n✅ DID 密钥从 Vault 恢复 → 保持相同的代理身份\n✅ 重复使用 Hydra 凭证 → 不会产生重复客户端\n✅ 认证持续有效 → Pod 重启无缝衔接\n\n特性\n--------\n\n1. Vault 客户端模块 (bindu\u002Futils\u002Fvault_client.py)\n   - 存储和检索 DID 私钥\u002F公钥\n   - 存储和检索 Hydra OAuth2 凭证\n   - 自动备份与恢复功能\n   - 当 Vault 不可用时可优雅降级\n   - 复用现有 AsyncHTTPClient 以提高效率（避免创建重复 HTTP 客户端）\n   - 正确清理异步会话，防止内存泄漏\n\n2. 确定性代理身份\n   - 代理 ID 通过 SHA256(作者:代理名称) 确定性生成\n   - 相同作者 + 名称 → 相同 agent_id → 每次生成相同的 DID\n   - 无需在配置中硬编码代理 ID\n   - 自动实现持久化身份，无需人工干预\n\n3. DID 设置集成\n   - 默认设置已更改：recreate_keys=False（原为 True）\n   - 在生成新密钥前先检查 Vault 中是否已有密钥\n   - 自动将新生成的密钥备份至 Vault\n   - Pod 重启时从 Vault 恢复密钥\n   - 使用配置文件中指定的正确文件名（private.pem、public.pem）\n\n4. Hydra 注册集成\n   - 优先级 1：检查 Vault 中是否已有凭证\n   - 优先级 2：检查本地文件系统\n   - 优先级 3：生成新凭证\n   - 自动将凭证备份至 Vault\n   - 重新创建客户端时复用 Vault 中的 client_secret\n   - 在所有代码路径中正确清理 VaultClient 会话\n\n5. 配置\n   - 环境变量：VAULT__ENABLED、VAULT__URL、VAULT__TOKEN\n   - 替代名称：VAULT_ADDR、VAULT_TOKEN\n   - 更新了 VaultSettings 并添加了全面文档\n   - 在 DID 初始化之前从环境变量加载 Vault 配置\n\n6. 文档\n   - 完整指南：docs\u002FVAULT_INTEGRATION.md\n   - 示例配置：.env.vault.example\n   - Kubernetes 部署示例\n   - Vault 设置说明\n   - 故障排除指南\n\n7. 测试\n   - 全面单元测试：tests\u002Funit\u002Ftest_vault_integration.py\n   - 覆盖所有 Vault 操作的测试\n   - 基于模拟的测试以兼容 CI\u002FCD 流程\n   - 更新测试以使用正确的 DID 密钥文件名\n\n8. 类型安全与代码质量\n   - 整个代码库中正确处理 UUID 类型\n   - 实现类型安全的 agent_id 转换","2026-02-25T11:47:22",{"id":189,"version":190,"summary_zh":191,"released_at":192},98810,"2026.9.2.2","发布：依赖版本更新\n版本：2026.9.2.1\n日期：2026年2月23日\n\n概述\n--------\n此补丁版本放宽了 uvicorn 和 pydantic 的版本约束，以提升与较新版本的兼容性，并简化依赖解析。\n\n变更\n----\n\n依赖更新：\n- 放宽 uvicorn 约束：0.34.1 → >=0.35\n  - 允许使用包含错误修复和改进的新版 uvicorn\n  - 在主依赖项及 [core] 附加组件中均已更新\n- 放宽 pydantic 约束：精确版本 → >=2.11.7\n  - 已在上一版本中更新，此处为完整性补充\n\n优势：\n- 更好的与生态社区包的兼容性\n- 更易的依赖解析\n- 能够获取最新的错误修复和安全补丁\n- 减少依赖冲突\n\n破坏性变更\n----------\n无\n\n迁移说明\n--------\n- 运行：uv sync 更新依赖\n- 无需修改代码\n\n测试\n----\n✅ 所有测试通过\n✅ 预提交钩子通过\n✅ 依赖解析已验证\n\n贡献者\n------\n- Raahul Dutta\n","2026-02-23T05:33:35",{"id":194,"version":195,"summary_zh":196,"released_at":197},98811,"2026.9.2.1","发布：依赖版本更新\n版本：2026.9.2.1\n日期：2026年2月23日\n\n概述\n--------\n此补丁版本放宽了 uvicorn 和 pydantic 的版本约束，以提升与较新版本的兼容性，并简化依赖解析。\n\n变更\n----\n\n依赖更新：\n- 放宽 uvicorn 约束：0.34.1 → >=0.35\n  - 允许使用包含错误修复和改进的新版 uvicorn\n  - 主依赖和 [core] 附加组件中均已更新\n- 放宽 pydantic 约束：精确版本 → >=2.11.7\n  - 已在上一版本中更新，此处为完整性补充\n\n优势：\n- 更好的与生态社区包的兼容性\n- 更简单的依赖解析\n- 能够获取最新的错误修复和安全补丁\n- 减少依赖冲突\n\n重大变更\n--------\n无\n\n迁移说明\n--------\n- 运行：uv sync 更新依赖\n- 无需修改代码\n\n测试\n----\n✅ 所有测试通过\n✅ 预提交钩子通过\n✅ 依赖解析已验证\n\n贡献者\n------\n- Raahul Dutta\n","2026-02-22T18:56:33",{"id":199,"version":200,"summary_zh":201,"released_at":202},98812,"2026.9.2","发布：依赖优化与认证配置\n版本：2026.9.2\n日期：2026年2月23日\n\n概述\n--------\n本次发布重点在于通过将重型代理框架设为可选依赖来减少安装占用空间，并改进公共端点的认证配置。\n\n变更\n-------\n\n依赖优化：\n- 将代理框架移至可选的 [agents] extra 中\n  - agno、langchain、langgraph、ollama、duckduckgo-search 现在均为可选\n  - 安装命令：uv pip install bindu[agents]\n  - 显著减小默认安装大小\n- 核心 Bindu 功能仍保留在基础安装中\n- 区块链\u002F支付相关功能（x402、web3）仍默认包含\n\n认证与安全：\n- 新增 \u002Fagent\u002Fnegotiation 到公共端点（无需认证）\n- 清理并优化了公共端点配置\n- 从认证绕过列表中移除了不必要的静态文件路由\n- 提升了认证中间件配置的清晰度\n\n发布流程：\n- 更新发布工作流，采用基于周的 CalVer 格式（YYYY.W.D）\n- 使用新的版本号格式增强了 create-release 技能\n\n代码质量：\n- 从公共端点配置中移除了静态文件路径\n- 更新了密钥基线\n\n安装选项\n--------------------\n# 极简安装（仅核心）\nuv pip install bindu\n\n# 包含代理框架（用于示例）\nuv pip install bindu[agents]\n\n# 开发环境安装\nuv pip install -e \".[agents]\"\n\n重大变更\n----------------\n无——代理框架仍然可用，只是变为可选\n\n迁移说明\n---------------\n- 如果您使用 agno、langchain 或 ollama：请安装 bindu[agents]\n- 如果您仅运行自定义代理：基础安装即可\n- 现有安装将继续正常工作\n\n测试\n-------\n✅ 所有测试均已通过\n✅ pre-commit 钩子均已通过\n✅ 依赖解析已验证\n✅ 公共端点认证绕过功能已确认\n\n贡献者\n------------\n- Raahul Dutta\n","2026-02-22T18:44:42",{"id":204,"version":205,"summary_zh":206,"released_at":207},98813,"2026.8.7.2","发布：错误修复与社区贡献\n版本：2026.8.7\n日期：2026年2月21日\n\n概述\n--------\n本次发布包含针对模式管理的重要错误修复、类型检查改进、依赖项更新，以及若干由社区贡献的示例代理。重点在于提升稳定性、代码质量和扩展示例库。\n\n变更\n-------\n\n错误修复：\n- 修复了基于DID的多租户场景下模式名称截断逻辑\n- 修复了对sys.stdout.reconfigure调用的类型检查错误\n- 修正了文档字符串格式，使其符合pydocstyle D209规范\n- 稳定了task_manager.py模块\n\n功能与增强：\n- 新增付费墙示例代理，演示x402支付集成\n- 新增新闻摘要代理，支持本地Ollama和DuckDuckGo集成\n- 新增网络安全简报代理，并进行了安全加固\n- 向NotificationService添加了轻量级内存中交付指标\n- 增强了健康端点的可观测性\n- 对必填的author字段增加了早期验证\n- 更新发布工作流，采用基于周的版本号命名方式（YYYY.W.D）\n\n代码质量：\n- 在sentry.py中添加了反馈头信息\n- 清理了多个文件中的空白和格式问题\n- 更新了secrets基线文件的行号\n- 优化了PR模板，加入了全面的评审 checklist\n- 移除了文档中的尾部空白，并清理了凭证信息\n\n依赖项更新：\n- pydantic：2.11.3 → 2.12.5（解决与fastmcp的兼容性问题）\n- requests：2.32.3 → 2.32.5（解决与langchain-community的兼容性问题）\n- sqlalchemy：2.0.44 → 2.0.46\n- tenacity：8.5.0 → 9.1.4\n- rich：13.9.4 → 14.3.2\n- uvx依赖：从\u003C2.0更新至\u003C4.0\n\n社区：\n- 新增GitHub Sponsors资助页面\n- 合并了多项社区贡献（PR #172、#195、#210、#211、#212、#215）\n\n测试\n-------\n✅ 所有测试通过\n✅ pre-commit钩子通过\n✅ 模式截断测试已修复并验证\n✅ 类型检查错误已解决\n\n贡献者\n------------\n- Raahul Dutta\n- rautsoham03\n- ssjgit08\n- Krushna\n- AseemPrasad\n- Sharda2004196\n- ssjgit08\n- Krushna56\n\n重大变更\n----------------\n无\n\n迁移说明\n---------------\n- 如果从精确锁定依赖版本的旧版本升级，请运行：uv sync\n- 模式名称现在会正确截断至63个字符（PostgreSQL限制）\n\n","2026-02-21T14:17:31",{"id":209,"version":210,"summary_zh":211,"released_at":212},98814,"2026.8.7.1","发布：错误修复与社区贡献\n版本：2026.8.7.1\n日期：2026年2月21日\n\n概述\n--------\n本次发布包含针对模式管理的重要错误修复、类型检查改进、依赖项更新，以及若干由社区贡献的示例代理。重点在于提升稳定性、代码质量和扩展示例库。\n\n变更\n-------\n\n错误修复：\n- 修复了基于DID的多租户场景下模式名称截断逻辑\n- 修复了sys.stdout.reconfigure调用的类型检查错误\n- 修正文档字符串格式以符合pydocstyle D209规范\n- 稳定化了task_manager.py模块\n\n功能与增强：\n- 新增付费墙示例代理，演示x402支付集成\n- 新增新闻摘要代理，支持本地Ollama和DuckDuckGo集成\n- 新增网络安全简报代理，并进行了安全加固\n- 向NotificationService添加了轻量级内存中交付指标\n- 增强了健康端点的可观测性\n- 对必填的author字段增加了早期验证\n- 更新发布工作流，采用基于周的版本号命名方式（YYYY.W.D）\n\n代码质量：\n- 在sentry.py中添加了反馈头信息\n- 清理了多个文件中的空白和格式问题\n- 更新了secrets基线文件的行号\n- 在PR模板中增加了全面的评审 checklist\n- 移除了文档中的尾部空白，并对凭证信息进行了清理\n\n依赖项更新：\n- pydantic：2.11.3 → 2.12.5（解决与fastmcp的兼容性问题）\n- requests：2.32.3 → 2.32.5（解决与langchain-community的兼容性问题）\n- sqlalchemy：2.0.44 → 2.0.46\n- tenacity：8.5.0 → 9.1.4\n- rich：13.9.4 → 14.3.2\n- uvx依赖要求：从\u003C2.0更新至\u003C4.0\n\n社区：\n- 新增GitHub Sponsors资助页面\n- 合并了多项社区贡献（PR #172、#195、#210、#211、#212、#215）\n\n测试\n-------\n✅ 所有测试通过\n✅ pre-commit钩子通过\n✅ 模式截断测试已修复并验证\n✅ 类型检查错误已解决\n\n贡献者\n------------\n- Raahul Dutta\n- rautsoham03\n- ssjgit08\n- Krushna\n- AseemPrasad\n- Sharda2004196\n- ssjgit08\n- Krushna56\n\n重大变更\n----------------\n无\n\n迁移说明\n---------------\n- 如果从精确锁定依赖版本的旧版本升级，请运行：uv sync\n- 模式名称现在将正确截断至63个字符（PostgreSQL限制）","2026-02-21T08:52:18",{"id":214,"version":215,"summary_zh":216,"released_at":217},98815,"2026.8.5","发布：代码精简与可观测性重构\n====================================================\n\n版本：2026.8.5\n日期：2026年2月19日\n作者：Raahul Dutta\n\n概述\n--------\n本次主要的代码精简发布，重点在于移除整个代码库中未使用的代码，特别是在可观测性和扩展模块中。\n\n重大变更\n----------------\n⚠️ 从公共 API 中移除了 Sentry 封装函数\n  - bindu.observability.capture_exception() 已移除\n  - bindu.observability.capture_message() 已移除\n  - bindu.observability.set_user() 已移除\n  - bindu.observability.set_context() 已移除\n  - bindu.observability.add_breadcrumb() 已移除\n  - bindu.observability.start_transaction() 已移除\n\n  迁移说明：如需使用，请直接调用 sentry_sdk：\n    from sentry_sdk import capture_exception, set_user 等。\n\n⚠️ 移除了 x402 常量文件\n  - bindu\u002Fextensions\u002Fx402\u002Fconstants.py 已删除\n  - 所有常量已迁移到 bindu.settings.X402Settings 中\n\n  迁移说明：请改用 app_settings.x402.*：\n    from bindu.settings import app_settings\n    app_settings.x402.extension_uri\n    app_settings.x402.meta_status_key\n    app_settings.x402.status_required\n\n⚠️ 移除了内部辅助方法\n  - DIDAgentExtension._sanitize_did_component()（已内联）\n  - DIDAgentExtension._get_key_paths()（已内联）\n  - DIDAgentExtension._encode_text()（已内联）\n\n  迁移说明：这些为内部方法，无需额外操作。\n\n改进\n------------\n🧹 可观测性模块清理（约减少 212 行）\n  - 移除了 6 个未使用的 Sentry 封装函数（176 行）\n  - 在 openinference.py 中内联了 3 个小型辅助函数（36 行）\n  - 简化了 __init__.py 的导出内容（由 8 项减少至 2 项）\n  - 仅保留生产环境中使用的函数：setup()、init_sentry()\n\n🔧 X402扩展模块清理（约减少 72 行）\n  - 删除了 bindu\u002Fextensions\u002Fx402\u002Fconstants.py 文件（31 行）\n  - 从 utils.py 中移除了 3 个未使用的工具函数（23 行）：\n    * build_payment_required_metadata()\n    * build_payment_verified_metadata()\n    * merge_task_metadata()\n  - 从 extension.py 中移除了 get_agent_extension() 方法（18 行）\n  - 仅保留生产环境中的函数：build_payment_completed_metadata()、build_payment_failed_metadata()\n\n⚡ DID扩展优化（约减少 13 行）\n  - 内联了 _get_key_paths() 辅助方法\n  - 内联了 _encode_text() 辅助方法\n  - 内联了 _sanitize_did_component() 辅助方法\n  - 简化了 get_did_document() 的实现逻辑\n  - 代码流程更加简洁直观\n\n🧪 测试套件清理（约减少 232 行）\n  - 删除了 tests\u002Funit\u002Ftest_x402_constants.py 文件（40 行）\n  - 从 test_x402_utils.py 中移除了未使用的函数测试（35 行）\n  - 从 test_x402_extension.py 中移除了未使用的函数测试（11 行）\n  - 从 test_sentry.py 中移除了 Sentry 封装函数的相关测试（137 行）\n  - 从 test_did_extension.py 中移除了 _sanitize_did_component() 的测试（9 行）\n  - 剩余所有测试均通过 ✅\n\n🔧 数据库迁移改进\n  - 修复了 Alembic 对异步迁移的支持问题\n  - 自动将 postgresql:\u002F\u002F 格式转换为 postgresql+asyncpg:\u002F\u002F","2026-02-19T02:06:33",{"id":219,"version":220,"summary_zh":221,"released_at":222},98816,"2026.7.3","发布：UI 分离与测试基础设施修复\n====================================================\n\n版本：2026.7.3\n日期：2026年2月10日\n作者：Raahul Dutta\n\n概述\n--------\n本次维护版本专注于将 UI 关注点从核心服务器中分离出来，修复测试基础设施问题，并改进文档示例。移除了内置的 docs\u002Ffavicon 端点，因为 UI 已被迁移到独立的前端应用。\n\n重大变更\n----------------\n⚠️ 内置 UI 端点已移除\n  - \u002Fdocs 端点已移除（UI 已迁至独立前端）\n  - \u002Ffavicon.ico 端点已移除\n  - 应用程序不再提供静态文档页面\n  - 请使用独立的前端应用程序来访问代理 UI\n\n改进\n------------\n🏗️ 架构清理\n  - 从 BinduApplication 中移除了 _docs_endpoint 和 _favicon_endpoint 方法\n  - 后端 API 与前端 UI 之间的分离更加清晰\n  - 降低了服务器层与表示层之间的耦合度\n\n🧪 测试基础设施修复\n  - 修复了 test_applications.py 中的 30 个失败测试\n  - 修复了 test_health.py 中的端点测试\n  - 移除了针对已弃用的 docs\u002Ffavicon 端点的测试\n  - 更新了 test_default_routes_registered，以反映新的路由结构\n  - 现在所有 27 个测试均已通过（26 个在 test_applications.py 中，1 个在 test_health.py 中）\n\n📚 文档改进\n  - 在 examples\u002FREADME.md 中添加了 pragma: allowlist secret 注释\n  - 将示例凭证标记为对 detect-secrets pre-commit 钩子安全\n  - 修复了误报的秘密检测：\n    * OPENROUTER_API_KEY 示例（第 32 行）\n    * DATABASE_URL 示例（第 157 行）\n    * REDIS_URL 示例（第 160 行）\n\n📝 示例增强\n  - 为所有入门级示例添加了隧道启动注释\n  - 在以下示例中统一使用 launch=True 模式：\n    * agno_example.py\n    * agno_simple_example.py\n    * agno_notion_agent.py\n    * beginner_zero_config_agent.py\n    * faq_agent.py\n  - 创建了 echo_agent_behind_paywall.py 示例\n  - 提升了代码一致性和文档质量\n\n技术细节\n-----------------\n更改文件数：5 个文件\n  - 修改：bindu\u002Fserver\u002Fapplications.py（移除 2 个端点，4 个路由注册）\n  - 修改：tests\u002Funit\u002Ftest_applications.py（移除 3 个测试，更新断言）\n  - 修改：examples\u002FREADME.md（添加 3 条 pragma 注释）\n  - 修改：5 个示例文件（添加隧道启动注释）\n  - 新增：examples\u002Fbeginner\u002Fecho_agent_behind_paywall.py\n\nBinduApplication 中的路由变更：\n  已移除：\n    - GET \u002Fdocs → _docs_endpoint\n    - GET \u002Ffavicon.ico → _favicon_endpoint\n\n剩余核心路由：\n    - GET\u002FHEAD\u002FOPTIONS \u002F.well-known\u002Fagent.json（代理卡片）\n    - GET \u002F（重定向到代理卡片）\n    - POST \u002F（A2A 协议）\n    - GET\u002FPOST \u002Fdid\u002Fresolve（DID 解析）\n    - GET \u002Fagent\u002Fskills（技能列表）\n    - GET \u002Fagent\u002Fskills\u002F{skill_id}（技能详情）\n    - GET \u002Fagent\u002Fskills\u002F{skill_id}\u002Fdocumentation（技能文档）\n    - GET \u002Fhealth（健康检查）\n    - GET \u002Fmetrics（Prometheus 指标）\n    - POST \u002Fagent\u002Fnegotiation（协商端点）\n\n测试结果：\n  ","2026-02-10T14:40:00",{"id":224,"version":225,"summary_zh":226,"released_at":227},98817,"2026.6.6","发布：Hydra OAuth2 迁移与依赖标准化\n=============================================================\n\n版本：2026.6.6（提交：c80026c）\n日期：2026年2月7日\n作者：Raahul Dutta\n\n概述\n--------\n本次发布为重大重构版本：将认证统一标准化至 Ory Hydra OAuth2，移除旧版认证提供商（Auth0、Cognito、Kratos），实现 OAuth2 与 DID 混合认证，并固定所有依赖库版本以确保构建的可重复性。\n\n重大变更\n----------------\n⚠️ 移除 Auth0 和 Cognito 认证提供者\n  - 现仅支持 Hydra 作为认证提供商\n  - 现有的 Auth0\u002FCognito 配置需迁移到 Hydra\n\n⚠️ OAuth 客户端认证方式变更\n  - 从 client_secret_basic 变更为 client_secret_post\n  - 包含冒号的 DID 现已正确支持作为 client_id\n\n⚠️ 已移除模块\n  - bindu\u002Futils\u002Fauth_utils.py（Auth0 JWT 工具）\n  - bindu\u002Fserver\u002Fmiddleware\u002Fauth\u002Fauth0.py\n  - bindu\u002Fserver\u002Fmiddleware\u002Fauth\u002Fcognito.py\n  - Kratos、Vault 以及用户 OAuth 管理相关模块\n\n新特性\n------------\n🔐 混合 OAuth2 + DID 认证\n  - 结合 OAuth2 Token 与基于 DID 的签名\n  - 使用 DID 作为凭证存储的稳定密钥\n  - 自动在 Hydra 中注册客户端，并以 DID 作为 client_id\n  - 将公钥元数据存储于 Hydra 客户端中，便于验证\n\n🔑 改进的 Hydra 客户端注册\n  - 在返回缓存凭证前先验证客户端是否存在于 Hydra 中\n  - 若本地凭证过期，则自动重新创建客户端\n  - 使用 client_secret_post 进行令牌端点认证\n  - 对包含特殊字符的 DID 进行正确的 URL 编码\n\n📦 固定依赖版本\n  - 所有依赖现均采用精确版本号（==），而非最小版本号（>=）\n  - 避免因上游更新导致的意外中断\n  - 依赖按功能分组：\n    * 核心运行时（15 个包）\n    * 监控与遥测（7 个包）\n    * 支付\u002Fx402（5 个包）\n    * 存储（4 个包）\n    * CLI 工具（2 个包）\n    * 安全（1 个包）\n\n🖥️ 新的 Web UI 基础设施\n  - 用于代理 Web 界面的静态文件服务\n  - 模块化 JavaScript 架构：\n    * api\u002Fclient.js - HTTP 客户端工具\n    * state\u002Fstore.js - 状态管理\n    * chat\u002Fchat.js - 聊天功能\n    * core\u002F - 协议、事件及常量\n\n💬 启动界面优化\n  - 启动时显示获取 OAuth 令牌的 curl 命令\n  - 显示客户端密钥路径（不直接暴露）\n  - 提供清晰的访问令牌获取说明\n\n改进\n------------\n🏗️ 认证架构\n  - 统一使用 Hydra 作为认证提供商，简化配置\n  - HydraMiddleware 负责处理 OAuth2 令牌内省\n  - 增强安全性的 DID 签名验证\n  - 更清晰地分离认证层与中间件层\n\n📝 配置校验\n  - 针对仅使用 Hydra 的配置简化了校验器\n  - 移除了 Auth0\u002FCognito 的校验逻辑\n  - 对无效配置提供更友好的错误提示\n\n🧪 测试简化\n  - 移除了 co","2026-02-06T20:35:55",{"id":229,"version":230,"summary_zh":231,"released_at":232},98818,"2026.3.5","Release: Prometheus Metrics & Monitoring Infrastructure\r\n========================================================\r\n\r\nVersion: 2026.3.5 (Commit: 625c0f0)\r\nDate: January 22, 2026\r\nAuthor: Raahul Dutta\r\n\r\nOVERVIEW\r\n--------\r\nMajor new feature: Comprehensive Prometheus metrics endpoint for production\r\nmonitoring and observability. Enables real-time tracking of HTTP requests,\r\ntask execution, errors, and system performance.\r\n\r\nBREAKING CHANGES\r\n----------------\r\nNone - All changes are additive and backward compatible.\r\n\r\nNEW FEATURES\r\n------------\r\n📊 Prometheus Metrics Endpoint (\u002Fmetrics)\r\n  - Full Prometheus text format support for scraping\r\n  - Automatic metrics collection via middleware\r\n  - Thread-safe metrics aggregation\r\n  - Zero external dependencies (pure Python implementation)\r\n\r\n📈 HTTP Request Metrics\r\n  - Request counters by method, endpoint, and status code\r\n  - Request latency histogram (buckets: 0.1s, 0.5s, 1.0s, +Inf)\r\n  - Request\u002Fresponse body size tracking\r\n  - Concurrent requests gauge (in-flight monitoring)\r\n\r\n⏱️ Task Performance Metrics\r\n  - Task duration histogram (buckets: 1s, 5s, 10s, 30s, 60s, +Inf)\r\n  - Active tasks gauge per agent\r\n  - Completed tasks counter by status (success, failed, canceled)\r\n  - Agent-specific task tracking\r\n\r\n🚨 Error Tracking\r\n  - Error counters by agent and error type\r\n  - Support for timeout, validation, and execution errors\r\n  - Extensible error categorization\r\n\r\nIMPROVEMENTS\r\n------------\r\n🏗️ Clean Architecture\r\n  - No circular dependencies (removed TYPE_CHECKING pattern)\r\n  - Clear separation of concerns:\r\n    * metrics.py - Core metrics collection\r\n    * middleware\u002Fmetrics.py - HTTP request tracking\r\n    * endpoints\u002Fmetrics.py - Prometheus endpoint + agent metrics\r\n  - Proper dependency flow without circular imports\r\n\r\n🔧 Middleware Integration\r\n  - MetricsMiddleware automatically tracks all HTTP requests\r\n  - Positioned last in middleware stack to capture complete request lifecycle\r\n  - Automatic request\u002Fresponse size calculation\r\n  - In-flight request tracking with proper cleanup\r\n\r\n📖 Documentation\r\n  - Complete monitoring guide (docs\u002Fmonitoring.md)\r\n  - Prometheus configuration example (examples\u002Fprometheus.yml)\r\n  - Grafana dashboard recommendations\r\n  - Example PromQL queries for common use cases\r\n\r\nMETRICS EXPOSED\r\n---------------\r\nCounter Metrics:\r\n  - http_requests_total{method, endpoint, status}\r\n  - agent_tasks_completed_total{agent_id, status}\r\n  - agent_errors_total{agent_id, error_type}\r\n\r\nHistogram Metrics:\r\n  - http_request_duration_seconds (0.1s, 0.5s, 1.0s, +Inf)\r\n  - task_duration_seconds (1s, 5s, 10s, 30s, 60s, +Inf)\r\n\r\nGauge Metrics:\r\n  - agent_tasks_active{agent_id}\r\n  - http_requests_in_flight\r\n\r\nSummary Metrics:\r\n  - http_request_size_bytes\r\n  - http_response_size_bytes\r\n\r\nTECHNICAL DETAILS\r\n-----------------\r\nFiles Changed: 9 files\r\n  - Added: 6 files (metrics module, middleware, endpoint, tests, docs)\r\n  - Modified: 3 files (applications.py, __init__ files, examples)\r\n  - Total: +591 insertions, -24 deletions\r\n\r\nNew Modules:\r\n  - bindu\u002Fserver\u002Fmetrics.py (284 lines)\r\n  - bindu\u002Fserver\u002Fmiddleware\u002Fmetrics.py (90 lines)\r\n  - bindu\u002Fserver\u002Fendpoints\u002Fmetrics.py (74 lines)\r\n  - tests\u002Funit\u002Ftest_metrics.py (106 lines)\r\n  - docs\u002Fmonitoring.md (comprehensive guide)\r\n  - examples\u002Fprometheus.yml (configuration template)\r\n\r\nDependencies:\r\n  - None (uses standard library only)\r\n\r\nTESTING\r\n-------\r\n✅ 6 new unit tests covering:\r\n  - HTTP request recording and counters\r\n  - Histogram bucket calculations\r\n  - Agent task metrics\r\n  - Thread-safe concurrent operations\r\n  - Prometheus text format generation\r\n✅ All 527 tests passing\r\n✅ No breaking changes to existing functionality\r\n\r\nUSAGE EXAMPLES\r\n--------------\r\nAccess Metrics Endpoint:\r\n  curl http:\u002F\u002Flocalhost:3773\u002Fmetrics\r\n\r\nConfigure Prometheus (prometheus.yml):\r\n  scrape_configs:\r\n    - job_name: 'bindu-agent'\r\n      static_configs:\r\n        - targets: ['localhost:3773']\r\n      metrics_path: '\u002Fmetrics'\r\n\r\nExample PromQL Queries:\r\n  # Request rate\r\n  rate(http_requests_total[5m])\r\n  \r\n  # 95th percentile latency\r\n  histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))\r\n  \r\n  # Error rate\r\n  rate(agent_errors_total[5m])\r\n  \r\n  # Average task duration\r\n  rate(task_duration_seconds_sum[5m]) \u002F rate(task_duration_seconds_count[5m])\r\n\r\nINTEGRATION\r\n-----------\r\nPrometheus Setup:\r\n  1. Install Prometheus: brew install prometheus\r\n  2. Configure scraping (see examples\u002Fprometheus.yml)\r\n  3. Start Prometheus: prometheus --config.file=prometheus.yml\r\n  4. Access UI: http:\u002F\u002Flocalhost:9090\r\n\r\nGrafana Dashboard:\r\n  1. Add Prometheus as data source\r\n  2. Create panels with PromQL queries\r\n  3. Recommended panels:\r\n     - Request Rate (line graph)\r\n     - Error Rate (line graph)\r\n     - Latency Heatmap (histogram)\r\n     - Active Tasks (gauge)\r\n     - Task Completion (stacked area)\r\n\r\nMIGRATION GUIDE\r\n---------------\r\nFor existing deployments:\r\n1. No action required - metrics are automatically enabled","2026-01-22T00:45:14",{"id":234,"version":235,"summary_zh":236,"released_at":237},98819,"2026.3.3","Release: PostgreSQL Storage Refactoring & Multi-Tenancy Support\n================================================================\n\nVersion: 2026.3.3 (Commit: 022a47a)\nDate: January 19, 2026\nAuthor: Raahul Dutta\n\nOVERVIEW\n--------\nMajor refactoring of PostgreSQL storage implementation to improve code quality,\nsecurity, maintainability, and add DID-based schema multi-tenancy support.\n\nBREAKING CHANGES\n----------------\nNone - All public APIs remain backward compatible.\n\nNEW FEATURES\n------------\n✨ DID-Based Multi-Tenancy\n  - PostgresStorage now accepts optional 'did' parameter for schema isolation\n  - Automatic schema creation and initialization per DID\n  - SQLAlchemy event listener sets search_path automatically\n  - Enables secure multi-tenant deployments with data isolation\n\n🔒 Enhanced Security\n  - SQL injection prevention via sanitize_identifier() validation\n  - Improved password masking in database URLs for safe logging\n  - Centralized security utilities in helpers\u002Fsecurity.py\n\nIMPROVEMENTS\n------------\n📦 Code Organization\n  - Created helpers\u002F module structure under storage\u002F\n  - Extracted 6 helper modules for better separation of concerns:\n    * validation.py - UUID and type validation\n    * serialization.py - JSONB serialization\n    * normalization.py - Message and UUID normalization\n    * security.py - Password masking, SQL injection prevention\n    * db_operations.py - Common database patterns\n    * __init__.py - Centralized exports\n\n🎯 Code Quality (DRY Principles)\n  - Reduced code duplication by 11% (1099 → 989 lines)\n  - UUID validation: 10+ instances → 1 helper function\n  - JSONB serialization: 15+ instances → 1 helper function\n  - Timestamp generation: 8+ instances → 1 helper function\n  - Message normalization: 60+ lines → 1 helper function\n\n📖 Improved Readability\n  - Better error messages with context\n  - Clearer function signatures\n  - Reduced method complexity\n  - Improved documentation\n\nTECHNICAL DETAILS\n-----------------\nFiles Changed: 14 files\n  - Added: 7 files (helpers + schema_manager + migration)\n  - Modified: 7 files\n  - Total: +726 insertions, -173 deletions\n\nNew Dependencies:\n  - None (uses existing SQLAlchemy and asyncpg)\n\nDatabase Changes:\n  - New migration: 20260119_0001_add_schema_support.py\n  - Schema manager utility for DID-based schema operations\n\nTESTING\n-------\n✅ All 23 unit tests passing\n✅ Backward compatibility verified\n✅ No breaking changes to existing functionality\n\nMIGRATION GUIDE\n---------------\nFor existing deployments:\n1. No action required - changes are backward compatible\n2. To enable DID-based multi-tenancy:\n   - Pass 'did' parameter when creating PostgresStorage instance\n   - Schema will be automatically created and configured\n\nExample:\n  storage = PostgresStorage(did=\"did:example:123\")\n  await storage.connect()\n\nCOMMIT DETAILS\n--------------\nCommit: 022a47a3bc16f3da3bb3a011717e555826009674\nMessage: chore: refactor PostgreSQL storage to support DID-based schema \n         multi-tenancy and improve code organization\n\nChanges:\n  - Add DID parameter to PostgresStorage for schema-based multi-tenancy isolation\n  - Extract helper functions to separate modules\n  - Move timestamp utility to db_operations helper module\n  - Implement automatic schema initialization and search_path configuration\n  - Add SQLAlchemy event listener to set search_path on connection\n\nUSAGE WITH GIT\n--------------\n# Create an annotated tag\ngit tag -a 2026.3.3 022a47a -F release-notes\u002F2026.3.3.txt\n\n# Create a GitHub release\ngh release create 2026.3.3 --notes-file release-notes\u002F2026.3.3.txt --title \"2026.3.3: PostgreSQL Storage Refactoring\"\n\n# View this release\ngit show 2026.3.3\n\n# Push tag to remote\ngit push origin 2026.3.3\n","2026-01-19T17:46:59",{"id":239,"version":240,"summary_zh":241,"released_at":242},98820,"v2026.3.3","# Release v2026.3.3 - Environment-Based Configuration\r\n\r\n**Release Date:** January 19, 2026  \r\n**Release Type:** Feature Release with Breaking Changes\r\n\r\n---\r\n\r\n## 🎯 Overview\r\n\r\nThis release introduces a major architectural improvement by migrating infrastructure configuration from inline user config to environment variables. This change enhances security, simplifies deployment, and aligns with industry best practices for cloud-native applications.\r\n\r\n---\r\n\r\n## ⚠️ Breaking Changes\r\n\r\n### Configuration Migration Required\r\n\r\nInfrastructure components (storage, scheduler, sentry, telemetry) are now configured exclusively via environment variables instead of inline configuration dictionaries.\r\n\r\n**Before (v2026.3.3):**\r\n```python\r\nconfig = {\r\n    \"name\": \"my_agent\",\r\n    \"storage\": {\r\n        \"type\": \"postgres\",\r\n        \"database_url\": \"postgresql+asyncpg:\u002F\u002F...\",\r\n    },\r\n    \"scheduler\": {\r\n        \"type\": \"redis\",\r\n        \"redis_url\": \"redis:\u002F\u002F...\",\r\n    },\r\n    \"sentry\": {\r\n        \"enabled\": True,\r\n        \"dsn\": \"https:\u002F\u002F...\",\r\n    }\r\n}\r\n```\r\n\r\n**After (v2026.3.2):**\r\n```python\r\n# Simplified config - infrastructure moved to .env\r\nconfig = {\r\n    \"name\": \"my_agent\",\r\n    \"deployment\": {\"url\": \"http:\u002F\u002Flocalhost:3773\"},\r\n    \"skills\": [\"skills\u002Fquestion-answering\"],\r\n}\r\n```\r\n\r\n**Environment Variables (.env):**\r\n```bash\r\n# Storage\r\nSTORAGE_TYPE=postgres\r\nDATABASE_URL=postgresql+asyncpg:\u002F\u002Fuser:pass@host:5432\u002Fdb\r\n\r\n# Scheduler\r\nSCHEDULER_TYPE=redis\r\nREDIS_URL=redis:\u002F\u002Flocalhost:6379\u002F0\r\n\r\n# Sentry\r\nSENTRY_ENABLED=true\r\nSENTRY_DSN=https:\u002F\u002Fkey@org.ingest.sentry.io\u002Fproject\r\n\r\n# Telemetry\r\nTELEMETRY_ENABLED=true\r\nOLTP_ENDPOINT=https:\u002F\u002Fcloud.langfuse.com\u002Fapi\u002Fpublic\u002Fotel\u002Fv1\u002Ftraces\r\nOLTP_SERVICE_NAME=my-agent\r\nOLTP_HEADERS={\"Authorization\":\"Basic \u003Cbase64-key>\"}\r\n```\r\n\r\n---\r\n\r\n## ✨ New Features\r\n\r\n### 1. Environment Variable Configuration System\r\n- **Storage Configuration**: `STORAGE_TYPE`, `DATABASE_URL`\r\n- **Scheduler Configuration**: `SCHEDULER_TYPE`, `REDIS_URL`\r\n- **Sentry Integration**: `SENTRY_ENABLED`, `SENTRY_DSN`\r\n- **Telemetry Configuration**: `TELEMETRY_ENABLED`, `OLTP_*` variables\r\n- **Webhook Configuration**: `WEBHOOK_URL`, `WEBHOOK_TOKEN`\r\n\r\n### 2. Enhanced OpenTelemetry Integration\r\n- **Langfuse Support**: Full integration with Langfuse cloud platform\r\n- **Arize Support**: Complete setup guide for Arize AI observability\r\n- **Automatic Instrumentation**: Traces for agent execution, skill invocations, and LLM calls\r\n- **Distributed Tracing**: Track requests across multiple services and workers\r\n- **Performance Monitoring**: Measure latency, token usage, and resource consumption\r\n\r\n### 3. Comprehensive Documentation Updates\r\n- Added OpenTelemetry platform-specific setup guides\r\n- Updated all README examples with environment variable patterns\r\n- Enhanced `.env.example` with detailed configuration comments\r\n- Added migration guides for existing users\r\n\r\n---\r\n\r\n## 🔒 Security Improvements\r\n\r\n- **Credential Sanitization**: All example files now use placeholder values\r\n- **Secret Detection**: Added pragma comments for legitimate example credentials\r\n- **Environment Isolation**: Sensitive data moved out of code and into environment variables\r\n- **Best Practices**: Aligned with 12-factor app methodology\r\n\r\n---\r\n\r\n## 🐛 Bug Fixes\r\n\r\n- Fixed pydocstyle D401 issue in `server_runner.py` (imperative mood in docstrings)\r\n- Added proper secret allowlist pragmas for example database URLs\r\n- Corrected code formatting issues across configuration loader modules\r\n\r\n---\r\n\r\n## 📚 Documentation\r\n\r\n### Updated Files\r\n- `README.md`: Complete configuration examples with environment variables\r\n- `examples\u002F.env.example`: Comprehensive template with all available options\r\n- OpenTelemetry section: Platform-specific setup for Langfuse and Arize\r\n\r\n### New Documentation Sections\r\n- Environment variable configuration guide\r\n- OpenTelemetry integration overview\r\n- Platform-specific setup instructions (Langfuse, Arize)\r\n- Migration guide from inline config to environment variables\r\n\r\n---\r\n\r\n## 🔄 Migration Guide\r\n\r\n### Step 1: Create `.env` file\r\nCopy `examples\u002F.env.example` to your project root and rename to `.env`\r\n\r\n### Step 2: Move Configuration\r\nTransfer your infrastructure configs from Python dictionaries to environment variables:\r\n\r\n| Old Config Key | New Environment Variable |\r\n|---------------|-------------------------|\r\n| `storage.type` | `STORAGE_TYPE` |\r\n| `storage.database_url` | `DATABASE_URL` |\r\n| `scheduler.type` | `SCHEDULER_TYPE` |\r\n| `scheduler.redis_url` | `REDIS_URL` |\r\n| `sentry.enabled` | `SENTRY_ENABLED` |\r\n| `sentry.dsn` | `SENTRY_DSN` |\r\n| `telemetry` (boolean) | `TELEMETRY_ENABLED` |\r\n\r\n### Step 3: Simplify Agent Config\r\nRemove infrastructure config blocks from your `bindufy()` config dictionary\r\n\r\n### Step 4: Test\r\nRun your agent and verify all infrastructure components connect properly\r\n\r\n---\r\n\r\n## 📦 Installation\r\n\r\n```bash\r\npip install --upgrade bindu==2026.3.3\r\n```\r\n\r\nOr with uv:\r\n```bash\r\nuv add bindu==2026.3.3\r\n`","2026-01-19T04:20:20",{"id":244,"version":245,"summary_zh":246,"released_at":247},98821,"v2026.3.2","# Release v2026.3.2 - Environment-Based Configuration\n\n**Release Date:** January 19, 2026  \n**Release Type:** Feature Release with Breaking Changes\n\n---\n\n## 🎯 Overview\n\nThis release introduces a major architectural improvement by migrating infrastructure configuration from inline user config to environment variables. This change enhances security, simplifies deployment, and aligns with industry best practices for cloud-native applications.\n\n---\n\n## ⚠️ Breaking Changes\n\n### Configuration Migration Required\n\nInfrastructure components (storage, scheduler, sentry, telemetry) are now configured exclusively via environment variables instead of inline configuration dictionaries.\n\n**Before (v2026.3.2):**\n```python\nconfig = {\n    \"name\": \"my_agent\",\n    \"storage\": {\n        \"type\": \"postgres\",\n        \"database_url\": \"postgresql+asyncpg:\u002F\u002F...\",\n    },\n    \"scheduler\": {\n        \"type\": \"redis\",\n        \"redis_url\": \"redis:\u002F\u002F...\",\n    },\n    \"sentry\": {\n        \"enabled\": True,\n        \"dsn\": \"https:\u002F\u002F...\",\n    }\n}\n```\n\n**After (v2026.3.2):**\n```python\n# Simplified config - infrastructure moved to .env\nconfig = {\n    \"name\": \"my_agent\",\n    \"deployment\": {\"url\": \"http:\u002F\u002Flocalhost:3773\"},\n    \"skills\": [\"skills\u002Fquestion-answering\"],\n}\n```\n\n**Environment Variables (.env):**\n```bash\n# Storage\nSTORAGE_TYPE=postgres\nDATABASE_URL=postgresql+asyncpg:\u002F\u002Fuser:pass@host:5432\u002Fdb\n\n# Scheduler\nSCHEDULER_TYPE=redis\nREDIS_URL=redis:\u002F\u002Flocalhost:6379\u002F0\n\n# Sentry\nSENTRY_ENABLED=true\nSENTRY_DSN=https:\u002F\u002Fkey@org.ingest.sentry.io\u002Fproject\n\n# Telemetry\nTELEMETRY_ENABLED=true\nOLTP_ENDPOINT=https:\u002F\u002Fcloud.langfuse.com\u002Fapi\u002Fpublic\u002Fotel\u002Fv1\u002Ftraces\nOLTP_SERVICE_NAME=my-agent\nOLTP_HEADERS={\"Authorization\":\"Basic \u003Cbase64-key>\"}\n```\n\n---\n\n## ✨ New Features\n\n### 1. Environment Variable Configuration System\n- **Storage Configuration**: `STORAGE_TYPE`, `DATABASE_URL`\n- **Scheduler Configuration**: `SCHEDULER_TYPE`, `REDIS_URL`\n- **Sentry Integration**: `SENTRY_ENABLED`, `SENTRY_DSN`\n- **Telemetry Configuration**: `TELEMETRY_ENABLED`, `OLTP_*` variables\n- **Webhook Configuration**: `WEBHOOK_URL`, `WEBHOOK_TOKEN`\n\n### 2. Enhanced OpenTelemetry Integration\n- **Langfuse Support**: Full integration with Langfuse cloud platform\n- **Arize Support**: Complete setup guide for Arize AI observability\n- **Automatic Instrumentation**: Traces for agent execution, skill invocations, and LLM calls\n- **Distributed Tracing**: Track requests across multiple services and workers\n- **Performance Monitoring**: Measure latency, token usage, and resource consumption\n\n### 3. Comprehensive Documentation Updates\n- Added OpenTelemetry platform-specific setup guides\n- Updated all README examples with environment variable patterns\n- Enhanced `.env.example` with detailed configuration comments\n- Added migration guides for existing users\n\n---\n\n## 🔒 Security Improvements\n\n- **Credential Sanitization**: All example files now use placeholder values\n- **Secret Detection**: Added pragma comments for legitimate example credentials\n- **Environment Isolation**: Sensitive data moved out of code and into environment variables\n- **Best Practices**: Aligned with 12-factor app methodology\n\n---\n\n## 🐛 Bug Fixes\n\n- Fixed pydocstyle D401 issue in `server_runner.py` (imperative mood in docstrings)\n- Added proper secret allowlist pragmas for example database URLs\n- Corrected code formatting issues across configuration loader modules\n\n---\n\n## 📚 Documentation\n\n### Updated Files\n- `README.md`: Complete configuration examples with environment variables\n- `examples\u002F.env.example`: Comprehensive template with all available options\n- OpenTelemetry section: Platform-specific setup for Langfuse and Arize\n\n### New Documentation Sections\n- Environment variable configuration guide\n- OpenTelemetry integration overview\n- Platform-specific setup instructions (Langfuse, Arize)\n- Migration guide from inline config to environment variables\n\n---\n\n## 🔄 Migration Guide\n\n### Step 1: Create `.env` file\nCopy `examples\u002F.env.example` to your project root and rename to `.env`\n\n### Step 2: Move Configuration\nTransfer your infrastructure configs from Python dictionaries to environment variables:\n\n| Old Config Key | New Environment Variable |\n|---------------|-------------------------|\n| `storage.type` | `STORAGE_TYPE` |\n| `storage.database_url` | `DATABASE_URL` |\n| `scheduler.type` | `SCHEDULER_TYPE` |\n| `scheduler.redis_url` | `REDIS_URL` |\n| `sentry.enabled` | `SENTRY_ENABLED` |\n| `sentry.dsn` | `SENTRY_DSN` |\n| `telemetry` (boolean) | `TELEMETRY_ENABLED` |\n\n### Step 3: Simplify Agent Config\nRemove infrastructure config blocks from your `bindufy()` config dictionary\n\n### Step 4: Test\nRun your agent and verify all infrastructure components connect properly\n\n---\n\n## 📦 Installation\n\n```bash\npip install --upgrade bindu==2026.1.19\n```\n\nOr with uv:\n```bash\nuv add bindu==2026.1.19\n```\n\n---\n\n## 🔗 Resources\n\n- **Documentation**: https:\u002F\u002Fdocs.getbindu.com\n- **Examples**: See `examples\u002F.env.example` for complete configuration reference\n- **Mig","2026-01-18T19:13:22",{"id":249,"version":250,"summary_zh":251,"released_at":252},98822,"v2026.1.19","# Release v2026.1.19 - Environment-Based Configuration\n\n**Release Date:** January 19, 2026  \n**Release Type:** Feature Release with Breaking Changes\n\n---\n\n## 🎯 Overview\n\nThis release introduces a major architectural improvement by migrating infrastructure configuration from inline user config to environment variables. This change enhances security, simplifies deployment, and aligns with industry best practices for cloud-native applications.\n\n---\n\n## ⚠️ Breaking Changes\n\n### Configuration Migration Required\n\nInfrastructure components (storage, scheduler, sentry, telemetry) are now configured exclusively via environment variables instead of inline configuration dictionaries.\n\n**Before (v2026.1.19):**\n```python\nconfig = {\n    \"name\": \"my_agent\",\n    \"storage\": {\n        \"type\": \"postgres\",\n        \"database_url\": \"postgresql+asyncpg:\u002F\u002F...\",\n    },\n    \"scheduler\": {\n        \"type\": \"redis\",\n        \"redis_url\": \"redis:\u002F\u002F...\",\n    },\n    \"sentry\": {\n        \"enabled\": True,\n        \"dsn\": \"https:\u002F\u002F...\",\n    }\n}\n```\n\n**After (v2026.1.19):**\n```python\n# Simplified config - infrastructure moved to .env\nconfig = {\n    \"name\": \"my_agent\",\n    \"deployment\": {\"url\": \"http:\u002F\u002Flocalhost:3773\"},\n    \"skills\": [\"skills\u002Fquestion-answering\"],\n}\n```\n\n**Environment Variables (.env):**\n```bash\n# Storage\nSTORAGE_TYPE=postgres\nDATABASE_URL=postgresql+asyncpg:\u002F\u002Fuser:pass@host:5432\u002Fdb\n\n# Scheduler\nSCHEDULER_TYPE=redis\nREDIS_URL=redis:\u002F\u002Flocalhost:6379\u002F0\n\n# Sentry\nSENTRY_ENABLED=true\nSENTRY_DSN=https:\u002F\u002Fkey@org.ingest.sentry.io\u002Fproject\n\n# Telemetry\nTELEMETRY_ENABLED=true\nOLTP_ENDPOINT=https:\u002F\u002Fcloud.langfuse.com\u002Fapi\u002Fpublic\u002Fotel\u002Fv1\u002Ftraces\nOLTP_SERVICE_NAME=my-agent\nOLTP_HEADERS={\"Authorization\":\"Basic \u003Cbase64-key>\"}\n```\n\n---\n\n## ✨ New Features\n\n### 1. Environment Variable Configuration System\n- **Storage Configuration**: `STORAGE_TYPE`, `DATABASE_URL`\n- **Scheduler Configuration**: `SCHEDULER_TYPE`, `REDIS_URL`\n- **Sentry Integration**: `SENTRY_ENABLED`, `SENTRY_DSN`\n- **Telemetry Configuration**: `TELEMETRY_ENABLED`, `OLTP_*` variables\n- **Webhook Configuration**: `WEBHOOK_URL`, `WEBHOOK_TOKEN`\n\n### 2. Enhanced OpenTelemetry Integration\n- **Langfuse Support**: Full integration with Langfuse cloud platform\n- **Arize Support**: Complete setup guide for Arize AI observability\n- **Automatic Instrumentation**: Traces for agent execution, skill invocations, and LLM calls\n- **Distributed Tracing**: Track requests across multiple services and workers\n- **Performance Monitoring**: Measure latency, token usage, and resource consumption\n\n### 3. Comprehensive Documentation Updates\n- Added OpenTelemetry platform-specific setup guides\n- Updated all README examples with environment variable patterns\n- Enhanced `.env.example` with detailed configuration comments\n- Added migration guides for existing users\n\n---\n\n## 🔒 Security Improvements\n\n- **Credential Sanitization**: All example files now use placeholder values\n- **Secret Detection**: Added pragma comments for legitimate example credentials\n- **Environment Isolation**: Sensitive data moved out of code and into environment variables\n- **Best Practices**: Aligned with 12-factor app methodology\n\n---\n\n## 🐛 Bug Fixes\n\n- Fixed pydocstyle D401 issue in `server_runner.py` (imperative mood in docstrings)\n- Added proper secret allowlist pragmas for example database URLs\n- Corrected code formatting issues across configuration loader modules\n\n---\n\n## 📚 Documentation\n\n### Updated Files\n- `README.md`: Complete configuration examples with environment variables\n- `examples\u002F.env.example`: Comprehensive template with all available options\n- OpenTelemetry section: Platform-specific setup for Langfuse and Arize\n\n### New Documentation Sections\n- Environment variable configuration guide\n- OpenTelemetry integration overview\n- Platform-specific setup instructions (Langfuse, Arize)\n- Migration guide from inline config to environment variables\n\n---\n\n## 🔄 Migration Guide\n\n### Step 1: Create `.env` file\nCopy `examples\u002F.env.example` to your project root and rename to `.env`\n\n### Step 2: Move Configuration\nTransfer your infrastructure configs from Python dictionaries to environment variables:\n\n| Old Config Key | New Environment Variable |\n|---------------|-------------------------|\n| `storage.type` | `STORAGE_TYPE` |\n| `storage.database_url` | `DATABASE_URL` |\n| `scheduler.type` | `SCHEDULER_TYPE` |\n| `scheduler.redis_url` | `REDIS_URL` |\n| `sentry.enabled` | `SENTRY_ENABLED` |\n| `sentry.dsn` | `SENTRY_DSN` |\n| `telemetry` (boolean) | `TELEMETRY_ENABLED` |\n\n### Step 3: Simplify Agent Config\nRemove infrastructure config blocks from your `bindufy()` config dictionary\n\n### Step 4: Test\nRun your agent and verify all infrastructure components connect properly\n\n---\n\n## 📦 Installation\n\n```bash\npip install --upgrade bindu==2026.1.19\n```\n\nOr with uv:\n```bash\nuv add bindu==2026.1.19\n```\n\n---\n\n## 🔗 Resources\n\n- **Documentation**: https:\u002F\u002Fdocs.getbindu.com\n- **Examples**: See `examples\u002F.env.example` for complete configuration reference\n- **","2026-01-18T18:59:23",{"id":254,"version":255,"summary_zh":251,"released_at":256},98823,"v2026.1.20","2026-01-18T19:03:29",{"id":258,"version":259,"summary_zh":80,"released_at":260},98824,"v0.3.15","2025-10-23T19:14:01"]