RFC-005 Phase 2: workflow-utils — 适配新 Role 签名 + 提取 createRole 通用方法 #269

Closed
opened 2026-04-30 06:51:39 +00:00 by xiaomo · 0 comments
Owner

目标

更新 @uncaged/nerve-workflow-utils 中所有 role creator,适配新签名,提取通用的 createRole(agent, identity, extract) 方法。

变更范围

packages/workflow-utils/src/role-*.ts

具体任务

  1. 更新 role-types.ts

    • CliPromptFnLlmPromptFn 签名从 (threadId: string) 改为 (ctx: ThreadContext) — 让 prompt 构造函数能访问完整上下文
    • isDryRun 适配(dryRun 移到哪取决于 Phase 1 最终决定)
    • 新增 LlmExtractor 类型
  2. 提取通用 createRole<M>(agent: AgentFn, identity, extract: LlmExtractor): Role<M>

  3. 重构 4 个 role creator 适配 (ctx: ThreadContext) 签名:

    • createCursorRole — 内部构造 AgentFn(调用 cursor-agent CLI)
    • createHermesRole — 内部构造 AgentFn(调用 hermes CLI)
    • createLlmRole — 内部构造 AgentFn(调用 LLM API)
    • createReActRole — 内部构造 AgentFn(ReAct loop)
  4. 所有 role creator 的 llmExtract 尾部模式统一收敛到 createRole 内部

  5. pnpm run check + pnpm run build 通过

验证步骤

  • createRole 通用方法已实现并导出
  • 4 个 createXxxRole 均使用新签名 (ctx: ThreadContext)
  • llmExtract 逻辑不再重复出现在每个 role creator 中
  • LlmExtractor 类型已导出
  • pnpm run build 通过
  • 现有测试通过 pnpm test

Ref: #267

## 目标 更新 `@uncaged/nerve-workflow-utils` 中所有 role creator,适配新签名,提取通用的 `createRole(agent, identity, extract)` 方法。 ## 变更范围 `packages/workflow-utils/src/role-*.ts` ## 具体任务 1. 更新 `role-types.ts`: - `CliPromptFn` 和 `LlmPromptFn` 签名从 `(threadId: string)` 改为 `(ctx: ThreadContext)` — 让 prompt 构造函数能访问完整上下文 - `isDryRun` 适配(dryRun 移到哪取决于 Phase 1 最终决定) - 新增 `LlmExtractor` 类型 2. 提取通用 `createRole<M>(agent: AgentFn, identity, extract: LlmExtractor): Role<M>` 3. 重构 4 个 role creator 适配 `(ctx: ThreadContext)` 签名: - `createCursorRole` — 内部构造 AgentFn(调用 cursor-agent CLI) - `createHermesRole` — 内部构造 AgentFn(调用 hermes CLI) - `createLlmRole` — 内部构造 AgentFn(调用 LLM API) - `createReActRole` — 内部构造 AgentFn(ReAct loop) 4. 所有 role creator 的 `llmExtract` 尾部模式统一收敛到 `createRole` 内部 5. `pnpm run check` + `pnpm run build` 通过 ## 验证步骤 - [ ] `createRole` 通用方法已实现并导出 - [ ] 4 个 `createXxxRole` 均使用新签名 `(ctx: ThreadContext)` - [ ] `llmExtract` 逻辑不再重复出现在每个 role creator 中 - [ ] `LlmExtractor` 类型已导出 - [ ] `pnpm run build` 通过 - [ ] 现有测试通过 `pnpm test` Ref: #267
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/nerve#269