@unayung/code996
v1.0.1
Published
統計 Git commit 的時間分布,進而推導出專案的編碼工作強度(繁體中文版)
Maintainers
Readme
code996 繁體中文版
code996 是一個分析工具,它可以統計 Git 專案的 commit 時間分布,進而推導出專案的編碼工作強度。
它可以幫助你了解新團隊工作的時間模式,識別潛在的加班文化。
📦 npm 套件:
@unayung/code996🙏 感謝原作者: 本專案基於 hellodigua/code996 開發,並轉換為繁體中文(台灣用語)版本 ✨ 新增功能: 支援--author參數,可指定分析特定作者的提交記錄
它的用途
面試時我們會詢問面試官加班情況,但得到的答案往往不那麼真實。
但是程式碼的提交時間不會騙人,因此就有了這個工具。
當你入職新公司,跑一下 npx @unayung/code996,就可以看到資料背後的真相,從而判斷這家公司的真實加班文化。
與其痛苦三個月,不如早點看清真相!別等到試用期結束才後悔!
預覽
查看核心結果
其他模組預覽 →
查看提交時間分布
加班情況分析
月度趨勢分析
🚀 快速開始
無需安裝,快速使用:
# 在當前儲存庫或儲存庫上級目錄執行(預設查詢以上次提交為終點開始365天的commit)
npx @unayung/code996你也可以選擇安裝後再使用,這樣就不用每次都重新下載:
# 全域安裝
npm i -g @unayung/code996
# 使用
code996🤖 智慧分析模式
code996 會根據上下文自動選擇最合適的分析模式:
- 在Git儲存庫中執行 → 單儲存庫深度分析
- 目錄下有多個儲存庫 → 自動進入多儲存庫分析模式
# 智慧檢測,自動選擇分析模式
npx @unayung/code996 # 智慧檢測目前環境
npx @unayung/code996 /path/to/repo # 分析指定儲存庫
npx @unayung/code996 /proj1 /proj2 # 自動進入多儲存庫模式
npx @unayung/code996 /workspace # 自動掃描子目錄📖 詳細使用說明
基礎命令
help:顯示說明資訊
時間範圍選項
-y, --year <year>:指定年份或年份範圍(推薦)- 單年格式:
2025→ 分析 2025-01-01 至 2025-12-31 - 範圍格式:
2023-2025→ 分析 2023-01-01 至 2025-12-31
- 單年格式:
-s, --since <date>:自訂開始日期 (YYYY-MM-DD)-u, --until <date>:自訂結束日期 (YYYY-MM-DD)--all-time:涵蓋整個儲存庫歷史資料
篩選與展示選項
-H, --hours <range>:手動指定標準工作時間(例如:9-18 或 9.5-18.5)重要:建議使用該參數,以獲取更正確的評價結果--half-hour:以半小時粒度展示時間分布(預設按小時展示)統計更精確--timezone <offset>:指定時區進行分析(例如:+0800、-0700)適用於跨時區團隊專案--cn:強制開啟中國節假日調休模式**(系統會自動檢測 +0800 時區並啟用,其他時區也可手動開啟)**--self:僅統計目前 Git 使用者的提交記錄--author <regex>:僅包含符合特定正規表示式的作者(例如:只分析 john 或 mary 的提交)--ignore-author <regex>:排除符合特定正規表示式的作者(例如:排除 bot 或 jenkins)--ignore-msg <regex>:排除 Commit Message 中包含特定關鍵字的提交(例如:排除 merge 或 lint)
使用範例
# ===== 單儲存庫分析(智慧模式) =====
npx @unayung/code996 # 分析目前儲存庫(最近一年)
npx @unayung/code996 /path/to/repo # 分析指定儲存庫
npx @unayung/code996 -y 2025 # 分析2025年
npx @unayung/code996 -y 2023-2025 # 分析2023-2025年
npx @unayung/code996 --all-time # 查詢整個儲存庫歷史
npx @unayung/code996 --self # 只分析目前使用者的提交
npx @unayung/code996 --self -y 2025 # 分析自己在2025年的提交
# ===== 多儲存庫分析(智慧自動檢測) =====
npx @unayung/code996 # 如果子目錄有多個儲存庫,自動進入多儲存庫模式
npx @unayung/code996 /path/proj1 /path/proj2 # 傳入多個路徑,自動分析多個儲存庫
npx @unayung/code996 /workspace # 掃描指定目錄的所有子儲存庫
npx @unayung/code996 /workspace -y 2025 # 分析2025年的資料和趨勢
npx @unayung/code996 --self # 只統計目前使用者在所有儲存庫中的提交
# 精細分析(半小時粒度)
npx @unayung/code996 --half-hour # 以半小時粒度展示時間分布
npx @unayung/code996 -y 2025 --half-hour # 結合年份分析,精細展示
npx @unayung/code996 /proj1 /proj2 --half-hour # 多儲存庫分析,半小時粒度展示
# 跨時區專案分析
npx @unayung/code996 --timezone="+0800" # 只分析東八區(中國)的提交
npx @unayung/code996 --timezone="-0700" # 只分析西七區(美國西海岸)的提交
npx @unayung/code996 -y 2025 --timezone="+0800" # 分析2025年特定時區的提交
# 中國節假日調休分析
npx @unayung/code996 # 系統自動檢測主要時區為 +0800 時,會自動啟用節假日調休
npx @unayung/code996 --cn # 手動強制開啟節假日調休模式(適用於非 +0800 時區專案)
npx @unayung/code996 --timezone="-0700" --cn # 分析非中國時區專案,但需要按中國節假日調休判斷
# 指定特定作者分析
npx @unayung/code996 --author "john" # 只分析 john 的提交
npx @unayung/code996 --author "john|mary" # 只分析 john 或 mary 的提交
npx @unayung/code996 --author "john" -y 2025 # 分析 john 在 2025 年的提交
# 過濾雜訊資料(排除 CI/CD 機器人、合併提交等)
npx @unayung/code996 --ignore-author "bot" # 排除所有包含 "bot" 的作者
npx @unayung/code996 --ignore-author "bot|jenkins|github-actions" # 排除多個作者(使用 | 分隔)
npx @unayung/code996 --ignore-msg "^Merge" # 排除所有以 "Merge" 開頭的提交訊息
npx @unayung/code996 --ignore-msg "merge|lint|format" # 排除多個關鍵字
npx @unayung/code996 -y 2025 --ignore-author "renovate|dependabot" --ignore-msg "^Merge" # 綜合過濾常見排除情境:
# 排除所有 CI/CD 機器人
--ignore-author "bot|jenkins|github-actions|gitlab-ci|circleci|travis"
# 排除相依性更新機器人
--ignore-author "renovate|dependabot|greenkeeper"
# 排除合併和格式化提交
--ignore-msg "^Merge|^merge|lint|format|prettier"
# 排除自動產生的提交
--ignore-msg "^chore|^build|^ci|auto"它怎樣工作
- 使用 git-log 獲取專案 commit 的相關資料
- 本機計算分析,並輸出展示結果
資料採集流程
Git 儲存庫 → git log 採集 → 日級首提 + 小時分布 → 分位數推算上/下班 → 996 指數計算 → 結果輸出關鍵演算法
- 時間分布分析:
- 資料採集:按分鐘級別採集提交時間,自動聚合為48個半小時點
- 演算法處理:自動聚合為24小時用於工作時間識別和996指數計算
- 展示模式:預設按小時展示(24點),可選半小時模式(48點)
- 工作時間識別:使用最近樣本的 10%-20% 分位估算上班時間區間,並結合晚間提交拐點推算下班時間
- 996 指數計算:依據加班比例建構指數,並輸出中文描述
- 專案類型識別 :透過工作時間規律性、週末活躍度、晚間活躍模式,自動識別專案是「公司專案」還是「開源專案」
- 跨時區協作檢測:透過時區離散度和「睡眠時段」提交比例識別跨時區專案(閾值:非主導時區 >1%),並提供時區過濾建議
- 節假日調休識別:當主要時區為 +0800 且佔比超過 50% 時,自動啟用中國節假日調休判斷(工作日/週末會考慮法定節假日和調休),其他時區可透過
--cn參數手動開啟 - 資料驗證:檢驗統計資料是否與總提交數一致,避免缺失導致的偏差
- 演算法優勢:新版本採用分位數與拐點估算,能更智慧地排除深夜零星提交的干擾,精準定位真實的工作時間視窗
使用提示
- 隱私保護:所有對 Git 資料的分析均在本機進行,不會上傳任何結果或日誌。
- 分析局限性:工具僅統計 git log 中的 commit 時間。然而,實際工作還包括開會、學習、維護文件、除錯自測等活動。因此,報告無法涵蓋全部的實際工作時間,分析結果準確性有限,請謹慎參考。
- 使用限制:本專案分析結果僅供個人參考,請勿用於「作惡」或不當用途。
- 免責聲明:code996 不對使用、傳播本程式及附屬產物造成的任何後果承擔任何責任。
其他疑問
以下是一些常見問題,如果你有其他問題,歡迎隨時提出 issue。
Q: 拿到程式碼才能分析,入職了再用豈不是馬後炮?
並非如此。code996 的核心價值在於打破資訊差,用真實資料對抗口頭畫餅。
- 試用期即「驗貨期」:入職不代表賣身。法律規定的試用期也是我們對公司的考察期。如果第一天就發現是天坑,趁早止損也是一種避坑策略。
- 內推時背調:格局打開!你完全可以找在那家公司工作的內鬼朋友幫忙跑一下。這不就是最硬核的內推背調嗎?🐶
- 決策依據:哪怕已經入職,有一份確鑿的加班證據在手,無論是以此為由轉崗,還是作為離職的決斷依據,都比自我懷疑要強得多。
Q: 專案習慣本機多次提交後 Squash 再推送,會影響準確性嗎?
影響會有,但 code996 依賴的是統計學規律,只要 commit 樣本達到一定數量,最終呈現的是團隊整體的集體工作模式,特殊提交習慣在統計學上會被視為「雜訊」被過濾掉。
Q: 跨時區專案是否支援使用 code996?
完美支援!Git 提交記錄自帶本機時區資訊,同時工具預設也會自動分析專案的時區分布並進行提示,防止資料混淆。
同時支援使用 --timezone="+0800" 等參數手動篩選特定地區,實現對跨國團隊的精準偵察。
Q: 為什麼不支援查看專案成員的996指數?
雖然技術上可以實現,但我們刻意放棄了這個功能:
按使用者查看 996 指數,這個功能太容易被異化和濫用了,它很容易被一些人拿去分析團隊成員的「加班情況」。
雖然我前面已經不止一次強調了工具的局限性(實際工作還包括開會、學習、維護文件、除錯自測等等),但你就是擋不住有些人只看數字🤦
這個專案的初衷是用來避坑專案的,而不是給內卷提供新的彈藥。因此,專案只提供看團隊和看自己(--self)兩種視角。
最後,程式碼提交量和時間點不等於工作產出。如果將其用於績效考核,不僅會導致團隊為了刷資料而產生大量垃圾提交,更會破壞團隊的信任。
Q: 專案接下來的路線?
接下來的功能都會沿著 WLB 和工作避坑的路線來開發,包括:更精細的加班比例分析、以及分析程式碼的屎山指數(複雜度分析),畢竟維護屎山也是導致 996 的罪魁禍首之一。
🙏 致謝
原作者
- 本專案基於 hellodigua/code996 開發
- 感謝原作者 @hellodigua 創建了這個優秀的工具
繁體中文版維護
- 維護者:@unayung
- npm 套件:@unayung/code996
- GitHub:unayung/code996
主要變更
- ✨ 全面轉換為繁體中文(台灣用語)
- 🎯 新增
--author參數,支援指定作者分析 - 📦 發佈為 npm 套件,方便使用
AI 開發工具
本繁體中文版使用 Claude Code 進行開發。
📄 授權條款
MIT License
原專案: hellodigua/code996 繁體中文版: @unayung/code996
