總覽

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

接下來看什麼

  • 安裝——環境需求、可選的編譯強檔擴充套件、升級方式。
  • 加密程式碼——protect/run、有效期、五種保護等級。
  • 加密模型與資源——protect-modelbootstrap()open_model()
  • 編譯強檔——magiclock build、自動逐模組閘門、你能出貨什麼。
  • 帳號與啟用——零設定啟用、CI、離線行為、撤銷。
  • CLI 參考Python API 參考——每個指令、參數與函式簽章。
  • 安全模型——執行期閘門實際檢查了什麼,以及它誠實的能力邊界。