ARTICLE DETAIL

资讯详情

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

OpenHuman RLM 语言工作流交付实战:Phase 7 双仓库双 PR 的落地、合并顺序与回滚策略

OpenHuman RLM 语言工作流交付实战:Phase 7 双仓库双 PR 的落地、合并顺序与回滚策略 OpenHuman RLM 语言工作流交付实战Phase 7 双仓库双 PR 的落地、合并顺序与回滚策略【免费下载链接】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 的rlm-workflowsRhai/.ragsh语言工作流规划以七个阶段推进其中 phase-7-delivery.md 是该功能从代码走向主干的最后一棒它没有新增业务逻辑而是把前六个阶段的成果组织成「两个仓库、两个 PR」的交付剧本——一个先行的、聚焦的 TinyAgents 宿主嵌入 PR加上一个提交序列精心编排的巨型 OpenHuman PR。本文以该交付文档为主体结合 rlm-workflows 规划总览与 Phase 16 的上下文系统讲解功能切分的理由、PR 体内提交序列与依赖声明、子模块指针锁定与合并顺序、三层回滚手段以及明确划出 v1 范围的后续工作帮助你在做多仓库协作功能落地时直接复用这套「小依赖 PR 先行 大宿主 PR 一体化交付 暗特性回滚」的工程打法。一、交付背景一个功能两个仓库要理解 Phase 7 的交付形态必须先看清功能本身的落点。按 rlm-workflows 总览 的设计OpenHuman 希望把 TinyAgents 的 Rhai 版 REPL 语言.ragsh/ RLM / CodeAct 面受vendor/tinyagents内replcargo 特性门控暴露为 Rust core 中一等公民rlm工具让编排 agent 能自己写工作流脚本对子代理扇出、批量工具/模型调用、循环、条件判断并确定性执行。关键约束是改动天然落在两个代码仓库上仓库形态改动性质交付分支tinyhumansai/tinyagentsOpenHuman 的 git submodulevendor/tinyagents宿主嵌入缺口外部取消、EventSink 上的实时能力调用事件、异步嵌入文档feat/repl-host-embeddingtinyhumansai/openhuman主仓库启用repl特性、新增src/openhuman/rlm/域、rlm工具、提示词/文档、测试feat/rlm-language-workflows因此 Phase 7 的交付策略分两步走先用一个体量小、职责纯的 PR 解决依赖仓库的缺口并落地合并再把主仓库的所有改动收敛进一个巨型 PR。两个 PR 之间的耦合点只有一个——submodule 指针的推进pin 到合并后的 commit。需要注意的实现事实该交付文档描述的是一个待执行的实施计划。从当前仓库状态看Cargo.toml 中关于 tinyagents 依赖的长注释表明tinyagents 仓库此后已演化为tinyagents-harness/tinyagents-graph/tinyagents-language/tinyagents-registry/tinyagents-session等多个聚焦 crate 的 workspace其中也提示「tinyagentsrepl门控 rhai 用于flows构建」的旧注释已过时。因此真正实施时需按当时 vendor 子模块的最新依赖结构核对repl特性所在 crate 与提交指针规划文档描述的目录与函数签名应作为设计意图而非逐字现状。二、第一步先交付 TinyAgents 小 PRfeat/repl-host-embeddingPhase 7.1 规定 tinyagents 侧的改动单独成 PR、率先合并原因在于它的定位是「宿主嵌入缺口」只能由被嵌入方补齐OpenHuman 侧无法 workaround仓库tinyhumansai/tinyagents分支feat/repl-host-embedding基于357bcc8submodule 当前锁定的 commit创建内容对应 Phase 2 清单即外部取消标志ReplCancelFlag、EventSink上的实时能力调用事件、异步嵌入文档与配套测试三块并按 tinyagents 仓库自身的提交规范拆成小而聚焦的 commit约束tinyagents 的工程约定是行为改动必须随附测试、不推迟测试所以该 PR 不采用 OpenHuman 侧的「测试后补」节奏。对开发主线的关键保证互不阻塞文档强调在 tinyagents PR 合入之前OpenHuman 的开发照常进行、不受任何阻塞。其机制是根 Cargo.toml 中 tinyagents 依赖通过[patch]/ path 指向vendor/tinyagents本地 submodule 检出本地ReplCancelFlag、实时事件等改动只要在本地 submodule 检出中生效主仓库的开发即可立刻联调。这就把「跨仓库功能交付」解耦为「依赖是否合并」与「本地能否联调」两个正交问题——上游合并慢只影响最后一步指针锁定不影响功能研发节奏。三、第二步OpenHuman 巨型 PR 的编排feat/rlm-language-workflows3.1 分支与提交流向主仓库侧tinyhumansai/openhuman的分支feat/rlm-language-workflows从upstream/main切出推送到 forksenamakel/openhuman最终以--head senamakel:feat/rlm-language-workflows向 upstream 发起 PR。这一「fork 指定 head」的流程保证 PR 可被 CI 完整跑通同时把 branch 的所有权留在贡献者 fork 中。3.2 一个 PR十个精心排序的 commit这是整个交付文档最有实操借鉴价值的部分巨型 PR 不是一大坨 diff而是一个相互衔接的 commit 序列每个 commit 恰好对应前面一个 phase 的可独立评审单元#Commit 主题承载内容对应阶段1docs(plans)提交整个 rlm-workflows 规划文档目录2chore(deps)为 tinyagents 依赖启用repl特性3feat(rlm)类型 策略映射Phase 3 的types.rs/policy.rs4feat(rlm)能力桥bridge.rsOpenHuman Tool/SubAgent/Provider → tinyagentsCapabilityRegistry5feat(rlm)会话管理器sessions.rsLRU TTL busy 语义6feat(rlm)opsops.rseval_cell编排、cancel、事件转发7feat(rlm)rlm工具本身 工具注册 prompt/about_app 文档Phase 48fix/feat(rlm)加固 pass错误分类 分层超时Phase 59test(rlm)Phase 6 测试套件测试刻意最后补写10chore(vendor)把 tinyagents submodule 指针 bump 到已合并的 Phase 2 commit第 10 步存在明确的条件分支若 tinyagents PR 已经合入就 pin 到合并 commit若尚未合入则 openhuman PR 暂时锁定分支头并在 PR body 中显式注明该依赖关系。这种「指针锁定目标可平移」的做法让两个 PR 可以并行演进而不互相死锁。3.3 PR body 必须携带的信息文档对巨型 PR 的 description 给出了明确的信息清单这也是跨仓库功能评审的沟通模板架构摘要——从 rlm-workflows README 提炼的总体设计双仓库依赖关系——为什么必须改 tinyagents、两个 PR 的先后关系运行过的命令清单——可复现的验证步骤覆盖率数字——证明达到 ≥80% changed-line 的合入门槛显式声明测试时序——测试按特性 brief 的要求放在最后一个阶段补写见 Phase 6 说明。其中覆盖率门禁在仓库中有真实对应工具链例如 scripts/ci/rust-coverage-changed.sh、scripts/ci/vitest-changed-coverage.sh 等即为 Rust / Vitest 侧 changed-line 覆盖率检查脚本。四、合并顺序与风险控制Phase 7.34.1 严格的三步合并序列① tinyagents PR 合入 → 在 tinyagents 侧 retag / pin 提交 ② openhuman PR 更新 submodule 指针 commit → CI 全量流水线重新运行 ③ 验证通过后合入 openhuman 巨型 PRtinyagents 必须先合并是硬性前提主仓库 PR 的最后一个 commitsubmodule bump依赖上游的合并结果CI 全量 lane 在指针更新后必须重跑确保锁定的是真实绿测提交而非分支移动中的目标。4.2 回滚故事暗特性dark feature三层保险这是 Phase 7.3 对「功能如何安全上线 / 出事如何快速下线」的回答核心设计是rlm功能的可见性完全由工具注册与否决定而注册是可单独逆转的最小动作默认暗态功能在代码合入后不自动生效——只有rlm工具真正注册到工具运行时模型才会看到并调用它双开关环境变量OPENHUMAN_RLM0作为 kill switch一键禁用自治层级为readonly的平台 tier 本就不注册该工具详见 Phase 4 的注册门控默认在supervised/full层级开启最小逆转面回滚时只需 revert 第 7 个 commit工具注册 commit即可禁用整个对外表面而无需触碰第 36 个 commit 承载的领域逻辑——域代码留在主干上继续演进功能开关与领域实现被刻意分离。这正是「gigantic PR 内 commit 序列」设计带来的运维红利每一层领域、桥接、注册面都有独立的可逆转单元紧急回滚不必回滚整条特性。4.3 兜底的测试与命令门禁交付文档没有单独开测试章节但 PR 合入前必须整体通过 Phase 6 定义的验证命令合入后同样用于 PR body 的「commands run」说明GGML_NATIVEOFF cargo check --manifest-path Cargo.toml pnpm debug rust rlm # 定向运行 rlm 领域测试 bash scripts/test-rust-with-mock.sh # 完整 rust 套件 pnpm typecheck pnpm lint # app 侧未改动但仍作为门禁 cd vendor/tinyagents cargo test --features repl对应的测试设计要点详见 Phase 6域内单测使用 tinyagents 测试桩ScriptedModel/FakeTool/StubAgent做到无网络、无真实 providerpolicy.rs断言超时被钳制在[1, 3600]、上限覆盖 ≤2× 默认值、readonly tier 拒绝构建策略sessions.rs覆盖 LRU 驱逐、忙会话返回类型化 busy 错误而非死锁、中毒会话丢弃不复用错误加固矩阵每个失败模式一行测试超时、LimitExceeded、未知工具名、cell 中途取消后会话仍可复用等。集成层面因rlm的scope()在 v1 是AgentOnly不走 RPC改为在 Rust 集成测试中装配含 RLM 工具的 turn harness驱动一次「模型调用rlm 扇出脚本」的脚本化回合断言AgentProgresssink 上出现进度事件且最终工具结果格式正确。五、v1 之外的后续项Phase 7.4Phase 7.4 用「显式 out-of-scope」清单避免范围蔓延每一行都标注了前置阻塞原因是评审时最容易产生分歧的地方提前划界非常关键后续工作期望能力v1 不做/被阻塞的原因图脚本执行graph_run执行编译后的图在脚本内真正跑通编译图依赖 tinyagents 在 REPL 背后实现 super-step 执行RPC/CLI 暴露 RLM 会话 专用 UI cell 时间线卡片会话可被外部控制、可视化v1 中scope() AgentOnly前端复用既有工具调用时间线卡片不加新 UI跨 core 重启的持久会话会话状态落盘、重启恢复v1 会话是内存态LRU 30 min 空闲 TTL 管理运行中 cell 的 stdout 流式回传边跑边看输出v1 中失败的eval_cell拿不到中途 stdout见 Phase 5 的部分结果说明已发生的能力调用可通过实时事件流感知六、沉淀这套交付剧本对多仓库功能的三个启示先小后大依赖先行宿主嵌入类缺口集中进一个小而聚焦的上游 PRsubmodule 指针则留到最后一步平移保证主仓库开发全程不被阻塞大 PR 内部按可逆转单元切 commit类型/策略、桥、会话、ops、工具、注册面各成一体——注册 commit 单独可 revert域逻辑与对外表面解耦让「巨大 diff」获得「小而精准的回滚面」把测试、覆盖率、命令清单、架构说明写进交付流程覆盖率≥80% changed-line 的门禁在合入前完成PR body 自带可复现命令与依赖关系说明评审者与后续维护者都能独立验证。如果你正在 OpenHuman 上跟进该功能规划入口 docs/plans/rlm-workflows/README.md前序可读 Phase 1 调研 至 Phase 6 测试Phase 7 就是这条链路的收官蓝图tinyagents 先行、openhuman 一体、暗特性上线、按 commit 回滚每一步都可执行、可验证、可回退。【免费下载链接】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),仅供参考
返回列表