[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-kernel--kernel-images":3,"tool-kernel--kernel-images":64},[4,17,27,35,43,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":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"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,51,52,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":80,"owner_twitter":81,"owner_website":82,"owner_url":83,"languages":84,"stars":124,"forks":125,"last_commit_at":126,"license":127,"difficulty_score":128,"env_os":129,"env_gpu":130,"env_ram":131,"env_deps":132,"category_tags":135,"github_topics":136,"view_count":128,"oss_zip_url":79,"oss_zip_packed_at":79,"status":16,"created_at":144,"updated_at":145,"faqs":146,"releases":177},176,"kernel\u002Fkernel-images","kernel-images","Browsers-as-a-service for automations and web agents","kernel-images 是一个为自动化任务和 Web 智能代理提供“浏览器即服务”的开源工具。它让你无需本地安装，就能远程调用沙盒化的 Chrome 浏览器，支持 Playwright、Puppeteer 等主流框架连接控制，还提供实时画面直播、回放录像、远程操作等可视化功能。\n\n它解决了开发者在构建浏览器自动化或 AI 代理时面临的环境配置复杂、资源占用高、状态难保持等问题。尤其适合需要稳定复用登录态、调试交互流程或追求低延迟响应的场景。\n\n主要面向开发者与 AI 研究人员，特别是正在构建 Web 自动化脚本、测试系统或基于浏览器的智能体（如自动填表、数据抓取、模拟用户行为）的人群。设计师或产品经理也可借助其可视化界面远程观察自动化运行过程。\n\n技术亮点在于支持 Unikraft 轻量级内核部署：浏览器空闲时自动休眠节省资源，唤醒后精准恢复之前状态（包括页面、缩放、Cookie），冷启动仅需 20ms，兼顾效率与体验。同时支持 Docker 部署，灵活适配不同需求。","\u003Cp align=\"center\">\n  \u003Cimg src=\"static\u002Fimages\u002Flogo-kernel-light.svg\" alt=\"Kernel Logo\" width=\"55%\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg alt=\"GitHub License\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fonkernel\u002Fkernel-images\">\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FFBrveQRcud\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1342243238748225556?logo=discord&logoColor=white&color=7289DA\" alt=\"Discord\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fx.com\u002Fjuecd__\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Fjuecd__\" alt=\"Follow @juecd__\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fx.com\u002Frfgarcia\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Frfgarcia\" alt=\"Follow @rfgarcia\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n## What's Kernel?\n\nKernel provides sandboxed, ready-to-use Chrome browsers for browser automations and web agents. This repo powers our [hosted services](https:\u002F\u002Fkernel.sh\u002Fdocs\u002Fintroduction).\n\nSign up [here](https:\u002F\u002Fwww.kernel.sh\u002F)!\n\n## Key Features\n\n- Sandboxed Chrome browser that Chrome DevTools-based browser frameworks (Playwright, Puppeteer) can connect to\n- Remote GUI access (live view streaming) for visual monitoring and remote control\n- Configurable live view settings (read-only view, browser window dimensions)\n- Controllable video replays of the browser's session\n\n## What You Can Do With It\n\n- Run automated browser-based workflows\n- Develop and test AI agents that use browsers\n- Build custom tools that require controlled browser environments\n\n## Implementation\n\nThis image can be used to run headful Chromium in a Docker container or with Unikraft unikernels. The unikernel implementation builds on top of the base Docker image and has the additional benefits of running on a unikernel:\n\n- Automated standby \u002F \"sleep mode\" when there is no network activity (consuming negligible resources when it does)\n- When it goes into standby mode, the unikernel’s state gets snapshotted and can be restored exactly as it was when it went to sleep. This could be useful if you want to reuse a session’s state (browser auth cookies, interact with local files, browser settings, even the exact page and window zoom you were on).\n- Extremely fast cold restarts (\u003C20ms), which could be useful for any application that requires super low latency event handlers.\n\n## Demo\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F5888e823-5867-4c01-ad67-ec8989ba9573\n\n## Running in Docker\n\nYou can build and run the Dockerfile directly as a Docker container.\n\n```sh\ncd images\u002Fchromium-headful\nIMAGE=kernel-docker .\u002Fbuild-docker.sh\nIMAGE=kernel-docker ENABLE_WEBRTC=true .\u002Frun-docker.sh\n```\n\n## Running on a Unikernel\n\nAlternatively, you can run the browser on a Unikraft unikernel.\n\n### 1. Install the Kraft CLI\n`curl -sSfL https:\u002F\u002Fget.kraftkit.sh | sh`\n\n### 2. Add Unikraft Secret to Your CLI\n`export UKC_METRO=\u003Cregion>`\n`export UKC_TOKEN=\u003Csecret>`\n\n### 3. Build the image\n`IMAGE=YOUR_UKC_USERNAME\u002Fchromium-headless-test:latest images\u002Fchromium-headless\u002Fbuild-unikernel.sh`\n\n### 4. Run it\n`IMAGE=YOUR_UKC_USERNAME\u002Fchromium-headless-test:latest images\u002Fchromium-headless\u002Frun-unikernel.sh`\nor\n`IMAGE=YOUR_UKC_USERNAME\u002Fchromium-headful-test:latest VOLIMPORT_PREFIX=official images\u002Fchromium-headful\u002Frun-unikernel.sh`\n\nWhen the deployment finishes successfully, the Kraft CLI will print out something like this:\n```\nDeployed successfully!\n │\n ├───────── name: kernel-cu\n ├───────── uuid: 0cddb958...\n ├──────── metro: \u003Cregion>\n ├──────── state: starting\n ├─────── domain: https:\u002F\u002F\u003Cservice_name>.kraft.host\n ├──────── image: onkernel\u002Fkernel-cu@sha256:8265f3f188...\n ├─────── memory: 8192 MiB\n ├────── service: \u003Cservice_name>\n ├─ private fqdn: \u003Cid>\n ├─── private ip: \u003Cip>\n └───────── args: \u002Fwrapper.sh\n```\n\n### Unikernel Notes\n\n- The image requires at least 8gb of memory.\n- To deploy the implementation with WebRTC desktop streaming enabled instead of noVNC: `ENABLE_WEBRTC=true NEKO_ICESERVERS=xxx .\u002Frun-unikernel.sh`\n- Deploying to Unikraft Cloud requires the usage of a [TURN server](https:\u002F\u002Fwebrtc.org\u002Fgetting-started\u002Fturn-server) when `ENABLE_WEBRTC=true`, as direct exposure of UDP ports is not currently supported. `NEKO_ICESERVERS`: Describes multiple STUN and TURN server that can be used by the ICEAgent to establish a connection with a peer. e.g. `[{\"urls\": [\"turn:turn.example.com:19302\", \"stun:stun.example.com:19302\"], \"username\": \"name\", \"credential\": \"password\"}, {\"urls\": [\"stun:stun.example2.com:19302\"]}]`.\n- Various services (mutter, tint) take a few seconds to start-up. Once they do, the standby and restart time is extremely fast.\n- The Unikraft deployment generates a url. This url is public, meaning _anyone_ can access the remote GUI if they have the url. Only use this for non-sensitive browser interactions, and delete the unikernel instance when you're done.\n- You can call `browser.close()` to disconnect to the browser, and the unikernel will go into standby after network activity ends. You can then reconnect to the instance using CDP. `browser.close()` ends the websocket connection but doesn't actually close the browser.\n- VCPUS value can be adjusted using the variable: `VCPUS=8`\n\n## Connect to the browser via Chrome DevTools Protocol\n\nPort `9222` is exposed via `ncat`, allowing you to connect Chrome DevTools Protocol-based browser frameworks like Playwright and Puppeteer (and CDP-based SDKs like Browser Use). You can use these frameworks to drive the browser in the cloud. You can also disconnect from the browser and reconnect to it.\n\nFirst, fetch the browser's CDP websocket endpoint:\n\n```typescript\nconst url = new URL(\"http:\u002F\u002Flocalhost:9222\u002Fjson\u002Fversion\");\nconst response = await fetch(url, {\n  headers: {\n    \"Host\": \"\u003Cthis can be anything>\" \u002F\u002F Required if using a unikernel\n  }\n});\nif (response.status !== 200) {\n  throw new Error(\n    `Failed to retrieve browser instance: ${\n      response.statusText\n    } ${await response.text()}`\n  );\n}\n\u002F\u002F webSocketDebuggerUrl should look like:\n\u002F\u002F ws:\u002F\u002F\u002Fdevtools\u002Fbrowser\u002F06acd5ef-9961-431d-b6a0-86b99734f816\nconst { webSocketDebuggerUrl } = await response.json();\n```\n\nThen, connect a remote Playwright or Puppeteer client to it:\n\n```typescript\n\u002F\u002F Puppeteer\nconst browser = await puppeteer.connect({\n  browserWSEndpoint: webSocketDebuggerUrl,\n});\n\u002F\u002F Playwright\nconst browser = await chromium.connectOverCDP(webSocketDebuggerUrl);\n```\n\n## Browser Remote GUI \u002F Live View\n\nYou can use the embedded live view to monitor and control the browser. The live view supports both read and write access to the browser. Both map to port `443`.\n\n- NoVNC: A VNC client. Read\u002Fwrite is supported. Set `ENABLE_WEBRTC=false` in `.\u002Frun-docker.sh`.\n- WebRTC: A WebRTC-based client. Read\u002Fwrite, window resizing, and copy\u002Fpaste is supported. It's much faster than VNC. Available when `ENABLE_WEBRTC=true` is set.\n\n### Notes\n- Audio streaming in the WebRTC implementation is currently non-functional and needs to be fixed.\n- The live view is read\u002Fwrite by default. You can set it to read-only by adding `-e ENABLE_READONLY_VIEW=true \\` in `docker run`.\n\n## Replay Capture\n\nYou can use the embedded recording server to capture recordings of the entire screen in our headful images. It allows for one recording at a time and can be enabled with `WITH_KERNEL_IMAGES_API=true`\n\nFor example:\n\n```bash\ncd images\u002Fchromium-headful\nexport IMAGE=kernel-docker\n.\u002Fbuild-docker.sh\nWITH_KERNEL_IMAGES_API=true ENABLE_WEBRTC=true .\u002Frun-docker.sh\n\n# 1. Start a new recording\ncurl http:\u002F\u002Flocalhost:10001\u002Frecording\u002Fstart -d {}\n\n# recording in progress - run your agent\n\n# 2. Stop recording\ncurl http:\u002F\u002Flocalhost:10001\u002Frecording\u002Fstop -d {}\n\n# 3. Download the recorded file\ncurl http:\u002F\u002Flocalhost:10001\u002Frecording\u002Fdownload --output recording.mp4\n```\n\nNote: the recording file is encoded into a H.264\u002FMPEG-4 AVC video file. [QuickTime has known issues with playback](https:\u002F\u002Fdiscussions.apple.com\u002Fthread\u002F254851789?sortBy=rank) so please make sure to use a compatible media player!\n\n## Documentation\n\nThis repo powers our managed [browser infrastructure](https:\u002F\u002Fkernel.sh\u002Fdocs).\n\n## Contributing\n\nPlease read our [contribution guidelines](.\u002FCONTRIBUTING.md) before submitting pull requests or issues.\n\n## License\n\nSee the [LICENSE](.\u002FLICENSE) file for details.\n\n## Support\n\nFor issues, questions, or feedback, please [open an issue](https:\u002F\u002Fgithub.com\u002Fonkernel\u002Fkernel-images\u002Fissues) on this repository. You can also join our [Discord](https:\u002F\u002Fdiscord.gg\u002FFBrveQRcud).\n\n## Colophon\n\n- Our WebRTC implementation is adapted from [Neko](https:\u002F\u002Fgithub.com\u002Fm1k1o\u002Fneko).\n- Thank you to [xonkernel](https:\u002F\u002Fgithub.com\u002Fxonkernel) for leading the development of our WebRTC live view.\n- Thank you to the [Unikraft Cloud](https:\u002F\u002Funikraft.cloud\u002F) team for your help with unikernels.\n\nMade with ❤️ by the [Kernel team](https:\u002F\u002Fwww.kernel.sh).\n","\u003Cp align=\"center\">\n  \u003Cimg src=\"static\u002Fimages\u002Flogo-kernel-light.svg\" alt=\"Kernel Logo\" width=\"55%\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg alt=\"GitHub License\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fonkernel\u002Fkernel-images\">\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FFBrveQRcud\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1342243238748225556?logo=discord&logoColor=white&color=7289DA\" alt=\"Discord\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fx.com\u002Fjuecd__\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Fjuecd__\" alt=\"Follow @juecd__\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fx.com\u002Frfgarcia\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Frfgarcia\" alt=\"Follow @rfgarcia\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n## 什么是 Kernel？\n\nKernel 提供沙箱化（sandboxed）、开箱即用的 Chrome 浏览器，用于浏览器自动化和 Web 代理（web agents）。本仓库为我们的[托管服务](https:\u002F\u002Fkernel.sh\u002Fdocs\u002Fintroduction)提供支持。\n\n立即注册 [这里](https:\u002F\u002Fwww.kernel.sh\u002F)！\n\n## 核心特性\n\n- 沙箱化的 Chrome 浏览器，可被基于 Chrome DevTools 协议的浏览器框架（如 Playwright、Puppeteer）连接\n- 支持远程图形界面访问（实时画面流），便于可视化监控与远程控制\n- 可配置的实时视图设置（只读模式、浏览器窗口尺寸）\n- 支持对浏览器会话进行可控的视频回放\n\n## 你可以用它做什么\n\n- 运行基于浏览器的自动化工作流\n- 开发和测试使用浏览器的 AI 代理（AI agents）\n- 构建需要受控浏览器环境的自定义工具\n\n## 实现方式\n\n该镜像可用于在 Docker 容器中运行带图形界面的 Chromium，或配合 Unikraft unikernel 使用。unikernel 实现基于基础 Docker 镜像，并额外具备以下优势：\n\n- 当无网络活动时自动进入待机 \u002F “睡眠模式”（此时资源消耗可忽略不计）\n- 进入待机模式时，unikernel 的状态会被快照保存，并可在唤醒时精确恢复（包括浏览器认证 Cookie、本地文件交互、浏览器设置，甚至页面和窗口缩放比例）\n- 极快的冷启动速度（\u003C20ms），适用于任何需要超低延迟事件处理器的应用场景\n\n## 演示\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F5888e823-5867-4c01-ad67-ec8989ba9573\n\n## 在 Docker 中运行\n\n你可以直接构建并运行 Dockerfile 作为 Docker 容器。\n\n```sh\ncd images\u002Fchromium-headful\nIMAGE=kernel-docker .\u002Fbuild-docker.sh\nIMAGE=kernel-docker ENABLE_WEBRTC=true .\u002Frun-docker.sh\n```\n\n## 在 Unikernel 上运行\n\n你也可以选择在 Unikraft unikernel 上运行浏览器。\n\n### 1. 安装 Kraft CLI\n`curl -sSfL https:\u002F\u002Fget.kraftkit.sh | sh`\n\n### 2. 为 CLI 添加 Unikraft 密钥\n`export UKC_METRO=\u003Cregion>`\n`export UKC_TOKEN=\u003Csecret>`\n\n### 3. 构建镜像\n`IMAGE=YOUR_UKC_USERNAME\u002Fchromium-headless-test:latest images\u002Fchromium-headless\u002Fbuild-unikernel.sh`\n\n### 4. 运行镜像\n`IMAGE=YOUR_UKC_USERNAME\u002Fchromium-headless-test:latest images\u002Fchromium-headless\u002Frun-unikernel.sh`\n或\n`IMAGE=YOUR_UKC_USERNAME\u002Fchromium-headful-test:latest VOLIMPORT_PREFIX=official images\u002Fchromium-headful\u002Frun-unikernel.sh`\n\n部署成功后，Kraft CLI 将输出类似如下内容：\n```\nDeployed successfully!\n │\n ├───────── name: kernel-cu\n ├───────── uuid: 0cddb958...\n ├──────── metro: \u003Cregion>\n ├──────── state: starting\n ├─────── domain: https:\u002F\u002F\u003Cservice_name>.kraft.host\n ├──────── image: onkernel\u002Fkernel-cu@sha256:8265f3f188...\n ├─────── memory: 8192 MiB\n ├────── service: \u003Cservice_name>\n ├─ private fqdn: \u003Cid>\n ├─── private ip: \u003Cip>\n └───────── args: \u002Fwrapper.sh\n```\n\n### Unikernel 注意事项\n\n- 该镜像至少需要 8GB 内存。\n- 若需启用 WebRTC 桌面流而非 noVNC，请使用：`ENABLE_WEBRTC=true NEKO_ICESERVERS=xxx .\u002Frun-unikernel.sh`\n- 当 `ENABLE_WEBRTC=true` 时，部署到 Unikraft Cloud 需要使用 [TURN server](https:\u002F\u002Fwebrtc.org\u002Fgetting-started\u002Fturn-server)，因为目前尚不支持直接暴露 UDP 端口。`NEKO_ICESERVERS`：描述多个 STUN 和 TURN 服务器，ICEAgent 可通过它们与对端建立连接。例如：`[{\"urls\": [\"turn:turn.example.com:19302\", \"stun:stun.example.com:19302\"], \"username\": \"name\", \"credential\": \"password\"}, {\"urls\": [\"stun:stun.example2.com:19302\"]}]`。\n- 多个服务（如 mutter、tint）启动需数秒时间。启动完成后，待机与重启速度极快。\n- Unikraft 部署会生成一个 URL。该 URL 是公开的，意味着**任何人**只要拥有该 URL 即可访问远程 GUI。请仅用于非敏感的浏览器交互，并在使用完毕后删除 unikernel 实例。\n- 你可以调用 `browser.close()` 断开与浏览器的连接，当网络活动结束后，unikernel 会进入待机状态。之后可通过 CDP 重新连接实例。`browser.close()` 仅断开 websocket 连接，并不会真正关闭浏览器。\n- 可通过变量调整 VCPUS 值：`VCPUS=8`\n\n## 通过 Chrome DevTools Protocol 连接浏览器\n\n端口 `9222` 通过 `ncat` 暴露，允许你连接基于 Chrome DevTools Protocol 的浏览器框架，如 Playwright、Puppeteer（以及基于 CDP 的 SDK，如 Browser Use）。你可以使用这些框架驱动云端的浏览器，也可断开后再重新连接。\n\n首先，获取浏览器的 CDP websocket 端点：\n\n```typescript\nconst url = new URL(\"http:\u002F\u002Flocalhost:9222\u002Fjson\u002Fversion\");\nconst response = await fetch(url, {\n  headers: {\n    \"Host\": \"\u003Cthis can be anything>\" \u002F\u002F 使用 unikernel 时必需\n  }\n});\nif (response.status !== 200) {\n  throw new Error(\n    `Failed to retrieve browser instance: ${\n      response.statusText\n    } ${await response.text()}`\n  );\n}\n\u002F\u002F webSocketDebuggerUrl 应形如：\n\u002F\u002F ws:\u002F\u002F\u002Fdevtools\u002Fbrowser\u002F06acd5ef-9961-431d-b6a0-86b99734f816\nconst { webSocketDebuggerUrl } = await response.json();\n```\n\n然后，连接远程的 Playwright 或 Puppeteer 客户端：\n\n```typescript\n\u002F\u002F Puppeteer\nconst browser = await puppeteer.connect({\n  browserWSEndpoint: webSocketDebuggerUrl,\n});\n\u002F\u002F Playwright\nconst browser = await chromium.connectOverCDP(webSocketDebuggerUrl);\n```\n\n## 浏览器远程 GUI \u002F 实时视图\n\n你可以使用内嵌的实时视图来监控和控制浏览器。实时视图支持对浏览器的读写操作。二者均映射到端口 `443`。\n\n- NoVNC：VNC 客户端，支持读写操作。在 `.\u002Frun-docker.sh` 中设置 `ENABLE_WEBRTC=false`。\n- WebRTC：基于 WebRTC 的客户端，支持读写、窗口缩放及复制粘贴功能，比 VNC 快得多。需设置 `ENABLE_WEBRTC=true` 才可用。\n\n### 注意事项\n- WebRTC 实现中的音频流当前不可用，有待修复。\n- 实时视图默认为读写模式。可通过在 `docker run` 中添加 `-e ENABLE_READONLY_VIEW=true \\` 设置为只读模式。\n\n## 录像捕获\n\n你可以使用内置的录制服务器，在我们的有头（headful）镜像中捕获整个屏幕的录像。该功能一次仅支持一个录制会话，可通过设置 `WITH_KERNEL_IMAGES_API=true` 启用。\n\n例如：\n\n```bash\ncd images\u002Fchromium-headful\nexport IMAGE=kernel-docker\n.\u002Fbuild-docker.sh\nWITH_KERNEL_IMAGES_API=true ENABLE_WEBRTC=true .\u002Frun-docker.sh\n\n# 1. 开始新录制\ncurl http:\u002F\u002Flocalhost:10001\u002Frecording\u002Fstart -d {}\n\n# 正在录制中 —— 运行你的 agent\n\n# 2. 停止录制\ncurl http:\u002F\u002Flocalhost:10001\u002Frecording\u002Fstop -d {}\n\n# 3. 下载录制文件\ncurl http:\u002F\u002Flocalhost:10001\u002Frecording\u002Fdownload --output recording.mp4\n```\n\n注意：录制文件被编码为 H.264\u002FMPEG-4 AVC 视频格式。[QuickTime 存在已知播放问题](https:\u002F\u002Fdiscussions.apple.com\u002Fthread\u002F254851789?sortBy=rank)，请确保使用兼容的媒体播放器！\n\n## 文档\n\n本仓库为我们的托管 [浏览器基础设施（browser infrastructure）](https:\u002F\u002Fkernel.sh\u002Fdocs) 提供支持。\n\n## 贡献\n\n提交 Pull Request 或 Issue 前，请先阅读我们的 [贡献指南（contribution guidelines）](.\u002FCONTRIBUTING.md)。\n\n## 许可证\n\n详情请参阅 [LICENSE](.\u002FLICENSE) 文件。\n\n## 支持\n\n如遇问题、疑问或反馈，请在此仓库 [提交 Issue](https:\u002F\u002Fgithub.com\u002Fonkernel\u002Fkernel-images\u002Fissues)。你也可以加入我们的 [Discord](https:\u002F\u002Fdiscord.gg\u002FFBrveQRcud) 社区。\n\n## 致谢\n\n- 我们的 WebRTC 实现改编自 [Neko](https:\u002F\u002Fgithub.com\u002Fm1k1o\u002Fneko)。\n- 感谢 [xonkernel](https:\u002F\u002Fgithub.com\u002Fxonkernel) 主导开发了我们的 WebRTC 实时预览功能。\n- 感谢 [Unikraft Cloud](https:\u002F\u002Funikraft.cloud\u002F) 团队在 unikernel 方面提供的帮助。\n\n由 [Kernel 团队](https:\u002F\u002Fwww.kernel.sh) ❤️ 制作。","# Kernel Images 快速上手指南\n\n## 环境准备\n\n- **系统要求**：Linux 或 macOS（推荐 Ubuntu 20.04+ \u002F macOS 12+）\n- **内存要求**：至少 8GB RAM（Unikernel 模式必需）\n- **前置依赖**：\n  - Docker（用于容器模式）\n  - Node.js + npm（用于连接 CDP 客户端，如 Puppeteer\u002FPlaywright）\n  - 可选：[Kraft CLI](https:\u002F\u002Fget.kraftkit.sh)（用于 Unikernel 部署）\n\n> 国内用户建议配置 Docker Hub 镜像加速器（如阿里云、腾讯云镜像源）以提升拉取速度。\n\n---\n\n## 安装步骤\n\n### 方式一：Docker 容器运行（推荐新手）\n\n```sh\ncd images\u002Fchromium-headful\nIMAGE=kernel-docker .\u002Fbuild-docker.sh\nIMAGE=kernel-docker ENABLE_WEBRTC=true .\u002Frun-docker.sh\n```\n\n### 方式二：Unikernel 运行（高性能场景）\n\n1. 安装 Kraft CLI：\n\n```sh\ncurl -sSfL https:\u002F\u002Fget.kraftkit.sh | sh\n```\n\n2. 设置 Unikraft Cloud 凭据：\n\n```sh\nexport UKC_METRO=\u003Cregion>\nexport UKC_TOKEN=\u003Csecret>\n```\n\n3. 构建并运行：\n\n```sh\nIMAGE=YOUR_UKC_USERNAME\u002Fchromium-headful-test:latest VOLIMPORT_PREFIX=official images\u002Fchromium-headful\u002Fbuild-unikernel.sh\nIMAGE=YOUR_UKC_USERNAME\u002Fchromium-headful-test:latest VOLIMPORT_PREFIX=official images\u002Fchromium-headful\u002Frun-unikernel.sh\n```\n\n> 成功部署后，CLI 将输出访问 URL（如 `https:\u002F\u002F\u003Cservice_name>.kraft.host`），请妥善保管。\n\n---\n\n## 基本使用\n\n### 1. 通过 CDP 连接浏览器（Puppeteer\u002FPlaywright）\n\n获取 WebSocket 调试地址：\n\n```typescript\nconst url = new URL(\"http:\u002F\u002Flocalhost:9222\u002Fjson\u002Fversion\");\nconst response = await fetch(url, {\n  headers: {\n    \"Host\": \"\u003C任意值>\" \u002F\u002F Unikernel 模式必需\n  }\n});\nconst { webSocketDebuggerUrl } = await response.json();\n```\n\n连接 Puppeteer：\n\n```typescript\nconst browser = await puppeteer.connect({\n  browserWSEndpoint: webSocketDebuggerUrl,\n});\n```\n\n或连接 Playwright：\n\n```typescript\nconst browser = await chromium.connectOverCDP(webSocketDebuggerUrl);\n```\n\n### 2. 启用远程 GUI 监控（WebRTC 推荐）\n\n启动时设置 `ENABLE_WEBRTC=true`，即可通过浏览器访问实时桌面界面（默认端口 443）。\n\n### 3. 录制屏幕操作（可选）\n\n启动容器时启用录制 API：\n\n```bash\nWITH_KERNEL_IMAGES_API=true ENABLE_WEBRTC=true .\u002Frun-docker.sh\n```\n\n录制流程：\n\n```bash\n# 开始录制\ncurl http:\u002F\u002Flocalhost:10001\u002Frecording\u002Fstart -d {}\n\n# 执行你的自动化任务...\n\n# 停止录制\ncurl http:\u002F\u002Flocalhost:10001\u002Frecording\u002Fstop -d {}\n\n# 下载视频\ncurl http:\u002F\u002Flocalhost:10001\u002Frecording\u002Fdownload --output recording.mp4\n```\n\n> 录制文件为 H.264 格式，建议使用 VLC 或 MPV 播放（QuickTime 可能不兼容）。","某跨境电商公司的自动化测试团队，需要每天在真实浏览器环境中运行上千次购物流程测试，覆盖不同国家站点和登录状态，以确保促销活动期间前端功能稳定。\n\n### 没有 kernel-images 时\n- 每次测试都要从零启动完整 Chrome 实例，冷启动耗时长达 5–10 秒，拖慢整个 CI\u002FCD 流水线\n- 多个测试并行时容易因资源争抢导致浏览器崩溃，需人工重跑，浪费工程师时间\n- 无法保存已登录的会话状态，每次测试都得重新走一遍验证码和登录流程，增加失败率\n- 远程调试只能靠截图或录屏，出错后难以复现用户操作路径，排查效率极低\n- 长时间运行的容器占用大量内存和 CPU，即使空闲也无法自动休眠，造成云资源浪费\n\n### 使用 kernel-images 后\n- 借助 Unikernel 快照机制，浏览器进入“睡眠模式”后可秒级唤醒，冷启动时间压缩到 20ms 内，测试吞吐量提升 5 倍\n- 每个浏览器实例完全沙箱隔离，支持高并发运行而不互相干扰，测试稳定性达 99.8%\n- 可复用带登录态的浏览器快照，跳过重复认证步骤，让测试聚焦核心购物流程\n- 通过远程 GUI 实时直播或回放视频，测试失败时能精准定位到鼠标点击和页面跳转的瞬间，Debug 时间缩短 70%\n- 空闲时自动进入低功耗待机，内存占用趋近于零，每月节省近 40% 的云服务器费用\n\nkernel-images 让浏览器自动化从“笨重易碎的物理设备模拟”升级为“轻量可复用的云端服务”，真正实现按需调用、随启随停。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fkernel_kernel-images_037020fb.png","kernel","Kernel","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fkernel_a8abf0ac.png","Crazy fast, open source infra for AI agents to access the Internet",null,"oss@kernel.sh","usekernel","https:\u002F\u002Fwww.kernel.sh","https:\u002F\u002Fgithub.com\u002Fkernel",[85,89,93,97,101,105,109,112,116,120],{"name":86,"color":87,"percentage":88},"Go","#00ADD8",38.5,{"name":90,"color":91,"percentage":92},"Shell","#89e051",27.2,{"name":94,"color":95,"percentage":96},"TypeScript","#3178c6",10.8,{"name":98,"color":99,"percentage":100},"Vue","#41b883",8.2,{"name":102,"color":103,"percentage":104},"Makefile","#427819",3.6,{"name":106,"color":107,"percentage":108},"JavaScript","#f1e05a",3.5,{"name":110,"color":111,"percentage":10},"C","#555555",{"name":113,"color":114,"percentage":115},"Dockerfile","#384d54",1.8,{"name":117,"color":118,"percentage":119},"Python","#3572A5",1.7,{"name":121,"color":122,"percentage":123},"HTML","#e34c26",0.7,737,47,"2026-04-03T14:56:56","Apache-2.0",4,"Linux","未说明","8GB+",{"notes":133,"python":130,"dependencies":134},"需安装 Docker 或 Unikraft 环境；使用 Unikernel 部署时需至少 8GB 内存，支持快速休眠与恢复；WebRTC 模式需配置 TURN\u002FSTUN 服务器；远程 GUI 地址公开，请勿用于敏感操作。",[],[13,15,14,53],[137,138,139,140,141,142,143],"container","docker","vm","unikernel","ai","browser","infrastructure","2026-03-27T02:49:30.150509","2026-04-06T08:25:32.335267",[147,152,157,162,167,172],{"id":148,"question_zh":149,"answer_zh":150,"source_url":151},398,"如何设置 VNC 窗口分辨率为 1920x1080？","可以通过环境变量设置：`docker run -e WIDTH=1920 -e HEIGHT=1080 ...`。若需最大化浏览器窗口，可添加 Chromium 启动参数 `--start-maximized`。也可在容器内使用 `xdotool windowsize \u003CWindow ID> 1920 1080` 手动调整窗口大小。","https:\u002F\u002Fgithub.com\u002Fkernel\u002Fkernel-images\u002Fissues\u002F6",{"id":153,"question_zh":154,"answer_zh":155,"source_url":156},399,"为什么密码管理器的自动填充功能被禁用？","浏览器设计为短期使用（几小时或几天），而自动填充提示适用于长期会话，且会干扰使用视觉模型的 LLM。推荐使用“Managed Auth”产品或集成 1Password 服务账户实现自动填充：https:\u002F\u002Fwww.kernel.sh\u002Fdocs\u002Fintegrations\u002F1password。","https:\u002F\u002Fgithub.com\u002Fkernel\u002Fkernel-images\u002Fissues\u002F112",{"id":158,"question_zh":159,"answer_zh":160,"source_url":161},400,"WebRTC 模式下复制粘贴功能为何不工作？","该功能在 Chrome 上正常，在 Firefox 上因前端代码限制暂不支持。开发者计划添加仅在粘贴时触发的 Firefox 临时解决方案，并考虑增加自定义右键菜单和虚拟键盘以增强移动端控制能力。","https:\u002F\u002Fgithub.com\u002Fkernel\u002Fkernel-images\u002Fissues\u002F31",{"id":163,"question_zh":164,"answer_zh":165,"source_url":166},401,"WebRTC 显示双光标怎么办？","这是已知的前端渲染问题，已在代码中修复。具体修复位置参考：https:\u002F\u002Fgithub.com\u002Fraiden-staging\u002Fkernel-images\u002Fblob\u002F1cbe8e0e89f2a08d37281dbbf41cebeb1b4a2281\u002Fimages\u002Fchromium-headful\u002Fclient\u002Fpublic\u002Findex.html#L16。","https:\u002F\u002Fgithub.com\u002Fkernel\u002Fkernel-images\u002Fissues\u002F28",{"id":168,"question_zh":169,"answer_zh":170,"source_url":171},402,"WebRTC 连接为何会因无活动而断开？","Unikernel 在无活动时休眠，而 WebRTC WebSocket 过于高效未能维持活跃状态。解决方案是向 Neko 的 WebSocket 添加心跳机制，已在 Pull Request #46 中修复。","https:\u002F\u002Fgithub.com\u002Fkernel\u002Fkernel-images\u002Fissues\u002F27",{"id":173,"question_zh":174,"answer_zh":175,"source_url":176},403,"运行 build-docker.sh 时为何要求设置 UKC_TOKEN 和 UKC_METRO？","这些环境变量属于 Unikernel\u002FUnikraft，与 Docker 构建无关。当前脚本存在冗余检查，应移除对这些变量的依赖以正常构建 Docker 镜像。","https:\u002F\u002Fgithub.com\u002Fkernel\u002Fkernel-images\u002Fissues\u002F94",[]]