// basilisk — alpha

开源的
Python 类型检查与语言服务器。

Basilisk 是一个完整的开源 Python 语言服务器。 类型检查、自动补全、跳转到定义、悬停信息、重构、 诊断、调试与性能分析——您依赖的一切, 无专有锁定。支持 VS Code、Cursor、Windsurf、Zed 和 Neovim ——无论您在哪里编写 Python。默认严格模式。用 Rust 构建。

完整 LSP Rust 构建 增量重检 每款编辑器 — VS CodeCursorWindsurfZedNeovim MIT 许可证
bad.py
def process(data):
    return data.upper()

class User:
    def __init__(self, name, age):
        self.name = name
        self.age  = age

    def greet(self):
        return f"Hello, {self.name}"
error[BSK-E0001]: 缺少参数类型注解 --> bad.py:1:12 | 1 | def process(data): | ^^^^ 参数 `data` 缺少类型注解 = 帮助:添加类型注解:`data: str` 在 1 个文件中发现 5 个错误。
good.py
def process(data: str) -> str:
    return data.upper()


class User:
    name: str
    age: int

    def __init__(self, name: str, age: int) -> None:
        self.name = name
        self.age  = age

    def greet(self) -> str:
        return f"Hello, {self.name}"
全部检查通过,未发现问题。 已检查 1 个文件——0 个错误,0 个警告。

问题所在

最好的 Python 工具被锁定在一个专有的 VS Code 扩展中。Python 理应拥有一个完全开源的语言服务器,能做所有的事——在每一款编辑器中。
  • 01 最好的 Python 工具被锁定在一款编辑器中。使用最广泛的 Python 扩展是专有软件,其最丰富的功能不会离开 VS Code。Basilisk 采用 MIT/Apache-2.0 许可证,在任何地方运行方式相同——VS Code、Cursor、Windsurf、Zed、Neovim——编辑器是您的选择,而不是约束。
  • 02 Pyright 只是一个类型检查器。没有自动补全、没有悬停、没有重构——不使用 Pylance 包装就没有这些功能。Basilisk 是完整的 LSP:诊断、补全、跳转到定义、内联提示等更多功能。
  • 03 每个类型检查器默认都是宽松模式。只有在添加 --strict 时才进行类型检查。Basilisk 默认是严格的——无需选择加入。
  • 04 Node.js 不是 Python 的依赖。Pyright 需要 Node.js。Basilisk 是单个 Rust 二进制文件——无需运行时、无需 npm、即时启动。

01 — 默认严格模式

从第一行起严格。
由您来调整。

Basilisk 将每个未类型化的函数视为类型错误——因为它本来就是。 但您始终处于控制之中:可以通过编辑器 UI 或配置文件按文件或路径放宽规则, 设置可选的截止日期以防止技术债务积压。一键"补全"修复还能自动为您添加缺失的类型。

0% 默认情况下的未类型化代码
10/10 基准测试的规则胜过 Pyright

02 — 实测,而非承诺

快过 Pyright。
我们基准测试的每条规则。

每次发布都运行 make bench——用 hyperfine 在相同的固定用例上对 Pyright、 mypy、ty 和 Pyrefly 测量挂钟时间,数据提交到代码库。在我们基准测试的规则上, Basilisk 的冷启动全文件检查全面胜过 Pyright。而且由于重检是增量的——只重新分析 被编辑的文件及其导入方——热编辑做的工作更少。

03 — 快速修复与重构

灯泡随时可用。
每条诊断皆如此。

许多诊断都附带一键修复——添加缺失的注解、 将 Optional[X] 现代化为 X | None、转换为 f-string。 此外还有完整的重构套件:提取、内联、更改签名和移动符号。

quick-fix.py
# 💡 快速修复可用
def process(data) # BSK-E0001

# → 添加类型注解
def process(data: str) -> str:
  return data.upper()
92.5% PEP 符合性得分

04 — PEP 符合性

146 个测试中 135 个通过。
目标:100%。

通过官方 Python 类型符合性套件测试—— 与衡量 Pyright(约 99%¹)、 mypy(约 58%¹) 和 Pyrefly(约 86%¹)的套件相同。 21 个类别中的 16 个达到 100%。ParamSpec、TypeVarTuple 和 TypedDict 边界情况是下一步。

Basilisk 输出
[Basilisk Debug] createDebugAdapterDescriptor
  type=basilisk-debug, request=launch

[Basilisk Debug] 请求 LSP 启动
  debugpy (python: auto-detect)...

[Basilisk Debug] LSP 启动了 debugpy →
  正在连接 DAP 客户端到
  localhost:57356

05 — 集成调试

按 F5 开始调试。
Basilisk 处理其余的。

设置断点、逐步执行代码、检查变量——全部通过 Basilisk LSP 代理。 Rust 服务器在空闲 TCP 端口上启动 debugpy 并自动连接 VS Code 的 DAP 客户端。 无需手动配置。无需单独的调试扩展。只需按 F5。

06 — 单一二进制文件

放入 PATH。
这就是全部安装。

编译为独立的 Rust 二进制文件。无需 Node.js。无需 Python 解释器。 无需 pip install。无需 npm install。 从单次下载即可在 macOS、Linux 和 Windows 上运行。

终端
# macOS / Linux (Homebrew)
brew install Nimblesite/tap/basilisk

# Windows (Scoop)
scoop install basilisk

# 然后直接运行
basilisk check src/

您期待的一切功能。
完全开源。

功能完整的开源语言服务器—— 更严格的类型检查,无专有锁定。

功能 Basilisk Pyright mypy ty Pyrefly
默认严格模式 需选择加入 需选择加入 需选择加入 需选择加入
PEP 符合性 ¹ 92.5% (135/146) ~99% ~58% 完全通过 alpha ~86%
实现语言 Rust TypeScript Python/C Rust Rust
需要运行时 Node.js Python
插件系统 WASM(计划中) Python 钩子 计划中
完整 LSP(补全、悬停、跳转) 仅 Pylance 基础 基础
集成调试器
编辑器扩展 VS Code、Cursor、Windsurf、Zed、Neovim (JetBrains 即将推出) 专有 (Pylance) VS Code VS Code
许可证 MIT MIT MIT MIT MIT

这是起点。
我们正在逼近 Pyrefly。

这些是今天的数据——由 make bench 生成并提交到代码库,因此它们会随着我们的优化而变化。Basilisk 在我们基准测试的每条规则上都已胜过 Pyright;我们的目标是达到 Pyrefly 级别的吞吐量。这些是端到端测量的冷启动全文件运行;热增量重检只重新分析你改动的文件及其导入方,因此做的工作更少。

规则 basiliskpyrightmypytypyrefly
E0001 缺少参数类型 362 ms510 ms151 ms29 ms ✓122 ms
E0002 缺少返回类型 260 ms548 ms162 ms38 ms ✓111 ms
E0010 无法解析的导入 124 ms ✓460 ms159 ms370 ms785 ms
E0012 参数类型不匹配 158 ms649 ms155 ms53 ms ✓110 ms
E0014 赋值类型不兼容 98 ms588 ms158 ms50 ms ✓109 ms
E0016 不兼容的方法覆盖 153 ms639 ms160 ms54 ms ✓117 ms
E0022 不可哈希的字典键 225 ms521 ms157 ms37 ms ✓100 ms
E0023 非穷举的 match 119 ms520 ms159 ms24 ms ✓108 ms
E0026 TypeVar 单一约束 129 ms710 ms156 ms38 ms ✓107 ms
E0054 Final 重新赋值 48 ms454 ms155 ms27 ms ✓96 ms

平均挂钟时间,基于 10 次 hyperfine 运行;越低越好,✓ = 最快。测量于 Apple M4 Max(Darwin 25.5.0,14 核心),生成于 2026-05-30T13:30:25+1000。来源:benchmarks/status/darwin-arm64-apple-m4-max.csv —— 由 make bench 重新生成。

30 秒了解 Basilisk

真实错误代码。每个修复建议内联显示。rustc 风格输出。

api.py
from typing import Any

def fetch_user(user_id):            # BSK-E0001, BSK-E0002
    ...

def save_record(data: Any) -> bool:   # BSK-E0011
    ...
error[BSK-E0001]: 缺少参数类型注解 --> api.py:3:16 | 3 | def fetch_user(user_id): | ^^^^^^^ 参数 `user_id` 缺少类型注解 = 帮助:添加类型注解:`user_id: int` error[BSK-E0011]: 显式 `Any`——需要说明理由 --> api.py:6:20 | 6 | def save_record(data: Any) -> bool: | ^^^ 使用 `Any` 必须说明理由 = 帮助:用具体类型替换 `Any`,或添加带理由的抑制注释 = 参见:https://www.basilisk-python.dev/docs/rules/#BSK-E0011
totals.py
def get_count(rows: list[int]) -> int:
    return "many"  # BSK-E0013: str 不是 int

def greet(name: str) -> str:
    return f"Hello, {name}"

greet(42)  # BSK-E0012: int 不是 str
error[BSK-E0013]: 返回类型不匹配 --> totals.py:2:12 | 2 | return "many" | ^^^^^^ `str` 不可赋值给声明的返回类型 `int` | = 帮助:返回 `int`,或将返回注解改为 `str` = 参见:https://www.basilisk-python.dev/docs/rules/type-safety/#BSK-E0013
service.py
from dataclasses import dataclass

@dataclass(frozen=True)
class Config:
    host: str
    port: int
    debug: bool = False

def create_config(
    host: str,
    port: int,
) -> Config:
    return Config(host=host, port=port)
全部检查通过,未发现问题。 已检查 1 个文件——0 个错误,0 个警告,耗时 4ms。

07 — 每款编辑器

优雅的 Python 体验。
无论您使用什么编辑器。

同一个语言服务器、同样的诊断、同样的修复—— 在 VS Code 中即可使用,加上原生的 Zed 和 Neovim 扩展。Cursor 和 Windsurf(通过 Open VSX)即将推出;JetBrains(IntelliJ / PyCharm)也在路上。目标 是即使您从不打开 VS Code 也能获得出色的 Python 体验。

编辑器支持
# VS Code — MarketplaceMarketplace 安装
# Cursor / Windsurf — Open VSX(即将推出)

# Neovim
require("basilisk").setup()

# ZedExtensions 安装

# JetBrains — 即将推出

开源。
默认严格。

Basilisk 正处于 alpha 阶段。类型检查器、LSP 服务器和编辑器 扩展今天即可使用——自动补全、跳转到定义、 悬停信息、诊断、重构、F5 调试和性能分析—— 支持 VS Code、Cursor、Windsurf、Zed 和 Neovim。JetBrains 即将推出。 开源。无专有锁定。早期采用者共同塑造路线图。

来源

  1. 完全通过的符合性得分来自官方 python/typing 符合性套件(pyright 1.1.408、mypy 1.19.1、pyrefly 0.54.0)。mypy 的部分+通过得分为 96.4%。
  2. Pyrefly 吞吐量(1.85M LOC/秒)来自 pyrefly.org(在 Meta 166 核基础设施上测量)。
  3. 性能基准测试表:每款工具 CLI 针对大型单规则测试文件的平均挂钟时间,基于 10 次 hyperfine 运行,测量于 Apple M4 Max(Darwin 25.5.0,arm64,14 核心),生成于 2026-05-30T13:30:25+1000。工具版本:basilisk dev build、pyright 1.1.408、mypy 1.19.1、ty 0.0.19、pyrefly 0.54.0。来源 benchmarks/status/darwin-arm64-apple-m4-max.csv;可用 make bench 复现。这些是冷启动的全文件运行,并不反映热增量(LSP)性能。