Skip to content

Historical record

This page records what happened on a date, with its observed failures and limits. It is not a requirement for the current implementation. Current behaviour is in Status.

Rho 首版后端实施计划 ​

Updated: 2026-10-16

先交付可独立调用、测试和安装的本地后端,再由 UI 消费相同公共接口。 后端完成的标准是外部 Agent 和无界面测试客户端能走通真实分析、共同编辑、续接和组合描述, 前端无需重新实现执行、文档、资源或状态判断。UI 开发与验收随后独立开展。

本文安排后端工作包的顺序、边界和验收,只记录当时的后端实现,不规定当前前端设计。BP-01 至 BP-06 已在所选 macOS arm64 组合完成无界面与本地 npm 安装验收; 六包的实现、实际证据与剩余边界见后端验收; 运行与调用方式见后端接口说明。真实 shrinkage、partial/unknown 已有执行记录, 画板中的特定 run 编号和 8,204 行示意仍不作为实测数字。

插件边界修正: 六步交付了可运行的 v1 纵向原型,但把 paired airway 流程的动作、 列名、比较关系和脚本打包写入基础契约。真实流程通过不代表可复用插件底座完成。 插件模型与 解耦计划明确:具体流程是项目 recipe/验收 consumer; 基础插件提供文档、运行时/对象、依赖、文件、表格、图片/图表和 Agent 能力。 PX-01 至 PX-05 插入 BP-06 与功能插件 UI 接入之间,0.2 已交付 v2 通用后端和两个 显式 R 项目消费者,实际检查与安装状态见解耦验收。 本文六包保留原 v1 交付范围和候选证据;UI 后续独立消费新契约,本轮不实施。

现有基础与本轮边界 ​

Owner已有基础本轮补充
Rho审计起点为应用架构和执行桥npm 启动器、本地服务、项目和会话范围、持久请求记录、路由与组合校验、恢复及应用验收
Rho-corepublic CLI、resident Host、请求去重、执行观察、partial/unknown 与取消边界先复用公开能力;仅实际集成证明缺口后,才在 Core 追加最小公共能力
Rho-pluginsreal-r-analysis 的 R recipe/产物和验收 consumer;独立 Agent evaluator可复用的 headless 功能入口、依赖声明/检查/准备、文档服务、数据/图形资源、实际外部 Agent 适配器及 shrinkage 动作

审计起点是 Core d0159da6feb01d1be9e3b4b34b67953241fedfcb、Plugins a8ddfdfbdc9e246887f32c53c6c85eb3dc116e4c。它们是本次能力盘点依据, 不是已接受的应用组合;实施时记录实际选用的源码、二进制摘要和兼容性证据。 Core socket wire 不是应用公共协议;Rho 仅通过所选版本的公共 CLI 接入。 能力依据分别是 Core 公共 CLI、 Plugins 架构 及真实分析验收。

审计起点的 run.py 是科学验收 consumer,agent-eval 是评价器。新增 headless 包已交付 共享 buffer、实际表图数据、依赖检查/准备、MCP 接入和 apeglm shrinkage;Rho 通过公共入口组装。 旧科学验收与新应用验收分别保留来源和范围,不把画板字段当成执行事实。

后端与 UI 的分界 ​

后端采用 Node.js/TypeScript 本地服务,以版本化 HTTP JSON 操作和 SSE 事件提供窄接口。 服务绑定 loopback,并验证会话、来源和项目范围;外部 Agent 通过所选适配器调用同一动作。 具体库、版本和可安装组合记录于后端验收。

Rho 持有应用协调状态;插件持有文档与功能资源状态;Core 持有其公开契约内的执行事实。 持久数据先使用 owner 命名空间内的普通文件、条件写与可恢复日志,验证受理顺序和崩溃边界。 存储目录不得与 Core 文件冲突,具体格式、持久确认点和迁移版本随 BP-01/BP-02 定义。

