1. 项目概述:当自动化遇上智能体

最近在开源社区里,一个名为 coleam00/ottomator-agents 的项目引起了我的注意。乍一看这个名字,可能会让人联想到某种工业机器人或者自动化流水线。但深入探究后,我发现它其实是一个将自动化编排框架与大型语言模型(LLM)驱动的智能体(Agent)相结合的创新尝试。简单来说,它试图解决一个核心痛点:如何让那些原本需要人工编写复杂脚本、处理各种API调用和条件判断的自动化任务,变得像“说话”一样简单和智能。

想象一下,你有一个日常的运营工作流:每天需要从几个不同的数据源(比如数据库、第三方API、Excel表格)拉取数据,清洗、合并,然后生成一份报告,最后通过邮件发送给相关同事。传统的做法是写一个Python脚本,里面充斥着 requests pandas smtplib 的调用,以及一堆 if-else 来处理各种异常情况。脚本脆弱、难以维护,而且一旦需求微调(比如增加一个数据源或改变报告格式),就需要开发者介入修改代码。

ottomator-agents 的思路是,将这个过程“智能体化”。你不再需要精确地告诉程序每一步该怎么做,而是可以像给一个聪明的助手下达指令一样:“帮我从A、B、C三个地方获取今天的数据,清洗掉异常值,生成一个包含关键指标的日报,然后发给团队邮箱。” 背后的智能体(基于LLM)会理解你的意图,自动分解任务,调用预定义的工具(如数据库连接器、数据处理函数、邮件发送器),并在遇到歧义或异常时,尝试做出合理的决策或向你询问澄清。这不仅仅是自动化,更是赋予了自动化系统一定的“理解”和“决策”能力。

这个项目非常适合那些已经熟悉基础自动化(比如用过Zapier、Make,或自己写过脚本)但希望更进一步,构建更灵活、更接近自然语言交互的自动化流程的开发者、运维工程师和业务分析师。它降低了构建复杂、自适应工作流的门槛,让自动化从“死板执行”走向“智能协作”。

2. 核心架构与设计哲学拆解

要理解 ottomator-agents ,我们需要先拆解它的两个核心部分:“Ottomator”和“Agents”,并看它们是如何融合的。

2.1 Ottomator:自动化流程的骨架

虽然项目描述中没有详细说明“Ottomator”具体指代哪个现有框架,但结合命名和上下文,我们可以合理推断,它指的是一个 自动化流程编排引擎 。这类引擎的核心职责是定义、调度和执行由多个步骤(Step)组成的工作流(Workflow)。常见的开源代表有 Apache Airflow、Prefect、Dagster 等。

这类工具通常具备以下特点:

  • 有向无环图(DAG) :将工作流定义为一系列任务及其依赖关系,确保执行顺序正确。
  • 任务抽象 :每个任务是一个独立的执行单元,可以是运行一个脚本、调用一个API、执行一个SQL查询等。
  • 状态管理与重试 :跟踪每个任务的执行状态(成功、失败、运行中),并提供失败重试机制。
  • 调度器 :支持按时间(如每天凌晨2点)或事件(如文件到达)触发工作流。

ottomator-agents 的语境下, Ottomator 提供了自动化流程的可靠骨架 。它负责确保整个流程能按计划稳定运行,处理任务间的依赖、错误恢复和日志记录。这是“自动化”中“自动”的部分——可靠、准时、可重复。

2.2 Agents:赋予流程“大脑”

“Agents”在这里特指 LLM驱动的智能体 。这不是一个单一的模型,而是一个系统架构。一个典型的智能体系统包含几个关键组件:

  1. 规划器(Planner) :理解用户目标(如“生成日报”),并将其分解为一系列可执行的子任务(“获取数据A”、“获取数据B”、“清洗数据”、“生成报告”、“发送邮件”)。
  2. 工具调用(Tool Use) :智能体可以访问一系列预定义的工具(Tools)。这些工具是对外能力的封装,比如 query_database(sql) , call_api(endpoint, params) , send_email(to, subject, body) 。智能体根据规划,决定在何时调用哪个工具,并生成正确的调用参数。
  3. 记忆(Memory) :保存对话历史、中间结果或系统状态,使智能体具备上下文感知能力,避免重复操作或做出矛盾决策。
  4. 执行与反思(Act & Reflect) :执行工具调用,观察结果,并根据结果判断是否成功、是否需要调整策略或重新规划。这构成了一个“思考-行动-观察”的循环。

