RFC: cli-workflow 模块化重构 #93

Closed
opened 2026-05-07 16:22:15 +00:00 by xingyue · 1 comment
Owner

背景

#90 审查发现 cli-workflow 包存在多项模块化问题:dispatch 上帝模块、命令文件平铺、重复代码等。本 RFC 按优先级拆分为 4 个 Phase 逐步重构。

Phase 拆分

Phase 1: 目录重组 — 按一级子命令聚合

src/cmd-*.ts 平铺文件重组为 src/commands/{workflow,thread,cas,init}/ 目录结构。每组一个 index.ts re-export。

  • 验证目标:文件按组归类,所有 import 路径更新,bun run check && bun test 全通过
  • Testing issue: 待创建

Phase 2: 去重 — kill/pause/resume 合并 + worker control 提取

将三个几乎一样的文件合并为 thread/control.ts,提取 readWorkerCtlworker-spawn.ts

  • 验证目标:kill/pause/resume 功能不变,代码减少 ~80 行
  • Testing issue: 待创建

Phase 3: 拆分 cli-dispatch.ts

将 777 行的 dispatch 拆为:

  • cli-usage.ts — usage 格式化
  • 各组 index.ts 承载子命令表
  • cli-dispatch.ts 只保留顶层路由 + deprecated alias

同时用 dispatch wrapper 工厂减少样板代码。

  • 验证目标:dispatch 文件 < 150 行,功能不变
  • Testing issue: 待创建

Phase 4: 收尾清理

  • bundle-store.ts 的重复 pathExists → import from fs-utils

  • thread-scan.ts 首行解析去重

  • argv 解析位置统一(内嵌 → 独立文件)

  • cmd-cas.ts 清理 _threadId 残留参数

  • deprecate help 命令(已被 skill 取代)

  • cmd-init.ts 模板内容分离到 init/templates.ts

  • cmd-live.ts 颜色工具提取到 cli-color.ts

  • 验证目标:bun run check && bun test 通过,无 lint warning

  • Testing issue: 待创建

完成标准

  • 所有 Phase 的 testing issue 已 close
  • bun run check 无 error
  • bun test 全通过
  • CLI 所有命令功能不变(纯重构)

Ref

  • #90 模块化审查
## 背景 #90 审查发现 `cli-workflow` 包存在多项模块化问题:dispatch 上帝模块、命令文件平铺、重复代码等。本 RFC 按优先级拆分为 4 个 Phase 逐步重构。 ## Phase 拆分 ### Phase 1: 目录重组 — 按一级子命令聚合 将 `src/cmd-*.ts` 平铺文件重组为 `src/commands/{workflow,thread,cas,init}/` 目录结构。每组一个 `index.ts` re-export。 - 验证目标:文件按组归类,所有 import 路径更新,`bun run check && bun test` 全通过 - Testing issue: 待创建 ### Phase 2: 去重 — kill/pause/resume 合并 + worker control 提取 将三个几乎一样的文件合并为 `thread/control.ts`,提取 `readWorkerCtl` 到 `worker-spawn.ts`。 - 验证目标:kill/pause/resume 功能不变,代码减少 ~80 行 - Testing issue: 待创建 ### Phase 3: 拆分 cli-dispatch.ts 将 777 行的 dispatch 拆为: - `cli-usage.ts` — usage 格式化 - 各组 `index.ts` 承载子命令表 - `cli-dispatch.ts` 只保留顶层路由 + deprecated alias 同时用 dispatch wrapper 工厂减少样板代码。 - 验证目标:dispatch 文件 < 150 行,功能不变 - Testing issue: 待创建 ### Phase 4: 收尾清理 - `bundle-store.ts` 的重复 `pathExists` → import from `fs-utils` - `thread-scan.ts` 首行解析去重 - argv 解析位置统一(内嵌 → 独立文件) - `cmd-cas.ts` 清理 `_threadId` 残留参数 - deprecate `help` 命令(已被 `skill` 取代) - `cmd-init.ts` 模板内容分离到 `init/templates.ts` - `cmd-live.ts` 颜色工具提取到 `cli-color.ts` - 验证目标:`bun run check && bun test` 通过,无 lint warning - Testing issue: 待创建 ## 完成标准 - [ ] 所有 Phase 的 testing issue 已 close - [ ] `bun run check` 无 error - [ ] `bun test` 全通过 - [ ] CLI 所有命令功能不变(纯重构) ## Ref - #90 模块化审查
Author
Owner

Testing Issues 已创建

  • Phase 1: #94 — 目录重组
  • Phase 2: #95 — kill/pause/resume 合并
  • Phase 3: #96 — 拆分 cli-dispatch.ts
  • Phase 4: #97 — 收尾清理

另外确认:help 命令目前已被 skill 取代(skill 有 cli/develop/author 三个 topic),help 无参数等于显示 usage,help --skill 转发到 skill。Phase 4 中会把 help 标记为 deprecated。

## Testing Issues 已创建 - Phase 1: #94 — 目录重组 - Phase 2: #95 — kill/pause/resume 合并 - Phase 3: #96 — 拆分 cli-dispatch.ts - Phase 4: #97 — 收尾清理 另外确认:`help` 命令目前已被 `skill` 取代(skill 有 cli/develop/author 三个 topic),`help` 无参数等于显示 usage,`help --skill` 转发到 `skill`。Phase 4 中会把 `help` 标记为 deprecated。
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/workflow#93