在这里插入图片描述

在这里插入图片描述

子玥酱 (掘金 / 知乎 / CSDN / 简书 同名)

大家好,我是 子玥酱,一名长期深耕在一线的前端程序媛 👩‍💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚焦于业务型系统的工程化建设与长期维护。

我持续输出和沉淀前端领域的实战经验,日常关注并分享的技术方向包括 前端工程化、小程序、React / RN、Flutter、跨端方案
在复杂业务落地、组件抽象、性能优化以及多端协作方面积累了大量真实项目经验。

技术方向:前端 / 跨端 / 小程序 / 移动端工程化
内容平台:
掘金、知乎、CSDN、简书
创作特点:
实战导向、源码拆解、少空谈多落地
文章状态:
长期稳定更新,大量原创输出

我的内容主要围绕 前端技术实战、真实业务踩坑总结、框架与方案选型思考、行业趋势解读 展开。文章不会停留在“API 怎么用”,而是更关注为什么这么设计、在什么场景下容易踩坑、真实项目中如何取舍,希望能帮你在实际工作中少走弯路。

子玥酱 · 前端成长记录官 ✨
👋 如果你正在做前端,或准备长期走前端这条路
📚 关注我,第一时间获取前端行业趋势与实践总结
🎁 可领取 11 类前端进阶学习资源(工程化 / 框架 / 跨端 / 面试 / 架构)
💡 一起把技术学“明白”,也用“到位”

持续写作,持续进阶。
愿我们都能在代码和生活里,走得更稳一点 🌱

引言

过去一年,大模型越来越强,Agent 也越来越聪明。

从:

ChatBot
↓

Copilot
↓

AI Agent
↓

Multi-Agent

整个 AI 应用开始从:

回答问题

逐渐演变成:

持续完成任务

但很多团队真正把 Agent 部署到业务后,很快都会遇到同一个问题。

Agent 为什么越来越容易"失控"?例如:

重复调用 Tool

重复规划

无限重试

任务永远无法结束

多个 Agent 相互等待

这些问题看起来像:

Prompt 不够好

实际上却是:

Runtime 架构问题

根本原因只有一个:

Agent 没有"状态(State)"。

很多开发者理解的 Agent 是:

User

↓

LLM

↓

Tool

↓

Answer

而真正企业级 Agent Runtime 更像:

State

↓

Decision

↓

Action

↓

State

也就是说:

驱动 Agent 的不是 Prompt,而是 State。

越来越多 Agent Runtime 都开始引入:

FSM

State Machine

Workflow Engine

Behavior Tree

本质都在解决同一个问题:

如何让 Agent 的行为变得可预测、可恢复、可治理。

一、为什么 Agent 会失控

来看一个简单流程:

用户:

帮我生成学习计划

Agent:

Planner

↓

Search

↓

Generate

↓

Reminder

看起来很简单。但是,如果:

Search 失败

怎么办?重新执行?继续等待?结束?很多 Demo:

直接 Retry

于是:

Retry

↓

Retry

↓

Retry

形成:

无限循环

这是很多 Agent Framework 第一版都会踩的坑。

二、没有 State 的 Agent 本质上是无状态脚本

很多开发者实现 Agent:

await planner()

await search()

await summarize()

await notify()

整个流程:

Function

↓

Function

↓

Function

问题来了,系统根本不知道:

现在执行到哪里?

失败了吗?

是否已经完成?

还能不能恢复?

整个 Runtime 没有任何:

State

所以,任何异常都会导致:

整个流程重来

三、State Machine 到底是什么

State Machine 本质只有一句话:

任何时刻,系统都必须知道自己当前处于什么状态。

例如:

Idle

表示:

等待任务

收到任务:

Planning

Planner 完成:

Executing

Tool 完成:

Waiting Feedback

全部结束:

Completed

整个 Agent 始终只有:

一个当前状态

而不是:

一堆函数

四、企业级 Agent Runtime 的状态流转

推荐设计如下:

              Idle
                │
                ▼
          Intent Parsing
                │
                ▼
            Planning
                │
                ▼
          Tool Executing
                │
        ┌───────┴────────┐
        ▼                ▼
   Waiting Result     Failed
        │                │
        ▼                ▼
     Completed        Retrying
                         │
                         ▼
                     Executing

每一次状态切换,都属于:

State Transition

而不是:

函数调用

五、状态驱动比流程驱动更可靠

传统 Workflow:

A

↓

B

↓

C

