创建自定义代理
帮助用户在 Amplitude 中构建自定义代理。此技能的任务是让这个过程变得简单且具体:基于你对用户及其数据的了解提出强有力的想法,将选定的想法塑造成一个结构良好的代理,然后返回一个可点击的 Global Agent 链接(以及纯文本格式的相同提示)。
该技能不会直接创建代理(因为目前没有相关 API)。它会生成一个完全指定的提示和一个深度链接;用户打开链接,在 Global Agent 中查看草案,然后由 Global Agent 来配置代理。
在提出建议之前,请先阅读 references/use-cases.md 和 references/best-practices.md;关于代理指令的措辞,请参考 references/prompting-instructions.md;关于完整的提示示例,请参考 references/examples.md。
行为准则(请先阅读)
- 以建议开头,而不是空白提示。 用户调用此技能是因为他们想要一个自定义代理。首先提出两到三个具体、切合实际的点子,然后邀请他们选择或调整。切勿一开始就问“你想让它做什么?”。
- 永远不要提供多项选择菜单。 不要使用菜单、数字选择器或 AskUserQuestion 风格选项列表来限制对话。像同事一样,用真实的建议进行内联交流。
- 提供帮助,而不是设置障碍。 你的默认态度是帮助他们构建。如果用户描述的工作流程恰好是一个内置的专用代理,可以将其作为有用的旁注提及,然后继续帮助他们;不要拒绝或让他们陷入死胡同。自定义代理仍然可以执行内置任务的限定、定时或特定交付版本。
第 1 步 - 基于上下文提出建议
根据你所掌握的上下文提出建议,优先级如下:
- 你已了解的用户信息。 他们的角色、团队、产品领域以及对话或连接上下文中的任何信息。产品经理、工程师、增长营销人员和学习设计师需要不同的代理。建议要因人而异。
- 如果可以访问,使用他们的 Amplitude 数据。 参见第 2 步。通过拉取他们的真实项目和热门事件,你可以围绕他们实际收集的事件来建议代理,这比泛泛的想法更有效。
- 用例目录。
references/use-cases.md按角色和代理库类别列出了强大的代理。用它来填补空白,并根据其中的“什么让每个代理优秀”检查清单来塑造每个想法。
提出两到三个具体想法,每个想法都描述为一个实际的代理(包含信号、阈值、频率、目标位置),而不是模糊的主题。然后询问哪个最接近他们的需求,或者他们想改动什么。如果你确实没有任何上下文,要么问一个关于他们手动重复的工作流程的开放式问题,要么提供第 3 步中的构思链接,而不是胡乱猜测。
第 2 步 - 基于数据(可选,当 Amplitude MCP 可用时)
如果此环境中连接了 Amplitude MCP 工具,请使用它们来让建议基于真实数据。保持简洁:足以命名真实事件即可,无需完整分析。
- 调用上下文工具列出用户的项目,然后调用事件工具查看他们的热门或最新事件。不要猜测事件名称;读取它们。
- 基于用户实际收集的事件来建议代理,并在后续生成的提示中使用准确的事件名称。
- 如果 MCP 工具不可用,则跳过此步骤,依赖角色上下文和用例目录,或提供下面的构思链接。切勿阻塞在 MCP 上。
第 3 步 - 提供 Global Agent 构思链接(可移植的备用方案)
当你无法直接访问用户数据时,Global Agent 可以,因为它在其 Amplitude 组织内运行。提供一个深度链接,让 Global Agent 从其自身数据中建议自定义代理用例:
https://app.amplitude.com/?aiQuery=<URL-encoded brainstorm prompt>
一个好的构思提示:“查看我最活跃的事件和仪表板,建议三个我可以构建来自动化定期分析的自定义代理。对于每个代理,要监控的信号、一个护栏信号、一个标记阈值、一个频率以及结果交付位置。” 按第 5 步相同的方式进行编码。
第 4 步 - 塑造选定的想法(信息收集)
一旦用户确定了方向,请填写以下九个字段,只询问你还不知道的信息。首先设定预期。告诉他们不必精确回答所有问题:他们可以提供已知信息,你会用合理的默认值填补空白,并标记任何你猜测的内容。此外,构建代理是一个迭代过程,这里没有任何内容是最终版本;他们可以随时在 Amplitude 中调整任何内容。引导他们提供具体信息:模糊的输入会产生模糊的代理,而输出质量的最大驱动力是指令的具体程度。
| 字段 | 需要捕获的内容 | 引导建议 |
|---|---|---|
| 项目 | app_id 或“当前项目” | 代理只能使用用户已有权限访问的数据。 |
| 监控内容 | 此代理负责的一个工作流程或指标 | 一个代理,一个任务。如果他们列出三件事,就构建三个代理。 |
| 主要信号 | 项目中出现的准确事件或指标名称 | 使用真实事件名称;内部行话和代码名称会误导代理,因为如果数据中存储的是“Starter Plan”,代理就无法识别“自助服务”。在代理依赖该事件之前,该事件应已存在于项目中。 |
| 护栏信号 | 让主要信号保持准确的上下文事件 | 例如,将完成事件与注册事件配对,这样就不会误解读下降。 |
| 细分/过滤器 | 包含或排除哪些用户 | 除非另有说明,代理会分析所有用户,因此始终要指定细分。几乎总是排除内部流量。 |
| 标记内容 | 值得提出的条件 | 给出一个阈值,而不是“任何有趣的事情”——例如“周环比下降超过 15%”、“任何零事件的日子”。 |
| 频率 | 运行频率,包括日期、小时、时区 | 匹配它所服务的决策的节奏。每日或每周。 |
| 目标位置 | 结果送达的位置 | Amplitude 运行页面、Slack 频道、电子邮件、Jira、Linear 或 Notion。参见第 7 步中的 Slack 说明。 |
| 输出格式 | 可交付成果的样式 | 例如“标题数字然后要点总结”、“前 5 名变动者的表格”。 |
如果用户希望代理将特定图表、仪表板或群组引入其上下文,请告诉他们在 Global Agent 中审查草案时,在指令中 @提及 该资产。关于每个字段的措辞,references/prompting-instructions.md 涵盖了那些会悄悄产生错误输出的注意事项。
第 5 步 - 组装提示
用收集到的答案填充以下模板,保留字段标签并替换括号内的部分。
请为我创建一个具有以下详细信息的自定义代理:
- 项目:app_id [APP_ID](或“当前项目”)
- 监控内容:[工作流程或指标]
- 主要信号:[准确的事件或指标名称]
- 护栏信号:[上下文事件]
- 细分/过滤器:[包含/排除规则]
- 标记内容:[阈值或条件]
- 频率:[频率,日期,小时,时区]
- 目标位置:[结果送达位置]
- 输出格式:[可交付成果的样式]
对于用户没有回答的任何字段,填写合理的默认值并在你的消息中标记出来,以便他们知道需要复核,而不是让代理定义不完整。只有当默认值毫无意义时才省略该行。重申他们可以在代理创建后随时在 Amplitude 中更改这些设置。
第 6 步 - 构建深度链接
将填充好的提示转换为 Global Agent 链接,以便打开链接时提示已加载并可运行。
路由(应用根目录会自动解析用户所属组织,因此无需组织标识;已登录用户将进入 Global Agent,且提示已加载到输入框中):
https://app.amplitude.com/?aiQuery=<URL-encoded prompt>
对整个填充好的提示进行 URL 编码。将空格编码为 %20,换行符编码为 %0A,引号编码为 %22,括号编码为 %28 和 %29,# 编码为 %23,/ 编码为 %2F,: 编码为 %3A。
第 7 步 - 交付
返回三项内容:
- 可点击的链接,以一个命名 markdown 链接的形式呈现,其文本是一个简短的、通俗易懂的描述(例如,
[在 Amplitude 中构建此代理](https://app.amplitude.com/?aiQuery=...))。切勿将原始的编码 URL 作为可见文本粘贴。 - 第 5 步中的纯文本提示,以便他们可以手动粘贴到 Global Agent 或
/create-custom-agent命令中。 - 一行“接下来会发生什么”:他们打开链接,查看 Global Agent 提出的代理草案,然后发布。仅在适用时添加以下提醒:
- 如果目标位置是 Slack,请先将
AmplitudeSlackbot 邀请到目标频道,否则交付会静默失败。 - 任何影响最终用户的操作(启动实验、创建群组)在运行前需要人工批准。
- 代理在发布和分享之前是私有的。
- 如果目标位置是 Slack,请先将
专用代理(提及,而不是设置障碍)
Amplitude 提供了四个内置的专用代理:仪表板代理(监控仪表板的有意义变化)、会话回放代理(跨回放发现摩擦模式)、网站转化代理(注册/结账流程)和客户反馈代理(定性反馈主题)。如果某人的想法与其中之一完全匹配,请将其作为他们已经拥有的更快捷选项提及,然后提供构建自定义变体的帮助,如果他们希望以不同的方式设定范围、计划或交付的话。这只是一个旁注,绝不是停止帮助的理由。