重构代码，支持命令行启动