概览
MagicLock 保护什么、两种保护档位是什么,以及贯穿全部文档的几个核心概念。
MagicLock 是一个命令行工具 + Python SDK:加密你的 Python 源码与 AI 模型,用签名授权把它们锁起来,并且每次运行时都完全离线复核这份授权。安装一个包,跑一条命令,就能交付。
心智模型
MagicLock 的一切都归结为两个独立的问题:保护什么,以及保护得多强。
| 保护什么 | 产物 | 强度 | |
|---|---|---|---|
| 便捷档 | Python 源码(.py) | .pya——一个加了闸门的加密容器,import 系统能直接理解 | 较好——挡住随手查看源码;默认便携(加 --bind-machine 才能阻止跨机器拷贝);运行期间解密后的字节码会存在于内存中 |
| 编译强档 | Python 源码,编译后 | 原生 .so / .pyd,或一个独立的应用目录 | 更强——不出货任何明文 Python,授权闸门会自动插入每一个编译后的模块,而不是集中在一处可以被找到并 patch 掉的地方 |
| 模型/资源保护 | 模型、权重、任意二进制资源 | .enc——一个加密信封 | 两档都适用;明文只会短暂存在于内存中 |
你可以先用便捷档在几分钟内把保护跑起来,之后再切到编译强档——代码写法不用变:编译强档的闸门是自动插入的,不需要加装饰器,也不需要手动调用 bootstrap()。
核心概念
以下几个概念会在全部文档中反复出现:
- 授权(License)——签发给你账号的一份签名凭证:允许使用哪些能力、有效期到什么时候。全程无需你手动处理任何密钥文件。
- 保护级别——每条加密命令都会选定五档保护级别之一。默认是免密钥便携:产物在任何装了
magiclock的机器上都能透明解密——方便、可自由分发,但只是混淆级保护。--passphrase或--emit-key会加上一个便携密钥/口令;--bind-machine则把它绑定到设备(机器指纹锁)。 - 设备绑定(机器指纹锁)——加上
--bind-machine后,产物会绑定在加密它的那台已激活机器上。把加密文件拷到别的机器,那台机器解不开。再叠加--passphrase就是二因子锁。 - 激活——把一台机器纳入你账号名下的一次性步骤。它已经折叠进你第一次调用
protect/build的流程里,正常情况下你几乎不会手动执行它——见账号与激活。 - 能力(Capability)——授权可以授予的一项具名权限(代码保护、模型加密等)。运行时闸门与
open_model()各自检查自己需要的那项能力。 - 打包要联网,运行不用——加密时每次都会与授权服务器复核,因此需要网络连接。解密则永远不需要联网。
- 有效期——一个可选的、独立于你的授权本身的控制项,直接作用在加密产物上,让它在某个日期或时长之后拒绝解密。
60 秒快速上手
shell
pip install magiclock
# 首次运行:登录(打开浏览器)+ 激活这台机器,然后加密。
# 之后每次加密都是瞬时完成、无需交互。
magiclock protect app.py # -> app.pya
# 完全离线运行:永远不需要登录、不需要联网。
magiclock run app.pya想让 AI agent 帮你做?
如果你在用 Claude Code 之类的 AI coding agent,跑一次 magiclock skill——它会往项目里装一份 skill(.claude/skills/magiclock-protect/SKILL.md),把上面这套流程整个教给 agent,让它自己判断该用哪一档、帮你把代码保护好。
shell
magiclock skill