Jelajahi Sumber

fix: interaction

Talegorithm 2 minggu lalu
induk
melakukan
0d5a7239ce

+ 10 - 0
agent/core/runner.py

@@ -470,6 +470,16 @@ class AgentRunner:
 
         # 自动判断行为:after_sequence 为 None 或 == head → 续跑;< head → 回溯
         after_seq = config.after_sequence
+
+        # 如果 after_seq > head_sequence,说明 generator 被强制关闭时 store 的
+        # head_sequence 未来得及更新(仍停在 Phase 2 写入的初始值)。
+        # 用 last_sequence 修正 head_sequence,确保续跑时能看到完整历史。
+        if after_seq is not None and after_seq > trace_obj.head_sequence:
+            trace_obj.head_sequence = trace_obj.last_sequence
+            await self.trace_store.update_trace(
+                config.trace_id, head_sequence=trace_obj.head_sequence
+            )
+
         if after_seq is not None and after_seq < trace_obj.head_sequence:
             # 回溯模式
             sequence = await self._rewind(config.trace_id, after_seq, goal_tree)

+ 50 - 3
agent/llm/yescode.py

@@ -40,6 +40,8 @@ _RETRYABLE_EXCEPTIONS = (
 # 模糊匹配规则:(关键词, 目标模型名),从精确到宽泛排序
 # 精确匹配走 MODEL_EXACT,不命中则按顺序尝试关键词匹配
 MODEL_EXACT = {
+    "claude-sonnet-4-6": "claude-sonnet-4-6",
+    "claude-sonnet-4.6": "claude-sonnet-4-6",
     "claude-sonnet-4-5-20250929": "claude-sonnet-4-5-20250929",
     "claude-sonnet-4-5": "claude-sonnet-4-5-20250929",
     "claude-sonnet-4.5": "claude-sonnet-4-5-20250929",
@@ -54,6 +56,8 @@ MODEL_EXACT = {
 
 MODEL_FUZZY = [
     # 版本+家族(精确)
+    ("sonnet-4-6", "claude-sonnet-4-6"),
+    ("sonnet-4.6", "claude-sonnet-4-6"),
     ("sonnet-4-5", "claude-sonnet-4-5-20250929"),
     ("sonnet-4.5", "claude-sonnet-4-5-20250929"),
     ("opus-4-6", "claude-opus-4-6"),
@@ -65,7 +69,7 @@ MODEL_FUZZY = [
     ("haiku-4-5", "claude-haiku-4-5-20251001"),
     ("haiku-4.5", "claude-haiku-4-5-20251001"),
     # 仅家族名 → 最新版本
-    ("sonnet", "claude-sonnet-4-5-20250929"),
+    ("sonnet", "claude-sonnet-4-6"),
     ("opus", "claude-opus-4-6"),
     ("haiku", "claude-haiku-4-5-20251001"),
 ]
@@ -139,6 +143,49 @@ def _normalize_tool_call_ids(messages: List[Dict[str, Any]], target_prefix: str)
     return result
 
 
+def _convert_content_to_anthropic(content: Any) -> Any:
+    """
+    将 OpenAI 格式的 content(字符串或列表)转换为 Anthropic 格式。
+    主要处理 image_url 类型块 → Anthropic image 块。
+    """
+    if not isinstance(content, list):
+        return content
+
+    result = []
+    for block in content:
+        if not isinstance(block, dict):
+            result.append(block)
+            continue
+
+        block_type = block.get("type", "")
+        if block_type == "image_url":
+            image_url_obj = block.get("image_url", {})
+            url = image_url_obj.get("url", "") if isinstance(image_url_obj, dict) else str(image_url_obj)
+            if url.startswith("data:"):
+                # base64 编码图片:data:<media_type>;base64,<data>
+                header, _, data = url.partition(",")
+                media_type = header.split(":")[1].split(";")[0] if ":" in header else "image/png"
+                result.append({
+                    "type": "image",
+                    "source": {
+                        "type": "base64",
+                        "media_type": media_type,
+                        "data": data,
+                    },
+                })
+            else:
+                result.append({
+                    "type": "image",
+                    "source": {
+                        "type": "url",
+                        "url": url,
+                    },
+                })
+        else:
+            result.append(block)
+    return result
+
+
 def _convert_messages_to_anthropic(messages: List[Dict[str, Any]]) -> tuple:
     """
     将 OpenAI 格式消息转换为 Anthropic Messages API 格式
@@ -157,7 +204,7 @@ def _convert_messages_to_anthropic(messages: List[Dict[str, Any]]) -> tuple:
             # Anthropic 把 system 消息放在顶层参数中
             system_prompt = content
         elif role == "user":
-            anthropic_messages.append({"role": "user", "content": content})
+            anthropic_messages.append({"role": "user", "content": _convert_content_to_anthropic(content)})
         elif role == "assistant":
             assistant_msg = {"role": "assistant"}
             # 处理 tool_calls(assistant 发起工具调用)
@@ -189,7 +236,7 @@ def _convert_messages_to_anthropic(messages: List[Dict[str, Any]]) -> tuple:
             tool_result_block = {
                 "type": "tool_result",
                 "tool_use_id": msg.get("tool_call_id", ""),
-                "content": content,
+                "content": _convert_content_to_anthropic(content),
             }
             # 如果上一条已经是 tool_result user message,合并进去
             if (anthropic_messages

+ 64 - 0
examples/tool_research/knowledge/00_research_plan.md

@@ -0,0 +1,64 @@
+# 00_research_plan.md - 调研计划与进度
+
+## 调研目标
+系统性调研当前优质的 Agent Skills 和 MCP(Model Context Protocol)资源,以及发现、评估、获取它们的渠道。
+
+## 调研进度
+
+| 子任务 | 状态 | 关键发现 |
+|--------|------|----------|
+| 目录结构 | ✅ 完成 | 5个文档文件 |
+| MCP 官方资源 | ✅ 完成 | Anthropic官方、17000+服务器 |
+| MCP 社区榜单 | ✅ 完成 | punkpeye(81.3k⭐)、wong2(3.6k⭐) |
+| MCP 平台目录 | ✅ 完成 | Glama/Smithery/MCP.so/MCPServers.org |
+| Smithery Skills | ✅ 完成 | 125,937+ Skills,排行榜 |
+| LangChain Tools | ✅ 完成 | 150+ 工具,详细分类 |
+| CrewAI Tools | ✅ 完成 | 29 内置工具 |
+| OpenAI Agents SDK | ✅ 完成 | 5类工具,原生MCP支持 |
+| Composio | ✅ 完成 | 877工具包,11000+工具 |
+| Cursor Rules | ✅ 完成 | 38k Stars,awesome-cursorrules |
+| 行业博客 | ✅ 完成 | Simon Willison、Lilian Weng |
+| 发现渠道整理 | ✅ 完成 | 3梯队渠道体系 |
+| 精选MCP列表 | ✅ 完成 | 按场景分类 |
+| 最终报告 | ✅ 完成 | 综合报告 |
+
+## 输出文件
+
+```
+knowledge/
+├── 00_research_plan.md          ← 本文件:调研计划和进度
+├── 01_mcp_ecosystem.md          ← MCP生态详细调研
+├── 02_agent_skills_ecosystem.md ← Agent Skills生态详细调研
+├── 03_discovery_channels.md     ← 发现/评估/获取渠道
+├── 04_top_mcp_curated.md        ← 精选优质MCP服务器
+└── 05_final_report.md           ← 最终综合报告(主要阅读入口)
+```
+
+## 主要调研来源
+
+### 官方来源
+- https://modelcontextprotocol.io/ - MCP 官方文档
+- https://github.com/modelcontextprotocol/servers - 官方服务器
+- https://www.anthropic.com/news/model-context-protocol - MCP 发布公告
+- https://smithery.ai - MCP+Skills 综合平台
+- https://docs.langchain.com/oss/python/integrations/tools - LangChain Tools
+- https://docs.crewai.com/concepts/tools - CrewAI Tools
+- https://openai.github.io/openai-agents-python/tools/ - OpenAI Agents SDK
+- https://composio.dev/toolkits - Composio 工具包
+
+### 社区榜单
+- https://github.com/punkpeye/awesome-mcp-servers (81.3k ⭐)
+- https://github.com/wong2/awesome-mcp-servers (3.6k ⭐)
+- https://github.com/PatrickJS/awesome-cursorrules (38k ⭐)
+- https://github.com/e2b-dev/awesome-ai-agents (25.9k ⭐)
+
+### 目录平台
+- https://glama.ai/mcp/servers (17,658+ 服务器)
+- https://mcp.so (17,803+ 服务器)
+- https://mcpservers.org
+- https://mcp-awesome.com
+
+### 行业博客
+- https://simonwillison.net/2024/Nov/25/model-context-protocol/ - Simon Willison MCP评测
+- https://lilianweng.github.io/posts/2023-06-23-agent/ - Lilian Weng Agent工具综述
+- https://desktopcommander.app/blog/2025/11/25/best-mcp-servers/ - 22个最佳MCP评测

+ 138 - 0
examples/tool_research/knowledge/01_mcp_ecosystem.md

@@ -0,0 +1,138 @@
+# MCP (Model Context Protocol) 生态调研
+
+> 最后更新:2025-02-22
+> 状态:持续更新中
+
+---
+
+## 一、MCP 是什么
+
+MCP(Model Context Protocol)是 Anthropic 于 2024 年 11 月发布的开放协议,旨在标准化 AI 模型与外部工具/数据源之间的连接方式。类似于 USB-C 对设备连接的标准化作用,MCP 让 AI 助手可以安全、统一地访问各种外部资源。
+
+**官方文档**:https://modelcontextprotocol.io/
+**GitHub 组织**:https://github.com/modelcontextprotocol
+
+---
+
+## 二、核心资源库
+
+### 2.1 官方 MCP Servers 仓库
+- **URL**:https://github.com/modelcontextprotocol/servers
+- **说明**:Anthropic 官方维护的参考实现集合,包含最权威的官方 MCP 服务器
+
+### 2.2 awesome-mcp-servers(最大社区榜单)
+- **URL**:https://github.com/punkpeye/awesome-mcp-servers
+- **Stars**:81.3k ⭐(截至2025-02)
+- **Forks**:7.4k
+- **说明**:目前最全面的 MCP 服务器社区榜单,涵盖 30+ 分类,3725+ commits
+- **配套网站**:https://glama.ai/mcp/servers(可视化目录)
+
+---
+
+## 三、官方 MCP 服务器(Anthropic 官方出品)
+
+| 服务器 | 功能 | 链接 |
+|--------|------|------|
+| server-filesystem | 文件系统读写操作 | github.com/modelcontextprotocol/servers |
+| server-github | GitHub 仓库操作 | github.com/modelcontextprotocol/servers |
+| server-postgres | PostgreSQL 数据库 | github.com/modelcontextprotocol/servers |
+| server-sqlite | SQLite 数据库 | github.com/modelcontextprotocol/servers |
+| server-brave-search | Brave 搜索引擎 | github.com/modelcontextprotocol/servers |
+| server-google-maps | Google Maps 地图 | github.com/modelcontextprotocol/servers |
+| server-memory | 知识图谱记忆 | github.com/modelcontextprotocol/servers |
+| server-fetch | 网页内容获取 | github.com/modelcontextprotocol/servers |
+| server-puppeteer | 浏览器自动化 | github.com/modelcontextprotocol/servers |
+| server-slack | Slack 集成 | github.com/modelcontextprotocol/servers |
+
+---
+
+## 四、按分类整理的优质 MCP 服务器
+
+### 4.1 浏览器自动化
+- **browserbase/mcp-server-browserbase** 🎖️官方 - 云端浏览器自动化
+  - URL: https://github.com/browserbase/mcp-server-browserbase
+- **microsoft/playwright-mcp** 🎖️官方 - Playwright 集成(微软出品)
+  - URL: https://github.com/microsoft/playwright-mcp
+- **Puppeteer server** - 网页抓取和交互
+
+### 4.2 云平台集成
+- **awslabs/mcp** 🎖️官方 AWS - AWS 服务集成
+  - URL: https://github.com/awslabs/mcp
+- **cloudflare/mcp-server-cloudflare** 🎖️官方 - Workers/KV/R2/D1
+  - URL: https://github.com/cloudflare/mcp-server-cloudflare
+- **hashicorp/terraform-mcp-server** 🎖️官方 - Terraform 基础设施管理
+  - URL: https://github.com/hashicorp/terraform-mcp-server
+- **pulumi/mcp-server** 🎖️官方 - Pulumi IaC 集成
+  - URL: https://github.com/pulumi/mcp-server
+
+### 4.3 代码执行
+- **dagger/container-use** - 容器化编码 Agent 环境
+  - URL: https://github.com/dagger/container-use
+- **pydantic-ai/mcp-run-python** - 安全 Python 沙箱
+  - URL: https://github.com/pydantic/pydantic-ai
+- **yepcode/mcp-server-js** 🎖️官方 - JS/Python 代码执行
+  - URL: https://github.com/yepcode/mcp-server-js
+
+### 4.4 数据库
+- **modelcontextprotocol/server-postgres** 🎖️官方 - PostgreSQL
+- **modelcontextprotocol/server-sqlite** 🎖️官方 - SQLite
+- **mongodb-mcp** - MongoDB 集成
+- **redis/mcp-redis-cloud** - Redis Cloud 管理
+
+### 4.5 开发者工具
+- **modelcontextprotocol/server-github** 🎖️官方 - GitHub 操作
+- **git-mcp-server** - Git 版本控制
+- **docker-mcp** - Docker 容器管理
+- **sentry-mcp** - 错误追踪集成
+
+### 4.6 搜索与数据提取
+- **modelcontextprotocol/server-brave-search** 🎖️官方 - Brave 搜索
+- **exa-mcp-server** - Exa AI 语义搜索
+  - URL: https://github.com/exa-labs/exa-mcp-server
+- **tavily-mcp-server** - Tavily 搜索 API
+  - URL: https://github.com/tavily-ai/tavily-mcp
+
+### 4.7 聚合器(Meta-MCP)
+- **1mcp/agent** - 统一聚合多个 MCP
+- **AgentHotspot** - MCP 市场,搜索和集成连接器
+- **MetaTool** - 带 GUI 的统一中间件
+- **PipedreamHQ** - 连接 2500+ API
+  - URL: https://github.com/PipedreamHQ/pipedream
+
+### 4.8 生产力工具
+- **slack-mcp-server** - Slack 集成
+- **notion-mcp** - Notion 工作区访问
+- **asana-mcp** - 项目管理
+- **google-drive-mcp** - Google Drive 集成
+
+### 4.9 金融
+- **stripe-mcp-server** - Stripe 支付集成
+- **coinbase-mcp** - 加密货币操作
+- **yahoo-finance-mcp** - 股市数据
+
+---
+
+## 五、MCP 发现/评估平台
+
+### 5.1 Glama.ai
+- **URL**:https://glama.ai/mcp/servers
+- **说明**:最大的 MCP 服务器可视化目录,配套 MCP Inspector 工具
+- **MCP Inspector**:https://glama.ai/mcp/inspector(在线测试 MCP 服务器)
+
+### 5.2 MCP.so
+- **URL**:https://mcp.so
+- **说明**:MCP 服务器搜索和发现平台(待进一步调研)
+
+### 5.3 GitHub awesome-mcp-servers
+- **URL**:https://github.com/punkpeye/awesome-mcp-servers
+- **说明**:社区维护的最全榜单,81.3k stars
+
+---
+
+## 六、待继续调研
+
+- [ ] Glama.ai 详细功能
+- [ ] mcp.so 平台
+- [ ] smithery.ai(MCP 托管平台)
+- [ ] 各大 IDE 的 MCP 集成(Cursor、Windsurf、Claude Desktop)
+- [ ] 行业大牛对 MCP 的评测博客

+ 203 - 0
examples/tool_research/knowledge/02_agent_skills_ecosystem.md

@@ -0,0 +1,203 @@
+# Agent Skills 生态调研
+
+> 最后更新:2025-02-22
+> 状态:持续更新中
+
+---
+
+## 一、什么是 Agent Skills
+
+Agent Skills 是预构建的工作流/知识包,用于定制和扩展 AI Agent 的行为能力。与 MCP(提供工具/数据访问)不同,Skills 更侧重于:
+- **专业知识**:特定领域的专业指导(如金融分析、前端设计)
+- **工作流程**:预定义的任务执行流程
+- **工具集成**:将多个工具组合成完整的工作流
+
+---
+
+## 二、主要 Skills 平台
+
+### 2.1 Smithery.ai(最大 Skills 平台)
+- **URL**:https://smithery.ai/skills
+- **总量**:125,937+ Skills(截至2025-02)
+- **定位**:同时提供 MCP(4333+)和 Skills(125937+)的综合平台
+- **特点**:
+  - 一键 CLI 安装:`npx @smithery/cli@latest setup`
+  - 内置 OAuth 和凭证管理
+  - 可观测性和分析
+  - 支持发布自定义 Skills
+
+#### Skills 分类(13个主类)
+1. Research(研究)
+2. Coding(编程)
+3. Writing(写作)
+4. Data & Analytics(数据分析)
+5. Design(设计)
+6. Planning(规划)
+7. Communication(沟通)
+8. Productivity(生产力)
+9. DevOps
+10. AI & ML
+11. Security(安全)
+12. Business(商业)
+
+---
+
+## 三、Smithery 热门 Skills 排行(按安装量)
+
+| 排名 | Skill | 提供者 | 描述 | 安装量 | 评分 |
+|------|-------|--------|------|--------|------|
+| 1 | **cli** | smithery-ai | 发现/连接/使用 MCP 工具和 Skills 的 CLI 工具 | 880 | - |
+| 2 | **frontend-design** | anthropics | 创建高质量前端界面,避免 AI 通用美学 | 675 | 63,077 |
+| 3 | **skill-creator** | anthropics | 创建有效 Skills 的指南 | 239 | 66,293 |
+| 4 | **pptx** | anthropics | 处理 .pptx 演示文稿文件的完整工具集 | 194 | 66,293 |
+| 5 | **pdf** | anthropics | PDF 文件处理(读取/合并/分割/OCR等) | 193 | 66,293 |
+| 6 | **mcp-integration** | anthropics | MCP 服务器集成指南 | 145 | - |
+| 7 | **skill-development** | anthropics | Skill 开发最佳实践指南 | 137 | - |
+| 8 | **prompt-engineering-patterns** | wshobson | 高级提示工程技术,提升 LLM 性能 | 134 | - |
+| 9 | **xlsx** | anthropics | 电子表格文件处理(xlsx/csv/tsv) | 126 | - |
+| 10 | **webapp-testing** | anthropics | 使用 Playwright 测试本地 Web 应用 | 112 | - |
+| 11 | **docx** | anthropics | Word 文档创建/编辑/操作 | 108 | - |
+| 12 | **analyzing-financial-statements** | anthropics | 财务报表分析,计算关键财务比率 | 84 | - |
+| 13 | **theme-factory** | anthropics | 为 Artifacts 添加主题样式(10种预设主题) | 72 | - |
+| 14 | **refactor** | github | 外科手术式代码重构,不改变行为 | 72 | - |
+| 15 | **agent-identifier** | anthropics | Agent 创建/结构/系统提示最佳实践 | 60 | - |
+| 16 | **creating-financial-models** | anthropics | DCF分析/敏感性测试/蒙特卡洛模拟 | 56 | - |
+| 17 | **skill-writer** | pytorch | 引导创建 Agent Skills 的工具 | 50 | - |
+| 18 | **canvas-design** | anthropics | 创建视觉艺术(海报/设计作品) | 48 | - |
+| 19 | **mcp-builder** | anthropics | 构建高质量 MCP 服务器的指南 | 47 | - |
+| 20 | **web-design-reviewer** | github | 视觉检查网站设计问题并修复 | 39 | - |
+| 21 | **excalidraw-diagram-generator** | github | 从自然语言生成 Excalidraw 图表 | 27 | - |
+
+---
+
+## 四、Anthropic 官方 Skills(Claude Code 内置)
+
+Anthropic 在 Smithery 上发布了大量官方 Skills,主要面向 Claude Code 用户:
+
+### 文件处理类
+- `anthropics/pdf` - PDF 全功能处理
+- `anthropics/pptx` - PowerPoint 处理
+- `anthropics/xlsx` - Excel/CSV 处理
+- `anthropics/docx` - Word 文档处理
+
+### 设计类
+- `anthropics/frontend-design` - 前端界面设计
+- `anthropics/canvas-design` - 视觉艺术创作
+- `anthropics/theme-factory` - 主题样式工厂
+- `anthropics/web-design-reviewer` - 网站设计审查
+
+### 开发工具类
+- `anthropics/webapp-testing` - Web 应用测试(Playwright)
+- `anthropics/mcp-builder` - MCP 服务器构建指南
+- `anthropics/mcp-integration` - MCP 集成指南
+- `anthropics/refactor` - 代码重构
+
+### 金融分析类
+- `anthropics/analyzing-financial-statements` - 财务报表分析
+- `anthropics/creating-financial-models` - 财务模型构建
+
+### Meta Skills(关于 Skills 的 Skills)
+- `anthropics/skill-creator` - 创建 Skills 的指南
+- `anthropics/skill-development` - Skill 开发最佳实践
+- `anthropics/agent-identifier` - Agent 结构设计
+
+---
+
+## 五、其他 Agent Skills/Tools 生态
+
+### 5.1 LangChain Tools(150+ 工具)
+- **URL**:https://docs.langchain.com/oss/python/integrations/tools
+- **总量**:150+ 工具和工具包
+- **特点**:Python 为主,与 LangGraph 深度集成,1000+ 总集成
+- **主要分类**:
+  - 搜索工具(15种:Bing/Brave/DuckDuckGo/Exa/Tavily等)
+  - 代码执行(4种沙箱:E2B/Bearly/Riza/Azure)
+  - 生产力工具(GitHub/GitLab/Gmail/Jira/Slack/Office365)
+  - 浏览器工具(Playwright/AgentQL/MultiOn/Hyperbrowser)
+  - 数据库工具(Cassandra/SQL/Spark/Stardog)
+  - 金融工具(Composio/GOAT/Privy)
+  - 集成平台(Composio 500+工具)
+- **安装**:`pip install langchain-community`
+
+### 5.2 CrewAI Tools(29 个内置工具)
+- **URL**:https://docs.crewai.com/concepts/tools
+- **总量**:29 个内置工具
+- **特点**:
+  - 支持 MCP Server Adapter(接入数千社区工具)
+  - 内置 RAG 工具(PDF/CSV/JSON/DOCX/MDX搜索)
+  - 支持 Composio 和 LlamaIndex 集成
+- **主要工具**:
+  - 文件工具:FileReadTool/FileWriteTool/DirectoryReadTool
+  - 搜索工具:SerperDevTool/EXASearchTool
+  - 网页工具:ScrapeWebsiteTool/FirecrawlCrawlWebsiteTool/BrowserbaseLoadTool
+  - 数据库:PGSearchTool
+  - AI工具:DallETool/VisionTool/CodeInterpreterTool
+  - 媒体:YoutubeChannelSearchTool/YoutubeVideoSearchTool
+- **安装**:`pip install 'crewai[tools]'`
+
+### 5.3 OpenAI Agents SDK Tools
+- **URL**:https://openai.github.io/openai-agents-python/tools/
+- **特点**:5 大类工具,原生支持 MCP
+- **内置托管工具**:
+  - `WebSearchTool` - 网络搜索
+  - `FileSearchTool` - 向量存储检索
+  - `CodeInterpreterTool` - 代码执行沙箱
+  - `HostedMCPTool` - 远程 MCP 服务器
+  - `ImageGenerationTool` - 图像生成
+- **本地工具**:
+  - `ComputerTool` - GUI/浏览器自动化
+  - `ShellTool` - Shell 命令执行
+  - `ApplyPatchTool` - 代码补丁应用
+- **实验性**:`CodexTool` - 工作区级别代码任务
+
+### 5.4 Composio(850+ 工具包,11000+ 工具)
+- **URL**:https://composio.dev/toolkits
+- **总量**:877 工具包,11,000+ 工具
+- **特点**:
+  - 支持 MCP 或直接 API 访问
+  - 内置 OAuth2/Bearer/API Key 认证管理
+  - 企业级安全和可观测性
+  - 兼容 LangChain/CrewAI/AutoGen 等所有主流框架
+- **主要分类(20类)**:
+  - 开发工具(GitHub/Supabase/代码执行)
+  - 协作通信(Gmail/Outlook/Slack/Teams)
+  - 项目管理(Asana/Linear/Jira/Trello)
+  - CRM(HubSpot/Salesforce/Pipedrive)
+  - 文件管理(Google Drive/Sheets/Docs/Notion)
+  - 搜索数据(Firecrawl/Tavily/Exa)
+  - 金融(财务工具)
+  - 营销(社交媒体工具)
+
+### 5.5 Cursor Rules / .cursorrules(38k Stars)
+- **URL**:https://github.com/PatrickJS/awesome-cursorrules
+- **Stars**:38,000 ⭐
+- **说明**:Cursor IDE 的 AI 行为配置文件,类似 Skills 的概念
+- **特点**:
+  - 为特定技术栈定制 AI 行为
+  - 涵盖 40+ 前端框架、30+ 后端框架
+  - 支持 React/Next.js/Vue/Angular/Python/Go 等
+  - 可通过 VSCode 扩展安装
+- **配套网站**:https://cursor.directory
+
+---
+
+## 六、Skills vs MCP 的区别
+
+| 维度 | Agent Skills | MCP |
+|------|-------------|-----|
+| 本质 | 预构建工作流/知识包 | 工具/数据访问协议 |
+| 形式 | Markdown 文档/提示词 | 服务器程序 |
+| 功能 | 指导 Agent 如何做事 | 让 Agent 能做什么 |
+| 示例 | "如何重构代码"的最佳实践 | 执行 git 命令的能力 |
+| 安装 | 注入到 Agent 上下文 | 启动独立服务器进程 |
+
+---
+
+## 七、待继续调研
+
+- [ ] LangChain Tools 生态详情
+- [ ] AutoGen 工具集
+- [ ] CrewAI Tools 市场
+- [ ] OpenAI GPT Actions
+- [ ] Cursor Rules / .cursorrules 生态
+- [ ] Claude Code 官方 Skills 文档

+ 244 - 0
examples/tool_research/knowledge/03_discovery_channels.md

@@ -0,0 +1,244 @@
+# 发现/评估/获取 Agent Skills 和 MCP 的渠道
+
+> 最后更新:2025-02-22
+> 状态:持续更新中
+
+---
+
+## 一、MCP 发现渠道
+
+### 1.1 官方渠道
+
+#### Anthropic 官方 MCP 文档
+- **URL**:https://modelcontextprotocol.io/
+- **内容**:协议规范、官方服务器、开发指南
+- **适合**:了解 MCP 标准、开发自己的 MCP
+
+#### Anthropic 官方 GitHub 组织
+- **URL**:https://github.com/modelcontextprotocol
+- **内容**:官方参考实现、SDK、规范
+- **适合**:获取官方服务器、了解最新协议更新
+
+---
+
+### 1.2 社区榜单(GitHub Awesome Lists)
+
+#### awesome-mcp-servers(punkpeye)⭐ 最大榜单
+- **URL**:https://github.com/punkpeye/awesome-mcp-servers
+- **Stars**:81.3k ⭐(截至2025-02)
+- **特点**:
+  - 30+ 分类,覆盖最全面
+  - 区分官方/社区实现
+  - 标注编程语言、运行环境(本地/云端)
+  - 配套网站:https://glama.ai/mcp/servers
+- **适合**:全面发现 MCP 服务器
+
+#### awesome-mcp-servers(wong2)
+- **URL**:https://github.com/wong2/awesome-mcp-servers
+- **Stars**:3.6k ⭐
+- **特点**:
+  - 配套网站:https://mcpservers.org
+  - 不接受 PR,通过网站提交(质量控制更严格)
+  - 分为 Reference/Official/Community 三类
+- **适合**:发现经过筛选的高质量 MCP
+
+---
+
+### 1.3 专门平台/目录
+
+#### Glama.ai(最大 MCP 目录)
+- **URL**:https://glama.ai/mcp/servers
+- **总量**:17,658+ 服务器(截至2025-02)
+- **特点**:
+  - 多维度筛选:语言、类型、功能、下载量、Stars
+  - 质量评分(安全性、许可证、代码质量)
+  - 配套 MCP Inspector:https://glama.ai/mcp/inspector(在线测试工具)
+  - 支持 Deep Search
+  - 按 Recent Usage(30天活跃度)排序
+- **适合**:发现 + 评估 MCP 质量
+
+#### Smithery.ai(MCP + Skills 综合平台)
+- **URL**:https://smithery.ai
+- **总量**:4,333+ MCP 服务器 + 125,937+ Skills
+- **特点**:
+  - 一键 CLI 安装:`npx @smithery/cli@latest setup`
+  - 内置 OAuth 和凭证管理
+  - 使用量统计(按安装次数排序)
+  - 支持 Remote 和 Local 服务器
+  - 可观测性和分析功能
+- **适合**:快速安装 + 管理 MCP 和 Skills
+
+#### MCP.so
+- **URL**:https://mcp.so
+- **总量**:17,803+ 服务器(截至2025-02)
+- **特点**:
+  - 支持 Hosted MCP(托管服务器)
+  - 列出支持 MCP 的客户端(Cursor、Windsurf、Cline 等)
+  - 有中文友好内容(包含高德地图、百度地图等中文 MCP)
+- **适合**:发现 MCP,特别是中文生态
+
+#### MCPServers.org
+- **URL**:https://mcpservers.org
+- **特点**:
+  - 与 wong2/awesome-mcp-servers 配套
+  - 有 Featured/Official/Sponsored 分类
+  - 提交入口:https://mcpservers.org/submit
+- **适合**:发现经过筛选的高质量 MCP
+
+#### MCP-Awesome.com
+- **URL**:https://mcp-awesome.com
+- **总量**:1,200+ 服务器
+- **特点**:包含教程和示例
+- **适合**:入门学习
+
+---
+
+### 1.4 博客/评测文章
+
+#### Desktop Commander 博客
+- **URL**:https://desktopcommander.app/blog/2025/11/25/best-mcp-servers/
+- **内容**:22 个最佳 MCP 服务器详细评测,含安装难度、使用场景
+- **可信度**:高(Desktop Commander 本身是知名 MCP)
+
+#### Refold.ai 博客
+- **URL**:https://refold.ai/blog/21-powerful-mcp-servers-you-should-know-about-in-2025/
+- **内容**:21 个强大 MCP 服务器(2025年4月)
+
+#### CloudShip AI
+- **内容**:15 个最佳 DevOps 团队 MCP 服务器
+
+#### Pomerium
+- **内容**:安全导向的 MCP 服务器推荐
+
+---
+
+### 1.5 社区渠道
+
+#### Reddit
+- **r/ClaudeAI**:https://www.reddit.com/r/ClaudeAI/
+- **r/mcp**:MCP 专属讨论社区
+- **r/LangChain**:LangChain 工具讨论
+
+#### Discord
+- **Anthropic Discord**:官方 MCP 讨论频道
+- **Glama.ai Discord**:MCP 开发者社区
+
+#### GitHub Discussions
+- **modelcontextprotocol/servers**:官方讨论区
+
+---
+
+## 二、Agent Skills 发现渠道
+
+### 2.1 Smithery.ai Skills 目录
+- **URL**:https://smithery.ai/skills
+- **总量**:125,937+ Skills
+- **筛选维度**:分类(13个)、状态(Verified)、所有者
+- **排序方式**:安装量、评分
+- **适合**:发现和安装 Skills
+
+### 2.2 Anthropic 官方 Skills(Claude Code)
+- **URL**:https://docs.anthropic.com/(Claude Code 文档)
+- **内容**:Anthropic 官方发布的 Skills
+- **适合**:获取最权威的 Skills
+
+### 2.3 LangChain Tools 目录
+- **URL**:https://docs.langchain.com/oss/python/integrations/tools
+- **总量**:150+ 工具和工具包
+- **特点**:
+  - 按类别组织(搜索、代码执行、生产力、浏览器、数据库、金融)
+  - 标注费用(免费/付费/免费额度)
+  - Python 为主,部分支持 TypeScript
+- **适合**:LangChain/LangGraph 用户
+
+### 2.4 GitHub 搜索
+- **搜索词**:`agent skills`, `claude skills`, `SKILL.md`
+- **适合**:发现社区贡献的 Skills
+
+---
+
+## 三、评估 MCP/Skills 质量的方法
+
+### 3.1 量化指标
+| 指标 | 含义 | 获取渠道 |
+|------|------|----------|
+| GitHub Stars | 社区认可度 | GitHub、Glama.ai |
+| 安装量/下载量 | 实际使用量 | Smithery.ai、Glama.ai |
+| 最近活跃度 | 维护状态 | Glama.ai(Recent Usage)|
+| 代码质量评分 | 代码规范性 | Glama.ai |
+| 安全评分 | 安全性 | Glama.ai |
+| 许可证 | 商业使用可行性 | Glama.ai |
+
+### 3.2 质量信号
+- **官方标识**(🎖️):由原厂维护,质量有保障
+- **Verified 标识**:Smithery 验证过的 Skills
+- **更新频率**:最近是否有 commit
+- **Issue 响应**:维护者是否活跃回应
+- **文档完整性**:README 是否详细
+
+### 3.3 测试工具
+- **Glama MCP Inspector**:https://glama.ai/mcp/inspector(在线测试 MCP 服务器)
+- **Claude Desktop**:本地测试 MCP 集成
+- **Cursor/Windsurf**:IDE 中测试 MCP
+
+---
+
+## 四、获取/安装方式
+
+### 4.1 MCP 安装方式
+
+#### 方式一:npm/npx(TypeScript MCP)
+```bash
+npx @modelcontextprotocol/server-github
+```
+
+#### 方式二:pip/uvx(Python MCP)
+```bash
+uvx mcp-server-fetch
+```
+
+#### 方式三:Smithery CLI(统一安装)
+```bash
+npx @smithery/cli@latest setup
+npx @smithery/cli@latest add <server-name>
+```
+
+#### 方式四:Claude Desktop 配置文件
+```json
+{
+  "mcpServers": {
+    "github": {
+      "command": "npx",
+      "args": ["-y", "@modelcontextprotocol/server-github"],
+      "env": {"GITHUB_TOKEN": "your-token"}
+    }
+  }
+}
+```
+
+### 4.2 Skills 安装方式
+
+#### Smithery CLI
+```bash
+npx @smithery/cli@latest add skill <skill-name>
+```
+
+#### Claude Code 直接使用
+在 Claude Code 中,Skills 通过 `.claude/` 目录的配置文件加载
+
+---
+
+## 五、支持 MCP 的主流客户端
+
+| 客户端 | 类型 | MCP 支持 |
+|--------|------|----------|
+| Claude Desktop | 桌面应用 | ✅ 原生支持 |
+| Claude Code | CLI | ✅ 原生支持 |
+| Cursor | IDE | ✅ 支持 |
+| Windsurf | IDE | ✅ 支持 |
+| Cline | VS Code 插件 | ✅ 支持 |
+| Continue | VS Code 插件 | ✅ 支持 |
+| Cherry Studio | 桌面应用 | ✅ 支持 |
+| 5ire | 桌面应用 | ✅ 支持 |
+| HyperChat | 应用 | ✅ 支持 |
+| DeepChat | 应用 | ✅ 支持 |

+ 157 - 0
examples/tool_research/knowledge/04_top_mcp_curated.md

@@ -0,0 +1,157 @@
+# 优质 MCP 服务器精选
+
+> 最后更新:2025-02-22
+> 来源:多平台交叉验证(Smithery使用量 + Glama下载量 + GitHub Stars + 社区推荐)
+
+---
+
+## 一、评选标准
+
+本文档基于以下多维度指标筛选:
+- **Smithery 安装量**(实际使用量)
+- **Glama 下载量 + Stars**(社区认可度)
+- **GitHub Stars**(开发者认可度)
+- **官方出品**(质量保障)
+- **社区博客推荐**(实际使用反馈)
+
+---
+
+## 二、必装 MCP 服务器(按场景)
+
+### 🔍 搜索与信息获取
+
+| 服务器 | 提供者 | Smithery使用量 | 特点 | 获取方式 |
+|--------|--------|---------------|------|----------|
+| **Exa Search** | Exa Labs | 5.24M | 语义搜索+代码检索,1000次/月免费 | `npx @smithery/cli add exa` |
+| **Brave Search** | Anthropic官方 | 4.33K | 隐私优先,免费,无追踪 | `npx @modelcontextprotocol/server-brave-search` |
+| **Tavily** | Tavily | - | 实时搜索+爬取,1000次/月免费 | `npx @smithery/cli add tavily` |
+| **Context7** | Upstash | 17.65K | 版本特定文档获取,消除过时建议 | `npx @smithery/cli add context7` |
+| **Perplexity** | Perplexity | - | 深度研究+引用,多源验证 | 需API Key |
+| **Linkup** | Linkup | 25.37K | 实时网络搜索+来源支持 | `npx @smithery/cli add linkup` |
+
+### 💻 开发者工具
+
+| 服务器 | 提供者 | GitHub Stars | 特点 | 获取方式 |
+|--------|--------|-------------|------|----------|
+| **GitHub** | Anthropic官方 | 高 | 仓库管理、PR、Issues、代码审查 | `npx @modelcontextprotocol/server-github` |
+| **Filesystem** | Anthropic官方 | 高 | 安全文件读写,Claude Code必备 | `npx @modelcontextprotocol/server-filesystem` |
+| **Git** | 社区 | - | Git版本控制操作 | `uvx mcp-server-git` |
+| **Desktop Commander** | 社区 | - | 终端访问+文件管理+窗口控制 | `npx @smithery/cli add desktop-commander` |
+| **Docker** | 社区 | - | 容器管理,生成Dockerfile | npm包 |
+
+### 🌐 浏览器自动化
+
+| 服务器 | 提供者 | 特点 | 获取方式 |
+|--------|--------|------|----------|
+| **Playwright** | Microsoft官方 | 最权威的浏览器自动化 | `npx @playwright/mcp` |
+| **Browserbase** | Browserbase官方 | 云端浏览器,无需本地安装 | `npx @smithery/cli add browserbase` |
+| **Puppeteer** | Anthropic官方 | 网页抓取和交互 | `npx @modelcontextprotocol/server-puppeteer` |
+
+### 🗄️ 数据库
+
+| 服务器 | 提供者 | 特点 | 获取方式 |
+|--------|--------|------|----------|
+| **PostgreSQL** | Anthropic官方 | 自然语言SQL查询 | `npx @modelcontextprotocol/server-postgres` |
+| **SQLite** | Anthropic官方 | 轻量级本地数据库 | `npx @modelcontextprotocol/server-sqlite` |
+| **Supabase** | Supabase官方 | 20+工具,含Auth/Storage | npm包 |
+| **MongoDB** | 社区 | NoSQL文档操作 | npm包 |
+| **ClickHouse** | 社区 | 高性能分析(只读) | npm包 |
+
+### ☁️ 云平台
+
+| 服务器 | 提供者 | 特点 | 获取方式 |
+|--------|--------|------|----------|
+| **AWS** | AWS官方 | EC2/S3/IAM/CloudWatch等 | `pip install awslabs-mcp` |
+| **Cloudflare** | Cloudflare官方 | Workers/KV/R2/D1/DNS | npm包 |
+| **Azure** | Microsoft官方 | 40+服务,Entra ID认证 | npm包 |
+| **Terraform** | HashiCorp官方 | 基础设施即代码 | npm包 |
+| **Pulumi** | Pulumi官方 | IaC集成 | npm包 |
+
+### 📁 文件与存储
+
+| 服务器 | 提供者 | 特点 | 获取方式 |
+|--------|--------|------|----------|
+| **Google Drive** | 社区 | 文件搜索/分类/摘要 | npm包 |
+| **Memory** | Anthropic官方 | 知识图谱记忆系统 | `npx @modelcontextprotocol/server-memory` |
+| **Fetch** | Anthropic官方 | 网页内容获取 | `uvx mcp-server-fetch` |
+
+### 🏢 生产力工具
+
+| 服务器 | 提供者 | Smithery使用量 | 特点 | 获取方式 |
+|--------|--------|---------------|------|----------|
+| **Notion** | Notion官方 | 5.48K | 工作区搜索/页面/数据库管理 | `npx @smithery/cli add notion` |
+| **Slack** | Anthropic官方 | - | 消息草稿/频道摘要/工作区洞察 | `npx @modelcontextprotocol/server-slack` |
+| **Google Maps** | Anthropic官方 | - | 地理空间数据和路线查询 | `npx @modelcontextprotocol/server-google-maps` |
+| **Clay MCP** | Clay | 10.84K | 网络访问和工作流工具 | `npx @smithery/cli add clay` |
+
+### 🔐 安全与知识
+
+| 服务器 | 提供者 | 特点 | 获取方式 |
+|--------|--------|------|----------|
+| **InfraNodus** | InfraNodus | 知识图谱,文本→结构化表示 | `npx @smithery/cli add infranodus` |
+| **mem0** | mem0ai | 长期记忆,语义搜索 | `npx @smithery/cli add mem0` |
+
+---
+
+## 三、按 Smithery 使用量排行(Top 10)
+
+1. **Exa Search** - 5,240,000 使用量 🏆
+2. **Linkup** - 25,370 使用量
+3. **Context7** - 17,650 使用量
+4. **Clay MCP** - 10,840 使用量
+5. **Notion** - 5,480 使用量
+6. **GitHub** - 4,950 使用量
+7. **Browserbase** - 4,530 使用量
+8. **Brave Search** - 4,330 使用量
+9. **ScrapeGraph AI** - 182 使用量
+10. **InfraNodus** - 143 使用量
+
+---
+
+## 四、按 GitHub Stars 排行(社区认可度)
+
+1. **Playwright MCP**(Microsoft)- 最高
+2. **GitHub MCP Server**(Anthropic)
+3. **Filesystem MCP Server**(Anthropic)
+4. **Notion MCP Server**
+5. **PostgreSQL MCP Server**(Anthropic)
+6. **Brave Search MCP Server**(Anthropic)
+7. **Slack MCP Server**(Anthropic)
+8. **Google Drive MCP Server**
+9. **Docker MCP Server**
+10. **Supabase MCP Server**
+
+---
+
+## 五、特别推荐:新兴优质 MCP
+
+### 代码执行沙箱
+- **E2B** - 安全代码沙箱执行,支持多语言
+  - URL: https://github.com/e2b-dev/e2b-mcp
+- **dagger/container-use** - 容器化编码 Agent 环境
+  - URL: https://github.com/dagger/container-use
+
+### 文档获取
+- **Context7** - 版本特定文档,消除 AI 幻觉
+  - URL: https://github.com/upstash/context7-mcp
+- **Docfork** - 文档分叉和访问
+  - URL: https://smithery.ai/servers/docfork/mcp
+
+### 数据提取
+- **ScrapeGraph AI** - AI 驱动的高级网页抓取
+  - URL: https://github.com/ScrapeGraphAI/scrapegraph-mcp
+- **Firecrawl** - 网页爬取和数据提取
+  - URL: https://github.com/mendableai/firecrawl-mcp-server
+
+---
+
+## 六、聚合器 MCP(Meta-MCP)
+
+这类 MCP 可以访问数千个其他工具:
+
+| 聚合器 | 特点 | URL |
+|--------|------|-----|
+| **Composio** | 850+工具包,11000+工具,OAuth管理 | https://composio.dev |
+| **PipedreamHQ** | 连接2500+ API | https://github.com/PipedreamHQ/pipedream |
+| **Smithery CLI** | 发现/连接/使用所有MCP | https://smithery.ai |
+| **AgentHotspot** | MCP市场,搜索和集成 | - |

+ 266 - 0
examples/tool_research/knowledge/05_final_report.md

@@ -0,0 +1,266 @@
+# Agent Skills & MCP 生态全景调研报告
+
+> 最后更新:2025-02-22
+> 调研方法:浏览器实地调研 + 多平台交叉验证
+> 来源:Anthropic官方、Smithery.ai、Glama.ai、MCP.so、GitHub、LangChain文档、CrewAI文档、OpenAI文档、行业博客
+
+---
+
+## 执行摘要
+
+当前 AI Agent 工具生态已形成两大主线:
+1. **MCP(Model Context Protocol)**:Anthropic 2024年11月发布的开放协议,已成为 AI 工具集成的事实标准,目前有 17,000+ 服务器
+2. **Agent Skills**:预构建工作流/知识包,以 Smithery 平台的 125,937+ Skills 为代表
+
+两者互补:MCP 解决"能做什么"(工具访问),Skills 解决"怎么做"(工作流知识)。
+
+---
+
+## 一、MCP 生态全景
+
+### 1.1 规模数据
+
+| 平台 | MCP 服务器数量 | 特点 |
+|------|--------------|------|
+| Glama.ai | 17,658+ | 最大目录,含质量评分 |
+| MCP.so | 17,803+ | 含中文生态 |
+| Smithery.ai | 4,333+ | 含使用量统计 |
+| awesome-mcp-servers | 500+ | 精选榜单,81.3k Stars |
+
+### 1.2 MCP 分类体系(30+ 类)
+
+**核心类别**(按重要性排序):
+
+| 类别 | 代表服务器 | 说明 |
+|------|-----------|------|
+| 搜索与信息 | Exa/Brave/Tavily/Context7 | 最高频使用场景 |
+| 开发者工具 | GitHub/Filesystem/Git/Desktop Commander | 开发者必备 |
+| 浏览器自动化 | Playwright/Browserbase/Puppeteer | 网页交互 |
+| 数据库 | PostgreSQL/SQLite/Supabase/MongoDB | 数据访问 |
+| 云平台 | AWS/Cloudflare/Azure/Terraform | 基础设施 |
+| 生产力 | Notion/Slack/Google Drive | 工作流 |
+| 代码执行 | E2B/dagger/pydantic-run-python | 安全沙箱 |
+| 知识记忆 | Memory/mem0/InfraNodus | 持久化记忆 |
+| 聚合器 | Composio/Pipedream/Smithery | 元工具 |
+
+### 1.3 按使用量排行(Smithery 数据)
+
+1. 🥇 **Exa Search** - 5,240,000 次(绝对领先)
+2. **Linkup** - 25,370 次
+3. **Context7** - 17,650 次
+4. **Clay MCP** - 10,840 次
+5. **Notion** - 5,480 次
+6. **GitHub** - 4,950 次
+7. **Browserbase** - 4,530 次
+8. **Brave Search** - 4,330 次
+
+---
+
+## 二、Agent Skills 生态全景
+
+### 2.1 Skills 的本质
+
+Skills 是**预构建的工作流知识包**,与 MCP 的区别:
+
+| 维度 | Agent Skills | MCP |
+|------|-------------|-----|
+| 本质 | 工作流/知识/提示词 | 工具访问协议 |
+| 形式 | Markdown 文档 | 服务器程序 |
+| 功能 | 指导 Agent 如何做 | 让 Agent 能做什么 |
+| 示例 | "如何重构代码"的最佳实践 | 执行 git 命令的能力 |
+
+### 2.2 Smithery Skills 排行(按安装量)
+
+| 排名 | Skill | 提供者 | 安装量 | 核心功能 |
+|------|-------|--------|--------|----------|
+| 1 | cli | smithery-ai | 880 | 发现/连接/使用所有MCP工具 |
+| 2 | frontend-design | anthropics | 675 | 高质量前端界面设计 |
+| 3 | skill-creator | anthropics | 239 | 创建新 Skills 的指南 |
+| 4 | pptx | anthropics | 194 | PowerPoint 全功能处理 |
+| 5 | pdf | anthropics | 193 | PDF 全功能处理 |
+| 6 | mcp-integration | anthropics | 145 | MCP 集成指南 |
+| 7 | skill-development | anthropics | 137 | Skill 开发最佳实践 |
+| 8 | prompt-engineering-patterns | wshobson | 134 | 高级提示工程技术 |
+| 9 | xlsx | anthropics | 126 | Excel/CSV 处理 |
+| 10 | webapp-testing | anthropics | 112 | Playwright Web 测试 |
+
+### 2.3 各框架工具生态对比
+
+| 框架 | 工具数量 | 特点 | 适用场景 |
+|------|---------|------|----------|
+| **Smithery Skills** | 125,937+ | 最大,含 Anthropic 官方 | Claude Code 用户 |
+| **LangChain Tools** | 150+ | Python 生态,1000+ 集成 | Python 开发者 |
+| **Composio** | 11,000+ | 企业级,OAuth 管理 | 企业 Agent |
+| **CrewAI Tools** | 29 内置 | 简洁,支持 MCP | 多 Agent 协作 |
+| **OpenAI Agents SDK** | 10 内置 | 原生 MCP 支持 | OpenAI 用户 |
+| **Cursor Rules** | 38k Stars | IDE 定制 | Cursor 用户 |
+
+---
+
+## 三、发现/评估/获取渠道全景
+
+### 3.1 发现渠道(按可信度排序)
+
+#### 🥇 第一梯队:官方渠道
+| 渠道 | URL | 特点 |
+|------|-----|------|
+| Anthropic MCP 官方文档 | https://modelcontextprotocol.io/ | 协议权威来源 |
+| modelcontextprotocol/servers | https://github.com/modelcontextprotocol/servers | 官方参考实现 |
+| Smithery.ai | https://smithery.ai | MCP+Skills 综合平台 |
+| Anthropic Claude Code 文档 | https://docs.anthropic.com/ | Skills 官方文档 |
+
+#### 🥈 第二梯队:权威社区榜单
+| 渠道 | URL | Stars | 特点 |
+|------|-----|-------|------|
+| awesome-mcp-servers (punkpeye) | https://github.com/punkpeye/awesome-mcp-servers | 81.3k ⭐ | 最全 MCP 榜单 |
+| awesome-cursorrules | https://github.com/PatrickJS/awesome-cursorrules | 38k ⭐ | Cursor Rules 榜单 |
+| awesome-ai-agents (e2b) | https://github.com/e2b-dev/awesome-ai-agents | 25.9k ⭐ | AI Agent 框架榜单 |
+| awesome-mcp-servers (wong2) | https://github.com/wong2/awesome-mcp-servers | 3.6k ⭐ | 精选 MCP 榜单 |
+
+#### 🥉 第三梯队:专门目录平台
+| 平台 | URL | 数量 | 特色功能 |
+|------|-----|------|----------|
+| Glama.ai | https://glama.ai/mcp/servers | 17,658+ | 质量评分+MCP Inspector |
+| MCP.so | https://mcp.so | 17,803+ | 中文生态友好 |
+| MCPServers.org | https://mcpservers.org | - | 精选+提交入口 |
+| MCP-Awesome.com | https://mcp-awesome.com | 1,200+ | 含教程 |
+
+### 3.2 评估方法
+
+#### 量化指标
+| 指标 | 获取渠道 | 权重 |
+|------|----------|------|
+| Smithery 安装量 | smithery.ai | ⭐⭐⭐⭐⭐ |
+| Glama 下载量 | glama.ai | ⭐⭐⭐⭐ |
+| GitHub Stars | github.com | ⭐⭐⭐⭐ |
+| Glama 质量评分 | glama.ai | ⭐⭐⭐ |
+| 最近活跃度 | glama.ai (Recent Usage) | ⭐⭐⭐ |
+| 官方标识 | 各平台 | ⭐⭐⭐⭐⭐ |
+
+#### 质量信号
+- ✅ **官方出品**(Anthropic/Microsoft/AWS/Cloudflare 等)
+- ✅ **Verified 标识**(Smithery 验证)
+- ✅ **高 Stars + 近期活跃**(社区认可 + 维护中)
+- ✅ **文档完整**(README 详细,有示例)
+- ⚠️ **安全评分**(Glama 提供)
+
+#### 测试工具
+- **Glama MCP Inspector**:https://glama.ai/mcp/inspector(在线测试)
+- **Claude Desktop**:本地集成测试
+- **Cursor/Windsurf**:IDE 中测试
+
+### 3.3 获取/安装方式
+
+#### MCP 安装
+```bash
+# 方式1:Smithery CLI(推荐,统一管理)
+npx @smithery/cli@latest setup
+npx @smithery/cli@latest add <server-name>
+
+# 方式2:npm/npx(TypeScript MCP)
+npx @modelcontextprotocol/server-github
+
+# 方式3:pip/uvx(Python MCP)
+uvx mcp-server-fetch
+
+# 方式4:Claude Desktop 配置文件
+# 编辑 ~/Library/Application Support/Claude/claude_desktop_config.json
+```
+
+#### Skills 安装
+```bash
+# Smithery CLI
+npx @smithery/cli@latest add skill anthropics/frontend-design
+
+# Claude Code 直接使用(通过 .claude/ 目录)
+```
+
+---
+
+## 四、行业大牛观点
+
+### 4.1 Simon Willison(Django 联合创始人,AI 工具评测权威)
+- **博客**:https://simonwillison.net/
+- **MCP 评测**(2024-11-25):https://simonwillison.net/2024/Nov/25/model-context-protocol/
+- **核心观点**:
+  - MCP 是 LLM 与外部应用集成的**通用接口标准化**,意义重大
+  - 早期版本配置繁琐(需手动编辑 JSON),但方向正确
+  - 安全性需要关注(本地进程有文件系统访问权限)
+  - 多厂商采用(Zed/Replit/Codeium)是重要信号
+
+### 4.2 Lilian Weng(OpenAI 前研究员,Agent 理论权威)
+- **博客**:https://lilianweng.github.io/
+- **Agent 工具使用综述**:https://lilianweng.github.io/posts/2023-06-23-agent/
+- **核心观点**:
+  - Agent 工具分 5 类:信息获取/计算/领域专用/通信委托/创意媒体
+  - 工具使用的两个关键能力:**知道何时用**和**知道怎么用**
+  - 参数提取可靠性是最大挑战
+  - 人类评估 >> LLM 自评估(专业领域)
+
+### 4.3 Anthropic 官方(MCP 发布公告)
+- **URL**:https://www.anthropic.com/news/model-context-protocol
+- **核心观点**:
+  - MCP 解决 AI 被"困在信息孤岛"的根本问题
+  - 从碎片化定制集成 → 统一标准协议
+  - 已有 Block/Apollo 等企业采用
+  - 开发者可用 Claude 3.5 Sonnet 辅助构建 MCP 服务器
+
+---
+
+## 五、支持 MCP 的主流客户端
+
+| 客户端 | 类型 | MCP 支持 | 特点 |
+|--------|------|----------|------|
+| **Claude Desktop** | 桌面应用 | ✅ 原生 | Anthropic 官方 |
+| **Claude Code** | CLI | ✅ 原生 | 开发者首选 |
+| **Cursor** | IDE | ✅ | 最流行 AI IDE |
+| **Windsurf** | IDE | ✅ | Codeium 出品 |
+| **Cline** | VS Code 插件 | ✅ | 开源,功能强大 |
+| **Continue** | VS Code 插件 | ✅ | 开源 |
+| **Cherry Studio** | 桌面应用 | ✅ | 多模型支持 |
+| **5ire** | 桌面应用 | ✅ | - |
+| **Zed** | IDE | ✅ | 高性能编辑器 |
+| **Replit** | 在线 IDE | ✅ | 云端开发 |
+
+---
+
+## 六、关键洞察与建议
+
+### 6.1 MCP 已成事实标准
+- 17,000+ 服务器,主流 IDE 全面支持
+- 大厂官方出品(AWS/Microsoft/Cloudflare/HashiCorp)
+- OpenAI Agents SDK 也原生支持 MCP(`HostedMCPTool`)
+
+### 6.2 最值得关注的 MCP(综合评分)
+1. **Exa Search** - 使用量最高(5.24M),语义搜索最强
+2. **GitHub** - 开发者必备,官方出品
+3. **Playwright** - 浏览器自动化最权威(Microsoft官方)
+4. **Context7** - 消除 AI 文档幻觉的利器
+5. **Filesystem** - Claude Code 基础工具
+6. **Supabase** - 全栈开发神器(20+工具)
+7. **Desktop Commander** - 本地系统控制
+
+### 6.3 最值得关注的 Skills
+1. **anthropics/frontend-design** - 前端设计质量飞跃
+2. **anthropics/pdf/pptx/xlsx/docx** - 文件处理全套
+3. **wshobson/prompt-engineering-patterns** - 提示工程进阶
+4. **anthropics/webapp-testing** - Playwright 测试
+5. **anthropics/mcp-builder** - 构建自己的 MCP
+
+### 6.4 最佳发现渠道组合
+- **日常发现**:Smithery.ai(使用量排序)+ awesome-mcp-servers(社区精选)
+- **深度评估**:Glama.ai(质量评分 + MCP Inspector 测试)
+- **快速安装**:Smithery CLI(`npx @smithery/cli@latest setup`)
+- **跟踪动态**:Simon Willison 博客 + Anthropic 官方博客
+
+---
+
+## 七、文件索引
+
+| 文件 | 内容 |
+|------|------|
+| `01_mcp_ecosystem.md` | MCP 生态详细调研(官方资源、分类、平台) |
+| `02_agent_skills_ecosystem.md` | Agent Skills 生态(Smithery排行、各框架工具) |
+| `03_discovery_channels.md` | 发现/评估/获取渠道详细指南 |
+| `04_top_mcp_curated.md` | 精选优质 MCP 服务器(按场景分类) |
+| `05_final_report.md` | 本文件:综合报告 |

+ 486 - 0
examples/tool_research/knowledge/agent-skills-ecosystem.md

@@ -0,0 +1,486 @@
+# Agent Skills 生态系统调研报告
+
+> 调研时间:2025年  
+> 调研范围:主流 Agent 框架工具集成、Skills 专属平台、行业标准协议、行业大牛观点
+
+---
+
+## 目录
+
+1. [概述:什么是 Agent Skills](#1-概述什么是-agent-skills)
+2. [行业标准协议](#2-行业标准协议)
+   - 2.1 [MCP(Model Context Protocol)](#21-mcpmodel-context-protocol)
+   - 2.2 [A2A(Agent-to-Agent Protocol)](#22-a2aagent-to-agent-protocol)
+3. [主流框架工具生态](#3-主流框架工具生态)
+   - 3.1 [LangChain Tools](#31-langchain-tools)
+   - 3.2 [CrewAI Tools](#32-crewai-tools)
+   - 3.3 [AutoGen(Microsoft)](#33-autogenmicrosoft)
+4. [专属工具集成平台](#4-专属工具集成平台)
+   - 4.1 [Composio](#41-composio)
+5. [Agent Skills 专属市场](#5-agent-skills-专属市场)
+   - 5.1 [awesome-agent-skills](#51-awesome-agent-skills)
+   - 5.2 [agentskill.sh](#52-agentskillsh)
+   - 5.3 [LUXOR Claude Marketplace](#53-luxor-claude-marketplace)
+   - 5.4 [claude-market/marketplace](#54-claude-marketmarketplace)
+6. [行业大牛观点](#6-行业大牛观点)
+   - 6.1 [Lilian Weng(OpenAI)](#61-lilian-wengopenai)
+   - 6.2 [行业综合趋势](#62-行业综合趋势)
+7. [横向对比](#7-横向对比)
+8. [关键资源汇总](#8-关键资源汇总)
+
+---
+
+## 1. 概述:什么是 Agent Skills
+
+**Agent Skills** 是指赋予 AI Agent 执行特定任务能力的可复用模块。与传统"工具(Tool)"相比,Skills 更强调:
+
+- **工作流能力**:封装完整的任务执行逻辑,而非单一 API 调用
+- **标准化格式**:通过 `SKILL.md` 文件描述能力,支持"渐进式披露"按需加载
+- **跨平台兼容**:支持 Claude Code、OpenAI Codex、Gemini CLI、GitHub Copilot、Cursor、VS Code 等主流平台
+
+### Agent 核心架构(Lilian Weng 框架)
+
+```
+Agent = Planning + Memory + Tool Use
+         ↓           ↓         ↓
+      任务分解    短/长期记忆   外部能力调用
+```
+
+### 2025 年 Agent 生态分层
+
+```
+┌─────────────────────────────────────────┐
+│          低代码平台层(Dify、Coze)       │
+├─────────────────────────────────────────┤
+│          观测层(LangSmith、Langfuse)    │
+├─────────────────────────────────────────┤
+│          记忆层(Mem0、Zep)              │
+├─────────────────────────────────────────┤
+│    工具调用层(MCP / A2A / Composio)    │
+├─────────────────────────────────────────┤
+│    代码生成 Agent(Cursor、Devin)        │
+├─────────────────────────────────────────┤
+│  多 Agent 编排层(LangGraph、CrewAI)    │
+├─────────────────────────────────────────┤
+│  核心框架层(LangChain、AutoGen)        │
+└─────────────────────────────────────────┘
+```
+
+---
+
+## 2. 行业标准协议
+
+### 2.1 MCP(Model Context Protocol)
+
+| 属性 | 详情 |
+|------|------|
+| **发布方** | Anthropic |
+| **发布时间** | 2024 年 11 月 |
+| **定位** | Agent 与外部数据/工具的标准化接口协议 |
+| **支持方** | OpenAI、Google、Microsoft、Anthropic 全面支持 |
+| **生态规模** | 10,000+ MCP Server |
+| **核心特点** | 结构化数据访问、标准化工具描述、跨框架兼容 |
+
+**MCP 与 Skills 的区别**:
+- **MCP**:关注结构化数据访问,提供标准化工具接口
+- **Skills**:关注工作流能力,封装完整任务执行逻辑
+
+**官方 MCP Server 列表**:https://github.com/modelcontextprotocol/servers
+
+### 2.2 A2A(Agent-to-Agent Protocol)
+
+| 属性 | 详情 |
+|------|------|
+| **发布方** | Google |
+| **发布时间** | 2025 年 4 月 |
+| **定位** | 解决 Agent 间通信问题,补充 MCP |
+| **核心特点** | Agent 发现、任务委托、结果传递标准化 |
+
+---
+
+## 3. 主流框架工具生态
+
+### 3.1 LangChain Tools
+
+- **官网**:https://python.langchain.com/docs/integrations/tools/
+- **GitHub**:https://github.com/langchain-ai/langchain(⭐ 124K)
+- **LangGraph**:https://github.com/langchain-ai/langgraph(⭐ 23K)
+- **工具总量**:1,000+ 集成(含工具、模型、向量库等)
+
+#### 工具分类详情
+
+| 类别 | 数量 | 代表工具 |
+|------|------|---------|
+| **搜索类** | 16 | Tavily、DuckDuckGo、Brave Search、Google Serper、Exa、SearxNG |
+| **代码解释器** | 4 | Azure Container Apps、Riza、Bearly、Amazon Bedrock AgentCore |
+| **生产力工具** | 8 | GitHub、GitLab、Gmail、Jira、Office365、Slack、Twilio |
+| **Web 浏览** | 8 | PlayWright、AgentQL、MultiOn、Hyperbrowser |
+| **数据库** | 6 | SQLDatabase、Cassandra、Spark SQL、MCP Toolbox |
+| **金融** | 3 | GOAT、Privy、Ampersend |
+| **集成平台** | 1 | Composio(500+ 工具) |
+| **知识/学术** | 多 | ArXiv、Wikipedia、Wolfram Alpha |
+| **AI 生成** | 多 | DALL-E、YouTube |
+
+#### 特色功能
+
+- **模块化包管理**:`langchain-provider` 机制,按需安装工具包
+- **多语言支持**:Python + JavaScript/TypeScript
+- **社区贡献**:开放式工具贡献,生态极为丰富
+- **LangSmith 集成**:工具调用可观测性平台
+
+---
+
+### 3.2 CrewAI Tools
+
+- **官网**:https://docs.crewai.com/concepts/tools
+- **GitHub**:https://github.com/crewAIInc/crewAI(⭐ 44,425)
+
+#### 内置工具(约 35 个)
+
+**文件/文档处理**
+| 工具 | 功能 |
+|------|------|
+| `FileReadTool` | 读取本地文件 |
+| `DirectoryReadTool` | 读取目录结构 |
+| `PDFSearchTool` | PDF 语义搜索 |
+| `DOCXSearchTool` | Word 文档搜索 |
+| `CSVSearchTool` | CSV 数据搜索 |
+| `JSONSearchTool` | JSON 数据搜索 |
+| `XMLSearchTool` | XML 数据搜索 |
+| `TXTSearchTool` | 纯文本搜索 |
+| `MDXSearchTool` | Markdown 搜索 |
+
+**Web 工具**
+| 工具 | 功能 |
+|------|------|
+| `ScrapeWebsiteTool` | 网页抓取 |
+| `WebsiteSearchTool` | 网站语义搜索 |
+| `FirecrawlSearchTool` | Firecrawl 搜索 |
+| `FirecrawlCrawlWebsiteTool` | Firecrawl 爬取 |
+| `BrowserbaseLoadTool` | 无头浏览器加载 |
+
+**搜索工具**
+| 工具 | 功能 |
+|------|------|
+| `SerperDevTool` | Google 搜索(Serper API)|
+| `EXASearchTool` | Exa AI 搜索 |
+| `GithubSearchTool` | GitHub 代码搜索 |
+
+**AI 生成**
+| 工具 | 功能 |
+|------|------|
+| `DALL-E Tool` | 图像生成 |
+| `CodeInterpreterTool` | 代码执行 |
+| `Vision Tool` | 图像理解 |
+
+**集成工具**
+| 工具 | 功能 |
+|------|------|
+| `ComposioTool` | Composio 500+ 工具集成 |
+| `LlamaIndexTool` | LlamaIndex 知识库 |
+| `ApifyActorsTool` | Apify 爬虫平台 |
+
+**数据库**
+| 工具 | 功能 |
+|------|------|
+| `PGSearchTool` | PostgreSQL 搜索 |
+| `RagTool` | RAG 检索增强 |
+
+#### 特色功能
+
+- **智能缓存机制**:相同输入自动复用结果,降低 API 成本
+- **异步工具支持**:高并发场景下的异步执行
+- **自定义工具**:继承 `BaseTool` 或使用 `@tool` 装饰器
+- **MCP 集成**:支持 MCP Servers as Tools
+- **企业工具仓库**:AMP(Agent Marketplace Platform)平台
+
+---
+
+### 3.3 AutoGen(Microsoft)
+
+- **GitHub**:https://github.com/microsoft/autogen(⭐ 54,700 | Forks: 8,200 | 贡献者: 557)
+- **最新版本**:v0.7.5(2025 年 9 月)
+- **状态**:⚠️ 维护模式(仅修复 Bug),新用户建议使用 **Microsoft Agent Framework**
+
+#### 三层架构
+
+```
+┌─────────────────────────────────────┐
+│     Extensions API(扩展层)         │
+│  MCP、Playwright、外部服务集成       │
+├─────────────────────────────────────┤
+│     AgentChat API(对话层)          │
+│  多 Agent 对话、角色定义、任务分配   │
+├─────────────────────────────────────┤
+│     Core API(核心层)               │
+│  事件驱动、消息传递、基础 Agent      │
+└─────────────────────────────────────┘
+```
+
+#### 工具生态
+
+- **AutoGen Studio**:无代码 GUI,可视化构建多 Agent 工作流
+- **AutoGen Bench**:基准测试框架
+- **MCP 协议集成**:如 Playwright MCP 实现浏览器自动化
+- **多模型支持**:OpenAI、Azure OpenAI、Gemini、LMStudio
+
+#### 特色功能
+
+- **多 Agent 对话框架**:Agent 间自动协作完成复杂任务
+- **跨语言支持**:Python + .NET(C#)
+- **事件驱动架构**:异步消息传递,高并发场景
+
+---
+
+## 4. 专属工具集成平台
+
+### 4.1 Composio
+
+- **官网**:https://composio.dev
+- **GitHub**:⭐ 25K+
+- **定位**:企业级 Agent 工具集成平台
+
+#### 核心数据
+
+| 指标 | 数值 |
+|------|------|
+| 工具数量 | 10,000+ 工具 |
+| 集成应用 | 500+ |
+| 开发者用户 | 78,379+ |
+| 成功调用次数 | 1,176,245+ |
+| 企业客户 | 128+ |
+| 支持框架 | 25+ |
+
+#### 支持的 Agent 框架
+
+LangChain、LangGraph、AutoGen、CrewAI、Vercel AI SDK、OpenAI Agents SDK 等 25+ 框架
+
+#### 核心功能
+
+| 功能 | 说明 |
+|------|------|
+| **内置 Auth 管理** | OAuth 自动处理,无需手动管理 Token |
+| **Tool Observability** | 实时监控工具调用,追踪成功率和延迟 |
+| **MCP Gateway** | 一键获取 100+ 应用的 MCP URL |
+| **工具准确率提升** | 工具调用准确率提升 30% |
+| **SOC 2 Type II** | 企业级安全认证 |
+
+#### 定价方案
+
+| 套餐 | 价格 | 额度 |
+|------|------|------|
+| 免费版 | $0/月 | 20,000 次/月 |
+| 基础版 | $29/月 | 更高额度 |
+| 专业版 | $229/月 | 高额度 + 优先支持 |
+| 企业版 | 定制 | 无限制 + SLA |
+
+---
+
+## 5. Agent Skills 专属市场
+
+### 5.1 awesome-agent-skills
+
+- **GitHub**:https://github.com/skillmatic-ai/awesome-agent-skills(⭐ 219)
+- **配套网站**:https://agentskills.io
+- **定位**:Agent Skills 领域的定义性资源库(类似 awesome-xxx 系列)
+
+#### 核心贡献
+
+- 定义了 **SKILL.md** 标准格式
+- 建立了 Skills 与 MCP 的区别框架
+- 整理了跨平台 Skills 兼容性指南
+
+#### SKILL.md 标准格式
+
+```markdown
+# Skill Name
+
+## Description
+简短描述这个 Skill 的功能
+
+## Usage
+如何使用这个 Skill
+
+## Examples
+具体使用示例
+
+## Requirements
+依赖和前置条件
+```
+
+---
+
+### 5.2 agentskill.sh
+
+- **网站**:https://agentskill.sh
+- **定位**:Skills 发现与分享平台
+
+#### 平台特点
+
+| 特点 | 说明 |
+|------|------|
+| **Skills 数量** | 44,000+ |
+| **安全扫描** | 内置安全扫描机制 |
+| **分类浏览** | 按功能类别组织 |
+| **社区评分** | 用户评分和评论 |
+
+---
+
+### 5.3 LUXOR Claude Marketplace
+
+- **GitHub**:https://github.com/manutej/luxor-claude-marketplace(⭐ 38)
+- **定位**:Claude 专属工具市场,手工精选
+
+#### 工具统计
+
+| 类别 | 数量 |
+|------|------|
+| **技能(Skills)** | 67 |
+| **命令(Commands)** | 28 |
+| **Agent** | 30 |
+| **工作流(Workflows)** | 15 |
+| **总计** | 140 |
+
+---
+
+### 5.4 claude-market/marketplace
+
+- **GitHub**:https://github.com/claude-market/marketplace
+- **定位**:开源手工精选市场
+- **特点**:社区驱动,注重质量而非数量
+
+---
+
+## 6. 行业大牛观点
+
+### 6.1 Lilian Weng(OpenAI)
+
+- **文章**:《LLM Powered Autonomous Agents》
+- **发布时间**:2023 年 6 月 23 日
+- **URL**:https://lilianweng.github.io/posts/2023-06-23-agent/
+
+#### 核心框架
+
+```
+Agent = Planning + Memory + Tool Use
+```
+
+**Planning(规划)**
+- 任务分解(Task Decomposition)
+- 自我反思(Self-Reflection)
+- Chain-of-Thought、Tree of Thoughts
+
+**Memory(记忆)**
+- 短期记忆:上下文窗口
+- 长期记忆:外部向量数据库
+
+**Tool Use(工具使用)**
+- MRKL:模块化推理与知识语言模型
+- Toolformer:自监督工具使用学习
+- HuggingGPT:以 HuggingFace 为工具库
+- API-Bank:53 个 API 工具的基准测试集
+
+#### 关键挑战
+
+1. **有限上下文**:工具描述占用大量 Token
+2. **长期规划困难**:多步骤任务中的错误累积
+3. **自然语言接口可靠性**:工具调用格式不稳定
+
+---
+
+### 6.2 行业综合趋势
+
+#### 2025 年 Agent 生态关键趋势
+
+**1. MCP 成为行业标准**
+- Anthropic 于 2024 年 11 月发布 MCP
+- OpenAI、Google、Microsoft 全面支持
+- 生态规模:10,000+ MCP Server
+
+**2. A2A 补充 MCP**
+- Google 于 2025 年 4 月发布 A2A 协议
+- 解决 Agent 间通信标准化问题
+- MCP(工具调用)+ A2A(Agent 协作)= 完整生态
+
+**3. 工具调用准确率成为核心竞争力**
+- Composio 等平台专注提升工具调用准确率(+30%)
+- 工具描述优化、参数验证成为关键技术
+
+**4. 多 Agent 编排成主流**
+- 单 Agent → 多 Agent 协作的范式转变
+- LangGraph、CrewAI、AutoGen 引领编排框架
+
+**5. 可观测性(Observability)成刚需**
+- LangSmith、Langfuse 等工具兴起
+- 工具调用追踪、成本监控、错误分析
+
+---
+
+## 7. 横向对比
+
+### 框架工具生态对比
+
+| 框架 | GitHub Stars | 工具数量 | 特色 | 适用场景 |
+|------|-------------|---------|------|---------|
+| **LangChain** | 124K | 1,000+ | 生态最丰富,模块化 | 通用 Agent 开发 |
+| **CrewAI** | 44K | ~35 内置 | 多 Agent 协作,角色扮演 | 团队协作任务 |
+| **AutoGen** | 54K | 扩展生态 | 多 Agent 对话,跨语言 | 企业级复杂任务 |
+| **Composio** | 25K | 10,000+ | 工具集成平台,Auth 管理 | 工具集成层 |
+
+### Skills 平台对比
+
+| 平台 | Skills 数量 | 特色 | 适用人群 |
+|------|------------|------|---------|
+| **agentskill.sh** | 44,000+ | 安全扫描,社区评分 | 普通用户 |
+| **awesome-agent-skills** | 精选 | 定义标准,教育意义 | 开发者 |
+| **LUXOR Marketplace** | 140 | 手工精选,质量高 | Claude 用户 |
+| **claude-market** | 精选 | 开源社区 | Claude 开发者 |
+
+### 协议对比
+
+| 协议 | 发布方 | 时间 | 定位 | 生态规模 |
+|------|--------|------|------|---------|
+| **MCP** | Anthropic | 2024.11 | 工具/数据访问标准 | 10,000+ Server |
+| **A2A** | Google | 2025.04 | Agent 间通信标准 | 新兴 |
+| **SKILL.md** | 社区 | 2024+ | Skills 描述格式 | 44,000+ Skills |
+
+---
+
+## 8. 关键资源汇总
+
+### 官方文档
+
+| 资源 | URL |
+|------|-----|
+| LangChain Tools 文档 | https://python.langchain.com/docs/integrations/tools/ |
+| CrewAI Tools 文档 | https://docs.crewai.com/concepts/tools |
+| AutoGen GitHub | https://github.com/microsoft/autogen |
+| MCP 官方服务器列表 | https://github.com/modelcontextprotocol/servers |
+
+### 工具平台
+
+| 资源 | URL |
+|------|-----|
+| Composio | https://composio.dev |
+| agentskill.sh | https://agentskill.sh |
+| agentskills.io | https://agentskills.io |
+
+### 社区资源
+
+| 资源 | URL |
+|------|-----|
+| awesome-agent-skills | https://github.com/skillmatic-ai/awesome-agent-skills |
+| LUXOR Claude Marketplace | https://github.com/manutej/luxor-claude-marketplace |
+| claude-market/marketplace | https://github.com/claude-market/marketplace |
+
+### 行业洞察
+
+| 资源 | URL |
+|------|-----|
+| Lilian Weng - LLM Powered Autonomous Agents | https://lilianweng.github.io/posts/2023-06-23-agent/ |
+| LangChain GitHub | https://github.com/langchain-ai/langchain |
+| LangGraph GitHub | https://github.com/langchain-ai/langgraph |
+
+---
+
+*本报告基于 2025 年调研数据,Agent 生态发展迅速,建议定期更新。*

+ 503 - 0
examples/tool_research/run.py

@@ -0,0 +1,503 @@
+"""
+示例(增强版)
+
+使用 Agent 模式 + Skills
+
+新增功能:
+1. 支持命令行随时打断(输入 'p' 暂停,'q' 退出)
+2. 暂停后可插入干预消息
+3. 支持触发经验总结
+4. 查看当前 GoalTree
+5. 框架层自动清理不完整的工具调用
+6. 支持通过 --trace <ID> 恢复已有 Trace 继续执行
+"""
+
+import argparse
+import os
+import sys
+import select
+import asyncio
+from pathlib import Path
+
+# Clash Verge TUN 模式兼容:禁止 httpx/urllib 自动检测系统 HTTP 代理
+# TUN 虚拟网卡已在网络层接管所有流量,不需要应用层再走 HTTP 代理,
+# 否则 httpx 检测到 macOS 系统代理 (127.0.0.1:7897) 会导致 ConnectError
+os.environ.setdefault("no_proxy", "*")
+
+# 添加项目根目录到 Python 路径
+sys.path.insert(0, str(Path(__file__).parent.parent.parent))
+
+from dotenv import load_dotenv
+load_dotenv()
+
+from agent.llm.prompts import SimplePrompt
+from agent.core.runner import AgentRunner, RunConfig
+from agent.trace import (
+    FileSystemTraceStore,
+    Trace,
+    Message,
+)
+from agent.llm import create_yescode_llm_call
+
+
+# ===== 非阻塞 stdin 检测 =====
+
+def check_stdin() -> str | None:
+    """
+    非阻塞检查 stdin 是否有输入。
+
+    使用 select 轮询,不开后台线程,因此不会与交互菜单的 input() 抢 stdin。
+    """
+    ready, _, _ = select.select([sys.stdin], [], [], 0)
+    if ready:
+        line = sys.stdin.readline().strip().lower()
+        if line in ('p', 'pause'):
+            return 'pause'
+        if line in ('q', 'quit'):
+            return 'quit'
+    return None
+
+
+# ===== 交互菜单 =====
+
+def _read_multiline() -> str:
+    """
+    读取多行输入,以连续两次回车(空行)结束。
+
+    单次回车只是换行,不会提前终止输入。
+    """
+    print("\n请输入干预消息(连续输入两次回车结束):")
+    lines: list[str] = []
+    blank_count = 0
+    while True:
+        line = input()
+        if line == "":
+            blank_count += 1
+            if blank_count >= 2:
+                break
+            lines.append("")          # 保留单个空行
+        else:
+            blank_count = 0
+            lines.append(line)
+
+    # 去掉尾部多余空行
+    while lines and lines[-1] == "":
+        lines.pop()
+    return "\n".join(lines)
+
+
+async def show_interactive_menu(
+    runner: AgentRunner,
+    trace_id: str,
+    current_sequence: int,
+    store: FileSystemTraceStore,
+):
+    """
+    显示交互式菜单,让用户选择操作。
+
+    进入本函数前不再有后台线程占用 stdin,所以 input() 能正常工作。
+    """
+    print("\n" + "=" * 60)
+    print("  执行已暂停")
+    print("=" * 60)
+    print("请选择操作:")
+    print("  1. 插入干预消息并继续")
+    print("  2. 触发经验总结(reflect)")
+    print("  3. 查看当前 GoalTree")
+    print("  4. 继续执行")
+    print("  5. 停止执行")
+    print("=" * 60)
+
+    while True:
+        choice = input("请输入选项 (1-5): ").strip()
+
+        if choice == "1":
+            text = _read_multiline()
+            if not text:
+                print("未输入任何内容,取消操作")
+                continue
+
+            print(f"\n将插入干预消息并继续执行...")
+            # 从 store 读取实际的 last_sequence,避免本地 current_sequence 过时
+            live_trace = await store.get_trace(trace_id)
+            actual_sequence = live_trace.last_sequence if live_trace and live_trace.last_sequence else current_sequence
+            return {
+                "action": "continue",
+                "messages": [{"role": "user", "content": text}],
+                "after_sequence": actual_sequence,
+            }
+
+        elif choice == "2":
+            # 触发经验总结
+            print("\n触发经验总结...")
+            focus = input("请输入反思重点(可选,直接回车跳过): ").strip()
+
+            from agent.trace.compaction import build_reflect_prompt
+
+            # 保存当前 head_sequence
+            trace = await store.get_trace(trace_id)
+            saved_head = trace.head_sequence
+
+            prompt = build_reflect_prompt()
+            if focus:
+                prompt += f"\n\n请特别关注:{focus}"
+
+            print("正在生成反思...")
+            reflect_cfg = RunConfig(trace_id=trace_id, max_iterations=1, tools=[])
+
+            reflection_text = ""
+            try:
+                result = await runner.run_result(
+                    messages=[{"role": "user", "content": prompt}],
+                    config=reflect_cfg,
+                )
+                reflection_text = result.get("summary", "")
+            finally:
+                # 恢复 head_sequence(反思消息成为侧枝)
+                await store.update_trace(trace_id, head_sequence=saved_head)
+
+            # 追加到 experiences 文件
+            if reflection_text:
+                from datetime import datetime
+                experiences_path = runner.experiences_path or "./.cache/experiences.md"
+                os.makedirs(os.path.dirname(experiences_path), exist_ok=True)
+                header = f"\n\n---\n\n## {trace_id} ({datetime.now().strftime('%Y-%m-%d %H:%M')})\n\n"
+                with open(experiences_path, "a", encoding="utf-8") as f:
+                    f.write(header + reflection_text + "\n")
+                print(f"\n反思已保存到: {experiences_path}")
+                print("\n--- 反思内容 ---")
+                print(reflection_text)
+                print("--- 结束 ---\n")
+            else:
+                print("未生成反思内容")
+
+            continue
+
+        elif choice == "3":
+            goal_tree = await store.get_goal_tree(trace_id)
+            if goal_tree and goal_tree.goals:
+                print("\n当前 GoalTree:")
+                print(goal_tree.to_prompt())
+            else:
+                print("\n当前没有 Goal")
+            continue
+
+        elif choice == "4":
+            print("\n继续执行...")
+            return {"action": "continue"}
+
+        elif choice == "5":
+            print("\n停止执行...")
+            return {"action": "stop"}
+
+        else:
+            print("无效选项,请重新输入")
+
+
+async def main():
+    # 解析命令行参数
+    parser = argparse.ArgumentParser(description="任务 (Agent 模式 + 交互增强)")
+    parser.add_argument(
+        "--trace", type=str, default=None,
+        help="已有的 Trace ID,用于恢复继续执行(不指定则新建)",
+    )
+    args = parser.parse_args()
+
+    # 路径配置
+    base_dir = Path(__file__).parent
+    project_root = base_dir.parent.parent
+    prompt_path = base_dir / "test.prompt"
+    output_dir = base_dir / "output_1"
+    output_dir.mkdir(exist_ok=True)
+
+    # Skills 目录(可选:用户自定义 skills)
+    # 注意:内置 skills(agent/skills/core.md)会自动加载
+    skills_dir = None  # 或者指定自定义 skills 目录,如: project_root / "skills"
+
+    print("=" * 60)
+    print("mcp/skills 发现、获取、评价 分析任务 (Agent 模式 + 交互增强)")
+    print("=" * 60)
+    print()
+    print("💡 交互提示:")
+    print("   - 执行过程中输入 'p' 或 'pause' 暂停并进入交互模式")
+    print("   - 执行过程中输入 'q' 或 'quit' 停止执行")
+    print("=" * 60)
+    print()
+
+    # 1. 加载 prompt
+    print("1. 加载 prompt 配置...")
+    prompt = SimplePrompt(prompt_path)
+
+    # 2. 构建消息(仅新建时使用,恢复时消息已在 trace 中)
+    print("2. 构建任务消息...")
+    messages = prompt.build_messages()
+
+    # 3. 创建 Agent Runner(配置 skills)
+    print("3. 创建 Agent Runner...")
+    print(f"   - Skills 目录: {skills_dir}")
+    print(f"   - 模型: {prompt.config.get('model', 'sonnet-4.5')}")
+
+    store = FileSystemTraceStore(base_path=".trace")
+    runner = AgentRunner(
+        trace_store=store,
+        llm_call=create_yescode_llm_call(model=f"claude-{prompt.config.get('model', 'sonnet-4.5')}"),
+        skills_dir=skills_dir,
+        debug=True
+    )
+
+    # 4. 判断是新建还是恢复
+    resume_trace_id = args.trace
+    if resume_trace_id:
+        # 验证 trace 存在
+        existing_trace = await store.get_trace(resume_trace_id)
+        if not existing_trace:
+            print(f"\n错误: Trace 不存在: {resume_trace_id}")
+            sys.exit(1)
+        print(f"4. 恢复已有 Trace: {resume_trace_id[:8]}...")
+        print(f"   - 状态: {existing_trace.status}")
+        print(f"   - 消息数: {existing_trace.total_messages}")
+        print(f"   - 任务: {existing_trace.task}")
+    else:
+        print(f"4. 启动新 Agent 模式...")
+
+    print()
+
+    final_response = ""
+    current_trace_id = resume_trace_id
+    current_sequence = 0
+    should_exit = False
+
+    try:
+        # 恢复模式:不发送初始消息,只指定 trace_id 续跑
+        if resume_trace_id:
+            initial_messages = None  # None = 未设置,触发早期菜单检查
+            config = RunConfig(
+                model=f"claude-{prompt.config.get('model', 'sonnet-4.5')}",
+                temperature=float(prompt.config.get('temperature', 0.3)),
+                max_iterations=1000,
+                trace_id=resume_trace_id,
+            )
+        else:
+            initial_messages = messages
+            config = RunConfig(
+                model=f"claude-{prompt.config.get('model', 'sonnet-4.5')}",
+                temperature=float(prompt.config.get('temperature', 0.3)),
+                max_iterations=1000,
+                name="mcp/skills 发现、获取、评价 分析任务",
+            )
+
+        while not should_exit:
+            # 如果是续跑,需要指定 trace_id
+            if current_trace_id:
+                config.trace_id = current_trace_id
+
+            # 清理上一轮的响应,避免失败后显示旧内容
+            final_response = ""
+
+            # 如果 trace 已完成/失败且没有新消息,直接进入交互菜单
+            # 注意:initial_messages 为 None 表示未设置(首次加载),[] 表示有意为空(用户选择"继续")
+            if current_trace_id and initial_messages is None:
+                check_trace = await store.get_trace(current_trace_id)
+                if check_trace and check_trace.status in ("completed", "failed"):
+                    if check_trace.status == "completed":
+                        print(f"\n[Trace] ✅ 已完成")
+                        print(f"  - Total messages: {check_trace.total_messages}")
+                        print(f"  - Total cost: ${check_trace.total_cost:.4f}")
+                    else:
+                        print(f"\n[Trace] ❌ 已失败: {check_trace.error_message}")
+                    current_sequence = check_trace.head_sequence
+
+                    menu_result = await show_interactive_menu(
+                        runner, current_trace_id, current_sequence, store
+                    )
+
+                    if menu_result["action"] == "stop":
+                        break
+                    elif menu_result["action"] == "continue":
+                        new_messages = menu_result.get("messages", [])
+                        if new_messages:
+                            initial_messages = new_messages
+                            config.after_sequence = menu_result.get("after_sequence")
+                        else:
+                            # 无新消息:对 failed trace 意味着重试,对 completed 意味着继续
+                            initial_messages = []
+                            config.after_sequence = None
+                        continue
+                    break
+
+                # 对 stopped/running 等非终态的 trace,直接续跑
+                initial_messages = []
+
+            print(f"{'▶️ 开始执行...' if not current_trace_id else '▶️ 继续执行...'}")
+
+            # 执行 Agent
+            paused = False
+            try:
+                async for item in runner.run(messages=initial_messages, config=config):
+                    # 检查用户中断
+                    cmd = check_stdin()
+                    if cmd == 'pause':
+                        # 暂停执行
+                        print("\n⏸️ 正在暂停执行...")
+                        if current_trace_id:
+                            await runner.stop(current_trace_id)
+
+                        # 等待一小段时间让 runner 处理 stop 信号
+                        await asyncio.sleep(0.5)
+
+                        # 显示交互菜单
+                        menu_result = await show_interactive_menu(
+                            runner, current_trace_id, current_sequence, store
+                        )
+
+                        if menu_result["action"] == "stop":
+                            should_exit = True
+                            paused = True
+                            break
+                        elif menu_result["action"] == "continue":
+                            # 检查是否有新消息需要插入
+                            new_messages = menu_result.get("messages", [])
+                            if new_messages:
+                                # 有干预消息,需要重新启动循环
+                                initial_messages = new_messages
+                                after_seq = menu_result.get("after_sequence")
+                                if after_seq is not None:
+                                    config.after_sequence = after_seq
+                                paused = True
+                                break
+                            else:
+                                # 没有新消息,需要重启执行
+                                initial_messages = []
+                                config.after_sequence = None
+                                paused = True
+                                break
+
+                    elif cmd == 'quit':
+                        print("\n🛑 用户请求停止...")
+                        if current_trace_id:
+                            await runner.stop(current_trace_id)
+                        should_exit = True
+                        break
+
+                    # 处理 Trace 对象(整体状态变化)
+                    if isinstance(item, Trace):
+                        current_trace_id = item.trace_id
+                        if item.status == "running":
+                            print(f"[Trace] 开始: {item.trace_id[:8]}...")
+                        elif item.status == "completed":
+                            print(f"\n[Trace] ✅ 完成")
+                            print(f"  - Total messages: {item.total_messages}")
+                            print(f"  - Total tokens: {item.total_tokens}")
+                            print(f"  - Total cost: ${item.total_cost:.4f}")
+                        elif item.status == "failed":
+                            print(f"\n[Trace] ❌ 失败: {item.error_message}")
+                        elif item.status == "stopped":
+                            print(f"\n[Trace] ⏸️ 已停止")
+
+                    # 处理 Message 对象(执行过程)
+                    elif isinstance(item, Message):
+                        current_sequence = item.sequence
+
+                        if item.role == "assistant":
+                            content = item.content
+                            if isinstance(content, dict):
+                                text = content.get("text", "")
+                                tool_calls = content.get("tool_calls")
+
+                                if text and not tool_calls:
+                                    # 纯文本回复(最终响应)
+                                    final_response = text
+                                    print(f"\n[Response] Agent 回复:")
+                                    print(text)
+                                elif text:
+                                    preview = text[:150] + "..." if len(text) > 150 else text
+                                    print(f"[Assistant] {preview}")
+
+                                if tool_calls:
+                                    for tc in tool_calls:
+                                        tool_name = tc.get("function", {}).get("name", "unknown")
+                                        print(f"[Tool Call] 🛠️  {tool_name}")
+
+                        elif item.role == "tool":
+                            content = item.content
+                            if isinstance(content, dict):
+                                tool_name = content.get("tool_name", "unknown")
+                                print(f"[Tool Result] ✅ {tool_name}")
+                            if item.description:
+                                desc = item.description[:80] if len(item.description) > 80 else item.description
+                                print(f"  {desc}...")
+
+            except Exception as e:
+                print(f"\n执行出错: {e}")
+                import traceback
+                traceback.print_exc()
+
+            # paused → 菜单已在暂停时内联显示过
+            if paused:
+                if should_exit:
+                    break
+                continue
+
+            # quit → 直接退出
+            if should_exit:
+                break
+
+            # Runner 退出(完成/失败/停止/异常)→ 显示交互菜单
+            if current_trace_id:
+                menu_result = await show_interactive_menu(
+                    runner, current_trace_id, current_sequence, store
+                )
+
+                if menu_result["action"] == "stop":
+                    break
+                elif menu_result["action"] == "continue":
+                    new_messages = menu_result.get("messages", [])
+                    if new_messages:
+                        initial_messages = new_messages
+                        config.after_sequence = menu_result.get("after_sequence")
+                    else:
+                        initial_messages = []
+                        config.after_sequence = None
+                    continue
+            break
+
+    except KeyboardInterrupt:
+        print("\n\n用户中断 (Ctrl+C)")
+        if current_trace_id:
+            await runner.stop(current_trace_id)
+
+    # 6. 输出结果
+    if final_response:
+        print()
+        print("=" * 60)
+        print("Agent 响应:")
+        print("=" * 60)
+        print(final_response)
+        print("=" * 60)
+        print()
+
+        # 7. 保存结果
+        output_file = output_dir / "result.txt"
+        with open(output_file, 'w', encoding='utf-8') as f:
+            f.write(final_response)
+
+        print(f"✓ 结果已保存到: {output_file}")
+        print()
+
+    # 可视化提示
+    if current_trace_id:
+        print("=" * 60)
+        print("可视化 Step Tree:")
+        print("=" * 60)
+        print("1. 启动 API Server:")
+        print("   python3 api_server.py")
+        print()
+        print("2. 浏览器访问:")
+        print("   http://localhost:8000/api/traces")
+        print()
+        print(f"3. Trace ID: {current_trace_id}")
+        print("=" * 60)
+
+
+if __name__ == "__main__":
+    asyncio.run(main())

+ 14 - 0
examples/tool_research/test.prompt

@@ -0,0 +1,14 @@
+---
+model: sonnet-4.6
+temperature: 0.3
+---
+
+$system$
+你是最顶尖的AI助手,可以拆分并调用工具逐步解决复杂问题。
+
+$user$
+帮我调研一下现在有哪些优质的agent skills以及mcp;以及可以通过哪些渠道发现/评估/获取它们。
+- 要有可靠的依据(例如行业大牛的博客、榜单等等),要尽量全面,而不是随便选择一个平台深入
+- 我希望你在需要时能够打开浏览器做调研,并将调研收获在 examples/tool_research/knowledge/ 目录下组织维护好,注意保留原始来源的URL
+- 调研过程中注意记录,以免意外中止时候失去所有进展;过程结果和最终结果要清晰整理好
+- **禁止降级解决**:不允许为了方便而使用效果显著更差的简单方案。你应该拆解子目标逐步完成,或者转交给sub agent解决某一项适合拆分的子任务