news 2026/9/18 8:23:16

OpenResearch如何把Claude Code变成研究智能体?harness机制全解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenResearch如何把Claude Code变成研究智能体?harness机制全解

OpenResearch如何把Claude Code变成研究智能体?harness机制全解

【免费下载链接】OpenResearchTurn your coding agents into research agents项目地址: https://gitcode.com/GitHub_Trending/op/OpenResearch

OpenResearch 是一个本地优先的研究智能体工作区,它的核心 trick 是一层harness 兼容层:通过统一的Harness抽象,把 Claude Code、Codex、OpenCode、Cursor 这些编码智能体(coding agent)改造成能读文献、提假设、跑实验、产出研究证据的研究智能体(research agent)。本文带你从源码角度拆解这套 harness 机制的完整设计。

为什么编码智能体"变不成"研究智能体?

编码智能体擅长写代码,但做研究还需要一套完整的工作流:创建实验基线 → 分支变体 → 并行跑实验 → 分析证据 → 决定下一步。直接让 Claude Code 裸跑,会出现乱改运行命令、用环境变量扫超参、把结论建立在不可复现的结果上等问题。

OpenResearch 的解法分两层:

  1. harness 层:把各家智能体的 CLI 封装成统一接口,稳定地驱动它们完成一轮轮会话;
  2. skill 层:把研究方法论文档"注入"智能体,让它遵守实验树的纪律。

harness 是什么:一个 trait + 一个注册表

整套机制的核心在 src/local/harness/mod.rs:一个Harnesstrait,四个智能体各一个实现文件:

智能体实现文件说明
Claude Codeclaude.rs常驻子进程 + stream-json 事件流
Codexcodex.rsapp-server 协议 + 传统 exec 双路径
OpenCodeopencode.rsserve 常驻进程 + HTTP 内联应答
Cursorcursor.rs轻量适配

所有消费方(会话调度、检测扫描、技能安装器)都只遍历同一个注册表 registry():

新增一个 harness = 一个新文件里写一个impl Harness+ 注册表里加一行,其余代码零改动。

这就是"全解"里最值钱的设计:能力是可选的。每个 harness 最多提供三种能力,可以只实现其中一部分:

  • detection(检测):CLI 装没装、登没登录、账号和模型有哪些 → 驱动orx up界面里的智能体选择器;
  • chat(驱动会话)run_turn拉起 CLI、把各家原生事件流归一化成统一的 wire parts;
  • skill install(技能安装):往~/.claude/skills/orx等位置写入技能 shim,让智能体自动发现orx

检测:先确认 Claude Code"可用"再开口

检测逻辑在 detect.rs,遵循"只读、尽力而为"原则——文件缺失或 JSON 解析失败只算"未检测到",绝不报错。以 Claude 为例(claude.rs):

  1. claude --version探针:10 秒超时,从输出里解析出版本号(必须含数字才算真的版本行);
  2. claude auth status --json是登录状态的唯一事实来源,本地配置只贡献展示信息;
  3. 认证状态归一为四档:Ready/NeedsLogin/Unknown/Unsupported,例如 OAuth 登录但 CLI 版本过旧(< 2.1.211)会降级为Unsupported,避免拉起一个会崩的子进程。

检测结果还会带上模型目录和每个模型支持的推理档位(detect.rs),供前端渲染模型选择器——选哪个模型、给多高的"思考力度",都由检测到的真实能力决定,而不是硬编码。

一轮对话如何跑起来:run_turn 全链路

Claude Code 的适配是四种里最典型的(claude.rs 模块注释):

  • 每个会话一个常驻子进程claude --print --input-format stream-json,stdin 保持打开,多轮对话复用同一个进程,省掉了每轮重新冷启动的开销;
  • 事件流边界识别:每一轮从--replay-user-messages回显的那条用户消息开始,到result事件结束,中间的工具调用、文本全部归一化成 wire parts 推给前端;
  • 配置变更或崩溃时自动--resume:权限模式、effort 档位变化,或进程挂了,就带着稳定session_id重新拉起,会话不断。

围绕这条链路还有三道"保命"设计:

机制位置作用
看门狗mod.rs一轮 30 分钟无任何事件视为卡死,主动中断而不是永远转圈
退避重试mod.rs最多 3 次重试,指数退避 + 确定性抖动,总预算 15 秒
恢复快照mod.rs原生会话丢失时,用本地存档的对话快照作为上下文续接,并提示"不要重复已完成的工具操作"

权限模式与 Plan 门禁

各家智能体的权限词汇("总是询问 / 自动接受 / 完全访问"……)被统一成一个内部枚举,再映射回各自的原生参数,定义见 options.rs。

Claude 的Plan 模式有个隐蔽的坑:headless 下--permission-mode plan会把任意Bash(orx …)当写操作拦截,而研究智能体恰恰要靠只读orx runsorx logsgit show来"看证据、做计划"。OpenResearch 的解法是一个PreToolUse钩子 orx plan-gate:只读命令放行,写操作保持拦截——规划可以随便看,动手必须等你批准。分类采用严格的白名单策略,未知命令一律视为"不读"。

灵魂一步:orx install-skills 注入研究方法

