跳到主內容

Theme / 0.9.5

Herdr

AI 一人公司的終端辦公室

工作流組合

安裝 Herdr 與權限配置 (Install Herdr)

五段提示詞的第二段:安裝 Herdr、裝官方整合、把官方技能收進知識庫、為每家 agent 配權限放行、把協作規矩九條寫進總規矩。

適用情境

知識庫已經建好(見建知識庫),接下來要在這台電腦上把「辦公室」裝起來:Herdr 本體、官方整合、官方技能,以及最關鍵的——權限放行配置與協作規矩九條。這一段全部交給一個普通終端機裡的 agent 照官方文件做,你只在它請示時回答。

這段提示詞在做什麼

  1. 裝 Herdr:按官方安裝指南裝好,確認版本號,並在設定檔寫 onboarding = false 關掉首次設定精靈。
  2. 裝官方整合:名冊裡用到哪家 agent CLI 就裝哪家的 integration,讓 Herdr 重啟後能把每個員工的對話接回來。
  3. 官方技能入庫:用 herdr --skill 把隨版本附帶的技能存進 工具/技能/herdr/ 一份,軟連結掛給各家——技能跟著知識庫走,不散落在使用者目錄。
  4. 配權限:按各家官方做法放行「草稿區 + herdr 協作命令 + git + 網頁查詢」,正式文件照樣攔——只有該問你的才問你。
  5. 寫協作規矩:把九條協作規矩全文(含任務卡格式、交接那一句、等與驗收的規則)一字不改寫進 AGENTS.md。

完整提示詞(第二段)

在普通終端機(不是 Herdr 裡)交給 agent。____ 換成你的公司根目錄與公司名:

公司知識庫已經建好,公司根目錄是:____,公司名是:____(換成你的)。現在要在這台電腦上裝 Herdr,讓多個 AI 員工待在同一個終端機視窗裡互相協作。你現在在普通終端機裡,不在 Herdr 裡。

【規矩】
1. 只按 Herdr 官方文件做:先讀官網給 agent 看的安裝指南 https://herdr.dev/agent-guide.md ,細節查 https://herdr.dev/docs/ ,不憑記憶編命令或參數。
2. 確認裝沒裝好用 herdr --version。不要執行不帶參數的 herdr,也不要執行 herdr server stop。
3. 先用幾句話說計畫:我的系統是什麼、要跑哪些命令、會改哪些文件,我說「可以」再執行。
4. 遇到要輸密碼、要系統管理員權限、系統安全彈出視窗、瀏覽器登入,停下來告訴我怎麼做,等我說「好了」再繼續。
5. 只改這幾處:公司資料夾裡的文件;Herdr 自己的設定檔;herdr integration install 自己會改的各家 agent 設定(官方寫明它會往各家的設定資料夾裡裝鉤子);下面明確寫出路徑的各家 agent 設定檔和 shell 設定檔。
命令寫法:下面的命令按 Mac / Linux 寫,標了「Windows:」的是 PowerShell 寫法。Windows 上一律在 PowerShell 裡執行,不用 Bash 的寫法(mkdir -p、用 && 連接命令、用 > 寫文件);寫文件用你自己的寫文件工具,存成不帶 BOM 的 UTF-8。

