MSP++ 统一桥接实验 (MSP++ Unified Bridge Experiment)
2026-08-19 整理。实验 fork(D:\git program\MSP++):主张命令面不该手写,用宽松开源运行时 + 统一 bridge broker 替代 MSP 手写的 117 个 Swift POSIX 命令。主张
命令面不应该手写。 用现成宽松开源运行时(toybox coreutils + CPython + git)通过统一 bridge broker 支撑命令面;路径映射 + 输出 sanitize(映射层)与文件访问拦截(解释器层)负责隔离。MSP 保留的是 shell 语义层(parser/registry/WorkspaceFS/policy/audit),不是命令实现。
"解释器最后也是二进制"的澄清:重写解释器只在重运行时不可行,而重运行时本就不该重写——git/python 是几十万行状态机,借真运行时(libgit2 / 嵌入式 CPython)才对。上游 MSP 自己也是借(libgit2 绑定、CPython 嵌入)。
架构
MSP++ (命令面 = 真实运行时)
├─ 语义层(保留下游) : shell parser / command registry / WorkspaceFS / policy / audit
└─ 统一 bridge (MSPBridge): 一个 enable(.bridge) 注册三层
├─ coreutils → toybox 多调用二进制 + install_flat 符号链接 (映射层)
├─ git → 真实 git 二进制 (映射层)
└─ python → 嵌入式 CPython + VFS broker (拦截层)两层隔离(实测):ls /etc → No such file(映射层);python 读 /etc/passwd → FileNotFoundError、写 /tmp/pwn.txt → 落工作区虚拟 tmp(拦截层)。
关键坑/修复(相对上游)
- 上游
MSPCPythonSymbols.swift是 Darwin-only(#if canImport(Darwin)包住整个 dlopen),Linux 直接抛engineUnavailable。改#if canImport(Darwin) || canImport(Glibc)+import Glibc。这就是作者说的"移植中"那块。 - Windows clone 的 CRLF 污染 shebang:toybox 的
genconfig.sh变#!/bin/bash\r使 make 失败,构建前批量sed -i 's/\r$//'。 toybox --list不是合法旗标(报Unknown command --list);枚举 applet 用裸toybox输出按空白分割。- 危险命令黑名单:mount/reboot/su/nsenter/pivot_root 等 27 个不注册——真二进制会动宿主。
swift build --target X不链接可执行 product,要用swift build --product <name>。
上游基础设施(105a103 "portable external command infrastructure")
MSPExternalCommandPathMapper(路径/环境/参数/sanitize 单一来源)+ MSPInProcessExternalCommandRunner(进程内执行)+ MSPPythonModuleCommandPack。这套是 bridge 的基础。注意:新 runner 用了 MSPCommandContext.standardInputOverridesFileDescriptor,而 pi-shell 的 vendored MSPCore 落后没有该成员 → 编不过。python 模块不依赖 runner,所以 pi-shell 侧回滚了 runner 同步(不动 vendored MSPCore,遵守"MSP CORE 一点都不要动")。将来接 git/node bridge 需全量同步 vendored core——用户拍板。
与 pi-shell 的关系
MSP++ 是"命令面换真运行时"的实验验证;pi-shell 把 MSP 内核嵌进 Pi。两者共用同一套 broker/拦截基础设施;pi-shell 已落地拦截层(python),映射层(git/node 真二进制)是后续主线。
相关
- pi-shell 内核 → Model Shell Protocol 与 pi-shell 沙箱内核 (MSP & pi-shell Sandbox Kernel)
- 嵌入式 CPython 机制 → 嵌入式 CPython 沙箱拦截 (Embedded CPython Sandbox Interception)
本文归档于个人知识库 · 领域:CS & AI · 模块:04 Project_CS_AI/AI apps