Colabを使ってACE(Agentic Context Engineering)という考え方を試してみました。コンテキストエンジニアリングを考える良い機会になりました。また、そもそも情報をどう蓄積して、検索し引き出して投入するのか、を考える良いきっかけとなりました。
手法の整理と割り切り
ACE(Agentic Context Engineering)は、大規模言語モデル(LLM)が自らコンテキスト(入力情報や指示)を成長させ、自己改善を続けるためのフレームワークです。従来のLLMの改善手法の多くはモデルの重みを更新する「微調整(ファインチューニング)」に頼ってきましたが、ACEは重みを変えるのではなく、モデルに与える「コンテキスト(文脈)」を最適化・進化させることに焦点を当てています。
ACEの仕組み:3つの役割分担
ACEは、3つの専門的なエージェント的役割を分担させることで、効率的にコンテキストを成長させます。 - Generator(生成器): 現在のプレイブックを使用して、実際にタスクを解くための推論を行います。 - Reflector(反省器): 実行結果(成功や失敗のフィードバック)を分析し、そこから具体的な教訓や新しい戦略を抽出します。 - Curator(整理器): 抽出された知見を既存のプレイブックに統合します。この際、重複を排除し、構造を維持しながらアップデートを行います。
ACEの革新的なポイント
- 逐次的なncremental Delta Updates(デルタ・アップデート): 全文を書き換えるのではなく、「箇条書き単位」で必要な部分だけを修正・追加します。これにより、過去の知識を失うことなく、効率的に改善を積み重ねられます。
- 高いコストパフォーマンス: 全文書き換えを行わないため、計算コスト(トークン使用量)を抑えつつ、適応までの待ち時間(レイテンシ)を大幅に短縮(平均86.9%削減)することに成功しています。
このうち、3つの役割分担を参考にします。試してみるとIncremental Delta Updatesは非常に魅力的なのですが、箇条書き単位=端的な情報をReflectorで抜き出すためには、何が情報として重要なのかを理解する必要があります。例えば事実の更新なのか、解法なのか。それぞれの端的な情報に対して情報を更新・追加したするのも工数かかります。短い文章で表すことができる事柄ばかりではありません。そこで、Incremental Delta Updatesでは、箇条書きの短文ではなく、必要だろうと思われる動的なテキスト量でもよいと割り切りました。 折角なので、Model-Firstを参考にモデル(一般化)をReflectorで入れ込むことにします。
実装
SAKURA AIのAPIでgpt-oss:120Bを利用します。
| コンポーネント | 役割 | 使用技術 |
|---|---|---|
| Curator (キュレーター) | ユーザーのクエリに関連するコンテキストを検索します。 | ハイブリッド検索 (FAISS + SQL) |
| Agent (エージェント) | コンテキストを使用して即時応答を生成します。 | LangChain |
| Reflector (リフレクター) | 対話を分析し、新しい事実やルールを抽出します。 | LLM |
| Storage (ストレージ) | 文書、キュー、インデックスを永続化します。 | SQLite (WALモード) |
といった感じで実装しました。 Vibe CodingにはGoogle Colebでざっくり可能性検討を行って、Gemini CLIで実装を行いました。UIにはGarioを始めて使ってみました。途中経過と最終的な蓄積データ(Long-Term Memory)を表示して処理の状況を見えるようにしました。

