news 2026/9/17 3:06:53

LoopX TypeScript 平行迁移指南:控制平面 TS 侧测试如何组织

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LoopX TypeScript 平行迁移指南:控制平面 TS 侧测试如何组织

LoopX TypeScript 平行迁移指南:控制平面 TS 侧测试如何组织

【免费下载链接】loopxLong-horizon agent control plane for durable, governed work across Codex, Claude Code, and other harnesses.项目地址: https://gitcode.com/GitHub_Trending/lo/loopx

LoopX 是一个面向长程 Agent 的控制平面(control plane),负责在 Codex、Claude Code 等运行环境之上做持久化、可治理的工作调度。它的核心正在做TypeScript 平行迁移——把原本写在 Python 里的控制面事务逻辑,逐块替换为 TypeScript 实现。这篇文章讲清楚一件事:迁移期间,tests/control_plane_ts/ 这个 TS 侧测试目录是如何组织的,以及新手如何跑通它。

🧭 先理解"平行迁移":替换优先,不留双份语义

LoopX 的迁移策略在官方 RFC 中称为replacement-first(替换优先),规则很简单:

  • 每一块业务规则(如 Todo 事务、租约、配额结算)只能有一个语义 owner
  • TS 实现接管事务后,Python 侧对应的旧规则代码被删除,而不是"两份实现互相抄";
  • 兼容路径(如旧 Markdown 投影)可以保留,但不能静默形成第二套语义。

这意味着测试的核心职责是守住替换边界:旧实现的行为不能被悄悄改变,新实现的行为必须可回读、可重放。

迁移方向与当前检查点详见:docs/architecture/rfcs/typescript-control-plane-migration-v0.zh-CN.md。

📁 TS 侧代码与测试的物理布局

位置内容
loopx/control_plane/被迁移的控制面源码,.ts.py并存(如 turn_journal.ts)
tests/control_plane_ts/TS 侧全部测试,约 135 个文件
tsconfig.control-plane.json显式列出每一个纳入编译的.ts源文件与测试文件,strict模式全开
package.json提供test:control-plane等 npm 脚本,要求 Node ≥ 22.18
tests/control_plane/对应的 Python 侧测试,约 271 个文件,与 TS 侧互为镜像

一个值得注意的细节:tsconfig.control-plane.json 用白名单方式逐个列出被迁移的.ts文件,而不是用通配符。这样"迁移到哪一步"在配置层面就是可见的——没有列进去的模块还停留在 Python 侧。

🏷️ 命名约定:看文件名就知道测试类型

打开 tests/control_plane_ts/ 会看到大量文件,但它们遵循清晰的命名分层:

文件模式含义示例
*.test.ts单元测试主体,可被--test通配符直接发现turn_journal.test.ts
*_conformance.ts一致性套件:同一套用例喂给多个存储后端authority_store_conformance.ts
*_fixture.ts共享测试数据构造器,不是测试本身production_scale_coordination_fixture.ts
*_cli.test.ts走真实 CLI 入口的端到端测试scheduler_heartbeat_commit_cli.test.ts
*.integration.test.ts需要真实外部服务(如 PostgreSQL)的集成测试postgresql_authority_store.integration.test.ts
*_process.ts跨进程协作者脚本(被测试主文件拉起)sqlite_authority_process.ts
*_probe.ts只读探查探针,用于特征化历史行为turn_journal_characterization_probe.mjs

provider 套件是最典型的设计:同一个 authority 一致性套件,分别由 authority_store.test.ts(File 后端)、sqlite_authority_store.test.ts(SQLite 后端)、nokv_authority_store.test.ts(NoKV 后端)驱动,保证不同存储后端的逻辑头(logical head)与事件轨迹完全一致。

▶️ 如何运行 TS 侧测试

不需要安装任何测试框架——LoopX 直接使用Node.js 原生测试运行器node:test)加--experimental-strip-types直接运行.ts文件。先克隆仓库:

git clone https://gitcode.com/GitHub_Trending/lo/loopx

然后进入仓库执行:

