mcpField
S
sentry-triage

sentry-triage

github.com/composio-community开发17.1k470 次安装14 周前更新
代码仓库

关于 sentry-triage

此技能通过 Composio CLI 获取 Sentry 问题、事件和可疑提交,引导 Agent 进行诊断与修复,适用于处理单条告警或批量排查未解决问题的开发者。

主要功能

  1. 01获取 Sentry 问题与事件
  2. 02检查堆栈帧和可疑提交
  3. 03拟定补丁并运行测试
  4. 04列出并排序未解决问题
  5. 05更新问题状态

适用场景

  1. 01调查新的 Sentry 告警
  2. 02追踪回归问题的可疑提交
  3. 03生成未解决问题排名摘要

MCP 相关

这是 Agent 技能,而非 MCP 服务。它通过 Composio CLI 访问 Sentry 工具。

安装

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

$npx skills add https://github.com/composio-community/awesome-codex-skills --skill sentry-triage

安装后在 Claude Code 中输入/sentry-triage确认已加载。

详细介绍

Sentry 问题排查

通过 Composio CLI 将 Sentry 问题、事件和可疑提交直接交给 Agent。告别复制粘贴堆栈跟踪的麻烦。

适用场景

  • 收到新的 Sentry 告警,希望 Agent 展开调查,而不是只复述主题行。
  • 诊断回归问题:找出相关发布版本、可疑提交和受影响文件。
  • 生成包含复现提示的“未解决问题 Top 10”摘要。

前提条件

curl -fsSL https://composio.dev/install | bash
composio login
composio link sentry        # auth token with event:read + project:read

发现工具

composio search "get sentry issue" --toolkits sentry
composio search "list events for issue" --toolkits sentry
composio tools list sentry

常见的工具标识(使用 --get-schema 验证):

  • SENTRY_GET_AN_ISSUE
  • SENTRY_LIST_AN_ISSUES_EVENTS
  • SENTRY_RETRIEVE_AN_EVENT_FOR_A_PROJECT
  • SENTRY_LIST_A_PROJECTS_ISSUES
  • SENTRY_UPDATE_AN_ISSUE

诊断单个问题

  1. 获取问题(使用 PROJ-1F4 这样的短 ID 或数字 ID):
    composio execute SENTRY_GET_AN_ISSUE -d '{"issue_id":"PROJ-1F4"}'
    
  2. 获取最新事件,包含完整堆栈和面包屑:
    composio execute SENTRY_LIST_AN_ISSUES_EVENTS \
      -d '{"issue_id":"PROJ-1F4","full":true,"limit":1}'
    
  3. 将每个堆栈帧映射到本地源代码。 对于堆栈中的每个 filename 和 lineno,Agent 都会打开文件并读取前后各 20 行。无需手动复制粘贴。
  4. 检查可疑提交(配置发布跟踪后,Sentry 会附上这些提交),并在本地使用 git show <sha> 查看。
  5. 提出修复方案并附上差异,运行测试;测试通过后,将问题标记为已解决:
    composio execute SENTRY_UPDATE_AN_ISSUE \
      -d '{"issue_id":"PROJ-1F4","status":"resolved","statusDetails":{"inNextRelease":true}}'
    

批量问题排查

composio execute SENTRY_LIST_A_PROJECTS_ISSUES -d '{
  "organization_slug":"acme",
  "project_slug":"api",
  "query":"is:unresolved age:-24h",
  "sort":"freq",
  "limit":20
}'

通过管道传给 jq,生成排名摘要:

composio execute SENTRY_LIST_A_PROJECTS_ISSUES -d '{"organization_slug":"acme","project_slug":"api","query":"is:unresolved"}' \
  | jq -r '.[] | "\(.count)\t\(.shortId)\t\(.title)"' | sort -rn | head

工作流文件

scripts/sentry-diag.ts,使用 composio run --file scripts/sentry-diag.ts -- --id PROJ-1F4 运行:

const id = process.argv[process.argv.indexOf("--id") + 1];

const issue = await execute("SENTRY_GET_AN_ISSUE", { issue_id: id });
const [event] = await execute("SENTRY_LIST_AN_ISSUES_EVENTS", {
  issue_id: id, full: true, limit: 1
});

const frames = (event?.entries ?? [])
  .filter(e => e.type === "exception")
  .flatMap(e => e.data.values.flatMap(v => v.stacktrace?.frames ?? []))
  .filter(f => f.inApp)
  .map(f => ({ file: f.filename, line: f.lineno, fn: f.function }));

console.log(JSON.stringify({ title: issue.title, culprit: issue.culprit, frames }, null, 2));

随后,Agent 会读取每个 file 中 line ± 20 范围内的内容,并起草补丁。

路由到 Linear / Slack

串联工具,为排名第一的未解决问题创建工单:

composio run '
  const [top] = await execute("SENTRY_LIST_A_PROJECTS_ISSUES", {
    organization_slug: "acme", project_slug: "api",
    query: "is:unresolved", sort: "freq", limit: 1
  });
  await execute("LINEAR_CREATE_ISSUE", {
    teamId: "TEAM_ID",
    title: `[Sentry] ${top.title}`,
    description: `Short ID: ${top.shortId}\nPermalink: ${top.permalink}\nCount: ${top.count}`
  });
'

故障排除

  • 404 on issue_id → 使用短 ID(PROJ-1F4),而不是 URL slug。
  • 事件列表为空 → 问题已解决或已归档;使用 query:"is:resolved" 查询,或调高 limit。
  • 缺少可疑提交 → Sentry 中未配置发布跟踪;在 CI 中配置 sentry-cli releases。
  • 没有 inApp 帧 → 尚未上传源映射;堆栈只会显示供应商代码。

完整 CLI 参考:docs.composio.dev/docs/cli

评论

支持 Markdown