后端必须交付后续 UI 独立负责
项目、组件/动作能力、依赖检查与准备结果项目选择、参数表单、依赖信息与继续入口的布局
单一文档内容、版本、编辑事务、undo 和条件保存CodeMirror 视图、IME、光标、焦点、diff 展示和交互
真实表格页、图形数据、稳定实体与 provenanceAG Grid/ECharts 渲染、排序筛选控件、图表交互与可访问替代
原请求记录、Core 观察、有界输出和独立检查事实运行列表、日志、unknown/partial 等状态的呈现
项目/外部会话绑定、显式上下文和工具动作记录绑定入口、上下文预览、动作/结果导航;对话留在外部客户端
注册组件目录、组合描述校验、资源/选区绑定React/json-render 映射、Dockview 布局、移动与键盘操作
草稿/引用/布局描述的持久化与恢复报告已确认内容的恢复提示、可用/缺失视图和布局恢复

后端模块和插件 headless 入口不得依赖 React、DOM、Dockview、CodeMirror View、AG Grid 或 ECharts 实例。文本事务、图形数据和组合描述使用可序列化结构;前端可更换渲染库, 而不更换资源、文档或请求的 owner。浏览器尚未确认的输入不能被声称已持久保存。

公共接口交付范围 ​

先定义有限的首版 catalog 和操作,不建设动态插件市场、通用工作流引擎或所有 Agent 协议。 下表操作族已落实为按操作发布的契约。BP-01 交付 /api/v2 路由、JSON Schema、 事件类型、错误样例和兼容性规则;UI 与 Agent 均不得绕过它们的公共调用条件。

操作族最小语义与返回信息
Project / Capability打开、新建、最近项目;项目范围、组件/动作版本、可用性与声明;打开项目不执行脚本或启动 Host
Requirements绑定项目、所选动作版本、Rscript/library paths 等实际环境;返回检查时点、版本、缺失/未知;准备是显式动作,完成后重查
Action / Run类型化输入、资源与现有授权检查;发起方首次发送前持有 operationId;服务持久映射到 Core caller/request 与不可变内容;返回原生身份、投递事实、结果与观察入口
Resource / Dataowner、project、独立资源版本/摘要、来源运行、可用性与覆盖范围;有界分页、排序/筛选及图形数据,保留 NA 和稳定 gene ID
Document同一逻辑 buffer 的读取、条件编辑、undo、保存和恢复;明确 buffer version、磁盘摘要、作者及已持久确认位置
Selection / Context绑定资源版本的稳定实体或文本范围;生成可检查的上下文包,明确来自磁盘、未保存 buffer 或实际结果
Agent binding实际适配器/能力测试、项目与外部会话绑定、上下文投递回执和工具动作;投递不确定不冒充已送达,不复刻外部对话
Composition / View注册组件和属性、双输入等资源绑定、共享选区、布局意图;请求打开/关闭视图仅改变呈现与观察,不隐式执行动作
Workspace / Export保存已确认草稿与引用/布局描述;条件导出真实文件及 provenance;恢复逐项报告可用、冲突、缺失和未知
Observation快照与有界事件订阅、游标、取消订阅;事件有缺口返回需重新读取快照,读取不启动/恢复运行时

schema 必须表达以下差别:

  • 受管调用的客户端/Agent 适配器在首次发送前保留 operationId,服务按认证调用方、项目和 操作身份持久受理。同身份同内容返回原记录,改内容返回冲突;Core caller/request 由服务 映射,不以客户端字段扩大权限。首次 HTTP 回复丢失也能查询原操作,不临时生成新身份。
  • 参数格式错误、旧资源版本、越界、原生条件不满足和组件不可用使用可区分的类型化结果; 错误包含相关字段/引用和继续信息,在组件执行前拒绝无效调用。
  • 执行结局、数据覆盖率、产物完整性、领域检查及 Agent 解释分别记录; partial 数据与 unknown 结局可以同时存在,未安装组件也不等同于执行失败。
  • 每个资源独立版本;事件游标、布局版本和组件版本不成为全局科学 revision。
  • 引用和模型输出不能扩大授权。文件/导出的条件写沿用实际资源条件, 不把所有写操作伪装成 Core 受管任务或承诺通用 exactly-once。

