Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
go-spidermonkeyでAIエージェントのCode Modeを実装する
Search
syumai
August 24, 2026
Programming
1.6k
3
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
Workers Cache を知る
syumai
0
320
自分的「カンファレンスの楽しみ方」
syumai
0
210
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.9k
Oxlintのカスタムルールの現況
syumai
6
2.1k
Oxlintはいかにしてtsgolintのlint ruleを呼び出しているのか
syumai
2
1.6k
『[入門] Cloudflare Workers』本はなぜ誕生したのか
syumai
0
630
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
9
3.4k
知られているようで知られていない JavaScriptの仕様 4選
syumai
3
1.3k
CloudflareのSandbox SDKを試してみた
syumai
0
1.1k
Other Decks in Programming
See All in Programming
AHC070解法紹介
eijirou
0
150
Java 27新機能 / Java 27 new features
kishida
2
190
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
570
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
380
Are APIs Still Relevant in the AI Era?
soyuka
0
390
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
110
iOSDC Japan 2026 - Swiftで作って学ぼう!データベース自作入門
kaseken
2
420
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
460
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
460
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
330
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Agile that works and the tools we love
rasmusluckow
331
22k
Statistics for Hackers
jakevdp
799
230k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
270
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