重构了一下，主要是外部项目管理