私のコーディングエージェントは、セッションは覚えていたが、作業を覚えていなかった

コーディングエージェントは、スレッドを維持していても、忘れっぽいと感じることがあります。

CliGateを構築している際に、この問題に直面しました。セッションの継続性は修正しましたが、繰り返しのタスクは依然として遅いままでした。

エージェントは会話は覚えていましたが、作業の内容を覚えていなかったのです。

セッションの継続性は、一つの問題を解決します。次のようなフォローアップコマンドが可能になります:

  • continue(続けて)
  • do the same for this file(このファイルでも同じことをして)
  • retry that(それをやり直して)
  • explain the error(エラーを説明して)

これは作業の流れ(フロー)において重要です。しかし、数日後に同じワークフローを繰り返す場合には機能しません。

どのボタンが機能するか、どのステップが行き止まりになるかをエージェントが学習する場合、単一のオープンセッションだけでは不十分です。エージェントには、前回の実行を成功させた要因を思い出す必要があります。

初回の実行は最もコストがかかります。その時にエージェントは、以下のような細かな詳細を見つけ出すからです:

  • 特定のメニューの中にアクションが隠れている
  • エディタがiframeである
  • プロジェクトに特定の回答スタイルが必要である
  • 環境のURLが本番環境とは異なる

私の修正前、これらの詳細は単なる生のログに過ぎませんでした。エージェントには履歴はありましたが、再利用可能なメモリはありませんでした。毎回同じ事実を再発見しなければならなかったのです。それは知能ではありません。同じコストを二度支払っているだけです。

間違ったアプローチは、より多くの履歴を保存して、モデルがそれを使ってくれることを期待することです。これはノイズを生みます。

私が必要としたのは、より小さく、再利用可能なレイヤーでした。すべてを保存するのではなく、以下を保存するように変更しました:

  • procedures(手順):最適なステップと、既知の行き止まり
  • facts(事実):URL、ルール、または設定
  • directives(指示):どのように物事を進めてほしいか
  • references(参照):ドキュメントの場所

これによりシステムが変わりました。膨大なトランスクリプトを読み込む代わりに、アシスタントはファイルベースのメモリレイヤーを使用するようになりました。

インターフェースは変わり、ボタンの位置も動くため、完璧なリプレイ(再現)は望んでいませんでした。私が求めたのは、次のようなループです:

  • 前回の最適な手順を思い出す
  • まずそれを試す
  • 各ステップを検証する
  • 失敗した場合は、探索プロセスに戻る
  • 成功した後にメモリを更新する

また、恒久的なルールをセッション履歴から分離しました。「本番データには触れないこと」といったルールは、会話のコンテキストではありません。それらは運用ルールです。これらを分離することで、アシスタントの挙動を予測可能にしました。

結果として、繰り返しのタスクが短縮されました。アシスタントは、空の戦術モデルからスタートすることはないため、より速く動けるようになりました。

コーディングエージェントを構築しているなら、スレッドと学習を混同しないでください。

  • セッションは継続性を助けます。
  • メモリは繰り返しの作業を助けます。

セッションは会話を維持します。メモリレイヤーは教訓を維持します。

あなたのシステムはスレッドを覚えていますか?それとも、成功した手順を覚えていますか?

Source: https://dev.to/codekingai/my-coding-agent-remembered-sessions-not-work-that-was-the-bug-2fig