【要做的五件事】
第一件:讀安裝指南,按我的系統裝好 Herdr,看版本號確認。
  先執行 herdr --version;Mac / Linux 上再試 ~/.local/bin/herdr --version。已經能列印版本號,就跳過安裝,直接做下面「裝好以後的設定」。
  沒有就按我的系統用官方的一行命令裝:
  Mac / Linux:curl -fsSL https://herdr.dev/install.sh | sh
  Windows:powershell -ExecutionPolicy Bypass -c "irm https://herdr.dev/install.ps1 | iex"
  Windows 上這條被安全軟體攔住,就用官方給命令提示字元的備用寫法,在 PowerShell 裡用 cmd /c 包一層執行:cmd /c "curl.exe -fsSLo install.cmd https://herdr.dev/install.cmd && install.cmd && del install.cmd"
  我已經在用 Homebrew 的話,也可以 brew install herdr。
  裝好以後的設定:
  - Mac / Linux:官方安裝腳本把 herdr 放在 ~/.local/bin,不會改 shell 設定;~/.local/bin 不在 PATH 裡時,它會列印「is not in your PATH」和要加的那一行。這一行必須加上,因為以後員工在 Herdr 頁面裡也要用 herdr 命令:問我同意後,把 export PATH="$HOME/.local/bin:$PATH" 加到 shell 設定檔末尾(zsh 是 ~/.zshrc,bash 是 ~/.bashrc;已經有就不重複加)。你這個工作階段裡的命令不一定會重新讀設定,所以這一段和下一段裡,herdr 找不到時一律寫完整路徑 ~/.local/bin/herdr。
  - Windows:安裝程式會把 herdr 加進 PATH。你這個工作階段裡還找不到,先執行 $env:Path = [Environment]::GetEnvironmentVariable('Path','User') + ';' + [Environment]::GetEnvironmentVariable('Path','Machine') 重新讀一遍 PATH 再試;還不行,告訴我關掉終端機重開、重新啟動你,再把這一段從頭貼一遍。
  - 在 Herdr 的設定檔裡寫一行 onboarding = false,我第一次打開時就不再彈官方的設定精靈(該配的這幾段提示詞都配好了)。文件位置看 herdr --help 最後「Config:」那一行(官方預設:Mac / Linux 是 ~/.config/herdr/config.toml,Windows 是 %APPDATA%\herdr\config.toml);資料夾沒有就先建,文件沒有就新建;已有 onboarding 這一行就只把值改成 false,沒有就加在文件最上面、任何 [小節] 之前,別的不動。
  成功:herdr --version(或完整路徑)列印出 herdr 和版本號;設定檔裡有 onboarding = false。

第二件:裝官方整合。員工名冊裡用到哪家,就執行哪一條,這樣 Herdr 萬一重啟,也能把每個員工原來的對話接回來:
  Claude Code:herdr integration install claude
  Codex:herdr integration install codex
  OpenCode:herdr integration install opencode
  反重力:herdr integration install antigravity-cli
  成功:herdr integration status 裡,裝過的每一家都顯示 current。
  失敗先查:報設定目錄不存在,或者提示先安裝那家(例如反重力報 install antigravity cli first)→ 那家 agent 還沒在這台電腦上啟動過,它的設定資料夾還沒生成(反重力是 ~/.gemini/config/),告訴我先在普通終端機啟動它一次、退出,再回來。
  說明:不裝整合,側欄的狀態燈也照樣亮;OpenCode 的整合還會直接上報狀態。

第三件:裝 Herdr 官方給 agent 準備的技能,放進 工具/技能/herdr/,再用軟連結掛給每一家 agent。這份技能教員工怎麼用開頁面、上崗、交任務、等結果、讀回來這幾條命令。
  官方預設用 npx skills add herdrdev/herdr --skill herdr -g,給每一家在使用者目錄各裝一份。本公司的規矩是 Skill 只在 工具/技能/ 存一份,所以用官方給的另一條裝法:herdr --skill 列印隨這個版本附帶的那份,作為名叫 herdr 的 Skill 放進 工具/技能/。在公司根目錄執行:
    mkdir -p 工具/技能/herdr && herdr --skill > 工具/技能/herdr/SKILL.md
    Windows:$d = "<公司根目錄>\工具\技能\herdr"; New-Item -ItemType Directory -Force $d | Out-Null; [IO.File]::WriteAllText("$d\SKILL.md", ((herdr --skill) -join "`n"), (New-Object Text.UTF8Encoding $false))
  再按 工具/AGENTS.md 裡「Skill 放哪」掛兩個連結:ln -s ../../工具/技能/herdr .claude/skills/herdr 和 ln -s ../../工具/技能/herdr .agents/skills/herdr(Windows 照 工具/AGENTS.md「Skill 放哪」第 3 條)。已經有同名的連結或資料夾,先看它指向哪,不對再問我。
  成功:工具/技能/herdr/SKILL.md 開頭幾行有 name: herdr;ls -l .claude/skills .agents/skills 裡 herdr 都指向 ../../工具/技能/herdr;分別讀 .claude/skills/herdr/SKILL.md 和 .agents/skills/herdr/SKILL.md,開頭和實體一樣。
  說明:這樣裝,官方技能只在公司知識庫裡生效、跟著知識庫走;以後升級 Herdr,在公司根目錄重跑上面第一條命令,更新這一份就行。