harness 解决了"怎么驱动",skill 解决"怎么研究"。orx install-skills会把一个 SKILL.md shim 写入智能体的技能目录(如~/.claude/skills/orx/),shim 本身不含操作细节,只告诉智能体一句话:每个会话开始时先运行orx skill加载随 CLI 打包的最新操作手册

真正的研究纪律写在 SKILL.md 的四条"铁律"里:

  1. 节点一经实验回答就永久冻结——想试新想法,给节点分支一个子节点;
  2. 运行命令和环境是固定契约——所有节点跑同一条命令;
  3. 变代码,不变命令里的旋钮——超参写进代码/配置,按变体分支;
  4. 树向下长,不横着铺——一轮内适度展开,然后沿着赢家往下走。

配套的模块化技能文档(如 orx-experiment-tree、orx-compute、orx-evidence)按orx skill <name>按需加载,覆盖实验树、多后端算力(Slurm / K8s / Ray / Modal / SSH)、证据分析等主题。

容易被忽略的细节

  • 自动标题:新会话用一个廉价的"一次性子请求"(one_shot,无工具、30 秒超时)给会话起 6 词以内的短标题,并对模型爱加引号、尾句号的习惯做了防御性清洗(title.rs);
  • 引导(steering):支持运行中向智能体插话的 harness 会在 UI 上开放"转向"输入,不支持的则排队到本轮结束(mod.rs);
  • 交互提示回流:Claude 的提问会让本轮结束、答案以--resume新消息续接;OpenCode 则在活协议上内联应答,两条路径统一收敛在resume_from_prompt接口后(mod.rs)。

上手三步

  1. 从官方渠道安装 CLI(macOS / Linux 一条安装脚本即可),Windows 用 beta 包 + Git for Windows(见 docs/windows.md);
  2. 终端运行orx up,浏览器打开本地面板127.0.0.1:4791,harness 选择器会显示已检测到的 Claude Code 登录状态与模型;
  3. 运行orx install-skills把研究技能注入你的编码智能体,之后在面板里给一个研究方向,智能体就会按实验树纪律自主迭代。

小结

OpenResearch 的 harness 机制本质上是把"驱动一个编码智能体"这件事抽象成检测、会话、技能三个正交能力,用注册表 + trait 让四个智能体平权接入;再叠加权限门禁、看门狗、重试与恢复快照这些工程化的"保险丝",最后靠 skill 注入研究方法——于是 Claude Code 就从"帮你写代码"升级成了"帮你做研究"。想深入源码,建议从 src/local/harness/mod.rs 的模块注释读起,它几乎是整套机制的导读。

【免费下载链接】OpenResearchTurn your coding agents into research agents项目地址: https://gitcode.com/GitHub_Trending/op/OpenResearch

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/18 8:20:59

新概念英语第45课《老板的信》职场英语解析

1. 新概念英语第一册第45课《老板的信》深度解析作为一名英语教育从业者&#xff0c;我经常遇到学生反映新概念英语教材中的某些课文看似简单&#xff0c;实则暗藏许多值得深挖的语言点。今天我们就来详细拆解第45课《老板的信》&#xff0c;这课虽然篇幅短小&#xff0c;却包含…

作者头像 李华
网站建设 2026/9/18 8:19:31

长按开关机芯片选型实战:五大关键参数全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/18 8:19:09

MySQL 8.0安装配置、IDEA/Navicat连接与实体类生成实战

MySQL 环境搭建这件事&#xff0c;说简单也简单&#xff0c;说折磨人也真折磨人——我见过太多人在新电脑上装 MySQL 8.0&#xff0c;装完之后 IDEA 连不上、Navicat 报时区错误、建表时字段类型选错导致后面改表改到崩溃。这篇就把 MySQL 的安装配置、IDEA 连接、Navicat 连接…

作者头像 李华
网站建设 2026/9/18 8:18:06

2026年家用投影仪选购指南与技术趋势解析

1. 2026年家用投影仪市场全景扫描投影仪行业在2023-2026年间经历了三次技术迭代浪潮。最显著的变化是LED光源亮度突破3000 ANSI流明大关&#xff0c;三色激光技术成本下降40%&#xff0c;而4K分辨率已成为2000元价位段的标配。我拆解过市面上37款主流机型后发现&#xff0c;202…

作者头像 李华
网站建设 2026/9/18 8:16:59

RHEL 8上运行Claude Code:安装、VSCode集成与排坑实录

"Claude-Red"这个名字听起来像个实验代号&#xff0c;但它其实解决了一个非常具体的问题&#xff1a;把 Claude Code 这套 AI 编程助手&#xff0c;完整地跑在 Red Hat Enterprise Linux 8 上&#xff0c;并且和 VSCode 配合得足够顺手。我前后折腾了小一周&#xff…

作者头像 李华
网站建设 2026/9/18 8:16:20

Surface Pro 7 常见问题解决:从驱动固件到电池充电的完整排查指南

1. 写在前面&#xff1a;这机器我用了一年多&#xff0c;踩过的坑都在这里了如果你正在用 Surface Pro 7&#xff0c;或者正考虑入手一台二手的&#xff0c;那这篇内容你大概率用得上。我手头这台 i5/8GB/256GB 版本用了将近两年&#xff0c;日常办公、轻度剪辑、偶尔写代码都在…

作者头像 李华