2026年3月23日6 分鐘閱讀ai-first-projects

用 AI CLI 做年度回顧與規劃:目標、里程碑、每月 Check-in

在 terminal 裡建一套版本控制的年度計畫系統。設定年度目標,讓 AI 拆解成季度里程碑,每月 check-in 回顧進度,用 git history 當成長日記,記錄你的優先順序怎麼一路演變。

DH
Danny Huang

抽屜裡找到的那本筆記本

一月。你坐下來,翻開一本全新的筆記本 -- 或者打開一份空白的 Google Doc,或者一個有漂亮 template 的 Notion 頁面 -- 然後寫下今年的目標。你寫得很具體。你充滿動力。你寫了 deadline。你甚至用了 bullet points。

三月,你找不到那份文件了。六月,你忘了自己寫過什麼。十二月,有人問「你今年的目標達成了嗎?」你轉移了話題。

這不是意志力的問題。這是系統的問題。一份一月寫好之後就再也沒碰過的計畫,不是計畫。是時間膠囊。你埋下去,然後忘了埋在哪。

問題有三個面向。第一,計畫活在一份你打開一次就不會再開的文件裡。第二,沒有任何機制強迫你回頭看它。第三,就算你真的回頭看了,你也看不出自己的想法從一月到現在有什麼變化 -- 因為每次編輯都覆蓋了上一個版本。

如果計畫活在一個 git repository 裡呢?如果一個 AI agent 每個月問你發生了什麼事,拿你的回答跟計畫對照,然後誠實地告訴你現在站在哪裡呢?如果你十二月的時候跑一次 git log --oneline plan.md,看到十二個 commit -- 每個月一個 -- 精確地呈現你的優先順序這一年怎麼移動的呢?

這就是你今天要建的東西。不是 app。不是 dashboard。就是一個被 git 追蹤的 markdown 資料夾,加上一個每月 check-in 的 AI 對話流程。這個系統簡單到讓你覺得在作弊。但簡單正是它能用的原因 -- 因為唯一有意義的計畫系統,是你真的會用的那一個。

你會建出什麼

這篇文章結束時,你手上會有:

  1. 一個 git repository,裡面裝著結構化的 markdown 年度計畫。
  2. AI 生成的拆解,把年度目標拆成季度里程碑和月度指標。
  3. 每月 check-in 流程,你告訴 AI 這個月發生了什麼,AI 給出誠實的評估加上建議調整。
  4. 一份 git history,變成你的成長日記 -- 每個 commit 都捕捉了那個時間點你的優先順序快照。

核心洞察:git history 本身就是反思工具。git log --oneline plan.md 會顯示你這一年的優先順序怎麼移動。那份變化的紀錄,比計畫本身更有價值。

前置需求

  • Claude Code 已安裝並認證。還沒裝的話,跟著第一個小時教學走,十分鐘搞定。
  • Git 已安裝。Mac 用戶已經有了。Windows 用戶裝 Git for Windows。
  • 基本 terminal 操作能力。 你會輸入指令、看輸出。不需要寫程式。

第一步:建立計畫 Repository

每個好系統都從一個容器開始。你的容器是一個 git repository。

mkdir -p ~/annual-plan && cd ~/annual-plan
git init

就這樣。一個有版本追蹤的資料夾。從這一刻起你做的每一個改動都被記錄。每次編輯都有時間戳。每個調整都可以回溯。

建立基本結構:

mkdir -p monthly-checkins
touch plan.md goals.md CLAUDE.md

你的 repository 長這樣:

~/annual-plan/
  plan.md              -- 你的主計畫(AI 會幫你寫)
  goals.md             -- AI 處理前的原始目標
  monthly-checkins/    -- 每月一個檔案
  CLAUDE.md            -- 給 AI agent 的指示

三個檔案加一個資料夾。整個系統就是這樣。沒有 framework,沒有 template,不用訂閱。

第二步:寫下你的原始目標

打開 goals.md,寫下你真正想要的東西。不用管格式。不用管是否切實際。把腦子裡的東西全部倒出來。這是鞋盒階段 -- 你在把大腦清空到紙上。

# 今年我想要什麼

