系統定位
career-ops-hq/career-ops(版本 1.39.0)由 Santiago Fernández de Valderrama Aparicio(@santifer)以 MIT 授權開源,為本機優先的 AI 求職代理系統,最初建構於作者本人的求職實戰(評估 740 筆職缺、投遞 68 筆、取得 12 次面試與 1 個錄取通知)。系統透過開放的 Agent Skill 標準(共用 .agents/skills/career-ops/SKILL.md 與 AGENTS.md)在 Claude Code、Codex、OpenCode、Antigravity CLI(agy)、Pi、Oh My Pi、Qwen、Kimi、GitHub Copilot 與 Grok Build CLI 等環境本機執行,不連向任何遠端私有後端或遙測服務。
核心流程採用「A 至 H 結構化評估」與「Human-in-the-Loop(人工最終決策)」機制:當使用者貼入職缺網址或 JD 文字時,auto-pipeline 先檢查職缺連結是否有效(check-liveness.mjs),將職務歸類至對應原型(LLMOps、Agentic、PM、SA、FDE 或 Transformation),再對照 cv.md 產出區塊 A 至區塊 F 匹配報告、區塊 G 職缺真實性與重發訊號、區塊 H 申請表單擬答(僅針對高分職缺),最後透過 Playwright 與 Space Grotesk+DM Sans 模板算繪 ATS 友善的客製化 PDF 履歷並寫入 data/applications.md 追蹤表。系統預設建議略過評分低於 4.0/5 的職缺,且不自動送出申請表(prepare-application.mjs 不發送任何 POST 請求)或自動寄發電子郵件。
| 模式分類 | 代表模式名稱 | 輸出檔案或腳本入口 | 核心用途與執行邊界 |
|---|---|---|---|
| 職缺探索與初篩 | scan、discover、triage、pipeline、batch、titles | scan.mjs、scan-ats-full.mjs、data/pipeline.md | 零 Token 掃描 100+ 家企業 ATS、解析新增公司看板、依 modes/_brief.md 快速初篩與批次平行評估 |
| 職缺深度評估 | auto-pipeline、oferta、ofertas、deep、eu-swe | reports/{###}-{slug}-{date}.md | 執行區塊 A 至區塊 H 評估、多職缺橫向排序、企業 AI 策略深調與歐洲軟體工程職缺校準 |
| 履歷與投遞擬稿 | pdf、ats、latex、latex-tex、text、cover、email、contacto、apply | generate-pdf.mjs、verify-cv-facts.mjs、output/*.pdf | 產出經事實查核的 PDF 或 LaTeX 履歷、A4 求職信、招募信草稿、300 字內 LinkedIn 聯繫訊息與表單逐欄協作填寫 |
| 面試與錄取階段 | interview-prep、interview/plan、interview/practice、interview/debrief、interview-redflag、offer-prep | interview-prep/story-bank.md、salary-gap.mjs | 累積 STAR+R 故事庫、模擬面試問答、企業紅旗警訊檢測、合約條款走讀與律師提問清單 |
| 追蹤與目標優化 | tracker、followup、reply-watch、outcome、patterns、calibrate、upskill、training、project | data/applications.md、analyze-patterns.mjs、stats.mjs | 追蹤跟進時程、分類雇主回信、分析各 ATS 轉換率與拒絕規律、校準評分預測力與技能缺口 |
| 履歷建檔與系統維護 | interview、intake、master-profile、add、expand、retro、agent-inbox、update | doctor.mjs、update-system.mjs、github-evidence.mjs | 初次對話式建立 cv.md、從 documents/ 匯入資料、擷取 GitHub PR/Commit 實績與無損更新系統層檔案 |
職缺輸入與探索層(Untrusted External Content)
- scan.mjs / scan-ats-full.mjs(55+ 解析模組、100+ 預設企業)
- check-liveness.mjs 與 detect-reposts.mjs(90 天內重發 2+ 次檢測)
- 外部 JD、表單與信件嚴格視為純資料,阻斷 Prompt Injection 指令
雙層資料契約與信任邊界(DATA_CONTRACT.md)
- 主要信任層:cv.md、article-digest.md、config/profile.yml、modes/_profile.md
- 衍生敘事層:interview-prep/story-bank.md(量化數字須帶 Provenance 標記)
- 系統層:modes/_shared.md、AGENTS.md、*.mjs(由 update-system.mjs 安全更新)
輸出防偽閘門與終端追蹤層
- verify-cv-facts.mjs、verify-cv-structure.mjs 與 cv-title-check.mjs
- Playwright 算繪 ATS PDF 履歷、求職信與 data/pdf-index.tsv 索引
- data/applications.md、data/status-log.tsv 與 Go Bubble Tea TUI 儀表板
所有使用者個資與履歷皆保留於本機(或 CAREER_OPS_ROOT 外部資料目錄),更新系統時不會覆蓋使用者層配置。
安裝與驗證
- 未完成:
本機需安裝 Node.js
^22.13.0 || >=23.4.0(見package.json的engines欄位)。 - 未完成:
算繪 PDF 履歷、求職信與執行瀏覽器職缺存活檢查需安裝 Playwright Chromium(
postinstall會自動嘗試安裝,亦可手動執行npx playwright install chromium)。 - 未完成:
啟動終端機視覺化儀表板(
dashboard/)需安裝 Go 環境(使用 Bubble Tea 與 Lipgloss)。
本報告僅查閱原始碼、模式定義與腳本結構,未在本機啟動爬蟲請求或生成個人履歷檔案。
路徑一:使用 npx 快速初始化工作區
npx @santifer/career-ops init
cd career-ops
claude若偏好手動克隆儲存庫並安裝依賴與 Playwright Chromium:
git clone https://github.com/career-ops-hq/career-ops.git
cd career-ops && npm install
npx playwright install chromium路徑二:執行 doctor.mjs 檢查與初始化個人化模板
在啟動評估或掃描前,可執行唯讀診斷腳本檢查 cv.md、config/profile.yml、modes/_profile.md 與 portals.yml 的齊備與個人化狀態:
node doctor.mjs --json
node doctor.mjs --json --init-templates核心能力
零 Token 徵才平台掃描
node scan.mjs [--verify] / npm run scan:full
抓取 55+ 種 ATS 職缺並過濾失效連結
scan.mjs 直接查詢 Greenhouse、Ashby、Lever 等公開 API(0 Token 消耗),加 --verify 會以 Playwright 剔除已關閉職缺;scan-ats-full.mjs 支援每 500 家企業儲存中斷點。
履歷事實與結構防偽閘門
npm run cv:verify-facts / verify-cv-structure.mjs / cv-title-check.mjs
阻擋未見於原始履歷的捏造數據與職稱漂移
generate-pdf.mjs 會攔截未出現在 cv.md 或 article-digest.md 的數據;verify-cv-structure.mjs 檢查時間序與副標遺失,cv-title-check.mjs 比對職稱一致性。
故事庫溯源檢查
node story-provenance-check.mjs --summary
防止面試準備文件中的 AI 估算數字混入正式事實
強制檢查 interview-prep/story-bank.md 中的量化宣稱是否標註 Provenance(cv.md、user-stated、derived-unverified 或 user-cannot-confirm)。
職缺存活與幽靈職缺檢測
npm run liveness / npm run reposts / npm run role-clarity
識別過期職缺、90 天重發職缺與職責模糊警訊
check-liveness.mjs 將過期職缺標記為 skipped_expired;detect-reposts.mjs 標出 90 天內跨 2 個以上日期重複刊登 2 次以上的職缺;role-clarity.mjs 執行 6 點職責清晰度檢查。
管線完整度與數據分析
npm run verify / npm run patterns / node stats.mjs --summary
校驗追蹤表健康度、轉換漏斗與各 ATS 推進率
verify-pipeline.mjs 配合 tracker-sync-check.mjs 與 fix-report-links.mjs 修復斷鏈與狀態漂移;analyze-patterns.mjs 統計各職類與 ATS 通道的面試率。
Go 終端機儀表板與無損更新
npm run serve:dashboard / node update-system.mjs check
瀏覽職缺管線並安全升級系統層檔案
Go TUI 提供 10 個篩選分頁與 8 種排序模式;update-system.mjs 僅更新系統層檔案,支援 apply --confirm、dismiss 與 rollback。
除了在互動式 AI CLI 中使用 /career-ops(或在 Pi / Oh My Pi 中使用 /skill:career-ops),系統亦內建可獨立執行的模型與輔助腳本:
| 腳本分類 | 命令或腳本名稱 | 關鍵行為與輸出限制 |
|---|---|---|
| 獨立模型評估器 | npm run or、npm run gemini:eval、npm run ollama:eval、npm run openai:eval | 無須互動式 CLI,直接透過 OpenRouter、Gemini、本機 Ollama 或相容端點評估 JD |
| 外部資料目錄隔離 | CAREER_OPS_ROOT / CAREER_OPS_DATA_DIR 或 .career-ops-data | 將 cv.md、portals.yml、data/、reports/ 與 output/ 指向外部資料夾,與程式碼庫完全分離 |
| 人脈與簽證交叉比對 | node linkedin-join.mjs、node sponsor-check.mjs、node contact-lookup.mjs | 離線比對 LinkedIn Connections.csv 找出內部推薦人、核對英國 Home Office 技術工作簽證擔保名冊(預設快取 7 天) |
| 薪資落差與談判計算 | node salary-gap.mjs、node negotiation-roi.mjs | 彙整期望、刊登與實質薪資落差;僅在數字同時逐字存在於 cv.md 時才將 story-bank.md 實績換算為年化談判依據 |
操作原則
個人化設定只寫入 _profile.md 與 _custom.md,絕不修改 _shared.md
依 DATA_CONTRACT.md 規範,目標職類原型、敘事框架、談判腳本與薪資目標必須寫入 modes/_profile.md 或 config/profile.yml;自訂流程與輸出偏好則寫入 modes/_custom.md。系統層的 modes/_shared.md 會在執行 update-system.mjs 時被覆蓋,切勿在其中存放個人資料。
先完成 modes/_profile.md 個人化再啟動批次掃描
doctor.mjs 會將未修改的模板標記於 unpersonalized 欄位。若未先以自身履歷更新 modes/_profile.md 與 modes/_brief.md,系統會直接套用原作者 santifer 的求職原型與篩選標準,導致所有 A 至 F 評分失準。
使用 Claude Pro/Max 訂閱時應移除環境變數 ANTHROPIC_API_KEY
當終端機環境存在 ANTHROPIC_API_KEY 時,Claude Code 會優先走 API 依 Token 計費而忽略已登入的 Pro/Max 訂閱。互動模式下應清除該環境變數並執行 /login;僅在使用 claude -p 執行 batch 平行批次評估時,才透過 claude setup-token 匯出 CLAUDE_CODE_OAUTH_TOKEN。
衍生故事庫的量化數據必須通過 Provenance 溯源驗證
interview-prep/story-bank.md 常由歷次面試準備文件累積而成。任何出現在衍生檔案中的規模或百分比數字,若未在 cv.md 等主要信任檔案中出現,必須先執行 node story-provenance-check.mjs --summary 標記來源;標記為 user-cannot-confirm 的項目僅作敘事語境,禁止作為量化數據寫入履歷。
在處理外部網頁與信件時,AGENTS.md 強制將所有職缺內容、申請表單欄位與招募人員回信視為不可信純資料(Untrusted External Content)。若職缺內文藏有針對 AI 評審的提示詞注入指令(如要求忽略既有規則或給出滿分),Agent 會將該語句記錄於區塊 G 異常訊號中,不會執行其中的任何指令。
操作範例
以下示範在本機建立 career-ops 工作區、分離外部資料目錄、驗證 portals.yml 設定、執行附帶 Playwright 存活檢查的職缺掃描,以及執行履歷事實與管線健康度驗證。
1. 初始化環境、綁定外部資料目錄並執行 doctor.mjs
git clone https://github.com/career-ops-hq/career-ops.git
cd career-ops && npm install
npx playwright install chromium
export CAREER_OPS_ROOT=~/career-ops-data
mkdir -p "$CAREER_OPS_ROOT"
cp templates/portals.example.yml "$CAREER_OPS_ROOT/portals.yml"
cp config/profile.example.yml "$CAREER_OPS_ROOT/config/profile.yml"
node doctor.mjs --json --init-templates2. 驗證徵才看板設定並執行零 Token 掃描與存活檢查
npm run validate:portals
node audit-portals.mjs --summary
node scan.mjs --verify3. 驗證履歷事實防偽、故事庫溯源與追蹤表完整度
npm run cv:verify-facts
node verify-cv-structure.mjs
node cv-title-check.mjs --summary
node story-provenance-check.mjs --summary
npm run verify
node stats.mjs --summary限制與注意事項
| 限制項目 | 技術邊界與合規要求 |
|---|---|
| 事實查核無法攔截純語意改寫 | generate-pdf.mjs 與 verify-cv-facts.mjs 會阻擋未見於 cv.md 或 article-digest.md 的新增數字與實體事實,但目前尚無法自動判定同義改寫是否誇大(追蹤於 Issue #1411),送出前仍須人工逐字審閱每份 PDF 履歷 |
| 嚴禁捏造開源專案作者身分 | AGENTS.md 明確禁止將「曾使用某工具或框架」改寫為「開發或創立該工具」;除非 cv.md 或 article-digest.md 明確記載作者身分,否則一律不得宣稱為專案作者 |
| Claude 外掛目錄寫入保護 | 當系統作為 Claude Code 外掛安裝於 ~/.claude/plugins/cache/、marketplaces/ 或 synced/ 時,預設資料根目錄會自動轉向 ~/career-ops-data;若強制將 CAREER_OPS_ROOT 指向外掛快取目錄,getCareerOpsRoot() 會拋出 UnsafeDataRootError 拒絕寫入 |
英國簽證名冊 not-found 語意 | sponsor-check.mjs 查詢英國 Home Office 名冊時,回傳 not-found 僅代表「未確認」(可能因母公司持牌、法定名稱與品牌名不同或名冊快照時間差),不代表雇主拒絕提供簽證擔保 |
| 商標政策與第三方平台條款 | 程式碼採 MIT 授權,但 career-ops 名稱與品牌受 TRADEMARK.md 規範;使用掃描與自動填表功能時須遵守 Greenhouse、Lever、Workday 與 LinkedIn 等平台的服務條款 |
後續操作
當
data/applications.md累積多筆評估紀錄後,可執行npm run serve:dashboard啟動 Go Bubble Tea 終端機儀表板,透過10個篩選分頁與8種排序模式管理投遞進度。若需將
scan與triage設定為定期背景任務,或使用免費與本機模型降低評估成本,可參閱docs/AUTOMATION.md、docs/RUNNING_ON_A_BUDGET.md與docs/FREE_TIER.md。若需在求職作品集中附上產品發布動畫或技術概念解說短片,可搭配本站的 Huashu Art Motion 使用手冊算繪高解析度展示片段。
來源固定於 cd3793734fcd57693ddd97a20ccf0d3298b7d47e。官方參考文件:
README:系統功能總覽、39 個模式分類表、預設企業看板與常見問題。
代理指令與資料契約(AGENTS.md):雙層資料契約、信任邊界、故事庫溯源規範與全腳本清單。
模式目錄說明(modes/README.md):39 個核心模式、面試子目錄與 20 個語系市場目錄結構。