首页 理论 架构 工程 文档 白皮书 著作 研究 案例 下载 博客 关于 开始使用 →

第七十三章 执行引擎工程实现 WSaiOS Execution Engine Implementation

第七十三章

WSaiOS Execution Engine Implementation

执行引擎工程实现


73.1 Execution Engine概述

在第七十二章中,我们完成了:

Decision Engine

输出:

Decision Object

例如:

{
    "goal":"Improve SEO Ranking",
    "action":"Generate Local Landing Page"
}

Decision Engine只负责:

决定做什么。

Execution Engine负责:

真正把事情完成。

因此:

Execution Engine 是 WSaiOS 中唯一允许改变外部世界状态的模块。

例如:

  • 写数据库
  • 创建文章
  • 调用API
  • 发送HTTP请求
  • 执行Python模块
  • 调用WordPress接口
  • 写入日志

这些都属于Execution。


73.2 工程职责

Execution Engine负责:

Receive Action

↓

Validate

↓

Schedule

↓

Execute

↓

Collect Result

↓

Feedback

注意:

Execution Engine 不负责:

  • 推理
  • 决策
  • 学习

这些都已经结束。


73.3 Execution Engine架构

Execution Engine

        │

 ┌──────┼──────────┐

 ▼      ▼          ▼

Queue  Dispatcher Executor

                 │

                 ▼

          Result Collector

这是一个典型的软件执行流水线。


73.4 Action Object

Execution接收统一对象:

class ActionObject(CognitiveObject):

    def __init__(self):

        super().__init__()

        self.action_id=""

        self.action_type=""

        self.target=""

        self.parameters={}

        self.priority=0

        self.status="waiting"

例如:

{
    "action_type":"generate_article",
    "target":"WordPress",
    "parameters":{
        "keyword":"electric toothbrush supplier California"
    }
}

73.5 Execution Queue(执行队列)

执行引擎首先不能直接执行。

必须进入队列。

Action

↓

Execution Queue

↓

Waiting

↓

Running

↓

Finished

为什么?

因为未来:

一个系统可能:

1000个Action

↓

排队

↓

依次执行

因此:

Execution Queue 是必须存在的。

Python:

from queue import Queue

execution_queue = Queue()

73.6 Action Dispatcher(任务分发器)

Dispatcher负责:

根据Action类型:

选择执行器。

例如:

Action

↓

generate_article

↓

Content Executor

或者:

Action

↓

http_request

↓

HTTP Executor

Dispatcher:

class ActionDispatcher:

    def dispatch(self, action):

        if action.action_type=="generate_article":

            return ContentExecutor()

        elif action.action_type=="http_request":

            return HttpExecutor()

Dispatcher:

永远不知道具体业务。


73.7 Executor接口

WSaiOS规定:

所有执行器:

必须实现统一接口。

class Executor:

    def execute(self, action):

        raise NotImplementedError

任何模块:

例如:

WordPress

Python

Crawler

SEO

API

全部遵守:

execute()

接口。

这是整个WSaiOS以后插件体系的基础。


73.8 Execution Result

执行以后:

统一返回:

ExecutionResult。

class ExecutionResult:

    def __init__(self):

        self.success=False

        self.output=None

        self.error=None

        self.duration=0

例如:

{
    "success":true,
    "duration":1.35,
    "output":"Article Generated"
}

73.9 Result Collector

执行完成:

必须收集。

流程:

Executor

↓

Execution Result

↓

Result Collector

↓

Experience Manager

注意:

这里与第六十六章形成了闭环:

Experience不是Execution的一部分。

Execution只负责:

产生Result。

Experience负责:

保存Result。

职责清晰。


73.10 Action生命周期

建议统一定义整个生命周期,而不是只有状态。

Created
    │
Queued
    │
Dispatched
    │
Running
    │
Completed
    │
Archived

失败路径:

Running
    │
Failed
    │
Retry
    │
Completed

这样以后增加重试机制、超时控制都会非常自然。


73.11 工程目录

建议执行模块拆分如下:

execution/

├── engine.py                # 执行引擎入口
├── queue.py                 # 执行队列
├── dispatcher.py            # 分发器
├── executor.py              # 执行器接口
├── result.py                # 执行结果
├── lifecycle.py             # 生命周期管理
├── validator.py             # 参数校验
└── executors/
    ├── content_executor.py
    ├── http_executor.py
    ├── database_executor.py
    └── plugin_executor.py

这里的 plugin_executor.py 不再是执行架构本身,而是众多执行器中的一个,更符合软件工程设计。


73.12 最小验证实验

建立三个 Action:

Generate Article

HTTP Request

Database Save

进入:

Execution Queue。

验证:

Queue

↓

Dispatcher

↓

Executor

↓

Execution Result

↓

Experience Manager

检查:

  • Action 是否成功排队;
  • Dispatcher 是否选择正确执行器;
  • Executor 是否完成任务;
  • Result 是否完整;
  • Experience 是否收到反馈。

本章总结

第七十三章完成后,WSaiOS 的主认知链已经形成完整闭环:

Perception
      │
Memory
      │
Knowledge
      │
Reasoning
      │
Decision
      │
Execution
      │
Experience
      │
Optimization

这条链路中的每一个节点都有明确的软件职责、数据对象和接口,可以逐步实现和验证,而不是停留在概念层面。这也为后续实现 WSaiOS-Core 的最小可运行版本(MVP)奠定了完整的工程基础。

Leave a Reply

Your email address will not be published. Required fields are marked *