- 升上 senior engineer
- 讀 24 本書
- 跑一場半馬
- 日文學到能在東京旅行時活下來
- 把 side project 上線(那個食譜 app 的 idea)
- 存 $15,000
- 寫 12 篇 blog
- 變強 public speaking
- 少滑手機
- 一週至少 4 天在家煮晚餐

不要過濾。不要排序。全部寫下來,包括你懷疑不切實際的目標。AI 在下一步會幫你想可行性的問題。你現在的工作是誠實,不是策略。

Commit 這份原始輸入:

cd ~/annual-plan
git add goals.md
git commit -m "raw goals: brain dump before AI processing"

你的第一個 commit。Git log 現在記錄了你在任何分析介入之前想要什麼。十二月的時候,你會回頭看這個 commit,看到年初的自己是什麼樣子。

第三步:設定 CLAUDE.md

AI agent 動手之前,它需要指示。Repository 裡的 CLAUDE.md 檔案是一份常設命令 -- 就像在顧問開始工作前告訴他「這是我的情況,這是我的限制,這是我要的輸出格式」。

CLAUDE.md 裡寫:

# Annual Planning Agent

## Context
This repository contains a personal annual plan. The owner sets yearly
goals, and this agent helps break them into actionable milestones, run
monthly check-ins, and adjust the plan based on real progress.

## Rules
1. Be honest. If a goal is unrealistic given the time remaining, say so.
2. Never delete goals. Mark abandoned goals as "paused" with a reason.
3. Use simple markdown. No HTML, no complex formatting.
4. When adjusting the plan, explain WHY the adjustment makes sense.
5. Track completion as percentages, not just checkboxes.
6. Always consider dependencies between goals (e.g., "saving money"
   and "shipping side project" might conflict on time).

## Plan Structure (plan.md)
- H1: Year title
- H2: Each goal area
- H3: Quarterly milestones
- Each milestone has: target, measurable criteria, dependencies
- Bottom section: "Paused Goals" for anything deprioritized

## Monthly Check-in Format
When reviewing progress, produce:
1. Progress summary (what moved forward)
2. Honest assessment (on track / behind / ahead for each goal)
3. Suggested adjustments (with reasoning)
4. Next month's focus areas (top 3 priorities)
5. One question to prompt reflection

Commit:

git add CLAUDE.md
git commit -m "add AI agent instructions for planning workflow"

第四步:讓 AI 建你的計畫

這裡是 AI 證明自己價值的地方。你有原始目標。AI 讀取它們,問對的問題,產出一份有季度里程碑的結構化計畫。

cd ~/annual-plan
claude

在 Claude Code 的 prompt 裡:

Read goals.md. Break each goal into quarterly milestones with
measurable targets. Flag any goals that conflict with each other
on time or resources. Write the result to plan.md following the
structure in CLAUDE.md.

Agent 讀你的目標,想清楚彼此之間的依賴關係。plan.md 的輸出大概長這樣:

# 2026 Annual Plan

## 職涯:升上 Senior Engineer
**目標:** Q4 績效考核前獲得晉升

### Q1:累積證據
- 主導一個跨團隊專案(一月底前確定)
- 在 team wiki 記錄 3 個技術決策
- 跟主管約 1:1 討論晉升標準

### Q2:展現 scope
- 交付跨團隊專案
- Mentor 一位 junior engineer(每週 30 分鐘)
- 做一次內部 tech talk

### Q3:補短板
- 向 3 位同事要 feedback
- 接一個 comfort zone 以外的專案
- 年中 review:直接問「我離 senior 還差什麼?」

### Q4:收尾
- 整理晉升材料(專案、影響力、peer feedback)
- 在十月 review cycle deadline 前提交

**依賴關係:** 很吃時間。如果 side project 也在 Q2 衝刺會衝突。
建議:side project 延到 Q3-Q4。

---

## 健身:半馬
**目標:** 完成一場半馬(任何正式比賽,任何時間)

### Q1:打底
- 每週跑 3 次,每次至少 5 公里
- 每週一次 long run,從 6 公里慢慢加到 12 公里
- 報名 Q3 或 Q4 的比賽

### Q2:拉距離
- Long run 在 Q2 結束時達到 16 公里
- 加入每週一次 tempo run
- ...

---

## 閱讀:24 本書
**目標:** 24 本書(每月 2 本)

