本篇要解決的問題
除了開發新專案,工程師日常最耗時的工作通常是排查、修復既有系統的 Bug。
而當 Anthropic 推出 Model Context Protocol (MCP)後,AI 在軟體開發自動化(DevOps Automation)有了全新落地應用,那有沒有辦法可以讓 AI 自己去找 bug 然後再自己修?
想到以前曾用過一陣子 Sentry,查了一下有 MCP 可用。
再查了一下 Gitea,也確定有 MCP 可用。
那把兩邊尬在一起,不就可以達成本篇的目標:AI 自己找 bug 後自己修?
本文實作如何透過 Sentry MCP 自動抓取 Production 錯誤堆疊,再結合 Gitea MCP 讓 Claude Code 實現每日自動找 Bug、本機修復測試、自動提交 PR 的完整除錯流程。
安裝 Sentry MCP
本機要先安裝 Claude CLI:https://code.claude.com/docs/en/quickstart
1 先下指令安裝,安裝 Sentry MCP:
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp --scope user
2 登入 Sentry 帳戶進行授權:
終端機輸入 claude,接著輸入:
/mcp list
清單裡會看到 sentry 顯示為未授權,對 sentry 那項按 enter,瀏覽器會開啟頁面,都按 Approve 就行:
Claude Code 終端機執行 MCP list 選擇 Sentry 授權
Sentry 官方網站 OAuth 授權頁面點擊 Approve
Sentry MCP 授權成功完成提示頁面
接著 Claude 要重啟,可以問問 Claude 有了 Sentry MCP 後它可以做到哪些事,August 詢問後回答如下:
-
查 issue:
search_issues搜錯誤,按專案/時間/狀態過濾 -
查事件:
search_events挖詳細 event 資料,stack trace、tag、breadcrumb 都能看 -
AI 診斷:
analyze_issue_with_seer丟給 Seer 分析根因,給修復建議 -
改狀態:
update_issue標 resolved/ignored、指派負責人 -
找組織/專案:
find_organizations、find_projects列出可存取範圍 -
通用查詢:
get_sentry_resource、execute_sentry_tool存取更細資源
讓 Claude 知道要抓取哪個專案
Sentry 後台的側邊導覽列,點擊「設定 > 專案」,然後點擊要讓 Claude 分析的專案後,會看到專案資訊:
Sentry 後台專案設定中查看 Project Slug 與專案編號
提供 Slug 或是專案編號給 Claude 都行,就會抓到了,以下是 August 提供專案編號的示範:
在 Claude Code 對話中提供 Sentry 專案編號進行讀取
安裝 Gitea MCP
下列有三種方式,無論選擇哪種安裝方式,都需要先取得一組具備讀寫權限的 Gitea Token。
詳細的 Token 建立步驟與權限設定,請參考站內筆記文:
CodiumAI PR-Agent,在 Gitea 上用 AI 來 Code Review
方式一:直接用 go run
需要本機有 Go 才能使用:
claude mcp add --transport stdio --scope user gitea \
--env GITEA_ACCESS_TOKEN=你的token \
--env GITEA_HOST=https://your-gitea.internal \
-- go run gitea.com/gitea/gitea-mcp@latest -t stdio
方式二:下載官方執行檔
官方 releases 有提供 gitea-mcp_Windows_x86_64.zip 給 Windows,以及 gitea-mcp_Darwin_arm64.tar.gz 給 Apple Silicon Mac。
Windows:
從 https://gitea.com/gitea/gitea-mcp/releases 下載 gitea-mcp_Windows_x86_64.zip
解壓縮,把 gitea-mcp.exe 放到一個固定資料夾(例如 C:\Tools\gitea-mcp)。
把該資料夾加進系統環境變數 PATH。
Mac:
curl -LO [https://gitea.com/gitea/gitea-mcp/releases/download/v1.2.0/gitea-mcp_Darwin_arm64.tar.gz](https://gitea.com/gitea/gitea-mcp/releases/download/v1.2.0/gitea-mcp_Darwin_arm64.tar.gz)
tar -xzf gitea-mcp_Darwin_arm64.tar.gz
sudo mv gitea-mcp /usr/local/bin/
chmod +x /usr/local/bin/gitea-mcp
安裝好 Gitea MCP 後,接上 Claude Code:
claude mcp add --transport stdio --scope user gitea --env GITEA_ACCESS_TOKEN=你的token --env GITEA_HOST=https://your-gitea.internal -- gitea-mcp -t stdio
方式三:用 Docker
官方也提供 docker.gitea.com/gitea-mcp-server 這個 image,不需要額外編譯或裝 Go。
claude mcp add --transport stdio --scope user gitea \
--env GITEA_ACCESS_TOKEN=你的token \
--env GITEA_HOST=https://your-gitea.internal \
-- docker run --rm -i -e GITEA_ACCESS_TOKEN -e GITEA_HOST [docker.gitea.com/gitea-mcp-server](http://docker.gitea.com/gitea-mcp-server)
不管選擇哪種方式,安裝好後在 Claude Code 輸入 /mcp,確認 Gitea 連線成功。
Claude Code 設定排程
Claude Code 選好本機專案後,貼上以下:
建立一個本機的排程,在本專案執行以下「Sentry issue 自動修復」功能:
Sentry 組織 slug: your-org-slug
Sentry 專案 slug: your-project
Gitea repo: Gitea 專案網址
步驟 1 - 找 issue:
呼叫 search_issues 找未解決的 error 類型 issue,
一次只查一種類型,不要用 OR / AND 組合查詢:
- "unresolved error issues" (limit 3)
依事件數排序,取前 3 個。
步驟 2 - 抓細節:
對每個候選 issue 呼叫 get_issue_details,
取得完整 stack trace 與 trace ID。
步驟 3 - 分析根因:
對每個 issue 呼叫 analyze_issue_with_seer。
若 Seer 沒有給出可行的修正建議,
改用步驟 2 拿到的 stack trace 自行分析程式碼、
定位根因所在的檔案與函式。
步驟 4 - 本機修復:
只處理「根因明確、修改範圍小」的 issue(跳過需要
架構調整或影響多個模組的問題,改走步驟 6 的 fallback)。
在本機修改對應程式碼,接著執行專案既有的測試指令,
確認測試全數通過才進入下一步;測試沒過就放棄這個
issue、改走步驟 6。
步驟 5 - 開 PR(Gitea,透過 gitea-mcp):
a. 呼叫 pull_request_read(method: list, state: open)
檢查 owner/repo 是否已有相同 issue 的開啟中 PR,
有的話跳過,避免重複開單。
b. git checkout -b fix/issue-<issue-id>-<date> main
commit 訊息包含 Sentry issue ID。
git push 到 Gitea。
c. 呼叫 pull_request_write(method: create):- owner/repo - head: fix/issue-<issue-id>-<date> - base: main - title: "fix: <根因摘要>" - body:
"Sentry issue: <issue 連結>
Trace ID: <trace id>
根因: <Seer 或自行分析的結論>
修改內容: <變更摘要>
測試結果: 已跑過既有測試並通過"
d. 每次執行最多開 2 個 PR,超過就停止並在最後總結說明。
步驟 6 - 無法修復時(fallback):
若 Seer 與自行分析都無法定位可行修正,或修改範圍過大、
或測試沒通過,改呼叫 issue_write(method: create)
在 Gitea 開一個 issue,內容包含 Sentry issue 連結、
trace ID、已知線索,標記給人工處理,不要硬修。
執行完畢後,用一段文字總結:處理了幾個 issue、開了幾個 PR、
有幾個轉成 fallback issue,並列出每個 PR / issue 的連結。
需要替換的是前面幾行的這 3 個:
Sentry 組織 slug: your-org-slug
Sentry 專案 slug: your-project
Gitea repo: Gitea 專案網址
前 2 個值可以在 Sentry 後台取得。
第 3 個值就是 Gitea 上的專案取得。
送出後,Claude Code 會詢問執行的時間,提供後就會建立完成。
建議是建立完成後,執行一次,看還會遇到什麼問題。
建立好的排程,會出現在「Routines」裡:
Claude Code 自動排程 Routine 建立成功介面
進階整合:搭配 CodiumAI PR-Agent 實現 Gitea 自動 Code Review
最後再搭配這篇,就會在有 PR 時自動再做一次 Code Review:






Top comments (0)