← 返回部落格
Ai預計閱讀 11 分鐘

把 Claude Code 變成求職流水線的人,投了 69 份履歷、面了 20 場

發布於 2026年10月18日
把 Claude Code 變成求職流水線的人,投了 69 份履歷、面了 20 場

「AI 求職」這類工具一直有可信度問題,而且問題不在技術上。所有人都懷疑,產出的不過是一份塞滿關鍵字的 PDF,招募人員四秒就能聞出味道來。

所以關於 ai-job-search,第一件值得報導的事,是作者拿它做了什麼。這個由 Mads Lorentzen 開發、MIT 授權的框架,把 Claude Code 變成一條求職流水線。他用它投了 69 份申請,拿到 20 場第一輪面試,最後簽下一份 AI 工程師的 offer。他還說,每一家雇主他都告知了自己用了這個工具。這要嘛是個非常好的徵兆,要嘛是運氣特別好。大概兩者都有。

第二件值得報導的事是:真正有意思的工程不在寫作環節,而在檢查環節。

真正重要的三個指令

/setup 用來填你的檔案。三種入口:指向一個 documents/ 資料夾、貼上一份履歷,或者回答面試式的問題。作者講得很直白:檔案的厚度是決定產出品質的唯一最大因素——檔案單薄,產出的申請就千篇一律,再聰明的提示詞也救不回來。

/scrape 會搜尋求職網站、去重、按媒合度排序。入口網站支援是按市場劃分的:內建的涵蓋丹麥(Jobindex、Jobnet、Jobbank、Jobdanmark),另外還有兩個跨境技能——一個針對 LinkedIn 免登入的公開端點,帶地區參數;一個針對專注技術職缺的免費 REST API。其他市場需要用 /add-portal,它會生成並測試一個新的技能。

/apply <url> 是最有意思的那個。它跑八個步驟:解析職缺描述、給媒合度打分數、起草客製化的 LaTeX 履歷和求職信、把兩者交給一個獨立的審查 agent(它有自己的上下文,可以去研究這家公司並挑草稿的毛病)、修改、編譯、檢查渲染出來的 PDF,最後跑一遍 ATS 檢查。

為什麼「編譯完再看一眼 PDF」才是全部的訣竅

用語言模型生成過 LaTeX 文件的人都知道那種翻車方式。原始碼看著完美無缺。PDF 裡第一頁底部掛著一個孤零零的標題,求職信溢出到第二頁、上面只有一行字,某個清單悄悄掉回了別的字體。

這個專案把這一環補上了。履歷必須用 lualatex 編譯成正好兩頁,而且不能有孤行標題。求職信必須用 xelatex 編譯成正好一頁,簽名要看得見。agent 會去讀渲染後的分頁,反覆迭代,直到滿足這些限制。

履歷太長時,它不會直接把最舊的那份工作砍掉。它給每一行打分數,看它和這個職缺的相關性、在文件內的獨特性、以及求職信是否依賴它,然後刪掉總分最低的那行。這是個小細節,卻是很大的差別:這是一個真的為某個具體職位刪減過履歷的人的做法,而不是照著規則辦事。

ATS 檢查是別人都沒做的那一塊

申請人追蹤系統讀的不是你漂亮的版面。它們讀的是內嵌的文字層,而 LaTeX 出了名地擅長產出一種「技術上存在、實際上等於垃圾」的文字層——圖示字體渲染成一個郵件符號、萃取出來卻是空白;連字破壞關鍵字比對;分欄把閱讀順序攪亂。

這個框架用 pypdf 或 pdftotext 萃取文字層,驗證聯絡方式以字面文字出現,檢查亂碼和閱讀順序,然後拿關鍵字覆蓋率去和職缺描述比對。如果兩個工具都沒裝,它會降級成視覺關鍵字檢查,而不是默默跳過。

這就是「一個能產出文件的做法」和「一個能產出經得起招募系統檢驗的文件的做法」之間的差別。

誠實的限制:它拒絕編造