### 每月節奏
- 每月 1 本小說 + 1 本非小說
- 在月度 check-in 裡追蹤
- 如果進度落後,檢視 screen time(見「少滑手機」目標)

**依賴關係:** 跟「少滑手機」天然互補 -- 把滑手機的時間換成閱讀
時間,一次打中兩個目標。

---

## Paused Goals
(暫無)

檢視輸出。AI 標記出你的 side project 和升遷目標在 Q2 會搶同一批時間。它發現多讀書和少滑手機是天然盟友。這些連結在目標以分散的 bullet points 存在時很難看見。

覺得哪裡不對就改。然後 commit:

git add plan.md
git commit -m "structured plan: AI breakdown of yearly goals into quarterly milestones"

現在你的 repository 有三個 commit。原始目標、agent 指示、結構化計畫。故事已經開始成形。

第五步:每月 Check-in

這是系統的心跳。每個月坐下來十五分鐘,告訴 AI 發生了什麼事。

建一個 check-in 檔:

cat > ~/annual-plan/monthly-checkins/2026-01.md << 'EOF'
# January 2026 Check-in

## 這個月發生了什麼
- 跨團隊專案(API migration)開工了,進展順利
- 讀了 1 本書(沙丘)。第二本開始讀但沒讀完
- 一週跑 2 次,沒達到 3 次。天氣太冷有幾天沒跑
- 報名了 iTalki 日文課。上了 3 堂
- Side project 零進度。根本沒碰
- 在家煮晚餐大概一週 2 天。叫外賣太多

## 讓我意外的事
- API migration 比我想像的有趣。跨團隊合作意外地享受
- 日文比我想的難。3 堂課感覺什麼都沒學到

## 我在擔心的事
- 閱讀和跑步已經落後了。經典一月模式
EOF

讓 AI 來 review:

cd ~/annual-plan
claude "Read plan.md and monthly-checkins/2026-01.md. Produce an honest progress review following the check-in format in CLAUDE.md. Write the review to the bottom of monthly-checkins/2026-01.md."

AI 讀你的計畫,讀你的筆記,然後附上一份誠實的評估:

---

## AI Review: January 2026

### 進度摘要
- **職涯:** on track。跨團隊專案開工,這是 Q1 的核心動作。
- **閱讀:** behind(1/2 本)。速度要翻倍。
- **健身:** behind(一週 2 次 vs 目標 3 次)。天氣是合理原因,
  但二月得把缺口補回來。
- **日文:** 已開始。3 堂課是個起頭,不是節奏。
- **Side project:** 未開始。沒關係 -- 計畫寫的是 Q3-Q4 重點。
- **煮飯:** behind(一週 2 天 vs 目標 4 天)。
- **存款:** 沒提到。一月的財務狀況如何?

### 誠實評估
你進入第一個月了。職涯目標表現最強,因為它有外部結構(一個有 deadline
的專案)。個人目標(閱讀、跑步、煮飯)在漂移,因為沒有任何東西強迫
你去做。這就是你提到的「一月模式」 -- 認出它是打破它的第一步。

### 建議調整
1. **跑步:** 冬天改跑室內(gym 跑步機、居家運動)。
   「天氣太冷」這個藉口會持續到三月。
2. **閱讀:** 設每日最低量(20 頁)而不是月目標。
   月目標讓你可以拖 28 天。
3. **煮飯:** 週日 meal prep。每天煮 4 道不同的晚餐很難。
   煮一次然後吃 3 天剩菜很容易。

### 下個月 Top 3 重點
1. 每週跑 3 次(沒藉口 -- 冷就去室內)
2. 讀完 2 本書(接續沒讀完的 + 開一本新的)
3. 追蹤存款 -- 你完全沒提到財務

### 反思問題
你說 API migration「比預期有趣」。你的職涯目標只是升遷,還是你
正在發現自己真正想做的是什麼類型的工作?

最後那個反思問題,是這套系統能運作的原因。AI 把你自己的話讀回給你聽,注意到你忽略的模式。你說你享受跨團隊合作。AI 問你的職涯目標是不是該從「升遷」演化成「找到我熱愛的工作」。一份靜態計畫永遠不會問這個問題。

Commit check-in:

cd ~/annual-plan
git add monthly-checkins/2026-01.md
git commit -m "january check-in: career on track, fitness and reading behind pace"

第六步:計畫在演化