第四件:按各家官方的做法,放開讀寫整個知識庫的權限,並且只在改正式文件時才停下來問我。固定員工是在自己的資料夾裡上崗的,可任務卡、資料、草稿都在別的資料夾裡。按名冊裡用到的幾家,逐項做,用不到的那家跳過:
  - Claude Code:在公司根目錄新建 claude-permissions.json,內容原樣寫成:
      {"permissions": {"allow": ["Edit(/駕駛艙/**)", "Edit(/研究/**)", "Edit(/角色/*/工作記錄/**)", "Bash(herdr agent *)", "Bash(herdr tab *)", "Bash(herdr workspace list)", "Bash(herdr pane read *)", "Bash(herdr --skill)", "Bash(git add *)", "Bash(git commit *)", "Bash(git status*)", "Bash(git log*)", "Bash(git diff*)", "Bash(git show*)", "WebSearch", "WebFetch"]}}
    Windows 上 Claude Code 用 PowerShell 執行命令,所以每條 Bash(…) 再照抄一條 PowerShell(…),例如 "PowerShell(herdr agent *)"。
    意思是:草稿、資料、工作記錄可以直接寫,herdr 的協作命令和 git 存版本可以直接跑,查網頁不用每次批准;改別的文件(正式文件)照樣會彈確認。
    固定崗位的啟動參數:--add-dir "<公司根目錄>" --settings "<公司根目錄>/claude-permissions.json"
    臨時幫手的啟動參數:--settings "<公司根目錄>/claude-permissions.json"
  - Codex:固定崗位的啟動參數 --sandbox workspace-write --add-dir "<公司根目錄>"(只寫 --add-dir 時,新版 Codex 會提示「當前權限不允許額外的可寫目錄」並忽略它,所以要先用 --sandbox workspace-write 打開工作區寫入);臨時幫手的啟動參數 --search(官方參數,打開即時網頁搜尋)。
    Codex 的沙箱連不上本機的 Herdr 服務,也把 .git 設為唯讀,所以 herdr 協作命令和 git 存版本每次都會請我批准。按 Codex 官方「Rules」文件,在公司根目錄新建 .codex/rules/company.rules,內容原樣寫成下面三行(專案裡的規則在我信任這個資料夾後生效,跟著知識庫走,不改使用者目錄):
      prefix_rule(pattern = ["herdr", ["agent", "tab", "workspace", "pane"]], decision = "allow", justification = "Herdr 協作命令")
      prefix_rule(pattern = ["herdr", "--skill"], decision = "allow")
      prefix_rule(pattern = ["git", ["add", "commit", "status", "log", "diff", "show"]], decision = "allow", justification = "存版本")
    成功:codex execpolicy check --rules .codex/rules/company.rules git commit -m 測試 和 codex execpolicy check --rules .codex/rules/company.rules herdr agent list 都輸出 "decision":"allow"。
  - OpenCode:在公司根目錄新建 opencode.json,內容是 {"$schema": "https://opencode.ai/config.json", "permission": {"external_directory": {"<公司根目錄>/**": "allow"}}}。公司根目錄在使用者主目錄下時,按官方寫法用 ~ 開頭,例如 "~/xiangyu/**"。沒有啟動參數。
  - 反重力:它只把啟動的資料夾當工作區,工作區以外的文件每讀寫一次都要批准,所以固定崗位的啟動參數是 --add-dir "<公司根目錄>"(把整個知識庫加進工作區);臨時幫手在公司根目錄上崗,不用啟動參數。反重力命令列版跑命令、讀網頁預設也都要批准;按反重力官方權限文件,在 ~/.gemini/antigravity-cli/settings.json 的 permissions.allow 裡加這幾條:
      "read_url(*)", "command(herdr agent)", "command(herdr tab)", "command(herdr workspace list)", "command(herdr pane read)", "command(herdr --skill)", "command(git add)", "command(git commit)", "command(git status)", "command(git log)", "command(git show)", "command(git diff)", "command(ls)", "command(cat)", "command(head)", "command(tail)", "command(wc)", "command(grep)"
    意思是:讀網頁、herdr 協作命令、git 存版本和幾條唯讀命令不用每次批准;點網頁、別的命令照樣要批准。這個文件對這台電腦上所有反重力工作階段生效。文件已有其他內容就只往 allow 陣列裡加這幾條,別動別的;沒有這個文件就新建,內容是 {"permissions": {"allow": [上面這幾條]}}。Windows 上這個文件在 $HOME\.gemini\antigravity-cli\settings.json,並且官方寫明 Windows 上要匹配子命令得用 regex 寫法,改成 "command(regex:herdr (agent|tab|pane read|workspace list) .*)"、"command(regex:git (add|commit|status|log|diff|show).*)" 這種形式。
  在總規矩的員工名冊下面加一小節「各家啟動參數」,按「固定崗位」「臨時幫手」兩行,把上面用到的每家的啟動參數原樣寫進去,<公司根目錄> 換成真實路徑。
  成功:新建或改過的 JSON 文件都能讀通(Codex 的 .rules 文件用上面的 execpolicy check 核):python3 -m json.tool <文件>;Windows:Get-Content <文件> -Raw | ConvertFrom-Json | Out-Null,不報錯就是通了。兩樣都沒有,就自己讀一遍,確認括號和引號成對。

