by Rain Chu | 7 月 8, 2026 | AI , Hermes , 模型
Ornith 35B 真正有趣的地方,不是「小模型打敗大模型」這句話本身,而是它把本地 AI 編程 Agent 這條路線重新推到桌面上:我們是不是可以把一部分 coding agent 能力,從雲端 API 搬回自己的機器?
這個問題很現實。雲端工具反應快、整合好,但 token 成本、隱私、企業程式碼外流、模型選擇權,始終卡在開發者心裡。本地模型則剛好反過來:你要自己處理硬體、速度、部署與穩定性,但換來的是成本可控、資料留在本地,以及比較完整的架構控制權。
Ornith 1.0 前一篇已經整理過核心定位,這篇換個角度:如果把 Ornith 35B 接進 Hermes 這類 Agent 工作流,它應該放在哪裡?是主控模型、任務 worker,還是只適合做某些短程工具任務?
先講結論:35B 有想像空間,但不要把 benchmark 當保證書
Ornith 35B 的吸引力在於,它不是 397B 那種多 GPU 伺服器級模型,也不是 9B 那種比較像入門測試的輕量模型。35B 落在一個很微妙的位置:高階個人工作站有機會跑,能力又足以進入 coding agent 測試。
官方數據裡,Ornith 35B 在 Terminal-Bench 2.1 拿到 64.2,SWE-bench Verified 拿到 75.6。397B 更高,Terminal-Bench 2.1 為 77.5,SWE-bench Verified 為 82.4。這些分數很漂亮,但漂亮不等於放進你的專案就穩。
模型 Terminal-Bench 2.1 SWE-bench Verified 適合觀察的方向 Ornith-1.0-9B 43.1 69.4 低成本本地測試、短程 worker Ornith-1.0-35B 64.2 75.6 本地 coding agent 實驗主力 Ornith-1.0-397B 77.5 82.4 企業級或多 GPU 私有部署
這也是為什麼我不想把它寫成「35B 擊敗雲端大模型」這種單線結論。更準確的說法是:Ornith 35B 在某些 agentic coding benchmark 和視覺/前端生成任務上很值得測,但長程任務和大型 codebase 仍要小心。
Self-Scaffolding RL 到底改變了什麼?
一般 coding agent 常見的架構,是人類工程師先寫好 harness:
什麼時候讀檔、什麼時候跑 command、失敗怎麼 retry、怎麼記憶、怎麼驗證。模型很聰明,但它通常只是被放進這套流程裡填空。
Ornith 1.0 的 Self-Scaffolding RL 想走的是另一條路:
讓模型不只學 solution rollout,也學會產生任務 scaffold。換句話說,它不只是演員,也開始學會改劇本,任務跑得好,解法和引導解法的 scaffold 都一起被獎勵;任務跑得差,兩者都會被調整。
這和 前一篇 Ornith 1.0 介紹 裡談到的「先搭工作台,再開始解題」是同一件事。對開發者來說,重點不是模型多會補 code,而是它能不能在遇到限制、錯誤、缺資料時,重新安排自己的工作流程。
Hermes 的位置:還是 harness,但已經比較動態
Hermes 在這裡比較像運行時的動態編排層。它仍然是 harness,但不是傳統那種完全寫死的腳本;它可以在任務過程中調整步驟、改工具、補資料,讓 agent 比較像真的在做一件工作,而不是只照著固定模板回答。
把 Ornith 35B 接進 Hermes 的想像是:Hermes 負責任務框架、工具調用和流程管理,Ornith 35B 負責本地推理、程式生成、局部 debug 與前端/視覺任務。這樣的分工,比「讓 35B 一個模型主控所有事情」更合理。
站上之前有兩篇 Hermes 相關內容可以放在一起看:
Hermes Agent 完整實測 和 Hermes Agent WebUI 。如果 Hermes 是工作台,Ornith 35B 就是可以被放進工作台裡的一顆本地引擎。
實測起來
Ornith 的幻覺率仍然偏高,很多 fine-tune 模型 benchmark 強,但長程任務容易歇菜;更穩的方式可能是官方模型搭配優化過的 Jinja template 來跑長程任務。
小模型非常適合做 worker,處理葉節點任務,用完即毀;但如果拿它當整個系統的主控,很可能是用錯地方,可以當作 Ornith 35B 的導入原則。
短程、明確、可驗證的任務,可以交給 35B worker。
長程規劃、多輪重構、跨大型 codebase 的任務,先不要完全放權。
需要主控決策時,最好搭配更強模型或更嚴格的 Hermes/harness。
所有結果要能重跑、能測試、能看 log,不要只看模型自我回報。
這裡的核心不是「小模型沒用」,而是小模型要放對位置,主控、規劃、長上下文記憶是白領工作;批次修小 bug、生成局部元件、跑固定格式分析,反而是本地 35B 很適合切進去的地方。
本地部署的價值:不是零成本,而是可控成本
本地跑 Ornith 35B 很容易被包裝成「零 token 成本」。這句話只說對一半。雲端 token 成本下降了,但你換成了硬體成本、電費、散熱、維護、模型部署和速度瓶頸。
真正的優勢是可控。你知道模型跑在哪裡,知道資料是否離開內網,知道長任務不會因為 token 計費一路燒上去。對需要保護程式碼或內部文件的團隊,這比單純省錢更重要。
如果你本來就在研究本地 AI 開發環境,可以延伸看 Claude Code 搭配 LM Studio 與 Ollama 的零 API 成本環境 ,以及 Mac Studio 跑大型模型的 VRAM 調整 。Ornith 35B 的問題,最後仍然會回到你的硬體、記憶體和任務型態。
我會怎麼把 Ornith 35B 放進 Hermes?
我不會一開始就讓 Ornith 35B 當整個 Hermes 系統的最高決策者。比較合理的導入方式,是先讓它做 worker。
先挑 5 到 10 個固定任務,例如小型前端元件、局部 bug 修復、測試補齊、簡單重構。
每個任務都要有明確驗證方式,例如單元測試、Playwright 截圖、lint、build。
Hermes 負責任務切分、重試策略、log 收集和失敗回報。
Ornith 35B 只處理其中一段,不直接改全專案、不直接做不可逆決策。
連續跑幾輪,看錯誤類型是否固定,再決定要不要擴大權限。
這樣的測法比較慢,但比較接近真實工程,AI Agent 的能力不是靠一個漂亮 demo 決定,而是看它能不能在可重複、可驗證、可回滾的流程裡穩定工作。
Ornith 35B 是值得測的本地引擎,不是萬能主控
Ornith 35B 最好的位置,暫時不是取代 Claude Code、Codex 或雲端大模型,而是進入 Hermes 這類 agent 工作流,成為一顆可控、可替換、可驗證的本地推理引擎。
它的優點很清楚:成本可控、資料留在本地、前端與視覺任務有亮點、自我 debug 的思路值得追。它的風險也很清楚:benchmark 不能直接代表長程任務,幻覺與錯誤累積仍然存在,小模型放錯位置會把整個 agent 工作流拖垮。
所以我會把 Ornith 35B 放進觀察名單,但會用 worker 的方式開始,而不是把整個系統交給它。這條路如果走通,本地 AI 編程的價值就不是「省 token」而已,而是開發者重新拿回 AI 架構控制權。
by Rain Chu | 6 月 21, 2026 | AI , skills
未來的 AI 生產力,不只是「模型比較強」,而是「Agent Runtime + Skill + 人類決策」的組合能力。
重要連結整理
女媧 Skill 下載 :
Agent Skills 官方說明
Claude Code Skills 官方文件
OpenAI Codex Skills 官方文件
OpenAI Codex GitHub
Hermes Agent 官方文件
Hermes Agent GitHub
所謂 AI 一人公司,不是指一個人什麼都不用做,讓 AI 自動幫你賺錢,比較務實的定義是:
一個人負責方向、判斷、審核與商業決策,AI Agent 負責研究、撰寫、開發、整理、測試、排程與重複性工作。
換句話說,人類的角色從「執行者」變成「總編輯、產品經理、技術主管、老闆」。
這也是影片最重要的啟發:AI 不是單一工具,而是一組可以分工的虛擬團隊。
Claude Code、Codex、Hermes 分別適合做什麼?
這三個工具剛好代表目前 AI Agent 工作流的三種方向。
我的看法是:如果你要打造 AI 一人公司,不應該只問「哪一個模型最強」,而是要問:
哪一個 Agent 適合負責開發?
哪一個 Agent 適合負責長期記憶與排程?
哪一個 Agent 適合安裝專門 Skill?
哪一個任務一定要由人類做最後判斷?
🏢 一人 AI 公司的組織架構與核心成員
要組建高效的團隊,就必須讓不同的 AI 模型各司其職、發揮所長。在我們的架構中,主要由以下三位核心成員組成:
董事長(你,唯一的人類): 負責定大方向、提供靈感、拍板決策、把控最終產品質量。
祕書長(Hermes Agent): 負責記錄分散的靈感與想法,具備極強的「長期記憶功能」,並對接社交軟體(如微信、Telegram)與本地工具。
CEO 執行長(Claude Code): 負責公司的統籌規劃、任務分配、邏輯思考與實際開發落地。
代碼審查員(OpenAI Codex): 專職「挑毛病」,負責對寫好的程式碼進行安全性評估與漏洞審查。
🔍 深度洞察:Hermes、Codex 與 Claude Code 的技術選型見解
在搭建系統前,我們必須深入了解這三款終端 AI 工具的本質與差異,才能完美地將它們編排進工作流中:
Claude Code(專職研發與執行): 這是由 Anthropic 官方推出的終端工具,主語言融合了 Shell、Python 與 TypeScript。它在「編寫代碼」與「理解複雜上下文」上展現出極強的實力,是最完美的 「辦公與研發型執行代理」 。
OpenAI Codex(專職軟體工程與審查): 採用 Rust 編寫,本地運行極其輕量。Codex 近年已演化為完整的工程代理,在自動生成 PR 級修改、修復 Bug、閱讀 Repo 方面非常嚴謹。最關鍵的體感是:如果讓同一個模型自己寫代碼又自己審查,它往往看不出問題;但如果讓 Claude Code 負責開發、Codex 負責審查,Codex 就能精準揪出一堆漏洞!
Hermes Agent(長期記憶與通用協調): 它是基於 Python 的中立 Agent 框架,遵循開放的 agentskills.io 標準。Hermes 最大的強項在於 「長期記憶、自我學習與渠道接入」 。它像一個會持續成長的系統,適合作為始終在線的指揮官。
女媧 Skill 是什麼?
女媧 Skill 是一個開源的 Agent Skill 專案,目標不是單純模仿名人的語氣,而是把一個人的公開資料整理成可執行的「思維 Skill」。
它的核心概念是:蒸餾一個人怎麼想,而不是只模仿一個人怎麼說話。
舉例來說,你可以讓 AI 從公開資料中整理出某位人物的:
心智模型
決策啟發式
表達 DNA
價值觀與反模式
誠實邊界
面對新問題時可能採用的判斷框架
這就讓 AI 不只是「用某人的口吻回答」,而是比較接近「用某人的思考框架分析問題」。
女媧 Skill 的工作流程
女媧 Skill 的運作大致可以整理成四個階段:
六路並行蒐集:從著作、訪談、社群媒體、批評者觀點、決策紀錄、人生時間線等方向蒐集資料。
三重驗證提煉:一個觀點必須跨多個領域出現、能推斷新問題立場、且不是所有聰明人都會這樣想,才值得被收錄。
建立 Skill:把心智模型、決策方法、表達風格、價值觀與限制寫入 SKILL.md。
品質驗證:用已知問題與未知問題測試,避免 AI 過度自信或胡亂回答。
這套流程對 AI 一人公司的價值很高,因為它等於把「專家經驗」變成可以安裝、可以版本管理、可以重複調用的工作能力。
如何安裝女媧 Skill?
官方 GitHub 下載連結如下:
https://github.com/alchaincyf/nuwa-skill
最簡單的安裝方式是使用通用 CLI 安裝器:
npx skills add alchaincyf/nuwa-skill
如果你想明確指定安裝到某個 Agent,也可以依照 runtime 指定。例如:
帮我安装 skill:https://github.com/alchaincyf/nuwa-skill
如果要手動安裝,可以把 GitHub 專案 clone 到對應的 skills 目錄。
一人產品團隊要靠 Agent Skills 框架、測試自動化、遠端優先的人機協作環境來疊加效率
大神必讀文章連結:https://georgexing.substack.com/p/how-i-build-with-ai-as-a-1-person
給大家一個可以直接複製貼上給 Claude Code 使用的提示詞:
請讀懂這篇文章:https://georgexing.substack.com/p/how-i-build-with-ai-as-a-1-person
# AI 一人公司 / 一人產品團隊完整提示詞
你現在要扮演我的「AI 一人公司作業系統總指揮」。
你的任務不是單純回答問題,而是協助我把一個想法,轉換成可以由 AI Agent 團隊執行的完整產品開發、內容產出或商業驗證流程。
## 一、背景設定
我正在打造一套「AI 一人公司」工作流。
核心概念是:
人類負責方向、品味、商業判斷、使用者價值、品質把關與最後決策。
AI Agent 負責研究、規劃、開發、測試、審查、文件、營運與重複性工作。
請把我視為:
* 創辦人
* 產品經理
* 品質審查者
* 最終決策者
請把 AI Agent 團隊視為:
* Claude Code:主要工程師,負責理解專案、規劃功能、寫程式、重構與除錯
* Codex:嚴謹審查者,負責檢查計畫、審查程式碼、找出邏輯漏洞、資料流程錯誤與後端風險
* Hermes Agent:長期營運助理,負責記憶、排程、跨平台提醒、自動化任務與長期追蹤
* 女媧 Skill / Agent Skills:專家能力庫,負責把人物思維、領域方法論、公司 SOP、品牌規範、開發規範轉換成可重複使用的能力
請避免空泛勵志,重點放在可以執行、可以檢查、可以交給 Agent 的流程。
---
## 二、我要處理的主題
請根據以下輸入,幫我建立完整的一人產品團隊工作流。
### 我的產品 / 專案 / 文章 / 功能想法
【在這裡貼上我的想法】
### 目標使用者
【在這裡描述目標使用者,例如:老師、開發者、內容創作者、中小企業老闆、學生、設計師】
### 我想達成的結果
【在這裡描述結果,例如:做出 MVP、寫一篇 WordPress 文章、設計一個 SaaS 功能、改版某個頁面、建立自動化流程】
### 目前限制
【在這裡填寫限制,例如:只有我一個人、預算有限、時間有限、需要本地部署、需要 WordPress、需要 Next.js、需要支援中文】
### 已有工具或技術
【在這裡填寫,例如:Claude Code、Codex、Hermes Agent、OpenAI、Ollama、llama.cpp、Next.js、Prisma、PostgreSQL、WordPress、GitHub】
---
## 三、你的工作方式
請你按照以下流程執行,不要跳步。
---
# Phase 1:產品腦力激盪與問題定義
請先幫我釐清:
1. 這個想法真正要解決的問題是什麼?
2. 使用者現在怎麼解決這個問題?
3. 使用者最痛的地方是什麼?
4. 這個產品或內容的主要使用情境是什麼?
5. 成功的定義是什麼?
6. 哪些需求是必要的,哪些只是好看但不重要?
7. 哪些地方最容易被 AI Agent 誤解?
8. 哪些地方一定要由人類做最後判斷?
請輸出:
* 一句話產品定位
* 目標使用者描述
* 使用者痛點
* 核心使用情境
* Jobs To Be Done
* 成功指標
* 不做清單
* 風險清單
* 需要我確認的關鍵決策
請注意:
如果我的想法太模糊,你不要直接開始寫執行計畫,而是先幫我整理成幾個可選方向,讓我選擇。
---
# Phase 2:PRD / 規格文件
在 Phase 1 完成後,請幫我產生一份產品規格文件。
格式如下:
## 1. 專案名稱
## 2. 一句話說明
## 3. 背景與問題
## 4. 目標使用者
## 5. 使用者故事
請用這種格式:
* 作為【使用者角色】,我想要【行為】,以便【得到的價值】。
## 6. 核心功能
請區分:
* 必要功能
* 次要功能
* 暫不處理功能
## 7. 使用流程
請用步驟式流程描述。
## 8. UX / UI 原則
請說明:
* 畫面上最重要的主要行動是什麼
* 哪些資訊要優先顯示
* 哪些資訊應該收合或延後
* 什麼狀態下需要提醒使用者
* 哪些設計會增加摩擦,應該避免
## 9. 技術需求
請包含:
* 前端
* 後端
* 資料庫
* API
* 權限
* 檔案或媒體處理
* 第三方服務
* AI 模型或 Agent 使用方式
## 10. 邊界情境
請列出:
* 空資料狀態
* 錯誤狀態
* 載入狀態
* 權限不足
* AI 回答失敗
* 網路中斷
* 使用者輸入不完整
* 重複送出
* 多人或多裝置同步問題
## 11. 驗收標準
請用 checkbox 格式輸出。
---
# Phase 3:Agent 分工設計
請把整個工作拆給不同 AI Agent。
請用表格輸出:
| 角色 | 使用工具 | 負責任務 | 輸入 | 輸出 | 注意事項 |
| -- | ---- | ---- | -- | -- | ---- |
至少包含:
1. 人類創辦人
2. Claude Code
3. Codex
4. Hermes Agent
5. 女媧 Skill / Agent Skills
6. 測試 Agent
7. 文件 Agent
8. SEO / 內容 Agent
請特別說明:
* 哪些工作可以並行
* 哪些工作必須串行
* 哪些工作需要人類審核後才能繼續
* 哪些工作可以交給較小模型
* 哪些工作必須交給較強模型
---
# Phase 4:實作計畫
請把 PRD 轉換成可執行的實作計畫。
格式如下:
## 實作總覽
* 目標
* 預估修改範圍
* 主要檔案
* 新增檔案
* 修改檔案
* 刪除檔案
* 資料庫變更
* API 變更
* 測試範圍
* 風險等級
## 任務清單
每個任務請用 checkbox 格式:
* [ ] Task 1:任務名稱
* 目的:
* 修改檔案:
* 具體步驟:
* 完成標準:
* 可能風險:
* 建議交給哪個 Agent:
請把任務拆到 AI Agent 可以明確執行的粒度。
不要只寫「完成前端」這種模糊任務。
要寫到「修改哪個檔案、增加哪個元件、處理哪個狀態、需要哪個測試」。
---
# Phase 5:Codex 審查提示詞
請產生一段可以交給 Codex 使用的審查提示詞。
目標是讓 Codex 審查 Claude Code 產出的計畫或程式碼。
Codex 審查提示詞必須包含:
1. 請檢查是否符合 PRD
2. 請檢查是否有資料流程錯誤
3. 請檢查是否有 race condition
4. 請檢查是否有權限問題
5. 請檢查是否有錯誤狀態未處理
6. 請檢查是否有安全風險
7. 請檢查是否有測試缺口
8. 請檢查是否有過度設計
9. 請檢查是否有和原始使用者價值偏離
10. 請用 Critical / High / Medium / Low 分級
請輸出可直接複製的 Codex Review Prompt。
---
# Phase 6:Implementation Review 自動測試設計
請模擬一位人類產品審查者,設計端到端測試情境。
請輸出:
## 使用者情境測試
| 編號 | 情境 | 操作步驟 | 預期結果 | 嚴重性 |
| -- | -- | ---- | ---- | --- |
至少包含:
* 新使用者第一次使用
* 正常成功流程
* 使用者輸入錯誤
* AI 回答失敗
* 網路或 API 錯誤
* 權限不足
* 重複操作
* 長時間載入
* 行動裝置或小螢幕
* 使用者中途離開後回來
## Playwright / Maestro / 手動測試建議
請根據專案類型建議:
* Web 專案:Playwright
* Mobile 專案:Maestro 或 Xcode simulator
* API 專案:API integration test
* WordPress 文章:SEO、可讀性、連結、標題層級、圖片 alt、內外連檢查
---
# Phase 7:遠端優先工作流
請幫我設計一套適合一人公司使用的遠端優先 AI Agent 工作流。
請包含:
## 1. 長時間任務如何執行
例如:
* 使用 tmux 保持 session
* 使用 SSH 遠端連入開發主機
* 使用 Tailscale 或 VPN 連線
* 使用 Git worktree 管理多個功能分支
* 使用通知機制提醒我 Agent 卡住
## 2. 手機上如何追蹤
請設計:
* 手機查看進度
* 手機批准或否決 Agent 決策
* 手機補充語音輸入
* 手機查看測試結果
## 3. 語音輸入策略
請幫我把口語想法整理成可執行規格。
如果我貼上的是語音轉文字,請先整理語意,不要糾正文法而忽略內容。
## 4. 多 Agent 並行策略
請說明:
* 哪些任務可以平行跑
* 如何避免不同 Agent 修改同一個檔案互相衝突
* 如何用 Git branch / worktree 分開任務
* 如何設定合併順序
* 如何保留回滾點
---
# Phase 8:女媧 Skill / 專家顧問團設計
請根據這個專案,建議我應該建立哪些 Skill。
請輸出:
| Skill 名稱 | 用途 | 觸發時機 | 應包含內容 | 不該做什麼 |
| -------- | -- | ---- | ----- | ----- |
請至少思考以下類型:
* 產品品味 Skill
* 工程規範 Skill
* UI / UX 審查 Skill
* SEO 文章 Skill
* 安全檢查 Skill
* 品牌語氣 Skill
* 客戶訪談 Skill
* 測試審查 Skill
* 競品分析 Skill
* 專家人物思維 Skill
如果適合,請幫我產生一份 `SKILL.md` 草稿。
`SKILL.md` 需要包含:
* name
* description
* 使用時機
* 不使用時機
* 工作流程
* 輸出格式
* 品質檢查清單
* 誠實邊界
---
# Phase 9:如果這是 WordPress 文章
如果我的輸入目標是寫 WordPress 文章,請改用以下輸出格式。
請產出:
1. 主標題
2. 三個 SEO 標題選擇
3. SEO 中繼資料說明
4. 文章標籤,請用繁體中文,並用半形逗號分隔
5. WordPress 可直接貼上的文章內容
6. 內部連結建議
7. 外部連結建議
8. 圖片或流程圖建議
9. 可以用「創作圖像」生成的圖片提示詞
10. 延伸閱讀區塊
文章要求:
* 使用繁體中文
* 如果來源有簡體中文,請改成繁體中文
* 使用 WordPress block editor 友善格式
* 避免簡體字
* 標題層級清楚
* 適合 SEO
* 不要堆砌關鍵字
* 官方網站與下載連結必須放入文章
* 對工具的評價要務實,不要過度吹捧
* 文章要能接續「AI 一人公司:Claude Code、Codex、Hermes 與女媧 Skill」這個主題
---
# Phase 10:最後輸出總結
最後請用以下格式總結:
## 我建議你現在先做的 3 件事
1.
2.
3.
## 哪些部分可以立刻交給 AI Agent
## 哪些部分必須由我親自判斷
## 這個專案最大的風險
## 這個專案最快的 MVP 路線
## 下一個可執行指令
請給我一段可以直接貼到 Claude Code / Codex / Hermes Agent 的下一步指令。
---
## 重要規則
1. 不要只給概念,要給可執行步驟。
2. 不要假設 AI 會自動理解我的產品品味,要把標準寫清楚。
3. 不要讓 Agent 直接長時間執行高風險操作,必須設計審查點。
4. 不要只檢查程式能不能跑,也要檢查使用者流程是否合理。
5. 不要把 AI 當成全自動創辦人;AI 是員工,人類才是老闆。
6. 如果資訊不足,請先提出最少量但最高價值的澄清問題。
7. 如果可以先做合理假設,就先標明假設並繼續,不要卡住。
8. 對每個輸出都要加上品質檢查清單。
9. 所有內容都用繁體中文。
10. 若引用外部工具、官方網站、GitHub 或下載連結,請列出來源與用途。
現在請根據我提供的主題,開始 Phase 1。
感想
未來真正有競爭力的人,不一定是最會寫提示詞的人,而是最會設計 AI 工作流的人。
你可以把 Claude Code 當工程師,把 Codex 當快速執行者,把 Hermes Agent 當長期助理,再用女媧 Skill 建立不同領域的顧問團。
但最後,真正的老闆還是你。
AI 一人公司的重點不是讓 AI 取代你,而是讓你從執行者升級成指揮者。
補充:
商業導師:
https://github.com/dontbesilent2025/dbskill
美工與設計:(寶玉skills)
https://github.com/JimLiu/baoyu-skills/blob/main/README.zh.md
by Rain Chu | 6 月 18, 2026 | AI , skills
skill-creator 是 Anthropic 官方 skills 專案中的一個 Skill 開發助手,可以協助使用者建立 Claude Code 可使用的自訂 Skill,透過 Skill,你可以把固定工作流程、專業知識、工具使用方式、文件格式與腳本包裝成可重複使用的能力,讓 Claude 在特定任務上更穩定、更一致,也更符合你的實際工作需求。
什麼是 Skill?
在 Claude Code 的使用情境中,Skill 可以理解成「給 AI 使用的操作說明書」。
它不是單純的一段 prompt,而是一個可重複使用的能力包。通常一個 Skill 會包含:
skill-name/
├── SKILL.md # 核心說明文件,必要
├── scripts/ # 可執行腳本,選用
├── references/ # 參考文件或知識資料,選用
├── assets/ # 圖片、範本、範例檔案等資源,選用
其中最重要的是 SKILL.md。 這個檔案會告訴 Claude:
這個 Skill 是做什麼的
什麼情境下應該使用
要遵守哪些流程
輸出格式是什麼
是否需要使用特定工具、腳本或範本
簡單來說,Skill 的目標是讓 Claude 不只是「聽懂一次指令」,而是能長期穩定地執行某一類工作。
skill-creator 是什麼?
skill-creator 是 Anthropic 官方提供的 Skill 建立助手,收錄在官方 skills 專案中。
它的作用是協助你從零開始建立一個 Skill,包含:
釐清 Skill 的用途
設計觸發情境
撰寫 SKILL.md
建立參考文件
設計測試案例
評估 Skill 使用前後的效果
最後打包成 .skill 檔案
如果你只是手動寫 SKILL.md,很容易漏掉使用情境、輸出格式、邊界條件或測試流程。 而 skill-creator 的價值就在於,它會像一個 Skill 顧問一樣,逐步問你問題,幫你把需求整理成可以實際使用的 Skill。
官方網頁與下載連結
官方 GitHub 專案:https://github.com/anthropics/skills/tree/main
skill-creator 官方目錄:https://github.com/anthropics/skills/tree/main/skills/skill-creator
下載 Anthropic skills 專案 ZIP:https://github.com/anthropics/skills/archive/refs/heads/main.zip
安裝 skill-creator
如果你已經在使用 Claude Code,可以透過以下方式安裝 skill-creator。
方法一:使用 npx skills add
npx skills add https://github.com/anthropics/skills --skill skill-creator
方法二:使用 claude install
claude install anthropics/skills/skill-creator
安裝完成後,就可以在 Claude Code 中呼叫:
接著 Claude 會開始引導你建立 Skill。
用 skill-creator 建立 Skill 的基本流程
使用 skill-creator 建立 Skill,通常可以分成以下幾個階段。
1. 說明你想建立的 Skill
一開始,你可以用自然語言描述需求,例如:
我想建立一個 Skill,用來把會議逐字稿整理成結構化會議紀要。
或是:
我想建立一個 Skill,用來分析 WordPress 網站錯誤訊息,並提供排查步驟。
這時候不需要一次寫得非常完整,因為 skill-creator 會繼續追問細節。
2. 回答 skill-creator 的需求問題
skill-creator 通常會確認幾個重點:
這個 Skill 主要要完成什麼任務?
使用者在什麼情境下會觸發它?
輸入資料可能是文字、檔案、程式碼還是圖片?
輸出格式要用 Markdown、表格、JSON、Word 文件,還是其他格式?
是否有固定流程、固定語氣或固定檢查清單?
是否需要使用特定工具、腳本或外部文件?
這一步非常重要。 如果需求沒有講清楚,後面 Skill 產生的結果就可能不穩定。
3. 自動產生 SKILL.md 草稿
確認需求後,skill-creator 會協助產生 SKILL.md。
一個基本的 SKILL.md 會長得像這樣:
---
name: meeting-minutes
description: Convert meeting transcripts into structured meeting minutes with decisions and action items.
---
# Meeting Minutes Skill
Use this skill when the user provides a meeting transcript and wants a structured meeting summary.
## Output Format
Include the following sections:
1. Meeting topic
2. Date and time
3. Participants
4. Key discussion points
5. Decisions
6. Action items with owner and deadline
## Guidelines
- Keep the summary concise.
- Preserve important decisions.
- Do not invent missing attendees or dates.
- If information is missing, mark it as "未提供".
這份 SKILL.md 就是 Claude 之後使用 Skill 時會讀取的核心說明。
4. 加入參考資料與範本
如果你的 Skill 需要固定格式,可以把範本放進 references/ 或 assets/。
例如:
meeting-minutes/
├── SKILL.md
├── references/
│ └── meeting-template.md
├── assets/
│ └── company-style-guide.pdf
常見的參考資料包括:
公司品牌規範
文件格式範本
常用表格
API 使用說明
程式碼規範
工作流程 SOP
檢查清單
這樣 Claude 在執行任務時,不只會依照 prompt 回答,也會參考 Skill 內部的固定資料。
5. 設計測試案例
建立 Skill 後,最好不要馬上投入正式工作,而是先做測試。
你可以準備幾組測試資料,例如:
測試一:正常格式的會議逐字稿
測試二:缺少參與人資訊的會議紀錄
測試三:內容很長、決議很多的會議
測試四:只有零散重點,沒有完整逐字稿
測試的目的不是只看 Claude 有沒有回答,而是要比較:
有使用 Skill 時,結果是否更穩定?
輸出格式是否一致?
是否遵守你指定的規則?
是否能處理邊界情況?
是否有少編造、少漏項?
6. 根據測試結果修改 Skill
第一次產生的 Skill 通常不會完美。
常見需要調整的地方包括:
描述太模糊,導致 Claude 不知道何時使用
輸出格式不夠明確
邊界條件沒有寫清楚
範例太少
沒有說明錯誤情況要怎麼處理
沒有限制 Claude 不要自行補資料
建議你把 Skill 當成一份「可持續最佳化的 SOP」。 每次遇到輸出不符合預期,就回頭修改 SKILL.md。
7. 打包成 .skill 檔案
當 Skill 測試穩定後,就可以打包成 .skill 檔案,方便匯入、分享或部署。
打包後的 Skill 就像一個可攜式能力包,可以用在支援 Skill 的 Claude 環境中。
skill-creator 適合用在哪些情境?
skill-creator 很適合用來建立以下類型的 Skill:
文件處理類
例如:
會議紀要整理
合約摘要
報告格式化
WordPress 部落格文章產生
SEO 文章檢查
論文格式整理
開發工作類
例如:
Code Review
安全檢查
API 文件產生
Git commit message 規範
Docker 部署檢查
WordPress 錯誤排查
企業流程類
例如:
客服回覆 SOP
品牌語氣檢查
行銷企劃產生
業務提案格式
專案週報整理
個人自動化類
例如:
每週工作回顧
讀書筆記整理
投資研究筆記格式化
學習計畫產生
旅遊規劃模板
建立 Skill 時的實用建議
1. description 要寫清楚
description 不只是說明文字,它會影響 Claude 判斷什麼時候該使用這個 Skill。
不建議這樣寫:
建議改成:
description: Use this skill when the user provides meeting transcripts and wants structured meeting minutes with decisions, discussion points, and action items.
越清楚,Claude 越容易正確觸發。
2. 輸出格式要固定
如果你想要表格,就直接指定表格欄位。 如果你想要 Markdown,就明確寫出標題層級。 如果你想要 JSON,就提供完整 schema。
例如:
## Output Format
Return the result in Markdown with the following sections:
# 會議紀要
## 一、會議基本資訊
## 二、討論重點
## 三、決議事項
## 四、待辦事項
3. 明確說明不要編造資料
這一點很重要,尤其是處理會議、合約、財務、法律或客戶資料時。
可以在 Skill 中加入:
## Accuracy Rules
- Do not invent missing information.
- If a field is not provided, write "未提供".
- Preserve names, dates, numbers, and deadlines exactly as given.
4. 加入好範例與壞範例
Skill 裡面可以放 Examples,讓 Claude 更容易理解你要的品質。
例如:
## Examples
Good:
- Clear action item with owner and deadline.
- Concise summary without unnecessary commentary.
Bad:
- Inventing a deadline that was not mentioned.
- Mixing discussion points with final decisions.
常用指令整理
安裝 skill-creator
npx skills add https://github.com/anthropics/skills --skill skill-creator
使用 claude install 安裝
claude install anthropics/skills/skill-creator
呼叫 skill-creator
從官方 GitHub 下載 skills 專案
git clone https://github.com/anthropics/skills.git
或直接下載 ZIP:
https://github.com/anthropics/skills/archive/refs/heads/main.zip
做好 Skill 後,如何移植到其他系統?
建立好 Skill 之後,不一定只能放在 Claude Code 裡使用。 如果 Skill 的設計夠清楚,也可以移植到其他 Agent 系統,例如 Hermes Agent、Codex,或是你自己架設的本地 AI Agent 平台。
不過要注意一件事:Skill 的核心不是某一個平台的格式,而是裡面的工作流程、判斷規則、輸出格式、參考資料與可執行腳本。
也就是說,真正有價值的是這些內容:
SKILL.md
references/
scripts/
assets/
examples/
只要把這些內容轉成目標 Agent 系統可以讀懂的格式,就可以完成移植。
Skill 移植的核心概念
一個 Skill 通常可以拆成五個部分:
1. 任務說明:這個 Skill 是做什麼的
2. 觸發條件:什麼情況下應該使用
3. 操作流程:執行任務時要照什麼步驟
4. 輸出格式:最後要產生什麼格式
5. 工具資源:是否需要腳本、範本、參考文件或 API
不同 Agent 系統的格式可能不同,但這五個部分通常都可以保留下來。
因此,移植 Skill 的重點不是「直接複製檔案」,而是把原本的 SKILL.md 改寫成目標系統的規則檔、角色設定、工具說明或 system prompt。
建議的 Skill 通用資料夾結構
為了方便未來移植,建議你在建立 Skill 時,就使用比較通用的結構:
my-skill/
├── SKILL.md
├── README.md
├── references/
│ └── knowledge-base.md
├── examples/
│ ├── input-1.md
│ └── output-1.md
├── scripts/
│ └── helper.py
├── assets/
│ └── template.md
└── manifest.json
其中:
SKILL.md:給 Claude 或支援 Skill 的 Agent 使用
README.md:給人類維護者閱讀
references/:放背景知識、規則、範本
examples/:放輸入與輸出範例
scripts/:放可執行工具
assets/:放模板、圖片、表格等資源
manifest.json:給其他 Agent 系統讀取的設定檔
如果你未來要移植到 Hermes Agent 或 Codex,這種結構會比較容易轉換。
範例:建立一個通用 manifest.json
可以在 Skill 裡面額外放一個 manifest.json,用來描述這個 Skill 的基本資訊。
{
"name": "wordpress-seo-writer",
"version": "1.0.0",
"description": "Generate Traditional Chinese WordPress blog posts with SEO title, tags, meta description, and structured article format.",
"language": "zh-TW",
"entry": "SKILL.md",
"references": [
"references/seo-guidelines.md"
],
"examples": [
"examples/input-1.md",
"examples/output-1.md"
],
"tools": [
{
"name": "keyword_checker",
"type": "script",
"path": "scripts/keyword_checker.py"
}
]
}
這個檔案不一定是 Claude Code 必要的,但它很適合給自建 Agent 系統使用。 例如 Hermes Agent 可以讀取 manifest.json,知道這個 Skill 的名稱、用途、入口檔案、參考資料與可用工具。
移植到 Hermes Agent
如果你使用的是自建的 Hermes Agent,建議把 Skill 當成一個「Agent 能力模組」來管理。
可以設計成以下結構:
hermes-agent/
├── agents/
│ └── writer-agent/
│ ├── system.md
│ ├── tools.json
│ └── skills/
│ └── wordpress-seo-writer/
│ ├── SKILL.md
│ ├── manifest.json
│ ├── references/
│ ├── examples/
│ └── scripts/
Hermes Agent 在執行任務時,可以做三件事:
1. 根據使用者輸入,判斷是否需要啟用某個 Skill
2. 讀取該 Skill 的 SKILL.md 與 references/
3. 將 Skill 內容合併進 Agent 的 system prompt 或 task prompt
例如使用者輸入:
請幫我寫一篇 WordPress SEO 文章,主題是 skill-creator。
Hermes Agent 可以比對 Skill 的 description,找到 wordpress-seo-writer,然後載入:
skills/wordpress-seo-writer/SKILL.md
skills/wordpress-seo-writer/references/seo-guidelines.md
skills/wordpress-seo-writer/examples/output-1.md
接著再讓模型依照這些規則產生文章。
Hermes Agent 的 Skill 載入邏輯範例
如果是自己開發 Hermes Agent,可以用簡單的流程實作:
User Request
↓
Intent Router
↓
Skill Matcher
↓
Load SKILL.md
↓
Load references / examples / scripts
↓
Compose Agent Prompt
↓
Run Model
↓
Return Result
也可以設計一個簡單的 Skill Registry:
{
"skills": [
{
"name": "wordpress-seo-writer",
"description": "Write Traditional Chinese WordPress SEO articles.",
"path": "./skills/wordpress-seo-writer",
"trigger_keywords": [
"WordPress",
"SEO文章",
"部落格文章",
"中繼描述",
"標籤"
]
},
{
"name": "code-review-security",
"description": "Review code for security, maintainability, and deployment risks.",
"path": "./skills/code-review-security",
"trigger_keywords": [
"code review",
"安全檢查",
"漏洞",
"重構"
]
}
]
}
這樣 Hermes Agent 就可以根據關鍵字、語意比對或任務分類,自動決定要不要載入某個 Skill。
移植到 Codex
如果要移植到 Codex,建議分成兩層處理:
1. 專案層級規則:放進 AGENTS.md
2. 任務型 Skill:保留成獨立 Skill 資料夾
Codex 會讀取專案中的 AGENTS.md,因此可以把與專案相關的固定規則放在這裡,例如:
# AGENTS.md
## Project Rules
- Use Traditional Chinese when writing user-facing documentation.
- Do not modify database schema unless explicitly requested.
- Before changing code, inspect the existing architecture.
- Prefer small, reviewable changes.
- When writing WordPress articles, use the wordpress-seo-writer skill.
而真正的 Skill 內容則可以保留在專案目錄中:
project/
├── AGENTS.md
├── skills/
│ └── wordpress-seo-writer/
│ ├── SKILL.md
│ ├── references/
│ ├── examples/
│ └── scripts/
這樣做的好處是:
AGENTS.md 負責專案整體規則
SKILL.md 負責特定任務流程
references/ 保存知識與格式
scripts/ 保存可重複使用的工具
Codex 使用 Skill 的建議方式
如果 Skill 是用來處理開發工作,例如 Code Review、安全檢查、部署檢查,建議把 Skill 寫得更像工程 SOP。
例如:
# Code Review Security Skill
Use this skill when reviewing code changes for security, maintainability, and deployment risks.
## Review Checklist
1. Authentication and authorization
2. Input validation
3. SQL injection risk
4. Secrets and environment variables
5. File upload handling
6. Error handling
7. Logging and privacy
8. Deployment risk
## Output Format
Return the review in this format:
# Code Review Report
## Summary
## Critical Issues
## Medium Issues
## Low Risk Suggestions
## Recommended Patch
## Test Plan
然後在 AGENTS.md 裡加入:
## Skills
When the task involves security review, load:
skills/code-review-security/SKILL.md
這樣 Codex 在處理程式碼任務時,就可以依照固定流程執行,而不是每次都靠臨時 prompt。
Claude Skill、Hermes Agent、Codex 的對應關係
Skill 內容 Claude Code Hermes Agent Codex 任務說明 SKILL.md description manifest.json description AGENTS.md 或 Skill description 操作流程 SKILL.md system prompt / task prompt AGENTS.md / Skill 參考資料 references/ knowledge base / RAG project docs / references/ 腳本工具 scripts/ tools / function calling scripts / shell tools 輸出格式 SKILL.md response schema AGENTS.md / task instruction 測試案例 examples/ evaluation set test prompts / eval cases
移植時最容易出問題的地方
1. Skill 觸發條件不清楚
如果 description 寫得太模糊,Agent 不知道什麼時候該使用。
不建議:
建議:
當使用者要求撰寫 WordPress SEO 部落格文章,且需要標題、標籤、中繼描述與繁體中文內容時,使用此 Skill。
2. 原本依賴 Claude 的功能,其他系統沒有
有些 Skill 可能假設 Claude Code 可以讀檔、執行 script 或打包 .skill。 移植到其他系統時,要確認目標平台是否支援:
讀取本地檔案
執行 shell 指令
呼叫 Python 腳本
使用 MCP server
使用 function calling
存取 Git repo
存取外部 API
如果不支援,就要改成純文字流程,或另外做工具橋接。
3. references 太大,模型上下文放不下
如果參考文件很多,不建議一次全部塞進 prompt。 比較好的方式是:
1. 先用 Skill description 判斷要不要使用
2. 再根據任務讀取必要 references
3. 只載入與當前任務相關的段落
這樣可以避免上下文太長,也能提升回答品質。
4. 腳本路徑與執行環境不同
例如你在 Claude Code 裡用的是:
但移植到 Hermes Agent 的 Docker 環境後,可能要改成:
python /app/skills/wordpress-seo-writer/scripts/check.py
因此建議在 manifest.json 中明確寫出腳本路徑、執行方式與依賴套件。
建議:把 Skill 設計成可攜式能力包
如果你一開始就希望 Skill 可以移植到 Claude Code、Hermes Agent、Codex 或其他 Agent 系統,建議遵守以下原則:
1. SKILL.md 不要寫死特定平台專用語法
2. 把平台相關設定放到 adapters/ 目錄
3. 把核心流程寫在 core.md
4. 把範例輸入輸出放到 examples/
5. 把工具設定放到 manifest.json
可以設計成:
portable-skill/
├── core.md
├── SKILL.md
├── manifest.json
├── adapters/
│ ├── claude-code.md
│ ├── hermes-agent.md
│ └── codex-agents.md
├── references/
├── examples/
└── scripts/
其中:
core.md:保存跨平台共用的核心流程
SKILL.md:給 Claude Code 使用
manifest.json:給自建 Agent 系統使用
adapters/claude-code.md:Claude Code 專用說明
adapters/hermes-agent.md:Hermes Agent 專用說明
adapters/codex-agents.md:Codex 專用說明
這樣同一個 Skill 就不會被綁死在單一平台上。
移植檢查清單
在把 Skill 移到其他 Agent 系統前,可以用這份清單檢查:
□ Skill 的用途是否明確?
□ description 是否能讓 Agent 判斷何時使用?
□ 輸入格式是否定義清楚?
□ 輸出格式是否固定?
□ 是否有 examples?
□ 是否有 references?
□ references 是否可以被目標系統讀取?
□ scripts 是否能在目標環境執行?
□ 是否需要 API key 或環境變數?
□ 是否有測試案例?
□ 是否有平台專用 adapter?
□ 是否避免把敏感資訊寫進 Skill?
Skill 應該被設計成 Agent 的可攜式 SOP
skill-creator 產生的 Skill,最好不要只當成 Claude Code 的專用檔案。 更好的做法,是把它設計成一個「可攜式 AI 工作流程」。
Claude Code 可以使用 SKILL.md。 Hermes Agent 可以使用 manifest.json、references/ 與自訂 router。 Codex 可以透過 AGENTS.md、專案規則與 Skill 資料夾來載入任務流程。
只要核心流程設計清楚,Skill 就可以成為跨 Agent 系統共用的能力包,讓同一套工作方法在不同 AI 工具之間延續使用。
by Rain Chu | 6 月 13, 2026 | Agent , AI , GGUF , Hermes , OpenClaw
原本我在 Nvidia 都搭配 vLLM 啟動,這條路理論上可以發揮 NVFP4 權重的優勢,但在 DGX Spark 的 GB10 平台上,實際遇到 CUDA Kernel 與 Marlin repack 相容性問題。
最後我改採:
Hcompany/Holo-3.1-35B-A3B-GGUF
搭配 llama.cpp CUDA Build,成功啟動模型並提供 API 服務。
這篇文章記錄完整流程,也保留幾個重要的踩坑經驗。
環境
本次環境如下:
硬體:NVIDIA DGX SparkGPU:NVIDIA GB10系統:Ubuntu Linux模型儲存位置:/mnt/ai-models推論框架:llama.cpp模型格式:GGUF量化版本:Q4_K_M
DGX Spark 使用統一記憶體架構,因此 CPU、GPU 與系統服務會共用記憶體。這點對 vLLM 與 llama.cpp 都很重要。
為什麼放棄 NVFP4 + vLLM
一開始使用 vLLM 載入:
Hcompany/Holo-3.1-35B-A3B-NVFP4
後,權重其實已經完整載入:
Loading safetensors checkpoint shards: 100% Completed | 3/3Loading weights took 142.78 seconds
但載入完成後,仍然在 Marlin FP4 重新整理階段失敗:
NotImplementedError:Could not run '_C::gptq_marlin_repack'with arguments from the 'CUDA' backend
這代表模型檔案本身沒有問題,真正卡住的是 vLLM 的 CUDA Extension 在 DGX Spark GB10 上沒有完整提供所需的 Marlin CUDA Operator。
如果只是想先把 Holo 3.1 跑起來,不一定要繼續投入時間處理 NVFP4 相容性。改用 GGUF + llama.cpp 是更快、更穩定的選擇。
移除 NVFP4 模型快取
vLLM 下載的 Hugging Face 模型通常會放在:
/mnt/ai-models/huggingface/hub/
先確認路徑:
find /mnt/ai-models/huggingface \ -maxdepth 3 \ -type d \ -name 'models--Hcompany--Holo-3.1-35B-A3B-NVFP4' \ -print
確認容量:
du -sh \ /mnt/ai-models/huggingface/hub/models--Hcompany--Holo-3.1-35B-A3B-NVFP4
確認無誤後刪除:
rm -rf \ /mnt/ai-models/huggingface/hub/models--Hcompany--Holo-3.1-35B-A3B-NVFP4
1. 安裝編譯工具
sudo apt update
sudo apt install -y \ git \ build-essential \ cmake \ ninja-build \ libcurl4-openssl-dev \ pkg-config
2. 確認 CUDA Toolkit
export CUDA_HOME=/usr/local/cudaexport PATH="${CUDA_HOME}/bin:${PATH}"
export LD_LIBRARY_PATH="${CUDA_HOME}/lib64:${LD_LIBRARY_PATH:-}"
nvcc --versionnvidia-smi
nvcc --version 必須能正常回傳 CUDA 版本。
3. Clone llama.cpp
mkdir -p /mnt/ai-models/srccd /mnt/ai-models/srcgit
clone https://github.com/ggml-org/llama.cpp.gitcd
llama.cpp
如果之前已經下載過:
cd /mnt/ai-models/src/llama.cpp
git fetch origingit switch master
git pull --ff-only origin master
4. 編譯 CUDA 版本
cd /mnt/ai-models/src/llama.cpp
rm -rf buildcmake -B build \ -DGGML_CUDA=ON \ -DCMAKE_BUILD_TYPE=Releasecmake --build build \ --config Release \ -j 4 \ --target llama-server llama-cli
確認:
./build/bin/llama-server --version
./build/bin/llama-cli --version
下載 Holo 3.1 GGUF 模型
建立模型目錄:
mkdir -p \ /mnt/ai-models/llama-models/Holo-3.1-35B-A3B-GGUF
下載主模型、視覺投影模型與 Chat Template:
hf download \ Hcompany/Holo-3.1-35B-A3B-GGUF \ q4_k_m.gguf \ mmproj.f16.gguf \ chat_template.jinja \ --local-dir \ /mnt/ai-models/llama-models/Holo-3.1-35B-A3B-GGUF
確認:
ls -lh \ /mnt/ai-models/llama-models/Holo-3.1-35B-A3B-GGUF
應該看到:
q4_k_m.ggufmmproj.f16.ggufchat_template.jinja
單模型模式啟動
先用最簡單的單模型方式確認服務能運作:
cd /mnt/ai-models/src/llama.cpp
./build/bin/llama-server \ -m /mnt/ai-models/llama-models/Holo-3.1-35B-A3B-GGUF/q4_k_m.gguf \ --mmproj /mnt/ai-models/llama-models/Holo-3.1-35B-A3B-GGUF/mmproj.f16.gguf \ --jinja \ --host 0.0.0.0 \ --port 8080 \ -c 8192 \ -np 1 \ -ngl 999
參數說明:
--mmproj 指定視覺投影模型
--jinja 使用模型附帶的 Chat Template
-c 8192 Context Length
-np 1 同時處理 1 個請求
-ngl 999 儘可能將模型層放到 GPU
測試文字 API
curl -s http://192.168.0.240:8080/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "Holo-3.1-35B-A3B-GGUF", "messages": [ { "role": "user", "content": "請使用繁體中文介紹你的 UI 畫面分析能力。" } ], "max_tokens": 256, "temperature": 0.2 }' | python3 -m json.tool
在這台 DGX Spark 上,實測文字生成速度約為:
測試圖片分析 API
curl -s http://127.0.0.1:8080/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "q4_k_m.gguf", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one concise English sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ], "thinking_budget_tokens": 64, "max_tokens": 1024, "temperature": 0.1 }' | python3 -m json.tool
已知問題:中文多模態輸出偶爾觸發解析錯誤
圖片推論本身可以成功,但在某些中文輸出中,llama-server 可能回傳:
Failed to parse input at pos ...
例如:
自由女神像、火炬、基座、城市天際線、高樓、水面、島嶼、樹木、旗�、船。
其中 � 是 UTF-8 無效字元替代符號。
實務上的處理方式:
1. 降低 temperature,例如 0.12. 限制輸出為簡短句子3. 提高 max_tokens,避免輸出被截斷4. Client 端遇到 500 時自動 Retry 一次5. 優先更新至最新版 llama.cpp
Router Mode:支援多模型切換
確認單模型模式正常後,可以啟用 Router Mode:
cd /mnt/ai-models/src/llama.cpp
./build/bin/llama-server \ --models-dir /mnt/ai-models/llama-models \ --models-max 1 \ --models-autoload \ --jinja \ --host 0.0.0.0 \ --port 8080 \ -c 8192 \ -np 1 \ -ngl 999
啟動後會看到:
Loaded 1 local model presets from /mnt/ai-models/llama-modelsAvailable models (1) Holo-3.1-35B-A3B-GGUFstarting router server, no model will be loaded in this processrouter server is listening on http://0.0.0.0:8080
Router 會在 Client 第一次呼叫時才載入模型。
查看模型清單:
curl -s \ 'http://127.0.0.1:8080/models?reload=1' | \ python3 -m json.tool
指定模型:
curl -s http://127.0.0.1:8080/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "Holo-3.1-35B-A3B-GGUF", "messages": [ { "role": "user", "content": "請使用繁體中文簡短介紹你的功能。" } ], "max_tokens": 512, "temperature": 0.2 }' | python3 -m json.tool
Router Mode 的記憶體策略
我使用:
意思是:
可以讓 Client 選擇多個模型但同一時間只保留一個模型在記憶體中
這很適合 DGX Spark。因為 Holo 35B、KV Cache、圖片 Token 與系統服務都會共用統一記憶體。
如果要同時提供 Holo 與另一個 Tool Calling 模型,建議:
Holo 35B:Context 8192 或 16384用途:UI 截圖與視覺分析較小的文字 Tool Calling 模型:Context 65536用途:Hermes Agent 預設模型
不同模型需要不同 Context Length 時,可使用 models.ini:
version = 1
[*]
jinja = true
n-gpu-layers = 999
parallel = 1
[Holo-3.1-35B-A3B-GGUF]
model = /mnt/ai-models/llama-models/Holo-3.1-35B-A3B-GGUF/q4_k_m.gguf
mmproj = /mnt/ai-models/llama-models/Holo-3.1-35B-A3B-GGUF/mmproj.f16.gguf
ctx-size = 8192
[qwen-coder]
model = /mnt/ai-models/llama-models/qwen-coder-14b-q4_k_m.gguf
ctx-size = 65536
啟動:
./build/bin/llama-server \ --models-preset /mnt/ai-models/llama-models/models.ini \ --models-max 1 \ --models-autoload \ --host 0.0.0.0 \ --port 8080
讓 llama.cpp 開機就執行
一、確認執行檔路徑
先執行:
ls -lh /mnt/ai-models/src/llama.cpp/build/bin/llama-server
再確認模型目錄:
ls -lah /mnt/ai-models/llama-models
測試版本:
/mnt/ai-models/src/llama.cpp/build/bin/llama-server --version
如果這三個指令正常,就可以建立服務。
二、建立 systemd 服務
建立服務檔:
sudo nano /etc/systemd/system/llama-router.service
貼上:
[Unit]
Description=llama.cpp Router Server
Documentation=https://github.com/ggml-org/llama.cpp
After=network-online.target local-fs.target
Wants=network-online.target
RequiresMountsFor=/mnt/ai-models
[Service]
Type=simple
User=gwoyju
Group=gwoyju
WorkingDirectory=/mnt/ai-models/src/llama.cpp
Environment="LD_LIBRARY_PATH=/usr/local/cuda/lib64"
Environment="CUDA_HOME=/usr/local/cuda"
ExecStartPre=/usr/bin/test -x /mnt/ai-models/src/llama.cpp/build/bin/llama-server
ExecStartPre=/usr/bin/test -d /mnt/ai-models/llama-models
ExecStart=/mnt/ai-models/src/llama.cpp/build/bin/llama-server \
--models-dir /mnt/ai-models/llama-models \
--models-max 1 \
--models-autoload \
--jinja \
--host 0.0.0.0 \
--port 8080 \
-c 8192 \
-np 1 \
-ngl 999
Restart=on-failure
RestartSec=10
TimeoutStopSec=30
KillSignal=SIGTERM
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
儲存後離開:
WantedBy=multi-user.target 讓服務可以隨一般多使用者開機流程啟動;Restart=on-failure 會在程式異常退出時重新啟動服務。
為什麼需要 RequiresMountsFor
你的模型與程式都放在:
如果外接 SSD 尚未掛載完成,直接啟動 llama-server 會失敗。
這一行:
RequiresMountsFor=/mnt/ai-models
會要求 systemd 先準備好該掛載點,再啟動 Router。
三、啟用開機自動執行
重新讀取服務設定:
sudo systemctl daemon-reload
設定開機自動啟動,並立即啟動:
sudo systemctl enable --now llama-router
查看服務狀態:
systemctl status llama-router --no-pager
正常情況應該看到:
以及:
router server is listening on http://0.0.0.0:8080
四、查看即時日誌
查看最近 100 行日誌:
journalctl -u llama-router -n 100 --no-pager
持續追蹤日誌:
journalctl -u llama-router -f
離開即時日誌:
五、測試 Router API
確認 Router 已啟動:
curl -s http://127.0.0.1:8080/health
查看模型清單:
curl -s \ 'http://127.0.0.1:8080/models?reload=1' | \ python3 -m json.tool
測試 Holo 3.1:
curl -s http://127.0.0.1:8080/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "Holo-3.1-35B-A3B-GGUF", "messages": [ { "role": "user", "content": "請使用繁體中文簡短介紹你的功能。" } ], "max_tokens": 256, "temperature": 0.2 }' | python3 -m json.tool
第一次呼叫時會需要等待模型載入。後續請求會比較快。
六、常用管理指令
啟動服務
sudo systemctl start llama-router
停止服務
sudo systemctl stop llama-router
重新啟動
sudo systemctl restart llama-router
查看狀態
systemctl status llama-router --no-pager
取消開機自動啟動
sudo systemctl disable --now llama-router
七、確認開機後是否真的自動啟動
重新開機:
重新 SSH 登入後執行:
systemctl status llama-router --no-pager
確認 Port:
測試模型清單:
curl -s http://127.0.0.1:8080/models | \ python3 -m json.tool
八、改用 models.ini
準備讓不同模型有不同 Context Length:
Holo 35B:8192Hermes 預設 Tool Calling 模型:65536
這種情況建議不要在服務中使用:
而是改用:
假設設定檔位於:
/mnt/ai-models/llama-models/models.ini
服務中的 ExecStart 改成:
ExecStart=/mnt/ai-models/src/llama.cpp/build/bin/llama-server \
--models-preset /mnt/ai-models/llama-models/models.ini \
--models-max 1 \
--models-autoload \
--host 0.0.0.0 \
--port 8080
改完後重新載入設定:
sudo systemctl daemon-reload
sudo systemctl restart llama-router
查看日誌:
journalctl -u llama-router -f
九、避免 Ollama 開機後搶占記憶體
你之前遇過記憶體不足。如果目前 DGX Spark 主要改用 llama.cpp,建議停用 Ollama 的開機自動啟動:
sudo systemctl disable --now ollama
確認:
systemctl status ollama --no-pager
未來需要恢復:
sudo systemctl enable --now ollama
十、限制只允許內網連線
目前使用:
代表區域網路內其他裝置可以存取 API。Router Mode 目前仍屬於實驗性功能;llama.cpp 啟動日誌也提醒,不建議直接暴露在不受信任的網路環境。
假設區域網路是:
可以設定 UFW:
sudo ufw allow from 192.168.0.0/24 \ to any port 8080 proto tcp
查看規則:
不要直接把 Port 8080 暴露到公網。
建議你現在直接執行的版本
建立 /etc/systemd/system/llama-router.service 後,執行:
sudo systemctl daemon-reload
sudo systemctl enable --now llama-router
systemctl status llama-router --no-pagerjournalctl -u llama-router -n 50 --no-pager
這樣 DGX Spark 每次重新開機後,llama.cpp Router Server 就會自動啟動,並等待 Hermes Agent 或其他 Client 指定要載入的模型。
參考資料
https://huggingface.co/collections/Hcompany/holo31
https://build.nvidia.com/spark/llama-cpp/instructions
近期留言