Community寫作與編輯github.com

xuyanwen2012/humanize

透過 humanize (hmz) 執行編碼或研究任務,這是一個代理流程協調器,能以循環方式驅動 Claude Code、Codex 及其他代理 CLI,例如實作者 + 審查者 (rlar)。

humanize 是什麼?

humanize (hmz) 是一款代理流程協調工具,專門設計用來以循環方式執行編碼代理 CLI,例如 Claude 和 Codex,支援實作與審查的分工循環(如 rlar)。它是一個透過 `uv tool install hmz` 安裝的 PyPI 套件,提供 TUI、無頭執行和網頁介面等多種操作模式。hmz 內建多種流程:rlar(預設,Claude 實作,Codex 審查)、goal(單一代理自我驗證)、continue_loop(長時任務)、ralph_loop(每輪新會話)等,適合需要長時間自動運行的任務(數小時到數天)。使用者可以編寫包含目標、待讀文件、驗收標準、範圍外事項和慣例的任務檔案,然後透過 `hmz exec` 在背景啟動,結束後檢查結果。配額控制(時間、成本、代幣)可防止執行無限循環,且支援備份與恢復功能。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/xuyanwen2012/claude-skills/tree/HEAD/humanize

Installed? Explore more 寫作與編輯 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

humanize (hmz)

