尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

OpenHuman Researcher Agent 系统提示词解析:文档与网页爬虫的搜索—抓取研究循环

发布时间:2026/9/10 17:01:50

资讯中心
01
ARTICLE

OpenHuman Researcher Agent 系统提示词解析:文档与网页爬虫的搜索—抓取研究循环

OpenHuman Researcher Agent 系统提示词解析:文档与网页爬虫的搜索—抓取研究循环
OpenHuman Researcher Agent 系统提示词解析文档与网页爬虫的搜索—抓取研究循环【免费下载链接】openhumanOpenHuman is an open source personal AI for Mac, Windows and Linux — local-first memory, agent orchestration, and deep research.项目地址: https://gitcode.com/GitHub_Trending/op/openhuman导读本文围绕 OpenHuman 内置Researcherresearcher子代理的系统提示词展开逐条拆解其 Capabilities、Rules、Research Loop Contract、Output Contract 与 Long-horizon Artifacts 五段式设计并结合 agent.toml、graph.rs、prompt.rs 与底层web_search_tool/web_fetch工具实现说明该代理如何被设计成一个纯函数式的搜索—抓取专用研究单元。读完本文你将理解该提示词每一段的工程动机、与源码配置的对应关系以及它如何控制幻觉、压缩上下文与长程任务的手交接力。Researcher 在 OpenHuman 中的定位是任何需要查阅外部知识真实文档、API 签名、最新资料的任务由编排器orchestrator委托给该代理完成。它的座右铭是读真实文档不要猜——正是这条原则决定了它的工具白名单、输出契约与上下文省略策略。一、Researcher 的身份与能力声明提示词开篇两行即为代理定义身份You are theResearcheragent. You find accurate, up-to-date information.随后用一段Capabilities明确其全部能力边界——只有两个工具web_search_tool网络搜索用于定位最新信息源web_fetchHTTP 请求抓取文档页面正文。这份能力声明与 agent.toml 的[tools]白名单一一对应[tools] named [ # Keep the default researcher narrow: search to locate sources, fetch to read # selected pages. Deep Parallel, market, filesystem, and general HTTP/curl # tools belong to more specific agents so simple research tasks dont expand # into open-ended search loops. web_search_tool, web_fetch, ]配置注释解释了这种窄化的工程动机Deep Parallel、市场数据、文件系统以及通用 HTTP/curl 类工具被刻意排除在外归属到更专门的代理如code_executor、planner、presentation_agent等名下从而避免一次简单的研究任务膨胀成无休止的搜索循环open-ended search loop。工具白名单本身即是提示词约束的硬件级背书——模型即使被诱导也不会拿到白名单外的工具。值得注意的还有 prompt_tests.rs 中的回归测试assert!( !body.contains(file_read) !body.contains(file_write), researcher must not advertise workspace tools outside its searchfetch allowlist );该测试直接断言 Researcher 的系统提示词中绝不出现工作区文件读写工具的广告词从测试层面锁死搜索抓取专用的边界。二、五条行为规则反幻觉的硬约束提示词的Rules部分是该代理的核心行为准则Read real docs— 不猜测 API 签名或库的用法必须查证No hallucination— 找不到答案就明说绝不编造 URL 或 APICompress output— 将长文档蒸馏为密集、事实性的 Markdown 摘要Cite sources— 引用信息时必须附上 URL 或文件路径Stay focused— 只回答被问到的具体问题不扩散到边缘话题。这五条规则共同构成了防幻觉anti-hallucination的三道防线查证Read real docs、如实报告No hallucination、可追溯Cite sources。其中Stay focused与前文工具白名单的窄化意图一脉相承——既限制工具面也限制话题面确保子代理不喧宾夺主。从实现角度看这些规则并非空泛口号web_fetch工具本身带有安全与限额实现见下文工具纵深其响应前缀包含状态码与最终 URLfinal URL模型可以据此验证我真的读到了目标页面而不是被重定向到别处从而支撑 Cite sources 规则的可信度。三、Research Loop Contract搜索—抓取循环的收敛契约Research Loop Contract定义了 Researcher 的核心工作流——搜索与抓取如何编排、何时停止流程没有具体 URL 时先用web_search_tool定位候选来源再用web_fetch只读取回答问题所需的页面最小成本原则简单事实性问题一次聚焦搜索 一两个抓取源即可除非结果为空或互相矛盾收敛约束一旦获得有源依据的证据不得继续扩大范围、重复搜索或追逐支线权威优先优先抓取权威/一手来源而非大量二手摘要失败处理搜索或抓取失败时在Failed tool calls下如实返回发生了什么不得静默地用无关查询反复重试。这一契约实际上定义了一个带终止条件的迭代循环收敛条件 有 source-backed evidence终止条件 证据已足 或 明确的失败。它把 LLM 常见的过度搜索over-search行为通过显式指令约束掉使 Researcher 在max_iterations 10的预算内高效收尾。底层实现中这个循环由两个内置工具支撑。web_search_tool在 src/openhuman/search/tools/web_search.rs 中实现它基于服务端 Parallel 集成代理server-side Parallel integration proxy执行搜索并将结果属性归因到具体搜索引擎提供商managed provider默认标签为 ExaMANAGED_DEFAULT_PROVIDER。工具内置max_results与timeout_secs上限并且在每次调用前会校验会话 JWT 是否新鲜避免用过期令牌发请求、触发竞态式会话注销参见resolve_client对 #5873 的处理注释——这正是失败处理契约在实现层的具体体现宁可调用前刷新令牌也不让一次搜索因 401 意外撕毁整个会话。web_fetch在 src/openhuman/tools/impl/network/web_fetch.rs 中实现代码注释明确其定位web_fetchis the single-purpose GET and read primitive the agent reaches for when researching: returns the response body as text, capped, with a tiny preamble (status final URL).它与http_request完整的 method/header 表面和curl写入磁盘刻意区分是研究场景专用的获取即读原语返回正文纯文本、有大小上限、附带状态码与最终 URL 的前缀信息。抓取限额默认值取自HttpRequestConfig::default()max_bytes与timeout_secs并且对Some(0)这类陈旧/非法配置做了运行时钳制clamp并记录告警日志保证任何情况下抓取都不会瞬时失败或截断为 0 字节。四、Output Contract编排器可消费的紧凑综合Output Contract解决的是子代理与编排器之间的接口问题——Researcher 永远不能只留下工具调用或内部笔记就结束回合无论答案是否完整必须向编排器返回输出能回答时答案优先随后列出用到的 URL 列表不能回答时精确说明缺什么、试过什么绝不以纯工具调用或内部笔记收尾编排器需要一份可以继续传递或直接评估的紧凑综合compact synthesis。这个契约将 Researcher 明确定位为无状态的信息查询函数输入一个聚焦问题输出一个带来源引用的浓缩答案。答案前置lead with the answer的设计便于编排器直接透传或提炼而列出用到的 URL与 Rules 中的 Cite sources 互相呼应形成端到端的可追溯链条。从 prompt.rs 的实现看build()按固定顺序组装最终系统提示词先写入prompt.md原文ARCHETYPE通过include_str!编译期嵌入再追加用户文件渲染render_user_files与工具渲染render_tools——输出即模型实际看到的完整提示词运行期零后处理。这意味着上述所有契约都是提示词的有机组成部分而非运行器附加的硬编码行为。五、Long-horizon Artifacts长程任务的手交接力策略Long-horizon Artifacts是提示词中针对长程多轮任务的专门设计。Researcher 被明确为search-and-fetch only代理——它自己从不写文件但它要管理交接体积keep the handoff small答案来源优先把冗长档案long dossier直接粘贴进回复会在长程任务的后续每一步都消耗编排器的上下文窗口大综合外置若综合结果确实很大harness 会把它持久化到 action 目录下的outputs/文件夹交给编排器的只是一个路径 摘要abstract而非全文。回复的开头几行必须能独立充当该摘要委托工件回引如果委托任务给了你一个工件路径将该路径视为记录源source of record在回答中引用路径而非重新粘贴其内容。这条契约体现了 OpenHuman 对token 预算的工程化思考子代理的输出在长程任务中是上游上下文的输入输出越膨胀、后续每一步的推理成本越高。把大输出落盘 路径化而非直塞上下文是典型的上下文压缩策略——与仓库中 docs/plans/2026-08-31-prompt-token-budget.md 所讨论的提示词 token 预算控制方向一致。六、自定义图拓扑三段式研究执行流提示词定义的搜索—抓取循环在运行期由一段自定义图拓扑驱动。graph.rs 实现了 OpenHuman 中第一个AgentGraph::Custom拓扑其注释写道This graph owns the first per-agentAgentGraph::Customtopology: route the research task, execute the shared turn leaf, then finalize the result.图拓扑由三个阶段组成RESEARCHER_GRAPH_PHASESroute_research → run_research_turn → finalizeroute_research路由研究任务入口节点run_research_turn执行共享的子代理回合叶节点——调用subagent_runner::run_agent_turn_request_via_default_graph跑模型/工具循环finalize收尾结束节点。关键设计在于模型/工具循环本身复用了默认运行器的共享回合叶节点run_agent_turn_request_via_default_graph因此 transcript 持久化、进度事件、handoff 中间件与 usage 汇总usage rollup与默认运行器完全一致自定义的只是外层拓扑。run_researcher_graph还会挂载GraphTracingSink生成agent:researcher:{task_id}标签的追踪信息并在完成后记录visited阶段序列的 debug 日志。AgentGraph::custom的注册入口定义在 src/openhuman/agent/harness/agent_graph.rs。七、agent.toml 关键参数逐项解读agent.toml 是 Researcher 的注册清单各参数与提示词契约的对应关系如下参数值工程含义id/display_nameresearcher/Researcher注册 ID 与展示名delegate_nameresearch编排器委托子代理时使用的短名when_to_useWeb docs crawler…编排器的路由提示词任何需要查外部知识的任务temperature0.4偏低的采样温度抑制发散、倾向事实性输出max_iterations10模型/工具循环的最大迭代次数配合收敛契约iteration_policyextended扩展迭代策略IterationPolicy::Extended见 definition_part_01.rsmax_turn_output_tokens4096单回合输出 token 上限与压缩输出规则呼应max_result_chars8000结果字符上限sandbox_modenone不启用沙箱只读、无文件写入的纯函数代理omit_identity/omit_memory_context/omit_safety_preamble均true省略身份、记忆上下文与安全前导[model] hintburst模型选择提示短时爆发型算力偏好配置注释特别解释了omit_memory_context true的设计动机Researcher 是纯函数式的网页/文档专家研究任务由编排器直接传入不需要记忆树预取no eager memory pre-fetch——它不需要从长期记忆中取回任何东西这使它的上下文干净、成本低、延迟低也从根本上避免了记忆内容对事实性查询的干扰。八、在编排器中的使用方式在 OpenHuman 的子代理体系中Researcher 不是用户直接对话的对象而是编排器按需委托的研究后端。编排器在收到需要外部知识的问题时根据when_to_use描述与delegate_name research生成委托把聚焦的研究任务传给 Researcher并接收其按 Output Contract 返回的紧凑综合。这一点与提示词中的两条设计互为印证一是omit_memory_context true任务由编排器喂入Researcher 自己不需要记忆二是 Stay focused 规则只回答被问到的具体问题——两者共同保证 Researcher 对每次委托保持无状态、纯查询的语义使同一代理实例可以被安全地反复委托给不同任务。其他内置代理的注册清单可在 src/openhuman/agent/registry/agents/ 下查看如planner、code_executor、context_scout、presentation_agent等Researcher 的窄工具面与它们形成互补需要真实文档、实时信息时委托research需要执行代码、规划或展示时委托对应代理。九、总结一份把反幻觉落到工程细节的提示词把 Researcher 的提示词与其实现合在一起看可以提炼出 OpenHuman 设计专用研究子代理的完整方法论能力面收敛只有搜索抓取两个工具防止研究任务膨胀为开放循环行为规则显式化查证、不编造、压缩、引用、聚焦五条规则互为补充循环契约化搜索→抓取→收敛明确终止条件与失败上报方式输出接口化答案优先来源列表无答案时精确报缺保证编排器永远拿得到可消费的综合上下文节俭omit_memory_context、低 temperature、4096 token 输出上限、大输出落盘路径化多管齐下控制长程任务成本实现深度绑定工具白名单、迭代预算、图拓扑route_research → run_research_turn → finalize与提示词文本共同构成完整行为约束且由 prompt_tests.rs 的回归测试守护。这套模式对任何需要在多代理系统中加入事实查询型子代理的项目都具有直接借鉴价值——提示词不只是文字它是与配置、工具、图执行和测试共同作用的完整行为契约。关键源码索引系统提示词原文代理注册配置 agent.toml自定义图拓扑 graph.rs提示词组装器 prompt.rs提示词回归测试 prompt_tests.rsweb_search 工具实现web_fetch 工具实现AgentGraph::custom 注册入口【免费下载链接】openhumanOpenHuman is an open source personal AI for Mac, Windows and Linux — local-first memory, agent orchestration, and deep research.项目地址: https://gitcode.com/GitHub_Trending/op/openhuman创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。