Wegent任务状态机源码解读:一个AI编码任务的完整生命周期指南

发布时间:2026/10/25 12:03:59

Wegent任务状态机源码解读:一个AI编码任务的完整生命周期指南 【免费下载链接】WegentPlan, build, and deliver with an open-source, self-hostable AI workspace for coding, collaboration, and automation.项目地址https://gitcode.com/gh_mirrors/we/Wegent点击查看免费下载Wegent 是一个开源、可自托管的 AI 工作空间AI workspace核心能力包括 AI 编码、团队协作与自动化交付。本文面向新手带你读懂 Wegent 的任务状态机Task State Machine源码一个 AI 编码任务从创建PENDING到执行RUNNING再到**交付COMPLETED**或异常分支FAILED / CANCELLED的完整生命周期。你将理解 8 种任务状态的流转规则、Pipeline 多 Agent 流水线中的确认机制以及卡死任务如何被自动恢复。任务状态机总览8种状态一览 Wegent 用一张清晰的状态枚举表定义了任务的全部生命周期节点。它定义在后端 schemas/task.py 中状态英文值含义是否是终态待执行PENDING任务已创建排队等待调度否执行中RUNNINGBot 正在沙箱/执行器中干活否已完成COMPLETED全部工作交付完毕✅已失败FAILED执行出错附带错误信息✅取消中CANCELLING用户发起取消正在收尾过渡态已取消CANCELLED任务已被终止✅待确认PENDING_CONFIRMATION流水线阶段完成等待用户确认否已删除DELETE软删除标记✅其中COMPLETED、FAILED、CANCELLED、DELETE四个状态被 chat/operations/cancel.py 中的_TASK_FINAL_STATES声明为终态——一旦进入任务不会再醒来。Wegent 桌面端界面任务从左侧列表发起底部终端实时展示执行过程阶段一创建与初始化PENDING任务创建时后端不会直接让它跑起来而是先落库为PENDING。核心流程在 chat/storage/task_manager.py创建时写入的初始 CRD 里status.status就是PENDINGprogress为 0状态并不是独立的数据库字段而是整体存放在任务的CRD JSON类 Kubernetes 风格的自定义资源文档的status块中progress、errorMessage、completedAt、updatedAt都与之同居。统一的状态写入工具函数集中在 services/task_status.py例如mark_task_pending重置进度为 0、清空错误信息、mark_task_failed记录错误信息并写入completedAt、mark_task_completed进度置 100%。这套payload 先算好再写回的设计保证了任何分支修改状态时行为一致。Wegent 项目空间任务在这里创建并被分配给 AI 团队阶段二调度执行RUNNING任务被分配到 Bot 后进入RUNNING。执行期间有两个值得新手注意的细节1. 流式结果实时落库。在 chat/storage/db.py 的save_partial_response中Bot 的响应以部分内容 streaming 标志的形式持续写入子任务Subtask前端因此能逐字看到 AI 输出。2. 子任务与任务是两层状态机。schemas/subtask.py 中的SubtaskStatus与任务状态几乎同构PENDING / RUNNING / COMPLETED / FAILED / CANCELLED。任务的状态其实是由子任务状态聚合推导出来的——子任务完成了策略层才会决定任务该进入哪个状态。阶段三完成判定与协作策略这是状态机最精巧的部分。子任务完成后任务并不会无脑变成COMPLETED而是要经过 chat/storage/db.py 中的状态聚合逻辑new_status, progress strategy.get_task_status_on_subtask_complete( db, task_id, last_subtask.id, subtask_status_str )即由CollaborationStrategy协作策略根据团队模式计算新状态。随后若新状态是COMPLETED、CANCELLED或PENDING_CONFIRMATION写入completedAt时间戳若子任务是FAILED则把error_message透传到任务级用户能在界面看到失败原因。单 Bot 任务通常一步到位走向COMPLETED而多 Bot 团队任务就要走下面的流水线分支了。Pipeline 流水线多Agent接力与待确认分支 当团队以Pipeline 模式组建时如规划 Bot → 编码 Bot → 审查 Bot任务生命周期中会插入一种特殊状态——PENDING_CONFIRMATION。Wegent 团队管理界面Pipeline 模式下多个 Bot 首尾相连逐个接力完成任务整个流水线机制由 adapters/pipeline_stage.py 的PipelineStageService管理关键规则有三条1. 当前阶段是唯一的事实来源。任务 JSON 的spec.currentStage记录当前进行到第几个 Botget_current_stage_index会读取它并做越界保护所有界面展示、阶段推进都只认这一个字段。2. 阶段完成 ≠ 任务完成。should_set_pending_confirmation_on_complete会检查当前阶段是否配置了requireConfirmation如果是且不是最后一个阶段那么子任务完成后任务状态被置为PENDING_CONFIRMATION而非继续执行——把方向盘交还给人类。3. 用户确认后推进或收官。点击确认后pipeline_confirm校验任务确实处于PENDING_CONFIRMATION否则拒绝然后若是最后一个阶段任务直接进入COMPLETEDprogress置 100写入completedAt否则把currentStage加 1状态回落到PENDING并通过build_pipeline_context_prompt生成交接信息handoff message让下一个 Bot 带着上一阶段的成果继续干活。此外还有pipeline_auto_advance未要求确认的阶段完成后自动接力无需人工点击。任务执行完毕进入交付环节变更统计、提交推送与待确认状态一目了然失败与取消如何优雅地刹车 失败分支子任务FAILED时错误信息被聚合到任务级任务标记为FAILED并记录completedAt。用户可以在界面上查看失败原因并借助 chat/operations/retry.py 发起重试。取消分支取消不是一步到位而是一个两阶段状态机用户点击取消 → 任务进入CANCELLING表示正在通知执行器、等待收尾执行器确认停止后chat/operations/cancel.py 把未完结的 assistant 子任务统一标记为CANCELLED任务随之变为CANCELLED并发布TaskCompletedEvent(CANCELLED)事件通知前端。还有一个贴心的兜底如果任务在CANCELLING状态卡住比如执行器失联CANCELLING_STUCK_TIMEOUT_SECONDS超时机制会在空闲超时后强制将其就地终结避免任务永远卡在取消中。状态守护防止乱序更新状态机之所以可靠靠的是守卫条件。例如在 chat/storage/task_manager.py 中check_task_status当任务处于RUNNING或PENDING时拒绝某些变更操作Task is still running恢复/兜底逻辑会检查任务 JSON 里的实际状态防止执行器已经跑完、状态却仍停留在PENDING/RUNNING的僵尸任务。配合 WebSocket 事件推送前端列表页能实时看到任务状态的每一次合法迁移。一图总结任务生命周期状态流转┌────────────────────────────────────────┐ │ Pipeline 模式多Bot接力 │ │ │ 创建 ──▶ PENDING ──▶ RUNNING ──▶ PENDING_CONFIRMATION ──▶ 下一阶段 PENDING │ │ │ │ │ │ └──(最后阶段)──▶ COMPLETED ◀┘ │ └──▶ COMPLETED单Bot/普通任务直接完成 │ ├──▶ FAILED执行出错可重试 │ ├──▶ CANCELLING ──▶ CANCELLED含卡死超时兜底 │ └──▶ DELETE软删除写在最后Wegent 的任务状态机看似只是 8 个枚举值实则是一套完整的设计CRD JSON 承载状态currentStage作为流水线单一事实来源子任务 → 任务两级聚合协作策略决定终态PENDING_CONFIRMATION把人类留在决策回路里两阶段取消 超时兜底保证状态机永远能走到头。如果你想动手阅读源码建议按这条路径走schemas/task.py状态定义→ services/task_status.py状态写入工具→ adapters/pipeline_stage.py流水线推进→ chat/operations/cancel.py取消收尾基本就能串起整个生命周期。更多背景资料可参考 backend/README.md 与 docs/README.md以及流水线推进逻辑 chat/pipeline_advance.py。赞分享【免费下载链接】WegentPlan, build, and deliver with an open-source, self-hostable AI workspace for coding, collaboration, and automation.项目地址https://gitcode.com/gh_mirrors/we/Wegent点击查看免费下载相关推荐BullMQ任务状态机基于有限状态机的任务生命周期管理BullMQ任务状态机基于有限状态机的任务生命周期管理 在分布式系统中任务的可靠执行离不开完善的状态管理机制。BullMQ作为基于Redis的消息队列和批处后端任务调度消息队列Celery Worker 内部状态机制全解析从 celery.worker.state 源码读懂任务生命周期、撤销与持久化Celery Worker 内部状态机制全解析从 celery.worker.state 源码读懂任务生命周期、撤销与持久化 celery.worker.st后端任务调度消息队列Apache Mesos任务状态管理终极指南深入理解任务生命周期和状态转换Apache Mesos任务状态管理终极指南深入理解任务生命周期和状态转换 Apache Mesos作为开源的集群管理框架为开发者提供了高效的资源隔离和共享集群管理云原生任务调度创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/25 12:03:59

