cgajs.com 与 rulepackage.com 解耦后职责、通信与功能砍留报告

未来直接在服务器上开发,不再走“本地开发 → 部署”模式。本报告明确两个站点各自保留什么、砍掉什么、如何通信。

一、核心设计原则

  1. 单一权威(Single Source of Truth):任何数据只在一个站点是“权威”,另一个站点只能缓存或消费。
  2. API 优先:跨站能力必须通过 REST API 调用,禁止直接读对方数据库或文件系统。
  3. 按需同步:引擎构建产物从 cgajs.com 推送到 rulepackage.com;CGA 资产 / 黄金测试从 rulepackage.com 推送到 cgajs.com。
  4. 服务器即开发机:直接在对应服务器上修改、提交、测试;CI/同步脚本负责把产物搬到另一台机器。

二、解耦后职责分工

职责权威站点说明
CGA 引擎 / 解析器 / 运行时cgajs.com所有 parser、geometry operations、compiler、runtime 的源代码与 CI 都在 cgajs.com。
NL2CGA AI 生成cgajs.com大模型调用、模板引擎、生成后修复、RAG 消费端。
用户 / 鉴权 / 计费 / 管理后台cgajs.com账号体系、API Key、套餐、支付、admin。
IDE / 函数库文档 / 插件生态cgajs.com在线编辑器、ku 函数库文档、插件 registry。
CGA 文件仓库 / Marketplace 资产rulepackage.com所有 .cga 文件、manifest、预览图、版本化资产库。
Omega 黄金测试体系rulepackage.comOBJ 上传、golden case 存储、对比报告、失败 case 管理。
NL2CGA 语料源 / RAG 原料rulepackage.com解析后的参数 schema、描述、标签、few-shot 样本。
跨站测试报告 / 状态面板rulepackage.com聚合两台机器的 engine 版本、corpus 状态、marketplace 审核结果。

三、功能砍留详细说明

3.1 cgajs.com 会砍掉 / 弱化的功能

功能解耦后状态原因与替代方案
canonical CGA 文件仓库 砍掉 /www/wwwroot/marketplace.rulepackage.com/files 与 library 目录不再作为 cgajs.com 的权威来源。 cgajs.com 只保留从 rulepackage.com 拉取的缓存副本(tests/cga-corpus/nl2cga-service/library 缓存)。
Omega OBJ 上传与 golden case 存储 砍掉 Omega 上传入口统一放在 rulepackage.com。cgajs.com 通过 /omega/sync-to-cgajs API 拉取 golden cases, 导入到本地 tests/golden/omega-imports/ 用于 CI。
Marketplace 资产发布后台 弱化 资产审核、manifest 生成、缩略图渲染由 rulepackage.com 负责。cgajs.com 的 admin 页面只保留“查看/下架/推荐”能力, 不直接写文件系统。
引擎 dist-stable 的多版本并存 清理 cgajs.com 只保留当前生产版本与上一个稳定版本的 dist-stable,其余 dist-beta、backup、临时文件全部删除, 由 promote-to-prod 脚本自动管理。

3.2 rulepackage.com 会砍掉 / 弱化的功能

功能解耦后状态原因与替代方案
引擎源代码主开发 砍掉 /www/wwwroot/cgajs-engine 在 rulepackage.com 上变成“只读同步副本”,用于跑测试和渲染。 所有 parser、geometry、runtime 的修改在 cgajs.com 完成,通过 rsync 同步过来。
NL2CGA 生成服务 砍掉 rulepackage.com 的 nl2cga-service 不再直接调用大模型生成 CGA,只负责语料索引、参数 schema 提取、RAG 原料输出。 生成请求全部转发到 cgajs.com/api/v1/nl2cga/generate
完整用户 / 计费 / admin 体系 弱化 rulepackage.com 保留一个最小 admin 用于 Omega 上传者身份识别和 corpus/marketplace 管理, 真正的账号、付费、套餐、权限由 cgajs.com 统一托管。跨站调用时携带 cgajs.com 签发的 JWT/API Key。
独立 IDE 作为创作入口 弱化 rulepackage.com 的 ide.html 保留为“调试 / 测试入口”,主要用于预览 corpus 和 golden case。 用户日常创作、Marketplace 购买后运行统一引导到 cgajs.com/ide.html
“砍掉”不是删除代码,而是停止把它当作权威功能。 例如 rulepackage.com 仍然保留一份 cgajs-engine 副本来跑测试,但它不再提交新的引擎 feature; cgajs.com 也可能保留一个最小 Omega 报告页面,但数据来自 rulepackage.com API。

四、跨站通信 API 与数据流

