im_wower
·
2026-03-21
T-005-worker-runner.md
1---
2task_id: T-005
3title: Worker Runner 与本地日志流
4status: done
5branch: feat/T-005-worker-runner
6repo: /Users/george/code/baa-conductor
7base_ref: main
8depends_on:
9 - T-001
10write_scope:
11 - apps/worker-runner/**
12 - packages/logging/**
13updated_at: 2026-03-21T19:41:39+0800
14---
15
16# T-005 Worker Runner 与本地日志流
17
18## 目标
19
20建立 worker-runner 的最小执行框架,使其能围绕一个 step 管理本地日志、结果结构和执行骨架。
21
22## 本任务包含
23
24- `worker-runner` 的 step request/result 结构
25- 本地 stdout/stderr/worker.log 组织方式
26- logging 包中的基础数据结构
27
28## 本任务不包含
29
30- checkpoint diff 逻辑
31- 真实 Codex 集成细节
32- control API 上报
33
34## 建议起始文件
35
36- `apps/worker-runner/src/index.ts`
37- `packages/logging/src/index.ts`
38- `DESIGN.md` 第 17、19 节
39
40## 交付物
41
42- worker-runner 框架骨架
43- logging 包基础结构
44
45## 验收
46
47- 能表达 step request/result
48- 能表达本地日志目录与事件模型
49
50## files_changed
51
52- `apps/worker-runner/src/index.ts`
53- `apps/worker-runner/src/contracts.ts`
54- `apps/worker-runner/src/runner.ts`
55- `apps/worker-runner/tsconfig.json`
56- `packages/logging/src/index.ts`
57- `packages/logging/src/contracts.ts`
58- `packages/logging/src/paths.ts`
59- `packages/logging/src/session.ts`
60- `packages/logging/src/state.ts`
61- `coordination/tasks/T-005-worker-runner.md`
62
63## commands_run
64
65- `npx -p typescript tsc --version`
66- `npx -p typescript tsc --noEmit -p /Users/george/code/baa-conductor-t005/packages/logging/tsconfig.json`
67- `npx -p typescript tsc --noEmit -p /Users/george/code/baa-conductor-t005/apps/worker-runner/tsconfig.json`
68- `git -C /Users/george/code/baa-conductor-t005 diff --check`
69
70## result
71
72- 建立了 `packages/logging` 的本地 run 路径约定、`meta/state` 数据结构、生命周期事件模型,以及 `worker.log/stdout.log/stderr.log` 的内存态抽象。
73- 建立了 `apps/worker-runner` 的 step request/result、prepared run、默认占位 executor 与生命周期编排,明确区分 `prepared/completed/failed/blocked` 结果。
74- 为 `T-006` 预留了 checkpoint 序号与目录接入点,但没有实现 checkpoint diff 或任何 checkpoint 内容落盘。
75
76## risks
77
78- 当前实现只定义路径、事件和内存态会话;还没有真实文件写入,因此 `meta.json`、`state.json`、各类 log 仍未持久化。
79- 当前 executor 仍是占位实现,没有接真实 Codex、Shell 或 Git worker,后续接入时还需要补真实进程生命周期与输出采集。
80
81## next_handoff
82
83- `T-006` 可以直接基于 `PreparedStepRun`、`StepCheckpointState` 和 `logPaths` 接入 checkpoint 目录写入与恢复逻辑。
84- 后续 worker 执行接入时应复用当前 `StepExecutionResult` 和 logging session 结构,把真实 stdout/stderr/worker 事件落到同一套路径与结果模型。
85
86## notes
87
88- `2026-03-21`: 创建任务卡