Binomica-Labs/SpliceCraft
GitHub: Binomica-Labs/SpliceCraft
SpliceCraft 是一款纯 Python 实现的终端质粒工作台,集质粒图谱查看、序列编辑、克隆模拟、引物设计和 BLAST 搜索于一体,让分子克隆全流程在终端中高效完成。
Stars: 185 | Forks: 12
# SpliceCraft

[](https://pypi.org/project/splicecraft/)
[](https://pypi.org/project/splicecraft/)
[](https://www.python.org/)
[](https://textual.textualize.io/)
[](https://github.com/Binomica-Labs/SpliceCraft/actions/workflows/test.yml)
[](https://opensource.org/licenses/MIT)
[](https://github.com/Binomica-Labs/SpliceCraft)
## 你的整个克隆工作流,尽在终端。
SpliceCraft 是一款质粒工作台,就在你日常的工作环境中运行。打开
图谱,编辑序列,设计引物,规划 Golden Braid 或 MoClo
组装,进行 BLAST 搜索,检查你的 Sanger 测序数据,并记录实验笔记本 —
所有操作均通过键盘在一个地方完成,无需浏览器标签页,也无需云账户。
环状和线状图谱在任何现代终端中都会渲染为清晰的 Unicode 盲文图形,
除非你主动操作,否则任何数据都不会离开你的机器 — 而且任何
质粒图谱都可以导出为出版级的 **PNG 或 SVG**(带有用于图表的透明背景选项),
支持一次性导出或直接从库中批量导出。
它由一位从事日常一线实验工作的生物工程师构建:Bug 反馈
来源于真实的克隆工作,修复亦是如此。

**为什么要尝试一下:**
- **快速且本地化。** 没有 Electron,没有 Web 应用,也无需登录。`pipx install splicecraft`,几秒钟内即可开始设计。
- **覆盖完整工作流。** 查看 → 编辑 → 设计 → 克隆 → 模拟 → 验证 → 编写文档 — 一个工具即可理解这些步骤如何衔接。
- **像保护无价之宝一样保护你的数据**(因为它确实是无价的 — 见下文)。
- **支持脚本化。** 包含 150 多个 endpoint 的本地 API 和基于标准库的 CLI,让 agent 或 shell 脚本能够驱动每一个工作流。
## 快速开始
```
pipx install splicecraft
splicecraft # empty canvas
splicecraft L09137 # fetch pUC19 from NCBI on launch
splicecraft myplasmid.gb # local GenBank or .dna
```
x86-64 Linux、Intel macOS 和 Windows 完全通过预构建的
wheel 进行安装 — 无需编译。在 **ARM64 Linux**(Raspberry Pi / ARM 云服务器)
和 **Apple Silicon** 上,有一个依赖项(`primer3-py`)没有 ARM wheel,
需要在安装时编译,因此请先安装 C 工具链:
`sudo apt install build-essential python3-dev` (Linux) 或
`xcode-select --install` (macOS),然后再执行 `pipx install splicecraft`。
在 **Windows** 上,请在 **Windows Terminal**(Windows 11
默认终端)中运行 SpliceCraft 以显示盲文图谱 — 它会在启动时自动将控制台配置为 UTF-8 +
ANSI,因此图谱*应该*能正常渲染,而不会出现乱码。(此
原生 Windows 路径已通过 mock 实现并经过了 CI 测试,但尚未
在真实的 Windows 硬件上得到确认 — 见 [`docs/PLATFORMS.md`](docs/PLATFORMS.md)。)
如果盲文显示为
方框(说明字体缺少这些字形),请在
“设置” → “显示”中切换 **“ASCII 质粒图谱”**。完整的终端兼容性矩阵请参见 [`docs/PLATFORMS.md`](docs/PLATFORMS.md)。
运行后按下 `?` 可查看完整的键盘快捷键参考,或按下 `Ctrl+K` 呼出
模糊命令面板,直接通过名称跳转到任何工具。关于通过 pip / uv / conda / 源码安装请参见
[`docs/install.md`](docs/install.md)。
## 实用可靠的工作利器
你的质粒库是数月 — 有时甚至数年 — 的心血结晶,因此 SpliceCraft 的
定位是一款让你无需担忧的日常生产工具:
- **你的数据至高无上。** 每次保存都是原子操作(崩溃不会留下写了一半的文件),自动备份(`.bak` + 循环时间戳 + 每日快照),并且受到“可疑缩减”拒绝机制的保护,绝不会用一个空文件覆盖 156 MB 的库。命名冲突时总是会询问 — 跳过 / 复制 / 覆盖 — 并且在自我更新前会为所有内容创建快照。
- **生物学计算准确且经验证。** 回文序列、Type IIS 酶、跨越复制起始点的切割、环绕特征、非标准遗传密码表 (`/transl_table`)、反向互补以及 IUPAC 都被作为基础核心牢牢锁定 — 背后有 **4,000 多项测试** 作为支撑,外加针对生物学逻辑的基于属性的模糊测试、针对保存路径的崩溃注入测试,以及针对数据层的并发模糊测试。只有当整个测试套件全部通过时,才会发布新版本。
- **我们主动寻找麻烦。** 一长串“神圣不可侵犯的约束” ([`CLAUDE.md`](CLAUDE.md)) 以及发布前深入、多轮的审计,会抢先在你之前发掘出各种边缘情况、数据丢失风险窗口、竞态条件和安全漏洞。
数据安全说明:[`docs/data-safety.md`](docs/data-safety.md) ·
安全策略:[`SECURITY.md`](SECURITY.md)。
## 引导式功能概览
所有功能都挂载在顶部的一个菜单栏上,从左向右阅读。完整的
参考文档位于 [`docs/features.md`](docs/features.md);这里是要点介绍。
### BLAST
无需离开应用即可进行搜索 (`Ctrl+B`)。**Local** 模式会在进程内针对你自己的库运行 BLASTN / BLASTP /
HMMscan — 由 `pyhmmer` 驱动,因此无需
安装外部的 `blast+` — 并提供一键下载 Pfam-A / NCBIfam(或任何
HMMER3 URL)的功能。**Online** 模式将 DNA / 蛋白质 — 或整个质粒或
单一 feature — 发送到 NCBI 或 EMBL-EBI Pfam,并将命中结果整理成表,具有实时
轮询计数器以及能真正中止任务的“取消”按钮。**Add to collection** 可将高亮的
核苷酸命中结果直接从 NCBI 拉取到你指定的
质粒收藏库中。(Windows 原生环境:HMMscan 需要 WSL2;BLASTN/BLASTP
可在进程内运行。)脚本 agent 也可以运行在线搜索 — 但前提是你必须
勾选 *Settings → “Allow agent online BLAST/HMMER”*,这样脚本或
自主助手就永远不会在未经许可的情况下将你的序列发送到外部;它们
一直在使用的进程内 BLAST/HMMscan 会完全保留在你的机器上。
### Enzymes
驱动限制性内切酶叠加显示 — 显示所有位点、单酶切位点、6+/4+ bp,或者仅显示
Golden Braid 接头。多切点酶带有动态的**上标
切割计数**(EcoRI², BsaI³),当你编辑掉某个位点时,该计数会相应递减。从
200 多种 NEB 目录酶以及你自定义的酶中构建命名的
**酶集合**;当前激活的集合会限定每次扫描的范围。你的自定义酶现在会出现在
每一个酶选择器中 — 包括叠加列表、传统克隆和
Golden-Braid / MoClo 选择器 — 并且克隆语法编辑器也支持接受它们。
### Features
这是一个用于存放可重用注释(启动子、RBS、标签、CDS)的库。从
任何质粒中截取一个区域,然后将其拖放到另一个质粒上以*添加注释*或
*拼接*到序列中(Synthesis 和 Domesticator 共用
同一个存储库)。**Ctrl+F** 可查找子序列 — 支持模糊匹配和双链检索 — 并且按 `n`/`N` 步进浏览结果,每个结果都会被预先选中,方便你直接按 **Alt+Shift+F** 在原地进行标记。(如果按下 `Ctrl+/`,则会改为按名称搜索 features。)
### Primers
这是一个全屏的 Primer3 设计器,用于检测、克隆、Golden Braid 和
通用引物设计,每一个都带有 **Designed → Ordered → Validated** 的生命周期标识,显示在其对应的质粒旁。第五个 **Primer Check** 标签页可在你的
整个库(或仅当前激活的集合)中进行 in-silico PCR:输入一个引物,它会列出该引物可以退火结合的所有质粒,并显示 **% identity**、链和位置;输入两个引物,则可以查看
**扩增子长度**和**被扩增的 feature**,并按置信度进行排名
(✓ / ⚠ / ~ / ✗)。结合能力是根据引物 3′ 端来判断的,因此 5′ 端的克隆尾部
会显示为较低的同一性,而不会直接消失 — 点击结果即可在画布上的结合位点处将其打开。
引物库会按照**集合**进行分类,并带有模糊匹配的**搜索栏**。
按下 **Space** 键可循环切换引物的标记状态(★ select · $ cart · M move);**MOVE** /
批量删除 / 重置已标记集合的状态,并将集合或你的 $
**购物车**中的引物**导出**为可直接下单的 **CSV** — 可以是通用格式 (Name/Sequence/Length/Tm) 也可以是 **IDT 批量上传**模板 (Name/Sequence/Scale/Purification) — (之后也可以将它们**导入**回来)。标记是跟随
引物本身的,因此过滤条件永远不会让它们错位;格式错误的 oligo 在导出时会被拒绝,在导入时会被跳过。**Ctrl+C** 可复制高亮引物的序列(并带有碱基数量的 toast 提示)。
### Mutato
定点突变(带有一点俏皮的风格)。指向一个 CDS,为突变命名
(`L54A`),SpliceCraft 会为你设计 SOE-PCR 引物 — 如果靠近序列末端,它会自动回退到
双引物修饰外部策略,并且仅当引物真正携带该突变时
才提供快捷方式,以确保你永远不会意外扩增出野生型。它还可以将粘贴的蛋白质序列转化为可立即下单的 CDS:
根据你的密码子表进行频率匹配的密码子优化,并提供 **stops** 选择器
(1–3,并兼容尾部的 `*` 延伸)以及一个 **Avoid sites** 选择器,用于清除
CDS 中指定的酶切位点。
其 **Scrub** 标签页无需克隆操作即可治愈整个质粒中的限制性内切酶位点:
选择酶(默认为 Type IIS),SpliceCraft 会找到消除每个位点的最小点突变方案 — 在所有重叠的可读框中保持**沉默突变**,
绝不会产生新的位点,并在无法通过沉默突变进行治愈时向你报告。
**Apply cure** 会对治愈后的质粒进行命名和保存(引物结合在退火位置,并作为错配绘制在原始序列上),并通过
**QuikChange** (PCR → DpnI) 或 **Golden Braid**(带有 BsaI 尾部的片段重新连接
在一起)使其重新环化 — Golden Braid 路径会保存每个 `PCR-…` 扩增子,并真实地对其进行酶切 + 连接,因此**History** 中记录的是一次真正的组装过程。
### Synthesis
这是一个基因合成编辑器,分为三个标签页(顶部的主菜单栏会始终显示,因此你可以直接切换到其他工具然后再切回来 — 切换时会关闭你正在离开的工具,而不是堆叠屏幕,并且每个工具都会保留其工作进度;离开时无需进行保存提示,**Clear** 是针对特定标签页的显式擦除操作):
- **DNA** — 这是一个支持滚动的线性编辑器,带有反向平行的链标记、feature 条纹和实时的氨基酸翻译,此外还有 feature 库侧边栏(插入 / 注释)以及感知 feature 的粘贴功能(复制一段质粒时,其包含的 features 也会一并保留)。就像主序列查看器一样,**单击 feature 条纹**可高亮整个 feature,**双击**(或在其中按 **Enter** 键)可编辑其标签 / 类型 / 颜色 / 备注,按 **R** 键可显示限制性内切酶切位点 — 然后点击**酶名称**可高亮其识别位点,对于 Type IIS 酶,还会显示间隔序列和交错切割位点 — 使用 **Shift/Ctrl+click** 或 **Shift+arrow** 键扩展选区,并使用 **Ctrl+←/→**键微调选区,**Ctrl+C** 可将所选内容连同其 features 按字节完全复制,按 **Ctrl+Z / Ctrl+Y** 可撤销/重做任何输入的碱基或编辑操作。按下 **−/+/0** 可将整个片段缩小为紧凑的 feature 区块概览(带有 bp 标尺)并再次放大 — 点击任意列即可直接跳转到该处进行 1:1 编辑。在高亮的 feature 上按下 **Delete** 键只会移除该注释(再按一次可删除高亮的碱基)。**Insert Site** 会将酶的识别序列标记为热粉色、带方向箭头的 feature — 在对话框中选择 **Forward ▶** 或 **Reverse ◀**(反向互补)。
- **Protein** — 输入或粘贴氨基酸,观察密码子根据你选择的表格自动填充;内置的 motif 库(His6、FLAG、HA、TEV、P2A、NLS、GS linker、+30)可插入预先着色的标签,并且粘贴/插入的 motif 支持**单击高亮,双击编辑**,并带有同样的 **Ctrl+Z / Ctrl+Y** 撤销功能。**Optimize → DNA** 会进行密码子优化(**Stops** 会自动追踪尾部的 `*` 延伸,并进行同样的 **Avoid sites** 清理),然后将 CDS 传递给 DNA 标签页。分页的**密码子表管理器**(也可在 Settings ▸ Codon Tables 中找到)可以从 NCBI 基因组(高表达基因或全基因组)、本地 CDS 文件(`cds_from_genomic.fna`/`.gz`,完全离线)、Kazusa 或 TSV 构建表格,并且 **Chart** 标签页可以将任何表格绘制成经典的遗传密码网格图。
- **Operon Design** — **Synthetic Operon Construction** 将密码子优化器和内置的纯 Python RBS 引擎变成了一个表达调控工作台:将蛋白质拖入轨道,为每个蛋白质设定一个目标相对 RBS 强度,**Assemble** 会*在真实的组装上下文中*逆向设计每个 RBS(表达驱动不足的基因会被标记出来),并将一个完全注释的操纵子放入 DNA 标签页中。**Native Operon Domestication** 可提取*天然*操纵子(来自画布 / 库 / NCBI),利用编码在引物中的同义突变治愈语法禁止的 Type IIS 位点(以及你列出的任何额外位点),并在保留 features 完整性的情况下将其克隆进来。
组装好一个片段后,点击 **Clone Fragment**,并选择一条路径:模块化语法
会将其作为 L0 区块交给 **Domesticator** 处理;**Gibson** 或 **Traditional**
会打开已预先粘贴好该片段的 **Constructor**。保存一个驯化后的部件会在一个对话框中完成三项操作 — 保存**克隆的质粒**、可订购的**线性片段**
(`FRAG-…`,带有其驯化引物和绘制好的 features 的扩增产物)以及 L0 部件落入的**零件库** — 每一个都可以放入你指定的任何
集合中。在你保存之前,画布上的任何内容都不会被更改。
想要直接合成 DNA 而不是扩增?**L0 Fragment** 会将组装好的序列包裹在正确的嵌套粘性末端中,以便直接进行基因合成 — 选择一个语法位置(Promoter / CDS / Terminator …)或输入自定义的 4-nt 粘性末端,
返回的片段将带有注释,可作为 gBlock 准备订购,因此只需一次
**Esp3I** (BsmBI) 酶切即可将其放入你的 **UPD / pUPD 入门载体**中,成为
一个标准的 L0 部件。它具有*双层感知能力*:当配置的入门载体的
外部受体粘性末端(例如 `CTCG`/`TGAG`)不同于部件的类别
粘性末端(例如 `AATG`/`GCTT`)时,类别粘性末端对会自动**嵌套在**外部粘性末端对内部 — 这是 GoldenBraid 所需的布局方式,使得部件通过
Esp3I 进入,随后通过 BsaI 释放。插入片段中的内部 Type IIS 位点会被
标记出来,以便你在下单前(通过 **Optimize**)清除它们。
### Parts
这是你的**零件库** — 即用于基于语法的模块化组装的 Level-0 构建块,
按不同的语法存放在独立的库中。多个库以集合的形式并列存在,因此酵母
工具包和植物工具包绝不会混淆。
### Constructor
这是组装工作台:支持传统克隆、Gibson、Golden Braid、MoClo 或你
自定义的语法,由一个 4 源部件选择器驱动。每一次组装,在每一个级别,
最终都会生成一个库条目(payload + 粘性末端 + 骨架),并携带每个
父级的所有 feature — 因此你可以从 Library 面板中将一个成品的 L3 构建物追溯至其 L0
部件。
### Simulator
用于 in-silico PCR 和琼脂糖凝胶电泳。选择模板,运行 PCR,然后保存
扩增子或将其发送至凝胶泳道。凝胶渲染基于真实的
Helling–Goodman–Boer 迁移曲线,支持 0.5–4% 的浓度;可将泳道并排堆叠,保存凝胶以供日后重新加载,或在笔记本中通过 `&` 引用它。
### Sequencing
使用真实的测序 reads 来验证构建物。放入 Plasmidsaurus 的 `.zip` 文件 — 或者
**通过项目代码直接从 Plasmidsaurus API 获取测序结果**(位于
Sequencing 界面上的按钮;可在 Settings ▸ Plasmidsaurus API 下设置凭据,或通过
`PLASMIDSAURUS_CLIENT_ID` / `PLASMIDSAURUS_CLIENT_SECRET` 环境变量设置)— 然后依次选择
run → sample → target,并点击 **Align**:read 会以彩色条形图的形式(蓝色
匹配 / 红色错配 / 灰色缺口)显示在质粒的线性图谱上,并进行就地命名,
根据每个跨度实际结合的多少进行着色,因此即使是单碱基错配也会
显示为红色。**点击 read 可将序列面板跳转到该确切位置。**
**Bulk auto-align** 可一次性匹配整个结果文件夹,其确认
窗口会显示每个 read 的真实 identity / mismatch / gap 计数。
**Verification Report** 会在可排序的表格中对每个构建物进行评级(✓ verified / ⚠ near / ~ partial
/ ✗ divergent);**Alignment Manager** 会列出每个存储的
比对结果(低于 100% 的真实 identity 绝不会被四舍五入为“100%”);并且 Library
会显示每个质粒的 **Seq** 和 **Kind**(`○` 质粒 · `/` 片段 · `≈`
扩增子 · `ρ` 蛋白质)徽章。
### Experiments
这是一个使用 markdown 编写的真正实验室笔记本:带有分屏编辑器,条目按
**projects** 分组(就像质粒按集合分组一样),并支持彩色的实时
交叉引用 — 输入 `@plasmid`、`!action` 或 `&gel`,按下 `Ctrl+G` 即可跳转到
源文件。支持附加图片 — 可在笔记本中内联预览 — 并通过
`F7` 键使用可以不断扩充的词典进行拼写检查。
### History
每个质粒都记得它是如何制作的 — Golden Braid、酶切/连接、
Gibson、PCR 或普通的编辑。**History** 界面会打开一个 **Protocol** — 这是一个
带编号的操作指南,像实验台上的操作一样从左向右阅读(*“assemble pProm +
pCDS_GFP + pTerm into pENTR_L1 → TU_GFP ✂ Esp3I”*)— 其下方是一个**谱系树**,你可以
随意深入探究。每一步都标有日期并显示其详细信息
(包括 PCR 使用的 **primers**);在不同分支中重复使用的骨架只会显示
一次,随后进行引用。该谱系信息也会随 CommercialSaaS 的 `.dna`
导入 / 导出功能一同保留。
### BABS
这是一个驻留在终端中、与你的质粒并排存在的聊天助手。**BABS** 是与
**本地 [Ollama](https://ollama.com) 模型**进行的直接对话 — 没有
云服务,无需 API 密钥,数据绝对不会离开你的机器 — 并且采用了 Babs 的聊天 UX:
流式输出带有 markdown 高亮的回答,推理过程 (``) 默认
隐藏,一个 **❤ context 生命条**可显示剩余的聊天记忆比例,以及
斜杠命令(`/help`、`/model`、`/system`、`/temp`、`/reset`、`/retry`、
`/agent`、`/autonomy`)。聊天
记录会保留一份长篇幅、可选择、可复制粘贴的历史记录,并且 **Ctrl+E**
可将整个对话导出为 markdown。共有三个标签页:
- **Chat** — 随意提问;回答会以流式传输的方式呈现,并带有上下文颜色。开启
**Corpus**(当存在 Babs 语料库时即可启用),回答将**建立在你的研究语料库的基础之上,并带有引用来源** — 这与 Babs 自身的 `rag_bot` 采用的混合检索机制相同,并直接流式传输到聊天中。关闭后,它就是一个普通的本地模型聊天。因此,你可以在 Paper scraper 中积累语料库,*并直接对其进行查询*,而无需离开 SpliceCraft。
- **Agent mode** — 开启 **Agent**(或输入 `/agent`),Babs 即可*亲自
驾驶 SpliceCraft*:她会调用与外部
`--agent` API 暴露的相同的脚本 endpoint — 读取已加载的质粒、查找 motif、设计引物、
运行酶切、执行克隆、管理质粒库,**甚至还能操控 OT-2** — 并且
**她所做的一切都会实时显示在应用程序中**。她始终知道你当前打开的是哪个
质粒,因此只需输入“domesticate this”或“what's in the construct”就能直接
执行。默认情况下,她在**每次执行写入操作前都会询问**(一键批准/拒绝);
`/autonomy auto` 允许她无人值守运行,`/autonomy readonly` 将她限制为
只读模式。毁灭性的全库擦除操作永远无法触及,并且**物理机器人的运动总是需要先询问** — 即使在 `auto` 模式下也是如此 — 因此绝对不会在无人值守的情况下发生任何硬件移动。她可以在一次
对话中完成**整个多步骤工作流** — 一批 endpoint 按顺序执行(在 `ask` 模式下,一个提示即可列出
所有的更改,因此你只需批准整个批次,而不必逐个点击)。庞大的
本地聊天模型在多步骤工具
循环中可能会比较慢,因此 **agent 任务会自动在快速且支持工具调用的模型上运行**
(默认为 qwen2.5:7b),而你选择的模型仍负责处理普通聊天 —
可以通过 `/agentmodel |chat|auto` 进行覆盖。此外,如果你在关闭 **Agent** 的情况下提出查找类问题,
Babs 会提醒你将其开启,以便她能够真正进行
搜索,而不是凭借记忆猜测。
- **Online lookups** — 在 Agent 模式下,Babs 还可以在网络上查找信息:
**FPbase**(荧光蛋白光谱)、**UniProt**(蛋白质)、**Europe
PMC**(论文)、**NCBI/GenBank**(序列记录)、**Wikipedia**、常规
**网络搜索**以及**专利** — 并且她能够**打开一个结果并阅读
页面本身的内容**(完整文本,而不仅仅是片段;HTML 会被剥离为纯文本,不执行
JavaScript,并会拒绝 PDF/图片)。在你勾选 *Settings →
“Allow Babs online database lookups”* 之前,此功能将保持关闭 — 并且即便如此,也仅发送你的
**查询字符串**(或你正在阅读的 URL),绝不会发送你的序列(本地
模型本身并没有连接互联网)。如果你在
Settings 中添加了 **Brave Search** / **PatentsView** 密钥,网络 + 专利
搜索将使用免费官方 API,否则将回退到免密钥的 Google/DuckDuckGo(尽力而为,
受速率限制)。
- **Model** — 将你的模型组织成**集合**,就像质粒一样:
创建/重命名/删除集合,**标记**行(按 Space 键)以在集合之间**移动**它们或批量将其**卸载**,并且在你尚未拉取模型之前,就可以将其归入某个集合。每个已安装的模型都会被自动归入
一个默认的“My Models”集合中,因此没有任何模型会被隐藏。**Search HuggingFace** 查找
GGUF 模型并将结果添加到集合中,然后通过实时进度条按需**拉取**,进度条会显示
**拉取的字节数和下载速度**(例如 `1.2 GB
/ 5.5 GB · 21% · 18.4 MB/s`),让你清楚地看到多 GB 大小的模型确实正在
下载。**Use** 可将模型设置为聊天模型。删除被标记的模型
将运行 `ollama rm`(需确认 — 这会释放磁盘空间,并且需要重新拉取才能恢复)。
所有操作均通过 Ollama 的本地 HTTP 运行 — 没有额外的依赖。
- **Paper scraper** — 启动 [Babs'](https://github.com/ATinyGreenCell/babs)
真正的后台论文搜索 — 包含 Europe PMC **外加 OpenAlex、CORE、CGSpace 和
DOAJ**(均为合法开放的 API)→ 重建索引 — 以扩展其知识语料库,
并带有实时自我纠正的**“ingest running” 指示器**
以及作业视图和日志跟踪。切换模型时会警告你(默认为 **No**)更改的 *embedding* 模型需要重新摄入语料库以保持匹配,并且它可以为你执行该重新嵌入操作。仅当 Babs 仓库存在时才会显示(`~/babs`,或
`$SPLICECRAFT_BABS_HOME`)。
- **Learn** — 通过对开放科学数据库(以及开放许可的网页)进行有针对性且抗漂移的抓取,扩展 Babs 在**特定主题**上的知识。给它一个主题和论文预算;它会从开放获取的搜索结果中提取种子,
对每个候选内容的相关性进行评分,并且仅从*强烈*相关的主题中追踪引用 — 因此它会在你的主题上不断深化,而不是偏离到相邻领域。每个主题都有其独立的语料库。实时状态
(kept / fetched / dropped / frontier) 以及带评分的“保留论文”表。需要
开启 Settings → “Allow Babs online database lookups”(仅发送主题查询字符串
— 绝不发送你的序列)。也可通过 agent API 进行驱动(`learn-start`
/ `learn-status` / `learn-results` / `learn-list`)。
- **Persistent memory** — 使用 **`/remember `** 告诉 Babs 要记住的内容,
它将在不同会话之间持久保存(加载到未来的每次对话中);
**`/memory`** 会显示它所保存的内容。以普通且可手动编辑的 markdown 形式存储在
Babs 语料库中,并与抓取的文档分开保存。
BABS 标签页是**持久化**的 — 切换到 SpliceCraft 的其他部分或关闭
它,当你返回时,你的对话、模型选择和 agent 模式仍然会保留在那里,并且在你于其他地方工作时,你启动的
模型下载仍会继续在后台运行。
当终端太窄而无法容纳所有
菜单时,工具栏会水平滚动,因此最右侧的 BABS 始终是可触达的。要求在本地运行
Ollama(`ollama serve`);通过 `$SPLICECRAFT_OLLAMA_HOST` 指向其他位置。初次接触?
运行 **`splicecraft babs-setup`**,通过一条命令即可克隆并引导启动 Babs 引擎(包含 venv、
deps、models),并且每当缺少 Ollama 或模型时,Chat 标签页都会显示带编号的首次运行
检查清单。
### File & Settings
**File** 可打开 / 获取 (NCBI) / 保存 / 导出 (GenBank · FASTA · GFF3 ·
环状**图谱图像**,支持 PNG/SVG 格式,支持单个质粒或整个集合的批量导出),可批量导入文件夹,并从备份中恢复;它编写的每一个
GenBank 文件都会带有
可追溯的 `Created by SpliceCraft v…` COMMENT。它还包含 **selection →
cloning hub** (**Alt+Shift+P**):高亮任何 DNA 并选择 **Traditional**、
**Golden Braid / MoClo** 或 **Gibson** — 每个选项都会预先加载选区
*及其 features*。Traditional 分支会引导你找到一对可用的
酶(标记出选区内部的位点,或者指出载体无法打开的位点),
设计带有切位点尾部的引物,保存已命名的扩增子,然后在
Simulate 中**进行酶切和凝胶纯化**,确保不会有任何引物填充碱基混入
克隆中。**Migrate Data** 可将你的整个设置(库、集合、部件、
引物、features、语法、密码子表、设置、笔记本和历史记录)打包成
一个经过校验和验证的 `.zip` 文件,以便在不同机器之间迁移,而 **Master Delete** 则是一个
三重确认的全擦除操作。**Settings** 汇集了所有的切换开关,以及
语法、入门载体、酶集合和密码子表编辑器的启动入口。
想要通过脚本完成所有这些操作?一个包含 150 多个 endpoint 的本地 JSON API
(`splicecraft --agent`,或者使用 `--headless` 开启带有
`/healthz` 就绪探针的无 UI / 无 pty 服务器)和仅使用标准库的 CLI(`splicecraft-cli`,
包括对每个 endpoint 的 `call` 直通传递)可以驱动每一个工作流。
`/tools` 会自动描述每个 endpoint 的完整请求 schema。请参阅
[`docs/agent-api.md`](docs/agent-api.md) 和 [`docs/cli.md`](docs/cli.md)。
完整功能参考:[`docs/features.md`](docs/features.md)。
SpliceCraft 还可以驱动 **Opentrons OT-2** 液体处理仪。**AUTOLAB**
工具栏项是一个包含五个面板的协议设计器。**Find Robots** 会扫描你的网络
(以及 USB)以寻找 OT-2,并在一个选择并连接的模态窗口中列出找到的设备 — 或者勾选
**Auto-connect to first**,即可一键搜索并连接。然后是一个交互式的
**Deck**,以俯视图的形式绘制出机器人的工作台 — 作为物理布局中相连的网格框,插槽
的纵横比与真实插槽的矩形比例相匹配,并且整个 deck 会根据你的终端进行缩放和居中,根据每个
插槽上放置的物品进行颜色填充(点击插槽以放置或清除其上的 labware),一个用于安排
有序步骤(transfer、distribute、consolidate、mix、delay、pause、comment)的 **Designer**,一个 **Labware** 标签页用于保存你通过简单
网格表单定义的自定义 labware 库,一个 **Library** 标签页用于将机器人与你的质粒库进行关联 —
将工作台上的孔板绑定到某个集合,使其孔位映射到你的质粒,然后
按身份进行挑选或重新排版,或者将 DNA 浓度归一化至目标
ng 或 ng/µL — 以及一个 **Calibrate** 标签页:读取校准状态(deck + 每个 pipette 的
偏移量 + tip 长度),回零桥架,设置每个插槽的 labware 偏移量,并运行
**position check**,将桥架移动到每个 labware 上方以验证对齐情况
(不进行吸液/排液 — 注射器永远不会启动)。将完整的设计保存为按集合组织的
命名协议,编译成 Opentrons 协议,在机器人的内置模拟器上进行分析,
并运行它(需要通过 Arm + 干净的分析 +
预检健康状态 + 校准 + 连接的 pipette + 门检查),并提供实时的暂停 /
恢复 / 中止控制。**实时遥测**面板会跟踪机器人的工作状态 — 包括
连接徽章、机器人的灯光 / 门 / 电机 / pipette 状态、带有预计完成时间 (ETA) 的运行**进度
条**,以及在出现问题时会立即弹出的**故障横幅** —
此外还有快捷的 **Lights On / Off** 和 **Disengage Motors** 按钮。构建过程可以直接记录
到 Experiments 笔记本中,并与它触及的质粒建立交叉链接。所有这些
都可以通过 agent API 进行脚本化操作 — `ot2-compile`(`transfers` 列表或多步骤
`steps` 序列)、`ot2-analyze`、`ot2-status`、`ot2-calibration`、受控的
`ot2-run` / `ot2-position-check` / `ot2-home`、`ot2-run-control`、`ot2-lights`、
`ot2-disengage`、`ot2-normalize`、`ot2-plate-map`,以及协议和自定义 labware
库的 CRUD endpoint。
## 文档
| 主题 | 位置 |
|-------------------------------|----------------------------------------------------------------------|
| 安装方法 | [`docs/install.md`](docs/install.md) |
| pUC19 的头五秒体验 | [`docs/getting-started.md`](docs/getting-started.md) |
| 完整功能列表 | [`docs/features.md`](docs/features.md) |
| 快捷键 + 菜单 | [`docs/keybindings.md`](docs/keybindings.md) |
| 数据安全 + 备份 | [`docs/data-safety.md`](docs/data-safety.md) |
| Agent API (HTTP) | [`docs/agent-api.md`](docs/agent-api.md) |
| CLI 命令行工具 | [`docs/cli.md`](docs/cli.md) |
| 架构 | [`docs/architecture.md`](docs/architecture.md) |
| 神圣不可侵犯的约束 | [`CLAUDE.md`](CLAUDE.md) |
| 贡献指南 | [`CONTRIBUTING.md`](CONTRIBUTING.md) |
| 安全策略 | [`SECURITY.md`](SECURITY.md) |
| v1.0.0 验收关卡 | [`V1_GATE.md`](V1_GATE.md) |
| 更新日志 | [`CHANGELOG.md`](CHANGELOG.md) |
| 发布检查清单 | [`RELEASE_CHECKLIST.md`](RELEASE_CHECKLIST.md) |
## 测试
```
python3 -m pytest -n auto -q # full suite (~5–6 min on 8 cores)
python3 -m pytest tests/test_dna_sanity.py # biology correctness only (< 2 s)
python3 -m pytest tests/test_perf_regression.py # perf gates (~3 s)
```
所有测试均在离线状态下针对合成的 `SeqRecord` 和 monkeypatched 数据
路径运行;`tests/conftest.py` 中自动应用的 `_protect_user_data` fixture
可确保没有任何测试会写入真实的用户文件。
## 维护
SpliceCraft 由一位每天运行真实
克隆工作流的生物工程师积极维护;通常在实验台上发现问题的
当周就会发布新版本。欢迎在
[github.com/Binomica-Labs/SpliceCraft/issues](https://github.com/Binomica-Labs/SpliceCraft/issues) 提交 Issue 和 PR。
在开启非简单的 PR 之前,请参阅 [`CONTRIBUTING.md`](CONTRIBUTING.md) — 其中
详细介绍了神圣不可侵犯的约束、测试节奏以及
安全敏感的代码区域。
## 许可证
MIT
标签:Blue Team, DNA序列编辑, Python, TUI, 克隆, 无后门, 生物信息学, 质粒图谱, 逆向工具