npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@unayung/code996

v1.0.1

Published

統計 Git commit 的時間分布,進而推導出專案的編碼工作強度(繁體中文版)

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"

它怎樣工作

  1. 使用 git-log 獲取專案 commit 的相關資料
  2. 本機計算分析,並輸出展示結果

資料採集流程

Git 儲存庫 → git log 採集 → 日級首提 + 小時分布 → 分位數推算上/下班 → 996 指數計算 → 結果輸出

關鍵演算法

  1. 時間分布分析:
    • 資料採集:按分鐘級別採集提交時間,自動聚合為48個半小時點
    • 演算法處理:自動聚合為24小時用於工作時間識別和996指數計算
    • 展示模式:預設按小時展示(24點),可選半小時模式(48點)
  2. 工作時間識別:使用最近樣本的 10%-20% 分位估算上班時間區間,並結合晚間提交拐點推算下班時間
  3. 996 指數計算:依據加班比例建構指數,並輸出中文描述
  4. 專案類型識別 :透過工作時間規律性、週末活躍度、晚間活躍模式,自動識別專案是「公司專案」還是「開源專案」
  5. 跨時區協作檢測:透過時區離散度和「睡眠時段」提交比例識別跨時區專案(閾值:非主導時區 >1%),並提供時區過濾建議
  6. 節假日調休識別:當主要時區為 +0800 且佔比超過 50% 時,自動啟用中國節假日調休判斷(工作日/週末會考慮法定節假日和調休),其他時區可透過 --cn 參數手動開啟
  7. 資料驗證:檢驗統計資料是否與總提交數一致,避免缺失導致的偏差
  8. 演算法優勢:新版本採用分位數與拐點估算,能更智慧地排除深夜零星提交的干擾,精準定位真實的工作時間視窗

使用提示

  • 隱私保護:所有對 Git 資料的分析均在本機進行,不會上傳任何結果或日誌。
  • 分析局限性:工具僅統計 git log 中的 commit 時間。然而,實際工作還包括開會、學習、維護文件、除錯自測等活動。因此,報告無法涵蓋全部的實際工作時間,分析結果準確性有限,請謹慎參考。
  • 使用限制:本專案分析結果僅供個人參考,請勿用於「作惡」或不當用途。
  • 免責聲明:code996 不對使用、傳播本程式及附屬產物造成的任何後果承擔任何責任。

其他疑問

以下是一些常見問題,如果你有其他問題,歡迎隨時提出 issue。

Q: 拿到程式碼才能分析,入職了再用豈不是馬後炮?

並非如此。code996 的核心價值在於打破資訊差,用真實資料對抗口頭畫餅。

  1. 試用期即「驗貨期」:入職不代表賣身。法律規定的試用期也是我們對公司的考察期。如果第一天就發現是天坑,趁早止損也是一種避坑策略。
  2. 內推時背調:格局打開!你完全可以找在那家公司工作的內鬼朋友幫忙跑一下。這不就是最硬核的內推背調嗎?🐶
  3. 決策依據:哪怕已經入職,有一份確鑿的加班證據在手,無論是以此為由轉崗,還是作為離職的決斷依據,都比自我懷疑要強得多。

Q: 專案習慣本機多次提交後 Squash 再推送,會影響準確性嗎?

影響會有,但 code996 依賴的是統計學規律,只要 commit 樣本達到一定數量,最終呈現的是團隊整體的集體工作模式,特殊提交習慣在統計學上會被視為「雜訊」被過濾掉。

Q: 跨時區專案是否支援使用 code996?

完美支援!Git 提交記錄自帶本機時區資訊,同時工具預設也會自動分析專案的時區分布並進行提示,防止資料混淆。

同時支援使用 --timezone="+0800" 等參數手動篩選特定地區,實現對跨國團隊的精準偵察。

Q: 為什麼不支援查看專案成員的996指數?

雖然技術上可以實現,但我們刻意放棄了這個功能:

按使用者查看 996 指數,這個功能太容易被異化和濫用了,它很容易被一些人拿去分析團隊成員的「加班情況」。

雖然我前面已經不止一次強調了工具的局限性(實際工作還包括開會、學習、維護文件、除錯自測等等),但你就是擋不住有些人只看數字🤦

這個專案的初衷是用來避坑專案的,而不是給內卷提供新的彈藥。因此,專案只提供看團隊和看自己(--self)兩種視角。

最後,程式碼提交量和時間點不等於工作產出。如果將其用於績效考核,不僅會導致團隊為了刷資料而產生大量垃圾提交,更會破壞團隊的信任。

Q: 專案接下來的路線?

接下來的功能都會沿著 WLB 和工作避坑的路線來開發,包括:更精細的加班比例分析、以及分析程式碼的屎山指數(複雜度分析),畢竟維護屎山也是導致 996 的罪魁禍首之一。

🙏 致謝

原作者

繁體中文版維護

主要變更

  • ✨ 全面轉換為繁體中文(台灣用語)
  • 🎯 新增 --author 參數,支援指定作者分析
  • 📦 發佈為 npm 套件,方便使用

AI 開發工具

本繁體中文版使用 Claude Code 進行開發。

📄 授權條款

MIT License


原專案: hellodigua/code996 繁體中文版: @unayung/code996