You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit d396049
Browse filesBrowse the repository at this point in the historyBrowse files
/** Everything the root may spawn: pickers and searchers for context, the
38
-
* worker for slices. The code-searcher is programmatic — a batch of ripgrep
39
-
* queries and no model call — so it needs no free-mode allowlist entry. */
37
+
/** Everything the root may spawn: searchers for context, the worker for
38
+
* slices. The code-searcher is programmatic — a batch of ripgrep queries and
39
+
* no model call — so it needs no free-mode allowlist entry. No file-picker
40
+
* since 2026-10-16: the 62-task bench without it (2026-10-05) was a wash. */
40
41
exportconstBASE3_FAST_SPAWNABLE_AGENTS=[
41
-
'file-picker',
42
42
'code-searcher',
43
43
FREEBUFF_BASE3_FAST_WORKER_AGENT_ID,
44
44
]asconst
@@ -77,7 +77,7 @@ export function buildBase3FastGuidance(
77
77
78
78
You are running in fast mode: besides your own tools you can spawn helpers with spawn_agents, and everything named in one spawn_agents call runs at the same time. Spawning context helpers in parallel is really, really helpful here and strongly encouraged. The notes below are the shape that works, not a script: when the user is asking a question, thinking something through or wants a small change, just answer or make it.
79
79
80
-
**Context.** When a task needs you to understand code you have not read, start with one spawn_agents call that spawns several file-pickers, each prompted from a different angle (the feature itself, its callers and tests, the conventions it should match), together with code-searchers, each carrying a batch of ripgrep queries for the names and patterns involved — put every query you can already think of into that first round. Then read generously: one read_files call with every path that looked relevant, rather than one file per step. Follow up with another round of code-searchers when the first points somewhere specific; a second round of file-pickers is rarely worth it. Everything you need is in the repository in front of you: do not search the web for this project's own code, history or packages.
80
+
**Context.** When a task needs you to understand code you have not read, start with one spawn_agents call that spawns several code-searchers, each carrying a batch of ripgrep queries from a different angle (the feature itself, its callers and tests, the conventions it should match)— put every query you can already think of into that first round. Then read generously: one read_files call with every path that looked relevant, rather than one file per step. Follow up with another round of code-searchers when the first points somewhere specific. Everything you need is in the repository in front of you: do not search the web for this project's own code, history or packages.
81
81
82
82
**Implementing.** Make the change yourself. A change you hold in your head comes out coherent, and the slow part of any delegation is reading, reconciling and repairing what came back. Workers exist for one shape of work: a large, mechanical change repeated across many independent files, where each slice can be written without seeing the others, such as a rename across a tree or the same migration applied to dozens of modules. Only then spawn one ${workerAgentId} per slice, all in one spawn_agents call, after writing any piece the slices must agree on (a new type, signature or helper) yourself. Give each worker a short assignment that opens with "${BASE3_FAST_WORKER_ASSIGNMENT_OPENING}", then names the files it owns, the shared names it must use, and what belongs to another worker. Never give two workers the same file.
83
83
@@ -132,7 +132,7 @@ export function createBase3FastCliRoot(
132
132
...root,
133
133
displayName: 'Buffy (fast mode)',
134
134
spawnerPrompt:
135
-
'Fast-mode coding agent: gathers context with parallel file-pickers and code-searchers, implements the change itself, and can split a large mechanical change across parallel prompt-cached workers that report which files they changed',
135
+
'Fast-mode coding agent: gathers context with parallel code-searchers, implements the change itself, and can split a large mechanical change across parallel prompt-cached workers that report which files they changed',
Copy file name to clipboardExpand all lines: sdk/CHANGELOG.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,8 @@ All notable changes to the @codebuff/sdk package will be documented in this file
4
4
5
5
## [Unreleased]
6
6
7
+
- New `skipSymbolIndex` run option: a fresh session builds the file tree but skips the tree-sitter parse of every project file, leaving `fileTokenScores` and `tokenCallers` empty. Set it when your agents do not use the file-picker, `read_subtree` symbols or `read_files`' `referencedBy`.
8
+
7
9
-`compactRunState` now rewrites a run's history into at most 12k tokens (`MECHANICAL_HISTORY_TOKENS`) of summary plus a working set of file reads, whatever `maxContextLength` allows; it used to fill the budget. The newest read of each file not edited since comes back whole and every other read becomes an outline stub, so expect a much smaller `nextTokens`. The live request and the newest tool results are kept whole on top of the cap.
8
10
9
11
-**Security:**`read_url` now connects only to an address it has just validated. Resolution and the private/reserved-address check happen in the connection's own `lookup`, and the host is refused if any answer is blocked, so a hostname can no longer pass the check with one answer and connect with another. Every redirect hop is validated the same way. More non-routable ranges are refused: IPv4-compatible IPv6 (`::a.b.c.d`), 198.18.0.0/15, `fec0::/10` and `64:ff9b:1::/48`. The tool call passes only `url` and `max_chars` through to `readUrl`. Under Bun with a proxy variable set, Bun's `fetch` is still used so the proxy keeps working.
0 commit comments