SuperAPI AI 工具集

seer-embed

编程与开发

查看项目

更新于 10-16 05:48

技能介绍

用途:为 Sentry 的 Seer 增加新的内联富组件(embed)。Seer embed 通过 Markdoc 风格标签语法({% name %}{ ... }{% /name %})在 Seer 的 Markdown 输出中内联渲染,每个 embed 由 Zod schema、React 组件和注册表条目组成。

主要步骤:1) 在 static/app/components/seer/markdown/embeds/schemas.ts 的 SEER_EMBED_SCHEMAS 中新增条目,包含 description(供 LLM 判断何时输出)、level(inline/block)、Zod schema、examples,可选 featureFlag。2) 在 components/<name>.tsx 用 defineSeerEmbed 创建组件,name 必须与 schema 键一致;组件会按 schema 做 safeParse,无效数据返回 null。3) 在 embeds/index.ts 导入并注册,注册键为 displayName。4) 运行 pnpm gen:embed-widgets 重新生成 src/sentry/seer/agent/embed_widgets.generated.json 并提交。5) 在 seerMarkdown.mdx 增加对应章节。6) 运行 pnpm run lint:js 与 pnpm run typecheck 验证。

复杂 embed 约定:渲染 block 预览时改用目录结构(如 monitor/monitor.tsx 仅做 level 分发,block 走 lazy 导入),block 统一渲染在 SeerEmbedBlock 卡片内,不自行加边框容器;按子类型拆分为独立文件;spec 就近放置并使用共享测试工具。按 ID 拉取数据的 embed 需自写 stories/<name>EmbedStory.tsx,查询真实资源并覆盖 pending、error、empty、loaded 四种状态。

限制:组件只拿到标签体数据,不感知所在上下文;schema 需保持扁平简单以便 LLM 生成合法 JSON;featureFlag 需在 src/sentry/features/temporary.py 注册,后端会自动过滤。资料未提供收费、价格或平台支持等信息。