内容
link
<p align="right">
<a href="./README.md">English> | <a href="./README.zh-CN.md">中文</p>
AI 原生的控制平面,用于 [KLayout](https://www.klayout.de/)。它将运行中的 KLayout GUI 转换为可脚本化的布局内核,可以从外部 Python 进程、MCP 客户端和 AI 代理进行控制。
该项目分为三层:
- `klink`:外部 Python 客户端、MCP 桥、路由/域逻辑和面向代理的工作流。
- `klink_plugin`:一个薄的 KLayout 端 RPC 插件,暴露选定的 `pya` 和 GUI 操作。
- `examples_klink/public`、`tests/public` 和 ``:示例、验证和发布文档。
核心 Python 包不依赖任何第三方运行时库唯一的声明依赖是 klink 自己的 Rust 加速内核,以预构建的轮形式提供。虚拟环境、缓存、构建输出和本地测试工件在干净的发布中不被包含。
## 功能
- 通过本地 TCP RPC 控制 KLayout,批量方法适用于生成的布局(每调用数千个形状/实例/PCell)。
- 读取布局、单元格、层、形状、视图、选择和元数据。
- 创建和编辑形状、文本、单元格、实例、PCell、端口和锚点。
- 路由:通过端口/锚点标记的/斯坦纳/阻尼/通道后端,以及用于自定义设备电路的详细路由器 → 实时的 LVS 流。
- 通过 `klink-mcp` 将 KLayout 操作作为 MCP 工具公开,可使用 `klink.find_tools` 导航;运行受控的 `pya` 代码片段作为逃脱口。
- 记住您发送的内容:从 工具栏发送的选择成为代理可以解析的持久 ID(“此区域”,“我刚刚发送的 通过一个桥 KLayout 会话,并在它们之间移动几何图形,具有干预运行然后提交的传输。
- 将工作会话(手动编辑和 RPC 编辑)记录到可重 Python 脚本(以及独立的 `pya` 变体)。
- 支持以 gdsfactory 为导向的工作流,包括端口标记放置、路由和与 klive 兼容的 `c.show()` 显示。
- 在外部 Python 中运行较重的 KLayout 插件的轻量。
## 仓库布局
```text
klink/ Python 客户端、MCP 桥和核心逻辑
klink_plugin/ KLayout 插件
examples_klink/public/ 公共示例库
tests/public/ 公共测试套件(无需 KLayout)
docs/public/ 发布文档
rust/ Rust 加速库(klink_boxmaze)
pyproject.toml Python 打包配置
README.md 英文 README
README.zh-CN.md 中文 README
CLAUDE.md Claude Code 操作规则和项目上下文
LICENSE Apache-2.0 许可证
THIRD_PARTY_NOTICES.md 第三方通知
```
## 要求
- **KLayout** — 布局编辑器 klink 控制;对于所有实时功能,这是核心先决条件。从 <https://www.klayout.de/build.html> 安装标准桌面构建。klink 在 KLayout 0.30.x 上开发和测试;任何最近的官方桌面构建(其宏环境提供 `pya` Qt 绑定)都应有效。纯离线工作流(公共测试套件和离线演示)无需 KLayout 即可运行。
3.10 或更新版本(捆绑 内核针对 CPython 3.10–3.13 可选:Cl 或另一个 MCP。
- 可选:gdsfactory、`klayout 包、NumPy/OpenCV 或根据工作流的检测。
## 安装 Python 包
对于正常使用,请 安装已发布的包:
```powershell
python install klayout-klink
```
`pip install kl` 安装 klink **及其 Rust 加速内核**(`klink-boxmaze-rs`)- klink 自己的代码,以预构建的轮形式提供,适用于 Linux / macOS / Windows 上的 CPython 3.10–3.13。您可以自动获得快速路径;无需其他操作。
在没有预构建的平台上**常见的 OS / / Python),pip退回到从源代码构建内核,这需要工具链(rustup)。如果您没有一个 - 或者想要尽可能轻的安装 - 请使用 `pip install klayout-klink-deps` **纯 Python :所有功能仍然有效(内核有纯 Python),只是大型放置和路由作业速度较慢第三方**科学库(klayout、gds、…)**不**被捆绑 - 请在同一解释器中自行功能所需的库```powershell
python -m pip install klayout 离线数据库 / LVS 提取
python - gdsfactory # 硅光子路由
python -m pip install numpy opencv-python-headless 纳米器件薄片
python - install scipy scikit-learn scikit-image # 薄片检测```
当某个功能需要一个缺失的库时,klink 会返回一个错误,指出确切的 install` 命令 - 您无需事先知道这些。
###代码(仅限开发)
仅当您正在开发 klink 本身时,才使用可编辑安装(`)- 它将包指向您的工作树,以便编辑立即生效。普通用户不需要此功能。
Shell:
```powershell
git clone <仓库网址> klink
cd klink
py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps -m pip install -U pip
python pip install -e .
```
Linux / macOS:
```bash
git clone <仓库网址> klink
link
python3 -m venv .venv
source/bin/activate
m pip install -
python -m pipe .
```
## 安装 插件
先决条件:KLayout首先安装 - 从 <https://www.klayout.html> 获取适用于您操作系统的桌面构建。
`_plugin` 是一个 K盐包。安装后,KLayout 会自动运行 `pymacros/klink.lym` 并启动:
- `127.0.0.1:8765` 上的 klink RPC。如果端口被占用,它会尝试下一个端口,直到 `8799`。
- `127.0.0.1:808 上的与 兼容的 gdsfactory 样式的 `c.show流。
Windows:
```cd path\to\
New-Item - Directory -Force -:USERPROFILE\\salt" | Out-Null
Copy-Item.\klink -Destination "$envPROFILE\KLayout\s -Recurse -```
Linux / mac```bash
cd /path/to/klink -p ~/.klayout
cp -R kklayout/
```
无论哪,插件最终都在Layout 盐目录>/_plugin/`(grain.xml` 的文件夹在复制插件 KLayout。每个 窗口都 klink 会话绑定 `8765`8799` 中闲端口,并注册为klayout-<,因此打开多个,每个窗口都有一个器(`8765`、`8766`,启动成功会打印:
```text
[klink.server] listening on.0.0:8765
旧插件副本时 KLayout,删除旧salt/klink 目录,复制新的ink_plugin` 文件重启 KLayout。
快速测试
使用已加载插件的 KLayout直接从 Python 连接:python
from klink import KLinkClient
LinkClient() as c:
print(c.ponce=42))
(c.layout_info(summary"))
```
如果 KLayout 正在监听非:
```python
link import KLinkClient
with KLinkClient(port=8766) as c:
print(c.ping())
```
对于没有外部的第一个端到,请运行其中一个(参见 [`docsemos.md`](docsemos.md)):
```bash
python -_klink.public.demos.ebl_wrapar # 完全
```
## Claude Code / MCP
安装 Python 包后,`klink-mcp` 作为命令行入口提供。
安装代理技能和项目内存文件:
```powershell
cd path\to\klink
klink-mcp --setup .
```
这安装或更新:
```text
.claude/skills/klayout/SKILL.md
.clills/klayout-gdsfactory/SK
CLAUDE.md
```
使用 Claude Code 注册 MCP 服务器:
```claude mcp add klayout -- python -m kcp --,write,verify --session-id project-klink
```
常见配置文件| 配置文件 | |
| --- || `read` | 只读探索:布局、层、形状、选择查询。 |
| `write` |创建单元格、层、形状、实例、撤销记录。 |
verify` | DRCVS 验证工具| `escape`逃脱工具,如.python`。 |
all` | 内容。 |
配置文件:
```powershell -m klinkprofile read,,escape
`klink.m 的 Python 环境中必须安装。对于 gds工具,请在中安装 gds
```powershell
python -m pip install g
```
使用 MCPink.status` 工具检查活动解释器、检测和 KLayout 连接状态。
## 测试
公共测试套件是纯 Python 的,不需要 KLayout```powershell
python pytest -q tests```
集成测试(路由、LVS、记录需要一个带有 `klink_plugin` 加载 KLayout,并在开发中进行测试。
## 发布到 PyPI(维护者一个标签发布** PyPI 项目klayout-klink纯 Python 核心)和 `klink-boxmaze-rs`(Rust 内核,适用于 Linux/macOS × CPython 3.10–3.13)。KLayout 插件作为盐包单独发布,不在 PyPI 上。通过 CI 发布(/workflows/release.yml)`,而不是手动 -所有内容,在 组合 `pip install` 烟雾测试上进行门控,然后通过 PyPI 受信任的发布功能上传:
```powershell
git tag v0.1.0 # 版本必须与 klink/_meta.py + rust/klink_boxmaze/pyproject.toml git push origin.1. # 触发发布工作流
设置:在 pypi.org 上为每个项目名称*待处理发布者*(Git指向此仓库和 `release.yml`。
,用户使用 `pip install klayout-klink安装 - 无需克隆和 `-e`。可编辑(`-)安装仅link 本身的开发。
## 故障### 从 Python 连接检查:
Layout 正在运行。
- `klink_plugin复制到 KLayout 中。
-安装后重启了。
- 端口 `8765` 可用实际会话端口 `8766` 防火墙或未阻止 localhost TCP MCP 工具存在但返回 KLayout 连接错误
服务器正在运行,但 KLayout 无法连接。请启动 KLayout 并,然后调用 `klink.reconnect` 或重启客户端。使用 `klink.status` 检查最后。
### g 或检测工具报告项
在用于 MCP 服务器的同一安装缺少的库会指明的库):
python -m pipdsfactory
m pip install scipy-learn scikit-image### PowerShell `.venv` 当前 PowerShell允许脚本执行:powershell
Set- -Scope Process -ExecutionPolicy Bypass
.\.venvActivate.ps1
```
## 进一步阅读
- [`docs-started.md`](docs/public/getting-started.md):安装、配置和第一个结果。
- [`docs/public/architecturedocs/public/architecture.md):三层控制路径。
-/public/demos.md/public/demos.md及其要求。
docs/public/control-plane.md/public/control-plane.md):类型化的 RPC 接口、 工具目录、。
- [`docs/public/interactive-workflows.md`](docs/public/interactive-workflows.md):SEND 选择内存、多会话传输、记录器。
- [`CLAUDE.md`](CLAUDE.md):Claude Code 操作规则和项目上下文。
- [`klink/mcp/README.md`](klcp/README.md):MCP详情。
##
欢迎少数项目特定规则使 klink 保持一致:
- **过程纯度 `klink/`机制,不包含任何(无硬、设备、DR数字、端口或 实例)。过程事实或用户dk.py` 中式传递到 API不要在 `/` 中添加过程常量。
- **一个意图调用。** 新的代理面向工具使用/用户意图,(带有 `next)、验证-变,并持久化磁盘状态。
- **测试必须通过。** 在发送运行公共套件:`python -m pytest -q tests/public`。路由/LVS 更改仅在实时 KLayout LVS `match=True` 时计为已完成。
- **字节冻结路由器。** `klink/routing/backends/flexdr/` 和 `rust/` 下的 crate 是字节对齐基准 - Rust 内核是纯 Python 引用仅用于加速的端口。不要随意修改它们。
- **预检。** `python -m klink.doctor` 检查您的解释器、插件连接和客户端/插件版本握手。
通过 GitHub 问题打开问题或拉取请求,描述更改以及您如何验证它。在项目的 Apache-2.0 许可下接受贡献。
想贡献 PR,讨论较大更改或共同开发功能?通过 **klinkdev2026@163.com**(或打开 GitHub 问题)联系维护者。
## 致谢
klink 建立在优秀的开源工作基础上,并借鉴了它们:
- **[KLayout](https://www.klayout.de/)** —编辑器pya` / `db` API,klink 驱动并嵌入其中。
- **[OpenROAD](https://github.com/TheROAD-Project)** (BSD-Clause)— klink 的路由引擎包含对 OpenROAD 的详细路由器 `drt` (FlexDR / FlexPA / FlexGC)和全局路由器 `grt` (FastRoute)的忠实移植和概念适配。
- **[gdsfactory](https://github.com/gdsfactory/gdsfactory)**硅光子背后的光和 `route 后端。
-](https:///gdsfactory/klive)**)— k插件在端口 8082 上重新实现的显示协议,以便 gdsfactory 样式的 `Component.show()` 无缝运行。
-layoutClaw](https://github.com/caidish/Klayout)** (MIT)米器件薄先验和形态模助手。
- **[Klayout-Router://github.com/Legendrexial/Klayout-Router)** (MIT)BL 自动修补背后的写场修器。
正式版权和许可证文本THIRD_PARTY_NOT`](THIRD_PARTY_NOTICES.md 许可证
2.0。参见`。第三方组件保留其自身的许可证;THIRD_NOTICES.md`。