agentic-os

agentic-os

熱門

在 Claude Code 上打造具持久化能力的多 Agent 作業系統。涵蓋核心架構、專責 Agent、斜線指令、基於檔案的記憶機制、定時自動化,以及無需外部資料庫的狀態管理。

24萬星標
3.6萬分支
更新於 2026/8/3
SKILL.md
唯讀
名稱
agentic-os
描述

在 Claude Code 上打造具持久化能力的多 Agent 作業系統。涵蓋核心架構、專責 Agent、斜線指令、基於檔案的記憶機制、定時自動化,以及無需外部資料庫的狀態管理。

Agentic OS

將 Claude Code 視為持久運行的執行階段(Runtime)或作業系統,而非單次的對話 Session。本 Skill 將正式生產環境中 Agentic 系統的架構規範化:包含一個負責將任務分派給專責 Agent 的核心配置(Kernel config)、基於檔案的持久化記憶、定時自動化,以及 JSON/Markdown 資料層。

什麼時候使用

  • 在 Claude Code 內建立多 Agent 工作流程
  • 設定跨 Session 重新啟動後依然存活的持久化 Claude Code 自動化流程
  • 為日常重複性任務打造「個人 OS」或「Agentic OS」
  • 使用者提及「agentic OS」、「personal OS」、「multi-agent」、「agent coordinator」、「persistent agent」
  • 規劃跨 Session 仍需保留上下文(Context)的長期專案結構

架構總覽

Agentic OS 包含四個層級,每個層級對應專案根目錄下的一個資料夾:

project-root/
├── CLAUDE.md          # 核心(Kernel):身份、路由規則、Agent 註冊表
├── agents/            # 專責 Agent 定義檔(Markdown 提示詞)
├── .claude/commands/  # 斜線指令:面向使用者的 CLI 介面
├── scripts/           # 背景服務腳本:由 Cron 或 Webhook 觸發的定時/事件驅動任務
└── data/              # 狀態層:JSON/Markdown 檔案系統,無需外部資料庫

各層職責