大模型考点精讲:从Transformer原理到LoRA微调与RAG部署实战

我这两年带过不少零基础转行的人学大模型,也在几个技术社群里长期答疑。见得最多的不是学不会,而是学了一堆零碎名词,到了考试或面试时拼不起来,卡在“知道但说不出所以然”的状态。这篇文章我按考点精讲的思路,把大模…

2026/10/25 12:03:59

LLM大模型面试必问的8个核心问题深度拆解与准备策略

1. 为什么这8个问题成了LLM面试的硬门槛面过LLM岗位的人大概都有体会:简历上写着“熟悉Transformer”“做过RAG”“调过Agent”,结果面试官几个问题下来,冷汗就冒出来了。不是问得偏,而是问得深——深到你必须真正理解过底层机制、…

2026/10/25 12:59:29

分布外泛化(OOD)全解析:从ERM失效到领域泛化与不变性学习

简介:这份资源是清华大学崔鹏团队等学者撰写的《Towards Out-Of-Distribution Generalization: A Survey》综述论文PDF,面向深度学习研究者、算法工程师及高年级学生,系统回应现实场景中训练与测试数据分布不一致、经典i.i.d.假设失效导致模型…

2026/10/25 12:59:29

DeepSeek R1 实测指南:7种接入路径、4个关键参数与3类翻车修复

