#39 Phase 2: resume completed thread(衔尾蛇) #43

Closed
opened 2026-06-04 06:04:59 +00:00 by xiaoju · 0 comments
Owner

Parent: #39
Depends on: #40, #41, #42

目标

uwf thread resume 支持 completed 状态的 thread,从 $START 重新进入 graph。

改动

packages/cli/src/commands/thread.tscmdThreadResume

现在 resume 只认 suspended 状态:

if (status !== "suspended") {
  fail(`thread is not suspended: ${threadId} (status: ${status})`);
}

改为同时支持 completed:

if (status !== "suspended" && status !== "completed") {
  fail(`thread cannot be resumed: ${threadId} (status: ${status})`);
}

Suspended resume(现有逻辑不变):

  • suspendedRole 继续
  • supplement 追加到 suspendMessage

Completed resume(新逻辑):

  • 清除 completedAt tag,status 改回 idle
  • $START 进入 graph(让 moderator 根据 workflow graph 的 $START 决定 role)
  • supplement 作为 resume prompt(类似 suspend resume 的 supplement)
  • 调用 cmdThreadStepOnce 时传入 { role: startRole, prompt: resumePrompt }

resume prompt 构造

[Previous run completed. User is resuming this thread with additional context.]

<supplement content>

CLI 输出

resume completed thread 时输出提示:

Resuming completed thread (衔尾蛇: end → start)

测试

  • resume suspended thread — 行为不变(回归)
  • resume completed thread — 从 $START 开始,带 supplement
  • resume cancelled thread — 报错
  • resume idle thread — 报错

注意

  • --supplement 对 completed resume 应该是必填的(没有新信息为什么要 resume?),但先不强制,保持和 suspended resume 一致
Parent: #39 Depends on: #40, #41, #42 ## 目标 `uwf thread resume` 支持 completed 状态的 thread,从 `$START` 重新进入 graph。 ## 改动 ### `packages/cli/src/commands/thread.ts` — `cmdThreadResume` 现在 resume 只认 suspended 状态: ```typescript if (status !== "suspended") { fail(`thread is not suspended: ${threadId} (status: ${status})`); } ``` 改为同时支持 completed: ```typescript if (status !== "suspended" && status !== "completed") { fail(`thread cannot be resumed: ${threadId} (status: ${status})`); } ``` **Suspended resume**(现有逻辑不变): - 从 `suspendedRole` 继续 - supplement 追加到 suspendMessage **Completed resume**(新逻辑): - 清除 `completedAt` tag,status 改回 `idle` - 从 `$START` 进入 graph(让 moderator 根据 workflow graph 的 $START 决定 role) - supplement 作为 resume prompt(类似 suspend resume 的 supplement) - 调用 `cmdThreadStepOnce` 时传入 `{ role: startRole, prompt: resumePrompt }` ### resume prompt 构造 ``` [Previous run completed. User is resuming this thread with additional context.] <supplement content> ``` ### CLI 输出 resume completed thread 时输出提示: ``` Resuming completed thread (衔尾蛇: end → start) ``` ### 测试 - resume suspended thread — 行为不变(回归) - resume completed thread — 从 $START 开始,带 supplement - resume cancelled thread — 报错 - resume idle thread — 报错 ### 注意 - `--supplement` 对 completed resume 应该是必填的(没有新信息为什么要 resume?),但先不强制,保持和 suspended resume 一致
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: shazhou/united-workforce#43