ottomator-agents 中, Agents 为流程注入了“智能” 。它使得工作流不再是一条固定的、预先写死的路径,而是一个可以根据输入、环境状态和中间结果进行动态调整的“活”的系统。这是“自动化”中“化”的升华——灵活、适应、近似理解。

2.3 融合模式:智能体作为超级任务节点

那么,两者如何结合?最可能也最有效的架构是: 将智能体本身作为Ottomator工作流中的一个特殊类型的“任务节点”

在一个传统的工作流DAG中,节点A、B、C都是确定性的任务。而在 ottomator-agents 的架构下,可以引入一个“Agent Task”节点。这个节点的执行逻辑不再是固定的代码,而是:

  1. 接收上游节点的输出作为输入(上下文)。
  2. 将目标描述(可能来自工作流配置或上游输入)和当前上下文提交给智能体系统。
  3. 智能体系统进行规划、工具调用、执行反思,最终产生输出。
  4. 该输出传递给下游节点。

例如,一个工作流可以是:

[定时触发] -> [获取原始数据文件] -> [智能体处理节点] -> [归档结果]

其中,“智能体处理节点”的目标是:“分析今日数据文件,提取销售额前五的产品,并总结趋势”。智能体会自行决定需要调用“读取文件”、“数据聚合”、“排序”、“自然语言总结”等工具来完成目标。如果文件格式意外变化,智能体可能会尝试调用不同的解析工具,或在无法处理时抛出明确的错误信息,这比一个写死的解析脚本崩溃得更“优雅”和“可解释”。

设计考量 :这种融合模式的优势在于,它没有抛弃经过工业验证的自动化编排框架的稳定性(调度、依赖、重试、监控),只是将其中最需要灵活性和认知能力的部分“外包”给了LLM智能体。这是一种务实且低风险的架构演进。

3. 关键技术组件与实现细节解析

要构建一个 ottomator-agents 这样的系统,我们需要深入几个关键技术组件的选型和实现细节。这里我会基于常见的开源技术栈进行推演和补充。

3.1 智能体框架选型:LangChain vs. LlamaIndex vs. 自研

目前,构建LLM智能体的主流框架主要有两个:LangChain和LlamaIndex。它们各有侧重,选择取决于项目重心。

  • LangChain :是一个功能极其全面的框架,其核心概念是“链”(Chain)。它提供了海量的工具集成、记忆模块、各种类型的智能体(如ReAct, Plan-and-Execute)以及对多种LLM的支持。如果你的智能体需要与大量不同的外部工具和数据进行复杂交互,LangChain是首选。它的抽象层次高,能快速搭建原型,但有时会显得“笨重”,定制深度需要钻研。

    • 适用场景 ottomator-agents 如果追求强大的工具调用能力和丰富的生态集成,LangChain是强有力的候选。
  • LlamaIndex :最初专注于“数据检索”,现在已演变为一个强大的智能体框架。它在处理私有数据、构建检索增强生成(RAG)应用方面非常出色。其智能体更侧重于基于知识库的推理和决策。如果你的自动化流程大量依赖于查询内部文档、知识库或数据库来做出决策,LlamaIndex可能更合适。

    • 适用场景 :如果 ottomator-agents 的智能体核心能力是理解和查询结构化/非结构化的任务知识库(例如,从历史工单中学习如何处理某种错误),LlamaIndex的优势明显。
  • 自研轻量级框架 :如果项目需求非常特定,或者希望保持极简的依赖和最大的控制权,也可以基于 OpenAI API 或开源LLM的API,自行实现一个轻量级的智能体循环。这需要自己处理规划、工具调用封装、记忆管理等逻辑。

    • 适用场景 :适用于对性能、成本控制有极致要求,或智能体行为模式相对固定的场景。

实操心得 :对于 ottomator-agents 这类项目,我倾向于从 LangChain 开始。因为它对“工具”的抽象非常直接,与“自动化任务”的概念天然契合。你可以将每一个Ottomator任务、或一个外部API,都轻松封装成一个LangChain Tool。它的 AgentExecutor 能很好地处理工具调用的循环和错误。初期可以快速验证想法,后期若遇到性能瓶颈,再考虑对关键部分进行定制或替换。