事件用于通知事实变化,不替代 owner 的事实存储。断线后用快照和原身份查询恢复观察, 不得通过重放动作恢复画面。协议 schema 同时作为真实客户端、测试夹具和前端 mock 的依据。

实施工作包与验收 ​

按下面依赖推进,每包提交独立可检查的 owner 变更。BP 编号仅标识本计划工作包, 产品任务及发布状态仍由 WEB 清单和 Status记录。

BP-01 冻结消费者与公共契约 ​

依赖: 无。Owner: Rho 牵头,Plugins 交付功能描述。对应 WEB-01、WEB-04。

选择本机 OS/架构及一个 Node 基线;以画板中的 Claude Code 为候选,先验证一个真实外部 Agent 的工具连接、项目绑定、上下文读取与结构化动作。适配器选择必须由该实验决定, 不把参考会话或 MCP SDK 安装视为通过。不实现内置模型循环或第二套聊天。

交付有限 catalog、上述协议 schema/错误/事件、存储命名与确认规则、无 UI 测试客户端, 以及真实分析的输入、预期产物和不可变来源记录。对 Plugins 中仍写 Electron 首发的方向文档 作相应对齐,保留三仓库边界。

完成条件: 实际 Agent 与无 UI 客户端可解析同一契约;最小连接有实测记录; 契约覆盖下列后端场景的字段和错误;具体库/版本、组件能力与未支持项可追溯。

BP-02 本地服务、项目与执行桥 ​

依赖: BP-01。Owner: Rho。对应 WEB-02、WEB-08 的基础。

建立 npm 打包/本地安装骨架、认证会话和窄接口;验证 Origin、项目包含关系及符号链接。 项目打开只观察既有 Host,核对项目和归属。授权分析提交可以显式启动自己的缺失 Host; 读取、刷新或续接不能启动 Host。服务只关闭自己持有的 Host 子进程并读取 shutdown 报告。

实现持久请求受理、公共 CLI 适配、exit code 0–4 映射和 bounded read,遵循 执行桥。服务受理与 Core 受理分别有可观察事实;丢失任一回复时沿原身份查询。

完成条件: 从本地安装包启动无 UI 服务;非法来源/会话、越界/符号链接和错误项目被拒绝; 已有用户 Host 不被替换或停止;投递前后故障注入均保留原身份,原生 dispatch 计数可核验。 覆盖服务已受理但首次回复丢失、随后服务崩溃/重启:发起方以原 operationId 查询或重试, 仍映射到同一 Core 请求且只派发一次。

BP-03 项目动作依赖与第一条真实分析 ​

依赖: BP-01、BP-02。Owner: Plugins,Rho 组装。对应 WEB-02、WEB-04、WEB-07、WEB-08。

v1 将 real-r-analysis 整理成了内置 headless 科学动作。这混合了流程和基础能力, 需要由 PX-01/PX-02 修正:运行时接收显式项目脚本/快照;recipe 提供方法、依赖、产物描述 和 checker;基础 catalog 与 Rho 请求协调不限定 airway 动作。下面保留原 v1 案例范围。 为所选动作声明参数、资源与依赖;检查具体项目使用的 Rscript、包库与版本。 依赖未检查、缺失、未知分别返回;准备明确安装目标和来源,按已有授权执行并重新检查。 不扫描脚本推定全项目依赖,不返回全局 environment ready。

先用已保存脚本和真实输入运行一次,公开脚本、结果表、模型和科学图的实际引用及检查结果。 执行完成、manifest/摘要检查和领域检查分别返回;现有验收证据仅复用其实际范围。

完成条件: 无 UI 客户端完成“打开项目 → 选择动作 → 检查/准备 → 提交 → 分页观察 → 读取真实产物”;缺包失败可继续;同一请求重复投递只有一次原生 dispatch; 产物和数字可对照所选 recipe 的实际结果。

