localagentbrowser 1.52__tar.gz → 1.53__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {localagentbrowser-1.52 → localagentbrowser-1.53}/CHANGELOG.md +33 -1
- {localagentbrowser-1.52 → localagentbrowser-1.53}/MANIFEST.in +2 -1
- {localagentbrowser-1.52/localagentbrowser.egg-info → localagentbrowser-1.53}/PKG-INFO +56 -9
- {localagentbrowser-1.52 → localagentbrowser-1.53}/README.md +55 -8
- {localagentbrowser-1.52 → localagentbrowser-1.53}/agent_browser.py +144 -35
- {localagentbrowser-1.52 → localagentbrowser-1.53/localagentbrowser.egg-info}/PKG-INFO +56 -9
- {localagentbrowser-1.52 → localagentbrowser-1.53}/localagentbrowser.egg-info/SOURCES.txt +5 -1
- {localagentbrowser-1.52 → localagentbrowser-1.53}/pyproject.toml +1 -1
- localagentbrowser-1.53/tests/test_checklist.py +90 -0
- {localagentbrowser-1.52 → localagentbrowser-1.53}/tests/test_journal.py +6 -0
- {localagentbrowser-1.52 → localagentbrowser-1.53}/tests/test_main_loop.py +21 -6
- localagentbrowser-1.53/tests/test_regression.py +104 -0
- localagentbrowser-1.53/tools/live_test.py +68 -0
- localagentbrowser-1.53/tools/regression.py +386 -0
- {localagentbrowser-1.52 → localagentbrowser-1.53}/LICENSE +0 -0
- {localagentbrowser-1.52 → localagentbrowser-1.53}/localagentbrowser.egg-info/dependency_links.txt +0 -0
- {localagentbrowser-1.52 → localagentbrowser-1.53}/localagentbrowser.egg-info/entry_points.txt +0 -0
- {localagentbrowser-1.52 → localagentbrowser-1.53}/localagentbrowser.egg-info/requires.txt +0 -0
- {localagentbrowser-1.52 → localagentbrowser-1.53}/localagentbrowser.egg-info/top_level.txt +0 -0
- {localagentbrowser-1.52 → localagentbrowser-1.53}/setup.cfg +0 -0
- {localagentbrowser-1.52 → localagentbrowser-1.53}/tests/conftest.py +0 -0
- {localagentbrowser-1.52 → localagentbrowser-1.53}/tests/fakes.py +0 -0
- {localagentbrowser-1.52 → localagentbrowser-1.53}/tests/test_decisions.py +0 -0
- {localagentbrowser-1.52 → localagentbrowser-1.53}/tests/test_duplicates.py +0 -0
- {localagentbrowser-1.52 → localagentbrowser-1.53}/tests/test_model_turns.py +0 -0
- {localagentbrowser-1.52 → localagentbrowser-1.53}/tests/test_page_text.py +0 -0
|
@@ -1,9 +1,41 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
Every version of `agent_browser.py`, newest first. Each version is also a tagged commit (`v1.11` … `v1.
|
|
3
|
+
Every version of `agent_browser.py`, newest first. Each version is also a tagged commit (`v1.11` … `v1.53`).
|
|
4
4
|
Timings are from live runs on the development machine (Intel i5-9500, 6 cores, no GPU, Qwen2.5-7B-Instruct
|
|
5
5
|
Q4_K_M in LM Studio), where reading the prompt takes about 90% of every model call.
|
|
6
6
|
|
|
7
|
+
## [1.53] - 2026-10-17
|
|
8
|
+
### Added
|
|
9
|
+
- Regression suite (`tools/regression.py`): seven objectives, one of each kind of task tested so far, run one
|
|
10
|
+
after the other with a time limit each and scored the same way (finished or not, turns, model time, checklist
|
|
11
|
+
progress, checks fired, and word checks for missing answers, missed conditions, uncited paragraphs, numbers
|
|
12
|
+
missing from the findings and a missing opinion), with a comparison to an earlier run. Single runs had been
|
|
13
|
+
flattering: on 1.52 the suite finished only 2 of 7 tasks within their limits, including tasks earlier single
|
|
14
|
+
runs had finished. Refused actions in the journal now name the check that refused them, so the suite can count
|
|
15
|
+
each check, and the live test runner times every model call and saves the model's full replies.
|
|
16
|
+
- Objective checklist. The 1.52 suite showed the main failure: every check asked the model to split the
|
|
17
|
+
objective into parts again, from memory, and the split drifted. On the list task it blocked its own FINISH
|
|
18
|
+
over "migration strategies", which the objective never asked for (an idea from a page it had read), and never
|
|
19
|
+
looked for a third suite; on the comparison it added "data types" and never covered "many simultaneous users".
|
|
20
|
+
Now one short call at the start splits the objective into a fixed checklist; asked on its own, the model split
|
|
21
|
+
all seven test objectives cleanly and kept their conditions. Each DISCOVER names the items it serves
|
|
22
|
+
(`checklist_items` in the reply), the checklist with its discoveries is in fresh prompts and in the note after
|
|
23
|
+
each discovery, the finish, progress and objective checks go through its items ("do not add other parts"),
|
|
24
|
+
the read-on check names the items still open, the final result covers every item or says it was not found,
|
|
25
|
+
and the report lists the checklist. The split call uses the same system prompt as turn 1, so LM Studio's cache
|
|
26
|
+
of it still applies there (without that, turn 1 took 128 s instead of about 40).
|
|
27
|
+
### Fixed
|
|
28
|
+
- The report flagged the numbers of numbered headings ("#### 1. Setup") as numbers missing from the findings.
|
|
29
|
+
|
|
30
|
+
Regression run against 1.52 (model minutes in brackets): 5 of 7 tasks finished instead of 2, and the total model
|
|
31
|
+
time fell from 254 to 200 minutes. The list (30.1, was a 45-minute time limit), comparison (39.0, every part
|
|
32
|
+
covered), explanation (12.9, was 60 without finishing) and opinion (38.1) tasks now finish; the factual question
|
|
33
|
+
still does (13.6, was 11.9). What is not better: the list names WPS Office, which is not open source; the
|
|
34
|
+
explanation finished from a single overview paragraph that the model claimed covered all four items, without
|
|
35
|
+
oxygen or water; the how-to found the materials and steps but not the aftercare before its time limit; and the
|
|
36
|
+
documentation task now went to python.org, as asked, but worked through the items one search at a time and hit
|
|
37
|
+
its 30-minute limit before the last one (it had finished in 15 minutes on 1.52, from a tutorial site).
|
|
38
|
+
|
|
7
39
|
## [1.52] - 2026-10-16
|
|
8
40
|
### Changed
|
|
9
41
|
- The note after each DISCOVER also says to work on parts of the objective that are not covered yet before
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: localagentbrowser
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.53
|
|
4
4
|
Summary: An autonomous web agent driven by a local LLM (LM Studio) and Playwright. Runs entirely on your own machine.
|
|
5
5
|
Author: SnowFX
|
|
6
6
|
License-Expression: MIT
|
|
@@ -56,8 +56,8 @@ and tuned to work well with a **small 7B model on a CPU, no GPU required**.
|
|
|
56
56
|
- ⚡ **Built for slow hardware.** It reuses LM Studio's prompt cache, so most turns process only what changed.
|
|
57
57
|
- 📝 **A readable report every time.** `research_report.md` holds the final result and every finding with its
|
|
58
58
|
source, written however the run ends; `research_log.txt` keeps every action and reason.
|
|
59
|
-
- ✅ **Tested.**
|
|
60
|
-
plus live runs on seven different kinds of task
|
|
59
|
+
- ✅ **Tested.** 136 tests on Linux and Windows, Python 3.10–3.13, run in about a second with no model or browser,
|
|
60
|
+
plus a [regression suite](#regression-suite) of live runs on seven different kinds of task.
|
|
61
61
|
|
|
62
62
|
📖 **The story behind it:** [Teaching a 7B model on a CPU to finish what it starts](https://dev.to/snowfxxx/teaching-a-7b-model-on-a-cpu-to-finish-what-it-starts-1amc),
|
|
63
63
|
six lessons from 30 versions of keeping a small local model on track.
|
|
@@ -193,7 +193,23 @@ does not generalise; the [changelog](https://github.com/SnowFXXX/LocalAgentBrows
|
|
|
193
193
|
| List of items | Three free, open-source alternatives to Microsoft Office and what each is best at | 1.46, 1.51 | LibreOffice and OnlyOffice with their strengths, cited, in 18 turns (49 min); the third, FreeOffice, is free but not open source, and LibreOffice was recorded four times in different words; on 1.51: LibreOffice, OnlyOffice and Apache OpenOffice, all open source, in 7 turns (16 min) |
|
|
194
194
|
| Step-by-step how-to | Make a sourdough starter, with quantities and what to do each day | 1.36–1.37 | A clear plan in 7 turns (19 min), but it invented the first water amount; 1.37 stops guessing and flags unsupported numbers, and the agent then went looking for the missing details |
|
|
195
195
|
| Step-by-step how-to | Repot a houseplant: what you need, the steps, and care for the first two weeks | 1.43–1.44, 1.51 | 1.43 recorded six steps it wrote itself before reading the part that had them; 1.44 recorded the guide's real steps but took 68 min and its result left one out. 1.51: every step from the page, in 7 turns (29 min), and it says that no care instructions beyond the first watering were found |
|
|
196
|
-
| Explanation of a topic | How photosynthesis works: inputs and outputs, both stages and where each takes place | 1.41–1.42 | A complete, cited explanation in 18 turns (45 min); 1.41 read four parts of a relevant page without recording them and had not finished after 49 min |
|
|
196
|
+
| Explanation of a topic | How photosynthesis works: inputs and outputs, both stages and where each takes place | 1.41–1.42, 1.52 | A complete, cited explanation in 18 turns (45 min); 1.41 read four parts of a relevant page without recording them and had not finished after 49 min. 1.52 recorded both stages and where each takes place, but did not finish within 65 min: it read the history sections of a long encyclopedia article twice and never recorded the inputs and outputs |
|
|
197
|
+
|
|
198
|
+
### Regression suite
|
|
199
|
+
|
|
200
|
+
Since 1.53, every change is measured on the same seven objectives, one of each kind above, run one after the other
|
|
201
|
+
with a time limit each (`tools/regression.py`, see [Testing](#testing)). Single runs vary with the pages a search
|
|
202
|
+
turns up, so the suite compares versions on all seven at once:
|
|
203
|
+
|
|
204
|
+
| Task | 1.52 | 1.53 (objective checklist) |
|
|
205
|
+
|---|---|---|
|
|
206
|
+
| Factual question | Finished, 12 min | Finished, 14 min |
|
|
207
|
+
| List of three office suites | Time limit (45 min) | Finished, 30 min; but one of the three (WPS Office) is not open source |
|
|
208
|
+
| Comparison and recommendation | Time limit (45 min) | Finished, 39 min, every part covered |
|
|
209
|
+
| How-to (repotting) | Time limit (45 min) | Time limit (45 min); materials and steps found, aftercare not |
|
|
210
|
+
| Explanation (photosynthesis) | Time limit (60 min) | Finished, 13 min, but thin: one finding, no oxygen or water |
|
|
211
|
+
| Opinion (owls) | Time limit (45 min) | Finished, 38 min, four cultures and an opinion |
|
|
212
|
+
| Documentation (venv, official docs) | Finished, 15 min, from a tutorial site | Time limit (30 min); create and activate found, from python.org |
|
|
197
213
|
|
|
198
214
|
## How it works
|
|
199
215
|
|
|
@@ -233,6 +249,11 @@ flowchart LR
|
|
|
233
249
|
(or has a sentence that does) is sent back once, asking for only what the page says in its own words, and
|
|
234
250
|
one far from anything on the page is refused outright. A small model will otherwise "complete" a list from
|
|
235
251
|
its own knowledge when a page says "follow these 6 steps" and the steps come later.
|
|
252
|
+
- **An objective checklist.** At the start, one short model call splits the objective into a fixed checklist of
|
|
253
|
+
what the result must contain, keeping conditions like "free, open-source" or "three". Each finding names the
|
|
254
|
+
items it serves, the checklist with its findings is in every prompt, and every check goes through these items
|
|
255
|
+
instead of asking the model to split the objective again from memory, which drifted: it once blocked its own
|
|
256
|
+
finish over "migration strategies", which the objective never asked for.
|
|
236
257
|
- **Numbered findings.** Findings are numbered in the prompt and listed with every check, and the model names
|
|
237
258
|
the finding that covers each part of the objective ("covered by [2]") instead of just saying "covered".
|
|
238
259
|
- **Knowing when it's done.** After every new finding the model is asked whether the objective is now fully
|
|
@@ -285,8 +306,9 @@ Measured on an Intel i5-9500 (6 cores, no GPU) with Qwen2.5-7B-Instruct Q4_K_M a
|
|
|
285
306
|
| Fresh prompt after the context budget is reached | 160–380 s (longest with long pages) |
|
|
286
307
|
| Writing the final result (once, at the end) | 50–190 s, depending on how much was found |
|
|
287
308
|
|
|
288
|
-
Whole runs
|
|
289
|
-
|
|
309
|
+
Whole runs vary with the pages a search turns up. In the results table, a factual question takes about 12
|
|
310
|
+
minutes of model time, a list of three items 16 to 49, a comparison 25 to 38 and an explanation 45 or more. A
|
|
311
|
+
GPU or a smaller model will be much faster.
|
|
290
312
|
|
|
291
313
|
## FAQ
|
|
292
314
|
|
|
@@ -321,9 +343,18 @@ turn that brings in a new page takes a few minutes. See [Performance](#performan
|
|
|
321
343
|
research, an opinion from several sources, a factual question, a comparison, a how-to, a list and an
|
|
322
344
|
explanation of a topic. Each one
|
|
323
345
|
exposed something that did not generalise and was fixed; other kinds of tasks may expose more.
|
|
324
|
-
- **Reading
|
|
325
|
-
relevant parts
|
|
326
|
-
explanation task
|
|
346
|
+
- **Reading long pages and knowing when it has enough.** The model used to read long pages part by part
|
|
347
|
+
without recording the relevant parts; since 1.42 it must say what a part contains before reading on. On 1.52
|
|
348
|
+
the explanation task still lost about 20 minutes reading unrelated sections of a long article and did not
|
|
349
|
+
finish. On 1.53, with the objective checklist, it finished in 13 minutes, but from a single overview paragraph
|
|
350
|
+
that left out oxygen and water: the model can now claim one finding covers every item. Judging whether a
|
|
351
|
+
finding really covers an item is the weakest area.
|
|
352
|
+
- **Conditions in the objective.** A small model tends to drop conditions such as "open source" or "using the
|
|
353
|
+
official documentation": a list of open-source office suites once included FreeOffice (free but not open
|
|
354
|
+
source), and a task that asked for the official Python documentation used a tutorial site. The objective
|
|
355
|
+
checklist keeps the conditions in view (the documentation task went to python.org on 1.53), but on the same
|
|
356
|
+
run the list task still named WPS Office, which is not open source. Check the result against any conditions
|
|
357
|
+
you set.
|
|
327
358
|
- **A small model's judgement is the ceiling.** It sometimes drifts to loosely related pages, prefers
|
|
328
359
|
secondary sources or stays with one source too long, and results vary with the first pages a search turns
|
|
329
360
|
up; every finding is in `research_report.md` regardless.
|
|
@@ -348,6 +379,9 @@ turn that brings in a new page takes a few minutes. See [Performance](#performan
|
|
|
348
379
|
- [x] Finish as soon as the objective is covered (1.35)
|
|
349
380
|
- [x] Get the model to weigh each part of a long page before reading on (1.42)
|
|
350
381
|
- [ ] Let very strict objectives end with the gaps named instead of searching indefinitely (they finish since 1.50; naming the gaps is still open)
|
|
382
|
+
- [x] Measure every change on a regression suite of seven kinds of task (1.53)
|
|
383
|
+
- [x] Keep a fixed checklist of the objective's parts instead of re-splitting it at every check (1.53)
|
|
384
|
+
- [ ] Check that a finding really covers its checklist item, including conditions like "open source"
|
|
351
385
|
- [ ] Try more kinds of objectives (seven so far) and adjust the rules that don't generalise
|
|
352
386
|
- [ ] Make fresh prompts (the slowest kind of turn) cheaper still (31% cheaper since 1.34)
|
|
353
387
|
- [ ] Interacting with pages (clicking, forms) for tasks beyond reading
|
|
@@ -372,6 +406,19 @@ call:
|
|
|
372
406
|
python tools/live_test.py "Your objective here" --minutes 25
|
|
373
407
|
```
|
|
374
408
|
|
|
409
|
+
To measure a change on all seven kinds of task (about four hours on a CPU), compared with an earlier run:
|
|
410
|
+
|
|
411
|
+
```bash
|
|
412
|
+
python tools/regression.py --baseline regression_runs/<earlier run>/summary.json
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
Each run gets a folder in `regression_runs/` with every task's report, journal, console output and prompt
|
|
416
|
+
trace, and a `summary.md` that is updated after each task: whether it finished, turns, model time, how many
|
|
417
|
+
checklist items got findings, which checks fired, and problems found by simple word checks (missing answers,
|
|
418
|
+
missed conditions such as a non-open-source item, uncited paragraphs, numbers missing from the findings, a
|
|
419
|
+
missing opinion). `--suite all` adds five more tasks, `--only` runs some of them, and `--rescore` scores an
|
|
420
|
+
earlier run again without the model.
|
|
421
|
+
|
|
375
422
|
## Contributing
|
|
376
423
|
|
|
377
424
|
Contributions are welcome! See [CONTRIBUTING.md](https://github.com/SnowFXXX/LocalAgentBrowser/blob/main/CONTRIBUTING.md) for setup and guidelines, and please follow
|
|
@@ -24,8 +24,8 @@ and tuned to work well with a **small 7B model on a CPU, no GPU required**.
|
|
|
24
24
|
- ⚡ **Built for slow hardware.** It reuses LM Studio's prompt cache, so most turns process only what changed.
|
|
25
25
|
- 📝 **A readable report every time.** `research_report.md` holds the final result and every finding with its
|
|
26
26
|
source, written however the run ends; `research_log.txt` keeps every action and reason.
|
|
27
|
-
- ✅ **Tested.**
|
|
28
|
-
plus live runs on seven different kinds of task
|
|
27
|
+
- ✅ **Tested.** 136 tests on Linux and Windows, Python 3.10–3.13, run in about a second with no model or browser,
|
|
28
|
+
plus a [regression suite](#regression-suite) of live runs on seven different kinds of task.
|
|
29
29
|
|
|
30
30
|
📖 **The story behind it:** [Teaching a 7B model on a CPU to finish what it starts](https://dev.to/snowfxxx/teaching-a-7b-model-on-a-cpu-to-finish-what-it-starts-1amc),
|
|
31
31
|
six lessons from 30 versions of keeping a small local model on track.
|
|
@@ -161,7 +161,23 @@ does not generalise; the [changelog](https://github.com/SnowFXXX/LocalAgentBrows
|
|
|
161
161
|
| List of items | Three free, open-source alternatives to Microsoft Office and what each is best at | 1.46, 1.51 | LibreOffice and OnlyOffice with their strengths, cited, in 18 turns (49 min); the third, FreeOffice, is free but not open source, and LibreOffice was recorded four times in different words; on 1.51: LibreOffice, OnlyOffice and Apache OpenOffice, all open source, in 7 turns (16 min) |
|
|
162
162
|
| Step-by-step how-to | Make a sourdough starter, with quantities and what to do each day | 1.36–1.37 | A clear plan in 7 turns (19 min), but it invented the first water amount; 1.37 stops guessing and flags unsupported numbers, and the agent then went looking for the missing details |
|
|
163
163
|
| Step-by-step how-to | Repot a houseplant: what you need, the steps, and care for the first two weeks | 1.43–1.44, 1.51 | 1.43 recorded six steps it wrote itself before reading the part that had them; 1.44 recorded the guide's real steps but took 68 min and its result left one out. 1.51: every step from the page, in 7 turns (29 min), and it says that no care instructions beyond the first watering were found |
|
|
164
|
-
| Explanation of a topic | How photosynthesis works: inputs and outputs, both stages and where each takes place | 1.41–1.42 | A complete, cited explanation in 18 turns (45 min); 1.41 read four parts of a relevant page without recording them and had not finished after 49 min |
|
|
164
|
+
| Explanation of a topic | How photosynthesis works: inputs and outputs, both stages and where each takes place | 1.41–1.42, 1.52 | A complete, cited explanation in 18 turns (45 min); 1.41 read four parts of a relevant page without recording them and had not finished after 49 min. 1.52 recorded both stages and where each takes place, but did not finish within 65 min: it read the history sections of a long encyclopedia article twice and never recorded the inputs and outputs |
|
|
165
|
+
|
|
166
|
+
### Regression suite
|
|
167
|
+
|
|
168
|
+
Since 1.53, every change is measured on the same seven objectives, one of each kind above, run one after the other
|
|
169
|
+
with a time limit each (`tools/regression.py`, see [Testing](#testing)). Single runs vary with the pages a search
|
|
170
|
+
turns up, so the suite compares versions on all seven at once:
|
|
171
|
+
|
|
172
|
+
| Task | 1.52 | 1.53 (objective checklist) |
|
|
173
|
+
|---|---|---|
|
|
174
|
+
| Factual question | Finished, 12 min | Finished, 14 min |
|
|
175
|
+
| List of three office suites | Time limit (45 min) | Finished, 30 min; but one of the three (WPS Office) is not open source |
|
|
176
|
+
| Comparison and recommendation | Time limit (45 min) | Finished, 39 min, every part covered |
|
|
177
|
+
| How-to (repotting) | Time limit (45 min) | Time limit (45 min); materials and steps found, aftercare not |
|
|
178
|
+
| Explanation (photosynthesis) | Time limit (60 min) | Finished, 13 min, but thin: one finding, no oxygen or water |
|
|
179
|
+
| Opinion (owls) | Time limit (45 min) | Finished, 38 min, four cultures and an opinion |
|
|
180
|
+
| Documentation (venv, official docs) | Finished, 15 min, from a tutorial site | Time limit (30 min); create and activate found, from python.org |
|
|
165
181
|
|
|
166
182
|
## How it works
|
|
167
183
|
|
|
@@ -201,6 +217,11 @@ flowchart LR
|
|
|
201
217
|
(or has a sentence that does) is sent back once, asking for only what the page says in its own words, and
|
|
202
218
|
one far from anything on the page is refused outright. A small model will otherwise "complete" a list from
|
|
203
219
|
its own knowledge when a page says "follow these 6 steps" and the steps come later.
|
|
220
|
+
- **An objective checklist.** At the start, one short model call splits the objective into a fixed checklist of
|
|
221
|
+
what the result must contain, keeping conditions like "free, open-source" or "three". Each finding names the
|
|
222
|
+
items it serves, the checklist with its findings is in every prompt, and every check goes through these items
|
|
223
|
+
instead of asking the model to split the objective again from memory, which drifted: it once blocked its own
|
|
224
|
+
finish over "migration strategies", which the objective never asked for.
|
|
204
225
|
- **Numbered findings.** Findings are numbered in the prompt and listed with every check, and the model names
|
|
205
226
|
the finding that covers each part of the objective ("covered by [2]") instead of just saying "covered".
|
|
206
227
|
- **Knowing when it's done.** After every new finding the model is asked whether the objective is now fully
|
|
@@ -253,8 +274,9 @@ Measured on an Intel i5-9500 (6 cores, no GPU) with Qwen2.5-7B-Instruct Q4_K_M a
|
|
|
253
274
|
| Fresh prompt after the context budget is reached | 160–380 s (longest with long pages) |
|
|
254
275
|
| Writing the final result (once, at the end) | 50–190 s, depending on how much was found |
|
|
255
276
|
|
|
256
|
-
Whole runs
|
|
257
|
-
|
|
277
|
+
Whole runs vary with the pages a search turns up. In the results table, a factual question takes about 12
|
|
278
|
+
minutes of model time, a list of three items 16 to 49, a comparison 25 to 38 and an explanation 45 or more. A
|
|
279
|
+
GPU or a smaller model will be much faster.
|
|
258
280
|
|
|
259
281
|
## FAQ
|
|
260
282
|
|
|
@@ -289,9 +311,18 @@ turn that brings in a new page takes a few minutes. See [Performance](#performan
|
|
|
289
311
|
research, an opinion from several sources, a factual question, a comparison, a how-to, a list and an
|
|
290
312
|
explanation of a topic. Each one
|
|
291
313
|
exposed something that did not generalise and was fixed; other kinds of tasks may expose more.
|
|
292
|
-
- **Reading
|
|
293
|
-
relevant parts
|
|
294
|
-
explanation task
|
|
314
|
+
- **Reading long pages and knowing when it has enough.** The model used to read long pages part by part
|
|
315
|
+
without recording the relevant parts; since 1.42 it must say what a part contains before reading on. On 1.52
|
|
316
|
+
the explanation task still lost about 20 minutes reading unrelated sections of a long article and did not
|
|
317
|
+
finish. On 1.53, with the objective checklist, it finished in 13 minutes, but from a single overview paragraph
|
|
318
|
+
that left out oxygen and water: the model can now claim one finding covers every item. Judging whether a
|
|
319
|
+
finding really covers an item is the weakest area.
|
|
320
|
+
- **Conditions in the objective.** A small model tends to drop conditions such as "open source" or "using the
|
|
321
|
+
official documentation": a list of open-source office suites once included FreeOffice (free but not open
|
|
322
|
+
source), and a task that asked for the official Python documentation used a tutorial site. The objective
|
|
323
|
+
checklist keeps the conditions in view (the documentation task went to python.org on 1.53), but on the same
|
|
324
|
+
run the list task still named WPS Office, which is not open source. Check the result against any conditions
|
|
325
|
+
you set.
|
|
295
326
|
- **A small model's judgement is the ceiling.** It sometimes drifts to loosely related pages, prefers
|
|
296
327
|
secondary sources or stays with one source too long, and results vary with the first pages a search turns
|
|
297
328
|
up; every finding is in `research_report.md` regardless.
|
|
@@ -316,6 +347,9 @@ turn that brings in a new page takes a few minutes. See [Performance](#performan
|
|
|
316
347
|
- [x] Finish as soon as the objective is covered (1.35)
|
|
317
348
|
- [x] Get the model to weigh each part of a long page before reading on (1.42)
|
|
318
349
|
- [ ] Let very strict objectives end with the gaps named instead of searching indefinitely (they finish since 1.50; naming the gaps is still open)
|
|
350
|
+
- [x] Measure every change on a regression suite of seven kinds of task (1.53)
|
|
351
|
+
- [x] Keep a fixed checklist of the objective's parts instead of re-splitting it at every check (1.53)
|
|
352
|
+
- [ ] Check that a finding really covers its checklist item, including conditions like "open source"
|
|
319
353
|
- [ ] Try more kinds of objectives (seven so far) and adjust the rules that don't generalise
|
|
320
354
|
- [ ] Make fresh prompts (the slowest kind of turn) cheaper still (31% cheaper since 1.34)
|
|
321
355
|
- [ ] Interacting with pages (clicking, forms) for tasks beyond reading
|
|
@@ -340,6 +374,19 @@ call:
|
|
|
340
374
|
python tools/live_test.py "Your objective here" --minutes 25
|
|
341
375
|
```
|
|
342
376
|
|
|
377
|
+
To measure a change on all seven kinds of task (about four hours on a CPU), compared with an earlier run:
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
python tools/regression.py --baseline regression_runs/<earlier run>/summary.json
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
Each run gets a folder in `regression_runs/` with every task's report, journal, console output and prompt
|
|
384
|
+
trace, and a `summary.md` that is updated after each task: whether it finished, turns, model time, how many
|
|
385
|
+
checklist items got findings, which checks fired, and problems found by simple word checks (missing answers,
|
|
386
|
+
missed conditions such as a non-open-source item, uncited paragraphs, numbers missing from the findings, a
|
|
387
|
+
missing opinion). `--suite all` adds five more tasks, `--only` runs some of them, and `--rescore` scores an
|
|
388
|
+
earlier run again without the model.
|
|
389
|
+
|
|
343
390
|
## Contributing
|
|
344
391
|
|
|
345
392
|
Contributions are welcome! See [CONTRIBUTING.md](https://github.com/SnowFXXX/LocalAgentBrowser/blob/main/CONTRIBUTING.md) for setup and guidelines, and please follow
|