mcpField
I
implementing-agent-modes

implementing-agent-modes

github.com/posthogAgent 工作流40.5k2.6k 次安装今天更新
代码仓库

关于 implementing-agent-modes

用于规划和实现 PostHog Agent 模式的开发技能,涵盖模式架构、工具包、轨迹示例、前端接入、功能标记和测试。

主要功能

  1. 01规划并界定 Agent 模式
  2. 02定义模式架构和脚手架
  3. 03添加专用工具与示例
  4. 04接入前端模式选择器
  5. 05通过功能标记控制模式和工具
  6. 06测试工具、预设和执行器

适用场景

  1. 01为 PostHog 产品领域添加模式
  2. 02为 Agent 配置专用工具
  3. 03更新工具输出的界面呈现
  4. 04在功能标记下验证新模式

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/posthog/posthog --skill implementing-agent-modes

安装后在 Claude Code 中输入/implementing-agent-modes确认已加载。

详细介绍

Agent 模式

使用以下步骤来规划或实现一个新模式。模式是一种管理 Agent 上下文的方式,并注入与某个产品、用例、JTBD 等相关的工具、提示词和模式相关行为。Agent 拥有 switch_mode 工具,允许它自行切换到另一个模式,这可能会更改工具、提示词和可执行文件,同时保留当前上下文。一些先前创建的工具是上下文相关的,意味着它们会被注入到前端的特定页面中。模式会改变处理方式,并且始终在模式上下文中包含工具。

确定模式名称

探索 ee/hogai/core/agent_modes/presets 目录,检查是否已有符合用户意图的模式。如果你想创建一个新模式,应按 PostHog 产品(Product analytics)、产品领域(SQL)或 Agent(Instrumentation agent)来界定其范围。

(可选)在 schema 中创建新模式

向 frontend/src/queries/schema/schema-assistant-messages.ts 添加一个新的 AgentMode,并使用以下命令重新生成 schema:

hogli build:schema

或者,你可以使用此命令:

pnpm run schema:build

创建或更新模式的脚手架

一个模式通常至少应包含两项内容:

  • 一个 AgentToolkit,暴露该模式特有的工具,以及 todo 工具的轨迹示例。
  • 一个 AgentModeDefinition,包含 AgentMode、始终注入到 Agent 上下文窗口中的模式描述,以及 toolkit 和可执行文件的类。

注意:只有当用户需要修改提示词、该模式的行为或执行循环本身时,你才应创建新的可执行文件。

向模式添加工具

相关工具可能位于 ee/hogai/tools 或 products/<product_name>/backend/max_tools。有一组工具始终会被注入到上下文中,例如 read_data 工具,但所有其他工具都应是该模式特有的。

在向 toolkit 添加工具之前,先确定这些工具是否有工具依赖关系。如果存在依赖关系(例如某个实验依赖于功能标志的创建),请回到用户处,确定他们是否希望将多个模式合并为一个。如果他们不希望这样做,请确保你之后添加一个清晰解释模式切换和工具选择的轨迹示例。

你还应验证这些工具是否后端优先。如果工具在前端应用更改,却没有将适当的上下文传回对话,你应提出一种使其后端优先的方法,以便 Agent 拥有正确的上下文。

审查默认 toolkit

如果新模式包含新的 Django 模型,你应审查 read_data、search 和 list_data 工具是否具备检索这些模型的功能。如果它们不支持这些模型,你应使用或实现 ee/hogai/context/... 中可用的某个上下文提供程序。

编写类似 JTBD 的轨迹示例

更新 AgentToolkit 以包含轨迹示例。这些示例应采用 JTBD 风格,展示 Agent 应如何使用可用工具完成典型任务。请参考 Product analytics 预设作为参考。

实现前端

更新 max-constants.tsx 以包含新工具,并将该模式添加到模式选择器中。你可能还需要创建新的 UI 元素,用于显示来自这些工具的数据。

示例

假设你更新了 Error tracking 工具以列出问题。它过去是一个仅更新过滤器的前端工具,但现在它会输出错误跟踪问题。虽然 Agent 拥有它所需的上下文,但用户也需要以人类可读的方式看到这些问题。在这种情况下,你应设计并实现一个新组件来显示该工具的输出。

添加功能标志

所有新模式都必须有功能标志。示例:

    @property
    def mode_registry(self) -> dict[AgentMode, AgentModeDefinition]:
        registry = dict(DEFAULT_CHAT_AGENT_MODE_REGISTRY)
        if has_error_tracking_mode_feature_flag(self._team, self._user):
            registry[AgentMode.ERROR_TRACKING] = error_tracking_agent
        return registry

如果你创建了新工具,请确保为它们正确设置功能标志:

  1. 正在迁移的旧工具在功能标志处于激活状态时不应可用。
  2. 新工具应仅在功能标志处于激活状态时可用。

实现并更新测试

你应该测试新工具、预设、可执行文件,并可选地实现评估。

评论

支持 Markdown