Day 297
介紹 no-mistakes
想跟大家介紹 kunchenguid 做的 no-mistakes。它在 GitHub 上的簡介只有一句:「git push no-mistakes」。
git push 是工程師把寫好的程式碼送上 GitHub 這類平台的那個動作。平常是直接送到專案的 repo(放程式碼的地方);這句簡介的意思是改成先送給 no-mistakes,等它檢查完,再由它幫你轉送出去。
它處理的是 AI 寫完程式之後的那一段。
作者 Kun Chen 在 GitHub 個人簡介寫自己以前在 Meta、Microsoft、Atlassian 當過 L8 工程師(大公司裡相當資深的技術職級),Day 234 介紹過的 firstmate 也出自同一位作者。no-mistakes 是今年 4 月建立的 repo,MIT 授權開源,到 10 月 20 日大約 8,900 顆星。
官方文件的說法是:AI 寫程式、改程式的速度,已經快過大多數團隊驗證的速度;最花功夫的,變成確認這些改動審過、測過、文件跟上、格式整理好,可以放心交出去。
現在不少人開始請 AI 幫忙寫程式、做小工具,寫得出來之後,有沒有人好好檢查過,就是接下來要面對的問題。no-mistakes 把這段檢查排成一條固定的流程。
這篇分享 no-mistakes 怎麼運作、卡住時誰決定要不要放行,以及它幫不上忙的情況。
送出去之前,先繞去它那邊檢查一輪
平常的流程是:程式寫好,直接送上 GitHub,發一個 PR(pull request,請隊友審核、合併程式碼的申請),再等雲端的自動檢查(CI)跑完;如果發現問題,修好再送一次。官方文件也提到,CI 有幫助,但它通常在送出去之後才跑,那時候程式碼已經攤在大家面前了。
改送給 no-mistakes 之後,它會另外複製一份專案出來跑檢查,你手上的檔案完全不會被動到,可以照樣繼續寫。開始之前,它會先弄清楚你這次想做什麼:你有講就照你講的;沒講時,只有在設定開啟且找到相符紀錄的情況下,才會從最近的 AI 程式助手對話推測;找不到就跳過。接著按固定順序一關一關跑(以下是省略版流程,官方完整流程還包括先把改動與最新版本對齊的 rebase):
- 審查:叫 AI 把這次的改動讀過一遍,抓出 bug 和之後會變成負擔的寫法
- 測試:針對這次改的地方跑測試,確認它真的做到你想做的事
- 文件:程式改了,說明文件跟著更新
- 格式:跑程式碼檢查工具,把排版和寫法統一
- 送出、開 PR:前面全部通過,才真的送出去,PR 也替你寫好、開好
- 盯 CI:雲端檢查如果失敗,它會試著修好再送一次
卡住的時候,由你決定要不要放行
審查時找到問題,會列出待處理的項目(finding),讓你決定怎麼處理;測試或 CI 的指令失敗,也可能直接卡住流程。格式這類小問題,它可以直接修掉;如果會動到你原本想做的事,或 AI 審查找到問題,就停下來問你:要放行、要自己修,還是跳過。這類問題預設不會自己動手改。
它也不會改掉你原本送程式碼的路線。直接送去專案 repo 的那條路照樣能用;要不要過 no-mistakes 這一關,是你每次自己選的。
用法也不一定要打指令。可以打開它的操作畫面,讓它一步步帶你把改動存成一個版本、送出去;也可以直接在 Claude Code 裡交代 AI 做一件事,做完順便送進 no-mistakes 檢查。安裝的時候,它會順手幫 Claude Code 這類 AI 程式助手裝好對應的 skill(讓 AI 多學一招的說明檔)。
也有它幫不上忙的情況。審查、文件等關卡會請 AI 幫忙,前提是你已經有一個能用的 AI 程式助手(Claude Code、Codex、Copilot、Cursor 等都能接);測試和格式工具則可以直接執行指令。關卡順序是固定的,專案可以額外加關卡,也可以選擇跳過部分關卡,但不能移除或調換既有順序。官方文件也寫明,AI 審查有時會漏掉,只能當參考,取代不了正式的資安測試和真人的資安審查。
我自己怎麼用它
我電腦上已經裝了 no-mistakes,連同它給 Claude Code 用的 /no-mistakes skill。
我會注意到 no-mistakes,是因為 firstmate 幫我安裝了它。firstmate 的說明寫到,每個專案可以選擇程式碼怎麼送出去,其中一種就是透過 no-mistakes,由它負責交付。
寫程式可以交給 AI,檢查也可以交給 AI,要不要放行,還是你說了算。
no-mistakes GitHub:https://github.com/kunchenguid/no-mistakes
no-mistakes 官方文件:https://kunchenguid.github.io/no-mistakes/
為什麼要做這個工具:https://kunchenguid.github.io/no-mistakes/start-here/introduction/
每一關在做什麼:https://kunchenguid.github.io/no-mistakes/reference/pipeline-steps/
firstmate:https://github.com/kunchenguid/firstmate
Day 234 幫你的 subagent 們找一個老大:https://www.dawsonwang.com/day/234