明文規則是不虛構技能和經歷。檔案支撐不了的關鍵字,會被標成 gap,而不是硬塞進去。這既是倫理立場,也是務實選擇——編造的經歷總會在面試裡穿幫,而工具的任務只是把你送到面試那一步。

還有一道語言門檻。/setup 會收集你會說的每一種工作語言和程度;沒聲明的語言直接拒絕,程度不夠的會被標記出來而不是自動拒絕。大多數求職工具完全不管這一塊,於是你就會產出一份讀起來很流利的申請,去投一個要求德語 C1 的職缺。

那個你千萬別踩的隱私坑

這部分我會用粗體寫在下載頁上,作者確實也這麼做了,但值得再講一遍:公開儲存庫的 fork 永遠是公開的。GitHub 不允許把公開儲存庫 fork 成私有儲存庫。而 /setup 會把你的姓名、聯絡方式、工作經歷和薪資期待寫進被 git 追蹤的檔案裡。

fork 一下,跑一遍 setup,push,你就把自己的履歷和薪資期待,連同提交歷史一起發佈到網際網路上了。

正確的做法寫在專案的安裝指南裡:新建一個私有儲存庫,把原儲存庫加為 upstream 遠端。這樣你能拿到同樣的更新流程,卻沒有曝露風險。只有當你打算貢獻程式碼時,才需要 fork。

安全姿態,講明白一點

職缺描述被當作不可信輸入處理:裡頭夾帶的指令不會被執行,裡面的連結不會被開啟。作者很謹慎地說明,這是指令層級的防禦,不是沙箱。入口網站技能會在你的機器上未經核准就執行,所以從別人 fork 借來的技能應該逐行讀過——看看網路請求送往哪裡,看看套件清單裡的相依套件和生命週期腳本,離線跑一遍測試。複製資料夾這個動作是刻意設計成手動的,原因正在於此。

LinkedIn 技能自帶警告:自動化違反平台條款,應該低頻使用,僅供個人用途。

這套循環的成本

這些都不是免費的,作者也直說了。Claude Code 沒有免費額度;你需要訂閱或 API 額度。「編譯再看」這一步會額外燒 token,因為 agent 要讀渲染後的分頁並反覆迭代——有時一份履歷要來回三四次。

這筆交易值不值得,取決於你怎麼算自己的時間。為一份只會寄出一次的文件改四輪,挺多的。但如果這份文件本來會在頁尾邊緣掛一個孤零零的標題,那四輪就非常便宜——因為那個標題,就是讀者第一印象裡「細心」和「隨便」的分界線。

還有第二項成本容易被忽略:檔案的功夫。/setup 獎勵具體——專案、工具、量化的成果、你本人做了什麼而不是你的團隊做了什麼。檔案單薄,產出的就是這一類工具人人都在產出的通用申請。工具沒辦法憑空造出它沒有的素材,而作者異常直白地說:真正的瓶頸在這裡,不在模型。

它做不到的事

它沒辦法幫你拿到內推,而大多數工作其實是靠內推贏的。它不會談判,關於薪資它唯一知道的就是你在 setup 時敲進去的那個數字。它不知道招募經理是你以前的同事,也不知道這個職缺掛了七個月,是因為團隊對職位本身還沒談攏。

它做的是把藉口拿掉。申請會是客製的,PDF 會編譯通過,文字層會可解析,語言要求會被尊重。至於拿這些去做什麼,那仍然是求職本身。

這到底是什麼

把 AI 的包裝剝掉,這就是一個求職申請的建置系統:原始碼進,產出物出,中間隔著一個驗證階段。模型是編譯器,PDF 檢查和 ATS 文字檢查是測試,審查 agent 是程式碼審查。

正是這個視角,讓它比它所屬的那個類別更有意思。它不承諾幫你拿到工作。它承諾的是:你寄出的那份文件會是兩頁、機器可讀、對你的短處誠實、並且針對職缺描述客製——而當這些承諾不成立時,它會告訴你。

69 份申請、20 場面試,是個不錯的樣本,但不是證明。不過它比這個領域大多數工具手上的證據都更紮實,而產出它的那條流水線,你可以自己讀。

相關文章