任何一步失败,整个流程:

终止

状态机:

State

↓

Transition

↓

Next State

失败:

Executing

↓

Retrying

超时:

Retrying

↓

Failed

恢复:

Failed

↓

Executing

整个 Runtime 不会丢失上下文。

六、鸿蒙 App 为什么更适合状态驱动

HarmonyOS 本身就是典型的:

State Driven

ArkUI:

@State

@Observed

@ObjectLink

页面本质就是:

State

↓

UI

AI Native App 其实也是:

State

↓

Agent

↓

UI

例如,学习助手:

Planning

↓

ArkUI

显示:

"正在规划课程..."

状态改变:

Executing

UI 自动刷新:

"正在生成学习计划..."

整个页面,无需:

if

else

刷新页面

状态变化,即可驱动 UI。

七、State Store:整个 Runtime 的核心

推荐设计:

               Runtime
                   │
            State Store
                   │
     ┌─────────────┼─────────────┐
     ▼             ▼             ▼
 Planner      Scheduler      Memory
     ▼             ▼             ▼
             Agent Runtime

所有 Agent 统一读取:

Current State

统一修改:

Transition

而不是:

直接修改变量

八、ArkTS 如何实现状态机

定义状态:

enum AgentState {
  Idle,
  Planning,
  Executing,
  Waiting,
  Completed,
  Failed
}

状态管理:

class StateMachine {

  private state = AgentState.Idle

  transition(next: AgentState) {
    this.state = next
  }

  current() {
    return this.state
  }
}

Agent 执行:

machine.transition(AgentState.Planning)

// Planner...

machine.transition(AgentState.Executing)

// Tool Calling...

machine.transition(AgentState.Completed)

相比直接调用函数,这种方式最大的优势是:

  • 状态可追踪。
  • 可以恢复中断任务。
  • 可以记录完整执行链路。
  • 可以驱动 UI 与日志系统。

九、状态机如何与 Planner、Memory、Context 协同

Planner 负责:

决定做什么

Memory Center 负责:

保存长期知识

Context Engine 负责:

组织运行时上下文

而 State Machine 的职责则是:

决定当前系统处于什么阶段

完整协作流程如下:

Goal
  │
  ▼
Planner
  │
  ▼
Task Graph
  │
  ▼
State Machine
  │
  ├──────────────┐
  ▼              ▼
Memory      Context Engine
  │              │
  └──────┬───────┘
         ▼
      Agent Runtime
         ▼
        Tools

也就是说:

  • Planner 决定任务。
  • State Machine 决定生命周期。
  • Memory 提供历史经验。
  • Context 提供当前环境。

四者共同组成 Runtime 的核心。

十、为什么未来 Agent Runtime 都会采用状态驱动

如果观察现代系统的发展,会发现一个共同规律。

传统 App:

页面驱动

现代前端:

状态驱动

云原生:

Desired State

Kubernetes:

Actual State

↓

Desired State

而 Agent Runtime 也正在朝着同样方向发展:

Current State

↓

Transition

↓

Target State

因为只有状态驱动,系统才能具备:

可恢复

可观测

可调度

可治理

这也是企业级 Agent 与 Demo 最大的区别。

十一、HarmonyOS AI Native Runtime 的完整架构

结合整个系列,一个完整的鸿蒙 AI Native Runtime 可以设计为:

                    Goal
                      │
                      ▼
                   Planner
                      │
                 Task Graph
                      │
                      ▼
               State Machine
                      │
      ┌───────────────┼────────────────┐
      ▼               ▼                ▼
 Context Engine   Memory Center   Supervisor
      │               │                │
      └───────────────┼────────────────┘
                      ▼
                 Agent Runtime
                      ▼
                  Agent Bus
                      ▼
                 Tool Manager
                      ▼
                    ArkUI

这里,State Machine 不再只是一个简单的 FSM,而是整个 Runtime 的生命周期管理中心。

总结

如果用一句话理解 State Machine:

State Machine 不是为了控制流程,而是为了管理 Agent 的生命周期。

过去,我们开发 App:

Button

↓

Function

今天,我们开发 Agent:

Goal

↓

State

↓

Action

未来,我们构建 AI Native 应用:

Goal

↓

Planner

↓

State Machine

↓

Runtime

↓

Agent Team

最终,真正决定一个 Agent 是否能够长期稳定运行的,并不是模型有多强,而是:

它是否拥有一套可观测、可恢复、可扩展的状态驱动架构。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