重构protobuf