4.1 rulepackage.com 对外暴露的 API

端点作用消费方
GET /api/v1/cga-corpus分页返回所有 NL2CGA-ready CGA 资产(含 title、tags、params、category)cgajs.com NL2CGA、IDE、CI
GET /api/v1/cga-corpus/{slug}/download下载 .cga 源码cgajs.com IDE / 渲染服务
GET /api/v1/cga-corpus/{slug}/manifest返回 manifest.json(元数据、参数 UI、预览图 URL)cgajs.com Marketplace 前端
POST /api/v1/cga-corpus/refreshadmin 触发重新索引全部 .cga 文件cgajs.com webhook / 管理员
POST /api/v1/omega/sync-to-cgajs按 batch_id 返回 golden cases 列表cgajs.com CI 拉取
GET /api/v1/omega/reportsOmega 批次报告列表cgajs.com admin / 状态面板
GET /api/v1/marketplace/assets已审核 Marketplace 资产(含 preview、price、tags)cgajs.com Marketplace 前端
GET /api/v1/status返回 engine 版本、corpus 数、lastSync、parse 成功率cgajs.com 状态面板

4.2 cgajs.com 对外暴露的 API

端点作用消费方
POST /api/v1/engine/run输入 CGA + 初始 Shape,返回 geometry 与 metadatarulepackage.com 测试 / Marketplace 预览
POST /api/v1/geometry/compareexpected vs actual 几何对比rulepackage.com Omega 黄金测试
POST /api/v1/parse语法解析检查rulepackage.com corpus 索引 / Marketplace 质量门
POST /api/v1/nl2cga/generate自然语言生成 CGArulepackage.com nl2cga 前端代理
GET /api/v1/engine/version当前引擎版本、支持的 operations 列表rulepackage.com 状态面板
POST /api/v1/webhook/corpus-updated接收 rulepackage.com corpus/marketplace 更新通知rulepackage.com 触发
GET /api/v1/status健康检查、版本、最近同步时间rulepackage.com 状态面板

4.3 数据流向

rulepackage.com CGA 资产 / Marketplace / Omega golden
→ API / webhook →
cgajs.com 引擎 / NL2CGA / IDE / CI
cgajs.com 构建 dist-stable
→ rsync / promote script →
rulepackage.com 测试 / 渲染 / 状态面板

4.4 同步机制

五、服务器直接开发工作流

以后不再“本地开发 → 部署”,而是直接在对应服务器上改代码、提交、测试。两台机器各自维护自己的 git 仓库,通过同步脚本交换产物。

5.1 cgajs.com 上的开发流程

  1. /www/wwwroot/cgajs-engine 修改 parser / geometry / runtime。
  2. 本地跑 npm test(unit + e2e + cga-corpus)。
  3. 提交并生成 dist-stable
  4. 执行 scripts/promote-to-prod.sh:同步 dist-stable 到 rulepackage.com,并 bump 两站 site-version.json

5.2 rulepackage.com 上的开发流程

  1. /www/wwwroot/www.rulepackage.comcgajs-apimarketplace.rulepackage.com 修改前端 / API / 资产脚本。
  2. 新增 / 修改 CGA 文件后,执行 scripts/build_cga_corpus.py 重新索引。
  3. Omega 上传后,后台自动调用 /api/v1/omega/sync-to-cgajs 供 cgajs.com 拉取。
  4. 提交代码;Marketplace enrichment 脚本生成 manifest 与预览图。

5.3 禁止做的事

六、风险与兜底

网络中断:如果 rulepackage.com 无法访问 cgajs.com,cron 会失败并告警,但 rulepackage.com 的语料上传、Marketplace 审核仍可继续;恢复后 cgajs.com 自动补齐。
版本不一致:通过 site-version.json/api/v1/engine/version 对账,状态面板会标红两台机器 engine 版本不一致的情况。
数据冲突:CGA 文件只在 rulepackage.com 编辑,引擎只在 cgajs.com 编辑,天然避免写入冲突。若需临时跨站修复,必须通过 API 或脚本同步,不能两边同时改同一份源码。

七、一句话总结

cgajs.com 变成“引擎与 AI 生成大脑”,rulepackage.com 变成“CGA 资产与测试标尺中心”。 两边通过 API + webhook + rsync 通信,各自砍掉对方权威的数据/功能,只保留自己最擅长的部分。 以后直接在服务器上开发,但严守“谁权威谁改源码,消费方只调 API”的边界。

八、cgajs.com 当前状态评估与修复方案

基于 2026-06-15 对 cgajs.com 实际代码与运行状态的扫描,对比 architecture-report 的目标架构,形成以下修复清单。

