← CLAUDE.md 是樂譜:一人公司的 AI 指揮家模式

繁體中文

CLAUDE.md 是樂譜:一人公司的 AI 指揮家模式

Reid Hoffman 在一次訪談裡說:

“I’m more of a conductor than I am a violin player or a piano player.”

這句話我聽進去了。大部分人說「我有在用 AI」,意思是拿 AI 加速某個步驟——翻譯快一點、code 補全快一點。真正的分水嶺不在這裡,而在把工作本身重組成 AI 可以接手的結構。這篇文章講我怎麼做,以及一年下來系統長成什麼樣子。

兩台機器,兩種角色

我的系統跑在兩台 Mac 上:

  • MacBook Pro(M1 Max):互動主力。我在這裡跟 Claude Code 對話、開發、做決策。
  • Mac mini(M1, 8GB):無人值守。跑排程任務——每週一早上抓流動性指標、每天掃排程健康狀態、盤前更新期貨點位,異常直接推 Discord 通知我。

兩台機器各有一個 Claude Code agent(我叫它們 Pro CC 和 Mini CC),透過共用的 handoff 筆記交接工作狀態。我睡覺的時候,Mini CC 在工作;我坐到桌前,Pro CC 從 handoff 摘要接手上一場的進度。

CLAUDE.md 是樂譜

指揮家不拉小提琴,但譜架上有總譜。我的總譜是一份叫 CLAUDE.md 的 Markdown 檔——每次會話自動載入,定義這個 agent 能做什麼、曾經在哪裡跌倒、怎麼避免再跌一次。

重點不是寫規則,是讓規則會長大。每次踩坑,教訓就寫回系統:

