SDK 部分重新实现