| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- """
- WebFetch Tool - 通过 Bun 适配器调用 OpenCode
- 网页抓取功能,包括 HTML 转 Markdown、内容提取等复杂逻辑。
- """
- from typing import Optional
- from agent.tools import tool, ToolResult, ToolContext
- from agent.tools.adapters.opencode_bun_adapter import OpenCodeBunAdapter
- # 创建适配器实例
- _adapter = None
- def _get_adapter():
- global _adapter
- if _adapter is None:
- _adapter = OpenCodeBunAdapter()
- return _adapter
- @tool(description="抓取网页内容并转换为 Markdown 格式")
- async def webfetch(
- url: str,
- format: str = "markdown",
- timeout: Optional[int] = None,
- uid: str = "",
- context: Optional[ToolContext] = None
- ) -> ToolResult:
- """
- 抓取网页内容
- 使用 OpenCode 的 webfetch 工具(通过 Bun 适配器调用)。
- 包含 HTML 到 Markdown 转换、内容清理等功能。
- Args:
- url: 网页 URL
- format: 输出格式(markdown, text, html),默认 markdown
- timeout: 超时时间(秒)
- uid: 用户 ID
- context: 工具上下文
- Returns:
- ToolResult: 网页内容
- """
- adapter = _get_adapter()
- args = {
- "url": url,
- "format": format,
- }
- if timeout is not None:
- args["timeout"] = timeout
- return await adapter.adapt_execute(
- tool_name="webfetch",
- args=args,
- context=context
- )
|