Kobako:WebAssembly 的記憶體交換
前幾篇說明了選擇 MessagePack 的過程,然而使用 WebAssembly 還要能夠互動,跟原生的套件互動方式有一點不太一樣。
理由是我們要打造的是沙盒(Sandbox)來隔離不安全的程式碼,這表示操作基本上是接近單向的,在沙盒中執行的程式,是不能碰到任何宿主(Host)的記憶體,那麼原本預想的方法呼叫,就需要一些特別的方式來處理。
Kobako:COSCUP 2026 演講後,來聊聊為什麼是 Ruby
上週末我在 COSCUP 的演講「讓 AI 接管你的應用,打造微秒級無縫的 Ruby 安全沙盒」分享 Kobako 設計過程中的一些考量,後續的提問被問到在 AI 時代不太需要考慮語言時,為什麼要選 Ruby 呢?
簡單地回答,單純就是「我喜歡用 Ruby 這個語言」然而在 Kobako 的設計,還有很多更深層的考量。
Kobako:從 Ruby 到 mruby
雖然是受到 ruby.wasm 的限制才選擇 mruby 來作為沙盒(Sandbox)的語言,但也不代表跟 CRuby 都使用相同的語言標準(ISO/IEC 30170:2012)就讓這個目標輕鬆實現,相比 CRuby 在 mruby 上有很多限制存在。
這是 mruby 為了能夠在嵌入式系統這類環境運作必要的取捨,相對的輕量的特性剛好也是一種 Embedded Sandbox 的優勢,我們把 Ruby 語言沙盒嵌入到任何語言的這種想法,變成可行的選項。
Kobako:Cold Start 原來能快 100 倍?
Kobako 是近期我針對 Ruby 生態系中,對 Harness Engineering 支援所開發基於 WebAssembly 和 mruby 的沙盒(Sandbox)用來填補 AI 所撰寫的程式碼,沒有可以安全運行的環境。
關於 Kobako 的設計理念,我在 上一篇文章 已經介紹過,這次想聊的是效能。在初期的版本中 Cold Start(冷啟動,通常指初次啟動)大概要花上 500 ms 左右,這遠比最佳實踐通常會抓 200 ms 回應來說慢的不少,即使 AI 通常接受更慢的回應,但這不是等待 LLM 回應,仍該用過去的 API 標準來看待。
Kobako:用 Coding Agent 時測試能做多少防護
Kobako 的開發過程中有蠻多有趣的案例,延續上一篇 Kobako:用 AI 開發終究會翻車?的經歷,後續又再次撞到新的問題,而且是過去開發很擔心看到的 Segmentation Fault 錯誤,這表示在 Rust 和 WebAssembly 這段非 Ruby 的地方,很高機率做錯。
Kobako:用 AI 開發終究會翻車?
上週發表 Kobako:讓 Agent 安全的操作 Rails 介紹 Kobako 這個 Gem 的目標後,繼續透過 Claude Code 推進開發進度,然而很快地就遇到要大幅度修改的狀況,這難道就是使用 AI 開發的宿命嗎?
這是很值得討論的問題,也就是使用 AI 協助開發,到底是因為 AI 能力不足所以做不好,還是人類給的設計太差。
Kobako:讓 Agent 安全的操作 Rails
今年 RubyKaigi 2026 時,剛好在跟朋友聊 Harness Engineering 提到 Sandbox 的部分,覺得 Ruby 語言目前還沒有比較完善的解決方案,剛好第二天晚上的 Code Party 被分配到 dRuby(Ruby 語言內建的分散式系統)組別,讓我有了靈感,讓 Kobako 被設計出來。
當 Claude Code 持續運行數小時
去年流行過的 Ralph Loop(一種讓 AI Coding Agent 自動重複執行的技巧)當時我並不太信任這種做法是否足夠安全,以及能有足夠的穩定性。
前幾個月 Claude Code 的更新加入了 /loop 技能,本質上是利用 Claude Code 內建的 Cron 工具,以固定間隔重複特定的提示詞(Prompt)來做到類似的效果,至少更安全、可控。
然而,事情通常不會這麼單純。