@@ -88,22 +88,19 @@ your agent runs from `@runs/...`; alternatively set
8888prepare workspace -> run your agent -> write result/output_*.csv -> evaluate
8989```
9090
91- ## Agent Integration
91+ Local runs live under a run root written ` @runs/<agent>/<mode>/ ` . The ` @runs/ `
92+ prefix is just the naming convention for this directory, and it is git-ignored so
93+ your runs are never committed.
9294
93- PrepBench prepares workspaces and scores result tables; you run the agent. For
94- each case, point your agent at the prepared workspace, let it read only the files
95- exposed there, and have it write final tables under ` result/output_*.csv ` .
96- Intermediate code, notebooks, logs, or workflow JSON files may stay in the
97- workspace, but they are not scored.
95+ PrepBench is an honor-system benchmark: the repository ships evaluator and
96+ simulator assets, but your agent should read only the files exposed in its
97+ prepared workspace.
9898
99- In ` interactive ` and ` workflow ` mode, the agent may call the local user
100- simulator. In ` workflow ` mode, the agent also reads ` workflow_prompt.yaml ` for
101- the workflow operator instructions and uses the workflow executor to create the
102- final result tables.
99+ ## Quickstart
103100
104- ## Prepare a Workspace
101+ Prepare one case workspace, run your agent in it, then evaluate.
105102
106- Create one case workspace under a run root:
103+ ** 1. Prepare a workspace **
107104
108105``` bash
109106python scripts/prepare_run.py \
@@ -112,48 +109,61 @@ python scripts/prepare_run.py \
112109 --run-root @runs/my_agent/clarified
113110```
114111
115- The workspace layout is:
116-
117112``` text
118113@runs/my_agent/clarified/case_001/
119114 query.md
120115 inputs/
121116 result/
122117```
123118
124- ` interactive ` workspaces also contain ` clarification_guide.md ` . ` workflow `
125- workspaces contain both ` clarification_guide.md ` and ` workflow_prompt.yaml ` .
119+ ` interactive ` workspaces also contain ` clarification_guide.md ` ; ` workflow `
120+ workspaces add ` workflow_prompt.yaml ` . Workspace files are symlinks where
121+ possible, so setup is cheap.
122+
123+ ** 2. Run your agent**
126124
127- Repeat this command for each case you want to run. Workspace files are symlinks
128- where possible, so setup is cheap.
125+ Point your agent at the workspace path (not copied file contents). It reads
126+ ` query.md ` and ` inputs/ ` , may write code or other working files, and must write
127+ final tables to ` result/output_*.csv ` . See [ Agent Integration] ( #agent-integration )
128+ for what each mode exposes.
129129
130- Prepare every GT case for a complete mode run:
130+ ** 3. Evaluate **
131131
132132``` bash
133- python scripts/prepare_run .py \
133+ python scripts/evaluate_submission .py \
134134 --mode clarified \
135- --all \
136- --run-root @runs/my_agent/clarified
135+ --run-root @runs/my_agent/clarified \
136+ --case case_001
137137```
138138
139- ` --all ` uses the evaluator GT case set, then requires matching ` data/case_xxx `
140- directories for workspace setup.
139+ Results land in ` evaluation/summary.json ` and ` evaluation/summary.csv ` under the
140+ run root. See [ docs/EVALUATION.md] ( docs/EVALUATION.md ) for the scoring rules,
141+ summary fields, and full-run behavior.
141142
142- PrepBench is an honor-system benchmark. The repository still contains evaluator
143- and simulator assets, but the model-under-test should only read files exposed in
144- its prepared workspace.
143+ ## Run the Full Benchmark
145144
146- ## Run Your Agent
145+ Prepare every GT case with ` --all ` , then evaluate the run root without ` --case ` :
147146
148- Run your agent inside the case workspace. Give it the workspace path, not copied
149- file contents. It can inspect ` query.md ` , read ` inputs/ ` , write code or other
150- working files, and finally write result tables:
151-
152- ``` text
153- @runs/my_agent/<mode>/<case_id>/result/output_*.csv
147+ ``` bash
148+ python scripts/prepare_run.py --mode clarified --all --run-root @runs/my_agent/clarified
149+ python scripts/evaluate_submission.py --mode clarified --run-root @runs/my_agent/clarified
154150```
155151
156- For ` interactive ` , the agent may use ` clarification_guide.md ` and the Python API:
152+ ` --all ` uses the evaluator GT case set and requires matching ` data/case_xxx `
153+ directories. A full run exits with code 0 only when every case passes; missing
154+ folders or result tables are reported as ` NOT_FOUND ` .
155+
156+ ## Agent Integration
157+
158+ You run the agent; PrepBench only prepares workspaces and scores result tables.
159+ Point your agent at the prepared workspace (not copied file contents), let it read
160+ only the files exposed there, and have it write final tables under
161+ ` result/output_*.csv ` . Intermediate code, notebooks, logs, or workflow JSON may
162+ stay in the workspace but are not scored. See the [ Public Modes] ( #public-modes )
163+ table for what each mode exposes.
164+
165+ In ` interactive ` and ` workflow ` mode, the agent calls the local user simulator to
166+ clarify the request before writing results:
157167
158168``` python
159169from simulator import LocalUserSimulatorAPI
@@ -166,49 +176,15 @@ reply = api.ask(
166176)
167177```
168178
169- For comparable interactive runs, keep the simulator backend fixed. A practical
170- default is official ` deepseek-v4-flash ` in non-thinking mode with
171- ` PREPBENCH_SIMULATOR_TEMPERATURE=0 ` ; see ` docs/USER_SIMULATOR.md ` for
172- provider-specific settings.
173-
174- For ` workflow ` , the agent may read ` workflow_prompt.yaml ` , write prep code as an
175- intermediate artifact, convert that code into a workflow JSON file, and execute
176- the workflow from the workspace. The workflow executor reads from ` ./inputs ` and
177- writes to ` ./result ` , so the generated workflow produces the same
178- ` result/output_*.csv ` files that the evaluator scores.
179-
180- ## Evaluate
181-
182- Evaluate a full mode run:
183-
184- ``` bash
185- python scripts/evaluate_submission.py \
186- --mode clarified \
187- --run-root @runs/my_agent/clarified
188- ```
189-
190- For single-case debugging:
179+ Keep the simulator backend fixed for comparable runs (a practical default is
180+ ` deepseek-v4-flash ` in non-thinking mode with ` PREPBENCH_SIMULATOR_TEMPERATURE=0 ` ).
181+ See [ docs/USER_SIMULATOR.md] ( docs/USER_SIMULATOR.md ) for provider settings and the
182+ question budget.
191183
192- ``` bash
193- python scripts/evaluate_submission.py \
194- --mode clarified \
195- --run-root @runs/my_agent/clarified \
196- --case case_001
197- ```
198-
199- The evaluator writes:
200-
201- ``` text
202- @runs/my_agent/clarified/evaluation/summary.json
203- @runs/my_agent/clarified/evaluation/summary.csv
204- ```
205-
206- When ` --case ` is omitted, the evaluator checks every GT case. Missing case
207- folders or missing result tables are reported as ` NOT_FOUND ` . The command exits
208- with code 0 only when every evaluated case passes.
209-
210- If you prepared only one case, pass ` --case ` . Omit ` --case ` only for a complete
211- mode run.
184+ In ` workflow ` mode, the agent additionally reads ` workflow_prompt.yaml ` , converts
185+ its prep logic into a workflow JSON file, and runs the workflow executor (reads
186+ ` ./inputs ` , writes ` ./result ` ) to produce the result tables. See
187+ [ docs/WORKFLOW_EXECUTION.md] ( docs/WORKFLOW_EXECUTION.md ) .
212188
213189## Minimal Smoke Tests
214190
@@ -262,6 +238,3 @@ agent's workflow-generation path.
262238
263239** What does the evaluator score?** Only final result tables under
264240` result/output_*.csv ` .
265-
266- ** Where should local runs go?** Use ` @runs/<agent>/<mode>/ ` ; this directory is
267- ignored by git.
0 commit comments