第五件:把協作規矩寫進總規矩。把下面這一節寫進 AGENTS.md,替換掉原來那個「協作規矩」占位標題。把 <公司名> 和 <公司根目錄> 換成真實的,其餘一字不改:

## 協作規矩(只用 Herdr 官方命令)

本公司的固定形式(老闆定的;Herdr 官方技能預設「在當前頁旁邊分屏」,在本公司一律以這裡為準):
- 一台電腦一個 Herdr 工作區,名字叫「<公司名>」,根目錄就是公司根目錄 <公司根目錄>。
- 固定崗位一人一頁、一頁一個視窗;頁面名和 Herdr 員工名都用崗位的英文名;員工在 角色/<英文名>/ 裡上崗。
- 臨時幫手在公司根目錄上崗,頁面名和員工名都是 tmp-<短名>,用完就關。
- 誰都可以交接工作:總經理把工作安排給經理,經理也可以給自己請臨時幫手。

通用說明
- 這些命令連的是本機正在執行的 Herdr 服務。平時由員工在 Herdr 的頁面裡用(這時環境變數 HERDR_ENV=1);唯一的例外是老闆明確交代的唯讀檢查和添加機器,可以在普通終端機裡用。Windows 上在 PowerShell 裡照樣用。
- 頁面裡永遠不要輸入不帶參數的 herdr,不要執行 herdr server stop。
- 退出碼:0 是成功,多數命令列印 JSON(agent read、pane read 直接列印螢幕上的文字);1 是失敗,錯誤 JSON 印在標準錯誤輸出裡,error.code 是錯誤代號;2 是命令寫錯了,這時只輸入 herdr agent 或 herdr tab 看用法,或執行 herdr --skill 讀官方說明,不要猜。
- 工作區編號這樣取:herdr workspace list,在 result.workspaces 裡找 label 等於「<公司名>」的那一項,取 workspace_id。

