Engine 目录完善 — meta workflow 生成+测试新 workflow #3

Closed
opened 2026-04-17 15:26:07 +00:00 by xiaoju · 1 comment
Owner

目标

让 meta workflow 真正能在 ~/.upulse/engine/ 里生成并测试新 workflow。

当前状态

  • Engine 目录 ~/.upulse/engine/ 已隔离,meta coder/reviewer/tester/promoter 指向该目录
  • 但 engine 目录缺少完整的 package 结构(tsconfig、test runner 配置等)
  • 生成的 workflow 文件没有标准化的测试框架

待做

  • Engine 目录初始化脚本:自动创建 package.json、tsconfig.json、测试配置
  • Workflow 模板/scaffold:新 workflow 自带测试骨架
  • Meta tester 能在 engine 目录内跑 bun test
  • Meta promoter 从 engine 目录提取成熟 workflow 到 pulse repo(手动触发)
  • 文档:engine 目录结构规范

关联

  • meta workflow roles: packages/pulse/src/workflows/roles/meta-*.ts
  • Engine init commit: d81bbe2

—— 小橘 🍊(NEKO Team)

## 目标 让 meta workflow 真正能在 `~/.upulse/engine/` 里生成并测试新 workflow。 ## 当前状态 - Engine 目录 `~/.upulse/engine/` 已隔离,meta coder/reviewer/tester/promoter 指向该目录 - 但 engine 目录缺少完整的 package 结构(tsconfig、test runner 配置等) - 生成的 workflow 文件没有标准化的测试框架 ## 待做 - [ ] Engine 目录初始化脚本:自动创建 package.json、tsconfig.json、测试配置 - [ ] Workflow 模板/scaffold:新 workflow 自带测试骨架 - [ ] Meta tester 能在 engine 目录内跑 `bun test` - [ ] Meta promoter 从 engine 目录提取成熟 workflow 到 pulse repo(手动触发) - [ ] 文档:engine 目录结构规范 ## 关联 - meta workflow roles: `packages/pulse/src/workflows/roles/meta-*.ts` - Engine init commit: `d81bbe2` —— 小橘 🍊(NEKO Team)
Author
Owner

设计讨论结论(2026-04-18)

最终架构:单目录 + git + checkpoint

放弃 git worktree / staging 多目录方案,回归简单:

~/.upulse/engine/          # 单目录,git repo
  .pulse/
    events.db              # event store
    objects/               # CAS
    projection-cache/      # gitignored,带 checkpoint
  workflows/
    coding-tdd.ts
    report.ts
  package.json             # 独立 bun package
  tsconfig.json

Projection Checkpoint

{ "lastEventId": 12345, "codeRev": "abc123", "state": {...} }
  • 定期写 checkpoint(每 100 event 或每 5 分钟)
  • 正常启动:从 checkpoint 增量 replay
  • 版本变化:从头重建

回退 = 时光机

  1. git checkout <checkpoint-commit>
  2. DELETE FROM events WHERE id > checkpoint.lastEventId → 导出到 rollback-<date>.db
  3. Projection 直接用 checkpoint state
  4. 重启 daemon
  • 不需要 tombstone / rollback event / skip unknown 逻辑
  • 导出的 sqlite 保留证据供分析
  • 外部副作用(文件改动、push、通知)不随 event 回退,需 agent 分析 dump log

实施步骤

  1. P0: Engine 目录初始化 — package.json + tsconfig + bun install
  2. P1: Projection checkpoint — checkpoint 写入/读取/codeRev 校验
  3. P2: 回退脚本upulse rollback <commit> 自动执行时光机流程
  4. P3: Meta tester 适配 — testCmd 指向 engine 目录

—— 小橘 🍊(NEKO Team)

## 设计讨论结论(2026-04-18) ### 最终架构:单目录 + git + checkpoint 放弃 git worktree / staging 多目录方案,回归简单: ``` ~/.upulse/engine/ # 单目录,git repo .pulse/ events.db # event store objects/ # CAS projection-cache/ # gitignored,带 checkpoint workflows/ coding-tdd.ts report.ts package.json # 独立 bun package tsconfig.json ``` ### Projection Checkpoint ```json { "lastEventId": 12345, "codeRev": "abc123", "state": {...} } ``` - 定期写 checkpoint(每 100 event 或每 5 分钟) - 正常启动:从 checkpoint 增量 replay - 版本变化:从头重建 ### 回退 = 时光机 1. `git checkout <checkpoint-commit>` 2. `DELETE FROM events WHERE id > checkpoint.lastEventId` → 导出到 `rollback-<date>.db` 3. Projection 直接用 checkpoint state 4. 重启 daemon - 不需要 tombstone / rollback event / skip unknown 逻辑 - 导出的 sqlite 保留证据供分析 - 外部副作用(文件改动、push、通知)不随 event 回退,需 agent 分析 dump log ### 实施步骤 1. **P0: Engine 目录初始化** — package.json + tsconfig + bun install 2. **P1: Projection checkpoint** — checkpoint 写入/读取/codeRev 校验 3. **P2: 回退脚本** — `upulse rollback <commit>` 自动执行时光机流程 4. **P3: Meta tester 适配** — testCmd 指向 engine 目录 —— 小橘 🍊(NEKO Team)
This repo is archived. You cannot comment on issues.
No Label
1 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/pulse#3