refactor(workflow): simplify extraction + thread runtime contract #132
Reference in New Issue
Block a user
Delete Branch "refactor/thread-context-runtime"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景
这一波是围绕 workflow 运行时契约做的连续重构,目标是:
ExtractFn背后,避免在 engine/options 暴露多余配置。WorkflowFn直接消费完整 thread 运行态(ThreadContext),由 engine 统一构造,消除ThreadInput + WorkflowFnOptions的双入参拆分。WorkflowDefinition,实例化绑定留在实例层。主要改造内容
1) 抽取链路统一到
ExtractFncreateExtract()统一走reactExtract(),不再走单独的 single extract 分支。reactExtract增加 plain-JSON schema 失败后的 correction 重试路径。WorkflowFnOptions.llmProvider,provider 仅保留在createExtract闭包。extractMode/ResolveRoleMetaFn相关路径,runtime 直接调用runtime.extract(...)。2) WorkflowFn 契约改为
ThreadContext + WorkflowRuntimeThreadInput与WorkflowFnOptions。WorkflowRuntime(cas+extract)。WorkflowFn由(input, options)改为(thread, runtime)。ThreadContext改为完整 thread 状态:threadIddepthstartstepsModeratorContext直接基于该ThreadContext。3) engine 侧统一构造 thread 运行态
executeThread内统一构造ThreadContext:startsteps4) template 边界收敛
workflow-template-develop/workflow-template-solve-issue移除create*Run。WorkflowDefinition(纯定义层)。createWorkflow(definition, binding)。5) 测试与文档同步
run签名。tool_calls提取路径,避免仅覆盖 plain-JSON 短路分支。Breaking Changes
A.
createSolveIssueRun/createDevelopRun已删除迁移方式:在实例层显式绑定。
B.
WorkflowFn签名变化旧:
新:
同时
ThreadInput与WorkflowFnOptions删除,改为ThreadContext与WorkflowRuntime。涉及提交
56ff7bcrefactor(workflow): unify extraction behind ExtractFn709961brefactor(workflow-runtime): use full ThreadContext in WorkflowFn验证
bun test全量通过:261 pass / 0 failbun test packages/workflow-template-solve-issue/__tests__/solve-issue-template.test.ts packages/workflow/__tests__/react-extract.test.tsCode Review — PR #132
✅ Looks Good
(ThreadInput, WorkflowFnOptions)→(ThreadContext, WorkflowRuntime)改得干净extractMode彻底删除,reactExtract覆盖原 single 路径 ✅?:/interface/class/console.log✅⚠️ Warnings
llmExtractWithRetry变成死代码 — 还在导出但没有生产调用了,应标记废弃或删除createSolveIssueRun删除后的迁移 — 原来自动接workflowAsAgent("develop")的逻辑没了,消费方需要手动接线,PR body 里没提这个 breaking change💡 Suggestions
putContentBlob只是store.put(raw)的包装,可以直接内联as unknown as双重 cast 有 3 处,考虑让内部函数泛型无关来消除🔴 Critical
无
—— 小橘 🍊(NEKO Team)
更新:移除了关于 dashboard 包的 warning,那是 main 上已有的代码,不属于本 PR。
709961b923toa11cc62a81根据 review 已补充修改:
llmExtractWithRetry的实现与公开导出(extract/index.ts、workflow/src/index.ts同步清理)。createSolveIssueRun/createDevelopRun删除后的实例层写法。tool_calls提取路径测试(workflow-template-solve-issue/__tests__/solve-issue-template.test.ts),避免只覆盖 plain-JSON 短路分支。新增提交:
884ff85已按review修改:1) 删除 llmExtractWithRetry 实现与公开导出;2) PR描述补充 breaking changes 与迁移方式;3) 新增 tool_calls 提取路径测试。新增提交:
884ff85已按review修改:1) 删除 llmExtractWithRetry 实现与公开导出;2) PR描述补充 breaking changes 与迁移方式;3) 新增 tool_calls 提取路径测试。新增提交:
884ff85