8.1 当前结构快照

模块位置当前状态
引擎源码 /www/wwwroot/cgajs-engine 源码已大量更新(insert/inset/convert/asset-loader/query-functions/comp-holes 等), npm test68 个测试文件通过,1285 个测试通过,1 个 skipped。 但仓库有 448 条未提交变更(新测试、备份目录删除、dist-beta 删除、dist-stable .d.ts 变更、ci.yml 修改等)。
引擎 API /www/wwwroot/cgajs-api cgajs-api.service 运行中(127.0.0.1:8010,4 workers)。 已具备 /api/v1/parse/compile/engine/run/geometry/compare/nl2cga/*/webhooks/rulepackage/cga-corpus/status
NL2CGA 微服务 /www/wwwroot/nl2cga-service 独立微服务代码完整(监听 8020 端口),当前未启动。 由于 cgajs-api 已内嵌 NL2CGA 端点,该独立服务处于休眠状态。
前端站点 /www/wwwroot/www.cgajs.com 页面完整(ide/nl2cga/omega/admin 等)。 ide.html 当前加载 /cgajs-engine/dist/index.js?v=30, 而 site-version.json 中 engine 为 28,存在版本号不一致。
CGA 语料 /www/wwwroot/cgajs-engine/tests/cga-corpus 533 个 .cga 文件已通过 symlink 引入,/api/v1/cga-corpus 可返回 1000 条资产记录, CgaAsset 表已有 1213 条记录。但缺少自动刷新机制,与 rulepackage.com 的 webhook 尚未打通。
共享记忆 /www/wwwroot/shared-memory cgajs.com 承载 bare repo,rulepackage.com 与 cgajs.com 均保持同步, updata.html / architecture-report.html / disaster-recovery-plan.html 两站一致。

8.2 与目标架构的差距

问题风险目标状态
引擎源码 448 条未提交变更 重启/误操作可能丢失大量新功能与测试;无法通过 CI 复现当前状态。 提交所有有效变更,删除备份目录与 dist-beta,建立干净可回滚的 git 历史。
版本号不一致 用户可能加载旧缓存或错误构建产物;rulepackage.com 仍使用 v24。 site-version.json 与 importmap 版本戳一致;两站 engine 版本同步。
NL2CGA 独立服务未启动 如果 cgajs-api 内嵌端点负载过高或需要隔离,无备用方案;nl2cga.cgajs.com 子域不可用。 明确 NL2CGA 运行形态:要么启动独立服务并配置 Nginx,要么从架构中移除独立服务。
rulepackage.com webhook 未发送 cgajs.com 的语料 / Marketplace 缓存无法实时更新,只能依赖夜间 rsync。 rulepackage.com 在资产变更时向 cgajs.com /api/v1/webhooks/rulepackage 推送事件。
Omega golden case 未主动拉取 rulepackage.com 上传的 golden cases 不会自动进入 cgajs.com CI。 cgajs.com 定时从 rulepackage.com /api/v1/omega/sync-to-cgajs 拉取并导入。
parser ambiguity 警告 测试输出中有大量 [Parser Ambiguity] 警告,虽不失败但表明语法存在二义性,长期可能引发难以定位的 bug。 逐步修复高频 ambiguity,或在测试报告中显式跟踪。
缺少 promote-to-prod 脚本 引擎构建产物从 dist 到生产缺少标准化流程。 新增 scripts/promote-to-prod.sh:build → 测试 → 复制 dist 到 dist-stable → bump site-version → 同步到 rulepackage.com。

8.3 修复方案

P0:引擎仓库清理与提交(1 天)

  1. 在 cgajs.com 上进入 /www/wwwroot/cgajs-engine,先运行完整备份:
    tar czf /root/cgajs-engine-pre-commit-$(date +%Y%m%d).tgz /www/wwwroot/cgajs-engine
  2. 删除历史备份目录:
    git rm -r src/_src_backup_*
    rm -rf src/_src_backup_*
  3. 确认 dist-beta 删除意图并提交:
    git rm -r dist-beta
    rm -rf dist-beta
  4. 重建 dist-stable
    npm run build
    rsync -av --delete dist/ dist-stable/
  5. 分批次提交:
    git add src/ tests/
    git commit -m "feat(engine): insert/inset/convert/asset-loader and comprehensive test suite"
    git add dist-stable/
    git commit -m "chore(dist): rebuild dist-stable from latest source"
    git add .github/workflows/ci.yml cli-wrapper.cjs
    git commit -m "ci(cli): stricter CI and workspace resolver support"
  6. 清理未跟踪的临时文件(debug_*.mjs 等已删除,无需额外处理)。

P1:统一引擎版本并同步到 rulepackage.com(1 天)

  1. 在 cgajs.com 新增 /www/wwwroot/cgajs-engine/scripts/promote-to-prod.sh
    #!/bin/bash
    set -e
    cd /www/wwwroot/cgajs-engine
    npm run build
    npm test
    rsync -av --delete dist/ dist-stable/
    NEW_V=$(date +%s)
    echo '{"engine":"'"$NEW_V"'",...}' > /www/wwwroot/www.cgajs.com/site-version.json
    # 同步到 rulepackage.com
    rsync -av --delete dist-stable/ root@8.216.94.109:/www/wwwroot/cgajs-engine/dist-stable/
    rsync -av --delete dist/ root@8.216.94.109:/www/wwwroot/cgajs-engine/dist/
    scp /www/wwwroot/www.cgajs.com/site-version.json root@8.216.94.109:/www/wwwroot/www.rulepackage.com/site-version.json
    # 更新 rulepackage.com ide.html 的 importmap 版本戳(可选:改为动态读取 site-version.json)
  2. 运行 promote-to-prod,使 rulepackage.com 的 engine 版本从 v24 升级到与 cgajs.com 一致。
  3. 修改 www.cgajs.com/ide.htmlwww.rulepackage.com/ide.html,让 importmap 的 ?v=site-version.json 读取,避免未来手动改版本戳。

P2:NL2CGA 服务形态决策(0.5 天)

在做出选择前,先压测 /api/v1/nl2cga/generate 确认内嵌端点是否满足并发需求。

P3:打通 rulepackage.com → cgajs.com 实时同步(1 天)

  1. 在 cgajs.com 环境变量中配置 RULEPACKAGE_WEBHOOK_SECRET(两个服务器共享同一密钥,存于 /etc/cgajs/cgajs-api.env)。
  2. 在 rulepackage.com cgajs-api 中新增 webhook 发送逻辑:
    • CGA 资产创建/更新/删除时调用 cgajs.com POST /api/v1/webhooks/rulepackage
    • Omega 批次完成时调用 cgajs.com /api/v1/omega/sync-to-cgajs
  3. 在 cgajs.com 新增 cron:每 5 分钟拉取 rulepackage.com Omega reports,兜底夜间 backup-files.sh

P4:CGA 语料索引持续维护(0.5 天)

  1. 确保 cgajs.com /api/v1/cga-corpus 在新增资产后自动重新索引(webhook 触发或每晚 cron)。
  2. 将解析/渲染状态写回 CgaAsset 表,标记 nl2cga_readycompile_status

P5:parser ambiguity 与长期质量(持续)

  1. 在 CI 中增加 ambiguity 统计:收集测试 stderr 中的 [Parser Ambiguity] 数量,禁止新增。
  2. 为高频 ambiguity 用例建 issue,逐步调整 grammar 或源码写法。

8.4 预期修复后的验收标准

检查项验收标准
git 干净程度git status --short 只剩 dist/ 等正常构建产物或为空。
引擎测试npm test 全部通过(68/68 文件,1285/1285 测试)。
版本一致site-version.jsonengine 与 ide.html importmap ?v= 一致;两站一致。
API 可用/api/v1/status/api/v1/parse/api/v1/nl2cga/health/api/v1/cga-corpus 均 200。
同步实时rulepackage.com 新增/修改资产后,cgajs.com /api/v1/cga-corpus 60 秒内可见。
Omega 闭环rulepackage.com 完成 Omega 批次后,cgajs.com tests/golden/omega-imports/ 自动出现该批次。

8.5 立即可以做的 3 件事

  1. 在 cgajs.com 执行 git status --short | wc -l,确认 448 条变更;备份后分批提交。
  2. 配置 RULEPACKAGE_WEBHOOK_SECRET 并在 rulepackage.com 加 webhook 发送。
  3. 运行一次 scripts/promote-to-prod.sh,把 cgajs.com 最新 dist-stable 同步到 rulepackage.com,统一 engine 版本。

九、rulepackage.com 能力矩阵与发展路线图

rulepackage.com 不只是“存 CGA 文件”,而是 CGA 资产、测试体系、共享记忆与跨站同步的控制中心。下面是已实现能力、实现方式,以及下一步可开发的功能。

9.1 当前能力矩阵

能力实现方式状态
CGA 文件权威仓库 /www/wwwroot/marketplace.rulepackage.com/files//www/wwwroot/nl2cga-service/library//www/wwwroot/cgajs-api/nl2cga/prebuilt//www/wwwroot/cgajs-api/nl2cga/template_engine/templates/ 已上线
Omega 黄金测试体系 前端 /omega.html + 后端 omega_routes.py; 保存成功 case 到 cgajs-engine/tests/golden/omega-uploads/; 失败 case 生成 /omega/report/<batch_id> 已上线
共享记忆与任务中心 Git 仓库 /www/wwwroot/shared-memory; 通过 sync.sh pull/push 在双机同步; 包含 tasks.jsonmemory.mdupdata.htmlarchitecture-report.html 已上线
双机健康监控 /www/wwwroot/shared-memory/scripts/watchdog.sh 每分钟运行; 写入 shared-memory/health/*.jsonincidents.json 已上线
数据备份 backup-db.shbackup-files.shbackup-kimi-logs.sh; 每日 rsync 数据库、Omega/Marketplace 文件、Kimi 日志到 cgajs.com。 已上线
Marketplace 元数据化 380 个 UUID 文件尚未生成 manifest; 无自动标题、标签、预览图、质量门。 未实现
实时 webhook 推送 cgajs.com 已能接收 /api/v1/webhooks/rulepackage; rulepackage.com 尚未发送事件。 半完成
Omega 失败自动修复闭环 失败报告已生成; 未自动派发修复任务到 cgajs.com。 半完成
跨站状态仪表盘 尚未创建 /status.html 未实现

9.2 实现方式汇总

能力技术实现
文件存储文件系统 + Nginx 静态服务
Marketplace 上传FastAPI /api/v1/upload/asset,文件落盘到 marketplace.rulepackage.com/files/
Omega 上传与对比FastAPI omega_routes.py + cgajs.com /api/v1/engine/run + /api/v1/geometry/compare
黄金 case 存储文件系统 JSON:cgajs-engine/tests/golden/omega-uploads/<batch>/<case>/golden.json
共享记忆同步Git + symlink + sync.sh + cron
健康监控watchdog.sh + cron + shared-memory/health/
跨站备份rsync over SSH,通过 backup-*.sh 脚本

9.3 可进一步开发的功能

阶段功能价值实现要点
P0 Omega 失败自动修复闭环 让上传的异常 case 自动变成引擎修复任务 在 Omega 报告页加“确认修复”按钮;调用 cgajs.com API 创建 issue/测试;修复完成后回写状态。
P0 rulepackage.com → cgajs.com 实时 webhook 资产变更秒级同步 配置 RULEPACKAGE_WEBHOOK_SECRET;在 asset 增删改和 Omega 批次完成时发送 webhook。
P0 Marketplace 元数据化 UUID 文件变成可搜索、可预览的商品 scripts/enrich_marketplace.py:UUID→slug、LLM caption、参数 schema、标签分类、engine 渲染缩略图、manifest.json、质量门。
P1 CGA 语料 RAG 库 让 NL2CGA 有高质量检索语料 从 534 个文件提取描述、参数、规则片段,生成 cga-corpus.jsonl,供 cgajs.com NL2CGA 消费。
P1 参数 schema 中心 统一参数命名与 UI 控件 聚合所有 attr@Group/@Range/@Enum/@Color,生成 cga-parameter-schema.json
P1 风格分类器与语义搜索 用户能按风格/关键词找 CGA 基于目录+内容关键词自动分类;后续可接入向量检索。
P2 跨站状态仪表盘 /status.html 一眼看清两台服务器健康 展示 engine 版本、corpus 数量、parse 成功率、Marketplace 审核数、watchdog 状态、最近同步时间。
P2 Marketplace 交易与授权 商业化 价格、购买记录、下载次数、授权协议,与 cgajs.com 用户/计费体系打通。
P2 资产版本与 Diff 追踪 CGA 变更影响 每个文件支持版本历史;调用 cgajs.com 渲染对比几何差异。
P2 公开 API 门户 第三方工具接入 /api/v1/cga-corpus/api/v1/marketplace/assets 提供 API Key 访问与文档。
P3 自动化黄金测试 CI 引擎更新后自动回归 cgajs.com 每次 promote 后,自动用 rulepackage.com Omega golden cases 跑 diff,失败阻断发布。
P3 渲染缩略图流水线 Marketplace 可视化 调用 cgajs.com /api/v1/engine/run 批量生成 PNG 预览图。

9.4 推荐下一步

  1. Marketplace 元数据化:先让 380 个 UUID 文件变成有标题、标签、预览图、manifest 的可售资产。
  2. 打通 webhook:配置 secret,让 rulepackage.com 资产变更实时同步到 cgajs.com。
  3. CGA 语料 RAG 库:把 534 个文件解析成 NL2CGA 可用的结构化语料。