
它看起来很强,但我到底应该从哪里开始?
是先让它写代码,还是先把项目交给它分析?它会不会把原来的代码改坏?Skills 技能是什么?插件又是什么?不会编程的人,能不能用 Codex 做 App、网页和小工具?
这篇教程就用小白也能听懂的方式,带你从下载安装到第一次实战,再到 Skills、插件和进阶工作流,完整认识 Codex。
一、Codex 到底是什么?
你可以把 Codex 理解成一个:
能够阅读项目、编写代码、运行命令、修复问题,并协助你完成整个开发流程的 AI 编程搭档。
普通聊天机器人通常只是告诉你“代码应该怎么写”,而 Codex 可以直接进入你的项目目录,查看文件结构、修改代码、运行终端命令、查看报错,再继续修复问题。
它常见的能力包括:
阅读并解释陌生项目
生成页面、组件和功能
修复 Bug
调用和联调接口
重构重复代码
补充测试
生成 README 和项目文档
运行构建、测试和检查命令
帮你审查代码改动
OpenAI 官方把 Codex 定义为可以读取、编辑和运行代码的编程智能体。它既可以在 Codex 桌面 App 中使用,也可以通过命令行、IDE 扩展和网页使用。(OpenAI开发者)
二、Codex 适合哪些人?
Codex 并不只是给专业程序员使用。
它尤其适合下面几类人。
1. AI 编程小白
你不需要一开始就理解所有代码。
可以先让 Codex:
解释项目结构
告诉你项目怎么启动
说明每个文件有什么作用
帮你找到需要修改的位置
你可以边做项目,边学习代码。
2. 独立开发者
一个人开发 App、网站或小程序时,经常要同时处理:
产品需求
页面设计
前端开发
后端接口
Bug 修复
测试
发布文档
Codex 可以承担大量重复工作,让一个人也能完成过去需要多人协作的任务。
3. 产品、运营和设计人员
只要你能够把需求说清楚,就可以让 Codex根据需求生成原型页面、交互逻辑和简单工具。
重点不是你会不会手写代码,而是:
你能不能把目标、范围和验收标准表达清楚。
三、Codex 有哪些使用方式?
目前常见的使用方式主要有四种。
方式一:Codex 桌面 App
这是新手最容易理解的一种方式。
Codex App 支持 macOS 和 Windows,可以在一个界面中管理不同项目、不同对话任务,并查看代码改动、终端输出和 Git 状态。它还支持多个智能体线程、Worktree、Skills、插件和自动化功能。(OpenAI开发者)
适合:
编程小白
独立开发者
同时管理多个项目的人
希望用图形界面操作的人
方式二:Codex IDE 扩展
你可以把 Codex 安装到:
Visual Studio Code
Cursor
Windsurf
VS Code Insiders
JetBrains 系列编辑器
安装后,Codex 会出现在编辑器侧边栏中。它可以直接阅读当前打开的项目,并在编辑器中修改代码。(OpenAI开发者)
适合:
已经习惯 VS Code 或 Cursor 的人
希望边看代码边和 Codex 对话的人
不想频繁切换软件的人
方式三:Codex CLI 命令行
Codex CLI 是运行在终端里的 Codex。
它可以直接在当前目录读取、编辑并运行代码。(OpenAI开发者)
适合:
熟悉终端的开发者
需要快速执行开发任务的人
服务器或远程开发环境
自动化脚本场景
方式四:Codex 网页版
Codex Web 可以连接 GitHub 仓库,让任务在独立的云端环境中运行。
你可以让它:
阅读 GitHub 项目
修复 Bug
编写功能
检查代码
创建 Pull Request
Codex 云端任务可以在独立环境中运行,并支持并行处理多个任务。(OpenAI开发者)
四、安装 Codex 桌面 App
对于小白,建议优先从桌面 App 开始。
第一步:下载 Codex
进入 OpenAI 官方 Codex 页面,选择对应系统:
macOS Apple 芯片版
macOS Intel 芯片版
Windows 版
Mac 用户可以点击左上角苹果图标,选择“关于本机”,查看自己的 Mac 是 Apple 芯片还是 Intel 芯片。
Codex App 官方支持 macOS 和 Windows。(OpenAI开发者)
第二步:安装软件
Mac 安装方式
下载完成后:
打开下载的安装文件。
将 Codex 拖入“应用程序”文件夹。
在应用程序中打开 Codex。
第一次打开时,允许必要的系统权限。
Windows 安装方式
下载后直接运行安装程序即可。
Windows 也可以通过命令安装:
winget install Codex -s msstore这是 OpenAI 官方文档提供的 Windows 命令行安装方式。(OpenAI开发者)
第三步:登录账号
打开 Codex 后,可以选择:
使用 ChatGPT 账号登录
使用 OpenAI API Key 登录
对于普通用户,优先选择:
Continue with ChatGPT
Codex 已包含在多个 ChatGPT 套餐中,但不同套餐的使用额度可能不同。使用 API Key 登录时,部分功能可能不可用。(OpenAI Help Center)
第四步:添加项目
登录以后,Codex 会让你选择一个项目文件夹。
你可以选择:
已经存在的代码项目
刚刚创建的新文件夹
从 GitHub 克隆下来的项目
Stitch、Cursor 或其他工具生成的项目
新手第一次练习,建议新建一个单独文件夹,例如:
codex-practice不要第一次就让 Codex 操作最重要的正式项目。
五、安装 Codex CLI
喜欢终端操作的人,可以安装 Codex CLI。
macOS 或 Linux 安装
打开终端,执行:
curl -fsSL https://chatgpt.com/codex/install.sh | sh也可以使用 Homebrew:
brew install --cask codex或者使用 npm:
npm install -g @openai/codexWindows 安装
在 PowerShell 中执行:
powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"这些都是 OpenAI 官方目前提供的 Codex CLI 安装方式。(OpenAI开发者)
启动 Codex
安装完成后,进入你的项目目录:
cd 你的项目路径然后执行:
codex第一次启动时,系统会提示你登录 ChatGPT 账号或填写 API Key。登录完成后,Codex 就可以读取当前目录里的项目。(OpenAI开发者)
六、第一次使用前,需要准备什么?
1. 准备一个练习项目
可以是:
一个简单网页
一个 React 项目
一个 Python 小工具
一个 SwiftUI App
一个从 GitHub 下载的开源项目
新手不要一开始就选择几十万行代码的大型项目。
2. 确认项目可以正常运行
例如前端项目可以先尝试:
npm installnpm run devPython 项目可以先检查:
python --versioniOS 项目可以先用 Xcode 打开,确认原项目能够正常编译。
3. 先做一次 Git 备份
Codex 会修改代码,因此强烈建议你在操作之前保存一个检查点。
git initgit add .git commit -m "Codex 修改前备份"OpenAI 官方快速入门同样建议,在 Codex 执行任务前后创建 Git 检查点,方便出现问题时恢复。(OpenAI开发者)
4. 不要直接上传敏感信息
项目中如果包含以下内容,建议先删除或脱敏:
API Key
数据库密码
服务器密码
Apple 证书密码
支付密钥
用户隐私数据
.env中的敏感配置
可以准备一个:
.env.example只保留变量名称,不填写真实密钥。
七、第一次打开项目,应该怎么和 Codex 说?
很多新手一上来就输入:
帮我把这个项目做好。
这个要求太模糊,Codex 很难判断你真正想做什么。
第一次打开项目,不要急着让它修改代码。
先输入下面这段:
请先不要修改任何代码。请完整阅读当前项目结构,然后用中文告诉我:1. 这个项目是做什么的2. 使用了什么技术栈3. 项目应该如何启动4. 核心目录分别有什么作用5. 页面入口文件在哪里6. 数据是如何流转的7. 当前项目可能存在哪些问题8. 如果我是新手,下一步最适合先做什么请先分析和解释,暂时不要执行修改。这一步非常重要。
因为你需要先确认:
Codex 是否真正看懂了项目
它有没有找到正确入口
它理解的技术栈是否正确
它给出的修改方向是否合理
八、认识 Codex 的几个核心区域
不同版本的界面可能略有变化,但通常会包含下面几个核心部分。
1. 项目区域
这里用于管理不同项目。
例如:
上岸记账不内耗小卡宠物陪伴 App备忘录 App建议一个真实项目对应一个独立项目目录,不要把多个完全无关的项目混在同一个文件夹里。
2. 对话区域
这里是你输入需求的地方。
你可以要求 Codex:
分析项目
制定开发计划
修改代码
修复错误
运行测试
解释代码
生成文档
3. 文件改动区域
Codex 修改项目后,会显示:
修改了哪些文件
增加了哪些内容
删除了哪些内容
哪些代码发生了变化
不要只看 Codex 最后说“已经完成”。
一定要查看实际文件改动。
4. 终端区域
Codex 可以在终端中执行:
npm installnpm run devnpm run buildnpm testgit status终端区域可以帮助你判断:
项目能否启动
是否出现编译错误
测试是否通过
依赖是否安装成功
5. 审查区域
完成任务后,应重点查看:
修改内容是否符合需求
有没有改动无关文件
是否删除了原有功能
是否引入新的报错
是否需要手动调整
九、给 Codex 下达任务的万能公式
高质量需求可以按照下面的结构写:
背景 + 目标 + 修改范围 + 限制条件 + 输出方式 + 验收标准
1. 背景
告诉 Codex 当前是什么项目。
例如:
这是一个使用 SwiftUI 开发的 iOS 负债管理 App。2. 目标
告诉它你想完成什么。
我要在首页增加一个“本月已还金额”统计卡片。3. 修改范围
告诉它可以修改哪些部分。
只修改首页视图和首页对应的 ViewModel。4. 限制条件
告诉它不能做什么。
不要修改数据库结构。不要删除现有功能。保留当前绿色治愈系设计风格。5. 输出方式
告诉它先做方案还是直接执行。
先给出实现方案,等方案确认后再修改代码。6. 验收标准
告诉它做到什么程度才算完成。
统计卡片需要正确显示本月已还总额,数据变化后页面能够自动刷新,并保证项目可以正常编译。十、差需求和好需求的区别
差需求一
帮我做一个登录页面。Codex 不知道:
用什么技术栈
登录方式是什么
页面风格是什么
是否需要接口
是否保留旧登录方式
好需求一
这是一个 SwiftUI iOS 项目。请在现有登录页面增加“Sign in with Apple”按钮。要求:1. 保留当前邮箱登录入口2. 不修改现有邮箱登录逻辑3. 苹果登录按钮放在邮箱登录按钮下方4. 使用系统官方按钮样式5. 保持当前圆角和主色风格6. 先告诉我需要修改哪些文件7. 确认方案后再执行8. 完成后检查项目是否可以编译差需求二
这个页面不好看,改一下。好需求二
请优化首页视觉排版。目标是简约、治愈、减少金融焦虑。要求:1. 保留顶部总负债数据2. 将数据区域改为圆角卡片布局3. 主色使用低饱和绿色4. 增加留白,不要让页面过于拥挤5. 不修改数据逻辑6. 不删除任何现有功能7. 先给我页面结构方案,再执行修改差需求三
这个 Bug 修一下。好需求三
当前问题:在 iPhone SE 小屏幕设备上,订阅页面底部按钮被遮挡。复现步骤:1. 打开 App2. 进入“更多”3. 点击“升级 Pro”4. 在 iPhone SE 模拟器中查看页面请:1. 定位问题原因2. 检查是否与安全区域或固定高度有关3. 给出最小改动方案4. 不要修改订阅业务逻辑5. 修复后检查其他屏幕尺寸6. 告诉我修改了哪些文件十一、Codex 最常用的六类任务
技能一:看懂陌生项目
直接复制:
请阅读整个项目,暂时不要修改代码。请用适合新手理解的语言告诉我:1. 项目的主要功能2. 使用的技术栈3. 目录结构4. 核心入口文件5. 页面之间如何跳转6. 数据在哪里保存7. 网络请求在哪里处理8. 项目如何启动9. 当前最值得优先处理的问题技能二:新增功能
我要新增一个功能:用户可以创建还款提醒,并选择提醒日期和时间。请按照以下步骤执行:1. 先分析现有项目是否已有提醒模块2. 找到最适合接入的位置3. 给出实现方案4. 列出需要修改和新增的文件5. 不改变现有数据结构,除非确实必要6. 等我确认方案后再开始修改7. 修改完成后运行编译或测试8. 最后总结改动内容和验证方法技能三:修复 Bug
这是当前报错信息:【在这里粘贴完整报错】复现步骤:1. 打开某个页面2. 点击某个按钮3. 出现闪退或报错请先完成以下分析:1. 判断最可能的根因2. 找到对应文件和代码位置3. 给出最小风险修复方案4. 说明是否会影响其他功能确认后再修改代码。修改完成后,请运行相关测试,并告诉我验证结果。修 Bug 时,尽量提供:
完整报错日志
设备型号
系统版本
操作步骤
截图
最近修改过什么
不要只说一句“不能用”。
技能四:优化和重构代码
请检查当前模块中是否存在:1. 重复代码2. 过长函数3. 不清晰的命名4. 可以拆分的组件5. 潜在性能问题6. 容易出错的逻辑要求:- 保持现有功能不变- 不修改对外接口- 优先做小范围、高确定性的重构- 先给出重构方案- 每次只修改一个模块- 修改后运行测试- 说明每项改动的理由技能五:接口联调
请帮我接入以下接口:接口地址:请求方式:请求参数:返回数据示例:要求:1. 使用当前项目已有的网络请求封装2. 不重复创建网络层3. 增加 loading 状态4. 增加错误提示5. 处理空数据状态6. 将返回数据正确渲染到页面7. 保持当前页面设计风格8. 完成后提供测试方法技能六:生成文档和测试
请根据当前项目生成一份 README.md。必须包括:1. 项目介绍2. 主要功能3. 技术栈4. 目录结构5. 安装方法6. 启动方式7. 环境变量说明8. 构建和测试方法9. 常见问题10. 注意事项不要编造项目中不存在的功能。也可以要求:
请为当前模块补充单元测试。重点覆盖:1. 正常输入2. 空数据3. 错误数据4. 边界情况5. 网络失败6. 重复操作完成后运行测试,并总结测试结果。十二、什么是 Codex Skills?
Skills 可以理解成:
提前写好的一套标准工作流程,让 Codex 遇到特定任务时,自动按照固定步骤执行。
例如你经常让 Codex 做下面这件事:
检查项目版本号。
整理本次代码改动。
生成更新日志。
检查隐私政策链接。
生成 App Store 审核备注。
如果每次都重新写一大段提示词,会非常麻烦。
这时就可以把这套流程做成一个 Skill。
Codex Skills 可以包含:
使用说明
固定规则
操作步骤
参考资料
示例
脚本
其他资源文件
Skills 可以用于 Codex CLI、IDE 扩展和 Codex App。Codex 会先读取 Skill 的名称和描述,在确定任务需要它时,再加载完整的 SKILL.md 内容。(OpenAI开发者)
十三、Skills 和普通提示词有什么区别?
普通提示词通常只在当前对话中使用。
例如:
帮我检查这次版本发布有没有遗漏。但 Skill 可以保存一整套检查标准。
例如:
$ios-release-check调用后自动检查:
版本号
Build 号
隐私政策
服务条款
内购商品
截图尺寸
审核备注
测试账号
编译状态
适合做成 Skill 的任务通常有一个特点:
你已经重复执行过很多次,而且每次都要重复提醒 Codex 相同规则。
OpenAI 官方建议,每个 Skill 尽量只负责一个明确任务,先从两三个具体场景开始,定义清楚输入、输出和触发条件。(OpenAI开发者)
十四、如何创建一个 Codex Skill?
方法一:直接让 Codex 创建
你可以在 Codex 中输入:
请帮我创建一个名为 ios-release-check 的 Skill。这个 Skill 用于检查 iOS App 上架前的准备工作。每次调用时需要检查:1. Version 和 Build 是否正确2. App 是否可以正常编译3. 隐私政策链接是否可访问4. 服务条款链接是否可访问5. 订阅产品是否配置完整6. App Store 截图是否符合尺寸7. 审核备注是否说明登录方式8. 是否包含测试账号9. 是否存在测试数据或调试代码10. 最后输出一份发布检查报告要求:- 不要自动提交 App Store- 不要自动修改证书- 发现问题时先报告,不要直接删除文件- 输出结果分为:通过、警告、必须修复方法二:使用 Skill Creator
Codex 提供用于创建 Skill 的相关能力。你可以让它把已经成功执行过的一段工作流整理成可复用 Skill。
例如:
请使用 $skill-creator,把我们刚刚完成的 App Store 发布检查流程,整理成一个可以重复使用的 Skill。Skill 名称:ios-appstore-release-check请包含:- 使用场景- 触发条件- 输入要求- 执行步骤- 输出格式- 安全限制创建后的个人 Skills 可以放在:
~/.codex/skills项目专用 Skill 可以保存在项目中,并提交到代码仓库,方便团队成员共同使用。(OpenAI开发者)
十五、一个 Skill 的基础结构
一个简单 Skill 文件夹可以类似:
ios-release-check/├── SKILL.md├── references/│ └── appstore-checklist.md└── scripts/ └── verify-build.sh其中最重要的是:
SKILL.md示例:
---name: ios-release-checkdescription: 检查 iOS App 在提交 App Store 审核前是否准备完整。---# iOS 发布检查## 什么时候使用当用户提出以下需求时使用:- 检查 App 是否可以提交审核- 检查上架材料- 检查 App Store 发布准备- 生成发布前检查报告## 执行步骤1. 检查 Version 和 Build。2. 检查项目是否可以编译。3. 检查隐私政策和服务条款。4. 检查订阅商品配置。5. 检查截图和商店文案。6. 检查审核备注和测试账号。7. 输出检查报告。## 安全限制- 不自动上传构建。- 不自动提交审核。- 不删除证书。- 不修改正式环境密钥。- 发现问题先报告,再等待用户确认。## 输出格式### 必须修复### 建议优化### 已通过### 下一步操作十六、什么是 Codex 插件?
Skills 和插件并不是完全相同的概念。
可以简单理解为:
Skill:一套可复用的工作方法
插件:把 Skills、工具连接和配置打包成可安装内容
一个 Codex 插件可以包含:
Skills
App 或外部工具连接
MCP Server 配置
图标和说明资源
插件可以把一套完整能力分发给其他开发者安装。OpenAI 官方将 Skills 描述为可复用工作流的编写格式,而插件是可安装的分发单元。(OpenAI开发者)
例如:
Figma 插件能力
让 Codex:
读取设计稿
分析页面结构
生成前端代码
对照设计稿调整样式
GitHub 插件能力
让 Codex:
查看 Issue
阅读 Pull Request
审查代码
根据任务修改仓库
整理提交记录
Google Drive 插件能力
让 Codex读取项目文档、需求说明和产品资料,再结合代码执行开发任务。
十七、Skills 应该怎么用?
创建 Skill 后,可以明确调用:
请使用 $ios-release-check 检查当前项目。或者:
请使用 $bug-triage 分析下面的报错。也可以让 Codex根据任务自动判断是否使用某个 Skill。
Codex 支持通过 $skill-name 显式调用技能,也可以根据提示内容自动选择合适技能。(OpenAI开发者)
Skill 使用案例一:公众号文章生成
请使用 $wechat-article-writer,根据下面的主题生成一篇公众号文章。主题:Codex 新手教程要求:- 标题有吸引力- 小白可以看懂- 有清晰步骤- 包含案例- 包含可复制提示词- 结尾增加行动建议Skill 使用案例二:App UI 检查
请使用 $ios-ui-review,检查当前 SwiftUI 页面。重点检查:- 小屏幕适配- 深色模式- 安全区域- 动态字体- 按钮点击范围- 页面留白- 文案截断Skill 使用案例三:Bug 分析
请使用 $bug-triage,根据报错日志和复现步骤:1. 判断问题类型2. 缩小影响范围3. 找出最可能的根因4. 给出最小修复方案5. 给出验证步骤十八、Codex 推荐工作流
一个比较安全、高效的工作流是:
第一步:明确任务
写清楚:
做什么
为什么做
修改范围
不允许改什么
什么算完成
第二步:先让 Codex 分析
先分析,不要修改代码。第三步:让它给出方案
请列出实现步骤、涉及文件和潜在风险。第四步:确认方案
检查:
是否理解正确
有没有改动无关模块
是否存在更简单方案
是否需要先备份
第五步:小步执行
不要一次让它修改整个项目。
可以分成:
先修改数据模型。
再修改页面。
再接入接口。
最后补测试。
第六步:运行验证
要求 Codex:
请运行项目现有的构建、检查和测试命令。第七步:人工验收
你需要自己检查:
页面效果
功能逻辑
边界情况
数据正确性
原功能是否正常
第八步:提交 Git
git add .git commit -m "新增还款提醒功能"十九、Codex 常见的六个坑
坑一:需求太模糊
错误:
帮我优化一下。正确:
请只优化首页视觉布局,不修改数据逻辑。坑二:一次修改太多
一次同时要求它:
改首页
改登录
接支付
换数据库
加通知
修所有 Bug
一旦出错,很难定位原因。
坑三:不看改动直接接受
Codex 说“完成了”,不代表一定完全正确。
必须看:
Diff
修改文件
终端日志
编译结果
页面效果
坑四:不给完整报错
不要只说:
打不开。最好提供:
完整报错 + 复现步骤 + 设备信息 + 最近改动坑五:没有 Git 备份
没有备份时,一旦大量代码被误改,恢复会非常麻烦。
坑六:让 Codex 接触真实密钥
不要在提示词中直接粘贴:
API Key
App Store 密钥
数据库密码
支付密钥
服务器密码
二十、安全权限应该怎么设置?
Codex 需要读取文件、修改代码和运行命令,但并不代表应该无条件开放所有权限。
建议遵循以下原则:
普通任务
允许它:
读取当前项目
修改当前项目
运行项目相关命令
重要项目
先:
建立 Git 分支
创建备份
限制修改范围
要求修改前先给方案
高风险操作
遇到下面命令时要特别谨慎:
rm -rfsudogit reset --hardgit clean -fdDROP TABLE不理解的命令,不要随意批准。
可以直接问 Codex:
请先解释这个命令会做什么,可能删除哪些内容,是否可以恢复,暂时不要执行。二十一、小白 30 分钟快速上手路线
前 10 分钟:让 Codex 认识项目
请先解释当前项目,不要修改代码。重点了解:
项目做什么
怎么启动
核心文件在哪
第 10—15 分钟:让它总结启动方式
请告诉我启动这个项目需要执行哪些步骤和命令。第 15—20 分钟:修改一个小文案
请把首页标题从“Welcome”改成“欢迎回来”,不要修改其他内容。第 20—25 分钟:修改一个简单样式
请把主按钮圆角调整为 16,保留其他样式不变。第 25—30 分钟:检查和验证
请总结刚才修改了哪些文件,并运行项目现有的检查或构建命令。完成这 30 分钟的练习,你就能理解 Codex 最基本的协作方式。
二十二、三个可以直接复制的万能提示词
万能提示词一:接手陌生项目
你现在是这个项目的高级开发工程师。请先完整阅读项目,暂时不要修改代码。请用中文输出:1. 项目主要功能2. 技术栈3. 目录结构4. 核心入口5. 数据流6. 网络请求位置7. 数据存储方式8. 启动步骤9. 当前潜在问题10. 推荐的下一步开发计划所有结论必须基于当前项目文件,不要编造项目中不存在的功能。万能提示词二:新增功能
我要在当前项目中新增以下功能:【填写功能需求】执行规则:1. 先阅读相关代码2. 不要立即修改3. 先给出实现方案4. 列出涉及文件5. 说明潜在风险6. 优先复用现有结构7. 不修改无关模块8. 等我确认后再执行9. 修改完成后运行测试10. 最后总结修改内容和验证方式万能提示词三:安全修复 Bug
请分析下面的问题:报错信息:【粘贴完整报错】复现步骤:【填写操作步骤】运行环境:【系统、设备、版本】请按照以下流程处理:1. 定位最可能的根因2. 找出相关代码位置3. 判断影响范围4. 给出最小改动方案5. 不要顺便重构无关代码6. 修改前说明会改哪些文件7. 修改后运行测试或构建8. 检查是否影响旧功能9. 最后给出验证步骤结语
Codex 最有价值的地方,并不是“帮你写几段代码”。
而是它可以参与整个开发流程:
理解项目、制定方案、修改代码、运行命令、检查结果、修复问题、生成文档。
但真正高效的使用方式,并不是把项目完全丢给 Codex 后不再检查。
而是把它当成一个执行力很强的开发搭档:
你负责说清目标。
Codex 负责分析和执行。
你负责检查方向和结果。
重复流程再整理成 Skills。
常用 Skills 再打包成插件或团队工作流。
最后记住一句话:
先让 Codex 做小任务,再逐步扩大范围;先分析,再执行;先预览,再确认。
夜雨聆风