humanize(hmz,https://github.com/humanfia/humanize,文件 https://docs.humanfia.ai/humanize/) 能夠在流程中執行編碼代理 CLI(claude、codex、agy……):這些流程是決定誰工作、誰審查以及何時停止的循環。它是一個來自 PyPI 的 uv 工具(uv tool install hmz,~/.local/bin/hmz);hmz update 可升級它。單純的 hmz 會為當前目錄開啟 TUI,hmz exec 以無頭模式執行流程,hmz web 則在瀏覽器中提供所有工作區的執行記錄。本文基於 0.2.2 版本撰寫;此 alpha 版本變化頻繁,因此請以 hmz exec --help 為準。

使用者的預設值(請根據你的設定編輯)

設定預設值
流程rlar:Claude 實作,Codex 審查
實作者claude/claude-opus-5-5:high
審查者codex/gpt-6.1-sol:high(有時為 :ultra)
配額budget.duration=1d,無成本或代幣上限

除非使用者另有說明,或者工作區已儲存預設值(見下方),否則請使用這些設定。請不要詢問配額相關問題。

hmz exec -f rlar \
  -a actor=claude/claude-opus-5-5:high \
  -a reviewer=codex/gpt-6.1-sol:high \
  -p budget.duration=1d \
  --json "$(cat "$TASK")" > "$LOG" 2>&1

工作流程

  1. 前置檢查
    • 在 ~/.hmz/settings.yaml 的 workspaces: 下查詢目錄。如果有對應項目,則優先使用其流程、代理、環境和配額,而非上述預設值。
    • 檢查你傳入的每個模型和努力等級是否存在於 ~/.hmz/models/<cli>.json 中。hmz 不會提前驗證規格:錯誤的規格只會在第一次使用該規格的回合中失敗,因此在 rlar 中,錯誤的審查模型會在實作者完成整個第一回合後才顯現。
    • 檢查 git status。hmz 代理執行時會繞過批准。如果儲存庫有你未建立的未提交工作,或者它可能影響即時系統(基礎設施、部署腳本、憑證),請告知使用者並建議在開始前建立 git worktree。
  2. 編寫任務檔案(下一節)於暫存區,若任務非簡單或定義模糊,請向使用者展示。
  3. 在背景啟動 使用 run_in_background 並將 --json 導向暫存區中的日誌。執行時間從數小時到數天不等。回報命令、任務檔案、日誌路徑以及如何觀看:在該目錄中執行 hmz 會開啟該次執行的 TUI,或使用 hmz web。
  4. 讀取結果(參見結果),然後自行檢查儲存庫差異並執行專案的檢查,再宣告完成。審查者的「完成」是證據,而非證明。
  5. 停止。停止你啟動的背景任務。絕對不要單純使用 pkill hmz,因為使用者通常有其他執行中的任務。檢查 pgrep -af hmz 並僅停止你的 PID。
  6. 恢復。在同一目錄中使用相同的 -f 搭配 --resume(限制見下方)。

編寫任務

實作者只會看到任務,而在 rlar 中,審查者會根據任務判斷儲存庫狀態,因此模糊的任務會導致無窮的審查循環或過早的「完成」。請包含:

  • 目標:以一到兩句話說明結果,而非步驟。
  • 優先閱讀:定義工作的檔案、規格或文件(例如 OpenSpec 變更、議題、設計註記),讓代理不需重新發現它們。
  • 完成條件:具體的驗收標準,審查者可以檢查:必須通過的命令、必須保持的行為、要達到的數值。
  • 範圍外事項:不應觸碰的內容,以及任何需要人類介入的操作(部署、推送、刪除、付費服務、即時系統變更)。
  • 慣例:提交策略(提交或保持未提交、訊息風格)、日誌和產出物的放置位置。

將其寫入檔案,並傳遞 "$(cat "$TASK")",或告訴代理先讀取該檔案。以 - 開頭的任務需放在 -- 之後。

命令格式

hmz exec -f FLOW -a ROLE=SPEC[,...] [-e ROLE=SPEC[,...]] -p KEY=VALUE[,...] [opts] task

  • -f:流程名稱。內建流程為裸名(rlar);使用者的自訂流程為 @user/NAME(來自 ~/.hmz/flows/NAME/),專案流程為 @local/NAME。也可以是 .、/ 或 ~ 開頭的路徑、git+URL#subdir,或 NAME:OTHER(同一模組內的其他流程)。裸名會先解析最近的匹配,因此使用者的流程可以覆蓋內建流程。
  • -a:ROLE=CLI[@PROVIDER]/MODEL[:EFFORT],每個流程定義的代理角色一個。可以重複旗標或以逗號分隔。
  • -e:ROLE=BACKEND[@PROVIDER][/WORKDIR],用於包含環境角色的流程。PROVIDER 是儲存在設定中的執行環境,或對於 ssh 而言,是方括號中的主機:box=ssh@[user@host:22]/abs/path。若未提供提供者,則為本機。
  • -p:流程參數,會根據參數的型別或 JSON 進行解析。除了 chat 之外,每個流程都需要配額:budget.duration(1d、2h30m、PT1H)、budget.cost(美元)、budget.output_tokens。budget.graceful=true 讓最後一個回合完成(或使用 budget.graceful.<limit> 指定特定限制)。
  • --json:將 NDJSON 事件輸出至 stdout。當你需要讀取結果時使用。
  • --resume:從此流程在此處的最新執行中繼續,前提是該流程可恢復(ralph_loop 和 continue_loop 不行)。恢復 rlar 時,新的實作者只會收到最後一次審查,而非舊的實作者會話。
  • --backup NAME:將史詩級任務備份到設定中儲存的備份目標(none 關閉備份)。
  • --profile-flow / --profile-environment:在執行追蹤中加入取樣。僅在診斷慢速執行時使用。
  • 在每個內建循環流程中,失敗的回合會終止執行,因此不要依賴循環重試。

選擇流程

流程角色使用時機
rlaractor、reviewer預設。需要獨立檢查的工作。實作者在單一會話中工作,新的審查者每輪根據儲存庫檢查實作者的聲明,當審查者宣告完成時結束。
chatassistant單一代理,一次性,無循環且無配額。適用於問題和小型編輯。
goalworker單一 /goal <task> 會話,直到模型認為目標達成。適用於具有明確標準且可自我驗證的工作。
continue_loopagent傳送任務一次,然後持續發送「繼續」。適用於單一上下文中長時間的耗費。
ralph_loopagent每輪使用相同任務的全新會話。進度存在於儲存庫中,而非上下文中。
stateful_ralphagent單一會話,每輪重新傳送任務。
flame_chasefirst_chaser、second_chaser兩個代理在全新會話中輪流執行。

使用者的流程位於 ~/.hmz/flows/<name>/__init__.py。使用 ls ~/.hmz/flows/ 列出它們,並在使用前閱讀文件字串以了解角色和參數。要獲取任何流程的完整合約: ~/.local/share/uv/tools/hmz/bin/python -c "import hmz.flows.builtin.rlar as m; print(m.__doc__)"。

結果

  • 每次執行都是 ~/.hmz/epics/<以破折號代替斜線的目前工作目錄>/<時間戳記>/ 下的一個史詩級任務,epic.jsonl 包含摘要事件:began(流程、任務)、opened(每個代理會話)、usage(成本、輸出代幣數、秒數)以及帶有 how 欄位的 ended:當流程自身的停止條件滿足時為 done,否則為 stopped(可能還有其他值)。
  • --json 日誌包含完整的事件串流,包括錯誤,例如回合失敗時的 HarnessUnrecoverable。閱讀其結尾以了解執行結束的原因。
  • 回報結果、來自 usage 的成本和持續時間,以及你自己的差異檢查。

設定說明

  • 已儲存的執行環境指定代理 CLI 的執行位置,搭配 harness:(affinity: 是舊名稱,仍會讀取)。如果遠端機器上沒有設定 harness 的執行環境,不會回退到在本機執行 CLI,因此當遠端主機沒有 CLI 時,請設定 harness: local。
  • 僅當 btw 設定為代理名稱時(設定 › 一般),對史詩級任務的 /btw 側面問題才能運作。
  • hmz web 執行頁面位於 #/epics/ 下。

相關技能