开源的
Python 类型检查与语言服务器。
Basilisk 是一个完整的开源 Python 语言服务器。 类型检查、自动补全、跳转到定义、悬停信息、重构、 诊断、调试与性能分析——您依赖的一切, 无专有锁定。支持 VS Code、Cursor、Windsurf、Zed 和 Neovim ——无论您在哪里编写 Python。默认严格模式。用 Rust 构建。
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}"
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}"
问题所在
- 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 或配置文件按文件或路径放宽规则, 设置可选的截止日期以防止技术债务积压。一键"补全"修复还能自动为您添加缺失的类型。
02 — 实测,而非承诺
快过 Pyright。
我们基准测试的每条规则。
每次发布都运行 make bench——用 hyperfine 在相同的固定用例上对 Pyright、
mypy、ty 和 Pyrefly 测量挂钟时间,数据提交到代码库。在我们基准测试的规则上,
Basilisk 的冷启动全文件检查全面胜过 Pyright。而且由于重检是增量的——只重新分析
被编辑的文件及其导入方——热编辑做的工作更少。
03 — 快速修复与重构
灯泡随时可用。
每条诊断皆如此。
许多诊断都附带一键修复——添加缺失的注解、
将 Optional[X] 现代化为 X | None、转换为 f-string。
此外还有完整的重构套件:提取、内联、更改签名和移动符号。
# 💡 快速修复可用 def process(data) # BSK-E0001 # → 添加类型注解 def process(data: str) -> str: return data.upper()
04 — PEP 符合性
146 个测试中 135 个通过。
目标:100%。
通过官方 Python 类型符合性套件测试—— 与衡量 Pyright(约 99%¹)、 mypy(约 58%¹) 和 Pyrefly(约 86%¹)的套件相同。 21 个类别中的 16 个达到 100%。ParamSpec、TypeVarTuple 和 TypedDict 边界情况是下一步。
[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 级别的吞吐量。这些是端到端测量的冷启动全文件运行;热增量重检只重新分析你改动的文件及其导入方,因此做的工作更少。
| 规则 | basilisk | pyright | mypy | ty | pyrefly |
|---|---|---|---|---|---|
| E0001 缺少参数类型 | 362 ms | 510 ms | 151 ms | 29 ms ✓ | 122 ms |
| E0002 缺少返回类型 | 260 ms | 548 ms | 162 ms | 38 ms ✓ | 111 ms |
| E0010 无法解析的导入 | 124 ms ✓ | 460 ms | 159 ms | 370 ms | 785 ms |
| E0012 参数类型不匹配 | 158 ms | 649 ms | 155 ms | 53 ms ✓ | 110 ms |
| E0014 赋值类型不兼容 | 98 ms | 588 ms | 158 ms | 50 ms ✓ | 109 ms |
| E0016 不兼容的方法覆盖 | 153 ms | 639 ms | 160 ms | 54 ms ✓ | 117 ms |
| E0022 不可哈希的字典键 | 225 ms | 521 ms | 157 ms | 37 ms ✓ | 100 ms |
| E0023 非穷举的 match | 119 ms | 520 ms | 159 ms | 24 ms ✓ | 108 ms |
| E0026 TypeVar 单一约束 | 129 ms | 710 ms | 156 ms | 38 ms ✓ | 107 ms |
| E0054 Final 重新赋值 | 48 ms | 454 ms | 155 ms | 27 ms ✓ | 96 ms |
真实诊断
30 秒了解 Basilisk
真实错误代码。每个修复建议内联显示。rustc 风格输出。
from typing import Any def fetch_user(user_id): # BSK-E0001, BSK-E0002 ... def save_record(data: Any) -> bool: # BSK-E0011 ...
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
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)
07 — 每款编辑器
优雅的 Python 体验。
无论您使用什么编辑器。
同一个语言服务器、同样的诊断、同样的修复—— 在 VS Code 中即可使用,加上原生的 Zed 和 Neovim 扩展。Cursor 和 Windsurf(通过 Open VSX)即将推出;JetBrains(IntelliJ / PyCharm)也在路上。目标 是即使您从不打开 VS Code 也能获得出色的 Python 体验。
# VS Code — Marketplace 从 Marketplace 安装 # Cursor / Windsurf — Open VSX(即将推出) # Neovim require("basilisk").setup() # Zed 从 Extensions 安装 # JetBrains — 即将推出
开源。
默认严格。
Basilisk 正处于 alpha 阶段。类型检查器、LSP 服务器和编辑器 扩展今天即可使用——自动补全、跳转到定义、 悬停信息、诊断、重构、F5 调试和性能分析—— 支持 VS Code、Cursor、Windsurf、Zed 和 Neovim。JetBrains 即将推出。 开源。无专有锁定。早期采用者共同塑造路线图。
来源
- 完全通过的符合性得分来自官方 python/typing 符合性套件(pyright 1.1.408、mypy 1.19.1、pyrefly 0.54.0)。mypy 的部分+通过得分为 96.4%。
- Pyrefly 吞吐量(1.85M LOC/秒)来自 pyrefly.org(在 Meta 166 核基础设施上测量)。
- 性能基准测试表:每款工具 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)性能。