yoi/.yoi/tickets/00001KXRXAJFZ/item.md

3.1 KiB

title state created_at updated_at assignee queued_by queued_at
Internal Worker runnerを実装する closed 2026-07-17T20:47:11Z 2026-07-17T20:58:47Z null yoi ticket 2026-07-17T20:47:48Z

背景

Memory extract は runtime 側の Worker から派生する internal worker として動かす。今後 session-explore feature 付き extract worker、compaction、consolidation なども同じ形で安全に動かせるよう、Worker 内部に isolated internal worker / sub-worker runner の標準経路を用意する。

Protocol に外部 API として載せる段階ではない。まず Worker 内部 API として実装し、後で session 永続化、progress event、cancellation、Protocol exposure を追加できる形にする。

実装方針

  • Worker が internal worker の起動を所有する。
  • Feature は internal worker に渡す tool / context を contribute するだけで、Feature 自体が Worker を spawn しない。
  • internal worker は foreground Worker history を汚染しない。
  • prompt / input / tool registry / usage capture / output collection を InternalWorkerSpec 的な構造にまとめる。
  • 初期実装では既存 memory extract sub-engine をこの runner に載せ替える。
  • session 永続化はこの Ticket では実装しないが、runner の引数や result が後で persistence metadata を持てる形にする。

実装要件

  • Worker 内部に reusable internal worker runner を追加する。
  • runner は少なくとも次を受け取れる。
    • purpose / name。
    • system prompt。
    • initial user input。
    • tool definitions / limited tool registry。
    • optional usage capture。
  • runner result は少なくとも次を返す。
    • run result。
    • captured usage。
    • finish/error metadata。
  • foreground history / canonical session log に internal prompt や harness messages を混ぜない。
  • existing memory extract path を runner 経由にする。
  • existing extract behavior を変えない。
    • post-run threshold trigger のまま。
    • write_extracted transitional path のまま。
    • staging output は flat candidate records のまま。
  • compaction / consolidation の載せ替えは非目標だが、後から同じ runner に寄せられる構造にする。

非目標

  • Protocol method として external client から internal worker を起動できるようにしない。
  • internal worker session persistence をこの Ticket で実装しない。
  • session-explore feature や evidence tools はこの Ticket では実装しない。
  • compaction / consolidation の full migration はこの Ticket では実装しない。

受け入れ条件

  • reusable internal worker runner が存在する。
  • memory extract がその runner 経由で動く。
  • internal worker prompt/input が foreground history に永続化されない。
  • tool surface は caller が渡した limited tool registry に閉じる。
  • existing extract tests / memory tests / worker tests が通る。
  • cargo test -p memorycargo test -p worker が通る。
  • code 変更として nix build .#yoi が通る。