總覽
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
# First run: signs you in (opens a browser) and activates this machine,
# then encrypts. Every encrypt after that is instant and non-interactive.
magiclock protect app.py # -> app.pya
# Runs fully offline: no login, no network, ever.
magiclock run app.pya想讓 AI agent 幫你做?
如果你在用 Claude Code 之類的 AI coding agent,跑一次 magiclock skill——它會在專案裡安裝一份 skill(.claude/skills/magiclock-protect/SKILL.md),把上面這套流程整個教給 agent,讓它自己判斷該用哪一檔、幫你把程式碼保護好。
shell
magiclock skill