3.2 工具(Tools)的设计与封装

工具是智能体的“手和脚”。在 ottomator-agents 中,工具的设计至关重要,它直接决定了智能体能做什么。

  1. 工具分类

    • 数据获取工具 query_database , fetch_api_data , read_file_from_storage , scrape_webpage
    • 数据处理工具 clean_dataframe , filter_records , calculate_metrics , merge_datasets
    • 逻辑判断工具 check_condition , compare_values 。这些工具可以封装一些简单的业务规则,让智能体无需将所有逻辑都“思考”出来。
    • 通知与执行工具 send_email , post_to_slack , create_jira_ticket , trigger_another_workflow
    • Ottomator原生工具 get_task_status , retry_task , pause_workflow 。这允许智能体监控和干预它所在的编排系统本身。
  2. 封装原则

    • 单一职责 :每个工具只做一件事,并且做好。避免创建“瑞士军刀”式的巨型工具。
    • 强类型描述 :为每个工具提供清晰、准确的名称和描述。LLM主要依靠这些文本来决定是否以及如何调用工具。描述应包含:功能、输入参数(名称、类型、含义)、输出示例。例如:
      @tool
      def query_database(sql_query: str) -> str:
          """
          执行一条SQL查询语句并返回结果。
          参数:
              sql_query (str): 需要执行的SQL查询字符串,例如 'SELECT * FROM sales WHERE date = CURDATE()'
          返回:
              str: 查询结果,以JSON字符串或表格文本形式返回。
          """
          # ... 实际执行逻辑
          return results_json
      
    • 安全性 :工具是执行实际操作的入口,必须内置权限检查和输入验证。特别是对于数据库查询、文件删除、API调用等操作,要防止智能体生成恶意或危险的指令(如 DROP TABLE )。可以在工具内部实现白名单机制或SQL解析校验。

3.3 记忆(Memory)与上下文管理

智能体在工作流中运行时,需要记住之前发生了什么。这里的记忆主要不是长期的,而是 工作流实例级别的会话记忆

  • 记忆内容
    • 用户初始目标 :整个工作流要达成的最终目的。
    • 已执行的工具调用历史 :包括调用内容、参数和返回结果。这对于反思和避免重复至关重要。
    • 中间决策和结论 :智能体在规划过程中产生的推理步骤。
  • 实现方式 :在LangChain中,可以使用 ConversationBufferMemory ConversationSummaryMemory 。对于可能很长的自动化流程, ConversationSummaryMemory 更优,它会对历史对话进行总结,避免上下文窗口(Context Window)被撑爆。
  • 与Ottomator集成 :智能体的记忆应该作为工作流上下文的一部分进行持久化。当智能体任务因故中断重启后,它能从持久化的记忆中恢复状态,继续执行,而不是从头开始。这可以通过将记忆对象序列化后存入Ottomator的任务元数据或外部存储(如Redis、数据库)来实现。

3.4 规划(Planning)与执行策略

智能体如何分解任务?这里有几个常见模式:

  • ReAct (Reason + Act) :智能体交替进行“思考”和“行动”。在“思考”步骤,它分析当前情况并决定下一步做什么;在“行动”步骤,它执行一个工具调用并观察结果。这非常适合探索式任务。
  • Plan-and-Execute :智能体先制定一个完整的计划(一系列步骤),然后严格按照计划执行。这更适合目标明确、步骤清晰的任务。 ottomator-agents 的场景可能更偏向这种模式,因为自动化流程通常有较明确的终点。
  • 基于LLM的规划器 :直接让LLM根据目标生成一个步骤列表(甚至是伪代码)。然后,由另一个执行模块或智能体本身来逐步执行这个列表。

在自动化工作流中, 可以结合使用 。例如,智能体可以先制定一个初步计划(Plan),然后在执行每个步骤时采用ReAct模式来处理意外情况。项目需要根据任务复杂度来选择合适的策略或进行混合。

4. 构建一个实战案例:智能数据报告工作流

让我们构想一个具体的例子,来看看如何用 ottomator-agents 的思想构建一个“智能周报生成”工作流。