1. 交接工作先寫一張任務卡,放進駕駛艙。
   文件:<公司根目錄>/駕駛艙/任務/<八位日期>-<三位編號>-<英文短名>.md,編號接著這個資料夾裡最大的往下排。內容:
     # 任務卡 <編號> · <一句話標題>
     交出人:<中文名>(<英文名>);接手人:<中文名>(<英文名>);臨時幫手的 tab_id:<沒有就空著>
     ## 目標
     ## 材料(完整路徑或網址)
     ## 規矩
     ## 產出位置(完整路徑)

2. 先看對方在不在:herdr agent list
   在 result.agents 裡找 name 等於對方英文名的一項。找到:看 agent_status,idle 或 done 可以交接;working 在忙,交了會排在它手上的任務後面;blocked 按第 8 條;unknown 先按第 7 條看一眼。找不到:按第 4 條或第 5 條請它上崗。

3. 交接任務就這一句,不改寫:
   herdr agent prompt <英文名> "讀任務卡 <任務卡完整路徑>,按卡做完,結果寫到卡裡的產出位置,最後只回一句:完成 <產出完整路徑>" --wait --timeout 110000
   - 退出碼 0:看 result.agent.agent_status。idle 或 done,按第 7 條驗收;blocked,按第 8 條。
   - 退出碼 1:error.code 是 timeout 或 agent_prompt_stalled,話多半已經送到,按第 6 條接著等,絕不重發;是 agent_blocked,話沒送出去,按第 8 條;是 agent_not_found,回第 2 條。
   - 同時交給幾位:每位用同一句,把末尾換成 --wait --until working --until blocked --timeout 30000,它一動起來就返回;全部交完,再按第 6 條一位一位等。

4. 請固定崗位上崗:在它自己的資料夾裡啟動,先讀手冊;頁面一直開著。
   ① herdr tab create --workspace <工作區編號> --cwd "<公司根目錄>/角色/<英文名>" --label <英文名> --no-focus
      取 result.tab.tab_id 和 result.root_pane.pane_id。
   ② herdr agent start <英文名> --kind <名冊裡的代號> --pane <pane_id> --timeout 60000 -- <那家固定崗位的啟動參數>
      那家沒有啟動參數,就連 -- 一起省掉。
   - 成功:退出碼 0,result.agent.name 是這個英文名。
   - error.code 是 agent_not_ready:它一啟動就停在一個問題上。先 herdr agent read <英文名> --source visible 看:如果只是問是否信任這個資料夾,並且路徑是公司根目錄或它下面的資料夾(老闆已授權),就選表示信任的那一項(不在高亮位置先用 herdr agent send-keys <英文名> down 或 up 移過去),再 herdr agent send-keys <英文名> enter,然後 herdr agent wait <英文名> --until idle --until done --timeout 60000;問的是別的,按第 8 條。
   - 報錯說這個窗格還沒回到命令提示字元:等 3 秒再執行 ②,最多 3 次。
   - 其他報錯:herdr pane read <pane_id> --source recent --lines 40 看頁面裡出了什麼,把看到的告訴老闆,不要自己亂試。

5. 請臨時幫手:在公司根目錄啟動,只讀總規矩,做完把那一頁關掉。誰請來的誰關;只關自己開的頁。
   ① herdr tab create --workspace <工作區編號> --cwd "<公司根目錄>" --label tmp-<短名> --no-focus
      取 result.tab.tab_id(寫進任務卡)和 result.root_pane.pane_id。
   ② herdr agent start tmp-<短名> --kind <名冊裡臨時幫手的代號> --pane <pane_id> --timeout 60000 -- <那家臨時幫手的啟動參數>
      沒有啟動參數,就連 -- 一起省掉。
   - error.code 是 agent_not_ready:和第 4 條一樣,只有「是否信任公司資料夾」可以替老闆選信任,別的按第 8 條。
   ③ 按第 3、6、7 條交接、等、驗收;結果讀完馬上關頁:herdr tab close <tab_id>
   - 關頁成功:退出碼 0,herdr agent list 裡已經沒有 tmp-<短名>。

