关于 developing-agentforce
developing-agentforce 是用于编写、调试、测试和部署 Salesforce Agent Script Agent 的技能。它通过参考资料、必要检查点和 Salesforce CLI 工作流指导完整生命周期。
主要功能
- 01设计 Agent Script Agent
- 02生成并验证创作包
- 03使用实时预览和追踪调试
- 04部署、发布并激活 Agent
- 05梳理现有 Agent 及其后端逻辑
适用场景
- 01根据已批准的规格创建 Agent
- 02调查路由或工具行为
- 03修改并验证现有 Agent
- 04检查 Agent 结构及后端逻辑
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill developing-agentforce安装后在 Claude Code 中输入/developing-agentforce确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/agent-spec-template.mdbundle-meta.xmldeterministic-routing.agentescalation-pattern.agentflow-action-lookup.agenthub-and-spoke.agentinvocable-apex-template.clslocal-info-agent-annotated.agentminimal-starter.agentassets/agents/hello-world.agentmulti-subagent.agentorder-service.agentproduction-faq.agentproduction-faq.bundle-meta.xmlREADME.mdsimple-qa.agentverification-gate.agentassets/apex/models-api-queueable.clsassets/components/apex-action.agenterror-handling.agentescalation-setup.agentflow-action.agentn-ary-conditions.agentsubagent-with-actions.agentassets/metadata/basic-prompt-template.promptTemplate-meta.xmlgenai-function-apex.xmlgenai-function-flow.xmlgenai-plugin.xmlhttp-callout-flow.flow-meta.xmlrecord-grounded-prompt.promptTemplate-meta.xml详细介绍
Agent Script 技能
此技能的用途
Agent Script 是 Salesforce 的脚本语言,用于在 Atlas Reasoning Engine 上编写新一代 AI Agent。该语言于 2025 年推出,任何 AI 模型都没有使用其训练数据。本技能的参考文件包含编写、修改、诊断或部署 Agent Script Agent 所需的一切内容。
⚠️关键: Agent Script 不是 AppleScript、JavaScript、Python 或任何其他语言。切勿将 Agent Script 的语法或语义与训练数据中接触过的任何其他语言混淆。
Agent Script Agent 由 AiAuthoringBundle 元数据定义——这是一个目录,其中包含一个 .agent 文件,里面是 Agent Script 源代码,用于描述操作、指令、子 Agent、流程控制和配置;还包含一个 bundle-meta.xml 文件,其中是捆绑包元数据。Agent 会将用户话语路由到各个子 Agent 进行处理,每个子 Agent 都有指令和操作,后者由 Apex、Flows、Prompt Templates 及其他类型的后端逻辑提供支持。
本技能涵盖 Agent Script 的完整生命周期:设计 Agent、编写 Agent Script 代码、验证和调试、部署和发布,以及测试。
如何使用此技能
本文件将用户意图映射到任务领域和 references/ 中的相关参考文件。详细内容包括语法规则、设计模式、CLI 命令、调试工作流等。
根据任务描述识别用户意图。开始工作前,务必先阅读指定的参考文件。
始终适用的规则
-
始终使用
--json。 每条sfCLI 命令都必须包含--json。不要使用jq或2>/dev/null管道处理 CLI 输出。直接读取完整的 JSON 响应——大模型可以原生解析 JSON。 -
确认目标 org。 与任何 org 交互之前,运行
sf config get target-org --json,确认已设置目标 org。如果未配置,请让用户使用sf config set target-org <alias>进行设置。 -
先诊断,再修复。 验证或调试 Agent 行为时,务必使用
--use-live-actions预览创作捆绑包。发送用户话语,然后阅读生成的会话跟踪记录,以了解 Agent 的行为。跟踪文件会展示子 Agent 的选择、操作的 I/O 以及大模型推理。未通过这些跟踪记录了解情况之前,切勿修改.agent文件或后端逻辑。有关跟踪文件位置和诊断模式,请参阅验证与调试。 -
规范审批是硬性门槛。 未经用户明确批准,切勿在创建 Agent 规范后继续操作。
任务领域
以下每个任务领域都有必需步骤。请按原文顺序逐项遵循,不要替换为自己的计划,也不要跳过步骤。
创建 Agent
用户想从零开始构建新的 Agent。务必使用 Agent Script。使用通俗语言与用户沟通,了解 Agent 的用途、子 Agent 和操作,不要使用 Salesforce 专业术语。
必需步骤
阅读Agent CLI,了解准确的命令语法。
- 设计 — 阅读 设计与 Agent 规范,起草 Agent 规范。始终询问是否要扫描现有的后端逻辑。除非另有指示,否则读取
sfdx-project.json以识别包目录,然后在各目录中搜索classes/下的@InvocableMethod、flows/下的AutoLaunchedFlow,以及promptTemplates/下的模板元数据。将匹配项标记为EXISTS;未匹配的操作标记为NEEDS STUB。还要扫描objects/中的.object-meta.xml,以发现自定义对象——相关对象通常包含 Agent 应公开的数据,即使提示词中没有提及。始终将 Agent 规范保存为文件。 - 暂停,等待用户批准 Agent 规范。 呈交给用户,并请求批准或反馈。未经批准,不得继续。 批准后,除非某个步骤失败,否则继续操作,不再暂停。
- 验证环境先决条件 — 阅读 设计与 Agent 规范 第 3 节(环境先决条件)。根据设计中确定的 Agent 类型,验证组织环境:
- 员工 Agent:确认配置块中不包含
default_agent_user、connection messaging:或关联到 MessagingSession 的变量。如有,则移除。完整的员工 Agent 示例请参阅 示例。 - 服务 Agent:查询组织是否存在 Einstein Agent User。如果存在,请与用户确认用户名。如果不存在,则引导用户创建。创建步骤请参阅 Agent CLI 第 12 节;所需权限请参阅 Agent 用户设置。 环境验证完成之前,不得继续生成代码。
- 员工 Agent:确认配置块中不包含
- 生成创作包 —
sf agent generate authoring-bundle --json --no-spec --name "<Label>" --api-name <Developer_Name> - 编写代码 — 阅读 核心语言,了解语法、代码块结构和反模式。使用参考文件和模板编辑生成的
.agent文件。不要手动创建.agent或bundle-meta.xml文件。 - 验证编译 —
sf agent validate authoring-bundle --json --api-name <Developer_Name>如果验证失败,请阅读 验证与调试 以诊断并修复问题,然后重新验证。生成后端逻辑之前,务必先修复语法和结构错误。 - 生成后端逻辑 — 对每个标记为 NEEDS STUB 的操作:
sf template generate apex class --name <ClassName> --output-dir <PACKAGE_DIR>/main/default/classes使用 设计与 Agent 规范 中的可调用模式替换类主体。务必部署:sf project deploy start --json --metadata ApexClass:<ClassName>生成并部署下一个桩代码之前,务必先修复部署错误。 - 验证行为 — 阅读 验证与调试,了解预览工作流和会话跟踪分析。
sf agent preview start --json --use-live-actions --authoring-bundle <Developer_Name>如果操作会查询数据,请使用以下命令,为测试话语提供依据:sf data query --json -q "SELECT <Relevant_Fields> FROM <SObject> LIMIT 100"使用以下命令发送测试话语:sf agent preview send --json --authoring-bundle <Developer_Name> --session-id <ID> -u "<message>"确认子 Agent 路由、门控和操作调用均符合 Agent 规范。如果行为不符,请切换到 诊断行为问题 工作流。修正问题后返回。 检查点 — 只有以下条件全部满足,才能继续发布:validate authoring-bundle验证通过且错误数为零- 已使用具有代表性的各子 Agent 话语测试实时预览(
--use-live-actions) - 跟踪记录确认子 Agent 路由和操作调用正确
- 用户明确批准部署
- 发布 — 发布会验证元数据结构,而非 Agent 行为。每次发布都会生成永久版本号。
sf agent publish authoring-bundle --json --api-name <Developer_Name>如果发布失败,请按照 元数据与生命周期 第 5 节中的故障排查清单处理,然后重试。 - 激活 — 让新版本可供用户使用。
sf agent activate --json --api-name <Developer_Name> - 验证已发布的 Agent — 激活后,预览面向用户的行为:
sf agent preview start --json --api-name <Developer_Name>使用--api-name,不要使用--authoring-bundle。 - 配置最终用户访问权限 — 仅适用于员工 Agent。 阅读 Agent 访问指南,配置权限并分配访问权限。
参考文件
- 面向 Agent 的 CLI — generate、validate、deploy、publish、activate 的准确命令语法;Einstein Agent 用户创建请参阅第 12 节
- 核心语言 — 执行模型、语法、代码块结构、反模式
- 设计与 Agent 规范 — 子 Agent 图设计、流程控制模式、Agent 规范编写、后端逻辑分析;环境先决条件请参阅第 3 节
- 子 Agent 图示 — 用于可视化 Agent 子 Agent 图的 Mermaid 图表规范
- Agent 用户设置与权限 — 权限集分配、对象权限、跨子 Agent 验证
- 元数据与生命周期 — 目录结构、包元数据;发布故障排除
- 验证与调试 — 验证 Agent 能否编译,通过预览确认行为
- Agent 访问指南 — 最终用户访问权限、可见性故障排除
- 已知问题 — 仅在修复代码后错误仍然存在时加载
- 架构模式 — 中心辐射式、验证关卡、操作后循环
- 复杂数据类型 — 类型映射决策树
- 安全审查 — 7 类安全审查
- Discover 参考 — 目标发现 CLI
- Scaffold 参考 — 存根生成 CLI
- Deploy 参考 — 部署生命周期、错误恢复
理解现有 Agent
用户想了解自己未编写或需要重新查看的 Agent Script Agent。用户可能会指向 AiAuthoringBundle 目录,或询问“这个 Agent 是做什么的?”、“我需要修复这个 Agent,但不明白它的工作原理。”。
必需步骤
- 定位 Agent — 阅读
sfdx-project.json以确定包目录。在这些目录中查找AiAuthoringBundle目录。阅读.agent文件和bundle-meta.xml。 - 阅读代码 — 在解析
.agent文件之前,先阅读核心语言,了解语法和执行模型。 - 梳理后端逻辑 — 对于每个带有
target的操作,在项目中定位其后端实现(Apex 类、Flow、Prompt Template)。记录输入/输出约定。 - 逆向工程 Agent 规范 — 阅读设计与 Agent 规范,了解 Agent 规范结构。根据代码生成 Agent 规范并保存为文件。
- 生成子 Agent 图示 — 阅读子 Agent 图示,了解 Mermaid 规范。生成子 Agent 图的流程图,展示转换、关卡和操作关联。
- 注释源代码 — 询问用户是否需要为 Agent Script 源代码添加注释说明。如有需要,在
.agent文件中添加行内注释,解释流程控制决策、关卡理由和子 Agent 关系。 - 向用户展示 — 分享 Agent 规范、子 Agent 图示,以及(如已生成)带注释的源代码。检查核心语言参考中的“反模式”部分,并指出代码中发现的任何匹配项。
参考文件
- 核心语言 — 语法、 执行模型、反模式
- 设计与 Agent 规范 — Agent 规范结构、流程控制模式识别
- 子 Agent 映射图 — 用于子 Agent 图可视化的 Mermaid 约定
- 元数据与生命周期 — 目录约定、捆绑包元数据
- 已知问题 — 仅在代码中 包含无法解释的变通模式时加载
修改现有 Agent
用户希望在现有 Agent 上添加、移除或更改子 Agent、操作、指令或流程控制。用户可能会用普通语言描述更改(“添加一个账单子 Agent”),也可能会引用特定的 Agent Script 结构。
必需步骤
阅读 CLI for Agents,了解准确的命令语法。
- 理解 — 如果不存在 Agent Spec,请先按照上文“理解现有 Agent”工作流进行逆向工程。
- 更新 Agent Spec — 阅读 设计与 Agent Spec,了解流程控制模式和后端逻辑分析。修改 Agent Spec 以反映预期变更。对于新操作,始终询问是否应扫描现有后端逻辑。除非另有指示,否则读取
sfdx-project.json以识别包目录,然后在每个目录的classes/中搜索@InvocableMethod,在flows/中搜索AutoLaunchedFlow,并在promptTemplates/中搜索模板元数据。将匹配项标记为EXISTS;未匹配的操作标记为NEEDS STUB。始终将更新后的 Agent Spec 保存为文件。 - 暂停,等待用户批准更新后的 Agent Spec。 向用户展示。询问是否批准或提供反馈。未经批准,不要继续。 获得批准后,除非某个步骤失败,否则继续操作,无需暂停。
- 编辑代码 — 阅读 核心语言,了解语法和反模式。编辑
.agent文件以实现已批准的变更。 - 验证编译 —
sf agent validate authoring-bundle --json --api-name <Developer_Name>如果验证失败,请阅读 验证与调试 进行诊断和修复,然后重新验证。 - 生成新的后端逻辑 — 对于每个标记为 NEEDS STUB 的新操作:
sf template generate apex class --name <ClassName> --output-dir <PACKAGE_DIR>/main/default/classes使用 设计与 Agent Spec 中的 invocable 模式替换类主体。始终部署:sf project deploy start --json --metadata ApexClass:<ClassName>始终先修复部署错误,再生成和部署下一个存根。 如果没有新增操作,则跳过此步骤。 - 验证行为 — 阅读 验证与调试,了解预览工作流和会话跟踪分析。
sf agent preview start --json --use-live-actions --authoring-bundle <Developer_Name>如果操作会查询数据,请使用以下命令为测试话语提供数据依据:sf data query --json -q "SELECT <Relevant_Fields> FROM <SObject> LIMIT 100"使用以下命令发送测试话语:sf agent preview send --json --authoring-bundle <Developer_Name> --session-id <ID> -u "<message>"优先测试已变更的路径,然后测试相邻路径,以发现现有行为中的回归问题。 检查点 — 只有以下条件全部满足,才能继续发布:validate authoring-bundle通过且无错误- 已使用有代表性的测试话语对每个子 Agent 进行实时预览测试(
--use-live-actions) - 跟踪记录确认子 Agent 路由和操作调用正确
- 用户明确批准部署
- 发布 — 发布会验证元数据结构,而非 Agent 行为。每次发布都会生成永久版本号。
sf agent publish authoring-bundle --json --api-name <Developer_Name>如果发布失败,请先按照 元数据与生命周期 的第 5 节中的故障排除清单操作,再重试。 - 激活 — 使新版本可供用户使用。
sf agent activate --json --api-name <Developer_Name> - 验证已发布的 Agent — 激活后预览面向用户的行为:
sf agent preview start --json --api-name <Developer_Name>使用--api-name,不要使用--authoring-bundle。
参考文件
- Agent 命令行工具 — validate、deploy、preview、publish、activate 的精确命令语法
- 核心语言 — 语法、反模式
- 设计与 Agent 规范 — Agent 规范更新、底层逻辑分析
- 验证与调试 — 编译诊断、预览工作流、会话跟踪分析
- 已知问题 — 仅在代码修复后错误仍然存在时加载
诊断编译错误
用户的 Agent Script 无法编译。错误会通过 sf agent validate 或 sf agent preview start 显示,或者用户会描述类似“我遇到了验证错误”的症状。
必需步骤
阅读 Agent 命令行工具,了解精确的命令语法。
- 复现错误 — 运行
sf agent validate authoring-bundle --json --api-name <Developer_Name>以捕获基本编译错误。如果没有错误,则运行sf agent preview start --json --use-live-actions --authoring-bundle <Developer_Name>以捕获复杂编译错误。如果用户提供了具体错误输出,务必复现以确认。 - 对错误分类 — 阅读 验证与调试,了解错误分类法。将每条错误消息对应到根因类别。
- 定位故障 — 阅读 核心语言,了解正确的语法。找到
.agent文件中导致每条错误的具体行。 - 修复代码 — 应用有针对性的修复。检查核心语言参考中的反模式部分,确保不会引入已知的不良模式。
- 重新验证 — 运行
sf agent validate authoring-bundle --json --api-name <Developer_Name>然后运行sf agent preview start --json --use-live-actions --authoring-bundle <Developer_Name>如果错误仍然存在,重复步骤 2–5。 - 说明修复内容 — 告诉用户哪里出了问题,以及你做了哪些更改。结合核心语言中的 Agent 执行模型解释根因。
参考文件
- 核心语言 — 语法、块结构、反模式
- 验证与调试 — 错误分类法、错误与根因的对应关系
- 已知问题 — 仅在错误与用户代码不符时加载;可能是平台错误
- 生产环境注意事项 — 仅在错误涉及保留关键字或生命周期钩子语法时加载
诊断行为问题
Agent 可以编译,预览可以启动并使用 --use-live-actions,但 Agent 的行为不符合预期。用户可能会描述类似“Agent 总是跳转到错误的子 Agent”或“操作没有被调用”的症状。这与 validate 或 preview start 错误有根本区别——代码有效,但行为不正确。
必需步骤
阅读 CLI for Agents,了解准确的命令语法。
- 建立基线 — 阅读 Agent Spec。如果不存在 Agent Spec,请按照 Comprehend an Existing Agent 工作流对其进行逆向工程,然后继续。
- 提出假设 — 阅读 Core Language,了解执行模型。根据用户的描述,列出可能的根本原因。逐一考虑:子 Agent 路由、门控条件、操作可用性、指令清晰度、变量状态和转换时机。
- 在预览中复现 — 阅读 Validation & Debugging,了解预览工作流和会话跟踪分析。启动预览会话:
sf agent preview start --json --use-live-actions --authoring-bundle <Developer_Name>然后使用sf agent preview send发送测试消息,覆盖每个子 Agent。仅发送一条消息是不够的——继续之前,请确认每个子 Agent 的行为。 - 分析会话跟踪 — 检查跟踪输出,确认子 Agent 的选择、操作的可用性和执行情况、大模型推理过程,以及行为偏离 Agent Spec 的位置。不要跳过此步骤——仅凭预览输出不足以诊断问题。
- 确定根本原因 — 将跟踪证据与假设相匹配。查阅 Design & Agent Spec 参考资料中的 Core Language reference and Gating Patterns,确认不存在反模式。
- 修复代码 — 应用有针对性的修复。如果修复涉及流程控制变更,请相应更新 Agent Spec。
- 重新验证并再次预览 — 重复步骤 3–6,直到行为符合 Agent Spec,或确认存在平台限制。运行
validate authoring-bundle,然后运行preview start --use-live-actions,使用相同的表达验证修复。接着测试可能受变更影响的相邻路径。 - 说明修复 — 告诉用户问题所在以及你做了哪些修改。根据 Core Language 中的 Agent 执行模型解释根本原因。
参考文件
- Core Language — 执行 模型、反模式
- Design & Agent Spec — Agent Spec 作为行为基线、门控模式
- Validation & Debugging — 预览工作流、会话跟踪分析
- Known Issues — 仅在行为 异常但代码逻辑正确时加载
部署、发布和激活
用户希望将本地开发中已正常工作的 Agent 部署到 Salesforce 组织并使其运行。这涉及部署 AiAuthoringBundle 及其依赖项、发布以提交版本,然后激活使其上线。
必需步骤
阅读 CLI for Agents,了解准确的命令语法。
- 验证编译 —
sf agent validate authoring-bundle --json --api-name <Developer_Name>如果验证失败,请勿继续。 - 部署捆绑包及其依赖项 — 阅读 Metadata & Lifecycle,了解依赖项管理和部署命令。将
AiAuthoringBundle及所有支撑逻辑(Apex 类、Flows、Prompt Templates)和依赖项部署到 org。 - 实时预览 — 阅读 Validation & Debugging,了解预览工作流和会话跟踪分析。
sf agent preview start --json --use-live-actions --authoring-bundle <Developer_Name>然后使用以下命令发送测试话语:sf agent preview send --json --authoring-bundle <Developer_Name> --session-id <ID> -u "<message>"测试关键对话路径,以验证由实时操作提供支持时 Agent 的行为。 检查点 — 除非以下条件全部满足,否则不要继续发布:validate authoring-bundle验证通过且没有错误- 已使用具有代表性的各子 Agent 话语测试实时预览(
--use-live-actions) - 跟踪确认子 Agent 路由和操作调用正确
- 用户明确批准部署
- 发布 — 发布会验证元数据结构,而非 Agent 行为。请勿在开发/测试迭代中发布。只有在激活 Agent 并向最终用户开放之前,才能将发布作为最后一步。
sf agent publish authoring-bundle --json --api-name <Developer_Name>如果发布失败,请在重试前按照 Metadata & Lifecycle 中的 Troubleshooting Publish Failures 操作。 - 激活 — 使新版本可供用户使用。
sf agent activate --json --api-name <Developer_Name> - 验证已发布的 Agent — 激活后,通过预览检查面向用户的行为:
sf agent preview start --json --api-name <Developer_Name>使用--api-name,不要使用--authoring-bundle。 - 配置最终用户访问权限 — 仅适用于员工 Agent。阅读 Agent Access Guide,配置权限并分配访问权限。
参考文件
- CLI for Agents — 部署、发布、激活和停用的准确命令语法
- Validation & Debugging — 编译验证、预览工作流
- Metadata & Lifecycle — 依赖项管理、部署命令;发布故障排查
- Agent Access Guide — 最终用户 访问权限、可见性故障排查
- Known Issues — 仅在部署卡住、发布失败或激活意外失败时加载
诊断生产问题
用户的 Agent 已发布并处于激活状态,但仍遇到预览阶段未发现的问题。包括积分消耗过多、令牌或大小限制导致的失败、循环防护中断、保留关键字导致的运行时错误、VS Code 同步失败,或预览与生产环境之间出现意外的行为差异。
必需步骤
阅读 面向 Agent 的 CLI,了解准确的命令语法。
- 对问题进行分类 — 判断这是计费/成本问题、运行时限制、命名冲突、工具问题,还是预览版与生产环境之间的行为差异。
- 检查已知的生产环境注意事项 — 阅读 生产环境注意事项,了解积分消耗、令牌限制、循环护栏、保留关键字、生命周期钩子和 VS Code 解决方法。
- 比较预览版与生产环境的行为 — 如果问题与行为有关,请使用
sf agent preview start --json --api-name <Developer_Name>预览已发布的 Agent(不要使用--authoring-bundle)。再将其与使用--authoring-bundle <Developer_Name> --use-live-actions的实时操作创作捆绑包预览进行比较,以隔离预览版与生产环境之间的差异。 - 检查已知问题 — 阅读 已知问题,查看可能导致仅在生产环境中出现故障的平台问题。
- 修复并重新发布 — 应用修复、验证、重新预览、发布、激活并确认。遵循部署、发布和激活步骤。
- 说明诊断结果 — 告诉用户发生了什么以及你做了哪些更改。说明根本原因。
参考文件
- 生产环境注意事项 — 积分 消耗、令牌限制、循环护栏、保留关键字、 生命周期钩子、VS Code 解决方法
- 面向 Agent 的 CLI — 预览、发布、激活的命令 语法
- 验证与调试 — 预览工作流、会话跟踪分析
- 已知问题 — 仅在问题可能是 平台错误时加载
删除或重命名 Agent
用户想要移除 Agent 或更改其名称。由于 AiAuthoringBundle 版本控制和已发布版本依赖关系,维护任务较为复杂。
必需步骤
阅读 面向 Agent 的 CLI,了解准确的命令语法。
- 了解当前状态 — 阅读 元数据与生命周期,了解版本控制、删除机制和重命名机制。确认 Agent 是否已发布、存在多少个版本,以及当前是否处于激活状态。
- 如果处于激活状态,则停用 —
sf agent deactivate --json --api-name <Developer_Name>处于激活状态的 Agent 无法删除或重命名。 - 执行操作 — 删除时:遵循“元数据与生命周期”参考文档中的删除机制。重命名时:遵循同一参考文档中的重命名机制。
- 清理孤立项 — 检查并移除孤立的元数据:Bot、BotVersion、GenAiPlannerBundle、GenAiPlugin、GenAiFunction。“元数据与生命周期”参考文档详细说明了需要检查的内容。
- 验证 — 确认操作已顺利完成。重命名时,验证新的捆绑包可以编译,并进行预览以确认行为。
参考文件
- 面向 Agent 的 CLI — 删除、停用、检索的准确 命令语法
- 验证与调试 — 编译验证、预览工作流
- 元数据与生命周期 — 删除机制、重命名机制、孤立项清理
测试 Agent
用户想要为 Agent Script Agent 创建自动化测试。这需要以 YAML 格式编写 AiEvaluationDefinition 测试规范,用于定义测试场景、预期行为和质量指标。
必需步骤
阅读 CLI for Agents,了解准确的命令语法。
- 建立覆盖基线 — 阅读 Agent Spec。如果不存在 Agent Spec,请先按照 Comprehend 步骤进行逆向工程。梳理每个子 Agent、操作和流程控制路径,确定需要测试覆盖的内容。
- 设计测试场景 — 测试设计方法、预期结果、指标、测试规范 YAML 格式和模板,请使用 testing-agentforce 技能。该技能负责所有测试内容。针对每个覆盖目标,编写一个或多个测试场景:用户话语、预期的子 Agent 路由、预期的操作调用以及预期的 Agent 响应。既要包含正常路径,也要包含边缘情况。
- 编写测试规范 YAML — 使用 testing-agentforce 技能中的模板和参考文件。将文件保存到 SFDX 项目中的
specs/<Agent_API_Name>-testSpec.yaml。 - 创建测试元数据 — 使用 CLI 根据测试规范生成
AiEvaluationDefinition。 - 部署测试 — 将
AiEvaluationDefinition部署到组织。 - 运行测试 — 使用 CLI 执行测试运行。捕获结果。
- 分析结果 — 将实际结果与预期进行比较。对于失败的测试,判断问题出在 Agent 代码、后端逻辑还是测试规范本身。
- 迭代 — 根据需要修复 Agent 代码或测试规范,重新部署并再次运行,直到达到覆盖目标。
参考文件
- CLI for Agents — 测试创建、运行和结果查询的准确命令语法
- Core Language — 用于设计有效测试的 Agent 结构
- Design & Agent Spec — Agent Spec 作为测试覆盖基线
- testing-agentforce 技能 — 测试规范 YAML 格式、预期结果、指标、测试设计方法和测试规范模板
Agent Spec
Agent Spec 是此技能生成和使用的核心产物。它是一份结构化设计文档,描述 Agent 的用途、子 Agent 图、带后端逻辑的操作、变量、门控逻辑和行为意图。
Agent Spec 会随着 Agent 演进。在创建 Agent 时内容较少(用途、主题、方向性说明);在构建 Agent 时逐步完善(流程图、映射后的后端逻辑、记录的门控逻辑);在理解现有 Agent 时通过逆向工程生成。它对于高级故障排查至关重要,可作为对照预期行为与实际行为的参考。在测试期间,测试覆盖情况会依据它进行映射。
对于任何会更改或分析 Agent 的操作,始终将生成或更新 Agent Spec 作为第一步。它能为工作提供一致的依据,也是开发者可以审阅的持久产物。
阅读 Design & Agent Spec,了解 Agent Spec 的结构和编写方法。
资源
assets/ 目录包含模板和示例。当你需要起点或工件和源文件的具体参考时,请阅读这些内容。
-
assets/agent-spec-template.md— Agent Spec 模板,包含所有章节和占位内容。将其复制到项目目录中的<AgentName>-AgentSpec.md,然后在设计过程中填写。将 Agent Spec 保存为文件——这是一项重要的设计工件,妥善渲染会更有帮助,尤其是 Mermaid 子 Agent 映射图。 -
assets/local-info-agent-annotated.agent— 基于 Local Info Agent 编写的完整注释示例,展示了 Agent Script 的所有主要构造及其上下文,并通过行内注释解释使用每种构造的原因。当你需要了解各个概念如何组合成可运行的 Agent,或者参考文件中的针对性示例不够充分时,可阅读此文件作为备用参考。 -
assets/template-single-subagent.agent— 包含一个子 Agent 的最简 Agent。复制并修改它,以创建简单的 Agent。 -
assets/template-multi-subagent.agent— 包含多个子 Agent 和转换的最简 Agent。复制并修改它,以创建复杂的 Agent。 -
assets/invocable-apex-template.cls— 可调用 Apex 类的参考示例。需要复杂的 Apex 后端逻辑时,可复制并修改此文件。
重要限制
-
仅使用 Salesforce CLI 和 Salesforce 组织。 不要引用或依赖其他技能、MCP 服务或外部工具。所有命令都使用
sf(Salesforce CLI)。 -
只有某些后端逻辑类型可用于操作。 例如,操作只能由可调用 Apex(而非任意 Apex 类)提供后端逻辑。Flow 和提示词模板也可能存在类似限制。将操作连接到后端逻辑时,请查阅 Design & Agent Spec 参考文件,了解有效类型和存根方法。
-
sf agent generate test-spec不适用于 Agent 操作。 这是为人类设计的交互式 REPL 风格命令。创建测试规格时,请改用 assets 中的样板模板。
常见问题速查
发布时出现 Internal Error, try again later:
default_agent_user 无效或缺失。重新运行 Design & Agent Spec 第 3 节中的查询。不要编造用户名。
预览时出现 Unable to access Salesforce Agent APIs...:
default_agent_user 缺少权限。请参阅 Agent User Setup & Permissions。不要通过发布来修复——--use-live-actions 不要求 Agent 已发布。
权限错误中引用的用户名与已配置的用户名不同: 修复方法同上——错误引用的是组织默认运行用户,但根本原因是 Einstein Agent User 的权限。
即使当前子 Agent 的操作可正常运行,Agent 仍因权限错误而失败: Planner 会在启动时验证所有子 Agent 中的所有操作。缺少一项权限就会导致整个 Agent 失败。
Apex 操作在实时预览中返回空结果,但在模拟模式下正常:
WITH USER_MODE + 缺少对象权限 = 静默失败(0 行,无错误)。请参阅 Agent User Setup & Permissions 第 6.2 节。
语法快速参考
- 块顺序:
system:→config:→variables:→connection:→knowledge:→language:→start_agent agent_router:→subagent:块 - 缩进:每级缩进使用 4 个空格。切勿使用制表符。混用空格和制表符会导致解析器无法正常工作。
- 布尔值:
True/False(首字母大写) - 字符串:始终使用双引号
- 数值型操作 I/O:变量可以使用裸
number,但在操作 I/O 中会导致发布失败。数值型操作参数请使用object+complex_data_type_name。完整决策树请参阅 复杂数据类型。 after_reasoning:不需要instructions:包装- 不支持
else if——请使用复合条件if x and y:或依次编写独立的 if 语句 - 保留的
@InvocableVariable名称:model、description、label——不能用作 Apex 参数名称 @inputs和@outputs是临时的:@inputs只能在with中使用;@outputs只能在操作之后立即使用的set/if中使用。在set中使用@inputs会静默失败。
Lightning 类型映射的完整决策树请参阅 复杂数据类型。有关 3 阶段运行时模型,请参阅 指令解析。
架构模式
三种主要 FSM 模式。完整详情和代码请参阅 架构模式。
- 中心辐射式(最常见):
start_agent将请求路由到专用子 Agent。每个子 Agent 都有“返回中心”的转换。切勿单独创建路由子 Agent。 - 验证关卡:在受保护的子 Agent 前进行身份验证。受保护转换上使用
available when守卫。 - 操作后循环:操作后的检查放在
instructions: ->的顶部,在操作完成后重新解析时触发。
评分标准
按 7 个类别、总分 100 分为每个生成的 Agent 评分:结构(15)、安全性(15)、确定性逻辑(20)、指令解析(20)、FSM 架构(10)、操作配置(10)、部署准备情况(10)。
完整评分标准请参阅 评分标准。
审查模式
用户提供现有的 .agent 文件时(例如 review path/to/file.agent):
- 读取文件
- 根据 100 分制评分标准进行评分
- 按类别列出所有问题
- 提供修正后的代码片段
- 提出代为应用修复
安全审查
针对 .agent 文件的 7 类大模型驱动安全审查。已集成到创作和部署的第 0 阶段。类别:身份与透明度、用户安全、数据处理、内容安全、公平性、欺骗、范围与边界。
有关完整框架、严重级别、误报指南和对抗性测试提示词,请参阅 安全审查。
发现与搭建
验证操作目标是否存在于组织中,并为缺失的目标生成存根。
重要: 存根必须返回真实的数据,而不是 'TODO'。占位响应会导致 SMALL_TALK grounding,因为大模型会退回到训练数据。
部署生命周期
验证 → 部署元数据 → 发布捆绑包 → 激活。有关各阶段、错误恢复、CI/CD 和回滚,请参阅 部署参考。
模板资源
assets/agents/ 中提供可直接使用的 .agent 模板(hello-world、simple-qa、multi-subagent、production-faq、order-service、verification-gate)。另请参阅 assets/patterns/ 中的 11+ 个可复用设计模式,以及 示例 中的内嵌演练。
补充参考资料
| 主题 | 文件 |
|---|---|
| 架构模式 | architecture-patterns.md |
| 类型映射决策树 | complex-data-types.md |
| 不同上下文中的功能有效性 | feature-validity.md |
| 指令解析模型 | instruction-resolution.md |
| 完整的 Agent 示例 | examples.md |