[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-ServiceNow--BrowserGym":3,"similar-ServiceNow--BrowserGym":196},{"id":4,"github_repo":5,"name":6,"description_en":7,"description_zh":8,"ai_summary_zh":8,"readme_en":9,"readme_zh":10,"quickstart_zh":11,"use_case_zh":12,"hero_image_url":13,"owner_login":14,"owner_name":14,"owner_avatar_url":15,"owner_bio":16,"owner_company":17,"owner_location":17,"owner_email":17,"owner_twitter":17,"owner_website":18,"owner_url":19,"languages":20,"stars":37,"forks":38,"last_commit_at":39,"license":40,"difficulty_score":41,"env_os":42,"env_gpu":43,"env_ram":42,"env_deps":44,"category_tags":52,"github_topics":57,"view_count":61,"oss_zip_url":17,"oss_zip_packed_at":17,"status":62,"created_at":63,"updated_at":64,"faqs":65,"releases":95},9040,"ServiceNow\u002FBrowserGym","BrowserGym","🌎💪 BrowserGym, a Gym environment for web task automation","BrowserGym 是一个专为网页任务自动化研究设计的开源框架，旨在为开发者提供一个开放、易用且可扩展的实验环境。它解决了当前 AI 智能体在复杂网页操作中缺乏统一评估标准和测试平台的痛点，让研究人员能够轻松构建、测试并对比不同智能体在真实浏览器环境中的表现。\n\n该工具主要面向 AI 研究人员、算法工程师以及对网页自动化感兴趣的开发者。通过兼容 Gym 接口，BrowserGym 将 MiniWoB、WebArena、WorkArena 等主流基准测试整合在一起，支持从简单的点击操作到多步骤复杂任务的各种场景。其独特的技术亮点在于高度的模块化设计：用户只需继承一个简单的抽象类即可快速创建新的网页基准测试，同时它还提供了丰富的预置实验工具和可视化演示，大幅降低了复现前沿研究的门槛。\n\n需要注意的是，BrowserGym 定位为科研加速工具而非面向普通消费者的成品软件，因此更适合用于探索下一代网页交互智能体的技术边界。配合其生态项目 AgentLab，用户可以更流畅地完成从智能体实现到全方位评估的全流程工作。","\u003Cdiv align=\"center\">\n\n![BrowserGym banner](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FServiceNow_BrowserGym_readme_41b7fd69c700.png)\n\n🛠️ [Setup](#%EF%B8%8F-setup) -\n🏋 [Usage](#-usage) -\n💻 [Demo](#-demo) -\n🌐 [Ecosystem](#-ecosystem) -\n🚀 [AgentLab](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FAgentLab) -\n🌟 [Contributors](#-contributors) -\n📄 [Paper](https:\u002F\u002Farxiv.org\u002Fabs\u002F2412.05467) -\n📝 [Citation](#-citing-this-work)\n\n[![pypi](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fbrowsergym.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fbrowsergym\u002F)\n[![PyPI - License](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fl\u002Fbrowsergym?style=flat-square)]([https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT](http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0))\n[![PyPI - Downloads](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fbrowsergym-core?style=flat-square)](https:\u002F\u002Fpypistats.org\u002Fpackages\u002Fbrowsergym-core)\n[![GitHub star chart](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FServiceNow\u002FBrowserGym?style=flat-square)](https:\u002F\u002Fstar-history.com\u002F#ServiceNow\u002FBrowserGym)\n[![Code Format](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Factions\u002Fworkflows\u002Fcode_format.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Factions\u002Fworkflows\u002Fcode_format.yml)\n[![Tests](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Factions\u002Fworkflows\u002Funit_tests.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Factions\u002Fworkflows\u002Funit_tests.yml)\n\n```python\npip install browsergym\n```\n\n\u003C\u002Fdiv>\n\n> [!WARNING]\n> BrowserGym is meant to provide an open, easy-to-use and extensible framework to accelerate the field of web agent research.\n> It is not meant to be a consumer product. Use with caution!\n\n> [!TIP]\n> 🚀 Check out [AgentLab](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FAgentLab)✨ !\n> A seamless framework to implement, test, and evaluate your web agents on all BrowserGym benchmarks.\n\nhttps:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fassets\u002F26232819\u002Fe0bfc788-cc8e-44f1-b8c3-0d1114108b85\n\n_Example of a GPT4-V agent executing openended tasks (top row, chat interactive), as well as WebArena and WorkArena tasks (bottom row)._\n\nBrowserGym includes the following benchmarks by default:\n - [MiniWoB](https:\u002F\u002Fminiwob.farama.org\u002F)\n - [WebArena](https:\u002F\u002Fwebarena.dev\u002F)\n - [WebArenaVerified](https:\u002F\u002Fgithub.com\u002FServiceNow\u002Fwebarena-verified)\n - [VisualWebArena](https:\u002F\u002Fjykoh.com\u002Fvwa)\n - [WorkArena](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FWorkArena)\n - [AssistantBench](https:\u002F\u002Fgithub.com\u002Foriyor\u002Fassistantbench)\n - [WebLINX](https:\u002F\u002Fgithub.com\u002FMcGill-NLP\u002Fweblinx) (static benchmark)\n - [OpenApps](https:\u002F\u002Ffacebookresearch.github.io\u002FOpenApps\u002F)\n - [TimeWarp](https:\u002F\u002Ftimewarp-web.github.io)\n\nDesigning new web benchmarks with BrowserGym is easy, and simply requires to inherit the [`AbstractBrowserTask`](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fblob\u002Fmain\u002Fbrowsergym\u002Fcore\u002Fsrc\u002Fbrowsergym\u002Fcore\u002Ftask.py#L7C7-L7C26) class.\n\n## 🛠️ Setup\n\nTo use browsergym, install one of the following packages:\n```sh\npip install browsergym  # (recommended) everything below\npip install browsergym-experiments  # experiment utilities (agent, loop, benchmarks) + everything below\npip install browsergym-core  # core functionalities only (no benchmark, just the openended task)\npip install browsergym-miniwob  # core + miniwob\npip install browsergym-webarena  # core + webarena\npip install browsergym-webarena-verified  # core + webarena_verified\npip install browsergym-visualwebarena  # core + visualwebarena\npip install browsergym-workarena  # core + workarena\npip install browsergym-assistantbench  # core + assistantbench\npip install weblinx-browsergym  # core + weblinx\npip install browsergym-timewarp  # core + timewarp \n```\n\nThen setup playwright by running\n```sh\nplaywright install chromium\n```\n\nFinally, each benchmark comes with its own specific setup that requires to follow additional steps.\n - for MiniWoB++, see [miniwob\u002FREADME.md](browsergym\u002Fminiwob\u002FREADME.md)\n - for WebArena, see [webarena\u002FREADME.md](browsergym\u002Fwebarena\u002FREADME.md)\n - for WebArenaVerified, see [webarena_verified\u002FREADME.md](browsergym\u002Fwebarena_verified\u002FREADME.md)\n - for VisualWebArena, see [visualwebarena\u002FREADME.md](browsergym\u002Fvisualwebarena\u002FREADME.md)\n - for WorkArena, see [WorkArena](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FWorkArena)\n - for AssistantBench, see [assistantbench\u002FREADME.md](browsergym\u002Fassistantbench\u002FREADME.md)\n - for OpenApps, see [OpenApps docs](https:\u002F\u002Ffacebookresearch.github.io\u002FOpenApps\u002F)\n  - for TimeWarp, see [timewarp\u002FREADME.md](https:\u002F\u002Fgithub.com\u002Fsparklabutah\u002Ftimewarp)\n\n### 🏗️ Development setup\n\nTo install browsergym locally for development, use the following commands:\n```sh\ngit clone git@github.com:ServiceNow\u002FBrowserGym.git\ncd BrowserGym\nmake install\n```\n\nContributions are welcome! 😊\n\n## 🏋 Usage\n\nBoilerplate code to run an agent on an interactive, open-ended task:\n```python\nimport gymnasium as gym\nimport browsergym.core  # register the openended task as a gym environment\n\n# start an openended environment\nenv = gym.make(\n    \"browsergym\u002Fopenended\",\n    task_kwargs={\"start_url\": \"https:\u002F\u002Fwww.google.com\u002F\"},  # starting URL\n    wait_for_user_message=True,  # wait for a user message after each agent message sent to the chat\n)\n# run the environment \u003C> agent loop until termination\nobs, info = env.reset()\nwhile True:\n    action = ...  # implement your agent here\n    obs, reward, terminated, truncated, info = env.step(action)\n    if terminated or truncated:\n        break\n# release the environment\nenv.close()\n```\n\nMiniWoB\n```python\nimport gymnasium as gym\nimport browsergym.miniwob  # register miniwob tasks as gym environments\n\n# start a miniwob task\nenv = gym.make(\"browsergym\u002Fminiwob.choose-list\")\n...\n\n# list all the available miniwob tasks\nenv_ids = [id for id in gym.envs.registry.keys() if id.startswith(\"browsergym\u002Fminiwob\")]\nprint(\"\\n\".join(env_ids))\n```\n\nWorkArena\n```python\nimport gymnasium as gym\nimport browsergym.workarena  # register workarena tasks as gym environments\n\n# start a workarena task\nenv = gym.make(\"browsergym\u002Fworkarena.servicenow.order-ipad-pro\")\n...\n\n# list all the available workarena tasks\nenv_ids = [id for id in gym.envs.registry.keys() if id.startswith(\"browsergym\u002Fworkarena\")]\nprint(\"\\n\".join(env_ids))\n```\n\nWebArena\n```python\nimport gymnasium as gym\nimport browsergym.webarena  # register webarena tasks as gym environments\n\n# start a webarena task\nenv = gym.make(\"browsergym\u002Fwebarena.310\")\n...\n\n# list all the available webarena tasks\nenv_ids = [id for id in gym.envs.registry.keys() if id.startswith(\"browsergym\u002Fwebarena\")]\nprint(\"\\n\".join(env_ids))\n```\n\nVisualWebArena\n```python\nimport gymnasium as gym\nimport browsergym.webarena  # register webarena tasks as gym environments\n\n# start a visualwebarena task\nenv = gym.make(\"browsergym\u002Fvisualwebarena.721\")\n...\n\n# list all the available visualwebarena tasks\nenv_ids = [id for id in gym.envs.registry.keys() if id.startswith(\"browsergym\u002Fvisualwebarena\")]\nprint(\"\\n\".join(env_ids))\n```\n\nAssistantBench\n```python\nimport gymnasium as gym\nimport browsergym.workarena  # register assistantbench tasks as gym environments\n\n# start an assistantbench task\nenv = gym.make(\"browsergym\u002Fassistantbench.validation.3\")\n...\n\n# list all the available assistantbench tasks\nenv_ids = [id for id in gym.envs.registry.keys() if id.startswith(\"browsergym\u002Fworkarena\")]\nprint(\"\\n\".join(env_ids))\n```\n\nOpenApps\n```python\nfrom open_apps.apps.start_page.main import app  # need to import apps to serve\nfrom open_apps.launcher import OpenAppsLauncher\n\nconfig = ... # configure a namespace with task, agent, envrionment, and server configs\n\nlauncher = OpenAppsLauncher(config)\nlauncher.launch()\n```\n\nTimeWarp\n```python\nimport gymnasium as gym\nimport browsergym.timewarp  # register timewarp tasks as gym environments\n\n# start a timewarp task\nenv = gym.make(\"browsergym\u002Ftimewarp.1\")\n...\n\n# list all the available timewarp tasks\nenv_ids = [id for id in gym.envs.registry.keys() if id.startswith(\"browsergym\u002Ftimewarp\")]\nprint(\"\\n\".join(env_ids))\n```\n\n## 💻 Demo\n\nIf you want to experiment with a demo agent in BrowserGym, follow these steps\n```sh\n# conda setup\nconda env create -f demo_agent\u002Fenvironment.yml\nconda activate demo_agent\n\n# or pip setup\npip install -r demo_agent\u002Frequirements.txt\n\n# then download the browser for playwright\nplaywright install chromium\n```\n\nOur demo agent uses `openai` as a backend, be sure to set your `OPENAI_API_KEY`.\n\nLaunch the demo agent as follows\n```sh\n# openended (interactive chat mode)\npython demo_agent\u002Frun_demo.py --task_name openended --start_url https:\u002F\u002Fwww.google.com\n\n# miniwob\npython demo_agent\u002Frun_demo.py --task_name miniwob.click-test\n\n# workarena\npython demo_agent\u002Frun_demo.py --task_name workarena.servicenow.order-standard-laptop\n\n# webarena\npython demo_agent\u002Frun_demo.py --task_name webarena.4\n\n# visualwebarena\npython demo_agent\u002Frun_demo.py --task_name visualwebarena.398\n```\n\nYou can customize your experience by changing the `model_name` to your preferred LLM (it uses `gpt-4o-mini` by default), adding screenshots for your VLMs with `use_screenshot`, and much more!\n\n```python\npython demo_agent\u002Frun_demo.py --help\n```\n\n## 🌐 Ecosystem\n\n- [AgentLab](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FAgentLab): Seamlessly run agents on benchmarks, collect and analyse traces.\n- [WorkArena(++)](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FWorkArena): A benchmark for web agents on the ServiceNow platform.\n- [WebArena](https:\u002F\u002Fgithub.com\u002Fweb-arena-x\u002Fwebarena): A benchmark of realistic web tasks on self-hosted domains.\n- [VisualWebArena](https:\u002F\u002Fgithub.com\u002Fweb-arena-x\u002Fvisualwebarena): A benchmark of realistic visual web tasks on self-hosted domains.\n- [MiniWoB(++)](https:\u002F\u002Fminiwob.farama.org\u002F): A collection of over 100 web tasks on synthetic web pages.\n- [WebLINX](https:\u002F\u002Fgithub.com\u002FMcGill-NLP\u002Fweblinx): A dataset of real-world web interaction traces.\n- [AssistantBench](https:\u002F\u002Fgithub.com\u002Foriyor\u002Fassistantbench): A benchmark of realistic and time-consuming tasks on the open web.\n- [DoomArena](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FDoomArena): A framework for AI agent security testing which supports injecting attacks into web pages from Browsergym environments.\n\n## 🌟 Contributors\n\n[![BrowserGym contributors](https:\u002F\u002Fcontrib.rocks\u002Fimage?repo=ServiceNow\u002FBrowserGym&max=2000)](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fgraphs\u002Fcontributors)\n\n## 📝 Citing This Work\n\nPlease use the two following bibtex entries if you wish to cite BrowserGym:\n\n```tex\n@article{\n    chezelles2025browsergym,\n    title={The BrowserGym Ecosystem for Web Agent Research},\n    author={Thibault Le Sellier de Chezelles and Maxime Gasse and Alexandre Lacoste and Massimo Caccia and Alexandre Drouin and L{\\'e}o Boisvert and Megh Thakkar and Tom Marty and Rim Assouel and Sahar Omidi Shayegan and Lawrence Keunho Jang and Xing Han L{\\`u} and Ori Yoran and Dehan Kong and Frank F. Xu and Siva Reddy and Graham Neubig and Quentin Cappart and Russ Salakhutdinov and Nicolas Chapados},\n    journal={Transactions on Machine Learning Research},\n    issn={2835-8856},\n    year={2025},\n    url={https:\u002F\u002Fopenreview.net\u002Fforum?id=5298fKGmv3},\n    note={Expert Certification}\n}\n\n@inproceedings{workarena2024,\n    title = {{W}ork{A}rena: How Capable are Web Agents at Solving Common Knowledge Work Tasks?},\n    author = {Drouin, Alexandre and Gasse, Maxime and Caccia, Massimo and Laradji, Issam H. and Del Verme, Manuel and Marty, Tom and Vazquez, David and Chapados, Nicolas and Lacoste, Alexandre},\n    booktitle = {Proceedings of the 41st International Conference on Machine Learning},\n    pages = {11642--11662},\n    year = {2024},\n    editor = {Salakhutdinov, Ruslan and Kolter, Zico and Heller, Katherine and Weller, Adrian and Oliver, Nuria and Scarlett, Jonathan and Berkenkamp, Felix},\n    volume = {235},\n    series = {Proceedings of Machine Learning Research},\n    month = {21--27 Jul},\n    publisher = {PMLR},\n    url = {https:\u002F\u002Fproceedings.mlr.press\u002Fv235\u002Fdrouin24a.html},\n}\n```\n\nHere is an example of how they can be used:\n\n```tex\nWe use the BrowserGym framework for our experiments \\cite{workarena2024,chezelles2025browsergym}.\n```\n## Traces\nTraces from “The BrowserGym Ecosystem for Web Agent Research” paper are available in [Huggingface](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fagentlabtraces\u002Fagentlabtraces\u002Ftree\u002Fmain).\n","\u003Cdiv align=\"center\">\n\n![BrowserGym -banner](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FServiceNow_BrowserGym_readme_41b7fd69c700.png)\n\n🛠️ [设置](#%EF%B8%8F-setup) -\n🏋 [使用方法](#-usage) -\n💻 [演示](#-demo) -\n🌐 [生态系统](#-ecosystem) -\n🚀 [AgentLab](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FAgentLab) -\n🌟 [贡献者](#-contributors) -\n📄 [论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2412.05467) -\n📝 [引用](#-citing-this-work)\n\n[![pypi](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fbrowsergym.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fbrowsergym\u002F)\n[![PyPI - 许可证](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fl\u002Fbrowsergym?style=flat-square)]([https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT](http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0))\n[![PyPI - 下载量](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fbrowsergym-core?style=flat-square)](https:\u002F\u002Fpypistats.org\u002Fpackages\u002Fbrowsergym-core)\n[![GitHub 星标图](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FServiceNow\u002FBrowserGym?style=flat-square)](https:\u002F\u002Fstar-history.com\u002F#ServiceNow\u002FBrowserGym)\n[![代码格式化](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Factions\u002Fworkflows\u002Fcode_format.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Factions\u002Fworkflows\u002Fcode_format.yml)\n[![测试](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Factions\u002Fworkflows\u002Funit_tests.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Factions\u002Fworkflows\u002Funit_tests.yml)\n\n```python\npip install browsergym\n```\n\n\u003C\u002Fdiv>\n\n> [!警告]\n> BrowserGym 的目的是提供一个开放、易用且可扩展的框架，以加速网络智能体研究领域的发展。\n> 它并非面向消费者的成品，请谨慎使用！\n\n> [!提示]\n> 🚀 快来查看 [AgentLab](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FAgentLab)✨ 吧！\n> 这是一个无缝衔接的框架，可在 BrowserGym 的所有基准上实现、测试和评估您的网络智能体。\n\nhttps:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fassets\u002F26232819\u002Fe0bfc788-cc8e-44f1-b8c3-0d1114108b85\n\n_示例：GPT4-V 智能体执行开放式任务（顶行，聊天交互），以及 WebArena 和 WorkArena 任务（底行）。_\n\nBrowserGym 默认包含以下基准：\n - [MiniWoB](https:\u002F\u002Fminiwob.farama.org\u002F)\n - [WebArena](https:\u002F\u002Fwebarena.dev\u002F)\n - [WebArenaVerified](https:\u002F\u002Fgithub.com\u002FServiceNow\u002Fwebarena-verified)\n - [VisualWebArena](https:\u002F\u002Fjykoh.com\u002Fvwa)\n - [WorkArena](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FWorkArena)\n - [AssistantBench](https:\u002F\u002Fgithub.com\u002Foriyor\u002Fassistantbench)\n - [WebLINX](https:\u002F\u002Fgithub.com\u002FMcGill-NLP\u002Fweblinx)（静态基准）\n - [OpenApps](https:\u002F\u002Ffacebookresearch.github.io\u002FOpenApps\u002F)\n - [TimeWarp](https:\u002F\u002Ftimewarp-web.github.io)\n\n使用 BrowserGym 设计新的网络基准非常简单，只需继承 [`AbstractBrowserTask`](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fblob\u002Fmain\u002Fbrowsergym\u002Fcore\u002Fsrc\u002Fbrowsergym\u002Fcore\u002Ftask.py#L7C7-L7C26) 类即可。\n\n## 🛠️ 设置\n\n要使用 browsergym，安装以下任一包：\n```sh\npip install browsergym  # （推荐）包含以下所有内容\npip install browsergym-experiments  # 实验工具（智能体、循环、基准）+ 包含以下所有内容\npip install browsergym-core  # 仅核心功能（无基准，只有开放式任务）\npip install browsergym-miniwob  # 核心 + miniwob\npip install browsergym-webarena  # 核心 + webarena\npip install browsergym-webarena-verified  # 核心 + webarena_verified\npip install browsergym-visualwebarena  # 核心 + visualwebarena\npip install browsergym-workarena  # 核心 + workarena\npip install browsergym-assistantbench  # 核心 + assistantbench\npip install weblinx-browsergym  # 核心 + weblinx\npip install browsergym-timewarp  # 核心 + timewarp \n```\n\n然后通过运行以下命令设置 Playwright：\n```sh\nplaywright install chromium\n```\n\n最后，每个基准都有其特定的设置步骤，需要额外操作才能完成。\n - 对于 MiniWoB++，请参阅 [miniwob\u002FREADME.md](browsergym\u002Fminiwob\u002FREADME.md)\n - 对于 WebArena，请参阅 [webarena\u002FREADME.md](browsergym\u002Fwebarena\u002FREADME.md)\n - 对于 WebArenaVerified，请参阅 [webarena_verified\u002FREADME.md](browsergym\u002Fwebarena_verified\u002FREADME.md)\n - 对于 VisualWebArena，请参阅 [visualwebarena\u002FREADME.md](browsergym\u002Fvisualwebarena\u002FREADME.md)\n - 对于 WorkArena，可参考 [WorkArena](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FWorkArena)\n - 对于 AssistantBench，可参考 [assistantbench\u002FREADME.md](browsergym\u002Fassistantbench\u002FREADME.md)\n - 对于 OpenApps，可参考 [OpenApps 文档](https:\u002F\u002Ffacebookresearch.github.io\u002FOpenApps\u002F)\n - 对于 TimeWarp，可参考 [timewarp\u002FREADME.md](https:\u002F\u002Fgithub.com\u002Fsparklabutah\u002Ftimewarp)\n\n### 🏗️ 开发环境设置\n\n若要在本地开发环境中安装 browsergym，可使用以下命令：\n```sh\ngit clone git@github.com:ServiceNow\u002FBrowserGym.git\ncd BrowserGym\nmake install\n```\n\n欢迎各位贡献！😊\n\n## 🏋 使用方法\n\n在交互式开放式任务上运行智能体的样板代码：\n```python\nimport gymnasium as gym\nimport browsergym.core  # 将开放式任务注册为 Gym 环境\n\n# 启动开放式环境\nenv = gym.make(\n    \"browsergym\u002Fopenended\",\n    task_kwargs={\"start_url\": \"https:\u002F\u002Fwww.google.com\u002F\"},  # 起始网址\n    wait_for_user_message=True,  # 每次智能体向聊天发送消息后等待用户回复\n)\n# 运行环境与智能体的交互循环，直到结束\nobs, info = env.reset()\nwhile True:\n    action = ...  # 在此处实现您的智能体\n    obs, reward, terminated, truncated, info = env.step(action)\n    if terminated 或 truncated:\n        break\n# 关闭环境\nenv.close()\n```\n\nMiniWoB\n```python\nimport gymnasium as gym\nimport browsergym.miniwob  # 将 MiniWoB 任务注册为 Gym 环境\n\n# 启动 MiniWoB 任务\nenv = gym.make(\"browsergym\u002Fminiwob.choose-list\")\n...\n\n# 列出所有可用的 MiniWoB 任务\nenv_ids = [id for id in gym.envs.registry.keys() if id.startswith(\"browsergym\u002Fminiwob\")]\nprint(\"\\n\".join(env_ids))\n```\n\nWorkArena\n```python\nimport gymnasium as gym\nimport browsergym.workarena  # 将 WorkArena 任务注册为 Gym 环境\n\n# 启动 WorkArena 任务\nenv = gym.make(\"browsergym\u002Fworkarena.servicenow.order-ipad-pro\")\n...\n\n# 列出所有可用的 WorkArena 任务\nenv_ids = [id for id in gym.envs.registry.keys() if id.startswith(\"browsergym\u002Fworkarena\")]\nprint(\"\\n\".join(env_ids))\n```\n\nWebArena\n```python\nimport gymnasium as gym\nimport browsergym.webarena  # 将 WebArena 任务注册为 Gym 环境\n\n# 启动 WebArena 任务\nenv = gym.make(\"browsergym\u002Fwebarena.310\")\n...\n\n# 列出所有可用的 WebArena 任务\nenv_ids = [id for id in gym.envs.registry.keys() if id.startswith(\"browsergym\u002Fwebarena\")]\nprint(\"\\n\".join(env_ids))\n```\n\nVisualWebArena\n```python\nimport gymnasium as gym\nimport browsergym.webarena  # 将 WebArena 任务注册为 Gym 环境\n\n# 启动 VisualWebArena 任务\nenv = gym.make(\"browsergym\u002Fvisualwebarena.721\")\n...\n\n# 列出所有可用的 VisualWebArena 任务\nenv_ids = [id for id in gym.envs.registry.keys() if id.startswith(\"browsergym\u002Fvisualwebarena\")]\nprint(\"\\n\".join(env_ids))\n```\n\nAssistantBench\n```python\nimport gymnasium as gym\nimport browsergym.workarena  # 将 AssistantBench 任务注册为 Gym 环境\n\n# 启动 AssistantBench 任务\nenv = gym.make(\"browsergym\u002Fassistantbench.validation.3\")\n...\n\n# 列出所有可用的 assistantbench 任务\nenv_ids = [id for id in gym.envs.registry.keys() if id.startswith(\"browsergym\u002Fworkarena\")]\nprint(\"\\n\".join(env_ids))\n```\n\nOpenApps\n```python\nfrom open_apps.apps.start_page.main import app  # 需要导入应用才能提供服务\nfrom open_apps.launcher import OpenAppsLauncher\n\nconfig = ... # 配置包含任务、智能体、环境和服务器配置的命名空间\n\nlauncher = OpenAppsLauncher(config)\nlauncher.launch()\n```\n\nTimeWarp\n```python\nimport gymnasium as gym\nimport browsergym.timewarp  # 注册 TimeWarp 任务为 Gym 环境\n\n# 启动一个 TimeWarp 任务\nenv = gym.make(\"browsergym\u002Ftimewarp.1\")\n...\n\n# 列出所有可用的 TimeWarp 任务\nenv_ids = [id for id in gym.envs.registry.keys() if id.startswith(\"browsergym\u002Ftimewarp\")]\nprint(\"\\n\".join(env_ids))\n```\n\n## 💻 演示\n\n如果你想在 BrowserGym 中体验演示智能体，请按照以下步骤操作：\n```sh\n# 使用 Conda 设置\nconda env create -f demo_agent\u002Fenvironment.yml\nconda activate demo_agent\n\n# 或者使用 pip 设置\npip install -r demo_agent\u002Frequirements.txt\n\n# 然后下载 Playwright 的浏览器\nplaywright install chromium\n```\n\n我们的演示智能体使用 `openai` 作为后端，请确保设置好你的 `OPENAI_API_KEY`。\n\n按如下方式启动演示智能体：\n```sh\n# 开放式（交互式聊天模式）\npython demo_agent\u002Frun_demo.py --task_name openended --start_url https:\u002F\u002Fwww.google.com\n\n# miniwob\npython demo_agent\u002Frun_demo.py --task_name miniwob.click-test\n\n# workarena\npython demo_agent\u002Frun_demo.py --task_name workarena.servicenow.order-standard-laptop\n\n# webarena\npython demo_agent\u002Frun_demo.py --task_name webarena.4\n\n# visualwebarena\npython demo_agent\u002Frun_demo.py --task_name visualwebarena.398\n```\n\n你可以通过更改 `model_name` 来选择你喜欢的语言模型（默认使用 `gpt-4o-mini`），或者通过添加 `use_screenshot` 参数来为视觉语言模型生成截图，还有更多自定义选项！\n\n```python\npython demo_agent\u002Frun_demo.py --help\n```\n\n## 🌐 生态系统\n\n- [AgentLab](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FAgentLab)：无缝运行智能体进行基准测试，并收集与分析轨迹数据。\n- [WorkArena(++)](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FWorkArena)：针对 ServiceNow 平台上的 Web 智能体的基准测试平台。\n- [WebArena](https:\u002F\u002Fgithub.com\u002Fweb-arena-x\u002Fwebarena)：基于自托管域名的真实 Web 任务基准测试平台。\n- [VisualWebArena](https:\u002F\u002Fgithub.com\u002Fweb-arena-x\u002Fvisualwebarena)：基于自托管域名的真实视觉 Web 任务基准测试平台。\n- [MiniWoB(++)](https:\u002F\u002Fminiwob.farama.org\u002F)：包含超过 100 个在合成网页上执行的 Web 任务集合。\n- [WebLINX](https:\u002F\u002Fgithub.com\u002FMcGill-NLP\u002Fweblinx)：真实世界 Web 交互轨迹数据集。\n- [AssistantBench](https:\u002F\u002Fgithub.com\u002Foriyor\u002Fassistantbench)：针对开放网络中真实且耗时任务的基准测试平台。\n- [DoomArena](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FDoomArena)：用于 AI 智能体安全测试的框架，支持从 Browsergym 环境中向网页注入攻击。\n\n## 🌟 贡献者\n\n[![BrowserGym 贡献者](https:\u002F\u002Fcontrib.rocks\u002Fimage?repo=ServiceNow\u002FBrowserGym&max=2000)](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fgraphs\u002Fcontributors)\n\n## 📝 引用本工作\n\n如果你希望引用 BrowserGym，请使用以下两个 BibTeX 条目：\n\n```tex\n@article{\n    chezelles2025browsergym,\n    title={The BrowserGym Ecosystem for Web Agent Research},\n    author={Thibault Le Sellier de Chezelles and Maxime Gasse and Alexandre Lacoste and Massimo Caccia and Alexandre Drouin and L{\\'e}o Boisvert and Megh Thakkar and Tom Marty and Rim Assouel and Sahar Omidi Shayegan and Lawrence Keunho Jang and Xing Han L{\\`u} and Ori Yoran and Dehan Kong and Frank F. Xu and Siva Reddy and Graham Neubig and Quentin Cappart and Russ Salakhutdinov and Nicolas Chapados},\n    journal={Transactions on Machine Learning Research},\n    issn={2835-8856},\n    year={2025},\n    url={https:\u002F\u002Fopenreview.net\u002Fforum?id=5298fKGmv3},\n    note={Expert Certification}\n}\n\n@inproceedings{workarena2024,\n    title = {{W}ork{A}rena: How Capable are Web Agents at Solving Common Knowledge Work Tasks?},\n    author = {Drouin, Alexandre and Gasse, Maxime and Caccia, Massimo and Laradji, Issam H. and Del Verme, Manuel and Marty, Tom and Vazquez, David and Chapados, Nicolas and Lacoste, Alexandre},\n    booktitle = {Proceedings of the 41st International Conference on Machine Learning},\n    pages = {11642--11662},\n    year = {2024},\n    editor = {Salakhutdinov, Ruslan and Kolter, Zico and Heller, Katherine and Weller, Adrian and Oliver, Nuria and Scarlett, Jonathan and Berkenkamp, Felix},\n    volume = {235},\n    series = {Proceedings of Machine Learning Research},\n    month = {21--27 Jul},\n    publisher = {PMLR},\n    url = {https:\u002F\u002Fproceedings.mlr.press\u002Fv235\u002Fdrouin24a.html},\n}\n```\n\n以下是它们的使用示例：\n\n```tex\n我们在实验中使用了 BrowserGym 框架 \\cite{workarena2024,chezelles2025browsergym}。\n```\n\n## 轨迹数据\n《BrowserGym 生态系统用于 Web 智能体研究》论文中的轨迹数据可在 [Huggingface](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fagentlabtraces\u002Fagentlabtraces\u002Ftree\u002Fmain) 上获取。","# BrowserGym 快速上手指南\n\nBrowserGym 是一个开放、易用且可扩展的框架，旨在加速 Web 智能体（Web Agent）的研究。它基于 Gymnasium 接口，集成了 MiniWoB、WebArena、WorkArena 等多个主流基准测试。\n\n> **注意**：本工具专为科研设计，非消费级产品，请谨慎使用。\n\n## 环境准备\n\n在开始之前，请确保满足以下系统要求：\n\n- **操作系统**：Linux, macOS 或 Windows (推荐 Linux)\n- **Python 版本**：3.8 及以上\n- **依赖项**：\n  - `pip` 包管理工具\n  - `Playwright` 浏览器自动化库\n\n## 安装步骤\n\n### 1. 安装核心库\n\n推荐使用 `pip` 安装完整版（包含所有基准测试支持），也可根据需求选择特定模块。\n\n```bash\n# 推荐：安装完整版（包含所有基准测试）\npip install browsergym\n\n# 或者仅安装核心功能（不含具体基准测试）\npip install browsergym-core\n\n# 或者按需安装特定基准测试（例如 MiniWoB）\npip install browsergym-miniwob\n```\n\n> **国内加速提示**：如果下载速度较慢，可使用清华或阿里镜像源：\n> ```bash\n> pip install browsergym -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n> ```\n\n### 2. 配置 Playwright 浏览器\n\n安装完成后，必须下载 Playwright 所需的浏览器内核（此处以 Chromium 为例）：\n\n```bash\nplaywright install chromium\n```\n\n### 3. 特定基准测试的额外配置\n\n部分基准测试（如 WebArena, WorkArena）需要额外的环境搭建（如部署本地服务器）。请参考各子模块的 `README.md` 进行配置：\n- MiniWoB: `browsergym\u002Fminiwob\u002FREADME.md`\n- WebArena: `browsergym\u002Fwebarena\u002FREADME.md`\n- WorkArena: [WorkArena GitHub](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FWorkArena)\n\n## 基本使用\n\nBrowserGym 完全兼容 `gymnasium` 接口。以下是运行一个开放式任务（Open-ended task）的最简示例。\n\n### 示例：运行开放式任务\n\n此示例将启动一个浏览器环境，访问 Google，并等待智能体执行操作。\n\n```python\nimport gymnasium as gym\nimport browsergym.core  # 注册开放式任务环境\n\n# 启动环境\nenv = gym.make(\n    \"browsergym\u002Fopenended\",\n    task_kwargs={\"start_url\": \"https:\u002F\u002Fwww.google.com\u002F\"},  # 起始网址\n    wait_for_user_message=True,  # 每次交互后等待用户消息（调试用）\n)\n\n# 重置环境\nobs, info = env.reset()\n\n# 运行主循环\nwhile True:\n    # TODO: 在此处实现你的智能体逻辑\n    # action = your_agent(obs)\n    action = \"\"  # 占位符\n    \n    # 执行动作\n    obs, reward, terminated, truncated, info = env.step(action)\n    \n    if terminated or truncated:\n        break\n\n# 关闭环境\nenv.close()\n```\n\n### 示例：运行特定基准测试 (MiniWoB)\n\n加载并运行具体的基准测试任务非常简单，只需更改环境名称即可。\n\n```python\nimport gymnasium as gym\nimport browsergym.miniwob  # 注册 MiniWoB 任务\n\n# 启动特定的 MiniWoB 任务\nenv = gym.make(\"browsergym\u002Fminiwob.choose-list\")\n\nobs, info = env.reset()\n# ... 运行你的智能体循环 ...\nenv.close()\n```\n\n你可以列出所有可用的任务 ID：\n\n```python\nimport gymnasium as gym\nimport browsergym.miniwob\n\nenv_ids = [id for id in gym.envs.registry.keys() if id.startswith(\"browsergym\u002Fminiwob\")]\nprint(\"\\n\".join(env_ids))\n```\n\n### 进阶：运行官方演示智能体\n\n如果你想快速体验内置的 Demo 智能体（基于 OpenAI API），可以按以下步骤操作：\n\n1. **安装依赖**：\n   ```bash\n   pip install -r demo_agent\u002Frequirements.txt\n   playwright install chromium\n   ```\n2. **设置 API Key**：\n   ```bash\n   export OPENAI_API_KEY=your_key_here\n   ```\n3. **运行演示**：\n   ```bash\n   # 运行开放式交互任务\n   python demo_agent\u002Frun_demo.py --task_name openended --start_url https:\u002F\u002Fwww.google.com\n\n   # 运行 MiniWoB 任务\n   python demo_agent\u002Frun_demo.py --task_name miniwob.click-test\n   ```","某电商公司的算法团队正在研发一款能自动处理售后退款、订单查询等复杂流程的智能客服 Agent，需要大量真实的网页交互数据进行训练和评估。\n\n### 没有 BrowserGym 时\n- **环境搭建繁琐**：团队需手动为 MiniWoB、WebArena 等不同基准测试分别配置浏览器驱动和依赖，耗时数天且极易出现版本冲突。\n- **评估标准不一**：缺乏统一的接口规范，导致在不同数据集上测试 Agent 性能时，代码逻辑重复编写，难以横向对比模型效果。\n- **任务扩展困难**：想要模拟公司内部特有的 ERP 系统操作场景时，必须从零编写底层浏览器控制逻辑，开发门槛极高。\n- **调试过程黑盒**：Agent 在网页上的具体操作步骤难以可视化复现，排查错误时只能依靠枯燥的日志，效率低下。\n\n### 使用 BrowserGym 后\n- **一键集成基准**：通过 `pip install` 即可快速加载 WebArena、WorkArena 等主流评测集，统一了底层 Playwright 环境，将准备时间从几天缩短至几小时。\n- **标准化评估框架**：利用其标准的 Gym 接口，团队能用同一套代码无缝切换不同基准测试，轻松量化 Agent 在各类任务中的成功率与鲁棒性。\n- **自定义任务便捷**：只需继承 `AbstractBrowserTask` 类，开发人员便能快速将公司内部系统的操作流程封装成新的训练任务，极大降低了定制成本。\n- **可视化调试支持**：结合 AgentLab 生态，可直接回放 Agent 的操作轨迹与截图，直观定位决策失误点，显著加快了迭代优化速度。\n\nBrowserGym 通过提供统一、可扩展的网页自动化基准框架，让研发团队能从繁琐的基础设施建设中解脱出来，专注于提升智能体核心的决策与交互能力。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FServiceNow_BrowserGym_41b7fd69.png","ServiceNow","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FServiceNow_3578d394.png","Works for you™",null,"https:\u002F\u002Fwww.servicenow.com","https:\u002F\u002Fgithub.com\u002FServiceNow",[21,25,29,33],{"name":22,"color":23,"percentage":24},"Python","#3572A5",88.8,{"name":26,"color":27,"percentage":28},"HTML","#e34c26",8.5,{"name":30,"color":31,"percentage":32},"JavaScript","#f1e05a",2.4,{"name":34,"color":35,"percentage":36},"Makefile","#427819",0.4,1197,167,"2026-04-17T17:34:37","NOASSERTION",3,"未说明","非必需（仅在使用视觉模型如 VisualWebArena 或开启截图功能时可能需要）",{"notes":45,"python":42,"dependencies":46},"1. 核心依赖是 Playwright，安装后需运行 'playwright install chromium' 下载浏览器内核。\n2. 该工具主要用于网页代理研究，默认不强制要求 GPU，除非运行涉及视觉任务（如 VisualWebArena）或启用截图功能。\n3. 不同的基准测试（如 WebArena, WorkArena 等）有各自独立的额外环境配置要求，需参考对应的 README 文件。\n4. 示例演示代理（Demo Agent）默认使用 OpenAI API，需设置 OPENAI_API_KEY 环境变量。",[47,48,49,50,51],"gymnasium","playwright","browsergym-core","browsergym-experiments","openai",[53,54,55,56],"开发框架","语言模型","图像","Agent",[58,59,60],"ai","llm","webagent",2,"ready","2026-03-27T02:49:30.150509","2026-04-18T22:33:49.521604",[66,71,76,81,86,91],{"id":67,"question_zh":68,"answer_zh":69,"source_url":70},40548,"运行 VisualWebArena 时遇到 BLIP-2 PyTorch 形状不匹配错误（shape mismatch）怎么办？","这是 transformers 库的版本兼容性问题。请升级 transformers 到最新版本来解决：\npip install --upgrade transformers\n该问题在最新发布的版本中已得到修复。","https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fissues\u002F283",{"id":72,"question_zh":73,"answer_zh":74,"source_url":75},40549,"重置环境时遇到任务失败或报错，如何诊断是否是实例节点问题？","这可能是由于开发者实例所在的集群节点不健康导致的。请按以下步骤诊断：\n1. 访问 YOUR_INSTANCE_URL\u002Fstats.do\n2. 检查 'Connected to cluster node' 的值是否包含 'ord'\n如果包含 'ord'，说明该节点受当前问题影响。\n解决方案：释放当前实例并请求一个新的实例，直到新实例位于健康的集群节点上。","https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fissues\u002F158",{"id":77,"question_zh":78,"answer_zh":79,"source_url":80},40550,"GitLab 频繁超时并返回 500 错误，登录页面显示但无法登录，如何解决？","这通常不是 BrowserGym 本身的 bug，而是 webarena-setup 仓库中的配置问题。可以通过应用以下补丁来修复：\nhttps:\u002F\u002Fgithub.com\u002Fgasse\u002Fwebarena-setup\u002Fcommit\u002F55c9356c3da7698c78ca062d936768c32408c001\n应用补丁后重置服务器通常能解决问题。","https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fissues\u002F285",{"id":82,"question_zh":83,"answer_zh":84,"source_url":85},40551,"如何在 BrowserGym 中定义和管理自定义基准测试（Benchmarks）？","可以将基准测试定义为包含名称和任务数据框的对象。示例代码如下：\n@dataclass\nclass Benchmark:\n    name: str = None\n    task_df: pd.DataFrame = None\n\n    def split_train_val_test(self, split_name=\"train\"):\n        return self.subset(\"split\", split_name)\n\n    def subset(self, column_name, glob_pattern):\n        df_subset = my_filter(self.task_df, column_name, glob_pattern)\n        return Benchmark(name=f\"{self.name}.{glob_pattern}\", task_df=df_subset)\n用户可以通过过滤函数轻松定义自定义基准测试子集。","https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fissues\u002F160",{"id":87,"question_zh":88,"answer_zh":89,"source_url":90},40552,"在 Visual WebArena 中遇到 'Unauthorized url, terminating task' 错误是什么原因？","该错误通常与 PUBLIC_HOSTNAME 配置有关。当使用 localhost 或在同一实例上托管时，如果 PUBLIC_HOSTNAME 配置不正确，会导致 URL 验证失败。请检查 webarena-setup 中的 PUBLIC_HOSTNAME 设置，确保其与访问环境的实际主机名或 IP 地址一致。","https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fissues\u002F280",{"id":92,"question_zh":93,"answer_zh":94,"source_url":85},40553,"EnvArgs 类如何关联到特定的基准测试（Benchmark）？","建议在 EnvArgs 类中直接添加一个 'benchmark' 字段，用于明确标识其所属的基准测试，而不是通过任务名称推断。这样可以更清晰地管理不同基准测试下的环境参数配置。",[96,101,106,111,116,121,126,131,136,141,146,151,156,161,166,171,176,181,186,191],{"id":97,"version":98,"summary_zh":99,"released_at":100},324014,"v0.14.3","## 变更内容\n* @xhluca 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F363 中将“BrowserGym 生态系统”论文添加到 README 文件中。\n* @amanjaiswal73892 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F368 中添加了 WebArena Lite。\n* @amanjaiswal73892 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F369 中更新了 WebArena Lite 的依赖项和 toml 文件。\n* @amanjaiswal73892 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F371 中提升了开发版本号。\n* @amanjaiswal73892 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F374 中修复了 WebArena Lite 的构建问题。\n* @amanjaiswal73892 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F376 中将 Sigstore action 更新至 3.1.0 版本。\n* @marksibrahim 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F370 中修复了双击相关的 bug。\n* @amanjaiswal73892 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F378 中修复了 CI 流程。\n* @amanjaiswal73892 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F380 中向 README 添加了追踪部分。\n* @NicolasAG 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F377 中实现了 WebArena 的验证功能。\n* @NicolasAG 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F381 中修复了损坏的链接。\n* @KarenUllrich 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F379 中对 README 进行了编辑，并指出 OpenApps 是 BrowserGym 的原生应用。\n* @amanjaiswal73892 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F382 中将版本号提升至 0.14.3。\n\n## 新贡献者\n* @marksibrahim 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F370 中完成了首次贡献。\n* @NicolasAG 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F377 中完成了首次贡献。\n* @KarenUllrich 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F379 中完成了首次贡献。\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fcompare\u002Fv0.14.2...v0.14.3","2026-01-20T20:23:26",{"id":102,"version":103,"summary_zh":104,"released_at":105},324015,"v0.14.3.dev4","## 变更内容\n* @xhluca 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F363 中将“BrowserGym 生态系统”论文添加到 README 文件中。\n* @amanjaiswal73892 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F368 中添加了 WebArena Lite。\n* @amanjaiswal73892 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F369 中更新了 WebArena Lite 的依赖项和 `toml` 文件。\n* @amanjaiswal73892 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F371 中提升了开发版本号。\n* @amanjaiswal73892 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F374 中修复了 WebArena Lite 的构建问题。\n* @amanjaiswal73892 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F376 中将 Sigstore Action 更新至 3.1.0 版本。\n* @marksibrahim 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F370 中修复了双击操作中的 bug。\n* @amanjaiswal73892 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F378 中修复了 CI 流程。\n\n## 新贡献者\n* @marksibrahim 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F370 中完成了首次贡献。\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fcompare\u002Fv0.14.2...v0.14.3.dev4","2026-01-08T21:13:18",{"id":107,"version":108,"summary_zh":109,"released_at":110},324016,"v0.14.2","## 变更内容\n* @recursix 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F352 中实现了 Miniwob 缩放功能\n* @recursix 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F356 中阻止 lxml 升级到版本 6\n* @recursix 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F357 中修复了 bbox 缩放问题\n* @amanjaiswal73892 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F359 中使 Miniwob 的安装自动化\n* @recursix 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F358 中通过“填充→输入”来触发下拉菜单\n\n## 新贡献者\n* @amanjaiswal73892 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F359 中做出了首次贡献\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fcompare\u002Fv0.14.1...v0.14.2","2025-08-05T18:27:00",{"id":112,"version":113,"summary_zh":114,"released_at":115},324017,"v0.14.1","## 变更内容\n* 为 agentlab 的新 ToolUseAgent 以及 @TLSDC 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F340 中提出的全新 API 所做的部分准备性更改\n* @recursix 在 https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fpull\u002F351 中实现的 Miniwob 缩放功能\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fcompare\u002Fv0.13.4...v0.14.1","2025-06-16T16:44:30",{"id":117,"version":118,"summary_zh":119,"released_at":120},324018,"v0.13.3","## 变更内容\n\n**browsergym-core**\n\n* 可选方法 `AbstractBrowserTask.get_task_id()` #281\n* 修复了 `BrowserEnv` 参数 `resizeable_window`，现已按预期工作 #281\n\n**browsergym-experiments**\n\n* 修复了 visualwebarena 的元数据列问题 #278\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fcompare\u002Fv0.13.2...v0.13.3","2024-11-27T19:56:32",{"id":122,"version":123,"summary_zh":124,"released_at":125},324019,"v0.13.2","## 变更内容\n\n**browsergym-experiments**\n\n* 现在可以将实验轨迹导出为 [TapeAgents](https:\u002F\u002Fgithub.com\u002FServiceNow\u002FTapeAgents) 格式 #238\n* 将 weblinx_browsergym 作为依赖项安装 #261\n* 在未正确设置的情况下，WA\u002FVWA 的完整实例重置仅会发出警告，而不会导致程序崩溃 #272\n* 新增调试基准测试 `visualwebarena_tiny` #271\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fcompare\u002Fv0.13.1...v0.13.2","2024-11-21T20:10:25",{"id":127,"version":128,"summary_zh":129,"released_at":130},324020,"v0.13.1","## 变更内容\n\n**browsergym-experiments**\n\n* webarena \u002F visualwebarena 实例在重置后的消息处理 #248 #250 #254 #259\n\n**browsergym-core**\n\n* 修复了 Gym 警告“观测值不在观测空间内” #251\n* 将跟踪日志级别从 `INFO` 降级到 `DEBUG` #252\n* `env.close()` 方法更加健壮，即使在重置失败后也能在 `finally` 块中使用 #253\n* 添加了可选的 `AbstractBrowserTask.teardown()` 方法 #255\n* Browsergym 的 `register_task()` 现在同时支持不可覆盖的冻结 `task_kwargs` 以及可覆盖的 `default_task_kwargs` 参数 #255\n* 更加健壮的帧标记功能 #256 #258\n\n**browsergym-assistantbench**\n\n* 重构了 AssistantBench 机制，用于将测试预测结果保存为 JSON 文件 #242\n\n**browsergym-webarena**\n\n* 放宽了对 Playwright 版本小于 1.40 的限制 #257\n\n**browsergym-visualwebarena**\n\n* 放宽了对 Playwright 版本小于 1.40 的限制 #257\n\n## 完整变更日志\n\nhttps:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fcompare\u002Fv0.13.0...v0.13.1","2024-11-15T18:26:49",{"id":132,"version":133,"summary_zh":134,"released_at":135},324021,"v0.13.0","## 变更内容\n\n**browsergym-core**\n\n* 更加健壮的帧标记机制，放宽了最后一次尝试的限制 #245\n* 任务现在可以自行选择 `locale` 和 `timezone_id` #244\n\n**browsergym-experiments**\n\n* 在 `prepare_backend()` 中预先下载 WebLINX 数据 #226\n* 将 AssistantBench 的最大步数增加到 30 步 #244\n* 向 webarena \u002F visualwebarena 的默认动作集中添加 `select_option` 操作 #247\n\n**browsergym-visualwebarena**\n\n* 下载视觉评估模型时隐藏 Hugging Face 的进度条 #241\n\n**browsergym-assistantbench**\n\n* 设置 `locale=\"en-US\"` 和 `timezone_id=\"America\u002FNew_York\"`\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fcompare\u002Fv0.12.0...v0.13.0","2024-11-07T20:35:46",{"id":137,"version":138,"summary_zh":139,"released_at":140},324022,"v0.12.0","## Bug修复\n\n**browsergym-experiments**\n\n* 修复 WebLINX 任务列表 #235\n* 重构实验 ID 生成逻辑 #236\n* 添加 VisualWebArena 任务依赖关系 #237 #239\n\n**browsergym-visualwebarena**\n\n* 修复带有视觉验证的 VisualWebArena 任务（评估器中缺少 captioning_fn）#240\n* 增加 `torch` 依赖（用于运行字幕生成模型）#240\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fcompare\u002Fv0.11.3...v0.12.0","2024-11-04T19:44:40",{"id":142,"version":143,"summary_zh":144,"released_at":145},324023,"v0.11.3","## 修复的 bug\n\n* 修复 webarena 元数据中的重复 `depends_on` #228\n\n## 改进\n\n* 通过在导入时运行 `nltk.download()`，使 webarena \u002F visualwebarena 的设置更加简单 #227\n* 为 webarena \u002F visualwebarena 提供更健壮的 `full_reset()` 方法 #230\n* 移除了 ARIA 提取警告 #233\n* 新增基准测试配置 `webarena_tiny` #232\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fcompare\u002Fv0.11.2...v0.11.3","2024-11-01T15:30:17",{"id":147,"version":148,"summary_zh":149,"released_at":150},324024,"v0.11.2","## Bugfixes\r\n\r\n* Add incomplete `ExpResult.status` #225\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fcompare\u002Fv0.11.1...v0.11.2","2024-10-30T20:25:04",{"id":152,"version":153,"summary_zh":154,"released_at":155},324025,"v0.11.1","## New features\r\n\r\n* Set max steps to 30 in webarena \u002F visualwenarena benchmarks #214\r\n* Benchmark dependency graph utilities #220\r\n* Include nltk.download() in prepare_backend() for webarena \u002F visualwebarena benchmarks #224\r\n\r\n## Bugfixes\r\n\r\n* Rename benchmark after subset_from_split() #221\r\n* ExpArgs.exp_dir sanitization #222\r\n* get_step_info() bugfix #223\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fcompare\u002Fv0.11.0...v0.11.1","2024-10-30T19:29:05",{"id":157,"version":158,"summary_zh":159,"released_at":160},324026,"v0.11.0","## New features\r\n\r\n**browsergym-experiments**\r\n\r\n* New `weblinx` benchmark 🎉  #208 (thanks @xhluca)\r\n* New `ExpResults.status()` #219 (thanks @recursix)\r\n\r\n**browsergym-core**\r\n\r\n* New `hide_all_bids` option in `flatten_dom_to_str()` and `flatten_axtree_to_str()`  #212 (thanks @imenelydiaker)\r\n* Leaner `Unicode()` gym space #218\r\n\r\n## Bugfixes\r\n\r\n* `Benchmark.prepare_backends()` fixes #209\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fcompare\u002Fv0.10.2...v0.11.0","2024-10-30T15:38:42",{"id":162,"version":163,"summary_zh":164,"released_at":165},324027,"v0.10.2","## New features\r\n\r\n* New `Benchmark.prepare_backend()` method #204\r\n\r\n## Bugfixes\r\n\r\n* `save_step_info()` bugfix when `obs==None` (truncated episode due to `None` action) #207\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fcompare\u002Fv0.10.1...v0.10.2","2024-10-24T15:38:09",{"id":167,"version":168,"summary_zh":169,"released_at":170},324028,"v0.10.1","## Minor changes\r\n\r\n* train \u002F test splits for WorkArena L2 and L3 tasks #203\r\n* More fine-grained per-benchmark action sets #202 \r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fcompare\u002Fv0.10.0...v0.10.1","2024-10-23T19:06:45",{"id":172,"version":173,"summary_zh":174,"released_at":175},324029,"v0.10.0","## New features\r\n\r\n* New BrowserGym benchmark [AssistantBench](https:\u002F\u002Fassistantbench.github.io\u002F), packaged as `browsergym-assistantbench`. Thanks @oriyor ! #186\r\n   ```python\r\n   import browsergym.assistantbench\r\n  \r\n   env = gym.make(\"browsergym\u002Fassistantbench.validation.12\")\r\n   env = gym.make(\"browsergym\u002Fassistantbench.test.42\")\r\n   ```\r\n* Default train\u002Ftest splits for all benchmarks\r\n  ```python\r\n  miniwob = DEFAULT_BENCHMARKS[\"miniwob\"]  # 125 tasks x 5 seeds\r\n  miniwob_train = miniwob.subset_from_split(\"train\")  # 62 tasks x 5 seeds\r\n  miniwob_test = miniwob.subset_from_split(\"test\")  # 63 tasks x 5 seeds\r\n  ```\r\n\r\n## Breaking Changes\r\n\r\n* Various updates and refactors to the new `Benchmark` class #197 #198 #199 \r\n\r\n## Fixes\r\n\r\n* Improved experiment logging #182\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fcompare\u002Fv0.9.0...v0.10.0","2024-10-23T14:50:45",{"id":177,"version":178,"summary_zh":179,"released_at":180},324030,"v0.9.0","## New features\r\n\r\n* Benchmarks with default config (tasks x seeds) and metadata #173 #191\r\n   ```python\r\n   from browsergym.experiments import BENCHMARKS, Benchmark\r\n   \r\n   # make a custom benchmark\r\n   benchmark = Benchmark(\r\n     name=\"miniwob_click_test\",\r\n     high_level_action_set_args=HighLevelActionSetArgs(\r\n       subsets=[\"bid\"],\r\n       multiaction=False,\r\n       strict=False,\r\n       retry_with_force=False,\r\n       demo_mode=\"off\",\r\n     ),\r\n     env_args_list=[\r\n       EnvArgs(\r\n         task_name=\"miniwob.click-test\",\r\n         task_seed=42,\r\n         max_steps=5,\r\n      )\r\n     ],\r\n   )\r\n   \r\n   # use a pre-existing benchmark\r\n   miniwob = BENCHMARKS[\"miniwob_all\"]()\r\n   \r\n   # use only a task subset\r\n   miniwob_original = miniwob.subset_from_glob(\r\n    column=\"miniwob_category\", glob=\"original\"\r\n   )\r\n   ```\r\n* New playwright key modifier \"ControlOrMeta\" #187\r\n* Global demo_mode flag #177\r\n   ```python\r\n   import browsergym.core.action\r\n   \r\n   browsergym.core.action.set_global_demo_mode(True)  # boolean\r\n   ```\r\n\r\n## Fixes\r\n\r\n* Multi-tab actions fix #188\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FServiceNow\u002FBrowserGym\u002Fcompare\u002Fv0.8.1...v0.9.0","2024-10-19T01:16:42",{"id":182,"version":183,"summary_zh":184,"released_at":185},324031,"v0.8.1","## Fixes\r\n\r\n**browsergym-core**\r\n - fixed a bug with set-of-marks line drawing #184 #185 \r\n","2024-10-15T20:04:39",{"id":187,"version":188,"summary_zh":189,"released_at":190},324032,"v0.8.0","**browsergym-core**\r\n\r\n- Breaking changes\r\n  - goal refactor #110\r\n     `obs[\"goal_object\"]` now replaces the old `obs[\"goal_image_urls\"]`\r\n     `obs[\"goal\"]` is now deprecated\r\n     the new `goal_object` now contains a list of openai-style messages, which can include an arbitrary mix of text and \u002F or images.\r\n\r\n**browsergym-visualwebarena**\r\n\r\n- Breaking changes\r\n  - goal refactor #110, the goal is now a list of openai-style messages with goal images as base64 `image_url` messages.\r\n\r\n- Fixes\r\n  - goal images are now self-hosted as part of the homepage #171 #165 \r\n\r\n**browsergym-experiments**\r\n\r\n - Improvements\r\n   - leaner trace files #169\r\n\r\n**other**\r\n\r\n- the `legacy` demo agent has been removed\r\n- the `basic` demo agent has been leaned out and upgraded to support the new `goal_object` format #110 \r\n- other minor changes #166 #164","2024-10-08T21:40:23",{"id":192,"version":193,"summary_zh":194,"released_at":195},324033,"v0.7.1","**browsergym-core**\r\n\r\n- Depencency bump\r\n  - playwright dependency bumped from `playwright>=1.32,\u003C1.40` to `playwright>=1.39,==1.*` (fixes problems with `1.32.1`) #159 \r\n\r\n**browsergym-experiments**\r\n\r\n- Bugfixes\r\n  - #155 introduced a bug when agents returns `action==None`. This was fixed by #163 ","2024-09-27T13:39:53",[197,206,214,222,232,240],{"id":198,"name":199,"github_repo":200,"description_zh":201,"stars":202,"difficulty_score":41,"last_commit_at":203,"category_tags":204,"status":62},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,"2026-04-06T06:32:30",[56,53,55,205],"数据工具",{"id":207,"name":208,"github_repo":209,"description_zh":210,"stars":211,"difficulty_score":41,"last_commit_at":212,"category_tags":213,"status":62},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,"2026-04-05T11:01:52",[53,55,56],{"id":215,"name":216,"github_repo":217,"description_zh":218,"stars":219,"difficulty_score":61,"last_commit_at":220,"category_tags":221,"status":62},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 真正成长为懂上",160015,"2026-04-18T11:30:52",[53,56,54],{"id":223,"name":224,"github_repo":225,"description_zh":226,"stars":227,"difficulty_score":228,"last_commit_at":229,"category_tags":230,"status":62},8272,"opencode","anomalyco\u002Fopencode","OpenCode 是一款开源的 AI 编程助手（Coding Agent），旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件，而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码，还是排查难以定位的 Bug，OpenCode 都能通过自然语言交互高效完成，显著减少开发者在重复性劳动和上下文切换上的时间消耗。\n\n这款工具专为软件开发者、工程师及技术研究人员设计，特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构，这意味着用户可以审查代码逻辑、自定义行为策略，甚至私有化部署以保障数据安全，彻底打破了传统闭源 AI 助手的“黑盒”限制。\n\n在技术体验上，OpenCode 提供了灵活的终端界面（Terminal UI）和正在测试中的桌面应用程序，支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具，安装便捷，并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客，还是渴望提升产出的独立开发者，OpenCode 都提供了一个透明、可信",144296,1,"2026-04-16T14:50:03",[56,231],"插件",{"id":233,"name":234,"github_repo":235,"description_zh":236,"stars":237,"difficulty_score":61,"last_commit_at":238,"category_tags":239,"status":62},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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[53,55,56],{"id":241,"name":242,"github_repo":243,"description_zh":244,"stars":245,"difficulty_score":61,"last_commit_at":246,"category_tags":247,"status":62},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[231,56,55,53]]