目标 :每周一上午9点,自动生成上一周的业务核心数据报告,并通过邮件发送给运营团队。报告需要包含:周销售额、订单量、热门商品TOP3、以及与上周的环比变化。数据散落在MySQL数据库和某个内部REST API中。

4.1 传统方式 vs. 智能体方式

  • 传统脚本方式

    1. 写死SQL查询语句获取销售额和订单量。
    2. 写死API调用获取商品数据。
    3. 在代码里计算环比、排序TOP3。
    4. 用字符串模板拼接报告正文。
    5. 调用邮件库发送。 痛点 :数据表结构或API字段一旦变化,脚本就会失败。如果想增加一个“平均客单价”指标,需要修改代码并重新部署。
  • 智能体驱动方式 : 我们设计一个Ottomator工作流,其中包含一个核心的“智能体报告生成”任务。

    1. 工作流触发 :每周一9点,Ottomator调度器启动工作流。
    2. 任务1:获取时间范围 :一个简单任务,计算出上周的起止日期字符串。
    3. 任务2:智能体报告生成(核心)
      • 输入 :时间范围字符串,报告目标描述:“生成一份上周业务报告,需包含总销售额、总订单量、最热门的3个商品及其销量,以及与上上周的环比变化。数据来自数据库 sales_db 和内部商品API。”
      • 智能体执行 : a. 规划 :LLM理解目标,分解为:查询销售额、查询订单量、查询商品详情、计算环比、组织文案。 b. 工具调用 :依次调用 query_database (传入智能体自己生成的SQL)、 call_internal_api (传入智能体构造的请求参数)。 c. 计算与组织 :智能体获得原始数据后,可以调用一个 calculate_growth_rate 工具,或者如果LLM数学能力足够,直接进行简单计算。最后,它根据所有信息,生成一段结构清晰、语言通顺的报告正文。
      • 输出 :格式化好的报告文本(如Markdown或HTML)。
    4. 任务3:发送邮件 :另一个任务节点,接收报告文本,填充邮件模板并发送。

4.2 核心智能体任务的实现片段(以LangChain为例)

from langchain.agents import AgentExecutor, create_react_agent
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
from langchain.tools import tool
import json

# 1. 定义工具
@tool
def query_database(query: str) -> str:
    """执行SQL查询并返回JSON格式的结果。"""
    # 这里应使用安全的数据库连接池,并对查询进行基本校验(如禁止DROP等)
    # 模拟返回
    if "sales" in query.lower():
        return json.dumps({"total_sales": 150000.0, "week": "2024-05-20"})
    elif "orders" in query.lower():
        return json.dumps({"total_orders": 1200, "week": "2024-05-20"})
    return json.dumps({})

@tool
def call_internal_api(endpoint: str, params: dict) -> str:
    """调用内部商品API。"""
    # 实际实现中应对endpoint做白名单校验
    if endpoint == "products/top":
        return json.dumps([
            {"name": "Product A", "sales_count": 300},
            {"name": "Product B", "sales_count": 250},
            {"name": "Product C", "sales_count": 200}
        ])
    return json.dumps([])

@tool
def calculate_growth(current_val: float, previous_val: float) -> str:
    """计算环比增长率。"""
    if previous_val == 0:
        return "N/A (上一期数据为零)"
    growth = ((current_val - previous_val) / previous_val) * 100
    return f"{growth:.1f}%"

# 2. 配置LLM和智能体
llm = ChatOpenAI(model="gpt-4", temperature=0) # temperature设为0使输出更确定
tools = [query_database, call_internal_api, calculate_growth]

# 使用ReAct风格的提示词模板
prompt = PromptTemplate.from_template(
    """你是一个业务数据分析助手。请根据用户目标,使用工具来获取必要信息并生成报告。
    目标:{goal}
    当前已知的上周时间范围是:{date_range}
    如果你需要之前一周的数据做对比,请自行推算日期并查询。
    请按以下步骤思考:
    1. 规划需要获取哪些数据。
    2. 使用工具获取数据。
    3. 如有需要,进行数据计算。
    4. 用专业、简洁的语言撰写报告。

    开始!
    """
)

agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True, handle_parsing_errors=True)

