kitepon-rgb/Lattice

GitHub: kitepon-rgb/Lattice

Lattice 是一款多代理开发场景下的可调度性编译器,通过分析代码边界并自动消除冲突,使原本看似冲突的任务能够安全并行执行。

Stars: 0 | Forks: 0

Lattice — stop serializing work that only looks like it conflicts

# Lattice [![npm](https://img.shields.io/npm/v/@quolu/lattice?color=cb3837&logo=npm)](https://www.npmjs.com/package/@quolu/lattice) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/kitepon-rgb/Lattice/actions/workflows/ci.yml) [![license](https://img.shields.io/badge/license-PolyForm%20Noncommercial%201.0.0-blue)](LICENSE) [![node](https://img.shields.io/node/v/@quolu/lattice?color=339933&logo=node.js&logoColor=white)](https://nodejs.org/) [![patent](https://img.shields.io/badge/patent-pending%20JP%202026--178950-6366f1)](#patent) **简体中文** · [日本語](README.ja.md) ## 为什么 给三个编程代理分配三个任务,通常的结果是以下两种失败之一: - **过度串行化。** “这两个任务都要修改 `renderer.ts`,所以得一个一个地执行。” 通常,它们只修改了该文件中*不同的符号*,本可以同时执行。 - **串行化不足。** 因为没有声明任何依赖关系,你让它们并行执行, 结果在双方都写了冲突代码后才发现冲突。 这两种失败都源于同一个盲区:*没有人真正去测量边界。* 任务列表中的依赖箭头只是对意图的声明,而不是针对代码的实际证据。 Lattice 通过一种不同的方式填补了这一空白。它不仅仅是**检测**冲突——而是将其**移除**。当两个任务竞争同一个文件时,Lattice 会推导出一个切分,在一个隔离的 worktree 中应用它,根据五项验收条件验证该转换,并根据转换后的源码重新编译计划。冲突边界消失了,因为共享表面不再被共享。 ## 实际作用 ``` declare boundaries → compile independence → conflict? ├─ no → run in parallel └─ yes → propose a seam → transform in an isolated worktree → verify (5 conditions) → land + recompile → run in parallel ``` **一个来自本仓库的真实案例。** 两个任务都需要修改 `src/seam-commit.mjs`。Lattice 编译了相关声明,报告了 `conflict_count: 1` 及 `severability: code_seam`,提出了一个切分,并在一个隔离的 worktree 中应用了它。当所有五项验收条件通过后,该文件被拆分为每个任务各自拥有一个专属表面,外加一个共享表面和一个残留表面。重新编译后报告 `conflict_count: 0`,并将这两个任务置于同一个并行组中。 没有人手动重构那个文件。是产品本身对其进行了切割,从而使工作得以并行化。 ### 五项验收条件 只有当**所有五项**条件都满足时,转换才会被采用。缺少任何一项条件都会将其拒绝: | 条件 | 含义 | |---|---| | `behavior_equivalent` | 保留了原始路径的公共导出表面 | | `focused_tests_passed` | 受影响的测试确实能在转换后的源码上通过 | | `sensor_fresh` | 结构索引已重建并覆盖了新的表面 | | `overlap_reduced` | 目标冲突已消除,**并且**全计划范围内的冲突对没有增加 | | `parallelism_improved` | 执行波数减少了 | ### 是运行时,而不仅仅是计划 在计划阶段无法实现完全的分离——动态分发、运行时解析的路径以及外部状态总会留下残余。这是有意为之的设计,而不是缺陷:Lattice 在运行时包含第二阶段。 在工作执行期间,Lattice 观察的是**实际发生了什么更改**,而不是声明了什么更改。当它发现某个任务在其声明的范围之外写入,或者写入到另一个正在运行的任务的范围内时,它会引发运行时冲突——此时它可以一边保持某一方挂起让另一方提交,或者直接转换接缝并恢复双方运行。 ## 安装 ``` npm install -g @quolu/lattice ``` 要求 **Node.js 22.13+**。结构传感器内置在包中——无需安装其他任何东西,并且 Lattice 绝不会退而求其次去使用你 `PATH` 上的传感器。 ## 快速开始 每个项目都从类型化发现开始。切忌凭目录布局进行猜测: ``` lattice status --json ``` `state` 是 `uninitialized | ready | active_run | invalid` 其中之一,而 `next_action` 会给出标准的下一条命令。然后对代码库建立索引并声明边界: ``` lattice sensor init . --json ``` 编写一个声明每个任务各自拥有什么的草稿,然后让工具为你补全你无法手动编写的部分——最新的观测结果、溯源连线、以及规范的字节: ``` lattice todo independence witness scaffold --plan --input draft.json lattice todo independence compile --plan --input .lattice/todo/witness/.json lattice todo independence --plan --json ``` 如果判定结果报告了带有 `severability: code_seam` 的冲突,请请求一个切分并应用它: ``` lattice todo seam-proposal compile --plan lattice todo seam-proposal apply --plan # isolated worktree, five conditions lattice todo seam-proposal land --plan --names names.json ``` 完整的 CLI 范围:`lattice --help`,然后是 `lattice --help`。 ## 设计原则 **运行的 AI 是仪器本身的一部分。** Lattice 由 AI 代理驱动,而该代理并非系统外部的存在——它是系统的一个组件。因此,Lattice 只提供 AI *无法* 自行生成的内容:结构观察、契约、验证、记录以及版本边界。而评估、判断和命名依然是 AI 的工作。在本产品中找不到任何 LLM 调用;增加一个只会复制在使用点已经具备的能力。 **未知永远不会被圆整为“无冲突”。** 如果某个边界未经核实,判定结果将显示为 `missing`,而不是“独立的”。依赖边的缺失并不能作为独立性的证据。 **失败即闭环,并说明原因。** 每次拒绝都带有类型化的理由和下一步操作。无法验证的转换不会被采用。无法独立重新推导出的发现不会被记录。 ## 专利 本仓库中的设计是一项日本专利申请的主题: | | | |---|---| | 申请号 | 特願2026-178950 (JP 2026-178950) | | 申请日期 | 2026-07-27 | | 标题 | 情報処理装置、ソフトウェア開発制御方法及びプログラム
(信息处理装置、软件开发控制方法及程序) | | 权利要求 | 12 | **专利权利均予保留。** 非商业性使用已随软件一起获得许可(见 [License](#license))。商业使用未获授权——无论是版权许可还是专利许可均不涵盖此类使用。此处公开该申请是为了让权利状况一目了然,而不是在事后才被发现。 ## 工厂角色 Lattice 是由 [dotagents 开发工厂](https://github.com/kitepon-rgb/dotagents) 管理的十款自主研发的核心产品之一。本仓库负责 plan/ToDo/run 存储区、捆绑的传感器、schema、迁移、发布和诊断;而 dotagents 负责跨产品安装和主机集成。 - 产品理念:[PLAN.md](PLAN.md) - 公共契约:[docs/00_product-contract.md](docs/00_product-contract.md) - 不可变决策:[docs/adr/](docs/adr/) - 文档地图:[docs/README.md](docs/README.md) ## 开发 ``` npm test # product test gate npm run check # syntax + control-character gate npm run ci # full gate ``` 完整的检查关卡包含了一些不同寻常且刻意设计的检查: - **`check:cli-surface`** — 每个发布的命令都必须有帮助文本,*并且*必须通过测试由 CLI 入口点执行。发布一条从没人运行过的命令会被视为缺陷。 - **`check:open-questions`** — ADR 中的每个未解决问题都必须带有明确的触发条件,这样“延期处理”就不会与“已被遗忘”混为一谈。 - **`check:reachability`** — 每个模块都必须能从产品入口点访问到,或者必须作为研究产物声明并附带理由。 详细的操作说明(仪表盘、bridge、actor 环境、store 事务)位于 [README.ja.md](README.ja.md) 和 [docs/](docs/) 中。 ## License **[PolyForm Noncommercial License 1.0.0](LICENSE)** — 可免费用于非商业用途。 - **免费:** 个人项目、学习和研究、个人爱好和业余作品、慈善机构、 教育机构、公共研究组织和政府机构。 - **未授权:** 商业用途。这包括在公司带薪工作或产品内部使用, 无论 Lattice 本身是否被重新分发。 这**不是** OSI 批准的开源许可,这是刻意为之:该设计受专利申请保护,且商业权利被保留。 **如需商业使用**,需要获得版权和专利持有人的单独许可。可通过 [issues](https://github.com/kitepon-rgb/Lattice/issues) 进行咨询。是否授予许可,以及按何种条款授予,将视具体情况逐案决定。 [`sensor/`](sensor/) 中内置的结构传感器是被并入本仓库的第三方成果,并继续保持 **MIT License**。其上游来源和署名信息记录在 [`sensor/NOTICE`](sensor/NOTICE) 中;许可文本位于 [`sensor/LICENSE`](sensor/LICENSE)。上述条款不对其进行修改。 © 2026 quolu (kitepon-rgb)
标签:MITM代理, 代码重构, 多智能体开发, 并发冲突解决, 数据可视化, 文档结构分析, 暗色界面, 编译器工具, 自动化调度, 自定义脚本