6. 等對方:沒等到就接著等,絕不把同一段話發第二遍。
   herdr agent wait <英文名> --timeout 110000
   - 每輪不超過 110 秒,免得你自己執行命令的時限先到。在前台一輪一輪地等,不要把等待放進背景任務、自己先結束這一輪;沒等到結果就不算做完。
   - 退出碼 0:result.agent.agent_status 是 idle 或 done,按第 7 條驗收;是 blocked,按第 8 條。
   - 退出碼 1、error.code 是 timeout:先看產出文件在不在;不在就再等一輪,在了就按第 7 條判斷。Codex 做完一般是 idle,偶爾停在 unknown(官方說明這只是拿不準,例如 Codex 沒設終端機標題時),等不到 idle,所以每輪逾時後都先看產出文件。
   - 等了 30 分鐘還沒有產出文件:herdr agent read <英文名> --source visible 看它螢幕上在做什麼,告訴老闆,問要不要接著等。

7. 任務做沒做完,以產出的文件為準,不靠盯螢幕。
   做完=產出文件存在、不是空的,並且下面兩條滿足一條:對方的 agent_status 是 idle 或 done;或者對方停在 unknown,而 herdr agent read <英文名> --source recent-unwrapped --lines 40 的最後幾行裡有「完成 <產出完整路徑>」。
   對方已經停下,產出文件卻不在或是空的:用 herdr agent read <英文名> --source recent-unwrapped --lines 40 看它最後說了什麼,原話轉告老闆;不替它做,也不把同一段話再發一遍。
   上面兩處 agent read 報 agent_not_idle 時,改用 --source visible。
   驗收後直接打開產出文件讀。

8. 對方停著等確認(blocked 或 agent_not_ready)時,不硬發,不替老闆按鍵。
   herdr agent read <英文名> --source visible 看它在問什麼,告訴老闆:「<英文名> 那一頁在問:<一句話>」。老闆說「好了」,再用 herdr agent wait <英文名> --timeout 110000 接著等。

9. 改正式文件、對外發布、花錢之前,先停下來請示老闆,等老闆說「可以」。
   不關別人開的頁,不動別的工作區,不執行 herdr server stop。

(以上是要寫進總規矩的「協作規矩」全文。)
  成功:總規矩不超過 18000 位元組(wc -c AGENTS.md;Windows:(Get-Item AGENTS.md).Length)。

【最後給我一份已就緒清單】逐項打勾:
  [ ] herdr --version 的輸出;Mac / Linux 寫明 PATH 那一行加在了哪個文件,還是本來就有
  [ ] 設定檔位置,裡面已有 onboarding = false
  [ ] 裝了哪些整合(herdr integration status 裡 current 的那幾行)
  [ ] 官方技能:工具/技能/herdr/SKILL.md 的開頭幾行,和兩處連結的檢查輸出
  [ ] 權限文件、Codex 規則文件(用到 Codex 時)和各家啟動參數(寫進了員工名冊下面)
  [ ] 協作規矩已寫進總規矩(貼出這一節的前三行),總規矩多少位元組

【過關標誌】
清單每一項都打了勾,沒有遺留的報錯。

驗收重點

  • 已就緒清單六項全打勾,特別是 herdr integration status 每家都 current、協作規矩已進總規矩且不超過 18000 位元組。
  • 權限設計的分界:/駕駛艙/**、/研究/**、/角色/*/工作記錄/** 直接放行,herdr 協作命令與 git 直接放行,正式文件照樣攔——這是「草稿自由、正式把關」的核心。
  • 各家配置細節與卡點,見各 harness 頁:Claude Code、Codex、OpenCode、反重力。

下一步

辦公室裝好了,進 Herdr 把公司開起來:見開辦上崗與新增崗位。