概述
安全脚本运行器是一个文档技能,教授如何使用 MGC Blackbox 实现脚本零明文暴露运行。
本技能实现:
- 脚本加密存储于本地 MGC
- 本地执行脚本(AI 仅获结果)
- 三种执行模式:MCP、API、WebUI
- 脚本可调用 MGC 内部凭据
- 脚本密封实现跨节点加密授权运行
本技能仅提供文档说明,但涉及本地脚本执行,必须由用户人工批准。
本技能实现的功能
阅读本文档后,AI 代理将了解如何:
- 在 MGC Blackbox 中安全存储脚本
- 通过 MCP(AI)、API(脚本)或 WebUI(人工)执行脚本
- 使用节点公钥密封脚本
- 构建零暴露工作流
前置条件
- 安装 MGC Blackbox:
pip install mgc-blackbox - 启动 MGC 服务:
mgc(运行于 http://127.0.0.1:57219) - MCP 工具可用:使用
mgc_save、mgc_get、mgc_seal - Token 文件:
~/.mgc/database/mgc_black_box/.mgc_token
> 重要提示:AI 代理请使用 MCP 工具。CLI 在某些环境可能有端口冲突。
零暴露执行
核心概念
脚本(明文)→ MGC 加密 → 加密存储
↓
本地执行(MGC)
↓
AI 仅获执行结果
AI 执行但永不见脚本明文。
三种执行模式
| 模式 | 接口 | 适用场景 |
|---|---|---|
| MCP | mgc_get | AI 代理 |
| REST API | /api/mgc/sensitive/get | 系统脚本 |
| WebUI | http://127.0.0.1:57218 | 人工操作 |
存储脚本
步骤 1:准备脚本
存储带执行元数据的脚本:
# 通过 MCP 工具
mgc_save(
info_type="script",
info_owner="my_script",
ext01="python", # 启动命令
ext02="script.py arg1", # 默认运行时参数
content="print('Hello from zero-exposure!')"
)
参数说明
| 参数 | 必填 | 说明 |
|---|---|---|
| info_type | 是 | 必须为 "script" |
| info_owner | 是 | 唯一脚本标识符 |
| ext01 | 是 | 启动命令(python、node 等) |
| ext02 | 否 | 默认运行时参数 |
| content | 是 | 脚本明文(存储时加密) |
执行脚本
模式 1:通过 MCP(AI)
# 通过 MCP 工具执行
result = mgc_get(
info_type="script",
info_owner="my_script",
action="run"
)
# AI 仅获执行结果
模式 2:通过 REST API(脚本)
curl -X POST http://127.0.0.1:57219/api/mgc/sensitive/get \
-H "Content-Type: application/json" \
-H "X-MGC-Token: $(cat ~/.mgc/database/mgc_black_box/.mgc_token)" \
-d '{
"info_type": "script",
"info_owner": "my_script",
"action": "run"
}'
模式 3:通过 WebUI(人工)
- 打开 WebUI:http://127.0.0.1:57218
- 进入 Get 页面
- 找到脚本
- 点击 "Run" 按钮
调用 MGC 凭据
脚本可使用内部 API 调用 MGC 凭据:
# 示例:从脚本调用 MGC 凭据
import urllib.request
import json
def get_mgc_credential(info_type, info_owner):
data = json.dumps({
"info_type": info_type,
"info_owner": info_owner
}).encode("utf-8")
req = urllib.request.Request(
"http://127.0.0.1:57219/api/mgc/sensitive/get",
data=data,
headers={
"Content-Type": "application/json",
"X-MGC-Token": open("/path/to/token").read()
},
method="POST"
)
with urllib.request.urlopen(req) as resp:
return json.loads(resp.read().decode())["data"]
> 注意:凭据本地获取,脚本本地执行,AI 不接触明文密钥和脚本即可执行。
脚本密封(高级)
实现跨节点委托时,可使用节点公钥密封脚本:
步骤 1:获取节点公钥
# 通过 MCP 工具
node_pub = mgc_get(
info_type="__NODE_PUB__",
info_owner="__NODE_PUB__"
)
步骤 2:密封脚本
# 通过 MCP 工具
sealed = mgc_seal(
info_type="script",
info_owner="my_script",
ext04=node_pub # 目标节点公钥(也可为当前节点本身公钥)
)
步骤 3:存储密封脚本
# 存储密封版本
mgc_save(
info_type="script",
info_owner="my_script_sealed",
ext01="python",
content=sealed
)
密封脚本已加密,仅目标节点可执行。
MCP 工具参考
mgc_save
参数:
{
"info_type": "script",
"info_owner": "唯一标识符",
"ext01": "启动命令 (python, node 等)",
"ext02": "默认运行时参数",
"content": "脚本明文"
}
mgc_get
参数:
{
"info_type": "script",
"info_owner": "脚本标识符",
"action": "get | run"
}
返回: 脚本内容或执行结果
mgc_seal
参数:
{
"info_type": "script",
"info_owner": "脚本标识符",
"ext04": "目标节点 RSA 公钥"
}
返回: 密封脚本(用目标节点密钥加密)
安全说明
- 零暴露:脚本本地执行,AI 仅获结果(除非用户主动暴露)
- 加密存储:所有脚本存储时加密
- 无明文泄露:AI 默认不会看到脚本内容
- 脚本密封:跨节点脚本保持加密
⚠️ 安全警告
> 请仔细阅读以下警告
- 不要执行不可信脚本:仅执行来源可信的脚本
- AI 无法审查脚本内容:AI 执行脚本时无法审查代码安全性
- 脚本可能访问本地凭据:脚本可调用 MGC 凭据,务必确认脚本用途
- 用户必须人工确认脚本来源:执行前必须确认脚本提供者和用途
- 用户必须承担执行风险:执行结果由用户自行负责
- 必须人工批准每一次执行:AI 不会自动执行,必须用户明确授权
权限边界
- 脚本只能访问本地环境
- 不会访问远程资源(除非脚本本身包含远程调用)
- 不会自动执行
- 不会自动调用凭据
- 所有敏感操作必须由用户触发
脚本来源审查清单
> 执行脚本前,用户必须确认以下事项:
- [ ] 确认脚本来源可信
- [ ] 确认脚本用途明确
- [ ] 确认脚本不会访问敏感数据(除非需要)
- [ ] 确认脚本不会执行危险命令(如格式化磁盘等)
- [ ] 用户必须人工批准执行
相关链接
- 主仓库:https://github.com/zkeviny/MGC-Blackbox
- 问题反馈:https://github.com/zkeviny/MGC-Blackbox/issues
- 联系方式:mirgincipher@outlook.com