关于 sentry-triage
此技能通过 Composio CLI 获取 Sentry 问题、事件和可疑提交,引导 Agent 进行诊断与修复,适用于处理单条告警或批量排查未解决问题的开发者。
主要功能
- 01获取 Sentry 问题与事件
- 02检查堆栈帧和可疑提交
- 03拟定补丁并运行测试
- 04列出并排序未解决问题
- 05更新问题状态
适用场景
- 01调查新的 Sentry 告警
- 02追踪回归问题的可疑提交
- 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_ISSUESENTRY_LIST_AN_ISSUES_EVENTSSENTRY_RETRIEVE_AN_EVENT_FOR_A_PROJECTSENTRY_LIST_A_PROJECTS_ISSUESSENTRY_UPDATE_AN_ISSUE
诊断单个问题
- 获取问题(使用
PROJ-1F4这样的短 ID 或数字 ID):composio execute SENTRY_GET_AN_ISSUE -d '{"issue_id":"PROJ-1F4"}' - 获取最新事件,包含完整堆栈和面包屑:
composio execute SENTRY_LIST_AN_ISSUES_EVENTS \ -d '{"issue_id":"PROJ-1F4","full":true,"limit":1}' - 将每个堆栈帧映射到本地源代码。 对于堆栈中的每个
filename和lineno,Agent 都会打开文件并读取前后各 20 行。无需手动复制粘贴。 - 检查可疑提交(配置发布跟踪后,Sentry 会附上这些提交),并在本地使用
git show <sha>查看。 - 提出修复方案并附上差异,运行测试;测试通过后,将问题标记为已解决:
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