私の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つの具体的な失敗:
- 認識のない反復 — 同じミス、記憶なし
- 汎用的な助言 — ユーザーごとの履歴に関係なく、同じヒントが届く
- 実際の軌跡がない — 本当に改善しているかを知る術がない
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をクリックする前に、私たちのエージェントは以下を行います:
- 彼らの書いたコードをスキャンします
recall()を呼び出してエラーヒストリーを取得します- パターンの一致を検出した場合には警告します
学生が見るもの:
⚠️ 「直近の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
構築に使用したもの:
- Hindsight をエージェントメモリとして
- Hindsight Docs を参照して retain/recall/learn を理解する
- Agent Memory conceptsをVectorizeから
