# 关于 Oracle 模式

## 什么是 Oracle

这是由 flowith 团队开发的最先进的、以通用人工智能（pre-AGI）为目标设计的的智能体系统，专为处理多步骤、复杂、需要使用更多工具的任务而设计。

它的功能包括自主规划任务、任务分解、无限制工具使用和自我优化。Oracle 的外部能力会不断更新和升级。使其随着时间的推移变得越来越强。

<figure><img src="https://3657150132-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAVkWkYQheefIjsWOM7id%2Fuploads%2FCIDy6htAMfmo3KDXw8ZE%2FAmazing%20Mockups.jpeg?alt=media&#x26;token=b5dd6082-4b4d-4f4a-978a-c5fc8a9bc77e" alt="" width="563"><figcaption><p>Oracle Recipe and Nodes</p></figcaption></figure>

{% hint style="info" %}
**换句话说，Oracle is a data-level**（数据层级别的、而不具备物理介质或和现实世界交互的）generalized (可以完成通用的任务、而非只有他被训练、或定义过的任务) **Agent**（不只是 LLM，可以调用工具、管理记忆、多 LLM 协作） that can complete complex tasks （不只是完成简单的问题或命令）and adapt to new situations（在新的环境或任务下可以自我学习和处理）.
{% endhint %}

## 核心概念

**Recipe 工作流**

Recipe 一词原意是指配方、烹饪方法。对于 Oracle 来说，Recipe 是指 AI 在去完成用户任务时，去执行的一套系统性工作流。当每次用户输入完需求或指令，Oracle 都会整体的指令进行拆解，根据它自身的能力和可调用的工具，把整体任务拆成一步一步自任务，然后再交给任务分配器去一步步执行。

在每次 Oracle 设计完一整套 Recipe 后，它都会与用户确认，随后才开始执行，用户在确认过程中可以直接修改 Recipe 里的具体执行步骤，包括调整顺序、删除、修改文字和增加新的步骤。

<figure><img src="https://3657150132-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAVkWkYQheefIjsWOM7id%2Fuploads%2FEFYpRO4ie9zxqLfGqxad%2F%E4%BA%A712%E5%93%81%E5%9B%BE%205.png?alt=media&#x26;token=eef0fe07-00ce-40fe-af4d-b8d5209b5823" alt="" width="563"><figcaption><p>A Recipe Generated by Oracle</p></figcaption></figure>

**Dispatcher 任务分配器**

任务分配器是指每一条 Oracle 生成的自任务在被执行时，会有一个分配任务的 Agent 把子任务进行分配和落地执行，它会从 Oracle 支持的工具库里找到最合适的工具，然后把子任务进行执行和完成。

比如，当子任务是 「搜索 flowith 在社交媒体上的用户评价」 ，任务分配器会调用 「Twitter 搜索工具」 、 「Reddit 搜索工具」 、「谷歌搜索工具」 进行对 flowith 用户评价的搜索。

你可以在 Oracle 对话发起页面中查看目前 Oracle 所支持的工具，这个列表会实时更新，我们也将持续把最有用的工具添加到 Oracle 所支持的工具库中。

{% content-ref url="oracle-mu-qian-suo-zhi-chi-de-neng-li" %}
[oracle-mu-qian-suo-zhi-chi-de-neng-li](https://doc.flowith.io/cn/oracle-mode-zhi-neng-ti-mo-shi/oracle-mu-qian-suo-zhi-chi-de-neng-li)
{% endcontent-ref %}

<figure><img src="https://3657150132-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAVkWkYQheefIjsWOM7id%2Fuploads%2FTMrTvG0vDQ7aeyQ9mim6%2F%E4%BA%A7%E5%93%81%E5%9B%BE4.jpg?alt=media&#x26;token=7a3791e7-d36f-48f0-bc6c-e65c5203315f" alt="" width="563"><figcaption><p>Tools supported by Oracle</p></figcaption></figure>

**Memory 记忆和上下文管理**

Oracle 是为复杂工作而生，因此对于步骤较多的工作，会产生大量的上下文，如果我们将所有上文内容交给 LLM，则将影响它的工作表现。

因此 Oracle 在任务分配、执行的过程中，会智能的选择性使用上文信息，比如当 Oracle 执行到第 10 步时，它的记忆管理器会判断以上哪些步骤的信息是有必要的，并将必要的信息放入当前步骤的上文。因此，你无需担心上文过长的问题。

**自我迭代和更新 Recipe**

在每一步执行完后，Oracle 都会根据每一步骤的执行结果，对整个 Recipe 进行必要的更新，比如当它没有搜到需要的信息，它会给接下来的步骤中加入更多的搜索，以便它可以顺利完成任务。

当 Oracle 询问是否满意结果时，如果用户表示不满意，它也将生成更多的步骤，尝试为用户提供想要的结果。
