ticket: add session reference view
This commit is contained in:
parent
37c44a7942
commit
39fa8827da
|
|
@ -2,8 +2,8 @@
|
|||
title: "効果的な Memory システム設計・検証"
|
||||
state: "active"
|
||||
created_at: "2026-06-20T15:16:00Z"
|
||||
updated_at: "2026-07-17T18:10:00Z"
|
||||
linked_tickets: ["00001KSKBPHRG", "00001KT02TCCG", "00001KTGCAFXG", "00001KSKBPTHR", "00001KXMEZNYC", "00001KXMK7YMC", "00001KXNYXNM6", "00001KXRM6G0G", "00001KXMK846H"]
|
||||
updated_at: "2026-07-17T23:10:00Z"
|
||||
linked_tickets: ["00001KSKBPHRG", "00001KT02TCCG", "00001KTGCAFXG", "00001KSKBPTHR", "00001KXMEZNYC", "00001KXMK7YMC", "00001KXNYXNM6", "00001KXRM6G0G", "00001KXS56AS5", "00001KXMK846H"]
|
||||
---
|
||||
|
||||
## Goal
|
||||
|
|
|
|||
0
.yoi/tickets/00001KXS56AS5/artifacts/.gitkeep
Normal file
0
.yoi/tickets/00001KXS56AS5/artifacts/.gitkeep
Normal file
130
.yoi/tickets/00001KXS56AS5/item.md
Normal file
130
.yoi/tickets/00001KXS56AS5/item.md
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
---
|
||||
title: 'Session reference viewを共通基盤として実装する'
|
||||
state: 'ready'
|
||||
created_at: '2026-07-17T23:04:40Z'
|
||||
updated_at: '2026-07-17T23:20:00Z'
|
||||
assignee: null
|
||||
---
|
||||
|
||||
## 背景
|
||||
|
||||
Memory extract は runtime 側で session snapshot から filtered view を作り、`session-explore` tools で evidence を読んで flat staging candidates を作る予定である。一方、compaction も既に session history から summary input を作り、`search_session_log` / `read_session_items` で詳細を探索する形に近い。
|
||||
|
||||
この2つは目的が違うが、共通して「session history から人間/LLMが扱いやすい参照 view を作る」「bounded に探索・読取する」という基盤を必要とする。extract 専用でも compact 専用でもない中立的な共通基盤として `Session reference view` を実装する。
|
||||
|
||||
関連:
|
||||
|
||||
- Objective `00001KVJSMQXZ`
|
||||
- Ticket `00001KXMK7YMC` — session-explore feature付きextract workerを実装する
|
||||
- worker compaction implementation: `crates/worker/src/compact/worker.rs`
|
||||
|
||||
## 実装意図
|
||||
|
||||
`Session reference view` は、session history の full raw dump ではなく、internal worker が必要な範囲を辿るための host-created immutable view である。
|
||||
|
||||
目的:
|
||||
|
||||
- User / Assistant text outputs から semantic overview を作る。
|
||||
- Tool calls / tool results / file refs などを evidence index として分離する。
|
||||
- compact / extract などの internal worker が同じ read/search substrate を使えるようにする。
|
||||
- read/search output を bounded にし、raw tool result 全文や reasoning を無制限に渡さない。
|
||||
- extract では source anchor / evidence id を staging record へ接続できるようにする。
|
||||
- compact では summary worker が必要な session detail を安全に読めるようにする。
|
||||
|
||||
## 対象領域
|
||||
|
||||
候補:
|
||||
|
||||
- `crates/worker/src/compact/worker.rs`
|
||||
- 既存の `build_summary_input` / `search_session_log` / `read_session_items` に相当する projection / read 機能。
|
||||
- `crates/memory/src/extract/input.rs`
|
||||
- extract 用 Overview-first input。
|
||||
- `crates/worker/src/internal_worker.rs`
|
||||
- internal worker runner から参照 view を渡す将来接続点。
|
||||
- 新規 module 候補:
|
||||
- `crates/worker/src/session_reference.rs`
|
||||
- または extract/compact から独立した crate-local module。
|
||||
|
||||
## 実装要件
|
||||
|
||||
- immutable `SessionReferenceView` 相当の型を実装する。
|
||||
- view 作成時点の session items / `entry_range` を固定する。
|
||||
- foreground history の live mutation を直接読まない。
|
||||
- view は少なくとも次を提供する。
|
||||
- overview projection。
|
||||
- evidence index。
|
||||
- bounded search。
|
||||
- bounded read by stable id / `entry_range`。
|
||||
- overview projection は User / Assistant text outputs を主軸にする。
|
||||
- Progress message と final response は同じ text output として扱う。
|
||||
- tool result 全文や reasoning は overview に混ぜない。
|
||||
- evidence index は user / assistant / system / tool などの session reference kind で参照可能にする。
|
||||
- evidence id を持つ。
|
||||
- `entry_range` を持つ。
|
||||
- kind を持つ。
|
||||
- tool entry は input / output のどちらを対象にするか区別できる。
|
||||
- short label / summary を持つ。
|
||||
- bounded read は、指定範囲の message / tool summary / bounded excerpt を返す。
|
||||
- token / byte / item count の上限を持つ。
|
||||
- over-limit 時は truncation metadata を返す。
|
||||
- search は初期実装では text match / substring / simple case-insensitive query でよい。
|
||||
- jq-like structural query は初期実装に含めない。
|
||||
- ただし kind / id / `entry_range` で絞れる API にする。
|
||||
- tool kind では input / output / both を検索対象として指定できる。
|
||||
- extract 向けに、evidence id から source anchor を作れる情報を保持する。
|
||||
- compact 向けに、既存 `search_session_log` / `read_session_items` 相当を置き換えられる構造にする。
|
||||
- 既存 compaction behavior を壊さない。
|
||||
|
||||
## Access model 方針
|
||||
|
||||
初期 API は、LLM が扱いやすい **id / `entry_range` based access** を中心にする。
|
||||
|
||||
- Overview item には `overview_id` / `message_seq` のような安定 id を付ける。
|
||||
- Progress message だけを特別扱いして `prog y` で指定するより、User / Assistant text output を同じ overview item として並べる。
|
||||
- ただし表示上は、長い turn の中で progress が複数あることが分かるように label を持たせる。
|
||||
- 範囲指定は `overview_id` / `evidence_id` / `entry_range` を基本にする。
|
||||
- `turn x, prog y ~ turn x, prog z` のような UI 表示は可能だが、tool input の canonical key にはしない。
|
||||
- `kind` は role と evidence type を統合した filter として扱う。
|
||||
- `user`
|
||||
- `assistant`
|
||||
- `system`
|
||||
- `tool`
|
||||
- tool kind では `tool_part` を指定できる。
|
||||
- `input`: tool call name / arguments を検索・読取対象にする。
|
||||
- `output`: tool result summary / bounded content excerpt を検索・読取対象にする。
|
||||
- `both`: input / output の両方を対象にする。
|
||||
|
||||
推奨 tool/API shape:
|
||||
|
||||
```text
|
||||
search_reference(query, kind?, tool_part?, limit?) -> ids + labels + entry_ranges
|
||||
read_reference(id | entry_range, include_tools?, tool_part?, max_items?, max_bytes?) -> bounded entries + truncation metadata
|
||||
resolve_reference(id | entry_range) -> source anchor
|
||||
```
|
||||
|
||||
探索は初期段階では text search と typed filters の組み合わせにする。jq-like structural query は強力だが、LLM tool input として複雑になりやすいため後回しにする。tool input / output を別々に検索したい需要は初期 filter として扱う。
|
||||
|
||||
## 非目標
|
||||
|
||||
- Protocol method として external client に公開しない。
|
||||
- vector search / embedding search は実装しない。
|
||||
- jq-like full structural query language は実装しない。
|
||||
- raw tool result 全文を unbounded に読ませない。
|
||||
- Progress message 専用の別 item kind を導入しない。
|
||||
- compaction の全面 rewrite はこの Ticket では行わない。
|
||||
- `session-explore` feature tools 本体はこの Ticket では実装しない。共通基盤だけを作る。
|
||||
|
||||
## 受け入れ条件
|
||||
|
||||
- `SessionReferenceView` 相当の共通型がある。
|
||||
- User / Assistant text outputs から overview projection を作れる。
|
||||
- tool calls / tool results を evidence index として参照できる。
|
||||
- search filter は `kind` で user / assistant / system / tool を扱える。
|
||||
- tool kind では input / output / both を検索・読取対象として選べる。
|
||||
- bounded search / read がある。
|
||||
- read output に truncation metadata がある。
|
||||
- extract が source anchor を作るための evidence id / entry range / kind を取得できる。
|
||||
- compact 側の既存 search/read と置き換え可能な形になっている。
|
||||
- relevant unit tests が追加されている。
|
||||
- `cargo test -p worker` または該当 crate の同等テストが通る。
|
||||
- code 変更として `nix build .#yoi` が通る。
|
||||
7
.yoi/tickets/00001KXS56AS5/thread.md
Normal file
7
.yoi/tickets/00001KXS56AS5/thread.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<!-- event: create author: "yoi ticket" at: 2026-07-17T23:04:40Z -->
|
||||
|
||||
## 作成
|
||||
|
||||
LocalTicketBackend によって作成されました。
|
||||
|
||||
---
|
||||
Loading…
Reference in New Issue
Block a user