ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Hive 框架模板实战拆解:Tech AI News Reporter——3 节点事件循环图驱动的新闻检索与 HTML 报告生成

Hive 框架模板实战拆解:Tech  AI News Reporter——3 节点事件循环图驱动的新闻检索与 HTML 报告生成 人工智能AI Agent多智能体MCP 服务工具调用浏览器控制【免费下载链接】hiveMulti-Agent Harness for Production AI项目地址https://gitcode.com/gh_mirrors/hive48/hive点击查看免费下载导读本文以仓库 examples/templates/tech_news_reporter 官方模板为对象逐层拆解一个多节点Multi-node智能体如何利用 Hive 框架的图编排能力实现用户交互 → 联网检索 → HTML 报告交付的完整闭环。读完本文你将掌握NodeSpec/EdgeSpec/Goal的声明方式、event_loop节点的人机交互模式ask_user/set_output、Web 工具与 MCP 服务器的接入方法以及成功判据Success Criteria与硬约束Constraints的工程化表达——这套骨架可直接迁移到任何检索 → 整理 → 输出类 Agent 上。模板概览这个模板解决什么问题Tech AI News Reporter是 Hive 仓库examples/templates/目录下的一组可复制智能体模板之一同目录还包含deep_research_agent、sdr_agent、job_hunter等。其定位非常明确从 Web 检索最新科技与 AI 新闻提炼关键故事并生成一份组织良好的结构化报告供用户阅读。模板元信息来自 README.md 与 agent.json属性值版本1.0.0类型Multi-node agent多节点智能体创建时间2026-02-06图 IDtech_news_reporter-graph目标 IDtech-news-report入口节点intake终止节点compile-report节点数 / 边数3 / 2模板目录结构当前仓库实际内容examples/templates/tech_news_reporter/ ├── README.md # 本文主体对应的说明文档 ├── agent.json # 图、节点、边、目标、工具的 JSON 声明可被加载器消费 ├── agent.py # 用 Python 代码构建同一套图Goal / NodeSpec / EdgeSpec ├── config.py # RuntimeConfig 与 AgentMetadataintro_message 等 ├── flowchart.json # 流程图元数据节点形状/配色、original_draft ├── mcp_servers.json # hive_tools MCP 服务器声明web_search 等工具来源 ├── __main__.py # Click CLIrun / tui / info / validate / shell ├── __init__.py # 包导出default_agent、goal、nodes、edges └── nodes/__init__.py # 三个节点的 NodeSpec system prompt值得注意的一点是同一份图结构在仓库中存在 JSON 声明agent.json与 Python 代码声明agent.py两套表述。前者便于加载器如AgentLoader直接消费后者则用于TechNewsReporterAgent类在运行时构建GraphSpec交给Orchestrator执行二者互为印证。架构intake → research → compile-report执行流程模板的执行流是一条无分支的三节点管道intake → research → compile-report数据在这条管道中以输出键output_keys→ 输入键input_keys的方式逐级传递数据键生产节点消费节点内容research_briefintakeresearch依据用户偏好生成的检索需求描述articles_dataresearchcompile-report文章列表 JSON标题/来源/URL/日期/摘要/主题report_filecompile-report—生成的 HTML 报告文件名图声明与关键参数在 agent.py 的_build_graph()中图通过GraphSpec声明该模型定义于 core/framework/orchestrator/edge.pyentry_node intake、entry_points {start: intake}运行入口从intake开始terminal_nodes [compile-report]图在compile-report节点结束后视为完成pause_nodes []无需要暂停等待的节点交互通过intake的client_facing机制实现loop_configmax_iterations50、max_tool_calls_per_turn30、max_history_tokens32000约束每个节点内 LLM 事件循环的迭代上限、单轮工具调用上限与历史 token 预算agent.json 中另有图级max_steps: 100与max_retries_per_node: 3的全局兜底。两条边均采用on_success条件、priority1agent.py 中通过EdgeSpec声明定义于 core/framework/orchestrator/edge.pyintake → researchcondition: on_success, priority1research → compile-reportcondition: on_success, priority1on_success意味着只有上游节点成功执行输出通过验证后下游节点才会被触发priority1表示在存在多条可选后继时该边拥有最高优先级。当前模板是线性管道这两条边直接定义了唯一的执行次序。节点 1intake——入口交互与需求澄清intake是模板中**唯一面向客户端client_facing: true**的节点agent.json 与 nodes/init.py 一致节点类型为event_loop即由 LLM 驱动的循环执行节点。其职责与提示词行为来自 nodes/init.py 的intake_node问候用户并询问关注点通用科技/AI 汇总、特定主题LLM、机器人、初创、网络安全、半导体等、或特定公司/产品调用ask_user()阻塞等待用户输入这正是blocks for user input的体现用户回复后调用set_output(research_brief, ...)将用户偏好翻译成下游可执行的检索指令若用户只要通用汇总则写入默认值General tech and AI news roundup covering the most notable stories from the past week。从节点字段看NodeSpec定义于 core/framework/orchestrator/node.pyinput_keys[]入口节点不消费任何上游数据output_keys[research_brief]唯一产出即检索需求client_facingTrue允许与用户直接交互max_retries3、max_validation_retries2、max_node_visits1单次图运行中该节点最多执行 1 次出错最多重试 3 次。节点 2research——多源检索与信息抽取research是模板的信息采集核心读取research_brief检索最近的科技/AI 新闻抓取排名靠前的文章抽取标题、摘要、来源、URL、主题等关键信息最终产出articles_dataJSON 字符串。工具配置上的一个关键差异值得注意后文源码与文档差异观察还会展开agent.json 声明该节点工具为[web_search, web_scrape]而当前 nodes/init.py 中的research_node仅挂载web_scrape其系统提示词也明确写道You do NOT have web search — instead, scrape news directly from known sites——即当前实现走直接抓取知名站点首页的免 API Key 路线。README 中则标注Tools: web_search, web_scrape三处来源存在版本差异。当前节点提示词内置的抓取目标无需搜索引擎即可工作的站点清单附抓取参数- https://news.ycombinator.comHacker News —— 技术社区热榜 - https://techcrunch.com初创、AI、科技产业 - https://www.theverge.com/tech消费科技、AI、政策 - https://arstechnica.com深度技术、科学、AI - https://www.technologyreview.comMIT —— AI、新兴技术关键操作约束直接影响抓取成功率建议照抄进你自己的 Agent 提示词首页抓取务必设置max_length5000与include_linkstrue避免把上下文撑爆、同时拿到标题与链接根据research_brief中的具体主题可追加主题分类页如 TechCrunch 的 artificial-intelligence 分类跨站点挑选 5–8 篇文章 URL优先满足相关性、时效性过去一周、话题多样性URL 必须逐字复制自抓取结果中的href字段禁止凭记忆重建或猜测单篇文章抓取用max_length3000链接验证闭环只有成功抓取返回内容的 URL 才被收录404/超时的文章要回到首页链接池换一篇并重新抓取验证分批次执行先抓首页、再抓文章、最后验证避免一次性全量抓取。articles_data的输出 JSON 结构模板约定的set_output格式{ articles: [ { title: Article Title, source: Source Name, url: https://..., date: 2026-02-05, summary: 2-3 sentence summary of the key points., topic: AI / Semiconductors / Startups / etc. } ], search_date: 2026-02-06, topics_covered: [AI, Semiconductors, ...] }该结构不仅是节点间的数据契约也直接对应后面Goal中的可度量指标文章数、主题数、URL 归因。节点 3compile-report——HTML 报告组装与交付compile-report读取articles_data将其组织成带样式的 HTML 报告并交付给用户产出report_file。节点提示词nodes/init.py 的compile_report_node给出了非常工程化的四步流程save_data创建文件骨架写入 DOCTYPE、内联 CSS、报告头标题 日期 N 篇文章 / M 个主题统计与目录TOC每个主题一个锚点a href#topic-{slug}每个主题分区各一次append_data按主题分组追加div classtopic-section内部每篇文章一个.article-card标题链接、来源、日期、摘要append_data追加页脚关闭/body/htmlserve_file_to_user交付返回可点击链接并打印file_path供用户随时重新打开最后set_output(report_file, tech_news_report.html)。提示词中特别强调禁止用单次save_data写入整个 HTML否则会超出输出 token 上限而失败必须分多段追加若append_data因截断失败则拆成更小片段重试data_dir由框架自动注入不要在工具调用中手写。报告采用的内联 CSS 定义了header、.toc、.topic-section、.article-card、.article-meta、.article-summary、.footer等类完整样式表位于 nodes/init.py 的compile_report_node提示词中约 20 行可直接复制到自己的模板里整体呈现为深蓝标题 卡片式文章列表的干净排版。差异提醒README 将compile-report标注为Client-facing: Yes (blocks for user input)但 agent.json 与 nodes/init.py 中该节点client_facing: false注释说明其自主工作、无需用户交互。文档与代码在此存在出入以代码为准更稳妥。目标判据与硬约束Goal Criteria 的工程化表达模板的价值不止于把流程跑通还在于把什么叫做好量化成了可判定的指标。目标定义同时存在于 agent.pyGoal/SuccessCriterion/Constraint模型定义于 core/framework/orchestrator/goal.py与 agent.json 的goal段。成功判据5 项权重合计 1.0判据 ID描述度量指标目标值权重sc-find-articles找到近期相关的科技/AI 新闻文章文章数量articles_sourced≥ 5 篇0.25sc-diverse-topics覆盖多元主题而非单一故事覆盖的主题数topics_covered≥ 3 个0.2sc-structured-report产出结构化、可读的报告分节 摘要 链接报告结构化report_structured是0.25sc-source-attribution每条新闻均带来源 URL带 URL 的故事占比100%0.15sc-deliver-report以可查看格式将报告交付用户报告已交付report_delivered是0.15值得注意的是 agent.json 中这 5 项判据默认met: false、目标status: draft——即模板在出厂时目标处于草稿态只有在真实运行时由运行时/评判逻辑逐项打标这为后续接入 LLM Judge 或结果校验器预留了接口。硬约束3 项均为 quality 类约束 ID描述类型类别c-no-fabrication绝不虚构新闻故事或 URLhardqualityc-source-attribution每条新闻必须带来源链接hardqualityc-recent-news只收录过去一周内的新闻hardquality这三条硬约束在三个层面被反复加固Goal 声明层agent.py 的Constraint(constraint_typehard)、JSON 层agent.json、提示词层research 节点要求 URL 必须来自成功抓取的href、compile-report 要求每个故事带链接。三层叠加从声明到执行端到端防幻觉hallucination——这是本模板最值得借鉴的设计把质量红线同时写进目标和提示词而不是只靠事后校验。工具与 MCP 配置4 个核心工具的底层实现模板的required_tools为web_search、web_scrape、save_data、serve_file_to_user。这些工具并非硬编码在模板中而是通过 MCP 接入模板的 mcp_servers.json 声明了一个名为hive_tools的 stdio 型 MCP 服务器{ hive_tools: { transport: stdio, command: uv, args: [run, python, mcp_server.py, --stdio], cwd: ../../../tools, description: hive_tools MCP server providing web_search, web_scrape, save_data, and serve_file_to_user } }该配置说明工具实现位于仓库根目录tools/下通过uv run python mcp_server.py --stdio以子进程方式提供。agent.py 的_setup()中ToolRegistry.load_mcp_config(mcp_config_path)在启动时加载该配置随后get_tools()/get_executor()将工具暴露给Orchestrator。各工具的源码级事实web_search实现于 tools/src/aden_tools/tools/web_search_tool/web_search_tool.py。支持双 Provider——Google Custom Search APIGOOGLE_API_KEYGOOGLE_CSE_ID与 Brave Search APIBRAVE_SEARCH_API_KEYproviderauto时先尝试 Brave 再回退 Google对 429 限流做指数退避重试time.sleep(2**attempt)对 401/403 返回明确的 API Key 错误信息。web_scrape实现于 tools/src/aden_tools/tools/web_scrape_tool/web_scrape_tool.py支持max_length、include_links等参数模板中分别以 5000/3000 与 true 使用。save_data / append_data / serve_file_to_user由hive_toolsMCP 服务器tools/mcp_server.py提供分别负责创建文件、分段追加内容、生成可点击的文件交付链接支持open_in_browser自动打开浏览器。凭证前提tools/mcp_server.py 的注释明确说明BRAVE_SEARCH_API_KEY是web_search工具的必需项并在 Agent 加载时校验。若你的环境只配置了抓取路线research 节点当前实现则无需搜索 API Key但若启用agent.json中声明的web_search能力则需要准备上述任一搜索 Provider 的凭证。运行与使用方式一模板自带 CLI当前仓库最直接的入口模板实现了 Click CLIexamples/templates/tech_news_reporter/main.py在仓库根目录下执行# 一键运行输出结果 JSONsuccess / steps_executed / output python -m examples.templates.tech_news_reporter run # 静默模式只输出结果 JSON python -m examples.templates.tech_news_reporter run --quiet # 显示执行细节 / 调试日志 python -m examples.templates.tech_news_reporter run --verbose python -m examples.templates.tech_news_reporter run --debug # 交互式 Shell无需 TUI逐轮获取新闻报告 python -m examples.templates.tech_news_reporter shell # TUI 仪表盘需 pip install textual python -m examples.templates.tech_news_reporter tui # 查看智能体信息节点、入口、终止节点、客户端节点 python -m examples.templates.tech_news_reporter info --json # 校验图结构检查边引用的节点、入口/终止节点是否存在 python -m examples.templates.tech_news_reporter validatevalidate命令背后是 agent.py 的TechNewsReporterAgent.validate()逐一校验每条边的 source/target、入口节点、终止节点、入口点映射是否指向真实存在的节点 ID全部通过才返回valid: true——这是新模板开发时非常实用的自检入口。方式二编程方式运行模板 README 给出了如下示例代码from framework.runner import AgentRunner # Load the agent runner AgentRunner.load(examples/templates/tech_news_reporter) # Run with input result await runner.run({input_key: value}) # Access results print(result.output) print(result.status)需要说明的是该示例代码中的framework.runner.AgentRunner与当前仓库源码存在出入——从当前仓库结构看core/framework/下并不存在runner.py模块。当前仓库实际可用的加载器是 core/framework/loader/agent_loader.py 的AgentLoader.load(agent_path, ...)它会扫描目标目录下的 worker 配置 JSON排除agent、flowchart、triggers等保留文件名并构建GraphSpec/Goal/NodeSpec。对于需要代码级定制如本模板的TechNewsReporterAgent更推荐直接使用模板自带的 CLI 或参考 agent.py 中start() → trigger_and_wait()的编排模式from examples.templates.tech_news_reporter import TechNewsReporterAgent agent TechNewsReporterAgent() await agent.start() result await agent.trigger_and_wait(start, {}) if result.success: print(result.output[report_file])运行前提与存储路径LLM 配置config.py 通过core/framework/config.py的RuntimeConfig提供默认模型、api_key、api_base可环境变量覆盖LiteLLMProvider负责统一接入MCP 工具运行前需保证tools/目录可按uv run启动uv.lock已随仓库提供存储运行时数据默认落在~/.hive/tech_news_reporter/agent.py 的_setup()TUI 模式则使用~/.hive/agents/tech_news_reporter/交付文件tech_news_report.html经serve_file_to_user生成可点击链接并默认在浏览器中打开。版本历史与源码/文档差异观察版本历史来自 README.md1.0.02026-02-06Initial release——3 个节点、2 条边目标为 Tech AI News Reporter。当前仓库中值得注意的文档与实现差异基于源码结构推断供二次开发时参考research 节点工具集README/agent.json 声明web_search web_scrape而 nodes/init.py 当前实现仅挂载web_scrape并走直接抓取知名站点路线。若你希望启用真正的搜索引擎需按agent.json补齐web_search工具与对应 API 凭证并相应调整 research 节点提示词。compile-report 的 client_facingREADME 标注为面向客户端而 agent.json 与节点代码均为false且 flowchart.json 的original_draft中该节点还曾包含append_data工具最终版节点代码保留了它——说明该模板在演进过程中经历了检索工具化与交互节点归属的调整。流程图元数据flowchart.json 记录了每个节点在可视化中的形状与配色intake为绿色 stadium 起始框、research为米色矩形 process、compile-report为红色 stadium 终止框并保留original_draft与flowchart_map可用于把该模板渲染成架构图。小结从模板到你自己的检索-报告 AgentTech AI News Reporter 是 Hive 框架中一条小而完整的参考实现它把图结构声明JSON Python 双轨、事件循环节点提示词、目标判据量化、硬约束三层加固、MCP 工具接入、CLI 运维入口全部串了起来。二次开发时只需替换三处即可复用整个骨架替换intake节点的research_brief语义与research节点的检索目标站点/查询策略调整Goal的成功判据指标与权重如把文章数 ≥5改为你的领域指标将compile-report的 HTML 模板替换为你需要的交付格式Markdown、邮件、表格均可注意沿用save_data 分段append_data的写盘策略。模板中的全部声明与实现均可直接在 examples/templates/tech_news_reporter 目录中继续查阅。赞分享人工智能AI Agent多智能体MCP 服务工具调用浏览器控制【免费下载链接】hiveMulti-Agent Harness for Production AI项目地址https://gitcode.com/gh_mirrors/hive48/hive点击查看免费下载相关推荐Hive 浏览器自动化实战指南用 hive-browser 在事件循环节点中驱动真实 ChromeHive 浏览器自动化实战指南用 hive browser 在事件循环节点中驱动真实 Chrome 导读 本文是 HiveMulti Agent Harne人工智能AI Agent多智能体MCP 服务工具调用浏览器控制Hive 多智能体框架 News Tool 实战指南多源新闻搜索与情感分析Hive 多智能体框架 News Tool 实战指南多源新闻搜索与情感分析 本指南系统讲解 HiveMulti Agent Harness for Prod人工智能AI Agent多智能体MCP 服务工具调用浏览器控制Dear ImGui Allegro 5 后端实战顶点索引配置、构建命令与事件驱动主循环拆解Dear ImGui Allegro 5 后端实战顶点索引配置、构建命令与事件驱动主循环拆解 本篇以 Dear ImGui 仓库自带的 Allegro 5 示UI组件前端桌面应用图形学上一篇PySD系统动力学建模技术指南Python生态中的模型转换与仿真架构解析下一篇终极指南如何免费绕过iPhone激活锁applera1n工具完整教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表