feat(mcp): the bundle's map, and a working method that reads it first
C5. `bundlemap.build_map` lists a bundle in its own words: one line per source document -- its name, then the titles of its concepts in document order -- and documents whose names differ only in their numbers (a changelog per release, a note per week) as ONE line: the name with every number as `#`, the count, the first and last by natural order, and the titles across the series that are words. `SERIES_MIN` = 5, at most `TITLES_PER_LINE` = 24 titles a line, the lines capped at `MAP_MAX_BYTES` = 48 000 together with `lines_truncated` counting the rest. Derived on every call, never stored. The card (`okf card`, `okf_describe`) carries it as `map` and no longer carries `source_files`: that list named every document a second time with no series collapsed, a quarter of the reply on a large bundle, for names the map already carries. Chose removal over keeping both because the describe reply has to fit a client's tool-reply limit and the map says more. The working method now reads: take the map first (`okf card`, or `okf_describe`), write two to four sub-questions in its words, and send them in ONE call (`--question` repeated, or `okf_ask` `questions`). Changed in the skill template, the generated `skills/okf-consume`, and the server instructions (held under the 2 KB a client keeps). The regeneration recipe for `skills/okf-consume` gains `--for-bundle`: since v1.1 the generator writes the generic skill by default, so the recipe as published produced the other file. A test holds a four-sub-question `okf_ask` over concepts far over the passage size under 50 000 bytes of reply text (25 000 tokens at a pessimistic two bytes a token). The real-collection measurements are kept in local state. Suite on a clean tree after `git add`: 2429 passed, 2 skipped, 4 xfailed. ruff, ruff format, mypy --strict clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
f7cd84c5e6
commit
da6faf8776
9 changed files with 450 additions and 64 deletions
|
|
@ -1556,6 +1556,13 @@ R761 **8** (S1-S6 + KP + KN), vegnormal **32** questions / **43**
|
|||
nearest concept above it in its document (`inherit_table_titles`, ordered by
|
||||
`source_offset` else `source_lines`), in ranking, excerpt and near misses;
|
||||
the excerpt carries `own_title`. A reading only -- no bundle bytes move.
|
||||
**C5 the map:** `bundlemap.build_map` -- one line per source document with
|
||||
its concept titles in document order, a series (names differing only in
|
||||
numbers, `SERIES_MIN` = 5) as one line with count and span, at most
|
||||
`TITLES_PER_LINE` = 24 titles a line, lines capped at `MAP_MAX_BYTES` =
|
||||
48 000 (`lines_truncated`). The card (`okf card`, `okf_describe`) carries it
|
||||
as `map` and no longer carries `source_files`. The skill and the server
|
||||
instructions say: read the map, 2-4 sub-questions in its words, ONE call.
|
||||
What follows describes the fusion.
|
||||
- Consume a bundle: `okf consume <bundle> --question "<q>"
|
||||
[--k N] [--limit N] [--out PATH] [--ref IDENTITY]` — the **pre-pass**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue