重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
kernel-python-sdk by kernel/skills
npx skills add https://github.com/kernel/skills --skill kernel-python-sdk在以下场景中使用 Kernel Python SDK:
何时不应使用:
kernel browsers create),请改用 kernel-cli 技能SDK 按基于资源的模块进行组织:
kernel.browsers - 浏览器会话管理(创建、列出、删除)kernel.browsers.playwright - 服务器端 Playwright 执行kernel.browsers.computer - 操作系统级控制(鼠标、键盘、截图)广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
kernel.browser_pools - 预热的浏览器池管理kernel.profiles - 持久化浏览器配置文件(认证状态)kernel.auth.connections - 托管认证(创建、登录、提交、关注、检索、删除)kernel.credential_providers - 外部凭据提供程序(1Password)kernel.proxies - 代理配置kernel.extensions - Chrome 扩展管理kernel.deployments - 应用部署kernel.invocations - 动作调用1. 服务器端执行(推荐)
kernel.browsers.playwright.execute(session_id, code="...") 直接在浏览器虚拟机中执行 Playwright 代码session_id 必须作为位置参数(第一个参数)传递,而不是作为 id= 关键字参数response.result 访问响应 - 必须在代码中使用 return 来获取数据2. CDP 连接(客户端)
导入模式
from kernel import Kernelimport kernel 和 from kernel import Kernelfrom typing import TypedDictfrom playwright.async_api import async_playwrightSDK 初始化
client = Kernel() 会自动从环境中读取 KERNEL_API_KEY动作处理器模式
from typing import TypedDict
from kernel import Kernel
app = kernel.App("app-name")
class TaskInput(TypedDict):
task: str
@app.action("action-name")
async def my_action(ctx: kernel.KernelContext, input_data: TaskInput):
# 访问输入:input_data["task"] 或 input_data.get("task")
...
CDP 连接模式(客户端)
async with async_playwright() as playwright:
browser = await playwright.chromium.connect_over_cdp(kernel_browser.cdp_ws_url)
context = browser.contexts[0] if browser.contexts else await browser.new_context()
page = context.pages[0] if context.pages else await context.new_page()
二进制数据处理
二进制数据(截图、PDF)以 Node.js Buffer 形式返回:{'data': [byte_array], 'type': 'Buffer'}
# 遵循上述规范模式,然后:
if response.success and response.result:
data = bytes(response.result['data'])
with open("output.png", "wb") as f:
f.write(data)
安装
uv pip install kernel 或 pip install kerneluv pip install playwright每周安装量
141
代码仓库
GitHub 星标数
3
首次出现
Jan 30, 2026
安全审计
已安装于
cursor138
claude-code136
codex136
opencode21
gemini-cli20
github-copilot18
Use the Kernel Python SDK when you need to:
When NOT to use:
kernel browsers create), use the kernel-cli skill insteadThe SDK is organized into resource-based modules:
kernel.browsers - Browser session management (create, list, delete)kernel.browsers.playwright - Server-side Playwright executionkernel.browsers.computer - OS-level controls (mouse, keyboard, screenshots)kernel.browser_pools - Pre-warmed browser pool managementkernel.profiles - Persistent browser profiles (auth state)kernel.auth.connections - Managed auth (create, login, submit, follow, retrieve, delete)kernel.credential_providers - External credential providers (1Password)kernel.proxies - Proxy configurationkernel.extensions - Chrome extension managementkernel.deployments - App deploymentkernel.invocations - Action invocation1. Server-side Execution (RECOMMENDED)
kernel.browsers.playwright.execute(session_id, code="...")session_id must be passed as a positional argument (first parameter), not as id= keywordresponse.result - MUST usereturn in code to get data back2. CDP Connection (Client-side)
Import Patterns
from kernel import Kernelimport kernel and from kernel import Kernelfrom typing import TypedDictfrom playwright.async_api import async_playwrightSDK Initialization
client = Kernel() reads KERNEL_API_KEY from environment automaticallyAction Handler Pattern
from typing import TypedDict
from kernel import Kernel
app = kernel.App("app-name")
class TaskInput(TypedDict):
task: str
@app.action("action-name")
async def my_action(ctx: kernel.KernelContext, input_data: TaskInput):
# Access input: input_data["task"] or input_data.get("task")
...
CDP Connection Pattern (Client-side)
async with async_playwright() as playwright:
browser = await playwright.chromium.connect_over_cdp(kernel_browser.cdp_ws_url)
context = browser.contexts[0] if browser.contexts else await browser.new_context()
page = context.pages[0] if context.pages else await context.new_page()
Binary Data Handling
Binary data (screenshots, PDFs) returns as Node.js Buffer: {'data': [byte_array], 'type': 'Buffer'}
# Follow canonical pattern above, then:
if response.success and response.result:
data = bytes(response.result['data'])
with open("output.png", "wb") as f:
f.write(data)
Installation
uv pip install kernel or pip install kerneluv pip install playwrightWeekly Installs
141
Repository
GitHub Stars
3
First Seen
Jan 30, 2026
Security Audits
Gen Agent Trust HubFailSocketPassSnykWarn
Installed on
cursor138
claude-code136
codex136
opencode21
gemini-cli20
github-copilot18
Skills CLI 使用指南:AI Agent 技能包管理器安装与管理教程
48,700 周安装