開源的 AI 求職代理人。
English | Español | Deutsch | Français | Português (Brasil) | 한국어 | 日本語 | 简体中文 | 繁體中文 | Українська | Русский | Polski | Dansk | தமிழ் | العربية | हिन्दी | Türkçe | Tiếng Việt | Bahasa Indonesia
幾個月投出去的履歷,全都石沉大海。
所以我做了自己需要的那個過濾器。
740 個職缺已評估。68 個已投遞。12 場面試。1 份 offer。
我是它的第一個使用者。我拿到了那份工作。然後把它開源了。
貼上一個職缺,它在你的機器上告訴你:還有沒有在徵人,適不適合你。
它為你客製履歷、草擬回答。由你按下送出。
我自己的求職,進行到一半,介面是西班牙文。
企業用 AI 篩選候選人。
我把 AI 交給候選人,讓他們來挑選企業。
六個月後,我離開了那份工作。
現在我們打造 career-ops,讓你也能上岸。
在我之後來的人,寫下了他們是怎麼拿到 offer 的。
每張卡片都是一個可以打開的公開 issue。你也上岸了?留下你的卡片 →
⭐ 如果 career-ops 幫到了你,一顆星就能幫下一個人找到它。
把你今晚本來打算投的一個職缺貼進來。如果回傳的是不要投,你剛剛把這個晚上贏回來了。如果回傳的是一份計畫,你就知道下一步該做什麼。
npx @santifer/career-ops init開源。本機執行。就在你已經在用的 AI CLI 裡。包含免費模型和本機模型。
按下送出之後的沉默,與你無關。看到同一件事的人夠多,於是把這套實踐寫了下來,只有六行:
投得更少,投得更好。訊號勝過數量。證據勝過關鍵字。由人來決定。本機優先。桌子兩邊都有尊嚴。
其中幾位,用他們自己的話。
每一個簽名都是一次可稽核的提交。讀完全部,或加上你的 →
招募不會自己修好。正在經歷它的人可以,而且他們已經在這個房間裡,交換筆記,互相修各自的設定。
修復就是在這裡寫出來的。是房間,不是俱樂部。一起來建。
career-ops 對求職者永久免費。這些公司贊助了本專案:
SerpApi · Build a portfolio project with live search data. SerpApi gives developers structured JSON/Markdown from Google Search, Maps, Shopping, and other engines through a simple API call.
贊助買到的是清楚標示的曝光,絕不是影響力:再多的錢也改變不了路線圖,也放不進產品裡任何東西。贊助商絕不會出現在評估、排名或推薦中。
貼上一個職缺。它告訴你這個晚上值不值得。
- 還在徵人嗎? 在你寫下一個字之前,它先確認這則職缺仍然有效。
- 不是你? 用你真實的履歷給職缺打分,匹配度弱就叫你跳過。你可以不聽。
- 值得投? 它起草履歷、求職信和申請答案。你來讀。你來送。
- 該找誰聊? 它找到那個人,起草那則訊息。它從不替你送出。
- 這些東西都去哪了? 每一份申請都留在你的機器上。沒有任何東西上傳給我們。
- 我該學什麼? 連續被拒之後,它說出差距在哪。
最初幾次執行會很粗糙。它還不了解你。跟它聊:你的履歷、你想要什麼、你拒絕什麼。把它當成一個招募顧問的第一週。
第一次啟動時,它會在聊天裡把這些都問一遍。沒有任何需要手動設定的東西。
- 自動送出申請。 它為每個欄位起草答案;你審閱,然後點擊送出。腳本從不發出 POST(
prepare-application.mjs)。 - 寄送郵件。 只寫草稿。整個程式碼庫裡沒有任何郵件寄送模組。
- 回傳資料。 沒有遙測,沒有我們的後端。你的履歷只從你的機器送往你選擇的 AI 供應商,不去任何別的地方。唯一的公開紀錄就是這個儲存庫:
HIRED.md和它的 issue。 - 催你申請低於 4.0/5 的職缺。 它會告訴你別申請。你可以不聽,它會明說。
它會改寫你的履歷,但絕不能捏造。程式碼裡有一道檢查:PDF 裡的數字或事實如果在你的履歷和 article-digest.md 裡都找不到,就會被擋下;但它還無法判斷每一處改寫。每份履歷送出前都請自己讀一遍。詳情見 FAQ。
| 功能 | 說明 |
|---|---|
| A-H 評估 | 職缺摘要、履歷比對(標註每條要求在這個職缺裡有多重要,以及權重來自職缺描述的措辭、結構還是估算,逐條標註;估算永遠不能進入最高一級)、職級策略、薪酬調查、個人化、面試準備(STAR+R),再加上區塊 G 的職缺可信度檢查(是否仍在徵人、是否為重複刊登:只陳述觀察,不下定論),以及一個工作許可訊號(把明確不提供簽證擔保的職缺描述標記為硬性阻礙) |
| Human-in-the-Loop | AI 評估並推薦,你決定並行動。系統從不送出申請:最終決定權永遠在你手上 |
| ATS PDF 產生 | ATS 可讀的履歷,根據你自己的經歷、針對每份職缺描述客製,採用 Space Grotesk + DM Sans 設計 |
| 求職信產生器 | 基於調查的求職信:關鍵字呼應、四個互動式角度提問(為什麼/問題/方法/語氣)、在對話中審核草稿,以及透過與履歷相同的 HTML + Playwright 流程產生 A4 PDF。每次評估自動起草;用 /career-ops cover 依需求完成並產生 |
| 履歷之外 | 企業調查(deep)揭示 AI 策略、近期動向、工程文化,以及你的履歷應該採取的角度。聯絡人探索(contacto)找出值得聯絡的招募主管、招募人員或團隊成員,並草擬一則不超過 300 字元、針對聯絡人類型調整過的 LinkedIn 訊息。正式申請郵件草稿(email)把已評估的報告或貼上的職缺描述變成主旨、內文和附件清單,不寄送、不送出、不點擊任何內容。申請讓你排進隊伍,調查讓你獲得對話。 |
| 模式分析 | 拒信模式與各 ATS 管道的推進率(analyze-patterns.mjs)、整個求職週期的漏斗統計(stats.mjs)、重複刊登偵測,重複刊登可能是幽靈職缺的跡象(detect-reposts.mjs) |
它還能做的所有事
| 功能 | 說明 |
|---|---|
| 自動流程 | 貼上一個 URL,獲得完整評估 + PDF + 追蹤紀錄 |
| 面試故事庫 | 跨評估累積 STAR+反思故事:5 到 10 個主故事,可以針對你遇到的行為面試問題靈活調整 |
| 談判話術 | 薪資談判框架、應對地域折價、以競爭 offer 作為籌碼 |
| 申請郵件草稿 | 從報告或貼上的職缺描述產生給招募人員、內推或主動應徵的正式郵件,包含主旨、附件清單、有憑有據的契合點,以及來自你個人資料的聯絡資訊區塊。僅限草稿:career-ops 從不寄送、送出或點擊任何內容。 |
| 求職平台掃描器 | 預先設定 100+ 家企業(Anthropic、OpenAI、ElevenLabs、Retool、n8n…)+ 跨 Ashby、Greenhouse、Lever、Wellfound 的自訂網頁搜尋查詢 |
| 已募資企業探索 | 以審閱為先的 company:funded 指令從結構化的公開資料來源列出近期獲得募資的企業與來源診斷,不更動你的資料 |
| 批次處理 | 用無頭 CLI worker(claude -p / opencode run)並行評估 |
| Dashboard TUI | 在終端機裡瀏覽、篩選和排序你的流程 |
| 流程完整性 | 自動合併、去重、狀態正規化、健康檢查 |
| 面試套件 | 按時間區塊安排的準備計畫、附回饋的練習、面試後檢討(interview/),以及企業警訊偵測器(interview-redflag) |
| Offer 階段 | 合約閱讀助手:逐條款解讀加上給律師的問題清單(offer-prep),以及期望/公告/實際薪資差距分析器(salary-gap.mjs) |
| 跟進與回覆 | 跟進節奏計算器與預設提醒(followup-cadence.mjs、followup-seed.mjs);把雇主回覆歸類為追蹤紀錄更新(reply-watch) |
| 外掛系統 | 可選整合(Gmail、Notion、Apify + 社群註冊表),預設關閉;見 docs/PLUGINS.md |
最快的方式,一道指令:
npx @santifer/career-ops init💡
npx隨 Node.js 一起提供:它只執行一次安裝程式, 不會全域安裝任何東西。還沒有 Node?先安裝它。 (已經在用 Claude Code / Codex CLI?那你已經有了。)
這會把最新版本複製到 ./career-ops 並安裝相依套件。然後:
cd career-ops
claude # or codex / qwen / opencode / agy / grok — open your AI CLI here首次啟動時,career-ops 會透過對話引導你完成設定(你的履歷、個人資料和目標職缺)。不需要手動編輯任何東西。
想手動設定?(git clone)
git clone https://github.com/career-ops-hq/career-ops.git
cd career-ops && npm install
npx playwright install chromium # only needed for PDF generation
# On a non-Debian/Ubuntu Linux distro (Fedora, Arch, ...), Chromium's system
# libraries aren't installed by the line above — install them yourself with
# your distro's package manager if PDF generation fails to launch the browser
# (Playwright's own docs list the required libraries per platform).
# 2. Open your AI CLI in this directory. On first launch it walks you
# through setup (your CV, profile and target roles) by chatting
claude # or codex / opencode / qwen / agy / grok
# Then ask your CLI to adapt the system to you:
# "Change the archetypes to backend engineering roles"
# "Translate the modes to English"
# "Add these 5 companies to portals.yml"
# "Update my profile with this CV I'm pasting"
# 3. Start using
# Paste a job URL or JD text to trigger auto-pipeline
# If your CLI supports slash commands, use /career-ops (or its CLI-specific alias)
# In Codex, ask for the same mode in plain language, e.g.:
# "Run the career-ops scan mode"
# "Run the career-ops pipeline mode for data/pipeline.md"
# "Run the career-ops pdf mode for the latest evaluated role"
# "Run the career-ops tracker mode and summarize the current statuses"npm i -g @santifer/career-ops這會全域安裝 career-ops 執行檔,讓你不用 npx 就能執行 career-ops init [folder]。init 是它唯一的指令:它只負責建立工作區,之後的一切都在你的 AI 程式碼 CLI 裡進行(見下方「使用方式」),而不是透過這個執行檔。
該用哪一個?
npx @santifer/career-ops init:最適合首次使用;會建立一個專用的專案資料夾。npm i -g @santifer/career-ops:如果你比較想輸入career-ops init,而不是npx的寫法。它不會增加其他指令。
這個系統就是設計成由你的 AI 程式碼 CLI 自己來客製的。 模式、原型、評分權重、談判話術:直接請它改就行。它讀取的正是它自己使用的檔案,所以它清楚該改哪裡。
完整安裝指南見 docs/SETUP.md;用自訂或本機模型低成本執行 career-ops 的方法見 docs/RUNNING_ON_A_BUDGET.md(在 Antigravity CLI 免費方案零成本執行見 docs/FREE_TIER.md);排程定期掃描和零 token 的「初篩到短名單」作法見 docs/AUTOMATION.md;ATS 自動填表流程的細節見 docs/APPLY_AUTOFILL.md;把 LinkedIn 聯絡人匯出與漏斗中的企業交叉比對見 docs/LINKEDIN_JOIN.md;常見設定問題的解答見 docs/FAQ.md,包括故事溯源如何防止捏造數字。設計原則在 ARCHITECTURE.md;執行期流程在 docs/ARCHITECTURE.md。
career-ops 使用共用的指令路由。在會註冊斜線指令的 CLI 裡,它看起來是這樣:
/career-ops → 顯示所有可用指令
/career-ops {JD} → 自動流程:評估 + 報告 + PDF + 追蹤紀錄(貼上文字或 URL)
/career-ops pipeline → 處理收件匣裡待處理的 URL(data/pipeline.md)
/career-ops oferta → 僅評估,區塊 A 到 H(不自動產生 PDF)
/career-ops ofertas → 比較並排序多個職缺
/career-ops contacto → LinkedIn 妙招:找到聯絡人 + 草擬訊息
/career-ops deep → 針對企業的深度調查提示詞
/career-ops interview-prep → 產生針對特定企業的面試準備文件
/career-ops interview → 互動式的個人資料/履歷入門訪談
/career-ops master-profile → 匯入、審閱並驗證你的主職涯檔案(Master Career Profile)
/career-ops eu-swe → 在履歷/申請/面試前校準一份歐洲 SWE 申請
/career-ops interview/plan → 為即將到來的面試制定按時間區塊安排的準備計畫
/career-ops interview/practice → 模擬面試,一次一個問題並給出回饋
/career-ops interview/debrief → 面試後檢討:補上短板,預測下一輪
/career-ops interview-redflag → 入職前分析雇主的警訊
/career-ops pdf → 僅產生 PDF,ATS 最佳化履歷
/career-ops text → 客製的 markdown 履歷(鏡像 cv.md,不產生 PDF)
/career-ops latex → 把履歷匯出為 LaTeX/Overleaf .tex
/career-ops latex-tex → 就地客製你自己的 resume.tex(選用;cv.md 仍是預設)
/career-ops cover → 求職信:單獨貼上職缺描述,或 /career-ops cover {slug}
/career-ops email → 正式申請郵件草稿(僅草稿;從不寄送、送出或點擊)
/career-ops add → 向履歷新增專案/論文/職位(擷取 + 預覽 + 確認)
/career-ops expand → 從個人資料連結自動探索並補充缺少的能力
/career-ops training → 對照你的 North Star 評估課程/證照
/career-ops project → 評估一個作品集專案點子
/career-ops tracker → 申請狀態總覽
/career-ops agent-inbox → 為下一個工作階段排入/清空請求(data/agent-inbox.md)
/career-ops apply → 即時申請助手(讀取表單 + 產生答案)
/career-ops scan → 掃描求職平台並發現新職缺
/career-ops discover → 把企業清單解析為可掃描的 ATS 看板 + 附加到 portals.yml(零 token)
/career-ops batch → 用並行 worker 批次處理
/career-ops patterns → 分析拒信模式並改善目標設定
/career-ops offer-prep → 和候選人一起閱讀收到的 offer/合約:逐條款解讀 + 給律師的問題(不是法律建議)
/career-ops titles → 根據你的履歷推薦相近的職稱以擴大搜尋範圍
/career-ops upskill → 基於已評估報告的綜合技能落差分析
/career-ops followup → 跟進節奏追蹤:標記逾期,產生草稿
/career-ops reply-watch → 歸類雇主回覆並建議追蹤紀錄更新
/career-ops outcome → 記錄申請結果並歸檔產出物
/career-ops calibrate → 諮詢性報告:你的評估分數能預測真實結果嗎?讀取 /outcome 資料;從不改變評分
/career-ops update → 更新 career-ops 系統檔案,附 diff 預覽 + 相容性檢查
或者直接貼上一個職缺 URL 或描述:career-ops 會自動辨識並執行完整流程。
Codex 裡不保證有斜線指令。請改用同樣的模式名稱寫在提示詞裡,或透過 codex exec 呼叫。
career-ops 原生支援 Antigravity CLI,方式和支援 Claude Code、OpenCode 一樣。所有斜線指令都透過共用的 skill 進入點提供,使用相同的 modes/*.md 評估邏輯。
Google 已把消費者版 Gemini CLI 的存取遷移到 Antigravity CLI。GEMINI.md 現在是一個不做任何事的相容性守衛,這樣 Antigravity 在同時讀取 AGENTS.md 和 GEMINI.md 時不會重複載入完整的專案指令。
# 1. Run in the career-ops directory
cd career-ops
agy
# 2. Use the unified /career-ops command with subcommands:
/career-ops "Senior AI Engineer at Anthropic..."
/career-ops pipeline
/career-ops scan
/career-ops pdf
/career-ops tracker這個 skill 按開放標準定義在 .agents/skills/career-ops/SKILL.md 中,並為每個支援的 CLI(例如 .claude/、.qwen/、.antigravitycli/、.grok/)建立了符號連結或引用。 Cursor 會自動探索 .agents/skills/ 中的共用 skill。
career-ops 透過同一個共用路由支援 Codex,但呼叫方式和自動註冊斜線指令的 CLI 不同。完整指南見 docs/CODEX.md。
cd career-ops
codexCodex 裡不保證有斜線指令。如果 /career-ops 不可用,就用自然語言請 Codex 直接執行對應模式:
Evaluate this JD with career-ops auto-pipeline: https://company.com/jobs/123
Run the career-ops scan mode and summarize new matches.
Run the career-ops pipeline mode for data/pipeline.md.
Run the career-ops pdf mode for the latest evaluated role.
Run the career-ops tracker mode and summarize the current statuses.
codex exec "Evaluate this JD with career-ops auto-pipeline: https://company.com/jobs/123"
codex exec "Run career-ops scan mode in this repo and summarize new matches."
codex exec "Run career-ops pipeline mode for data/pipeline.md."
codex exec "Run career-ops pdf mode for the latest evaluated role."
codex exec "Run career-ops tracker mode and summarize the current statuses."career-ops 原生支援 Grok Build CLI,方式和支援 Claude Code、OpenCode 一樣。AGENTS.md 會作為專案規則自動載入,所有斜線指令都透過共用的 skill 進入點提供。
# 1. Run in the career-ops directory
cd career-ops
grok
# 2. Use the unified /career-ops command with subcommands:
/career-ops "Senior AI Engineer at Anthropic..."
/career-ops pipeline
/career-ops scan
/career-ops pdf
/career-ops tracker無頭批次 worker 請使用 grok -p "prompt"(加上 --yolo 可自動核准工具執行)。
career-ops 原生支援 Pi,不需要維護任何包裝檔案:Pi 會把儲存庫根目錄的 AGENTS.md 讀作專案脈絡,並自行找到位於 .agents/skills/career-ops/SKILL.md 的共用 skill。之後路由就能以 /skill:career-ops 的形式使用。
# 1. Run in the career-ops directory
cd career-ops
pi
# 2. Use the shared skill with subcommands:
/skill:career-ops "Senior AI Engineer at Anthropic..."
/skill:career-ops pipeline
/skill:career-ops scan
/skill:career-ops pdf
/skill:career-ops trackerpi -p "Evaluate this JD with career-ops auto-pipeline: https://company.com/jobs/123"
pi -p "Run career-ops scan mode and summarize new matches."
pi -p "Run career-ops tracker mode and summarize the current statuses."如果某個 Pi 版本要求先對專案資源做信任確認,就在儲存庫裡執行一次 /trust,然後重新啟動 pi,讓專案 skill 載入(/trust 對之後啟動的 Pi 程序生效);或者用 -a 啟動,它只信任單次執行,不需要重新啟動。
# 1. Get a free API key at https://aistudio.google.com/apikey
cp .env.example .env
# Edit .env, set GEMINI_API_KEY=your_key_here
# 2. Install dependencies
npm install
# 3. Evaluate a job description
node gemini-eval.mjs "We are looking for a Senior AI Engineer..."
node gemini-eval.mjs --file ./jds/my-job.txt
node agent-inbox.mjs add "..." # queue a request for the next session
npm run gemini:eval -- "JD text here"免費方案: 兩種方式都無需付費。原生 CLI 使用 Google OAuth;API 腳本使用
gemini-3.6-flash(速率限制取決於模型和方案;目前配額見 Google AI 文件)。
掃描器內建 100+ 家企業可直接掃描,以及涵蓋主流求職網站的 35+ 條搜尋查詢。把 templates/portals.example.yml 複製為 portals.yml,再加入你自己的:
AI 實驗室: Anthropic、OpenAI、Mistral、Cohere、LangChain、Pinecone 語音 AI: ElevenLabs、PolyAI、Parloa、Hume AI、Deepgram、Vapi、Bland AI AI 平台: Retool、Airtable、Vercel、Temporal、Glean、Arize AI 客服中心: Ada、LivePerson、Sierra、Decagon、Talkdesk、Genesys 企業級: Salesforce、Twilio、Gong、Dialpad LLMOps: Langfuse、Weights & Biases、Lindy、Cognigy、Speechmatics 自動化: n8n、Zapier、Make.com 歐洲: Factorial、Attio、Tinybird、Clarity AI、Travelperk
搜尋的求職網站: 55+ 個供應商模組涵蓋 ATS API、整站資料來源、XML/RSS 來源、markdown 來源和本機解析器。完整表格見支援的求職網站。
預設情況下 node scan.mjs(即 npm run scan)信任每個 ATS 資料來源回傳的內容。有些企業在職缺關閉後仍會把過期職缺留在公開 API 裡,這些過期項目可能會混進 pipeline.md。加上 --verify 可以在 API 階段之後啟動 Playwright,在過期職缺進入流程之前把它們剔除:
node scan.mjs --verify # zero-token discovery + Playwright liveness check驗證是循序執行的,而且只針對新職缺(去重之後),所以成本是有上限的。
內建的終端機儀表板讓你以視覺化方式瀏覽你的流程:
npm run serve:dashboard # launch the TUI
npm run build:dashboard # optional: build the standalone binary功能:10 個篩選分頁、8 種排序模式、分組/平鋪檢視、延遲載入預覽、行內狀態修改。
還有一個實驗性的 Web UI(alpha 版,選用:除非你主動啟動,否則不會執行任何東西):見 web/README.md。
career-ops/
├── AGENTS.md # Canonical agent instructions (all CLIs)
├── CLAUDE.md # Claude Code wrapper (imports AGENTS.md)
├── CODEX.md # Codex wrapper (imports AGENTS.md)
├── OPENCODE.md # OpenCode wrapper (imports AGENTS.md)
├── GEMINI.md # Legacy no-op guard to avoid Antigravity duplicate context
├── cv.md # Your CV (create this)
├── article-digest.md # Your proof points (optional)
├── config/
│ └── profile.example.yml # Template for your profile
├── modes/ # Skill modes
│ ├── _shared.md # Shared context (customize this)
│ ├── oferta.md # Single evaluation
│ ├── pdf.md # PDF generation
│ ├── cover.md # Cover letter generation
│ ├── email.md # Formal application email drafts
│ ├── scan.md # Portal scanner
│ ├── batch.md # Batch processing
│ └── ...
├── templates/
│ ├── cv-template.html # ATS-optimized CV template
│ ├── portals.example.yml # Scanner config template
│ └── states.yml # Canonical statuses
├── batch/
│ ├── batch-prompt.md # Self-contained worker prompt
│ └── batch-runner.sh # Orchestrator script
├── dashboard/ # Go TUI pipeline viewer
├── data/ # Your tracking data (gitignored)
├── reports/ # Evaluation reports (gitignored)
├── output/ # Generated PDFs (gitignored)
├── fonts/ # Space Grotesk + DM Sans
├── docs/ # Setup, customization, budget guide, architecture
└── examples/ # Sample CV, report, proof points
預設情況下,使用者層資料(如 cv.md、portals.yml,以及 data/、reports/、output/ 資料夾)位於專案根目錄內。
為了把個人資料和程式碼分開(更方便切換分支、拉取更新或測試多個個人資料),你可以按以下優先順序設定一個外部資料目錄:
- 環境變數: 設定
CAREER_OPS_ROOT或CAREER_OPS_DATA_DIR環境變數:export CAREER_OPS_ROOT=~/my-career-data
- 標記檔案: 在儲存庫根目錄建立一個
.career-ops-data檔案,內容是你的資料目錄路徑。 - 預設: 使用儲存庫根目錄。
解析完成後,所有使用者檔案都相對於該資料夾解析和寫入,而提示詞檔案和腳本仍然相對於儲存庫解析。
- 覆寫追蹤檔: 你也可以設定
CAREER_OPS_TRACKER直接覆寫申請追蹤檔的路徑。 - 寫入: 所有寫入操作(如合併)都以
{DATA_ROOT}/data/applications.md為標準目標。 - 掃描器設定:
portals.yml在{DATA_ROOT}/portals.yml讀取和驗證,所以node validate-portals.mjs檢查的正是scan.mjs讀取的那個檔案。 - 產生的文件: 客製履歷和求職信寫入
{DATA_ROOT}/output/,把它們連結到報告的 PDF 清單位於{DATA_ROOT}/data/pdf-index.tsv。在未設定CAREER_OPS_TRACKER時,限定這些寫入範圍的追蹤工作區是資料根目錄,而不是程式碼的 checkout。 - 追蹤檔覆寫下的 PDF:
generate-pdf.mjs會先解析CAREER_OPS_TRACKER,再推導工作區,所以設定了覆寫時,工作區就是存放該追蹤檔的資料夾(如果追蹤檔位於data/資料夾中,則是它的上一層資料夾)。這時履歷的 HTML 和每個 PDF 都必須位於該工作區內,清單也會移到它的data/pdf-index.tsv。求職信仍以{DATA_ROOT}/output/為目標,所以當該資料夾不在追蹤檔的工作區內時,求職信會被拒絕寫入。 - 程式碼層維持不動:
node_modules/、providers/、modes/以及腳本本身一律相對於儲存庫解析,從不相對於資料根目錄。
Go 版儀表板 TUI、Node.js 腳本和 AI 代理模式都會自動遵循這個解析層級。
- 代理:具備共用 skill 和模式的 AI 程式碼 CLI(
AGENTS.md+ 各 CLI 的包裝) - PDF:Playwright + HTML 範本
- 求職信:HTML 範本 + Playwright(A4 PDF,與履歷相同的流程)
- 掃描器:Playwright + Greenhouse API + WebSearch
- 儀表板:Go + Bubble Tea + Lipgloss(Catppuccin Mocha 主題)
- 資料:Markdown 表格 + YAML 設定 + TSV 批次檔案
也可以在任何遵循 agent skill 標準的 CLI 中執行。見支援的 CLI。
- cv-santiago:作品集網站(santifer.io),附 AI 聊天機器人、LLMOps 儀表板和案例研究。如果你需要一個配合求職展示的作品集,fork 它,改成你自己的。
career-ops 是什麼? career-ops(career-ops.org,也稱 careerops) 是一個開源的 AI 求職工具,在你的 AI 程式碼 CLI(Claude Code、Codex、OpenCode 等)裡於本機執行,把每一個決定都留給你。它依你的履歷評估職缺、產生適配 ATS 的 PDF、找出該聯絡的對象,並在一個地方追蹤所有進度:最終決定權永遠在你手上。它是 CareerOps 宣言的第一個參考實作。
客製化履歷會捏造內容嗎?
不應該,提示詞裡也這麼寫:只改寫,絕不捏造。generate-pdf 會擋下數字或事實在你的資料來源中找不到的履歷,除非你傳入 --skip-fact-check。pdf 模式還會執行 cv-title-check.mjs:它依公司和日期,把客製化履歷中的每個職稱與 cv.md 中同一份工作的職稱比對,有不同就請你決定保留還是改回。它只提醒、不阻擋,因為調整職稱的寫法有時是你自己的選擇。目前還沒有任何檢查評判改寫:#1411(不通過即阻止的真實性檢查)在追蹤這一點。在此之前,每份履歷送出前都請自己讀一遍。法律聲明 用更長的篇幅說了同樣的話。
我可以免費執行 career-ops,或改用較便宜/本機的模型嗎? 可以。career-ops 不綁定特定 CLI,也能跑在免費與本機模型上(OpenRouter 的免費模型、Ollama,或任何相容 OpenAI 的端點),所以你不必被付費訂閱綁住。完整設定見 docs/RUNNING_ON_A_BUDGET.md。
我已經付費訂閱 Claude Pro/Max,為什麼 career-ops 還在燒 API 額度?
因為環境變數中的 ANTHROPIC_API_KEY 優先於你已登入的訂閱:CLI 會改用這把金鑰,並按 token 計費。執行 echo $ANTHROPIC_API_KEY,若有印出任何內容,就把它從 shell 設定檔移除、重開終端機並執行 /login。批次模式是例外,因為 claude -p 的 worker 不會使用互動式登入:執行一次 claude setup-token,把結果匯出為 CLAUDE_CODE_OAUTH_TOKEN。完整步驟見 docs/RUNNING_ON_A_BUDGET.md。
career-ops 支援哪些 AI CLI? career-ops 透過開放的 Agent Skill Standard 跑在各主流 AI 程式碼 CLI 上(Claude Code、Codex、Gemini / Antigravity、OpenCode、Grok、Qwen 等),因此不會被單一廠商綁死。你手上已經有的 CLI 就能直接用。
要怎麼在 Windows 上安裝 career-ops? career-ops 可以在 Windows 上執行。平台相關的設定和已知的坑(Git Bash 偵測、行尾符號、工作排程器)在 docs/WINDOWS.md。如果安裝過程中技能因 symlink 錯誤而載入失敗,解法在 docs/FAQ.md。完整步驟見 docs/SETUP.md。
career-ops 會自動幫我投遞職缺嗎? 不會。career-ops 是篩選器,不是亂槍打鳥的自動投遞工具。AI 負責評估、排序與草擬;審閱與決定由你來做。它會草擬、填寫,但從不送出。由你按下送出。這種保留人工把關的設計,正是整套系統的重點。
career-ops 是免費且開源的嗎? 是。career-ops 免費且開源,而且對求職者而言永遠都會是。它是 CareerOps 宣言的第一個參考實作。讀一讀,如果它說中了你的想法,就簽署它。
我是 Santiago Fernández de Valderrama Aparicio(santifer),曾經是創業者:我創辦並賣掉了一家至今仍以我的名字營運的公司。我打造 career-ops 是為了管理自己的求職,它奏效了:它幫我拿到了一個 Head of Applied AI 的職位。六個月後,我離開了那個職位,全職投入 career-ops 的開發。
想知道這麼大的儲存庫,是怎麼由一支 AI 代理團隊維護、每次合併都由人來決定的?讀一讀 Agentic maintenance: how career-ops is run by a fleet of AI agents。
我的作品集和其他開源專案 → santifer.io
Wikidata:Santiago Fernández de Valderrama Aparicio · career-ops。
career-ops 是一個在本機執行的開源工具,不是託管服務。 使用本軟體即表示你確認:
- 你掌控自己的資料。 你的履歷、聯絡方式和個人資料留在你的機器上,直接傳送給你選擇的 AI 供應商(Anthropic、OpenAI 等)。我們不收集、不儲存、也無法存取你的任何資料。
- 你掌控 AI。 預設提示詞指示 AI 不要自動送出申請,但 AI 模型可能出現無法預測的行為。如果你修改了提示詞或使用其他模型,風險自負。送出前務必檢查 AI 產生內容的正確性。
- 你遵守第三方條款。 你必須按照所互動求職平台(Greenhouse、Lever、Workday、LinkedIn 等)的服務條款使用本工具。不要用本工具向雇主發送垃圾訊息或衝擊 ATS 系統。
- 不作任何保證。 評估是建議,不是事實。AI 模型可能虛構技能或經歷。作者不對就業結果、被拒的申請、帳號限制或任何其他後果負責。
完整內容見 LEGAL_DISCLAIMER.md。本軟體依據 MIT 授權「按原樣」提供,不附帶任何形式的保證。
每一位貢獻過程式碼、文件、翻譯或測試的人都列在 CONTRIBUTORS.md 裡,包括上面的圖表無法呈現的 非程式碼貢獻。
用 career-ops 找到工作了?分享你的故事!
程式碼以 MIT 授權發布。「career-ops」的名稱和 品牌受商標政策約束:對社群使用寬鬆, 對商業產品命名和背書保留權利。