層級 用途 持久化方式
核心 (CLAUDE.md) 身份判定、路由分派、模型策略、Agent 註冊表 Git 追蹤
Agents (agents/) 具備獨立工具與記憶範圍的專責 Agent 身份 Git 追蹤
Commands (.claude/commands/) 面向使用者的斜線指令(如 /daily-sync/outreach Git 追蹤
Scripts (scripts/) 由 Cron 或 Webhook 觸發的 Python/JS 背景腳本 Git 追蹤
狀態 (data/) 只增不刪的 Log 紀錄、專案狀態、決策紀錄 Git 忽略或追蹤

核心(The Kernel)

CLAUDE.md 即為系統核心,角色類似營運長(COO)或協調器(Orchestrator)。Claude 會在 Session 啟動時讀取此檔案,並依據內容分派工作。

核心結構

# CLAUDE.md - Agentic OS Kernel

## 身份
你是 [project-name] 的營運長(COO),負責將任務分派給相應的專責 Agent。
你絕不直接撰寫程式碼,而是授權給合適的 Agent 執行並整合結果。

## Agent 註冊表

| Agent | 角色 | 觸發條件 |
|---|---|---|
| @dev | 程式碼、系統架構、除錯 | 使用者說「build」、「fix」、「refactor」 |
| @writer | 技術文件、內容創作、信件草稿 | 使用者說「write」、「draft」、「blog」 |
| @researcher | 市場/技術研究、分析、事實查核 | 使用者說「research」、「analyze」、「compare」 |
| @ops | DevOps、部署、基礎架構 | 使用者說「deploy」、「CI」、「server」 |

## 路由規則
1. 解析使用者需求中的意圖關鍵字
2. 比對 Agent 註冊表中的「觸發條件」欄位
3. 從 `agents/<name>.md` 載入對應的 Agent 檔案
4. 附帶完整上下文並交接執行
5. 整合執行結果並呈現給使用者

## 模型策略
- 預設模型:使用儲存庫或環境預設設定。
- @dev 任務:針對複雜架構,優先選用高推理能力的模型。
- @researcher 任務:使用已配置且具備研究能力的模型與核可的搜尋工具。
- 成本上限:若即將超出專案設定的預算門檻,需事先發出警告。

核心原則

核心應保持輕量且宣告式。路由邏輯應寫在直觀的 Markdown 表格中,而非程式碼內。這樣能讓系統無需經過複雜除錯,就能隨時檢視與修改。

專責 Agent(Specialist Agents)

每個 Agent 都是 agents/ 資料夾下的獨立 Markdown 檔案。Claude 在路由任務時會載入對應的 Agent 檔案。

Agent 定義格式

# @dev - 軟體工程師

## 身份
你是一位資深軟體工程師,專門撰寫乾淨、經過測試且達生產環境標準的程式碼。
你偏好簡潔的解決方案;當需求模糊時,你會提出澄清問題。

## 記憶存取範圍
- 讀取 `data/projects/<current-project>.md` 以取得專案內容
- 讀取 `data/decisions/` 以參考架構決策紀錄
- 將執行日誌追加寫入至 `data/logs/<date>-@dev.md`

## 工具權限
- 專案根目錄下的完整檔案系統存取權限
- Git 操作權限(status, diff, commit, branch)
- 測試執行工具存取權
- `.claude/mcp.json` 中配置的 MCP 伺服器

## 行為約束
- 撰寫新功能時必須同步編寫測試
- 絕不直接 Commit 到 `main` 分支;必須使用 Feature 分支
- 優先修改現有檔案,避免無謂創建新檔案
- 儘量將函式長度控制在 50 行以內

多 Agent 協作模式

當任務橫跨多個 Agent 領域時,核心會依序或平行呼叫它們:

使用者:「幫我建立一個 Landing Page,並撰寫產品發布的 Blog 文章」

核心路由流程:
1. @dev - 「根據 [需求] 打造 Landing Page」
2. @writer - 「參考 Landing Page 文案,為 [產品] 撰寫發布 Blog 文章」
3. 核心整合兩者的輸出成果,產生統一的回覆內容

若需平行執行,可利用 Claude Code 的背景任務功能,或透過 Shell 腳本附帶特定 Agent 的 Context 來呼叫 Claude Code。

指令與日常工作流程(Commands and Daily Workflows)

斜線指令(Slash Commands)是位於 .claude/commands/ 內的 Markdown 檔案,用於定義可重複使用的自動化工作流程。

指令結構

# /daily-sync

執行晨報同步流程:

1. 讀取 `data/logs/last-sync.md` 以獲取脈絡
2. 檢查專案狀態:執行 `git status`、檢查待審 PR 及 CI 狀態
3. 檢視 `data/inbox/` 內待處理的新任務或決策事項
4. 整理出阻塞因素(Blockers)、優先事項與下一步行動摘要
5. 將晨報內容追加至 `data/logs/daily/<date>.md`

標準指令集

指令 用途
/daily-sync 晨報同步:狀態回報、阻塞因素、優先事項
/outreach 執行外聯流程(Email、LinkedIn 等)
/research <topic> 深度研究並追蹤引用來源
/apply-jobs 針對目標職缺客製化履歷與求職信
/analytics 拉取 Stripe、GitHub 或自訂資料源的數據
/interview-prep 生成面試單字卡或模擬面試問題
/decision <topic> 記錄決策過程(優缺點評估與最終方案)

啟用指令

將指令檔案放置於 .claude/commands/<command-name>.md,Claude Code 便會自動偵測。使用者即可透過 /<command-name> 直接呼叫。

持久化記憶(Persistent Memory)

記憶是以檔案形式儲存,無需 Vector DB、Redis 或 PostgreSQL。data/ 目錄下的 JSON 與 Markdown 檔案就是系統的資料庫。

記憶目錄結構

data/
├── daily-logs/         # 只增不刪的每日活動 Log
├── projects/           # 各專案上下文檔案
├── decisions/          # 架構與商業決策紀錄(ADR 格式)
├── inbox/              # 待分流的新任務或想法
├── contacts/           # 人脈、公司與互動紀錄
└── templates/          # 可重複使用的提示詞與格式範本

每日 Log 格式

# 2026-04-22 - 每日 Log

## 工作階段
- 09:00 - 階段 1:重構驗證模組 (@dev)
- 11:30 - 階段 2:起草投資人更新簡報 (@writer)

## 決策紀錄
- 從 JWT 切換為 Session Cookies(詳見 `data/decisions/2026-04-22-auth.md`)

## 阻塞因素
- 等待廠商提供 API Key(預計 2026-04-24 追蹤)

## 下一步行動
- [ ] 合併驗證模組重構 PR
- [ ] 寄送投資人更新草稿進行審閱

自動反思模式(Auto-Reflection Pattern)

在每個 Session 結束時,核心會追加一段反思紀錄:

## 反思 - 階段 3
- 成功經驗:平行執行 Agent 節省了 20 分鐘
- 改善空間:@researcher 遇到付費牆來源,需要調整來源權重排序
- 調整方案:在研究筆記中新增 `source-tier` 欄位(標示 A/B/C 可信度)

這能建立持續自我優化的回饋機制,無需修改任何系統程式碼即可隨時間漸進改善。

定時自動化(Scheduled Automation)

Agentic OS 任務是透過外部 Cron 系統來進行定時排程,而非依賴 Claude Code 內建的 Cron(因 Session 結束後即會失效)。

macOS: LaunchAgent

<!-- ~/Library/LaunchAgents/com.agentic.daily-sync.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" ...>
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.agentic.daily-sync</string>
    <key>ProgramArguments</key>
    <array>
        <string>/claude</string>
        <string>--cwd</string>
        <string>/path/to/project</string>
        <string>--command</string>
        <string>/daily-sync</string>
    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>8</integer>
        <key>Minute</key>
        <integer>0</integer>
    </dict>
    <key>StandardOutPath</key>
    <string>/tmp/agentic-daily-sync.log</string>
</dict>
</plist>

Linux: systemd Timer

# ~/.config/systemd/user/agentic-daily-sync.service
[Unit]
Description=Agentic OS Daily Sync

[Service]
Type=oneshot
ExecStart=/usr/local/bin/claude --cwd /path/to/project --command /daily-sync
# ~/.config/systemd/user/agentic-daily-sync.timer
[Unit]
Description=Run daily sync every morning

[Timer]
OnCalendar=*-*-* 8:00:00
Persistent=true

[Install]
WantedBy=timers.target

跨平台方案:pm2

# ecosystem.config.js
module.exports = {
  apps: [{
    name: 'agentic-daily-sync',
    script: 'claude',
    args: '--cwd /path/to/project --command /daily-sync',
    cron_restart: '0 8 * * *',
    autorestart: false
  }]
};

資料層(Data Layer)

檔案系統即為你的資料層。結構化資料請使用 JSON,敘事性內容則使用 Markdown。

結構化狀態使用 JSON

// data/projects/website-v2.json
{
  "name": "Website v2",
  "status": "in-progress",
  "milestone": "beta-launch",
  "agents_involved": ["@dev", "@writer"],
  "files": {
    "spec": "docs/website-v2-spec.md",
    "design": "designs/website-v2.fig"
  },
  "metrics": {
    "commits": 47,
    "last_session": "2026-04-22T11:30:00Z"
  }
}

敘事性內容使用 Markdown

凡需供人類閱讀的內容,如決策、Log、研究筆記、聯絡人紀錄等,一律使用 Markdown。

Schema 演進

切勿重命名既有欄位。應採新增欄位並將舊欄位標記為廢棄(Deprecated):

{
  "name": "Website v2",
  "status": "in-progress",
  "milestone": "beta-launch",
  "_deprecated_priority": "high",
  "priority_v2": { "level": "high", "rationale": "Blocks investor demo" }
}

這樣可在無需撰寫資料轉移(Migration)腳本的前提下,確保歷史資料依舊可讀。

反模式(Anti-Patterns)

單一巨型 Agent(Monolithic Single Agent)

# 錯誤示範 - 由單一 Agent 包辦所有工作
你是一位全端開發者、文案撰寫員、研究員兼 DevOps 工程師。

應拆解為多個專責 Agent,由核心統一處理路由分派。

無狀態 Session(Stateless Sessions)

# 錯誤示範 - Session 間缺乏記憶傳承
每次開啟 Claude Code 都從頭開始。

務必在 Session 啟動時讀取 data/,並於 Session 結束時將變更寫回。

硬編碼金鑰(Hardcoded Credentials)

# 錯誤示範 - 在 Agent 檔案或 CLAUDE.md 中明文寫入 API Key
你的 OpenAI API key 是 sk-xxxxxxxx

應使用環境變數或經由腳本載入的 .env 檔案,由 Agent 透過 process.env.API_KEY 引用。

簡單狀態使用外部資料庫

# 錯誤示範 - 單人使用的 Agentic OS 卻引進 PostgreSQL

在尚未出現多使用者共用或 GB 級資料規模前,請堅持使用 JSON/Markdown 檔案。

過度設計路由邏輯

# 錯誤示範 - 將路由邏輯寫死在程式碼中而非 Markdown 表格
if (intent.includes('deploy')) { agent = opsAgent; }

請保持路由邏輯以宣告方式呈現在 CLAUDE.md 的 Markdown 表格中,易於檢視、編輯與除錯。

最佳實踐(Best Practices)

  • [ ] CLAUDE.md 控制在 200 行以內,確保能完整放入 Context Window
  • [ ] 每個 Agent 檔案控制在 100 行以內,且專注於單一領域
  • [ ] data/ 中敏感的 Log 設定為 Git 忽略,決策與規格文件則納入 Git 追蹤
  • [ ] 指令命名採用動詞形式:使用 /daily-sync 而非 /run-daily-sync
  • [ ] Log 採取只增不刪(Append-only)原則;切勿修改過往的每日 Log
  • [ ] 每個 Agent 均應包含 記憶存取範圍(Memory Scope)區塊,明確定義其可讀取的檔案
  • [ ] 每次 Session 結束時均會寫入反思紀錄
  • [ ] 定時任務使用外部 Cron 機制(LaunchAgent, systemd, pm2),而非 Claude Code 的 Session Cron
  • [ ]