# 3. 在Ottomator任务中执行智能体
def ottomator_agent_task(goal: str, date_range: str) -> str:
    """Ottomator工作流中调用的函数"""
    try:
        result = agent_executor.invoke({"goal": goal, "date_range": date_range})
        report = result["output"]
        return report
    except Exception as e:
        # 这里应该将错误详细记录到Ottomator日志中
        raise Exception(f"智能体任务执行失败: {e}")

# 模拟调用
if __name__ == "__main__":
    goal_text = "生成一份上周业务报告,需包含总销售额、总订单量、最热门的3个商品及其销量,以及与上上周的环比变化。数据来自数据库`sales_db`和内部商品API。"
    dates = "2024-05-13 至 2024-05-19"
    final_report = ottomator_agent_task(goal_text, dates)
    print(final_report)

4.3 此案例的优势与挑战

优势

  • 灵活性 :如果下周需要增加“新用户占比”指标,你只需要在目标描述里加上这一句,智能体可能会尝试生成新的SQL查询来获取用户数据。无需修改代码逻辑(前提是相关工具已存在)。
  • 容错与解释性 :如果商品API暂时不可用,智能体在工具调用失败后,可以在报告中注明“本周热门商品数据暂缺”,而不是整个流程崩溃。它的“思考”过程可以作为日志输出,便于调试。
  • 自然语言接口 :运营人员可以直接用自然语言描述他们想要的报告格式,降低了与技术人员的沟通成本。

挑战与注意事项

  • 成本与延迟 :每次执行都需要调用LLM API,会产生费用,且比直接运行脚本慢。需要权衡智能带来的价值与增加的成本。
  • 结果不确定性 :LLM的输出可能存在细微波动。对于关键数据(如销售额),最好让智能体只生成文案,而让确定性脚本计算具体数字,或者对智能体提取的数字进行二次校验。
  • 工具安全性 :必须严格限制工具的能力。 query_database 工具应连接只有只读权限的数据库账户,并最好能解析SQL,禁止执行数据修改语句。

5. 部署、监控与成本控制实战

将这样一个系统投入生产环境,远不止写代码那么简单。以下是几个关键的实操环节。

5.1 部署架构考量

一个稳健的 ottomator-agents 系统可能包含以下服务:

  1. Ottomator调度服务 :可以是Airflow的调度器、Prefect的Orion服务器等,负责管理工作流DAG和触发任务。
  2. 任务执行器 :实际运行任务代码的组件。智能体任务需要在一个能够访问LLM API(或本地LLM)和所有工具依赖的环境中运行。可以考虑使用Docker容器,每个智能体任务在一个独立的容器中执行,实现环境隔离。
  3. LLM服务 :如果使用OpenAI、Anthropic等云端API,则直接调用。如果使用开源模型(如Llama 3、Qwen),则需要部署自己的模型服务(如通过vLLM、TGI)。
  4. 记忆存储 :使用Redis或数据库来存储智能体的会话记忆,实现任务状态的持久化。
  5. 监控与日志 :集中式日志(如ELK栈)和指标监控(如Prometheus/Grafana)至关重要。需要监控LLM API的调用延迟、成功率、Token消耗,以及智能体任务的执行时长和结果状态。

5.2 监控指标与告警

除了常规的应用监控,需要特别关注:

  • LLM相关指标
    • llm_api_latency_seconds :API调用延迟。
    • llm_api_call_total{status="success|failure"} :调用总量和成功率。
    • agent_tokens_used_total :累计消耗的Token数(区分输入/输出)。
    • agent_tool_call_total :工具调用次数分布。
  • 业务相关指标
    • agent_task_duration_seconds :智能体任务执行耗时。
    • agent_task_result{type="success|partial_failure|hallucination"} :任务结果分类。需要定义什么是“部分失败”(如部分数据缺失)和“幻觉”(如生成虚假数据)。
  • 告警设置
    • LLM API调用失败率连续超过5%。
    • 智能体任务平均耗时超过预期阈值(如30秒)。
    • 单次任务消耗Token数异常高(可能陷入循环)。

5.3 成本控制策略