命令作用
npm run test:control-plane跑全部 TS 侧单元测试(开启--experimental-sqlite
npm run typecheck:control-plane用 tsconfig.control-plane.json 做严格类型检查(noEmit
npm run test:control-plane:coverage用 c8 生成覆盖率,覆盖loopx/control_plane/**/*.ts
npm run test:postgresql-authority-store真实 PostgreSQL 集成测试,需设置LOOPX_TEST_POSTGRES_URL指向隔离实例

这里有个质量红线:PostgreSQL 集成测试被跳过不等于通过,只是证据缺口。完整规则见 docs/development/testing-and-quality.md。

🎯 三臂演练:迁移的"终极对拍"

TS 迁移中最重的验证手段是只读三臂演练(three-arm rehearsal):

  1. 使用同一份只读的生产复杂度快照
  2. 三个隔离臂分别运行:不可变的 legacy 基线、File provider、真实 PostgreSQL provider;
  3. 两个 provider 的 head 必须精确相等,legacy 臂按显式兼容投影做语义比较。

可复现脚本位于 examples/control_plane/authority-three-arm-rehearsal.py。配套的 production_scale_coordination_fixture.ts 提供确定性的规模用例,覆盖租约、重放、并发、归档压力等场景,是持久的回归覆盖,但不能替代对当前真实状态的三臂演练。

💡 测试哲学:先审规则,再审实现

LoopX 的质量体系(docs/development/testing-and-quality.md)有两条对新手很实用的原则:

  • 预期值必须来自独立审阅的不变量,永远不能由被测实现或它的当前输出生成——防止"用旧代码校准新代码"的自证循环;
  • 特征化 fixture 只记录历史行为,不为其背书——发现矛盾时应修复规则并补反例,而不是刷新 golden 文件让测试变绿。

此外,凡声称推进迁移的 PR 都必须遵守"production-scale fixture 维护契约":声明 fixture 影响、覆盖所有受影响的 provider 臂,并把只读三臂演练保留为独立的 promotion 门禁。

✅ 小结:TS 侧测试组织的三个关键词

  1. 显式清单——tsconfig.control-plane.json 白名单让迁移进度可审计;
  2. 命名分层——test / conformance / fixture / cli / integration / probe各司其职,一眼可辨;
  3. 对拍优先——provider 一致性套件 + 三臂演练,确保 Python→TypeScript 替换前后语义严格一致。

想继续深入,建议按顺序阅读:RFC 迁移方向 → 测试与质量体系 → 直接浏览 tests/control_plane_ts/ 的任意一个 conformance 文件体会分层设计。

【免费下载链接】loopxLong-horizon agent control plane for durable, governed work across Codex, Claude Code, and other harnesses.项目地址: https://gitcode.com/GitHub_Trending/lo/loopx

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

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

STM32读取MAX6675热电偶测温:SPI例程解析与移植要点

简介:基于MAX6675与STM32的测温例程,为嵌入式开发者提供一套可直接学习与移植的K型热电偶温度采集实现方案。程序涵盖SPI通信初始化、MAX6675驱动配置、温度数据读取与换算等关键环节,适合正在学习STM32外设驱动或需要快速完成热电偶测温功能…

作者头像 李华
网站建设 2026/9/17 3:04:08

SiC/IGBT双脉冲动态测试仪技术解析

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

作者头像 李华
网站建设 2026/9/17 3:02:11

Delphi ERP源码实战:编译、数据库连接与系统对接全解析

简介:这是一份Delphi开发的大型企业ERP管理系统完整源码包,面向需要学习传统客户端/服务器架构开发的程序员、用于毕业设计的学生以及正在搭建小型企业信息化系统的小团队。资源包共2906个文件,大小约18.07MB,核心代码以432个pas单…

作者头像 李华
网站建设 2026/9/17 3:02:10

桌面端CRM实战:DeskcommCRM从架构设计到MVP落地全解析

1. 项目缘起:为什么会有 DeskcommCRM 这个项目1.1 先聊聊我对这类系统的真实感受做销售和客户服务的人应该都有这种感觉:客户资料、跟进记录、通话内容、报价单一堆东西散落在 Excel、聊天软件、邮箱和脑子里,真正需要找一条半年前的沟通线索…

作者头像 李华