BP-04 共享文档与外部 Agent 接管 ​

依赖: BP-01、BP-02;可与 BP-03 并行。Owner: Plugins 文档服务/适配器,Rho 绑定和路由。 对应 WEB-05、WEB-06。

交付不依赖编辑器 View 的单一文档服务。人和 Agent 的文本事务使用同一 buffer/version、 undo 分组和条件保存;先定义多视图并发顺序,旧版本冲突不能静默覆盖。 磁盘修改通过摘要/原生写条件检测,保留当前 buffer 并返回冲突。 持久化已确认内容及必要恢复信息;未确认部分明确不保证恢复。 执行未保存脚本时,按指定 buffer/version 冻结实际字节、摘要和来源供动作使用, 不静默改读磁盘。受理后的编辑不改变运行快照;同身份重投仍对应原内容。

适配器入口归 Plugins,Rho 负责应用会话认证、项目/外部会话绑定和上下文路由。 显式上下文包包含选中文本/实体、来源和版本,投递能力及回执按真实外部客户端验证; 外部 Agent 的模型、对话与会话寿命仍由该客户端持有。

完成条件: 两个无 UI 客户端分别扮演人和 Agent:读取同一未保存内容,Agent 条件修改后 人继续编辑并 undo;并发旧版本、Unicode 文本与外部磁盘改写均有实际检查。 提交未保存 buffer 后继续编辑,核验运行使用冻结内容;旧 buffer/version 提交被拒绝。 断开外部 Agent 不取消分析,恢复绑定不重复动作;真实 Agent 能通过相同入口完成一次接管。

BP-05 真实数据、稳定选区与注册组合 ​

依赖: BP-03、BP-04。Owner: Plugins 数据/科学组件,Rho 选区路由和组合校验。 对应 WEB-04、WEB-07、WEB-09。

下面的 gene ID、fold-change 与 baseline/shrinkage 是 v1 案例语义;PX-03/PX-04 将通用表格改为声明列类型、稳定 key、图表字段和双输入映射。科学可比性检查归领域 owner, 不进入 Rho 的组合/恢复逻辑。目标基础包移除对该样例的依赖;旧协议保留其原始含义。

交付真实 CSV 的有界分页、类型化排序/筛选、gene ID 和 NA 语义;原科学 PDF/RDS 保持可检查。 交互图使用组件产出的真实数据/spec 和映射,不把 PDF 当成交互图实现。 文本、表、图引用各自资源版本;共享选择按稳定实体传播。

单独实现并验收 apeglm shrinkage 动作及其原生产物。比较组件按 gene ID 连接基线和 shrinkage 两个输入,保留各自版本、模型/contrast 来源及缺失 Y;组合视图本身不启动新科学运行。 真实未完整产物必须有可检查的快照和覆盖率,不能通过篡改完成标记制造成功证据。

有限注册 catalog 暴露未来 UI entry 的属性和资源/动作绑定;Rho 持久化并校验组合描述, 先用无 UI 消费者检查。UI entry 尚未安装时保留引用、请求和 unavailable 状态,禁止自动重放。

完成条件: 排序后仍选中同一 KLF15;table/scatter 共享同一双输入连接数据; 缺失 Y 保留为缺失;错误类型、旧版本、../other-project 和符号链接越界在执行前拒绝; 未知组件保留引用。真实 shrinkage 结果与协议状态夹具分别留证。

BP-06 连续性、导出恢复与后端交付 ​

依赖: BP-02 至 BP-05。Owner: Rho 集成,Plugins 验证功能资源。对应 WEB-08、WEB-10、WEB-11 后端部分。

在无 UI 场景覆盖提交回复丢失、观察断开、服务崩溃/重启和 Host 退出:查原身份, 保留部分输出与未知结局。取消请求、确认停止、关闭观察者、关闭外部会话及 Host 关闭单独断言。 导出使用真实文件和写条件,恢复逐项验证草稿、资源引用、组合/布局描述及缺失组件。

