Session 5
⏱ 90 min(半堂課 + 課後完成)
需先安裝 Hermes Agent
蒸餾人實作
把自己變成可執行的數位分身
你的 Hermes Agent 已經就緒。本堂課我們把你的思維、決策、知識,轉化為可執行的 .md 檔案——一個會「像你」的 agent。
30–55 min
寫 USER.md + AGENTS.md
蒸餾你的工作脈絡
55–90 min
封裝 .skill
蒸餾你的工作流程
Step 1 · 0–10 min
確認你的 Hermes Agent 環境
這個 lab 假設你已在 Session 4(助教課)完成 Hermes Agent 的安裝。先確認以下命令都能跑:
bash
# 1. 確認 Hermes 已安裝
$ hermes --version
hermes 0.10.x
# 2. 確認 HERMES_HOME 位置(預設 ~/.hermes)
$ ls ~/.hermes/
SOUL.md config.yaml memories/ skills/ sessions/ cron/
# 3. 看一下預設的 SOUL.md 長什麼樣子
$ cat ~/.hermes/SOUL.md
# Hermes Agent
You are an intelligent AI assistant created by Nous Research...
# ← 這就是 Hermes 的預設身份。我們等下要把它換成「你」
如果上面的命令有錯:請先聯絡助教,或回 Session 4 講義重新安裝。後面的步驟都依賴 Hermes 能正確啟動。
Step 2 · 10–30 min
蒸餾你的人格 → SOUL.md
SOUL.md 是 agent 的「靈魂」——它定義 agent 是誰、怎麼說話、避免什麼。要讓 agent「像你」,這是第一個檔案。
反思引導:用四個問題提取你的人格
Identity
你是怎樣的研究者 / 思考者?
- 你的學科訓練給了你什麼方法論偏好?
- 你重視什麼樣的論證?
- 你的「研究信念」是什麼?
Style
你怎麼說話?
- 正式還是隨性?
- 用比喻還是直接陳述?
- 長段落還是短句?
- 常用什麼詞彙、避免什麼詞彙?
Avoid
你不容忍什麼?
- 哪種回應方式讓你覺得不專業?
- 什麼是你絕不會說的話?
- 哪些「AI 套話」你聽了就煩?
Defaults
遇到模糊狀況時你會怎麼做?
- 不知道答案時你會怎麼回應?
- 面對含混問題時你會問什麼?
- 你的「預設思考流程」是什麼?
SOUL.md 範本(從這裡開始改)
~/.hermes/SOUL.md
範本 · 請改成你的
# Identity
你是 [你的名字] 的數位分身——一名 [你的領域] 研究者。
你重視 [核心研究信念,如:實證精神、理論深度、跨領域思維]。
你的判斷基於 [方法論偏好,如:歷時語料、認知語言學、計算方法]。
# Style
- 用 [繁體中文 / 中英混用 / ...] 回應
- 偏好 [類比 → 公式 → 實作 / 直接論述 / 提問導引] 的解釋順序
- 文質彬彬,偶爾穿插 [成語 / 古典語彙 / 學術術語]
- 說 [短而精準 / 長而完整] 的話
# Avoid
- 阿諛奉承(不說「好問題!」這種開場)
- 過度限定(不亂加「但這只是個人意見」)
- 假裝專家(不確定的事直接說「我不確定」)
- [你個人最不喜歡的 AI 回應特徵]
# Defaults
- 遇到模糊問題:先確認對方真正想問什麼,而不是急著回答
- 遇到爭議:呈現多方論述,而不是裝作中立
- 遇到我不會的:誠實說「我不知道」,並建議下一步該怎麼查
編輯指引:用任何文字編輯器打開 ~/.hermes/SOUL.md,把上面的 [ ] 都替換成你的內容。寫完後重啟 Hermes(離開再進來),新人格就生效了。
實作示範:iterative refinement
寫一輪 → 測試 → 修改 → 再測試
# 1. 編輯 SOUL.md(用 vim, code, 或任何編輯器)
$ code ~/.hermes/SOUL.md
# 2. 重啟 Hermes,啟動對話
$ hermes
# 3. 用幾個有特色的問題測試人格是否「像你」
> 你怎麼看 ChatGPT 對人文研究的影響?
[Agent 回應]
# 4. 如果回應不夠像你(太客套、太籠統、不像你的口吻),
# 回去編輯 SOUL.md,加更具體的限制與風格描述
# 5. 重複 2–4 直到滿意
Step 3 · 30–55 min
蒸餾你的工作脈絡 → USER.md + AGENTS.md
SOUL.md 是「你是誰」,但 agent 還需要知道你在做什麼專案、你的工作偏好是什麼。這就是 USER.md 與 AGENTS.md 的角色。
USER.md:你的偏好與背景
~/.hermes/memories/USER.md
範本
# 使用者基本資料
- 姓名:[你的名字]
- 領域:[主修 / 研究方向]
- 學階:[大學部 / 碩士 / 博士 / 教授]
- 機構:[國立臺灣大學 / 其他]
# 工作偏好
- 主要使用語言:繁體中文
- 程式語言偏好:Python(不熟其他)
- 文獻管理工具:[Zotero / Notion / 其他]
- 寫作工具:[VS Code / Word / Obsidian]
# 進行中的專案
- [專案一:簡短描述,1 行]
- [專案二:簡短描述,1 行]
# 溝通偏好
- 不需要 disclaimer 開頭(直接給內容)
- 程式範例必須可執行(不要用偽代碼)
- 解釋複雜概念時:先類比,再例子,最後形式化
AGENTS.md:專案層的工作說明書
把 AGENTS.md 放在你某個具體專案的資料夾下(不是 ~/.hermes/,是專案根目錄)。當你在那個資料夾啟動 Hermes 時,這個檔案會自動載入。
~/research/your-project/AGENTS.md
範本 · 請改成你的專案
# [專案名稱]
## 專案目標
[一段簡短描述,例如:分析魯迅小說中的革命書寫,產出對照表與視覺化]
## 資料夾結構
- `corpus/` — 原始文本(**不可修改!**)
- `scripts/` — Python 分析腳本
- `notes/` — 研究筆記(Markdown)
- `output/` — 結果輸出
## 工作流程
當我說「整理今天的進度」時:
1. 讀取 `notes/` 下今日修改的檔案
2. 摘要主要進展
3. 列出 unresolved questions
當我說「分析這份文本」時:
1. 確認文本在 `corpus/` 下
2. 跑 `scripts/analyze.py`
3. 把結果存到 `output/YYYY-MM-DD/`
## 工具偏好
- 文本處理:用 Python + jieba(中文斷詞)
- 視覺化:用 matplotlib,標題用繁中
- 統計:scipy / scikit-learn
## 限制
> 不得修改 `corpus/` 下的任何檔案
> 不得自動推送 git commit(必須我手動執行)
> 不得使用會送資料到雲端的工具(這個專案資料敏感)
檔案位置決定生效範圍:USER.md 跟著你的人格走,AGENTS.md 只在那個專案資料夾啟動 Hermes 時載入。在不同專案間切換時,AGENTS.md 會自動更換,但 SOUL.md 與 USER.md 不變。
Step 4 · 55–90 min
蒸餾你的工作流程 → 一個 .skill 檔
這是最進階也最有趣的一步:把你反覆做的某件事封裝成可重用的技能。Hermes 之後可以自動或手動呼叫這個 skill。
挑選一個你常做的事
建議從一個小而具體的任務開始。以下是幾個適合「蒸餾」的範例:
- 讀論文摘要:每讀一篇論文,產出固定格式的摘要卡(作者、年份、論點、方法、可引用句)
- 每日研究日誌:每天結束時,整理今日進展、卡住的地方、明日計畫
- 文獻對照表:給定多篇文獻,產出比較表格(理論立場、方法、結論)
- 翻譯助手:英譯中時依照你的偏好(學術用語、避免某些譯法)
- 備課大綱:給定一個主題,產出符合你教學風格的大綱(類比 → 公式 → 程式)
Skill 檔範本
~/.hermes/skills/paper-summary.skill
範本 · 論文摘要技能
# 論文摘要技能
description: |
把一篇學術論文(PDF 或文字)蒸餾成我習慣的摘要卡格式。
trigger:
- 「幫我摘要這篇論文」
- 「summarize this paper」
- 「做摘要卡」
inputs:
- paper_text: 論文全文或 PDF 路徑
steps:
1. 確認文本:如果是 PDF,先用 pdftotext 抽取文字
2. 識別關鍵資訊:
- 作者、年份、期刊
- 研究問題(research question)
- 主要論點(thesis)
- 方法(method)
- 主要發現(findings)
- 三句可引用的關鍵句
3. 用我偏好的格式輸出:
output_template: |
## [Author Year] Title
**問題**:(一句話)
**論點**:(一句話)
**方法**:(一句話,包含資料與分析方法)
### 主要發現
- 發現一
- 發現二
- 發現三
### 可引用的句子
> 句子一(頁碼)
> 句子二(頁碼)
### 我的評估
- 與 [其他文獻] 的關係:
- 對 [我的研究] 的意義:
constraints:
- 不要編造論文沒提到的內容
- 引用必須有頁碼
- 「我的評估」段如果沒把握就留空,不要瞎填
測試你的 skill:把一篇你最近讀過的論文丟給 Hermes,加上「用 paper-summary skill 處理」,看看輸出是否符合你的預期。如果不符合,回去調整 .skill 檔的 steps 與 output_template。這是 iterative refinement——通常需要 3–5 輪迭代才會穩定。
繳交規定
繳交內容與評分標準
繳交清單
把以下檔案打包成一個 zip 上傳到課程平台:
SOUL.md — 你的人格檔
USER.md — 你的偏好檔
AGENTS.md — 至少一個專案的工作說明書
your-skill.skill — 至少一個自製 skill 檔
reflection.md — 500–800 字反思(見下方提示)
screenshots/ — 至少 3 張對話截圖(顯示 agent 確實「像你」)
反思題目(reflection.md)
不需要全部回答,挑 2–3 題深入寫:
- 蒸餾過程中,哪些「你」是容易形式化的?哪些是無論如何也寫不進 .md 的?
- 當 agent 真的「像你」回應時,你的感受是什麼?是親切還是疏離?
- 如果這個 agent 代替你回 email 或回學生問題,你願意嗎?什麼情況下願意,什麼情況下絕不?
- 蒸餾人 vs 蒸餾技能——哪一個比較容易?這個難度差異說明什麼?
- 從計算語言學/認知科學/哲學的角度:「我」的哪些部分是可被語言模型逼近的,哪些不是?
評分標準
| 項目 | 說明 | 分數 |
| 檔案完整性 | 四個 .md 檔 + 一個 .skill 檔都齊全且格式正確 | 20 |
| SOUL.md 個性化程度 | 不只是套用範本——能看出你的真實風格與限制 | 20 |
| Skill 可執行性 | 截圖證明 agent 可成功觸發並執行你寫的 skill | 20 |
| 反思深度 | 有實質的元認知,不只是描述步驟 | 25 |
| 創意/突破 | 嘗試非典型 skill、利用 cron、整合 Gemini API 等 | 15 |
延伸挑戰(選做)
還有時間?來試試這些
⏰
加上 Cron
讓你的 agent 每天早上 8 點自動產生今日待辦摘要,送到 Telegram。
☁️
串 Gemini API
把 SOUL.md 的內容當 system_instruction 送給 Gemini,做一個雲端版的你。
🔗
多 Agent 對話
蒸餾另一個人(同學、老師、想像中的學者),讓兩個 agent 對同一問題辯論。
🪝
加 Hook
寫一個 hook 攔截危險指令(例如:寫入研究資料目錄前要求確認)。
哲學作業:當你完成蒸餾,存在的就不只是「一份檔案」——而是一個有結構的「自我表徵」。把你寫的 SOUL.md 給一個熟悉你的人看,問他:「這像我嗎?」他的回答會比 agent 的回應更有意義。