ITSUKI.
技術727 文字2 分

Day 05|Session・Task・Turn — 状態の寿命を見分ける

#Codex#ソースコードリーディング#図解

この章しょうの答こたえ

長ながく持もつ状態じょうたいと、一回いっかいの処理しょりで使つかう状態じょうたいを分わけて読よむ。

会話かいわを続つづけても残のこる情報じょうほうと、今回こんかいの実行じっこうだけで必要ひつような情報じょうほうがあります。名前なまえを丸暗記まるあんきするより、「いつ作つくられ、誰だれが持もち、いつ終おわるか」の三点さんてんで整理せいりすると、Session と Turn の関係かんけいが見みえてきます。

01|図でつかむ

図05|Session・Task・Turn

寿命じゅみょうと役割やくわりの整理せいり図ず。箱はこが必かならず単純たんじゅんな所有しょゆう関係かんけいにある、という意味いみではない。

02|3つのポイントで理解する

1. Session は継続の土台

Session 周辺しゅうへんには履歴りれきや進行中しんこうちゅうの処理しょりなど、会話かいわを継続けいぞくするための情報じょうほうが集あつまります。次つぎの入力にゅうりょくでも使つかう状態じょうたいが、どこに保持ほじされるかを確認かくにんします。

2. Task は実行を担う抽象化

SessionTask や RegularTask を読よむと、通常つうじょうの会話かいわ処理しょりなどをどの共通きょうつうの仕組しくみで動うごかすかが分わかります。UI 上うえの「タスク」という呼び名よびなと、Rust の Task 型かたは区別くべつします。

3. TurnContext は今回の条件を運ぶ

今回こんかいの処理しょりに必要ひつような設定せっていや識別しきべつ情報じょうほうが、どの呼び出よびだしへ渡わたされるかを追おいます。正常終了せいじょうしゅうりょうだけでなくキャンセル時ときにも着目ちゃくもくすると、次つぎの Turn に残のこしてはいけない状態じょうたいを見みつけやすくなります。

03|ソースで確かめる

以下いかの検索けんさくは Codex リポジトリのルートで実行じっこうします。最初さいしょに対象たいしょう commit を記録きろくし、検索結果けんさくけっかから定義ていぎと呼び出よびだし元もとを一ひとつずつ開ひらいてください。

git rev-parse --short HEAD
rg -n "struct Session|RegularTask|TurnContext" codex-rs

読よむ入口いりぐち: codex-rs/core/src/tasks/regular.rs 。リンク先さきは照合しょうごうに使つかった固定こてい commit のファイルです。手元てもとの版はんと異ことなる場合ばあいは、上うえの検索語けんさくごから探さがし直なおします。

小さく試す

一ひとつの状態じょうたいフィールドを選えらび、生成せいせい、参照さんしょう、更新こうしん、終了時しゅうりょうじの扱あつかいを四行よんぎょうで書かきます。

04|30秒で復習

  • 状態じょうたいは寿命じゅみょうで分類ぶんるいする。
  • Task は実行じっこうの仕組しくみ、Turn は会話かいわ処理しょりの単位たんい。
  • 終了しゅうりょう・中断後ちゅうだんごに何なにが残のこるかを見みる。

全ぜん30章しょうの目次もくじへ