对请求字节、事件/日志页、数据页、图形点、活跃 buffer、并发动作和订阅设置可配置预算; 超限返回明确限制或带标记的截断/降采样,保留已获得内容和不确定性。 在目标平台从实际 npm pack 产物安装并验证启动、依赖与完整 headless 流程。

完成条件: 下表后端验收全通过,记录来源/版本、限制、失败和安装证据; 交付版本化协议、客户端、可重放的无副作用状态夹具及后端启动说明。 v1 的通过仅证明选定组合;功能插件 UI 接入还需先通过 PX-01 至 PX-05。 整体产品仍需 WEB-03、WEB-07、WEB-09、WEB-11 中的实际界面、 输入、可访问性、布局与浏览器验收,后端通过不代表首版发布通过。

具体预算值由所选平台的实施测量确定,并随配置和验收记录交付:

受保护资源配置项超限行为
调用/组合请求字节最大请求大小执行前拒绝,不创建新运行
观察事件与日志页保留窗口、单页字节数返回缺口/截断标记及下一游标;重新读取快照,不重放动作
表格页与图形点页大小、绘图点数有界分页或明确标记降采样,保留原始产物
活跃文档内容单 buffer/总量上限拒绝超限变更/新 buffer,保留已确认内容,不静默驱逐草稿
并发动作同时执行数、队列长度原身份排队或明确拒绝,不隐式创建另一请求
观察订阅会话/视图订阅数拒绝新增订阅,保留既有观察与执行

历史后端验收矩阵 ​

画板范围无 UI 必须证明工作包
R1–R2 项目与绑定无项目不检查科学依赖;打开项目无执行副作用;真实外部会话/范围可验证BP-01、BP-02、BP-04
R3–R6 参数、提交、结果动作局部依赖与类型校验;原身份一次执行;真实脚本/表/图及独立检查事实BP-03
R7 异常分支依赖/范围/原生错误有继续方式;输出截断、取消与停止分开BP-02、BP-03、BP-06
R8–R10 导出、共享编辑、恢复实际文件可独立打开;同一 buffer/undo;保存冲突与已确认草稿恢复BP-04、BP-06
R11–R12 修复实际错误/资源交给 Agent,修改原 buffer;修复后的执行有意使用新身份BP-03、BP-04、BP-05
R13 原任务续接丢回复后不新建身份;核验一次 dispatch;partial 与 unknown 可并存BP-02、BP-06
R14 组合比较双输入及稳定选区;类型/过期/越界拒绝;组件缺失保留引用且不自动执行BP-05、BP-06

正常科学分析使用 disposable project 和自己拥有的 Host;不触碰用户 R 会话。 故障与状态夹具从真实边界产生并标明来源,不能用 mock 测试代替真实 Core/Agent/科学动作验收。 Core 回归、插件/domain 检查与 Rho 集成分别在 owner 留证,Cargo 检查不得并发运行。

UI 独立开发的交接条件 ​

BP-06 的科学耦合完成解耦验收后,插件 UI 通过固定版本的客户端与 schema 开发; 新契约以独立版本交付并兼容观察原请求。状态夹具覆盖 empty、loading、 failed、unavailable、partial、unknown、stale/conflict 与预算超限。夹具不包含可执行的原生请求, 读取或预览不会启动任务;真实后端有相同的协议一致性检查。

UI 可以从 BP-01 后并行开发外壳和协议 mock,但这不是后端关键路径或完成条件。 后端通过实际公共契约验收;协议变更带版本/兼容性说明和双方消费者检查, 不通过修改前端展示逻辑补偿后端缺失的事实或资源语义。

六步实现和验收保留上述范围;当前重点先完成 PX 解耦,再让实际插件 View 消费新版本的 schema/client/fixtures。应用外壳可复用已有通用项目、认证和文档操作。 浏览器输入、布局、辅助访问与整体发布仍按 WEB 清单验收,不在后端中重新创建一份状态 owner。

Rho is developed in the open. Scientific claims need the evidence recorded beside them.