Agent Script 开发指南

📅 2026/7/18 3:01:06
Agent Script 开发指南
什么是 Agent ScriptAgent Script 是用于在 Agentforce Builder 中构建 Agent 的语言。它将自然语言指令处理对话任务的灵活性与程序化表达式处理业务规则的可靠性相结合。在 Script 中你可以使用表达式定义 if/else 条件、转换和其他逻辑设置、修改和比较变量以及选择子代理subagent和动作action。你可以构建可预测、上下文感知的 Agent 工作流而不是仅仅依赖 LLM 的解释。注意从 2026 年 4 月开始Agent 的topics现已更名为subagents子代理功能上没有变化。编写 Agent Script 的多种方式Agentforce Builder 提供了多种编写 Agent Script 的方式与 Agentforce 对话—— 用自然语言解释你想让 Agent 做什么例如If the order total is over $100, then offer free shippingAgentforce 会自动将请求转换为子代理、动作、指令和表达式Canvas 视图—— Agent Script 被总结为易于理解的块可以展开查看底层脚本。输入/添加常见模式的表达式输入添加资源Script 视图高级—— 直接编写和编辑脚本支持语法高亮、自动补全和验证Agentforce DXVS Code—— 生成或获取脚本文件到本地 Salesforce DX 项目在 VS Code 中使用完整的扩展支持进行开发Agent Script 能做什么Agent Script 保留了来自自然语言提示的对话技能和复杂推理能力同时增加了程序化指令的确定性。在 Agent Script 中你可以定义推理指令Reasoning Instructions—— 定义 LLM 可以自由做出推理决策的特定领域以及 Agent 必须确定性执行的特定领域变量Variables—— 可靠地存储有关 Agent 当前状态的信息而不依赖 LLM 的上下文记忆条件表达式Conditional Expressions—— 根据变量值确定 Agent 的执行路径或 LLM 的表述方式子代理转换Subagent Transitions—— 确定性地转换到新子代理或将子代理转换作为工具暴露给 LLM让 LLM 决定何时切换动作控制Action Control—— 根据变量值确定性地指定要运行的动作Agent Script 示例这是一个简单的 Agent Script 示例展示了条件逻辑-与 LLM 提示|的结合使用system: instructions: You are a friendly and empathetic agent that helps customers with their questions. messages: error: Sorry, something went wrong. welcome: Hello! How are you feeling today? config: agent_name: HelloWorldBot default_agent_user: helloworld.com variables: isPremiumUser: mutable boolean False description: Indicates whether the user is a premium user. start_agent hello_world: description: Respond to the user. reasoning: instructions: - if variables.isPremiumUser: | ask the user if they want to redeem their Premium points else: | ask the user if they want to upgrade to Premium service这个示例展示了 Agent Script 的核心优势确定性逻辑-后与LLM 推理|后可以在同一个工作流中共存既保证了可预测的执行又保留了 LLM 处理自然对话的能力。语言特性编译型语言Agent Script 是一种编译型语言。当你保存 Agent 的一个版本时脚本会编译为推理引擎使用的底层元数据。确定性 推理的混合模式Agent Script 在单个工作流中结合了确定性逻辑和 LLM 推理逻辑指令-—— 每次确定性地运行。用于业务规则、运行动作、设置变量和条件分支提示指令|—— 发送给 LLM 的自然语言。LLM 解释这些指令并决定如何回应客户声明式与过程式的结合声明式—— 直接声明你想要什么无需担心逐步的详细流程。基本的 Agent Script 块类似于声明式语言过程式—— 指定按特定顺序执行命令。推理指令中的逻辑类似于过程式语言面向属性Property-BasedAgent Script 由一组属性组成每个属性以key: value的形式呈现。顶层属性称为块blocks例如 config 块config: developer_name: Demo_Agent_1 default_agent_user: digitalagent.demosalesforce.com agent_label: Demo Agent description: This is my demo agent缩进和格式化Agent Script 对空白敏感类似于 Python 或 YAML。缩进用于指示结构和属性之间的关系。必须选择一种缩进方法至少 2 个空格或 1 个 Tab并在整个脚本中保持一致混合使用会导致解析错误。箭头符号-—— 用于逻辑指令后跟缩进的指令管道符号|—— 用于多行字符串和从逻辑切换到提示模式访问资源使用符号访问资源actions.action_name—— 引用动作subagent.subagent_name—— 引用子代理variables.variable_name—— 引用变量outputs.output_name—— 引用动作输出使用run命令执行动作with提供输入set存储输出。在提示文本中引用变量需使用{!variables.variable_name}语法。表达式和注释Agent Script 使用熟悉的流程控制语法if/else、数学表达式、-、比较表达式、!、、以及空值检查is None、is not None。使用#符号添加注释脚本会忽略#之后的任何内容。Agent Script 块脚本由多个块组成每个块包含一组属性。以下是各块类型的高层理解。System 块包含 Agent 的通用指令和消息提示。必需的welcome和error消息支持多行使用|和链接变量{!variables.xxx}来动态注入内容。Config 块包含定义 Agent 的配置参数developer_name唯一 API 名称、default_agent_user、agent_label、description、enable_enhanced_event_logs等。Variables 块包含 Agent 和脚本可以使用的全局变量列表。使用variable_name: mutable type default_value定义通过variables.variable_name引用。Language 块定义 Agent 支持的语言设置default_locale和additional_locales。Connection 块描述 Agent 如何与外部连接如 Enhanced Chat交互包括升级消息、出站路由配置等。与utils.escalate命令配合使用。Start Agent 块Agent Router使用start_agent前缀代替subagent。每次客户发言时Agent 从此块开始执行。通常用于子代理分类、过滤和路由可包含条件转换如available when variables.verified True。Subagent 块指定子代理的指令、逻辑和动作。核心属性包括name—— snake_case 命名的子代理标识description—— 帮助 Agent 根据用户意图确定何时使用此子代理system.instructions可选—— 覆盖系统级指令避免冲突指令或更改语气reasoning—— 包含发送给推理引擎的instructions可组合逻辑和提示和actions可用的工具列表actions—— 定义从此子代理可用的 Agent 动作包含描述、输入、输出和目标位置Connected_Subagent 块Beta定义到 Salesforce 组织中另一个 Agentforce Agent 的连接。关键属性包括target外部 Agent 的 URI、inputs传递给连接子代理的值、可选的label、description和loading_text。使用connected_subagent.Name作为推理动作。在 Agent Script 中配置模型默认情况下Agentforce 使用在设置中选择的模型。你可以使用model_config为特定 Agent 或其子代理覆盖组织的默认模型。model_config: model: model://sfdc_ai__DefaultBedrockAnthropicClaude45Sonnet模型配置层级Agent 级别—— 在顶层使用model_config覆盖组织默认模型Subagent 级别—— 在子代理内使用model_config覆盖 Agent 级别模型Agent Router 级别—— 在start_agent中使用model_config优先级子代理特定模型 Agent 特定模型 组织默认模型。EinsteinHyperClassifier 模型由 Salesforce 开发的专用于子代理分类的模型。优势分类速度显著更快、对特殊分类约束和否定指令的准确率更高。限制不能使用before_reasoning或after_reasoning只能使用utils.transition工具。Agent Script 控制流程理解执行顺序和控制流程有助于设计更好的 Agent。Agentforce 有三个主要执行路径1. 首次请求所有请求包括首次请求都从start_agent块Agent Router开始。通常用于设置变量的初始值并执行子代理分类让 LLM 根据当前上下文选择子代理。2. 处理子代理Agentforce 使用子代理的文本指令、变量、if/else 条件和其他程序化指令来创建 LLM 提示词。推理指令按从上到下的顺序依次处理。LLM 只在接收已解析提示词后才开始推理而不是在 Agentforce 解析过程中。如果推理指令中包含转换命令Agentforce 会立即转换到指定子代理丢弃任何现有的已解析提示词。最终提示词只包含从第二个子代理解析的指令。示例Agentforce 如何创建提示词假设一个Order_Management子代理订单 ID 为 1234当前交付日期为 2026 年 2 月 10 日包裹已延迟。Agentforce 逐行处理递增变量、运行动作、评估条件并拼接提示文本。最终发送给 LLM 的提示词可能为Tell the user that the expected delivery date for order number 1234 is February 10, 2026. Apologize to the customer for the delay in receiving their order.3. 子代理之间的转换转换使用utils.transition to是单向的控制不会返回到之前的子代理。Agentforce 丢弃前一个子代理的任何提示指令然后从头到尾读取第二个子代理。第二个子代理完成后Agentforce 等待下一次客户发言然后返回到start_agent。管理、下载和示例配置和部署你可以从 Salesforce 组织或通过命令行使用 Agentforce DX 来配置、部署和测试 Agent。有多种测试方法可供选择发布后务必再次测试。下载 Agent Script 文档可以将 Agent Script 文档下载为 Markdown 文件用作编码 Agent 的关联上下文。文档包每周四晚上PST更新包含语言概述、脚本块、模型配置、控制流程、参考语法、模式和完整示例。Agent Script 示例客户支持—— 验证身份并提供订单信息面试 Agent—— 基于步骤变量的面试流程控制术语关联—— 处理不断演变的术语而不更新信息源Agent Script Recipes 和开发技能访问 Agent Script Recipes 获取更多交互式示例。使用 Agentforce Development Skill 来构建、修改、调试和部署 Agent。感谢阅读本指南。Agent Script 为你提供了两全其美的能力 —— LLM 推理的灵活性加上确定性程序化控制的可预测性。