简介:本资源是一份面向AI开发者、数据科学家与内容创作者的DeepSeek R1实战指南,系统梳理模型获取路径、部署方式与高阶应用技巧,解决用户在模型调用、本地适配及创意落地中的核心痛点。PDF文档共1个文件,大小567KB,轻…

2026/10/25 12:59:29

生成式引擎优化(GEO):品牌知识如何成为AI答案的可信源

1. 这不是又一个“AI搜索”概念炒作,而是品牌流量获取逻辑的底层重写 最近在给三家不同行业的客户做数字营销复盘时,我反复听到同一句话:“我们内容没少发,SEO也一直做,但新用户从搜索进来的比例,连续八个…

2026/10/25 12:59:29

WorkBuddy Space-Bunny:语义级匿名化引擎解析

1. WorkBuddy 与 Space-Bunny 的真实关系:不是“独家接入”,而是能力层融合最近在多个技术社区和开发者群聊里,频繁刷到一条标题:“腾讯 WorkBuddy 独家接入匿名模型 Space-Bunny,限时折扣至 10 月 7 日”。初看容易误…

2026/10/25 12:59:29

深度强化学习解决三维装箱问题的算法与实践

1. 项目概述:当深度强化学习遇上三维装箱难题三维在线装箱问题(3D Online Bin Packing)是物流、仓储和资源调度领域的经典NP难问题。想象一下你正在玩一个没有暂停按钮的俄罗斯方块游戏——箱子源源不断地从传送带上运来,你必须立…

2026/10/25 12:54:29

大模型知识库问答:RAG全链路与工程实践解析

简介:基于大语言模型与RAG(检索增强生成)的知识库问答系统,专门面向需要为企业构建私有知识库问答能力的开发者与运维人员,重点解决大模型在实际应用中常见的幻觉问题,以及私有文档难以直接用于模型训练与推…

2026/10/25 0:02:22

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/25 0:02:23

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/25 0:02:23

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/25 0:02:22

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/25 0:02:23

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/25 0:02:23

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