diff --git a/src/chongming_cli/build.py b/src/chongming_cli/build.py index 9e937fa..1b43ff4 100644 --- a/src/chongming_cli/build.py +++ b/src/chongming_cli/build.py @@ -283,6 +283,11 @@ def _pack_mbank( encrypt=False(默认,加 --encrypt 才打开)时传 key=None:module-bank 存 **明文**字节码,模块元信息里 encrypted=False,加载端不需要密钥也能导入。 + 加密时密钥写两处:旁挂 ``<包>.key``(分发/测试口径)**和包内根部的 + ``packer_key``**(运行端口径)—— ``public/utils/launch.py`` 的 init_module_bank + 是用 ``PythonToSQLite.get_key()`` 取密钥的,它只读包内那份;只写旁挂文件的话 + 加密产物启动时会报"模块 'plugins' 的字节码是加密的,但没有提供解密密钥", + 插件全部加载失败、契约校验不过,网关直接起不来。 """ # 每次从空文件开始:旧包里的历史版本既让体积膨胀,也会留下重名/空的版本 Path(output_path).unlink(missing_ok=True) @@ -302,6 +307,8 @@ def _pack_mbank( packer.pack_directory(source_dir, package_name) packer.verify_package_structure() packer.delete_source_code(None) + if key: + packer.packer_key(key) packer.sign_version("my_key", key_id="ci-2026") # 给"当前这一版(已签名的)"起名,不派生工作版本 —— 加载端跟最新走就是它 packer.vfs.rename_snapshot(packer.vfs.snapshot_id, "v1.0.0")