クイックスタート¶
コマンド3つで動く:入れる、プロジェクトのディレクトリに入る、flower と打つ。このページはまずその3つを最初に置き、 そのあとに Enter を押した先で画面に何が起きるか、質問されたときにどう答えるか、動かないときまず何を見るかを書く。
入れて、ディレクトリに入って、flower と打つ¶
1行目のスクリプトは uv / pipx / pip を自動で探して flower コマンドを入れる。Python ≥ 3.10 さえあればよく、 Node も Claude Code CLI も不要。3行目は引数を一切取らず、shell で引用符を打つ必要もない。
別のインストール方法(pipx / pip / ソースから)を使いたい、あるいはこのスクリプトが自分のマシンで動かない場合はインストールを見ること —— ただし、あのページを読み切ってから戻る必要はない。
Enter を押したあと¶
そのマシンで初めて動かすときは、まず認証情報を聞かれる:API key かゲートウェイのアドレス。一度設定すれば ~/.config/flower/.env に保存され、以後どこでも効く。すでに Claude Code を入れて設定済みなら、 その token をそのまま借りるので、聞かれもしない。
認証情報が揃うと、カーソルが > で止まる:
この行は標準入力を読んでいて、shell の解析を通らない —— 全角の引用符も、スペースも、感嘆符もそのまま打てる。
走り出す前に - 验一下凭证… の1行が出る。これは本物の API プローブだ。認証情報が拒否されれば ! 凭证被拒:… を出し、 その場で再設定するか聞いてくる。つながらない場合は (探针没打通:… —— 当作网络问题,照常开跑) を出し、 元から問題のない token を再設定させたりはしない。
プローブを通ると作業が始まる。進み方は3ステップ。画面上の == の横線1本が ステップの境界で、右側の 1/3 が進捗だ:
== 确认需求 ======================================================== 1/3
? X 要跑在什么环境上?
1) 只在我这台 macOS 上
2) Linux 服务器
3) 两个都要
你的回答 (回车=跳过,让它自己判断) > 1
+ 只在我这台 macOS 上
? 「做完了」以什么为准?
你的回答 (回车=跳过,让它自己判断) > 能跑起来,并且 pytest 全绿
+ 能跑起来,并且 pytest 全绿
+ 完成 9 轮 · $0.53 · 用时 6:02
== 设定目标 ======================================================== 2/3
~ 把这份需求拆成能当场验证的条目
+ 完成 12 轮 · $0.41 · 用时 9:06
== 干活 ============================================================ 3/3
~ 先看一眼现在有什么,再决定第一刀切哪
* Read README.md
> 派人 coder 实现 X 的第一版,带最小测试
先让 coder 把骨架搭起来,我再看要不要拆第二个人。
- 上下文 36.8K · 累计 $0.94 · 12:44
+ 完成 12 轮 · $12.34 · 用时 52:53
+ 完成 37 轮 · $1.40 · 用时 58:19
总花费 $14.68 · 清单 /path/to/your/project/runs/manifest.json
アイコンはすべて ASCII:~ 思考、* ツール呼び出し、> 派遣、+ 成功、x 失敗、? 質問、<- 前回の続き。 emoji ではない —— emoji と罫線文字は端末のグリフフォールバックを誘発し、実測で端末を2回落とした。この文書の端末例は すべてこの ASCII のセットで、画面に出るものと同一だ。
もう3か所、よく見ておく価値がある:
- 最後の2行の
+ 完成は重複ではない。1行目は作業のラウンド、2行目は判定のラウンドだ —— 判定は自分のセッションで走るが、==の横線は新たに引かない。干活というステップの内側の1ラウンドだからだ。 実行マニフェストでの名前は干活·判定#1になる。 + 完成の行の$はそのラウンドの金額、用时は開始から今までの総経過時間。基準が違う。- 上下文 … · 累计 … · …のようなステータス行はメインスレッドにだけ従う。 subagent のコンテキストはそこに入らない。subagent のツール呼び出しは既定で表示され、|の縦線の後ろにインデントされる。 subagent が話した内容は-vを付けないと見えない —— あれは現場であって、意思決定ではない。
画面上のこの3ステップは、それぞれ誰が走っているか¶
| 画面上のステップ | 誰が走るか | 何をするか | 凍結先 | 詳細 |
|---|---|---|---|---|
确认需求 | クラリファイア | 質問するだけで手は動かさない。はっきりするまで聞き、ラウンド数の上限はない;最後に4節構成のブリーフを出す | .flower/notes/需求.md | 事前確認 |
设定目标 | ジャッジ | ブリーフを「ゴール + 判定リスト」に翻訳する。各項目はその場で検証できなければならない | .flower/notes/目标.md | ゴールガード |
干活 | コーディネーター が subagent を派遣して作業 | コーディネーターが作業を割って派遣し、レポートを読み、判断する;各ラウンドの終わりに、作業に参加していないジャッジが独立に「終わったか」を判定し、達成していなければ差し戻して続けさせる | コードそのもの | ゴールガード |
前2ステップは事前確認とゴールガードという 2つの仕組みの実装で、3ステップ目はその2つが合わさって管理している区間だ。判定は既定で最大3ラウンド(--rounds)、 --no-goal で丸ごと切れる —— 切ったあとは「終わったと本人が言った」時点で本当に終わりになる。
判定の結論は3種類しかない:達成、未達、この環境では検証できない。後ろの2つは別の結論だ —— 「ここでは検証できない」は決して合格にはせず、止まって人に聞く。
一度きちんと走らせると安くはない。実測の参照:HT002 は既存プロジェクトを macOS に入れて動かすまでで 4ステップ、約1時間、$38.24;HT001 はゼロから端末 IDE を書いて 10.4 時間、$171.62。何を聞いてくるかだけ先に見てから続けるか決めたいなら --clarify-only を使う。
質問にどう答えるか¶
? で始まる段落はこちらへの質問だ。答え方は3つ:
- 番号を打つ(
1/2/3)—— その項目を選ぶ。画面に+ <選んだ項目>が1行返る。 - そのまま文字を打つ —— 自由回答。選択肢の中である必要はない。
- そのまま Enter —— スキップして自分で判断させる。画面に
. 已跳过が1行返る。
既定で1800秒待つ(--timeout)。誰も答えなければ ! 无人应答 —— 它会自己判断,把假设记进「未知与假设」 を出し、そのまま先へ進む。止まりはしない。 質問回数は既定で無制限(--asks の既定は -1);正の数を渡すとそれが上限になり、使い切ると ! 提问额度用完 が出る。
走り出したあとも、こちらから話せる¶
画面の一番下には常に入力できるプロンプトが1行ある。飾りではない —— 各出力の前に消され、後に描き直されるので、 ログに押し流されて上へ消えることがない。文言は2種類あり、「未回答の質問があるかどうか」で切り替わる:
未回答の質問がないときは、2つのことができる。
そのまま一言打つ = 要件の追加。 作業は中断されず、次に受信箱を見たときに気づく。受領はこう出る:
「已追加进确认书」が重要だ:この一言は同時に 需求.md にも落ちる。だからステップ境界を越えて生き残る —— 次のステップは新しいセッションで、凍結物しか読まない。落とさなければ、言っても言わなかったのと同じになる。
? で始める = ついでに一言聞く。 別途の読み取り専用セッションを立てて答える。手元にあるのは直近60件のイベントと ワークベンチの中身だけだ。この横道は オラクルが走らせ、既定の上限は12ラウンド / $0.5:
答えたら捨てる —— そのやり取りは今回の実行のコンテキストには入らず、費用もメインの実行マニフェストには入らない。 runs/aside/ の下に自分用の1件として記録される。だから聞いても実行に影響しないし、その金額が本体の勘定に混ざる心配もない。
全角の ? は無効、半角の ? でなければならない
横道の質問と認識されるのは半角の ?(ASCII 0x3f)だけだ。入力メソッドが既定で出す全角の ? は認識されない —— その行は「要件の追加」として受信箱に送られ、エラーも出ない。ただ、待っている答えが永遠に来ないだけだ。 これはコード中のタイプミスで、不具合リストに記録済み。直るまでは、? を打つ前に入力メソッドを英数に切り替えること。
ついでに Ctrl+C について:実行中の1回目はそのラウンドを中断して一言言うであって、終了ではない。
もう一度押して初めて本当に終了する。(最初の 要做什么? プロンプトで Ctrl-C を押すとそのまま終了し、已取消 を出す。)
もう一度動かせば前回の続き¶
同じディレクトリでもう一度 flower と打つと、最初の一言が変わる:
接着上次? 直接回车 = 接着做;也可以说点新的;/new = 重开一件事(Ctrl-C 退出)
> 顺便支持代码块高亮
<- 在 ~/proj 接上上次 需求已确认 · 目标 7 条 · 干活上下文 71.4K · 第 3 次唤醒
<- の行はウェイクバナーで、そのディレクトリの現在の状態を報告している。 要件を問い直すことも、ゴールを設定し直すこともない。プロセスが kill されても、マシンが再起動しても同じだ。 このとき打った一言は 需求.md に追記され、判定リストの再導出をトリガーする —— 再導出しなければジャッジが読むのは古いリストのままで、新しく足した事柄が判定に入らない。 詳細と代償(コンテキストは増え続ける)は継続を見ること。
前回の続きにしたくなければ /new と打つ:前の区間の要件、ゴール、リネージは notes/archive/<时间戳>/ に移動され(削除はされない)、ゼロから始まる。
スクリプトに書く、無人運用¶
要求は引数として直接渡してもよい。フラグは要求の前でも後ろでも構わない:
flower "帮我做一个 X" # 要求を引数で渡す
flower --rounds 5 "帮我做一个 X" # フラグが前
flower "帮我做一个 X" --rounds 5 # フラグが後ろ、等価
echo "帮我做一个 X" | flower --timeout 0 # パイプで標準入力に流す、全自動
フラグだけ渡して要求を渡さなくてもよい —— flower --clarify-only は先に何をするか聞いてから進む。
「Enter を押してから入力する」経路を残してある理由。 コマンドラインの引用符は純粋な負担だ。実測で踏んだ: 閉じ引用符を全角の ” で打ってしまい、zsh が本物の閉じ引用符を待ち続け(dquote> の継続プロンプトに落ちた)、 プログラムが固まったように見えたが、実際は一度も起動していなかった。素の flower は標準入力を読み、shell の解析を通らないので、 全角引用符もスペースも感嘆符も改行もそのまま打てる。パイプの行も同じ入口を通る —— 標準入力が端末でないときはプロンプトのヘッダを出さず、そのまま1行読む。
無人運用では --timeout 0 を明示的に渡すこと
パイプ、nohup、CI では質問に答えられる人がいない。--timeout 0 を渡さないと:最初の質問は 「入力が閉じている」ためスキップされ、それ以降の質問は毎回1800秒まるまる待つ。質問がいくつかあれば数時間の空回りで、 しかもその間ずっと金を燃やしている。 --timeout 0 を渡すと、すべての質問が即座に空振りして「無人応答」を返し、自分で判断して先へ進む。 標準入力が端末でないとき、flower はまず1行の注意を出す: ! 标准输入不是终端,没人能回答提问。想让它自己判断就加 --timeout 0
動かないとき¶
flower と打っても反応がない、認証エラーが出る、あるいは出力が一目でおかしい —— そういうときは、いちばん安い1発で 認証情報とバイナリだけを切り分けて検証する。単一 agent、読み取り専用ツール、1発撃って両端が通るか見る:
| この部分 | 何か |
|---|---|
once | 単一 agent を1回走らせる:要件確認なし、ゴール設定なし、派遣なし |
-w PATH | agent の作業ディレクトリ。渡さなければカレントディレクトリ |
-v | 走り出す前に有効な認証設定を出力する。token は先頭4桁だけ残す |
once は既定で3つのツールしか与えない —— Read、Glob、Grep。何も書けないので、この1発は安い。 実測の参照:Opus 5 に100万ウィンドウ、サードパーティのゲートウェイ経由で、単ラウンドの下限は $0.1741。安いモデルならもっと下がる。 インストールのページの「入ったか確認する」で走らせているのは、このコマンドだ。
通ればこういう形になる —— 数字と本文は違っても、アイコンは違わない:
ANTHROPIC_AUTH_TOKEN = sk-1***(共 19 位)
ANTHROPIC_BASE_URL = https://your-gateway.example.com
ANTHROPIC_MODEL = claude-opus-5[1m]
- 验一下凭证…
~ 先看目录结构,再挑一两个文件读
* Glob **/*.py
* Read README.md
这是一个用 Rust 写的命令行 HTTP 压测工具。
- 累计 $0.00 · 0:00
+ 完成 4 轮 · $0.0932 · 用时 0:00
見分けるべきものが2つ:
- 最初の数行は
-vが出した有効な設定。ゲートウェイを間違えていれば一目で分かる —— このフラグが存在する主な理由がこれだ。 + 完成の行の$は本物。累计と用时はonceの経路では常に 0 になる (イベントごとにレンダラを作り直すので、状態が溜まらない)。
この1発が通れば、認証情報、ゲートウェイ、モデル名、同梱バイナリはすべて正しく、問題は別のところにある。通らなければインストールの範疇なので、 インストールに戻ること。
次に読むもの¶
| 知りたいこと | 読むもの |
|---|---|
| 画面に出るこれらの語が何を意味するのか | コアコンセプト |
| すべてのサブコマンドとフラグ、漏れなく | コマンドライン参照 |
| なぜ最初に大量に質問するのか、どうすれば減らせるのか | 事前確認 |
| 「終わったか」を誰が判定するのか、判定リストの書き方 | ゴールガード |
| 同じディレクトリで再度走らせるとなぜ続きになるのか | 継続 |
| コンテキストが満杯になったとき何をするのか(compact ではない) | ハンドオフ |
| 認証情報、ゲートウェイ、モデル名、環境変数 | 設定参照 |
| 端末を差し替えて、Web / TUI / 全自動につなぐ | インタラクション層 |
| 同梱の3ステップを使わず、自分のワークフローを書く | ワークフローを設計する · Python API |
| 実際の長期ランで何が起きたのか | HT001 · HT002 |
| ある語の正確な定義 | 用語集 |