[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-agent-infra--sandbox":3,"tool-agent-infra--sandbox":64},[4,17,27,35,44,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",140436,2,"2026-04-05T23:32:43",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":10,"last_commit_at":41,"category_tags":42,"status":16},4292,"Deep-Live-Cam","hacksider\u002FDeep-Live-Cam","Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具，用户仅需一张静态照片，即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点，让高质量的数字内容创作变得触手可及。\n\n这款工具不仅适合开发者和技术研究人员探索算法边界，更因其极简的操作逻辑（仅需三步：选脸、选摄像头、启动），广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换，还是制作趣味短视频和直播互动，Deep-Live-Cam 都能提供流畅的支持。\n\n其核心技术亮点在于强大的实时处理能力，支持口型遮罩（Mouth Mask）以保留使用者原始的嘴部动作，确保表情自然精准；同时具备“人脸映射”功能，可同时对画面中的多个主体应用不同面孔。此外，项目内置了严格的内容安全过滤机制，自动拦截涉及裸露、暴力等不当素材，并倡导用户在获得授权及明确标注的前提下合规使用，体现了技术发展与伦理责任的平衡。",88924,"2026-04-06T03:28:53",[13,14,15,43],"视频",{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":23,"last_commit_at":50,"category_tags":51,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,52,43,53,15,54,26,13,55],"数据工具","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":79,"owner_email":79,"owner_twitter":79,"owner_website":79,"owner_url":80,"languages":81,"stars":108,"forks":109,"last_commit_at":110,"license":111,"difficulty_score":23,"env_os":112,"env_gpu":113,"env_ram":114,"env_deps":115,"category_tags":123,"github_topics":124,"view_count":23,"oss_zip_url":79,"oss_zip_packed_at":79,"status":16,"created_at":131,"updated_at":132,"faqs":133,"releases":164},4130,"agent-infra\u002Fsandbox","sandbox","All-in-One Sandbox for AI Agents that combines Browser, Shell, File, MCP and VSCode Server in a single Docker container.","sandbox 是一款专为 AI 智能体打造的一体化沙箱环境，它将浏览器、终端命令行、文件系统、MCP（模型上下文协议）服务以及 VSCode 开发服务器整合在单个 Docker 容器中。传统沙箱往往功能单一，导致浏览器下载的文件无法直接在代码环境中使用，不同工具间的数据流转和协作十分困难。sandbox 通过构建统一的文件系统和安全执行环境，完美解决了这一痛点：用户在浏览器中获取的资源可立即在终端或编辑器中调用，实现了真正的无缝衔接。\n\n该工具特别适合 AI 开发者、研究人员以及需要构建复杂智能体工作流的工程师使用。其核心技术亮点在于“零配置”启动与云原生轻量级架构，支持通过 Python、TypeScript 或 Go 等多种语言的 SDK 快速集成。此外，sandbox 内置了预配置的 MCP 服务和多模态交互界面（如 VNC 浏览器、Jupyter Notebook），不仅保障了代码执行的安全性，还让智能体能够像人类一样灵活操作图形界面和文件系统，大幅降低了开发门槛，是构建下一代自主 AI 代理的理想基础设施。","# AIO Sandbox - All-in-One Agent Sandbox Environment\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fagent-infra_sandbox_readme_17c9e9e56d82.png\" alt=\"logo\" width=\"200\"\u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>🌐 Browser | 💻 Terminal | 📁 File | 🔧 VSCode | 📊 Jupyter | 🤖 MCP\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n\u003Cdiv align=\"center\">\n\u003Cp>\n        🌐 \u003Ca href=\"https:\u002F\u002Fsandbox.agent-infra.com\u002F\">Website\u003C\u002Fa>&nbsp&nbsp\n        | &nbsp&nbsp🔌 \u003Ca href=\"https:\u002F\u002Fsandbox.agent-infra.com\u002Fapi\">API\u003C\u002Fa>&nbsp&nbsp\n        | &nbsp&nbsp📑 \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fpdf\u002F2509.02544#S2.SS2\">Paper\u003C\u002Fa>&nbsp&nbsp\n        | &nbsp&nbsp🌟 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Ftree\u002Fmain\u002Fexamples\">Examples\u003C\u002Fa>&nbsp&nbsp\n        | &nbsp&nbsp📊 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Ftree\u002Fmain\u002Fevaluation\">Evaluation\u003C\u002Fa> &nbsp&nbsp\n\u003C\u002Fp>\n\u003C\u002Fdiv>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Freleases\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fagent-infra\u002Fsandbox\" alt=\"Release\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fblob\u002Fmain\u002FLICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fagent-infra\u002Fsandbox\" alt=\"License\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fagent-sandbox\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fagent-sandbox\" alt=\"PyPI\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@agent-infra\u002Fsandbox\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@agent-infra\u002Fsandbox\" alt=\"npm\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fagent-infra_sandbox_readme_f88b84bbbb24.png)\n\n## 🚀 Quick Start\n\nGet up and running in 30 seconds:\n\n```bash\ndocker run --security-opt seccomp=unconfined --rm -it -p 8080:8080 ghcr.io\u002Fagent-infra\u002Fsandbox:latest\n```\n\nFor users in mainland China:\n\n```bash\ndocker run --security-opt seccomp=unconfined --rm -it -p 8080:8080 enterprise-public-cn-beijing.cr.volces.com\u002Fvefaas-public\u002Fall-in-one-sandbox:latest\n```\n\nUse a specific version in the format `agent-infra\u002Fsandbox:${version}`, for example, to use version 1.0.0.150:\n\n```bash\ndocker run --security-opt seccomp=unconfined --rm -it -p 8080:8080 ghcr.io\u002Fagent-infra\u002Fsandbox:1.0.0.150\n# or users in mainland China\ndocker run --security-opt seccomp=unconfined --rm -it -p 8080:8080 enterprise-public-cn-beijing.cr.volces.com\u002Fvefaas-public\u002Fall-in-one-sandbox:1.0.0.150\n```\n\nOnce running, access the environment at:\n- 📖 **Documentation**: http:\u002F\u002Flocalhost:8080\u002Fv1\u002Fdocs\n- 🌐 **VNC Browser**: http:\u002F\u002Flocalhost:8080\u002Fvnc\u002Findex.html?autoconnect=true\n- 💻 **VSCode Server**: http:\u002F\u002Flocalhost:8080\u002Fcode-server\u002F\n- 🤖 **MCP Services**: http:\u002F\u002Flocalhost:8080\u002Fmcp\n\n## 🎯 What is AIO Sandbox?\n\nAIO Sandbox is an **all-in-one** agent sandbox environment that combines Browser, Shell, File, MCP operations, and VSCode Server in a single Docker container. Built on cloud-native lightweight sandbox technology, it provides a unified, secure execution environment for AI agents and developers.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fagent-infra_sandbox_readme_605a9537c1e2.png\" alt=\"AIO Sandbox Architecture\" width=\"600\"\u002F>\n\u003C\u002Fp>\n\n### Why Choose AIO Sandbox?\n\nTraditional sandboxes are **single-purpose** (browser, code, or shell), making file sharing and functional coordination extremely challenging. AIO Sandbox solves this by providing:\n\n- ✅ **Unified File System** - Files downloaded in browser are instantly available in Shell\u002FFile operations\n- ✅ **Multiple Interfaces** - VNC, VSCode, Jupyter, and Terminal in one unified environment\n- ✅ **Secure Execution** - Sandboxed Python and Node.js execution with safety guarantees\n- ✅ **Zero Configuration** - Pre-configured MCP servers and development tools ready to use\n- ✅ **Agent-Ready** - MCP-compatible APIs for seamless AI agent integration\n\n## 📦 Installation\n\n### SDK Installation\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd>\n\n**Python**\n```bash\npip install agent-sandbox\n```\n\n\u003C\u002Ftd>\n\u003Ctd>\n\n**TypeScript\u002FJavaScript**\n```bash\nnpm install @agent-infra\u002Fsandbox\n```\n\n\u003C\u002Ftd>\n\u003Ctd>\n\n**Golang**\n```bash\ngo get github.com\u002Fagent-infra\u002Fsandbox-sdk-go\n```\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n### Basic Usage\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd>\n\n**Python Example**\n```python\nfrom agent_sandbox import Sandbox\n\n# Initialize client\nclient = Sandbox(base_url=\"http:\u002F\u002Flocalhost:8080\")\nhome_dir = client.sandbox.get_context().home_dir\n\n# Execute shell commands\nresult = client.shell.exec_command(command=\"ls -la\")\nprint(result.data.output)\n\n# File operations\ncontent = client.file.read_file(file=f\"{home_dir}\u002F.bashrc\")\nprint(content.data.content)\n\n# Browser automation\nscreenshot = client.browser.screenshot()\n```\n\n\u003C\u002Ftd>\n\u003Ctd>\n\n**TypeScript Example**\n```typescript\nimport { Sandbox } from '@agent-infra\u002Fsandbox';\n\n\u002F\u002F Initialize client\nconst sandbox = new Sandbox({ baseURL: 'http:\u002F\u002Flocalhost:8080' });\n\n\u002F\u002F Execute shell commands\nconst result = await sandbox.shell.exec({ command: 'ls -la' });\nconsole.log(result.output);\n\n\u002F\u002F File operations\nconst content = await sandbox.file.read({ path: '\u002Fhome\u002Fgem\u002F.bashrc' });\nconsole.log(content);\n\n\u002F\u002F Browser automation\nconst screenshot = await sandbox.browser.screenshot();\n```\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## 🌟 Key Features\n\n### 🔗 Unified Environment\nAll components run in the same container with a shared filesystem, enabling seamless workflows:\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fagent-infra_sandbox_readme_f88b84bbbb24.png\" alt=\"Unified Environment\" width=\"600\"\u002F>\n\u003C\u002Fp>\n\n### 🌐 Browser Automation\nFull browser control through multiple interfaces:\n- **VNC** - Visual browser interaction through remote desktop\n- **CDP** - Chrome DevTools Protocol for programmatic control\n- **MCP** - High-level browser automation tools\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fagent-infra_sandbox_readme_ab5609b0e953.png\" alt=\"Browser Automation\" width=\"600\"\u002F>\n\u003C\u002Fp>\n\n### 💻 Development Tools\nIntegrated development environment with:\n- **VSCode Server** - Full IDE experience in browser\n- **Jupyter Notebook** - Interactive Python environment\n- **Terminal** - WebSocket-based terminal access\n- **Port Forwarding** - Smart preview for web applications\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fagent-infra_sandbox_readme_a0b38b6cb89d.png\" alt=\"VSCode Server\" width=\"600\"\u002F>\n\u003C\u002Fp>\n\n### 🤖 MCP Integration\nPre-configured Model Context Protocol servers:\n- **Browser** - Web automation and scraping\n- **File** - File system operations\n- **Shell** - Command execution\n- **Markitdown** - Document processing\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fagent-infra_sandbox_readme_40e8bc3a25a1.png\" alt=\"MCP Integration\" width=\"600\"\u002F>\n\u003C\u002Fp>\n\n## 📚 Complete Example\n\nConvert a webpage to Markdown with embedded screenshot:\n\n```python\nimport asyncio\nimport base64\nfrom playwright.async_api import async_playwright\nfrom agent_sandbox import Sandbox\n\nasync def site_to_markdown():\n    # Initialize sandbox client\n    c = Sandbox(base_url=\"http:\u002F\u002Flocalhost:8080\")\n    home_dir = c.sandbox.get_context().home_dir\n\n    # Browser: Automation to download HTML\n    async with async_playwright() as p:\n        browser_info = c.browser.get_info().data\n        page = await (await p.chromium.connect_over_cdp(browser_info.cdp_url)).new_page()\n        await page.goto(\"https:\u002F\u002Fexample.com\", wait_until=\"networkidle\")\n        html = await page.content()\n        screenshot_b64 = base64.b64encode(await page.screenshot()).decode('utf-8')\n\n    # Jupyter: Convert HTML to markdown in sandbox\n    c.jupyter.execute_code(code=f\"\"\"\nfrom markdownify import markdownify\nhtml = '''{html}'''\nscreenshot_b64 = \"{screenshot_b64}\"\n\nmd = f\"{{markdownify(html)}}\\\\n\\\\n![Screenshot](data:image\u002Fpng;base64,{{screenshot_b64}})\"\nwith open('{home_dir}\u002Fsite.md', 'w') as f:\n    f.write(md)\nprint(\"Done!\")\n\"\"\")\n\n    # Shell: List files in sandbox\n    list_result = c.shell.exec_command(command=f\"ls -lh {home_dir}\")\n    print(f\"Files in sandbox: {list_result.data.output}\")\n\n    # File: Read the generated markdown\n    return c.file.read_file(file=f\"{home_dir}\u002Fsite.md\").data.content\n\nif __name__ == \"__main__\":\n    result = asyncio.run(site_to_markdown())\n    print(f\"Markdown saved successfully!\")\n```\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fagent-infra_sandbox_readme_5e81f7543ac3.png\" alt=\"Example Output\" width=\"600\"\u002F>\n\u003C\u002Fp>\n\n## 🏗️ Architecture\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                    🌐 Browser + VNC                        │\n├─────────────────────────────────────────────────────────────┤\n│  💻 VSCode Server  │  🐚 Shell Terminal  │  📁 File Ops   │\n├─────────────────────────────────────────────────────────────┤\n│              🔗 MCP Hub + 🔒 Sandbox Fusion               │\n├─────────────────────────────────────────────────────────────┤\n│         🚀 Preview Proxy + 📊 Service Monitoring          │\n└─────────────────────────────────────────────────────────────┘\n```\n\n## 🛠️ API Reference\n\n### Core APIs\n\n| Endpoint | Description |\n|----------|-------------|\n| `\u002Fv1\u002Fsandbox` | Get sandbox environment information |\n| `\u002Fv1\u002Fshell\u002Fexec` | Execute shell commands |\n| `\u002Fv1\u002Ffile\u002Fread` | Read file contents |\n| `\u002Fv1\u002Ffile\u002Fwrite` | Write file contents |\n| `\u002Fv1\u002Fbrowser\u002Fscreenshot` | Take browser screenshot |\n| `\u002Fv1\u002Fjupyter\u002Fexecute` | Execute Jupyter code |\n\n### MCP Servers\n\n| Server | Tools Available |\n|--------|----------------|\n| `browser` | `navigate`, `screenshot`, `click`, `type`, `scroll` |\n| `file` | `read`, `write`, `list`, `search`, `replace` |\n| `shell` | `exec`, `create_session`, `kill` |\n| `markitdown` | `convert`, `extract_text`, `extract_images` |\n\n## 🚢 Deployment\n\n### Docker Compose\n\n```yaml\nversion: '3.8'\nservices:\n  sandbox:\n    container_name: aio-sandbox\n    image: ghcr.io\u002Fagent-infra\u002Fsandbox:latest\n    volumes:\n      - \u002Ftmp\u002Fgem\u002Fvite-project:\u002Fhome\u002Fgem\u002Fvite-project\n    security_opt:\n      - seccomp:unconfined\n    extra_hosts:\n      - \"host.docker.internal:host-gateway\"\n    restart: \"unless-stopped\"\n    shm_size: \"2gb\"\n    ports:\n      - \"${HOST_PORT:-8080}:8080\"\n    environment:\n      PROXY_SERVER: ${PROXY_SERVER:-host.docker.internal:7890}\n      JWT_PUBLIC_KEY: ${JWT_PUBLIC_KEY:-}\n      DNS_OVER_HTTPS_TEMPLATES: ${DNS_OVER_HTTPS_TEMPLATES:-}\n      WORKSPACE: ${WORKSPACE:-\"\u002Fhome\u002Fgem\"}\n      HOMEPAGE: ${HOMEPAGE:-}\n      BROWSER_EXTRA_ARGS: ${BROWSER_EXTRA_ARGS:-}\n      TZ: ${TZ:-Asia\u002FSingapore}\n      WAIT_PORTS: ${WAIT_PORTS:-}\n```\n\n### Kubernetes\n\n```yaml\napiVersion: apps\u002Fv1\nkind: Deployment\nmetadata:\n  name: aio-sandbox\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: aio-sandbox\n  template:\n    metadata:\n      labels:\n        app: aio-sandbox\n    spec:\n      containers:\n      - name: aio-sandbox\n        image: ghcr.io\u002Fagent-infra\u002Fsandbox:latest\n        ports:\n        - containerPort: 8080\n        resources:\n          limits:\n            memory: \"2Gi\"\n            cpu: \"1000m\"\n```\n\n## 🤝 Integration Examples\n\n### Browser Use Integration\n\n```python\nimport asyncio\n\nfrom agent_sandbox import Sandbox\nfrom browser_use import Agent, Tools\nfrom browser_use.browser import BrowserProfile, BrowserSession\nfrom browser_use.llm import ChatOpenAI\n\nsandbox = Sandbox(base_url=\"http:\u002F\u002Flocalhost:8080\")\nprint(\"sandbox\", sandbox.browser)\ncdp_url = sandbox.browser.get_info().data.cdp_url\n\nbrowser_session = BrowserSession(\n    browser_profile=BrowserProfile(cdp_url=cdp_url, is_local=True)\n)\ntools = Tools()\n\n\nasync def main():\n    agent = Agent(\n        task='Visit https:\u002F\u002Fduckduckgo.com and search for \"browser-use founders\"',\n        llm=ChatOpenAI(model=\"gcp-claude4.1-opus\"),\n        tools=tools,\n        browser_session=browser_session,\n    )\n\n    await agent.run()\n    await browser_session.kill()\n\n    input(\"Press Enter to close...\")\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n### LangChain Integration\n\n```python\nfrom langchain.tools import BaseTool\nfrom agent_sandbox import Sandbox\n\nclass SandboxTool(BaseTool):\n    name = \"sandbox_execute\"\n    description = \"Execute commands in AIO Sandbox\"\n\n    def _run(self, command: str) -> str:\n        client = Sandbox(base_url=\"http:\u002F\u002Flocalhost:8080\")\n        result = client.shell.exec_command(command=command)\n        return result.data.output\n```\n\n### OpenAI Assistant Integration\n\n```python\nfrom openai import OpenAI\nfrom agent_sandbox import Sandbox\nimport json\n\nclient = OpenAI(\n    api_key=\"your_api_key\",\n)\nsandbox = Sandbox(base_url=\"http:\u002F\u002Flocalhost:8080\")\n\n\n# define a tool to run code in the sandbox\ndef run_code(code, lang=\"python\"):\n    if lang == \"python\":\n        return sandbox.jupyter.execute_code(code=code).data\n    return sandbox.nodejs.execute_nodejs_code(code=code).data\n\n\n# Use OpenAI\nresponse = client.chat.completions.create(\n    model=\"gpt-4\",\n    messages=[{\"role\": \"user\", \"content\": \"calculate 1+1\"}],\n    tools=[\n        {\n            \"type\": \"function\",\n            \"function\": {\n                \"name\": \"run_code\",\n                \"parameters\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"code\": {\"type\": \"string\"},\n                        \"lang\": {\"type\": \"string\"},\n                    },\n                },\n            },\n        }\n    ],\n)\n\n\nif response.choices[0].message.tool_calls:\n    args = json.loads(response.choices[0].message.tool_calls[0].function.arguments)\n    print(\"args\", args)\n    result = run_code(**args)\n    print(result['outputs'][0]['text'])\n```\n\n## 🤝 Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n## 📄 License\n\nAIO Sandbox is released under the [Apache License 2.0](LICENSE).\n\n## 🙏 Acknowledgments\n\nBuilt with ❤️ by the Agent Infra team. Special thanks to all contributors and the open-source community.\n\n## 📞 Support\n\n- 📖 [Documentation](https:\u002F\u002Fsandbox.agent-infra.com)\n- 💬 [GitHub Discussions](https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fdiscussions)\n- 🐛 [Issue Tracker](https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fissues)\n\n---\n\n\u003Cp align=\"center\">\n  \u003Cstrong>Ready to revolutionize your AI development workflow?\u003C\u002Fstrong>\u003Cbr\u002F>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\">⭐ Star us on GitHub\u003C\u002Fa> •\n  \u003Ca href=\"https:\u002F\u002Fsandbox.agent-infra.com\">📚 Read the Docs\u003C\u002Fa> •\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fissues\">🐛 Report Issues\u003C\u002Fa>\n\u003C\u002Fp>\n","# AIO 沙盒 - 多合一智能体沙盒环境\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fagent-infra_sandbox_readme_17c9e9e56d82.png\" alt=\"logo\" width=\"200\"\u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>🌐 浏览器 | 💻 终端 | 📁 文件 | 🔧 VSCode | 📊 Jupyter | 🤖 MCP\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n\u003Cdiv align=\"center\">\n\u003Cp>\n        🌐 \u003Ca href=\"https:\u002F\u002Fsandbox.agent-infra.com\u002F\">官网\u003C\u002Fa>&nbsp&nbsp\n        | &nbsp&nbsp🔌 \u003Ca href=\"https:\u002F\u002Fsandbox.agent-infra.com\u002Fapi\">API\u003C\u002Fa>&nbsp&nbsp\n        | &nbsp&nbsp📑 \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fpdf\u002F2509.02544#S2.SS2\">论文\u003C\u002Fa>&nbsp&nbsp\n        | &nbsp&nbsp🌟 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Ftree\u002Fmain\u002Fexamples\">示例\u003C\u002Fa>&nbsp&nbsp\n        | &nbsp&nbsp📊 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Ftree\u002Fmain\u002Fevaluation\">评估\u003C\u002Fa> &nbsp&nbsp\n\u003C\u002Fp>\n\u003C\u002Fdiv>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Freleases\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fagent-infra\u002Fsandbox\" alt=\"发布版本\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fblob\u002Fmain\u002FLICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fagent-infra\u002Fsandbox\" alt=\"许可证\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fagent-sandbox\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fagent-sandbox\" alt=\"PyPI\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@agent-infra\u002Fsandbox\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@agent-infra\u002Fsandbox\" alt=\"npm\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fagent-infra_sandbox_readme_f88b84bbbb24.png)\n\n## 🚀 快速开始\n\n30秒内即可启动并运行：\n\n```bash\ndocker run --security-opt seccomp=unconfined --rm -it -p 8080:8080 ghcr.io\u002Fagent-infra\u002Fsandbox:latest\n```\n\n适用于中国大陆用户：\n\n```bash\ndocker run --security-opt seccomp=unconfined --rm -it -p 8080:8080 enterprise-public-cn-beijing.cr.volces.com\u002Fvefaas-public\u002Fall-in-one-sandbox:latest\n```\n\n如需指定版本，可使用 `agent-infra\u002Fsandbox:${version}` 格式，例如使用 1.0.0.150 版本：\n\n```bash\ndocker run --security-opt seccomp=unconfined --rm -it -p 8080:8080 ghcr.io\u002Fagent-infra\u002Fsandbox:1.0.0.150\n# 或者中国大陆用户\ndocker run --security-opt seccomp=unconfined --rm -it -p 8080:8080 enterprise-public-cn-beijing.cr.volces.com\u002Fvefaas-public\u002Fall-in-one-sandbox:1.0.0.150\n```\n\n运行后，可通过以下地址访问各个功能：\n- 📖 **文档**：http:\u002F\u002Flocalhost:8080\u002Fv1\u002Fdocs\n- 🌐 **VNC 浏览器**：http:\u002F\u002Flocalhost:8080\u002Fvnc\u002Findex.html?autoconnect=true\n- 💻 **VSCode Server**：http:\u002F\u002Flocalhost:8080\u002Fcode-server\u002F\n- 🤖 **MCP 服务**：http:\u002F\u002Flocalhost:8080\u002Fmcp\n\n## 🎯 什么是 AIO 沙盒？\n\nAIO 沙盒是一个**多合一**的智能体沙盒环境，将浏览器、Shell、文件操作、MCP 服务以及 VSCode Server 集成于一个 Docker 容器中。基于云原生轻量级沙盒技术构建，为 AI 智能体和开发者提供统一且安全的执行环境。\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fagent-infra_sandbox_readme_605a9537c1e2.png\" alt=\"AIO 沙盒架构\" width=\"600\"\u002F>\n\u003C\u002Fp>\n\n### 为什么选择 AIO 沙盒？\n\n传统沙盒通常是**单一用途**的（仅限于浏览器、代码或 Shell），这使得文件共享和功能协同变得极为困难。而 AIO 沙盒则通过以下方式解决了这一问题：\n\n- ✅ **统一文件系统**：在浏览器中下载的文件可立即在 Shell 和文件操作中使用。\n- ✅ **多接口支持**：VNC、VSCode、Jupyter 和终端在一个统一环境中无缝衔接。\n- ✅ **安全执行**：沙箱化的 Python 和 Node.js 执行，确保安全性。\n- ✅ **零配置**：预配置的 MCP 服务器和开发工具，开箱即用。\n- ✅ **智能体友好**：兼容 MCP 的 API，便于 AI 智能体的无缝集成。\n\n## 📦 安装\n\n### SDK 安装\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd>\n\n**Python**\n```bash\npip install agent-sandbox\n```\n\n\u003C\u002Ftd>\n\u003Ctd>\n\n**TypeScript\u002FJavaScript**\n```bash\nnpm install @agent-infra\u002Fsandbox\n```\n\n\u003C\u002Ftd>\n\u003Ctd>\n\n**Golang**\n```bash\ngo get github.com\u002Fagent-infra\u002Fsandbox-sdk-go\n```\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n### 基本使用\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd>\n\n**Python 示例**\n```python\nfrom agent_sandbox import Sandbox\n\n# 初始化客户端\nclient = Sandbox(base_url=\"http:\u002F\u002Flocalhost:8080\")\nhome_dir = client.sandbox.get_context().home_dir\n\n# 执行 Shell 命令\nresult = client.shell.exec_command(command=\"ls -la\")\nprint(result.data.output)\n\n# 文件操作\ncontent = client.file.read_file(file=f\"{home_dir}\u002F.bashrc\")\nprint(content.data.content)\n\n# 浏览器自动化\nscreenshot = client.browser.screenshot()\n```\n\n\u003C\u002Ftd>\n\u003Ctd>\n\n**TypeScript 示例**\n```typescript\nimport { Sandbox } from '@agent-infra\u002Fsandbox';\n\n\u002F\u002F 初始化客户端\nconst sandbox = new Sandbox({ baseURL: 'http:\u002F\u002Flocalhost:8080' });\n\n\u002F\u002F 执行 Shell 命令\nconst result = await sandbox.shell.exec({ command: 'ls -la' });\nconsole.log(result.output);\n\n\u002F\u002F 文件操作\nconst content = await sandbox.file.read({ path: '\u002Fhome\u002Fgem\u002F.bashrc' });\nconsole.log(content);\n\n\u002F\u002F 浏览器自动化\nconst screenshot = await sandbox.browser.screenshot();\n```\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## 🌟 核心特性\n\n### 🔗 统一环境\n所有组件运行在同一容器内，共享文件系统，实现无缝工作流：\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fagent-infra_sandbox_readme_f88b84bbbb24.png\" alt=\"统一环境\" width=\"600\"\u002F>\n\u003C\u002Fp>\n\n### 🌐 浏览器自动化\n通过多种接口实现全面的浏览器控制：\n- **VNC**：通过远程桌面进行可视化浏览器交互。\n- **CDP**：利用 Chrome 开发者工具协议进行程序化控制。\n- **MCP**：提供高级别的浏览器自动化工具。\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fagent-infra_sandbox_readme_ab5609b0e953.png\" alt=\"浏览器自动化\" width=\"600\"\u002F>\n\u003C\u002Fp>\n\n### 💻 开发工具\n集成的开发环境包括：\n- **VSCode Server**：在浏览器中享受完整的 IDE 体验。\n- **Jupyter Notebook**：交互式的 Python 环境。\n- **终端**：基于 WebSocket 的终端访问。\n- **端口转发**：用于 Web 应用的智能预览功能。\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fagent-infra_sandbox_readme_a0b38b6cb89d.png\" alt=\"VSCode Server\" width=\"600\"\u002F>\n\u003C\u002Fp>\n\n### 🤖 MCP 集成\n预配置的 Model Context Protocol 服务器：\n- **浏览器**：用于网页自动化和爬取。\n- **文件**：用于文件系统操作。\n- **Shell**：用于命令执行。\n- **Markitdown**：用于文档处理。\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fagent-infra_sandbox_readme_40e8bc3a25a1.png\" alt=\"MCP 集成\" width=\"600\"\u002F>\n\u003C\u002Fp>\n\n## 📚 完整示例\n\n将网页转换为包含嵌入式截图的 Markdown：\n\n```python\nimport asyncio\nimport base64\nfrom playwright.async_api import async_playwright\nfrom agent_sandbox import Sandbox\n\nasync def site_to_markdown():\n    # 初始化沙盒客户端\n    c = Sandbox(base_url=\"http:\u002F\u002Flocalhost:8080\")\n    home_dir = c.sandbox.get_context().home_dir\n\n    # 浏览器：自动化下载 HTML\n    async with async_playwright() as p:\n        browser_info = c.browser.get_info().data\n        page = await (await p.chromium.connect_over_cdp(browser_info.cdp_url)).new_page()\n        await page.goto(\"https:\u002F\u002Fexample.com\", wait_until=\"networkidle\")\n        html = await page.content()\n        screenshot_b64 = base64.b64encode(await page.screenshot()).decode('utf-8')\n\n    # Jupyter：在沙盒中将 HTML 转换为 Markdown\n    c.jupyter.execute_code(code=f\"\"\"\nfrom markdownify import markdownify\nhtml = '''{html}'''\nscreenshot_b64 = \"{screenshot_b64}\"\n\nmd = f\"{{markdownify(html)}}\\\\n\\\\n![Screenshot](data:image\u002Fpng;base64,{{screenshot_b64}})\"\nwith open('{home_dir}\u002Fsite.md', 'w') as f:\n    f.write(md)\nprint(\"Done!\")\n\"\"\")\n\n    # Shell：列出沙盒中的文件\n    list_result = c.shell.exec_command(command=f\"ls -lh {home_dir}\")\n    print(f\"沙盒中的文件：{list_result.data.output}\")\n\n    # 文件：读取生成的 Markdown\n    return c.file.read_file(file=f\"{home_dir}\u002Fsite.md\").data.content\n\nif __name__ == \"__main__\":\n    result = asyncio.run(site_to_markdown())\n    print(f\"Markdown 已成功保存！\")\n```\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fagent-infra_sandbox_readme_5e81f7543ac3.png\" alt=\"示例输出\" width=\"600\"\u002F>\n\u003C\u002Fp>\n\n## 🏗️ 架构\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                    🌐 浏览器 + VNC                        │\n├─────────────────────────────────────────────────────────────┤\n│  💻 VSCode 服务器  │  🐚 Shell 终端  │  📁 文件操作   │\n├─────────────────────────────────────────────────────────────┤\n│              🔗 MCP 中心 + 🔒 沙盒融合               │\n├─────────────────────────────────────────────────────────────┤\n│         🚀 预览代理 + 📊 服务监控          │\n└─────────────────────────────────────────────────────────────┘\n```\n\n## 🛠️ API 参考\n\n### 核心 API\n\n| 端点 | 描述 |\n|----------|-------------|\n| `\u002Fv1\u002Fsandbox` | 获取沙盒环境信息 |\n| `\u002Fv1\u002Fshell\u002Fexec` | 执行 shell 命令 |\n| `\u002Fv1\u002Ffile\u002Fread` | 读取文件内容 |\n| `\u002Fv1\u002Ffile\u002Fwrite` | 写入文件内容 |\n| `\u002Fv1\u002Fbrowser\u002Fscreenshot` | 截取浏览器屏幕截图 |\n| `\u002Fv1\u002Fjupyter\u002Fexecute` | 执行 Jupyter 代码 |\n\n### MCP 服务器\n\n| 服务器 | 可用工具 |\n|--------|----------------|\n| `browser` | `navigate`, `screenshot`, `click`, `type`, `scroll` |\n| `file` | `read`, `write`, `list`, `search`, `replace` |\n| `shell` | `exec`, `create_session`, `kill` |\n| `markitdown` | `convert`, `extract_text`, `extract_images` |\n\n## 🚢 部署\n\n### Docker Compose\n\n```yaml\nversion: '3.8'\nservices:\n  sandbox:\n    container_name: aio-sandbox\n    image: ghcr.io\u002Fagent-infra\u002Fsandbox:latest\n    volumes:\n      - \u002Ftmp\u002Fgem\u002Fvite-project:\u002Fhome\u002Fgem\u002Fvite-project\n    security_opt:\n      - seccomp:unconfined\n    extra_hosts:\n      - \"host.docker.internal:host-gateway\"\n    restart: \"unless-stopped\"\n    shm_size: \"2gb\"\n    ports:\n      - \"${HOST_PORT:-8080}:8080\"\n    environment:\n      PROXY_SERVER: ${PROXY_SERVER:-host.docker.internal:7890}\n      JWT_PUBLIC_KEY: ${JWT_PUBLIC_KEY:-}\n      DNS_OVER_HTTPS_TEMPLATES: ${DNS_OVER_HTTPS_TEMPLATES:-}\n      WORKSPACE: ${WORKSPACE:-\"\u002Fhome\u002Fgem\"}\n      HOMEPAGE: ${HOMEPAGE:-}\n      BROWSER_EXTRA_ARGS: ${BROWSER_EXTRA_ARGS:-}\n      TZ: ${TZ:-Asia\u002FSingapore}\n      WAIT_PORTS: ${WAIT_PORTS:-}\n```\n\n### Kubernetes\n\n```yaml\napiVersion: apps\u002Fv1\nkind: Deployment\nmetadata:\n  name: aio-sandbox\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: aio-sandbox\n  template:\n    metadata:\n      labels:\n        app: aio-sandbox\n    spec:\n      containers:\n      - name: aio-sandbox\n        image: ghcr.io\u002Fagent-infra\u002Fsandbox:latest\n        ports:\n        - containerPort: 8080\n        resources:\n          limits:\n            memory: \"2Gi\"\n            cpu: \"1000m\"\n```\n\n## 🤝 集成示例\n\n### 浏览器使用集成\n\n```python\nimport asyncio\n\nfrom agent_sandbox import Sandbox\nfrom browser_use import Agent, Tools\nfrom browser_use.browser import BrowserProfile, BrowserSession\nfrom browser_use.llm import ChatOpenAI\n\nsandbox = Sandbox(base_url=\"http:\u002F\u002Flocalhost:8080\")\nprint(\"sandbox\", sandbox.browser)\ncdp_url = sandbox.browser.get_info().data.cdp_url\n\nbrowser_session = BrowserSession(\n    browser_profile=BrowserProfile(cdp_url=cdp_url, is_local=True)\n)\ntools = Tools()\n\n\nasync def main():\n    agent = Agent(\n        task='访问 https:\u002F\u002Fduckduckgo.com 并搜索 \"browser-use founders\"',\n        llm=ChatOpenAI(model=\"gcp-claude4.1-opus\"),\n        tools=tools,\n        browser_session=browser_session,\n    )\n\n    await agent.run()\n    await browser_session.kill()\n\n    input(\"按 Enter 键关闭...\")\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n### LangChain 集成\n\n```python\nfrom langchain.tools import BaseTool\nfrom agent_sandbox import Sandbox\n\nclass SandboxTool(BaseTool):\n    name = \"sandbox_execute\"\n    description = \"在 AIO 沙盒中执行命令\"\n\n    def _run(self, command: str) -> str:\n        client = Sandbox(base_url=\"http:\u002F\u002Flocalhost:8080\")\n        result = client.shell.exec_command(command=command)\n        return result.data.output\n```\n\n### OpenAI Assistant 集成\n\n```python\nfrom openai import OpenAI\nfrom agent_sandbox import Sandbox\nimport json\n\nclient = OpenAI(\n    api_key=\"your_api_key\",\n)\nsandbox = Sandbox(base_url=\"http:\u002F\u002Flocalhost:8080\")\n\n\n# 定义一个在沙盒中运行代码的工具\ndef run_code(code, lang=\"python\"):\n    if lang == \"python\":\n        return sandbox.jupyter.execute_code(code=code).data\n    return sandbox.nodejs.execute_nodejs_code(code=code).data\n\n\n# 使用 OpenAI\nresponse = client.chat.completions.create(\n    model=\"gpt-4\",\n    messages=[{\"role\": \"user\", \"content\": \"计算 1+1\"}],\n    tools=[\n        {\n            \"type\": \"function\",\n            \"function\": {\n                \"name\": \"run_code\",\n                \"parameters\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"code\": {\"type\": \"string\"},\n                        \"lang\": {\"type\": \"string\"},\n                    },\n                },\n            },\n        }\n    ],\n)\n\n\nif response.choices[0].message.tool_calls:\n    args = json.loads(response.choices[0].message.tool_calls[0].function.arguments)\n    print(\"args\", args)\n    result = run_code(**args)\n    print(result['outputs'][0]['text'])\n```\n\n## 🤝 贡献\n\n我们欢迎贡献！请参阅我们的 [贡献指南](CONTRIBUTING.md) 以获取详细信息。\n\n## 📄 许可证\n\nAIO 沙盒根据 [Apache License 2.0](LICENSE) 发布。\n\n## 🙏 致谢\n\n由 Agent Infra 团队用心打造。特别感谢所有贡献者及开源社区。\n\n## 📞 支持\n\n- 📖 [文档](https:\u002F\u002Fsandbox.agent-infra.com)\n- 💬 [GitHub 讨论区](https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fdiscussions)\n- 🐛 [问题追踪器](https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fissues)\n\n---\n\n\u003Cp align=\"center\">\n  \u003Cstrong>准备好革新你的 AI 开发工作流了吗？\u003C\u002Fstrong>\u003Cbr\u002F>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\">⭐ 在 GitHub 上为我们加星\u003C\u002Fa> •\n  \u003Ca href=\"https:\u002F\u002Fsandbox.agent-infra.com\">📚 阅读文档\u003C\u002Fa> •\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fissues\">🐛 提交问题\u003C\u002Fa>\n\u003C\u002Fp>","# AIO Sandbox 快速上手指南\n\nAIO Sandbox 是一个**多合一**的 AI Agent 沙箱环境，在单个 Docker 容器中集成了浏览器、终端、文件系统、VSCode Server、Jupyter Notebook 以及 MCP 服务。它专为 AI Agent 和开发者设计，提供统一、安全且零配置的代码执行环境。\n\n## 1. 环境准备\n\n在开始之前，请确保您的系统满足以下要求：\n\n*   **操作系统**: Linux, macOS 或 Windows (需安装 WSL2)\n*   **核心依赖**: \n    *   [Docker](https:\u002F\u002Fdocs.docker.com\u002Fget-docker\u002F) (推荐版本 20.10+)\n    *   或者兼容的容器运行时 (如 Podman)\n*   **网络要求**: \n    *   需要开放端口 `8080` (默认)\n    *   中国大陆用户建议配置 Docker 镜像加速器或直接使用国内镜像源\n\n## 2. 安装步骤\n\n无需复杂的编译过程，通过一条 Docker 命令即可启动服务。\n\n### 🚀 快速启动\n\n**中国大陆用户推荐（使用火山引擎镜像源）：**\n\n```bash\ndocker run --security-opt seccomp=unconfined --rm -it -p 8080:8080 enterprise-public-cn-beijing.cr.volces.com\u002Fvefaas-public\u002Fall-in-one-sandbox:latest\n```\n\n**国际用户：**\n\n```bash\ndocker run --security-opt seccomp=unconfined --rm -it -p 8080:8080 ghcr.io\u002Fagent-infra\u002Fsandbox:latest\n```\n\n> **注意**: `--security-opt seccomp=unconfined` 参数用于解除部分系统调用限制，以确保浏览器自动化工具正常运行。\n\n### 🔌 可选：SDK 安装\n\n如果您需要通过代码控制沙箱，可以选择安装对应语言的 SDK：\n\n*   **Python**: `pip install agent-sandbox`\n*   **TypeScript\u002FJavaScript**: `npm install @agent-infra\u002Fsandbox`\n*   **Golang**: `go get github.com\u002Fagent-infra\u002Fsandbox-sdk-go`\n\n## 3. 基本使用\n\n启动容器后，您可以通过以下方式访问和使用沙箱环境。\n\n### 🌐 方式一：Web 界面访问\n\n直接在浏览器中访问以下地址（替换 `localhost` 为您的服务器 IP）：\n\n*   **综合文档与 API**: http:\u002F\u002Flocalhost:8080\u002Fv1\u002Fdocs\n*   **VNC 浏览器界面**: http:\u002F\u002Flocalhost:8080\u002Fvnc\u002Findex.html?autoconnect=true\n*   **VSCode 在线开发**: http:\u002F\u002Flocalhost:8080\u002Fcode-server\u002F\n*   **MCP 服务监控**: http:\u002F\u002Flocalhost:8080\u002Fmcp\n\n### 💻 方式二：代码控制 (Python 示例)\n\n安装 SDK 后，您可以轻松执行 shell 命令、操作文件或进行浏览器自动化。\n\n```python\nfrom agent_sandbox import Sandbox\n\n# 1. 初始化客户端\nclient = Sandbox(base_url=\"http:\u002F\u002Flocalhost:8080\")\nhome_dir = client.sandbox.get_context().home_dir\n\n# 2. 执行 Shell 命令\nresult = client.shell.exec_command(command=\"ls -la\")\nprint(\"文件列表:\", result.data.output)\n\n# 3. 读取文件内容\ncontent = client.file.read_file(file=f\"{home_dir}\u002F.bashrc\")\nprint(\"文件内容预览:\", content.data.content[:100])\n\n# 4. 浏览器截图自动化\nscreenshot = client.browser.screenshot()\nprint(\"截图获取成功，数据长度:\", len(screenshot.data.image))\n```\n\n### 📝 核心特性速览\n\n*   **统一文件系统**: 在浏览器下载的文件可直接在 Terminal 或 VSCode 中访问。\n*   **多接口支持**: 同时提供 VNC (视觉交互)、CDP (程序控制) 和 MCP (大模型协议) 接口。\n*   **预置工具**: 内置 Python, Node.js, Jupyter 及常用开发工具，开箱即用。\n*   **安全隔离**: 基于轻量级沙箱技术，确保代码执行的安全性。","某数据科学团队需要让 AI 助手自动完成“从新闻网站抓取最新行业报告、下载 PDF、提取关键数据并生成可视化图表”的复杂任务。\n\n### 没有 sandbox 时\n- **环境割裂严重**：AI 需要在独立的浏览器容器爬取网页，再切换到代码容器处理文件，两者文件系统不互通，导致下载的报告无法被分析脚本直接读取。\n- **配置繁琐耗时**：开发人员需手动搭建 VNC、Jupyter 和 Shell 多个服务，并编写复杂的脚本进行文件同步和端口映射，调试过程极易出错。\n- **安全风险难控**：为了让 AI 执行爬虫和代码，往往需开放宿主机权限或关闭安全限制，一旦 AI 生成恶意代码，极易威胁本地开发环境安全。\n- **协作流程断裂**：当任务卡顿时，开发者难以通过统一界面查看 AI 的实时浏览器操作状态和后台日志，排查问题如同“盲人摸象”。\n\n### 使用 sandbox 后\n- **文件无缝流转**：sandbox 将浏览器、Shell 和文件系统整合在同一容器内，AI 在内置浏览器下载的报告可立即被同一环境下的 Python 脚本读取分析，无需任何传输步骤。\n- **一键启动环境**：只需一条 Docker 命令即可启动包含 VSCode、VNC 浏览器和 Jupyter 的完整环境，预配置的 MCP 服务让 AI 能直接调用工具，零配置即刻运行。\n- **原生安全隔离**：所有操作均在 Docker 沙箱中进行，即使 AI 执行了危险指令，也被严格限制在容器内部，彻底保护了宿主机的系统安全。\n- **全景可视调试**：开发者可通过统一的 Web 界面同时查看 AI 的浏览器操作画面、终端输出和代码编辑状态，快速定位并修正任务逻辑。\n\nsandbox 通过构建“浏览器 + 代码 + 文件”一体化的安全沙箱，消除了 AI 代理在多工具协作中的环境壁垒，让复杂自动化任务像单一线程一样流畅执行。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fagent-infra_sandbox_f88b84bb.png","agent-infra","Agent Infra","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fagent-infra_bbc8dc6d.png","",null,"https:\u002F\u002Fgithub.com\u002Fagent-infra",[82,86,90,94,98,102,105],{"name":83,"color":84,"percentage":85},"Python","#3572A5",54.3,{"name":87,"color":88,"percentage":89},"TypeScript","#3178c6",38.2,{"name":91,"color":92,"percentage":93},"MDX","#fcb32c",6.9,{"name":95,"color":96,"percentage":97},"SCSS","#c6538c",0.5,{"name":99,"color":100,"percentage":101},"JavaScript","#f1e05a",0,{"name":103,"color":104,"percentage":101},"HTML","#e34c26",{"name":106,"color":107,"percentage":101},"Shell","#89e051",4084,337,"2026-04-05T19:45:44","Apache-2.0","Linux, macOS, Windows","未说明","最低 2GB (Docker Compose 配置建议)",{"notes":116,"python":117,"dependencies":118},"该工具主要基于 Docker 容器运行，宿主机只需安装 Docker 引擎。启动时必须添加 '--security-opt seccomp=unconfined' 参数以解除安全限制。中国大陆用户可使用指定的国内镜像源。支持通过 Docker Compose 或 Kubernetes 部署，建议为容器分配至少 2GB 共享内存 (shm_size)。","未说明 (通过 Docker 容器运行，宿主机的 Python\u002FNode\u002FGo 仅用于安装 SDK 客户端)",[119,120,121,122],"agent-sandbox (Python SDK)","@agent-infra\u002Fsandbox (NPM SDK)","github.com\u002Fagent-infra\u002Fsandbox-sdk-go (Go SDK)","Docker",[53,15],[125,126,67,127,128,129,130],"agent","all-in-one","browser","filesystem","mcp","shell","2026-03-27T02:49:30.150509","2026-04-06T12:04:30.923171",[134,139,144,149,154,159],{"id":135,"question_zh":136,"answer_zh":137,"source_url":138},18809,"如果沙箱代码缺少 Python 包，如何安装依赖？","有两种主要方式：\n1. **运行时安装**：可以通过 `sandbox_execute_bash` MCP 工具或 `\u002Fv1\u002Fshell\u002Fexec` API 在容器运行时动态安装。例如使用 Python 的 pip 安装 scrapy：\n```json\n{\n  \"method\": \"tools\u002Fcall\",\n  \"params\": {\n    \"name\": \"sandbox_execute_bash\",\n    \"arguments\": {\n      \"cmd\": \"pip install scrapy\",\n      \"cwd\": \"\u002Fhome\u002Fgem\",\n      \"new_session\": true,\n      \"timeout\": 30\n    }\n  }\n}\n```\n2. **自定义镜像（持久化）**：如果需要固定的依赖扩展，建议基于基础镜像构建自定义镜像：\n```dockerfile\nFROM ghcr.io\u002Fagent-infra\u002Fsandbox:latest\nRUN pip install ${your_python_package}\n```\n或者对于非软链接依赖，可以将预先装好的 site-packages 目录挂载到容器中。","https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fissues\u002F119",{"id":140,"question_zh":141,"answer_zh":142,"source_url":143},18810,"Docker 镜像是否支持 x86_64 (amd64) 架构？","是的，支持。在现代 Linux\u002FDocker 语境下，`linux\u002Famd64` 本质上就是 x86_64 架构。可以通过以下命令确认镜像支持的架构：\n```bash\ndocker buildx imagetools inspect ghcr.io\u002Fagent-infra\u002Fsandbox:latest\n```\n输出显示该镜像同时包含 `linux\u002Famd64` 和 `linux\u002Farm64` 两种平台的 Manifest。","https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fissues\u002F82",{"id":145,"question_zh":146,"answer_zh":147,"source_url":148},18811,"如何在外部调用容器内的 Chrome 浏览器（如使用 chrome-devtools-mcp）？","虽然容器内 Chrome 的 CDP 端口是 9222，但在外部调用时，可以直接通过容器暴露的 8080 端口进行连接。使用命令如下：\n```bash\nchrome-devtools-mcp@latest --browser-url=http:\u002F\u002Flocalhost:8080\n```\n无需额外映射 9222 端口，代理已通过 8080 端口处理。","https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fissues\u002F43",{"id":150,"question_zh":151,"answer_zh":152,"source_url":153},18812,"使用 Docker Compose 启动容器后，重启失败怎么办？","这是一个已知问题，已在版本 `1.0.0.143` 中修复。如果遇到重启失败（如收到 SIGTERM 后无法正常退出或重启），请升级镜像标签至 `1.0.0.143` 或更高版本：\n```yaml\nimage: ghcr.io\u002Fagent-infra\u002Fsandbox:1.0.0.143\n# 或者使用 latest 确保获取最新修复\nimage: ghcr.io\u002Fagent-infra\u002Fsandbox:latest\n```","https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fissues\u002F41",{"id":155,"question_zh":156,"answer_zh":157,"source_url":158},18813,"是否有不依赖 Docker 的安装方式（如二进制文件或源码编译）？","目前该项目主要依赖 Docker 进行部署，官方尚未提供直接的二进制可执行文件下载或包管理器（apt\u002Fyum\u002Fbrew）安装方式。维护者表示 Dockerfile 和相关构建源将逐步开源，届时可能支持更多部署形式，但目前建议优先尝试在允许列表中添加官方 Docker 镜像或使用兼容的容器运行环境。","https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fissues\u002F23",{"id":160,"question_zh":161,"answer_zh":162,"source_url":163},18814,"如何查看当前运行沙箱容器的版本号和系统环境信息？","可以通过访问容器暴露的 HTTP 接口来获取详细的版本和环境信息。默认情况下，访问 `http:\u002F\u002Flocalhost:8080\u002Fv1\u002Fsandbox` 即可返回 JSON 数据，其中包含：\n- 系统版本（如 Ubuntu 版本、Sandbox 版本号）\n- 用户信息和工作目录\n- 已占用的端口列表\n- 开发环境详情（Python、Node.js 版本及路径）\n- 可用的工具列表（如 git, curl, ffmpeg 等）\n\n示例请求：\n```bash\ncurl http:\u002F\u002Flocalhost:8080\u002Fv1\u002Fsandbox\n```","https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fissues\u002F63",[165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245],{"id":166,"version":167,"summary_zh":168,"released_at":169},109323,"v1.0.0.152","- 建立了 AIO Sandbox 评测框架及数据集（[!78](https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fpull\u002F78)），生成了评估报告（[Latest.md](https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fblob\u002Fmain\u002Fevaluation\u002Fresult\u002F20251112\u002FLatest.md)）和工具优化报告（[improvement_suggestions.md](https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fblob\u002Fmain\u002Fevaluation\u002Fresult\u002F20251112\u002Fimprovement_suggestions.md)）。`\u002Fmcp` 工具将根据评测反馈持续迭代。\n- 服务可按需关闭。通过设置环境变量 `DISABLE_JUPYTER=true` 和 `DISABLE_CODE_SERVER=true`，可以按需关闭 Jupyter Lab 和 Code Server 服务，从而减少部分沙箱资源的占用。关闭 https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fissues\u002F29。\n- 修复了在启用 `JWT_PUBLIC_KEY` 鉴权后，静态资源被鉴权拦截的问题。\n- `\u002Fv1\u002Fbrowser\u002Finfo` 现在支持使用 `X-Forwarded-Prefix` 头部前缀来获取 CDP 地址。\n- 禁用了浏览器中的 Google Translate 翻译弹窗提示。\n- 新增了 `weasyprint` 依赖（常用于生成 PDF 文件），并将 `plotly` 从 6.x 版本降级至 5.x。\n\n\u003Cimg width=\"4804\" height=\"2044\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fd7d8bc9d-5a46-4255-b9fa-6a903a13cfb7\" \u002F>\n\n\n----\n\n- 建立 AIO Sandbox 评测框架 & 数据集（[!78](https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fpull\u002F78)），生成评估报告（[Latest.md](https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fblob\u002Fmain\u002Fevaluation\u002Fresult\u002F20251112\u002FLatest.md)）、工具优化报告（[improvement_suggestions.md](https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fblob\u002Fmain\u002Fevaluation\u002Fresult\u002F20251112\u002Fimprovement_suggestions.md)），`\u002Fmcp`工具将基于评测反馈持续迭代。\n- 服务按需关闭，通过环境变量 `DISABLE_JUPYTER=true`、`DISABLE_CODE_SERVER=true`可按需关闭 Jupyter Lab 和 Code Server 服务，减少一些沙箱资源占用。\n- 修复 `JWT_PUBLIC_KEY`鉴权开启后，静态资源被鉴权拦截问题。\n- `\u002Fv1\u002Fbrowser\u002Finfo` 获取 CDP 地址支持 Header `X-Forwarded-Prefix` 前缀\n- 浏览器禁用提示 Google Translate 翻译弹窗\n- 新增 `weasyprint`依赖（生成 PDF 时常用），降级 `plotly` 6.x → 5.x","2025-11-12T09:57:58",{"id":171,"version":172,"summary_zh":173,"released_at":174},109324,"v1.0.0.151","- 修复了通过子路径部署 AIO 后，首页显示 404 错误的问题。\n- 新增了 `AIO_SKILLS_PATH` 环境变量，支持在服务启动时挂载\u002F注册 Skills，同时解析出 Skill 依赖的安装命令。\n- `\u002Fmcp` 现在支持无状态请求，无需再先调用 `initialize` 来建立会话。\n\n\u003Cimg width=\"400\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Ff558f7e8-3912-4c9f-92b2-d155c80e4f59\" \u002F>\n\n----\n\n- 修复通过子路径部署 AIO 后，首页 404 无法展示问题\n- 新增`AIO_SKILLS_PATH`环境变量，支持服务启动时挂载\u002F注册 Skills，同时解析出 Skill 依赖安装命令。\t\n- `\u002Fmcp` 支持无状态请求，无须先调用 `initialize` 来建立 Session","2025-11-07T09:33:49",{"id":176,"version":177,"summary_zh":178,"released_at":179},109325,"v1.0.0.150","- 优化了服务启动时间，1c2g 配置的耗时从 **16秒缩短至8秒**，2c4g 配置则从 **11秒缩短至4秒**。\n\n\u003Cimg width=\"367\" height=\"179\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fd1db219e-5fd4-4073-a7f8-722a0ed0d7a3\" \u002F>\n\n- 系统现支持 `\u002Fv1\u002Fskills\u002F*`（[API](http:\u002F\u002Fsandbox.agent-infra.com\u002Fapi\u002F#tag\u002Fskills)）Claude Skills 的注册、挂载、检索和删除功能。用户可以将 Skills 上传并挂载到沙箱环境中，与现有的 Sandbox API 无缝集成。\n- `\u002Fmcp` 工具数量已减少（从60个降至30个）。来自 [chrome-devtools-mcp](https:\u002F\u002Fgithub.com\u002FChromeDevTools\u002Fchrome-devtools-mcp) 的方法默认隐藏，但可通过 `\u002Fmcp?search=chrome_devtools` 访问。\n- 新增了二维码生成依赖库 [qrcode](https:\u002F\u002Fpypi.org\u002Fproject\u002Fqrcode\u002F)。\n\n----\n\n- 优化服务启动时长，1c2g 配置耗时从 16s → 8s，2c4g 从 11s → 4s\n- 新增 `\u002Fv1\u002Fskills\u002F*`（[API](http:\u002F\u002Fsandbox.agent-infra.com\u002Fapi\u002F#tag\u002Fskills)） Claude Skills 注册\u002F挂载\u002F获取\u002F删除，支持注册、挂载、查询与删除，可将 Skills 上传\u002F挂载到沙箱环境，与现有 Sandbox API 结合使用。\n- `\u002Fmcp` tools 数量压缩（从 60 → 30） ，默认隐藏 [chrome-devtools-mcp](https:\u002F\u002Fgithub.com\u002FChromeDevTools\u002Fchrome-devtools-mcp) 工具方法，可通过 `\u002Fmcp?search=chrome_devtools` 使用；\n- 新增二维码生成 [qrcode](https:\u002F\u002Fpypi.org\u002Fproject\u002Fqrcode\u002F) 依赖","2025-11-04T13:32:39",{"id":181,"version":182,"summary_zh":183,"released_at":184},109326,"v1.0.0.145","- 修复了长时间运行的 Shell 命令的 `status` 判断逻辑，防止被误判为已终止。  \n- 解决了启动时 `\u002Fhome\u002F${USER}` 目录下文件过多导致的卡顿问题。\n- 浏览器移除了 `--proxy-bypass` 参数。\n\n--- \n\n- 修复 shell 长时间执行命令时的 `status` 状态判定，避免被误判成终止。\n- 修复启动时 `\u002Fhome\u002F${USER}` 文件过多时造成的卡顿问题\n- 浏览器移除 `--proxy-bypass` 参数","2025-10-30T12:23:57",{"id":186,"version":187,"summary_zh":188,"released_at":189},109327,"v1.0.0.144","- 修复了代理日志文件无法写入的问题\n- 将用户级可执行目录 `~\u002F.local\u002Fbin` 追加到 `PATH` 环境变量中\n- 增强了安全性，移除了浏览器的 `--no-sandbox` 参数\n- 添加了与 ffmpeg、LaTeX 和图形渲染相关的系统依赖，可用于使用 manim 生成视频动画\n\n\u003CImg width = \"600\" alt = \"image\" src = \"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F6caa81e6-3c2d-49c3-81ca-806a3c9c32d9\"\u002F>\n\n\n- 新增了 AIO 使用的一些代码示例 [examples](https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Ftree\u002Fmain\u002Fexamples)\n\n--- \n\n- 修复 proxy 日志文件无法写入问题\n- 追加用户级可执行目录 `~\u002F.local\u002Fbin` 到`PATH`\n- 安全性增强，移除浏览器 `--no-sandbox` 参数\n- 增加 ffmpeg、latex、图形渲染相关的系统依赖，可使用 manim 于生成视频动画\n- 新增 AIO 使用的一些代码示例 [examples](https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Ftree\u002Fmain\u002Fexamples)","2025-10-29T05:01:14",{"id":191,"version":192,"summary_zh":193,"released_at":194},109328,"v1.0.0.143","- 添加 `pyecharts` 依赖，并包含 DejaVu Sans 字体。\n- 修复容器重启后出现的错误 `mv: No such file or directory`。\n\n---\n\n- 增加 pyecharts 依赖，新增 DejaVu Sans 字体\n- 修复容器重启后报错 `mv: No such file or directory` 问题","2025-10-23T14:41:57",{"id":196,"version":197,"summary_zh":198,"released_at":199},109329,"v1.0.0.142","- `POST \u002Fv1\u002Fshell\u002Fexec`\n  - 增加 `timeout` 参数，超时软退出（返回 `status: running`）\n  - 修复 `exec_dir`（执行目录）无法生效的问题。\n- `POST \u002Fv1\u002Fshell\u002Fwait`\n  - 修复运行中任务的 `status` 与 `success` 返回值不一致问题\n- 修复浏览器代理 `PROXY_SERVER` 环境变量不生效问题","2025-10-23T08:06:50",{"id":201,"version":202,"summary_zh":203,"released_at":204},109330,"v1.0.0.140","- 新增 `\u002Fv1\u002Fbrowser\u002Fconfig` 接口，用于在运行时设置浏览器分辨率，并支持通过环境变量 `DISPLAY_WIDTH` 和 `DISPLAY_HEIGHT` 进行配置。\n\n\u003Cimg width=\"800\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fe410f02c-b842-47c3-8711-2ad5e9680056\" \u002F>\n\n- 新增沙盒上下文信息接口 `\u002Fv1\u002Fsandbox`，返回结构化数据 `detail`。\n- 增加 Python 代码执行功能，可通过 `\u002Fv1\u002Fjupyter\u002Fsessions\u002Fcreate` 创建 `session_id`。\n- 优化容器服务的就绪时间，在低配置（2核4GB）环境下，从 11秒缩短至 5秒。\n- 新增一个 [code_execute_example](https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fblob\u002Fd29fb68bbd771911045e09107f13e9ccb11f8ce1\u002Fsdk\u002Fpython\u002Fexamples\u002Fcode-execute\u002Fmain.py) 示例：基于 Session 会话维度的 Python 代码执行，并支持通过命令行安装依赖。\n\n---\n\n- 新增 `\u002Fv1\u002Fbrowser\u002Fconfig` 在运行时设置浏览器分辨率，同时也支持环境变量`DISPLAY_WIDTH`、`DISPLAY_HEIGHT`设置\n- 新增沙盒上下文信息`\u002Fv1\u002Fsandbox` 结构化数据 `detail`\n- 增加 Python 代码执行创建 session\\_id `\u002Fv1\u002Fjupyter\u002Fsessions\u002Fcreate`\n- 优化容器服务 ready 耗时，低配置（2c4g）下从 11s → 5s\n- 增加一个 [code\\_execute\\_example](https:\u002F\u002Fgithub.com\u002Fagent-infra\u002Fsandbox\u002Fblob\u002Fd29fb68bbd771911045e09107f13e9ccb11f8ce1\u002Fsdk\u002Fpython\u002Fexamples\u002Fcode-execute\u002Fmain.py) 代码示例：Session 会话维度 Python 代码执行，同时命令行安装依赖","2025-10-21T06:36:07",{"id":206,"version":207,"summary_zh":208,"released_at":209},109331,"v1.0.0.139","- 修复部署错误 `BROWSER_EXTRA_ARGS 格式字符串无法展开。`\n\n---\n\n- 修复部署时报错 `BROWSER_EXTRA_ARGS 格式字符串无法展开`","2025-10-16T12:39:25",{"id":211,"version":212,"summary_zh":213,"released_at":214},109332,"v1.0.0.138","- 支持[火山引擎 CLI](https:\u002F\u002Fgithub.com\u002Fvolcengine\u002Fvolcengine-cli) `ve`\n- 修复了 `ulimit` 无法修改的问题\n- 增加了内置的 PyPI 依赖：`numpy, fastapi, scipy, xlsxwriter, seaborn, httpx, docx2txt, python-pptx, uvicorn, lxml`\n- 修复了 `\u002Findex.html` 仪表盘页面查询参数无法透传的问题\n- 修复了 `str_replace_editor` `view` 中 Markdown 文件类型错误的问题\n- 修复了 tmux 临时目录的权限问题\n- 当使用 `\u002Fv1\u002Ffile\u002Fstr_replace_editor` 并指定 `view` 参数时，会在 `old_content` 中返回原始文件内容\n- 修复了 MCP Tool 的 `get_browser_info` 问题\n\n--- \n\n- 支持[火山引擎 CLI](https:\u002F\u002Fgithub.com\u002Fvolcengine\u002Fvolcengine-cli) `ve`\n- 修复 `ulimit` 不可修改问题\n- 增加内置 pypi 依赖：`numpy, fastapi, scipy, xlsxwriter, seaborn, httpx, docx2txt, python-pptx, uvicorn, lxml`\t\n- 修复 `\u002Findex.html` Dashboard 页 query 参数不透传问题\n- 修复 `str_replace_editor` `view` markdown 文件类型错误问题\n- 修复 tmux 临时目录的权限问题\t\n- 支持 `\u002Fv1\u002Ffile\u002Fstr_replace_editor` 使用 `view`时在 `old_content`返回原始文件内容\n- 修复 MCP Tool `get_browser_info` 问题","2025-10-16T08:37:48",{"id":216,"version":217,"summary_zh":218,"released_at":219},109333,"v1.0.0.132","- Add `\u002Fv1\u002Futil\u002Fconvert_to_markdown` to convert a `uri` resource address into Markdown.\r\n- Refactor `\u002Fmcp` MCP Tools, reducing Sandbox-related tools from `27` to `10`.\r\n- Add an `openssh-client` dependency to support accessing the SSH protocol.\r\n- Optimize service startup time, cutting it by about `~2` seconds.\r\n\r\n---\r\n\r\n- 增加 `\u002Fv1\u002Futil\u002Fconvert_to_markdown` 将 `uri` 资源地址转成 Markdown\r\n- 重构 `\u002Fmcp` MCP Tools，Sandbox 相关工具从 27 个压缩到 10 个\r\n- 增加 `openssh-client` 依赖，支持访问 ssh 协议\r\n- 优化服务启动时间，减少 `~2s`","2025-10-14T01:22:39",{"id":221,"version":222,"summary_zh":223,"released_at":224},109334,"v1.0.0.128","- Fixed the issue where the `\u002Fv1\u002Ffile\u002Fstr_replace_editor` interface could not undo edits (`undo_edit`).\r\n- [BreakChange] Simplified SDK method names and optimized the MCP tool name.\r\n\t- browser\r\n\t\t- `browser.get_browser_info` → `browser.get_info`\r\n\t\t- `browser.take_screenshot` → `browser.screenshot`\r\n\t- shell\r\n\t\t- `shell.view_shell`→ `shell.view`\r\n\t- code\r\n\t\t- `code.info` → `code.get_info`\r\n\t\t- `nodejs.execute_nodejs_code` → `nodejs.execute_code`\r\n\t\t- `nodejs.info` → `nodejs.get_info`\r\n\t\t- `jupyter.execute_jupyter_code` → `jupyter.execute_code`\r\n\t\t- `jupyter.info` → `jupyter.get_info`\r\n\t- sandbox\r\n\t\t- `sandbox.get_sandbox_context` → `sandbox.get_context`\r\n\t\t- `sandbox.python_packages` → `sandbox.get_python_packages`\r\n\t\t- `sandbox.nodejs_packages` → `sandbox.get_nodejs_packages`\r\n\r\n----\r\n\r\n- 修复 `\u002Fv1\u002Ffile\u002Fstr_replace_editor` 接口无法撤销编辑 `undo_edit`的问题\r\n- \\[BreakChange\\] SDK 方法名简化变更，同时优化 MCP 工具名称\r\n\t- browser\r\n\t\t- `browser.get_browser_info` → `browser.get_info`\r\n\t\t- `browser.take_screenshot` → `browser.screenshot`\r\n\t- shell\r\n\t\t- `shell.view_shell`→ `shell.view`\r\n\t- code\r\n\t\t- `code.info` → `code.get_info`\r\n\t\t- `nodejs.execute_nodejs_code` → `nodejs.execute_code`\r\n\t\t- `nodejs.info` → `nodejs.get_info`\r\n\t\t- `jupyter.execute_jupyter_code` → `jupyter.execute_code`\r\n\t\t- `jupyter.info` → `jupyter.get_info`\r\n\t- sandbox\r\n\t\t- `sandbox.get_sandbox_context` → `sandbox.get_context`\r\n\t\t- `sandbox.python_packages` → `sandbox.get_python_packages`\r\n\t\t- `sandbox.nodejs_packages` → `sandbox.get_nodejs_packages`","2025-10-10T06:34:29",{"id":226,"version":227,"summary_zh":228,"released_at":229},109335,"v1.0.0.127","- The internal service port is configured via an environment variable, allowing the startup port to be changed at runtime to avoid port conflicts. See the detailed variable names in `docker-compose.yaml`.\r\n- Added `\u002Fv1\u002Fcode\u002Fexecute` integration for executing Python and Node.js code.\r\n- Optimized the AIO MCP tool list by removing excessive unnecessary tools.\r\n- Upgraded chrome-devtools-mcp from `0.4` to `0.6`.\r\n\r\n---\r\n\r\n- 内部服务端口使用环境变量，可运行时修改启动端口，避免端口冲突。详细变量名见 `docker-compose.yaml`\r\n- 增加 `\u002Fv1\u002Fcode\u002Fexecute` 集成 Python、Node.js 代码执行\r\n- 优化 AIO MCP 工具列表，移除过多不必要的工具。\r\n- 升级 chrome-devtools-mcp 从 `0.4` 到 `0.6`","2025-10-09T11:11:20",{"id":231,"version":232,"summary_zh":233,"released_at":234},109336,"v1.0.0.126","- [BreakChange] The data structure for validation errors in the \u002Fv1\u002F interface has changed from `{ \"data\": [{ loc: ... }] }` to `{ \"errors\": [{ loc: ... }], \"data\": null }`. @ycjcl868 \r\n- Added support for filtering with `\u002Fmcp?search=MCP Server`, e.g., `?search=chrome_devtools` will list only the Chrome DevTools MCP Server. @ycjcl868 \r\n- Fixed an error that occurred when the `\u002Fopt\u002Fgem\u002Fbashrc` file existed by @HashWarlock\r\n\r\n---\r\n\r\n- \\[BreakChange\\] `\u002Fv1\u002F` 接口在校验错误的数据结构由 `{ \"data\": [{ loc: ... }] }` 变更为 `{ \"errors\": [{ loc: ... }], \"data\": null }`\r\n- 支持 `\u002Fmcp?search=` MCP Server 过滤筛选功能，例如 `?search=chrome_devtools` 则只列举 Chrome DevTools MCP Server。\r\n- 修复 `\u002Fopt\u002Fgem\u002Fbashrc` 文件存在时的报错。","2025-09-30T11:55:42",{"id":236,"version":237,"summary_zh":238,"released_at":239},109337,"v1.0.0.125","- Added [chrome-devtools-mcp](https:\u002F\u002Fgithub.com\u002FChromeDevTools\u002Fchrome-devtools-mcp); any `\u002Fmcp` endpoint prefixed with `chrome_devtools_` belongs to this MCP tool.\r\n- The Shell API `\u002Fv1\u002Fshell\u002Fsessions\u002Fcreate` now supports custom `id` generation rules for `session_id`.\r\n- Optimized sandbox startup speed, reducing the delay by roughly 1 second.\r\n\r\n---\r\n\r\n- 新增 [chrome-devtools-mcp](https:\u002F\u002Fgithub.com\u002FChromeDevTools\u002Fchrome-devtools-mcp)，`\u002Fmcp`以 `chrome_devtools_` 前缀的都是该 MCP 工具\r\n- Shell API `\u002Fv1\u002Fshell\u002Fsessions\u002Fcreate`支持 `id` 自定义 `session_id` 生成规则\r\n- 优化沙盒启动速度，大概减少 1s 左右","2025-09-29T06:10:46",{"id":241,"version":242,"summary_zh":243,"released_at":244},109338,"v1.0.0.123","- `\u002Fv1\u002Fbrowser\u002Fscreenshot` returns the Header. (In the current implementation, “screen width\u002Fheight” and “image width\u002Fheight” correspond one-to-one.)\r\n  - Screen width\u002Fheight (physical pixels): `x-screen-width`, `x-screen-height`\r\n  - Image width\u002Fheight (logical pixels): `x-image-width`, `x-image-height`\r\n- Add to `\u002Fv1\u002Fbrowser\u002Factions`:\r\n| Action | Description | Parameters |\r\n|--------|-------------|------------|\r\n| `MOVE_REL` | Move the current mouse by a relative offset | `x_offset`, `y_offset` |\r\n| `DRAG_REL` | Drag the current mouse by a relative offset | `x_offset`, `y_offset` |\r\n| `WAIT` | Wait for a specified duration | `duration` (seconds, s) |\r\n\r\n- Fixed the “Permission Denied” issue when starting the aio image as a non‑root user.\r\n\r\n---\r\n\r\n- `\u002Fv1\u002Fbrowser\u002Fscreenshot` 返回 Header。（在目前实现中，『屏幕宽高』和『图片宽高』是一一对应的。）\r\n\t- 屏幕宽高（物理像素）：`x-screen-width`、`x-screen-height`\r\n\t\t\r\n\t- 图片宽高（逻辑像素）：`x-image-width`、`x-image-height`\r\n\t\t\r\n- `\u002Fv1\u002Fbrowser\u002Factions` 增加：\r\n\t\r\n\t| `MOVE_REL` | 移动当前鼠标的相对位置 | `x_offset`，`y_offset` |\r\n\t| --- | --- | --- |\r\n\t| `DRAG_REL` | 当前鼠标拖拽的相对位置 | `x_offset`，`y_offset` |\r\n\t| `WAIT` | 等待 | `duration` 时间（秒 s） |\r\n\t\r\n- 修复非 root 用户启动 aio 镜像时的 `Permission Denied` 问题","2025-09-29T06:07:02",{"id":246,"version":247,"summary_zh":248,"released_at":249},109339,"v1.0.0.121","- Add dependencies related to `rsync` and `lsyncd` file synchronization.\r\n- Add GET `\u002Fv1\u002Fshell\u002Fterminal-url` to retrieve the Terminal UI link.\r\n- Modify `PROXY_SERVER` rules:\r\n  - `PROXY_SERVER=${proxy_address}`: All domain names accessed by the browser (except those in NO_PROXY) will go through the proxy address.\r\n  - When `PROXY_SERVER=true` and a directory is mounted at \u002Fopt\u002Fgem\u002Ftinyproxy, only load the rules from the mounted configuration.\r\n\r\n\r\n---\r\n\r\n- 新增 `rsync`、`lsyncd` 文件同步相关的依赖\r\n- 新增 `GET \u002Fv1\u002Fshell\u002Fterminal-url` 获取 Terminal UI 链接\r\n- 修改 `PROXY_SERVER` 规则：\r\n\t- `PROXY_SERVER=${代理地址}`：浏览器访问的所有域名（除 `NO_PROXY`域名外）都走代理地址\r\n\t- `PROXY_SERVER=true` 且挂目录盘 `\u002Fopt\u002Fgem\u002Ftinyproxy`，只加载挂载的规则代理","2025-09-24T22:15:19"]