Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
go-spidermonkeyでAIエージェントのCode Modeを実装する
Search
syumai
August 24, 2026
Programming
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
go-spidermonkeyでAIエージェントのCode Modeを実装する
layerx.go #5 の発表資料です!
*
https://layerx.connpass.com/event/402006/
syumai
August 24, 2026
More Decks by syumai
See All by syumai
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.8k
Oxlintのカスタムルールの現況
syumai
6
1.9k
Oxlintはいかにしてtsgolintのlint ruleを呼び出しているのか
syumai
2
1.5k
『[入門] Cloudflare Workers』本はなぜ誕生したのか
syumai
0
520
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
9
3.3k
知られているようで知られていない JavaScriptの仕様 4選
syumai
3
1.3k
CloudflareのSandbox SDKを試してみた
syumai
0
1k
実践AIチャットボットUI実装入門
syumai
9
4.4k
ProxyによるWindow間RPC機構の構築
syumai
3
1.6k
Other Decks in Programming
See All in Programming
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
360
プロポーザルを書いてもらう
pvcresin
0
570
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
360
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
2
420
React本体のコードリーディング
high_g_engineer
1
150
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
130
Building a Meta Ray-Ban display app
akkeylab
0
180
Webエンジニアなのにブラウザの仕組みがわからないので、Pythonで自作してみた
tatsuki12
4
990
My Marp Sample
sinoue0108
0
110
実装をデザインガイドラインに追従させるための取り組み / 260731-dip-mosh-design-system
dachi023
0
7.5k
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
200
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
190
Featured
See All Featured
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Building an army of robots
kneath
306
46k
Thoughts on Productivity
jonyablonski
76
5.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
280
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
380
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
470
The Spectacular Lies of Maps
axbom
PRO
1
940
Transcript
go-spidermonkeyでAIエージェントの Code Modeを実装する 2026-8-24 layerx.go #5 @syumai
whoami syumai LayerX ソフトウェアエンジニア バクラクヘルプデスク エージェントを開発中 Asakusa.go / ECMAScript 仕様輪読会
主催 X: @__syumai Website: https://syum.ai © LayerX Inc.
Code Modeとは?
Code Modeとは? 「LLMに個々のツール呼び出しを生成させる」のではなく、「ツールを呼び出すコード を書かせ、そのコードをSandboxで実行する」 方式 生成されるのは基本的にJavaScriptのコード 2025年9月にCloudflare Blogで紹介された https://blog.cloudflare.com/code-mode/ 先行研究に、CodeActという手法があった
https://proceedings.mlr.press/v235/wang24h.html © LayerX Inc. 4
https://blog.cloudflare.com/code-mode/ © LayerX Inc. 5
Code Modeによる実行の例
ツール定義のイメージ © LayerX Inc. 7
ツールのTypeScript関数への変換のイメージ © LayerX Inc. 8
Code Modeによるツールの呼び出しイメージ © LayerX Inc. 9
Code Modeの優れた点
Code Modeの優れた点 中間結果をLLMのContextに持たない 複雑なツール呼び出しをコードとして合成できる LLMが得意なコード生成を活用できる © LayerX Inc. 11
1. 中間結果をLLMのContextに持たない 通常のTool Callingでは、ツールの結果が毎回LLMに戻る。 © LayerX Inc. 12
1. 中間結果をLLMのContextに持たない Code Modeでは、中間結果をSandbox内に保持できる。 © LayerX Inc. 13
2. 複雑なツール呼び出しをコードとして合成できる 以下のような、複数回のツール呼び出しを map で表現し、結果のソートを配列の sort で表現したりできる 決定的な処理をLLMに任せなくていい © LayerX
Inc. 14
3. LLMが得意なコード生成を活用できる 通常のTool Callingでは、ツール呼び出し固有の形式を生成する。 <tool_call> © LayerX Inc. など。この部分は変わりうる 15
3. LLMが得意なコード生成を活用できる Code Modeでは普通のコードを書く コードには大量の学習データが存在 LLMのプログラミング能力をそのまま活用可能 → 「ツールを呼ぶ能力」を「コードを書く能力」に寄せられる © LayerX
Inc. 16
Code Modeの優れた点 ツール呼び出しの中間結果と制御フローをLLMのContextから実行環境へ移すことがで きる トークン効率や実行時間などのパフォーマンスが向上することが期待できる © LayerX Inc. 17
直近の話題: Vercel AI SDKのCode Modeサポート TypeScript向けのAI機能提供ライブラリとして最も有名なVercel AI SDKがCode Mode をサポートした
Cloudflareがブログで示していたのはMCP toolにおけるユースケースだが、Vercel AI SDKはMCPに限らないツールのコード変換を対象としている Cloudflareに留まらず、活用が進んでいる https://ai-sdk.dev/docs/ai-sdk-core/code-mode © LayerX Inc. 18
Go製のエージェントでCode Modeを使うには?
Go製のエージェントでCode Modeを使うには? LLMが生成したコードを実行するSandboxが必要 Code Modeでは、関数に変換したツールの呼び出しくらいのライトなコードしか記述さ れない インタプリタ型言語が適切 いちいちコンテナを立ち上げると時間がかかる Go向けの軽量Sandbox実装が豊富なJavaScriptが有力な選択肢 ©
LayerX Inc. 20
Go製のJavaScriptインタプリタ実装
Go製のJavaScriptインタプリタ実装 いくつか存在する 特に有名なものはgoja https://github.com/dop251/goja 今回はgoccy/go-spidermonkeyを選択 https://github.com/goccy/go-spidermonkey © LayerX Inc. 22
go-spidermonkey FirefoxのJSエンジンのSpiderMonkeyを丸ごとPure Goに変換したライブラリ SpiderMonkeyベースなので、test262 (ECMAScript互換性テスト) のスコアが高い Web API / Node.js互換機能も一部提供
デフォルトでOSやネットワークへのバインディングを持たないので安全 Optionalで追加可能 goccyさん製 © LayerX Inc. 23
go-spidermonkey の基本的な使い方 spidermonkey.New でインスタンスを生成し、 Eval メソッド呼び出しで実行 実行結果は .String() / .Float()
/ .Object() などで取り出す © LayerX Inc. 24
Go側の関数のJSへの公開 Global().DefineFunc でGo側の関数をJSに公開できる 引数の取り出し方も実行結果の取り出し方と同様 © LayerX Inc. 25
GoによるCode Mode付きエージェントの実装例
実装例: funcbox-agent https://github.com/syumai/funcbox-agent syumaiが開発中のfuncboxというサーバーレス関数プラットフォームのエージェント funcboxにワークスペースを追加したり、関数をデプロイしたりするMCP tool実装を持つ エージェントとしては、チャット形式のUIを提供している © LayerX Inc.
27
funcbox-agentのアーキテクチャ Backend: Genkit Go https://github.com/genkit-ai/genkit/tree/main/go Backend (Sandbox): go-spidermonkey Frontend: Vercel
AI SDK + @genkit-ai/vercel-ai/client Genkitが公式でVercel AI SDKとのストリーム変換アダプタを提供している © LayerX Inc. 28
デモ
funcbox-agentの実装解説
run_js tool エージェントが公開するツールは run_js の1つだけ LLMがツール呼び出しをまとめて記述したコードを1回で実行する © LayerX Inc. 31
MCP toolのTypeScript型定義への変換 各MCP toolのJSON Schemaを、起動時にTSの型定義へ変換し、コード生成に利用して いる run_js © LayerX Inc.
toolのdescriptionに埋め込み、LLMに型付きのシグネチャとして見せている 32
LLMが生成するJavaScriptコード例 © LayerX Inc. 33
ツール呼び出し用関数のGoからJSへの公開 を使って、JSからGo側にあるMCP tool呼び出し関数を呼び出すバイ ンディングを行っている Global().DefineFunc : MCP toolの実呼び出し。Go側で CallTool を実行し、結果をPromiseとしてJSに返す
この関数が funcbox.listFunctions({}) などの内部で呼ばれる __fbx_call(name, argsJSON) © LayerX Inc. 34
ツール呼び出し用関数のGoからJSへの公開 © LayerX Inc. 35
まとめ Code Modeを使うことで、エージェントからのツール呼び出しを効率化できる Code Mode用のコードの実行にはJavaScriptを使うのが楽 Go環境下でのJS Sandboxとして、go-spidermonkeyが使える © LayerX Inc.
36