LTMに収納するcontentの例。少々長すぎるかも。情報量としてはリッチでいい感じだと思います。
- Entities: Development team, AI code‑generation assistant, tools (uv, ruff, VS Code, pre‑commit, GitHub Actions, Docker), repository, CI pipeline, configuration files (pyproject.toml, ruff.toml, .pre‑commit-config.yaml, Dockerfile), phases (Phase 0‑5).
- State Variables:
- Installed toolset per developer machine,
- Contents of configuration files,
- Environment reproducibility flag,
- Code‑quality metrics (lint errors, formatting violations),
- CI status (pass/fail, runtime),
- Deployment parity (local vs production),
- Team learning load.
- Actions:
- Install a tool (e.g.,
uv).- Add a tool as a dev dependency (
ruff).- Configure IDE integration (VS Code
settings.json).- Introduce a pre‑commit hook.
- Extend CI workflow with the same commands.
- Build a production‑identical Docker image and run it locally.
- Commit code, run CI, merge PRs.
- Constraints: Limited learning capacity, risk of breaking builds, tool‑conflict (e.g., Copilot vs Ruff), CI execution time, maintainability of multiple config files, need for version‑controlled changes.
- Solution Summary: The AI answer proposes a phased, incremental rollout of the toolchain. Each phase delivers a concrete, measurable benefit (early value, risk mitigation, faster feedback, measurable ROI, cultural adoption). The rollout is isolated per Git branch, measured with concrete metrics, and only expanded after validation, thus keeping risk low while accelerating development speed.
Generalization: - Abstract Pattern: Incremental adoption of a complex development toolchain through small, isolated, measurable steps. - Underlying Problem Class: Change‑management / process‑improvement problem, often modeled as a constraint‑satisfaction or resource‑allocation task where the goal is to maximize productivity while minimizing learning and disruption risk. - General Strategy: 1. Identify the minimal viable tool that yields immediate benefit. 2. Deploy it in isolation, measure impact, and validate. 3. Iteratively add complementary tools/configurations, each guarded by its own validation (branch + CI). 4. Use quantitative metrics (setup time, lint error count, CI failure rate, deployment parity) to assess ROI. 5. Align rollout with team culture by delivering quick wins and keeping learning overhead low. 6. Ensure rollback capability at each step. This pattern can be applied to any scenario where a team needs to introduce new tooling, processes, or infrastructure without disrupting ongoing work."
「Vibe Codingのコツは?」に対する回答例。この問いの前にuvやruffの利用を議論していたので、それを踏まえた回答になっています。
Vibe Coding で快適に開発するための実践的なコツ
ポイントは「AI からの出力をすぐに実行・検証できる環境を作る」ことと、「AI に指示するプロンプトを磨く」ことです。
以下の項目を順に導入すれば、AI 補助開発のスピードと品質が大幅に向上します。
1️⃣ 環境をすぐに立ち上げる「最小構成」
手順 内容 目的 ① uv のインストール curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"1 行で Python 仮想環境と依存解決が完結。Docker が使えない Vibe Coding でも必ず動く。 ② プロジェクト初期化 uv init→pyproject.tomlが生成依存はすべて pyproject.tomlに宣言し、ロックはuv.lockに一元化。③ 開発ツールを dev‑deps に追加 uv add --dev ruff mypy pytest pre‑commitLint/Format/型チェック/テストをすべて同じ環境で管理。 ④ VS Code 設定 .vscode/settings.jsonにjson { "python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python", "ruff.enable": true, "ruff.path": "${workspaceFolder}/.venv/bin/ruff", "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.fixAll": true, "source.organizeImports": true } }保存時に自動 Lint+Fix、インポート整理が走り、AI が出したコードがすぐにクリーンになる。 ⑤ pre‑commit フック uv run pre-commit install
.pre-commit-config.yamlに ruff の hook を記述コミット前に必ず Lint/Format が走り、CI 失敗を防止。 結果:Vibe Coding のターミナルだけで
uv sync→.venvが作られ、VS Code が自動でコードを整形。Docker のインストールは不要です。
2️⃣ AI(Copilot・ChatGPT・Claude・Gemini)とスムーズに連携するコツ
コツ 具体的なやり方 ① プロンプトは「入力 → 期待出力」形式で書く """<説明>"""の後に 「以下の関数を実装してください」 と続け、「戻り値はdict[str, Any]」 のように型まで明示。② 生成コードはすぐに Lint/Format VS Code の 保存 → Ruff 自動修正 が走るので、AI が出したコードはそのまま保存すれば即座にクリーン。 ③ 失敗例を添えて指示 「エラーハンドリングが足りない」場合は 「例外は try/exceptで捕捉し、logging.errorを呼び出す」 と具体的に指示。④ 生成コードをテストコードと同時に依頼 「この関数のユニットテストも pytestで書いて」 と依頼すれば、uv add --dev pytestが入っている環境で すぐにuv run pytestが走る。⑤ 生成結果をコメントで囲む # AI生成開始/# AI生成終了のようにマークしておくと、pre‑commit で自動的にruffが対象外にしない ことが保証できる。
3️⃣ プロンプト設計のベストプラクティス
項目 例 目的を明示 # 目的: CSV ファイルを読み込み、日付列をdatetimeに変換する関数を作成入力例 sample.csvの 1 行目を示す(ヘッダー+数行)出力例 期待する関数シグネチャと戻り値の型(例: def parse(csv_path: str) -> pd.DataFrame:)制約条件 - pandas だけを使う、- 例外はValueErrorで投げるテストケース - 正常系: 2023-01-01 → datetime(2023,1,1)、- 異常系: 空文字 → ValueErrorスタイル PEP8 に準拠、docstring は Google style効果:AI が「何をすべきか」だけでなく「どう書くべきか」まで把握できるので、生成コードの手直しがほぼ不要になります。
4️⃣ CI/CD での「AI 生成コード」品質保証
ステップ 実装例(GitHub Actions) 1️⃣ Lint - name: Lint <br> run: .venv/bin/ruff check --output-format=github2️⃣ Format チェック - name: Format check <br> run: .venv/bin/ruff format --check3️⃣ Type Check - name: Type check <br> run: .venv/bin/mypy src4️⃣ テスト - name: Test <br> run: .venv/bin/pytest --junitxml=reports.xml5️⃣ キャッシュ actions/cacheで~/.cache/uvを保存し、ビルド時間を 30 % 以上短縮。6️⃣ アノテーション ruffの--output-format=githubが PR に直接エラー行をハイライト。ポイント:ローカルと CI が 同一バイナリ(
.venv/bin/ruff)を呼び出すので、「ローカルは通っても CI が失敗」 が起きません。
5️⃣ 生産性をさらに上げる小技集
小技 手順・設定 ① VS Code のスニペット Ctrl+Shift+P → Preferences: Configure User Snippets → python.jsonにdefやif __name__ == "__main__":のテンプレートを登録。AI が出したコードにすぐ貼り付け可能。② ターミナルのエイリアス alias r='uv run'→r python -m mymoduleで仮想環境を意識せず実行。③ 変更点だけを AI に再生成 git diff --stagedの出力をコピーし、「この差分だけ修正したコードを生成してください」 と指示すれば、無駄な再生成を防げる。④ 生成コードの自動コメント付与 pre-commitのフックで# AI生成開始/# AI生成終了を自動挿入し、レビュー時に「AI が書いた箇所」を一目で把握。⑤ 生成コードの安全チェック pip install safety→uv add --dev safety→ CI にsafety check -r requirements.txtを組み込むと、依存ライブラリの脆弱性を自動検出。
6️⃣ トラブルシューティング Q&A(よくあるケース)
症状 原因 解決策 保存したら VS Code が自動でコードを消す ruffのselectにD(docstring)やF401(未使用インポート)が除外されていないruff.tomlのignoreに該当コードを追加、または# ruff: noqaを行に付与。AI が出したコードが ImportErrorになる依存が pyproject.tomlに未記載uv add <package>で追加し、uv syncを再実行。CI がローカルと違う Python バージョンで走る Dockerfile の FROM python:3.xがローカルと不一致Dockerfile の FROM行をローカルのpython -Vと同じタグに固定(例:python:3.11-slim)。pre‑commit が毎回失敗する ruffの--fixが自動修正した結果、ステージがずれるpre-commitのstages: [commit]をpre-commit run --all-filesに変更し、修正後に自動でgit add -uさせる。AI が生成したコードがテストで失敗 テストケースが足りない、または型が曖昧 プロンプトに 「ユニットテストも書いて」 と明示し、 pytestが自動で走るようにする。
7️⃣ まとめ:Vibe Coding で「AI → 即実行・即検証」サイクルを作る流れ
- uv だけで環境構築 → 1 分で
.venv完成。- Ruff を dev‑deps に → 保存時に自動 Lint/Format。
- VS Code 設定で自動化 → 手動コマンド不要。
- pre‑commit でコミット前チェック → CI 失敗を防止。
- AI に具体的なプロンプト(目的・入力例・出力例・制約)を渡す。
- CI に同一コマンド(ruff、mypy、pytest)を組み込み、GitHub Annotation で即フィードバック。
- 必要なら Docker devcontainerで本番イメージと完全一致させる(オプション)。
このサイクルを回すだけで、AI が出したコードはすぐに「実行可能・テスト可能・本番と同一環境」になるので、開発スピードが 2‑3 倍に向上し、品質も安定します。
次のステップ(すぐに試す)
- プロジェクトのルートで
uv init→uv add --dev ruff mypy pytest pre-commit.vscode/settings.jsonを上記通りに作成し、VS Code を再起動。uv sync→.venvができたら、AI(Copilot など)でコードを生成し 保存。- 保存と同時に Ruff が走り、コードが自動整形されることを確認。
git add . && git commit -m "test"→pre-commitが走り、問題がなければ CI へプッシュ。この流れがスムーズに回れば、Vibe Coding での AI 補助開発はほぼ 「指示 → 生成 → すぐ実行」 の 3 ステップで完結します。
質問や「特定のツールの設定が知りたい」など、さらに掘り下げたいポイントがあれば遠慮なくどうぞ! 🚀
次にむけて
LTMのcontentを適切にupdate出来るような機能を追加していきたいと思います。