三個月的 check-in 之後,你的計畫跟一月的版本已經不同了。這就是重點。

也許你暫停了 side project,因為升遷軌道吸走了所有精力。也許你放棄了半馬,改成穩定的健身房習慣。也許你發現日文是一時興起,把那些時間重新導向了 public speaking 練習。

每次調整都 commit:

cd ~/annual-plan
claude "Read plan.md and all files in monthly-checkins/. Based on Q1 progress, update plan.md: adjust Q2-Q4 milestones, move any goals to 'Paused' if I've stopped working on them, and recalibrate targets. Explain every change."

AI 更新計畫。你 review 改動。你 commit:

git add plan.md
git commit -m "Q1 review: pause side project, recalibrate fitness to gym habit, add speaking goal"

第七步:十二月 -- 讀 Git Log

回報來了。十二月,你跑:

git log --oneline plan.md

你看到的東西大概像這樣:

a3f9c21 Q3 review: promotion submitted, marathon goal back on, 18 books read
8b2e4d7 july: add "speak at meetup" as concrete public speaking target
5c1f0a3 june check-in: side project restarted as weekend-only commitment
e7d3b91 Q2 review: on track for promotion, running consistently, japanese paused
1a4f2c8 april adjustment: replace japanese with public speaking practice
d2e6f9a Q1 review: pause side project, recalibrate fitness to gym habit
b8c3a1e structured plan: AI breakdown of yearly goals into quarterly milestones
f1d5e7b raw goals: brain dump before AI processing

八個 commit。八個你在不同時間點的快照。Git log 講了一個靜態文件永遠講不出來的故事。

你可以 diff 任何兩個時間點:

git diff d2e6f9a..a3f9c21 -- plan.md

這會精確顯示 Q1 到 Q3 之間改了什麼。哪些目標存活了。哪些變形了。哪些你有勇氣暫停。

這是整套系統的核心洞察。計畫不是產品。計畫的歷史才是產品。一份一月寫的計畫是猜測。一份被 review、調整、辯論、commit 了十二次的計畫,是成長的紀錄。git log 就是你的成長日記,而它一路上自己寫好了。

養成習慣

系統只有你用了才有用。以下是兩個讓每月 check-in 自動化的方法。

行事曆提醒: 設一個每月重複的事件,放在每月第一個週日。標題:「年度計畫 check-in(15 分鐘)」。提醒響的時候,打開 terminal,建當月的 check-in 檔,寫下發生了什麼,然後讓 AI review。

Shell alias: 在你的 .zshrc.bashrc 加這行:

alias checkin='cd ~/annual-plan && code monthly-checkins/$(date +%Y-%m).md'

現在打 checkin 就會打開當月的檔案。寫完你的筆記,存檔,然後:

cd ~/annual-plan
claude "Review my latest check-in against the plan. Be honest."

每月十五分鐘。這是成本。回報是一套能活過一月、隨現實調整、年底給你一面誠實鏡子的計畫系統。

為什麼 App 做不到但這個可以

你試過計畫 app。你試過 Notion template。你試過有連續天數和徽章的習慣追蹤器。它們全部失敗的原因一樣:增加了摩擦卻沒增加誠實。

Git repo 裡的一份 markdown 檔沒有摩擦。你用任何文字編輯器打開它。寫純文字。Commit。工具消失,只剩內容。

AI 加上了誠實。它讀你一月的雄心壯志,同時讀你三月的現實,然後告訴你真話。不是殘忍的真話 -- 是有用的真話。「你閱讀進度落後,因為你把那些時間花在職涯發展上了,而那件事說不定現在更重要。考慮把書的目標降到 18 本。」

Git 加上了記憶。每個版本都被保存。什麼都不會丟失。十二月的時候,你不需要記得四月發生了什麼。Commit 在那裡。Diff 在那裡。演變的過程在那裡。

三個工具。Markdown 給你簡單。AI 給你誠實。Git 給你記憶。三者加在一起,解決了意志力從來解決不了的年度計畫問題。

抽屜裡的筆記本從來不是問題。問題是沒有人在十二月之前再打開那個抽屜。現在有東西會打開了。每個月。而且它會讀裡面的東西。

#ai-cli#claude-code#productivity#planning#annual-review#git#markdown#personal-growth

相關文章