AI Navigate

私のAIメンターは、コードを実行する前にバグを警告してくれた

Dev.to / 2026/3/20

💬 オピニオンTools & Practical Usage

要点

  • Kernel's Slapは、後知恵メモリを用いて、各セッションを跨いであなたのミス、パターン、学習の進捗を記憶するAIコーディングメンターです。
  • システムスタックには、Monaco Editorを搭載したNext.jsフロントエンド、FastAPIバックエンド、保持・呼び出し・学習の機能を持つ後知恵メモリレイヤー、そして高速推論のためのGroq社のqwen3-32b LLMが含まれています。
  • 反復性、汎用的なヒント、明確な学習経路の欠如といった、典型的なコーディングプラットフォームのステートレス性の問題を解決すると主張しています。
  • この記事は、各ミスがretain()呼び出しを引き起こして、欠落した基本ケースや再帰の問題といったイベントを記録するコード例を示しています。

私のAIメンターは、コードを実行する前にバグを警告してくれた

私は、パーソナライズされた学習は難易度を選ぶことだと思っていました。
しかし間違っていました。真のパーソナライズは、ツールがあなたを覚えていることです — あなたの
正確なミス、あなたのパターン、あなたの盲点。KernelのSlapで私たちが構築したのはそれです。

Kernel's Slapとは何ですか?

Kernel's Slapは、Hindsightメモリを使用してあなたの思考・失敗・改善の仕方を
すべてのセッション、すべての問題、すべてのミスにわたって覚えてくれます。

LeetCodeやHackerRankとは異なり、それは決してあなたを忘れません。

主な要素:

  • フロントエンド: Next.js + Monaco Editor (VS Codeと同じエディター)
  • バックエンド: FastAPI (Python)
  • メモリ: Hindsight — retain(), recall(), learn()
  • LLM: Groq (qwen3-32b) — 高速推論、待機なし

私たちが解決した核心問題

現在のほとんどのコーディングプラットフォームはステートレスです。月曜日には同じオフバイワンエラーを犯し、水曜日にもそれを繰り返します。プラットフォームにはあなたの情報がなく、初めてあなたを見たかのように、2回とも同じ一般的なヒントを出します。

3つの具体的な失敗:

  1. 認識のない反復 — 同じミス、記憶なし
  2. 汎用的な助言 — ユーザーごとの履歴に関係なく、同じヒントが届く
  3. 実際の軌跡がない — 本当に改善しているかを知る術がない

Hindsightのエージェントメモリ — 3つすべてを解決します。

私たちのシステムにおけるHindsight Memoryの仕組み

すべてのミスはretain()を呼び出します:

await retain(user_id, {"event": "mistake", "error_type": "missing_base_case", "language": "python", "problem_category": "recursion", "hint_given": hint, "hint_style": "direct", "resolved": False})

すべてのヒントの前に、recall()を呼び出します:

past_patterns = await recall(
    user_id=user_id,
    query=\"mistakes with {error}\",
    top_k=5
)

エージェントのプロンプトは次のようになります:
"This student has failed base case errors 4 times.
Last hint style was code example — it didn't work.
Try analogy instead."

これは汎用的なチューターと個人のメンターの違いです。

審査を止めさせた機能 — プレモート警告

学生がRunをクリックする前に、私たちのエージェントは以下を行います:

  1. 彼らの書いたコードをスキャンします
  2. recall()を呼び出してエラーヒストリーを取得します
  3. パターンの一致を検出した場合には警告します

学生が見るもの:

⚠️ 「直近の3つの再帰関数に基づくと、基底ケースを見逃す傾向があります。実行前に私にあなたのコードを確認してもらえますか?」

エージェントはミスが起こる前に彼らを警告しました。
永続的な記憶がなければそれは不可能です。
それが Hindsight の機能です。

learn() が実際に何をするのか

ヒントのやり取りの後、learn() を呼び出します:

await learn(user_id, {"event": "solved", "hint_style": "analogy", "resolved": True, "time_to_resolve": minutes})

コード例が役に立たず、類推が役に立つ場合 — エージェントは永久に切り替わります。これは実際のエージェント学習であり、単なるログ取りではありません。

私たちを驚かせたこと

私たちはHindsightが単なるストレージだと予想していました。
実際には意思決定全体の層でした。

エージェントの応答はすべて記憶によって形作られます:

  • What hint to give
  • What style to use
  • What problem to generate next
  • How to greet you when you return

recall()を発火させずにすべての応答を出せば、エージェントは盲目です。これを使えば、エージェントはあなたを知っています。

学んだ教訓

  • retain()で豊富な文脈を保存する — エラーだけでなく、与えられたヒント、使用したスタイル、それが機能したかどうか
  • recall() をすべての応答の前に — 行き詰まったときだけではなく
  • learn()は挙動を変える — 実際に何が役立ったかを追跡し、それを次の行動の決定に活用する
  • メモリはログ記録ではない — ログは受動的、メモリは積極的な意思決定の入力です

自分で試してみる

GitHub: https://github.com/1shrikantsc-spc/kernels-slap

構築に使用したもの: