Jukebox-OS:确定性时间旅行重播和AI代理的ACID工具沙盒
___________________________________________________________________________ / \ | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | | ░ ██╗██╗ ██╗██╗ ██╗███████╗██████╗ ██████╗ ██╗ ██╗ ░ | | ░ ██║██║ ██║██║ ██╔╝██╔════╝██╔══██╗██╔═══██╗╚██╗██╔╝ ░ | | ░ ██║██║ ██║█████╔╝ █████╗ ██████╦╝██║ ██║ ╚███╔╝ [ EST. 76 ] ░ | | ░██ ██║██║ ██║██╔═██╗ ██╔══╝ ██╔══██╗██║ ██║ ██╔██╗ ░ | | ░╚█████╔╝╚██████╔╝██║ ██╗███████╗██████╦╝╚██████╔╝██╔╝ ██╗ ░ | | ░ ╚════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ░ | | ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | | ========================================================================= | | ★ 24小时确定性代理运行时 • ACID沙盒 • 时间旅行 ★ | \___________________________________________________________________________/ || || ▄████████████▄ "在任何帧上放下针" ▄████████████▄ 🍒 J U K E B O X 🔮 确定性飞行记录器,ACID工具沙盒和多代理系统的时间旅行运行时 [ 🎙️ 现在播放曲目 #01 ] 不要让自主代理破坏您的生产数据库并在失控循环中烧掉$400。JUKEBOX记录每个LLM提示、令牌流、MCP工具调用和文件系统变更到加密的黑胶磁带(.jbx)—为您的代理提供BEGIN / COMMIT / ROLLBACK语义和<1毫秒零成本时间旅行重播。🍽️ 今日特别(功能) • 🥞 蓝色餐盘特别(快速入门) • 📋 菜单(架构) • 🚗 自助服务与得来速(CLI) • 🔥 主厨桌(基准) • 🪙 小费给厨师(贡献)🍒 今日特别(为什么选择JUKEBOX?)现代代理框架(LangGraph、AutoGen、CrewAI、OpenAI Agents SDK)在协调提示方面表现出色,但他们将副作用视为干而忘。在第12步的15步代理工作流程在第8步中变更了三个SQL表和五个本地文件后产生幻觉时,“检查点聊天记录”是无法拯救您的。JUKEBOX(由Marius Carlsson架构)是一个用Rust编写的系统级运行时,具有Python绑定,为任何AI代理堆栈带来数据库级的ACID事务和确定性黑胶重播:菜单项 输入内容 舱内情况 为什么平台工程师喜欢它 💿 黑胶CAS飞行记录器 每个LLM请求、流式数据块、种子、工具输入/输出和时钟滴答都通过BLAKE3 / BLAKE2b哈希到便携式.jbx磁带。以0.4毫秒离线重播50步代理运行,API成本为$0.00。像核心转储一样在GitHub问题中分享失败的.jbx文件。🛡️ 阴影舱(ACID工具沙盒)在写入本地文件、外壳命令、SQL查询和Anthropic MCP调用时拦截,通过写时复制(CoW)WASI暂存层。只有当您的验证者调用tx.commit()时,副作用才会对现实世界产生影响。如果代理未通过安全检查,tx.rollback()会留下零痕迹。🎛️ 时间旅行分叉(B面) 在失败的生产跟踪的第9帧上放下针,更换gpt-4o为claude-3-7-sonnet或调整系统提示,并继续。从Merkle磁带中瞬间解决步骤1–8;仅步骤9+会接触实时网络。并排对比两个时间线。🚨 防跳针针头(循环断路器) 流式语义相似度和AST差异监视器,监控代理间的聊天和令牌消耗速度。当两个代理进入礼貌的递归死亡螺旋时,自动触发断路器—在告警响起之前节省云预算。🥞 蓝色餐盘特别(60秒快速入门) 1. 滑入舱内(安装) git clone https://github.com/socrates6969/jukebox-os.git cd jukebox-os pip install -e . 2. 将任何代理包装在事务黑胶轨道中 from jukebox import Jukebox , SandboxPolicy , CircuitBreaker jb = Jukebox ( tape_dir = "./tapes", sandbox = SandboxPolicy ( filesystem = "copy_on_write", mcp_mode = "staged_acid"), breaker = CircuitBreaker ( max_cost_usd = 0.50, max_semantic_repeat = 3), ) @ jb . track ( name = "invoice-reconciliation-agent" ) async def run_accounting_agent ( customer_id : str , amount_usd : float ) -> dict : async with jb . transaction ( tape_id = "tr_8f92a1c4" ) as tx : tx . record_agent_turn ( agent_name = "planner", message = f"准备为${amount_usd}退还给{customer_id}", model = "gpt-4o", cost_usd = 0.008,) tx . stage_file_write ( path = "./tapes/staged_ledger_demo.json", content = f'{{"customer": "{customer_id}", "refund_usd": {amount_usd}}}' , ) if amount_usd > 500.0 : await tx . rollback ( reason = "退款超过$500自主阈值" ) return { "status": "ROLLED_BACK", "tape_id": tx . tape_id } await tx . commit () return { "status": "COMMITTED", "tape_id": tx . tape_id } if __name__ == "__main__": print ( asyncio . run ( run_accounting_agent ( "cust_9981", 420.00 ))) 3. 放下针:在Python中进行时间旅行分叉 from jukebox import Tape tape = Tape . load ( "./tapes/tr_8f92a1c4.jbx" ) b_side = tape .
阅读全文 →本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