Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

feat(provider): exact signed-thinking capture, persistence and replay (incl. Bedrock)

オープン
#4,653 コメント 0 件 リアクション 0 件 担当者 1 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

@aheritier がすでに取り組んでいます。

2026年10月19日 から。

評価

この issue はまだ評価されていません。

説明

area/providers/anthropic area/providers/bedrock area/sessions

Goal

Capture, persist and replay signed thinking exactly, on all three transports. If the stored state can't be trusted, refuse to continue instead of replaying a rebuilt version.

Why

  • Bedrock flattens reasoning into text + signature fields (adapter.go) and rebuilds the blocks later. It treats a signature without text as redacted content (convert.go), but a signed thinking block can legitimately have empty text. Order between thinking, text and tool calls is also rebuilt rather than preserved.
  • thinkingBindingBehavior picks drop_block automatically when the primary or any fallback checks thinking prefixes (thinking_binding.go). The preserved thinking docs make error the default and describe drop_block as a stopgap that can cost extra output tokens. Switching the default is a deliberate client policy change.
  • The Anthropic client already stores raw response blocks in ProviderState and replays them when they still describe the message (response_content.go). Extend that mechanism; don't create a second one.

Scope

  • Keep blocks in order with their index: thinking (including signed-empty), redacted thinking bytes, text, tool use IDs/inputs and tool results. No "last signature wins".
  • Extend ProviderState additively with a version and the serving model. Unknown versions, incomplete or interrupted streams are never replayed as if they were verified.
  • Bedrock: store and replay native reasoning blocks instead of rebuilding them from flattened fields.
  • Keep the Haiku 5.5 exceptions from #4553 and only those: when thinking is off on Direct/Vertex, omit earlier reasoning from the outgoing request; on Converse, omit it with a warning. Stored history is never modified, and turning thinking back on does not silently re-insert omitted blocks.
  • Make thinking_prefix_mismatch: error the default for 5.x models whose server checks thinking prefixes (moved from #4652). Using drop_block then requires explicit config, keeps logging the dropped paths, and never triggers an automatic retry with thinking removed. Use the native binding control only on the Messages API, where it is documented; don't invent an equivalent for Converse.
  • drop_block, when explicitly configured, never deletes the stored original.

Acceptance criteria

  • Round-trip tests per transport: stream → ProviderState → SQLite and JSON → new runtime → continue an unchanged tool conversation; the replayed request matches the original blocks byte for byte.
  • Signed-empty thinking, redacted thinking and interleaved thinking/text/tool calls survive the round trip.
  • Edited or trimmed history, an imported session and an unknown state version lead to a clear refusal or a documented fallback, never to a silently rebuilt replay.
  • Default error on prefix-checking 5.x models, explicit drop_block with diagnostics, legacy models unchanged. A session using num_history_items trimming either replays exactly or fails with a clear refusal, never a raw 400.
  • Older binaries reading the new state: the limitation is documented (no promise of transparent downgrade).
  • task build, task test, task lint, and go test -race on the touched packages pass.

Parent: #4583 · Depends on #4651

主要言語
Go
スター
4.6k
フォーク
522
平均マージ
8時間 20分
マージ済み PR(30日)
219

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

  • Dockerfile または Docker Compose ファイルあり
  • プルリクエストのテンプレートなし
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

docker/docker-agent のほかの issue

docker/docker-agent の issue をすべて見る

似ている issue

Go の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。