Grill¶
Grill 把一段多轮人机讨论放进普通 Shell Rule。HG 等待终端会话结束,检查两个声明输出,再把产品契约和路线图原子提交。
真实会话当前需要 macOS、iTerm2 和已经登录的 codex CLI。mock 路径只需要 Python。
完整图定义¶
这是完整配置,也是六个一等案例里最小的一张图。你可以下载原始 YAML。
version: 1
project:
name: experimental-interactive-grill
default_targets: [roadmap]
slots:
goal: { kind: file, path: goal.md }
grill_driver: { kind: file, path: scripts/grill_session.py }
product_contract: { kind: file, path: artifacts/product.json }
roadmap: { kind: file, path: artifacts/roadmap.json }
rules:
- id: product_grill
in: [goal, grill_driver]
out: [product_contract, roadmap]
run: "python3 in/grill_driver"
limits: { timeout: 3600, max_attempts: 1 }
Slot 怎样分工¶
| Slot | 类型 | 在图里的作用 |
|---|---|---|
goal |
file | 用户希望讨论并澄清的产品目标。 |
grill_driver |
file | 打开终端、维护多轮会话并落实退出协议的 Python 脚本。 |
product_contract |
file | 会话结束后得到的结构化产品契约。 |
roadmap |
file | 同一次会话写出的执行路线图,也是默认目标。 |
Rule 逐条看¶
| Rule | 读取 | 写入 | 作用 |
|---|---|---|---|
product_grill |
goal、grill_driver | product_contract、roadmap | 调用会话驱动脚本。最长运行一小时,只允许一个 Attempt。两个输出都通过校验后才一起提交。 |
多轮对话留在执行器内部。图只关心输入是什么、成功后必须得到哪些工件。会话中途退出或只写出一个文件时,Attempt 不会提交半套结果。
先跑 mock¶
cd examples/03-interactive-grill
hg init --project .
hg put goal goal.md --project .
hg put grill_driver scripts/grill_session.py --project .
HG_GRILL_MODE=mock hg run roadmap --project .
hg materialize product_contract --project .
hg materialize roadmap --project .
完成后,artifacts/product.json 与 artifacts/roadmap.json 应同时存在。
再跑真实会话¶
去掉 HG_GRILL_MODE=mock,重新运行目标。
iTerm2 会打开一个新窗口。你可以和 Agent 连续讨论,直到两个输出都写好。输入 /exit 后,父 Attempt 才继续校验并提交。