LLM API调用是主要成本来源,必须加以管理:

  1. 缓存 :对于相同或相似的查询,如果结果在短时间内是有效的,可以缓存智能体的输出。例如,“获取昨日销售额”这种查询,一天内结果不变。可以在工具层或智能体输出层添加Redis缓存。
  2. 设置预算与限额 :在任务级别或工作流级别设置每次执行的最大Token消耗预算。当智能体“陷入沉思”不断调用工具和LLM时,及时中断任务,避免产生天价账单。
  3. 模型分级使用 :对于简单的规划或工具选择,可以使用更便宜、更快的模型(如GPT-3.5-Turbo);对于最终需要高质量文本生成的步骤,再使用更强大的模型(如GPT-4)。这需要智能体框架支持多模型路由。
  4. 优化提示词(Prompt Engineering) :清晰、简洁、结构化的提示词能减少不必要的Token消耗,并提高输出质量的一次性成功率,避免重试。

6. 常见陷阱、问题排查与优化心得

在实际开发和运维这类系统时,你会遇到一些典型问题。以下是我总结的一些“坑”和应对策略。

6.1 智能体陷入循环或行为异常

  • 现象 :智能体不停地调用同一个工具,或者来回执行两个无意义的动作,无法达成目标。
  • 原因 :提示词指令不清晰;工具的描述不够准确,导致LLM误解;任务本身过于模糊,智能体缺乏足够的判断依据。
  • 排查与解决
    1. 开启详细日志(Verbose Mode) :记录下智能体每一步的“思考”和“行动”。这是最重要的调试手段。
    2. 审查提示词 :确保给智能体的指令是具体、可操作的。加入约束,如“最多只能调用X次工具”、“如果Y条件不满足,则直接返回Z信息”。
    3. 优化工具描述 :工具的函数名和文档字符串要极度清晰。可以使用示例(Few-shot)方式,在描述中直接给出调用示例。
    4. 设置最大迭代次数 :在AgentExecutor中必须配置 max_iterations max_execution_time ,这是防止死循环的最后防线。

6.2 工具调用结果解析失败

  • 现象 :工具返回了数据,但智能体无法正确理解并使用,导致后续步骤出错。
  • 原因 :工具返回的数据格式太复杂或非结构化(如一个复杂的嵌套JSON),超出了LLM的理解能力。
  • 排查与解决
    1. 标准化工具输出 :尽可能让所有工具返回简单、扁平化的JSON结构或纯文本。对于复杂查询结果,在工具内部先做一次预处理和简化。
    2. 让工具返回“自解释”的数据 :例如,返回 {"total_sales": 150000, "currency": "USD", "period": "last_week"} 而不是仅仅 150000
    3. 在提示词中指导解析 :明确告诉智能体:“工具 query_database 会返回一个JSON对象,其中包含 total_sales 字段...”

6.3 处理不确定性与“幻觉”

  • 现象 :智能体在报告中捏造了不存在的数据,或者对数据做出了过度肯定的错误解读。
  • 原因 :LLM的本质是生成模型,它倾向于生成“看起来合理”的内容,尤其是在信息不足时。
  • 应对策略
    1. 要求引用来源 :在提示词中强制要求:“在你的回答中,对于每一个数据点,都必须注明是来自哪个工具的调用结果。” 这能增加可追溯性。
    2. 关键数字校验 :对于核心业务指标(如销售额、订单量),不要完全依赖LLM从文本中提取或计算。应该由确定性工具计算好后,直接提供给LLM用于文案生成。
    3. 后处理校验 :对于生成的最终报告,可以设计一个简单的规则校验脚本,检查是否存在明显矛盾(如百分比之和超过100%)或超出合理范围的值。

6.4 性能优化

  • 并行化工具调用 :如果智能体的规划中,有几个工具调用之间没有依赖关系,可以尝试让智能体并行发起调用,而不是顺序执行。这需要智能体框架或自定义执行器的支持。
  • 精简上下文 :定期清理或总结会话记忆,避免无关的历史对话占用大量Token,推高成本和延迟。
  • 预热与连接池 :对于需要连接数据库或外部服务的工具,使用连接池管理资源,避免每次调用都建立新连接。

构建 ottomator-agents 这样的系统,是一个在“确定性的自动化”和“非确定性的智能”之间寻找最佳平衡点的过程。它不是为了用LLM取代所有脚本,而是用LLM去填补那些变化频繁、规则模糊、需要一定理解的空白地带。从一个小而具体的场景开始,比如自动处理客服邮件分类、智能巡检日志并生成告警摘要,逐步迭代工具集和提示词,你会发现,这种“智能自动化”的能力边界,远比想象中更广阔。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