## F-0. Git 操作紀律(hard rule,pack 吞噬事故後新增)
- 禁止 `git add -A``git add .` — 一律明確 pathspec
- 原因:雲端同步工具會把 .git/objects/pack/*.pack hardlink
進 worktree,全量 add 會吞 pack 造成 repo 指數膨脹
(本 repo 曾脹到 2.0TB)

這條規則來自一次真實事故:雲端同步工具跟 git 打架,repo 膨脹到 2TB。修復之後,教訓變成一條 hard rule,從此每個 agent 會話都不會再犯。用得愈久,系統愈懂我——這比任何模型升級都值錢。

記憶分三層

單一大檔案會爆 token,所以記憶按重用性分層:

  1. 情節記憶:帶日期的會話紀錄,追查「那天發生什麼」用
  2. 語義記憶:跨會話可重用的知識,按主題整理
  3. 強制規則:不管什麼情境都必須遵守的約束

情節記憶累積到一定程度,蒸餾成語義記憶;語義記憶再往上凝結成 wiki 文章。加上懶加載(會話啟動只讀核心身份檔,其他模組按需載入),token 消耗比單一大檔少了七成。

四個角色,各有邊界

開發 iPhone 鍵盤 app 的時候,我把 agent 拆成四個角色:PM 分析需求寫 spec、Designer 出設計稿、Engineer 實作、QA 審查把關。關鍵是邊界用制度鎖死:PM 不碰程式碼,Engineer 才能 commit,QA 擋 release。

這不是角色扮演遊戲。邊界存在的理由跟人類團隊一樣:寫 code 的人不該自己驗收自己的 code。我的驗證紀律裡有一條鐵律——「驗證不自驗」,實作者的產出必須由另一個獨立 agent 或我本人用真實輸入跑過才算數。

這套系統實際產出什麼

  • 商業產出:客戶的影片字幕,從每支 2-3 小時人工校正壓到 15-30 分鐘自動化(這條 pipeline 值得單獨一篇,已經寫了
  • 日常生產力:行事曆、提醒事項、email 摘要、每日規劃,全部是 Claude Code 黏著原生 Apple app,零 SaaS 訂閱
  • 投資基礎設施:券商 API 串接、持倉異常掃描、選擇權籌碼快照,跑在排程上

沒請員工,沒買 SaaS。系統的邊際成本是每月的 Claude 訂閱費。

如果你想開始

不用一次建完。我的建議順序:

  1. 先寫一份最小的 CLAUDE.md:你是誰、專案在哪、有什麼絕對不能做
  2. 每次 AI 犯錯,把教訓寫回去(這一步是複利的來源)
  3. 檔案變大之後再拆層:規則、記憶、wiki
  4. 最後才是多機、多角色

Hoffman 那段訪談還有一句:“Even most people who say ‘Oh yeah I’m using AI’ are not using it seriously enough.” 認真用的意思,不是 prompt 寫得多漂亮,是願意把工作結構打掉重組。

English

CLAUDE.md Is a Score: Running a One-Person Company as an AI Conductor

In an interview, Reid Hoffman said:

“I’m more of a conductor than I am a violin player or a piano player.”

That line stuck with me. When most people say “I’m using AI,” they mean they’re using it to speed up a step: translate a bit faster, autocomplete code a bit faster. That’s not where the real dividing line is. The line is whether you restructure the work itself into something an AI can take over. This post is how I do that, and what the system has grown into after a year.

Two Machines, Two Roles

My system runs on two Macs:

  • MacBook Pro (M1 Max): the interactive workhorse. This is where I talk to Claude Code, build things, and make decisions.
  • Mac mini (M1, 8GB): unattended. It runs scheduled jobs — pulling liquidity indicators every Monday morning, sweeping the health of my cron jobs daily, updating futures price levels before the open, and pushing anything anomalous straight to Discord.

Each machine has its own Claude Code agent (I call them Pro CC and Mini CC), and they hand off work state through a shared handoff note. While I sleep, Mini CC is working; when I sit down at my desk, Pro CC picks up where the last session left off from the handoff summary.

CLAUDE.md Is a Score

A conductor doesn’t play the violin, but there’s a full score on the stand. My score is a Markdown file called CLAUDE.md — loaded automatically at the start of every session, defining what this agent can do, where it has tripped before, and how to avoid tripping again.

The point isn’t writing rules. The point is making the rules grow. Every time I hit a trap, the lesson gets written back into the system:

## F-0. Git Discipline (hard rule, added after the pack-swallowing incident)
- Forbidden: `git add -A`, `git add .` — always use an explicit pathspec
- Reason: the cloud-sync tool hardlinks .git/objects/pack/*.pack
into the worktree, so a blanket add swallows the pack and makes
the repo balloon exponentially (this repo once hit 2.0TB)

This rule came out of a real incident: a cloud-sync tool got into a fight with git, and the repo ballooned to 2TB. After I fixed it, the lesson became a hard rule, and no agent session repeats the mistake. The longer I use it, the better the system understands me — and that’s worth more than any model upgrade.

Memory in Three Layers

A single giant file blows up your token budget, so memory is layered by reusability:

  1. Episodic memory: dated session logs, for tracing “what happened that day”
  2. Semantic memory: knowledge reusable across sessions, organized by topic
  3. Hard rules: constraints that hold no matter the context

Once episodic memory piles up enough, it gets distilled into semantic memory; semantic memory then condenses upward into wiki articles. Add lazy loading (a session only reads the core-identity file at startup, and loads other modules on demand), and token consumption drops about 70% compared to one big file.

Four Roles, Each With a Boundary

When I was building an iPhone keyboard app, I split the agent into four roles: PM analyzes requirements and writes the spec, Designer produces the mockups, Engineer implements, QA reviews and gatekeeps. The key is that the boundaries are locked in by policy: the PM never touches code, only the Engineer can commit, QA blocks the release.

This isn’t a role-playing game. The boundaries exist for the same reason they do on a human team: the person who wrote the code shouldn’t sign off on their own code. One of the iron laws in my verification discipline is “the author never verifies their own work” — an implementer’s output only counts once another independent agent, or I myself, has run it against real input.

What This System Actually Produces

  • Commercial output: a client’s video subtitles, squeezed from 2-3 hours of manual correction per video down to 15-30 minutes of automation (that pipeline deserves its own post, which I’ve already written)
  • Daily productivity: calendar, reminders, email summaries, daily planning — all of it Claude Code gluing native Apple apps together, zero SaaS subscriptions
  • Investment infrastructure: brokerage API integrations, position-anomaly scans, options positioning snapshots, all running on schedule

No employees, no SaaS purchases. The marginal cost of the system is my monthly Claude subscription.

If You Want to Start

You don’t have to build it all at once. The order I’d suggest:

  1. Write a minimal CLAUDE.md first: who you are, where your projects live, and what must never happen
  2. Every time the AI screws up, write the lesson back in (this step is where the compounding comes from)
  3. Once the file gets big, split it into layers: rules, memory, wiki
  4. Multiple machines and multiple roles come last

There’s one more line from that Hoffman interview: “Even most people who say ‘Oh yeah I’m using AI’ are not using it seriously enough.” Using it seriously doesn’t mean writing prettier prompts. It means being willing to tear your work down and rebuild its structure.