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.5k
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
自分的「カンファレンスの楽しみ方」
syumai
0
200
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.9k
Oxlintのカスタムルールの現況
syumai
6
2k
Oxlintはいかにしてtsgolintのlint ruleを呼び出しているのか
syumai
2
1.5k
『[入門] Cloudflare Workers』本はなぜ誕生したのか
syumai
0
590
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.5k
Other Decks in Programming
See All in Programming
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
230
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
1
280
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
220
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
200
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
3
400
20260828_品質と開発生産性を両立させる、AI時代のE2Eテストの考え方
magicpod
0
180
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
130
Swift愛好会100回記念 第1回を振り返る
jollyjoester
0
120
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
1k
新卒PdEのリアル
ryu1013
1
470
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
240
アクセシビリティから考える情報設計
high_g_engineer
0
350
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.7k
Visualization
eitanlees
152
17k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
The World Runs on Bad Software
bkeepers
PRO
72
12k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
490
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
How to make the Groovebox
asonas
2
2.4k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
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