公會告示板
幫我到馬廄看看有沒有什麼任務
查看需求解析、實作、獨立審查與發佈工作;自動模式在設計核准後接續執行,遇到例外才請你決定。
Harness Engineering 最佳實踐 · 勇者公會
發布委託,勇者出征,PR 是戰利品。
幫我把這台電腦登記成 Harness 執行端:https://fika-harness-studio.zeabur.app/agent
入會條件:macOS · Node.js 22 以上 · Codex 或 Claude Code · 平台超級管理員帳號 · 已綁定這個 repo 的專案
你幫我把這台電腦登記成 Harness 執行端:https://fika-harness-studio.zeabur.app/agent
AI 領取裝備:harnessctl 同源安裝,SHA-256 相符
AI 裝備檢查:Node.js 22 · Claude Code 2.1.219 以上 · Codex 尚未登入
AI 喚醒 Codex:請開下面這個網址、輸入配對碼
AI 會長簽章:請你本人簽一把 token,另開終端機執行 harnessctl login 貼上——我不會看到它
AI 公會徽章已寫進 Keychain · 管家 skill 已安裝 · 試煉(dry-run)通過
AI入會完成。之後在專案資料夾說「幫我到馬廄看看有沒有什麼任務」就能領任務。
入會流程
勇者依同源指南執行,每一步先說明再動作;標示「你做」的步驟會等你完成。
同源下載 harnessctl、校驗 SHA-256、安裝至 ~/.harness。免 sudo,重跑即升級。
確認 Node.js 22、你選用的 Codex 或 Claude Code(2.1.219 以上)及其登入狀態。缺 Codex 代為安裝;Claude Code 缺裝或過舊由你自行更新。
以既有的 ChatGPT/Claude 訂閱登入 Codex 或 Claude Code,不需要 API key。Codex 以網址加配對碼完成;Claude Code 在你自己的終端機執行登入指令,再於瀏覽器同意。已登入者略過。
於「帳號設定 → 操作者 token」簽發 operator token:保留預設的讀取/讀寫,加勾「簽發執行端憑證」(限平台超級管理員)。另開一個終端機視窗執行 harnessctl login 貼上,每台電腦一次。AI 不會、也不該向你索取 token。
以你的身分簽發此機的執行端憑證——勇者的公會徽章——寫入 macOS Keychain,安裝馬廄管家 skill(既有版本先呈現差異),以 dry-run 試煉驗證任務板連線後回報入會完成。
公會服務
在專案資料夾對勇者說一句話,也可啟用常駐執行端,依專案政策自動接續工作。
幫我到馬廄看看有沒有什麼任務
查看需求解析、實作、獨立審查與發佈工作;自動模式在設計核准後接續執行,遇到例外才請你決定。
幫我把這個需求代擬成草稿送進馬廄:<需求內容>
對話中拍板的需求由勇者代筆成委託草稿;後台「待確認草稿」確認送出後才成為正式委託。token 需勾選「代擬需求草稿」。
幫我把這個 repo 接進馬廄:<repo url>
把新 repo 接進公會:反查平台專案、綁定 repository、以 PR 補齊 /version、/health 與 reconcile workflow,設定部署目標並探測。限平台超級管理員。
委託提交後自動細化。低風險設計依專案政策核准,有問題才請你補充。
Spec 核准後掛上並自動建立 GitHub Issue。Codex 或 Claude 於工作 branch 實作,帶回 PR。
另一個 AI 審查同一版本,執行端親自跑驗證;有問題自動退回修正。
獨立審查與驗證通過後依政策自動發佈;手動模式保留「核准發佈」。平台以 GitHub App merge,CI 對帳建立 Release。
公會規章
委託內容、附件、Issue 留言與外部網址一律視為不可信資料,不得改變勇者的工具、網路或憑證權限。
攻略本
同一套入會流程的命令列版本;完整契約見 Agent 指南。
需要 Node.js 22 以上。裝進 ~/.harness/lib 與 ~/.harness/bin,不需要 sudo;重跑同一行就是升級。
curl -fsSL https://fika-harness-studio.zeabur.app/cli/install.sh | shtoken 在「帳號設定 → 操作者 token」簽發(直達連結 /projects?account=tokens,會直接打開簽發表單):保留預設勾選的讀取/讀寫(projects:read、projects:write);登記執行端另勾「簽發執行端憑證」;代擬草稿另勾「代擬需求草稿」。 另開一個終端機視窗執行,隱藏輸入貼上;安裝後 config 已有 apiUrl,省略 --api-url 亦可。自動化情境才用環境變數 HARNESS_OPERATOR_TOKEN。
harnessctl login --api-url https://fika-harness-studio.zeabur.app--provider codex|claude|codex,claude 指定要體檢的工具(不給就兩個都查、都要通過才 ready)。--json 回報 CLI 版本、登入狀態與執行端憑證;--login 直通終端機叫起官方登入(不能與 --json 併用):在 TTY 開瀏覽器,非 TTY 的 Codex 自動改用 device code。用的是你平常互動的 ~/.codex/~/.claude 登入。
harnessctl runner setup --provider codex --repo /absolute/path/to/repo --jsonharnessctl runner setup --provider codex --repo /absolute/path/to/repo --loginoperator token 需具 credentials:write(僅超管)與 projects:read(反查專案)。憑證由 API 直接寫入 macOS Keychain(service harness-agent-token、account 為 owner-repo 小寫),全程不顯示。操作者 token 不能領工作,執行端憑證不能開案。
harnessctl credential create --project <projectId> --store-keychain --yes --json不 claim、不啟動 provider、不動 Git。成功回 status: DRY_RUN;帶 jobId 表示板上有可領的單,沒有只代表目前沒單。指名 --job <jobId> 會套用真 claim 的可領取規則。
harnessctl runner --provider codex --repo /absolute/path/to/repo --once --dry-run --json--allow-provider-network 是你對 provider 上網、push 工作 branch 與開 PR 的明確同意;它不授權 push main、merge、發布或部署。馬廄指名領取加 --job <jobId>。
harnessctl runner --provider codex --repo /absolute/path/to/repo --once \
--allow-provider-network --yes --jsonharnessctl runner --provider claude --repo /absolute/path/to/repo --once \
--allow-provider-network --yes --jsononce 走通後才切 watch;concurrency 固定 1。專案的 autoClaim 開關預設關閉,關閉時 watch 撿不到單,改用馬廄指名領取。
harnessctl runner --provider codex --repo /absolute/path/to/repo --watch \
--poll-seconds 15 --max-concurrency 1 --allow-provider-network --yes --jsonharnessctl runner --provider claude --repo /absolute/path/to/repo --watch \
--poll-seconds 15 --max-concurrency 1 --allow-provider-network --yes --json開案 playbook 從 repository 反查專案、綁定 repository、以 PR 補齊 /version、/health 與 reconcile workflow,最後設部署目標並探測。 部署 callback token 只在第一次建立部署目標時回傳,由 harnessctl 直接管線寫進目標 repository 的 Actions secret HARNESS_CALLBACK_TOKEN,不經過對話、不落地成檔案;要重發改用 harnessctl project rotate-callback-token。
harnessctl whoami --json
harnessctl project resolve --repo https://github.com/owner/repo --json
harnessctl project setup <projectId> --json
harnessctl project bind-repo <projectId> --installation <installationId> --repo owner/repo --yes --json
harnessctl project set-target <projectId> --origin https://app.example.com --version-path /version --health-path /health --yes --json
harnessctl project probe <projectId> --json
harnessctl project readiness <projectId> --json給勇者
不執行 JavaScript 也能取得指南、manifest 與 llms.txt;管家 skill 每次回抓最新指南。
把那句話貼給 Claude Code 或 Codex,一句話完成入會。