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/loopxLoopX 是一个面向长程 Agent 的控制平面control plane负责在 Codex、Claude Code 等运行环境之上做持久化、可治理的工作调度。它的核心正在做TypeScript 平行迁移——把原本写在 Python 里的控制面事务逻辑逐块替换为 TypeScript 实现。这篇文章讲清楚一件事迁移期间tests/control_plane_ts/ 这个 TS 侧测试目录是如何组织的以及新手如何跑通它。 先理解平行迁移替换优先不留双份语义LoopX 的迁移策略在官方 RFC 中称为replacement-first替换优先规则很简单每一块业务规则如 Todo 事务、租约、配额结算只能有一个语义 ownerTS 实现接管事务后Python 侧对应的旧规则代码被删除而不是两份实现互相抄兼容路径如旧 Markdown 投影可以保留但不能静默形成第二套语义。这意味着测试的核心职责是守住替换边界旧实现的行为不能被悄悄改变新实现的行为必须可回读、可重放。迁移方向与当前检查点详见docs/architecture/rfcs/typescript-control-plane-migration-v0.zh-CN.md。 TS 侧代码与测试的物理布局位置内容loopx/control_plane/被迁移的控制面源码.ts与.py并存如 turn_journal.tstests/control_plane_ts/TS 侧全部测试约 135 个文件tsconfig.control-plane.json显式列出每一个纳入编译的.ts源文件与测试文件strict模式全开package.json提供test:control-plane等 npm 脚本要求 Node ≥ 22.18tests/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.mjsprovider 套件是最典型的设计同一个 authority 一致性套件分别由 authority_store.test.tsFile 后端、sqlite_authority_store.test.tsSQLite 后端、nokv_authority_store.test.tsNoKV 后端驱动保证不同存储后端的逻辑头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-sqlitenpm run typecheck:control-plane用 tsconfig.control-plane.json 做严格类型检查noEmitnpm run test:control-plane:coverage用 c8 生成覆盖率覆盖loopx/control_plane/**/*.tsnpm run test:postgresql-authority-store真实 PostgreSQL 集成测试需设置LOOPX_TEST_POSTGRES_URL指向隔离实例这里有个质量红线PostgreSQL 集成测试被跳过不等于通过只是证据缺口。完整规则见 docs/development/testing-and-quality.md。 三臂演练迁移的终极对拍TS 迁移中最重的验证手段是只读三臂演练three-arm rehearsal使用同一份只读的生产复杂度快照三个隔离臂分别运行不可变的 legacy 基线、File provider、真实 PostgreSQL provider两个 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 侧测试组织的三个关键词显式清单——tsconfig.control-plane.json 白名单让迁移进度可审计命名分层——test / conformance / fixture / cli / integration / probe各司其职一眼可辨对拍优先——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),仅供参考