Binomica-Labs/SpliceCraft

GitHub: Binomica-Labs/SpliceCraft

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

Stars: 185 | Forks: 12

# SpliceCraft ![SpliceCraft Logo](https://static.pigsec.cn/wp-content/uploads/repos/cas/a7/a79b20ba841713c5867de4507c379004417df652260cd864b4acc6783c2a679f.png) [![PyPI](https://img.shields.io/pypi/v/splicecraft.svg)](https://pypi.org/project/splicecraft/) [![Python](https://img.shields.io/pypi/pyversions/splicecraft.svg)](https://pypi.org/project/splicecraft/) [![100% Python](https://img.shields.io/badge/100%25-Python-3776AB?logo=python&logoColor=white)](https://www.python.org/) [![TUI: Textual](https://img.shields.io/badge/TUI-Textual-5A45FF?logo=python&logoColor=white)](https://textual.textualize.io/) [![测试](https://static.pigsec.cn/wp-content/uploads/repos/cas/09/097271ca091990be630ef6043309cc48240faa054413384202036fa2efedb2d2.svg)](https://github.com/Binomica-Labs/SpliceCraft/actions/workflows/test.yml) [![许可证: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![状态: 稳定](https://img.shields.io/badge/status-stable-4EBF71.svg)](https://github.com/Binomica-Labs/SpliceCraft) ## 你的整个克隆工作流,尽在终端。 SpliceCraft 是一款质粒工作台,就在你日常的工作环境中运行。打开 图谱,编辑序列,设计引物,规划 Golden Braid 或 MoClo 组装,进行 BLAST 搜索,检查你的 Sanger 测序数据,并记录实验笔记本 — 所有操作均通过键盘在一个地方完成,无需浏览器标签页,也无需云账户。 环状和线状图谱在任何现代终端中都会渲染为清晰的 Unicode 盲文图形, 除非你主动操作,否则任何数据都不会离开你的机器 — 而且任何 质粒图谱都可以导出为出版级的 **PNG 或 SVG**(带有用于图表的透明背景选项), 支持一次性导出或直接从库中批量导出。 它由一位从事日常一线实验工作的生物工程师构建:Bug 反馈 来源于真实的克隆工作,修复亦是如此。 ![SpliceCraft screenshot](https://static.pigsec.cn/wp-content/uploads/repos/cas/c8/c882d4f750eeebefecdcae9101f1f447789ee0bff2b3d3d4ca8cbe86c0fba142.png) **为什么要尝试一下:** - **快速且本地化。** 没有 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, 克隆, 无后门, 生物信息学, 质粒图谱, 逆向工具