一、我是谁,我卡在哪
个人背景:音视频开发行业,C++ 后端开发工程师;日常负责实时音视频 SDK、流媒体服务开发,做协议栈设计、编码调试、项目文档编写,需要完成方案设计、编码实现、单元测试、接口文档、使用手册整套产出。
当前痛点:想要自研一套轻量 WebRTC 推拉流套件 FlashRTC,不依赖庞大 libwebrtc 库,只保留 ICE/DTLS‑SRTP/RTP 核心协议,适配 WHIP/WHEP 标准协议。
传统模式:需要自己完成技术调研、架构文档撰写、模块拆分、C++ 代码编写、调试排错、输出 README 与 API 文档。完整从 0‑1 开发,调研 + 方案 + 编码 + 文档,预估需要 7‑10 天;过程中协议细节多,手写大量样板代码、文档,反复核对协议标准,工作量巨大。
二、我用 TraeWork 怎么解决的
模式(可多选):
Work
Code ☐ Design
第一步:新建项目,切换到Work 模式,输入完整产品需求,让 TraeWork 完成 FlashRTC 项目背景、技术选型、整体架构、模块拆解,输出 spec.md、tasks.md 项目规格文档,明确协议栈范围、依赖库、目标平台、接口规范。
第二步:切换到Code 模式,基于 Work 输出的架构文档,驱动 Agent 生成 FlashRTC 核心 C++ 协议栈代码,包含 ICE 协商、DTLS‑SRTP 加密、RTP 收发、WHIP/WHEP 协议适配模块;同步生成 CMake 编译脚本。
第三步:在 Code 模式下执行编译校验,针对编译报错、协议逻辑漏洞持续迭代修复代码,补充单元测试用例。
第四步:切回Work 模式,基于已经完成的代码,生成 README 开发文档、API 接口说明、快速上手手册、FAQ 故障排查文档,完成整套交付资料。
三、提效前后对比
| 环节 | 以前(纯人工) | 现在(TraeWork 协作) |
|---|---|---|
| 技术调研 + 架构方案输出 | 2 天 | 2 小时 |
| 核心协议栈代码开发调试 | 5‑7 天 | 1 天半 |
| 编译脚本、单元测试编写 | 1 天 | 3 小时 |
| 项目文档、API 手册、使用说明 | 1‑2 天 | 2 小时 |
| 整体周期 | 7‑10 天 | 2‑3 天 |
以前:完整从零开发整套 FlashRTC 套件需要 7‑10 天;
现在:依靠 TraeWork 完成方案、编码、文档,仅需 2‑3 天,我只负责关键协议逻辑审核、重点 bug 校验。
四、成果展示
产物 1:FlashRTC SDK 源码(C++)
产物 2:FlashRTC SDK应用实例——FlashDesk(迷你远程桌面)
产物 3:FlashDesk(迷你远程桌面)使用说明
五、实践经验总结
- 先 Work 后 Code,不要直接上手写代码。先在 Work 模式把架构、约束、模块边界全部写清楚,输出 spec 文档,再丢给 Code 模式开发,否则 AI 容易随意增加多余依赖,引入 libwebrtc 等不需要的组件,后期返工量大。
- 实时音视频协议细节严谨,AI 生成协议代码后,重点核对 ICE、DTLS‑SRTP、RTP 关键逻辑,不能完全信任输出,重点流程需要人工复核。
- 大项目分批迭代,不要一次性要求完成全部代码;优先完成核心协议模块,验证编译跑通后,再追加 WHIP/WHEP 业务层、文档等后续工作,避免单次任务上下文过载导致质量下降。
六、实操对话
对话 1(Work 模式架构设计)
链接:【分析文件夹代码 - TraeWork】 TraeWork - AI 办公平台 | 自动生成PPT/数据分析/深度调研/文档撰写
指令:“请分析文件夹中的代码”
修改点:该项目是一个功能完整的 WebRTC WHIP 推流客户端,实现了从音视频采集到 WebRTC 加密传输的完整链路。代码结构清晰,模块划分合理,但存在 SRTP IV 生成错误 这一关键问题,可能导致推流数据无法被正常播放,建议优先修复。
对话 2(Code 模式生成核心代码)
链接:【检查WhepClient类.264音频保存 - TraeWork】 TraeWork - AI 办公平台 | 自动生成PPT/数据分析/深度调研/文档撰写
指令:“现在请全面检查所有代码,使代码更简洁高效,不要使用auto之类的新语法,能让其使用vs2013编译”
修改点:移除的现代 C++ 特性:
auto关键字 → 全部替换为显式类型(共 50+ 处)constexpr→ 替换为static const
修改的文件:
| 文件 | 修改内容 |
|---|---|
FlashRTC/whep.cpp |
HttpResponse、std::vector<uint8_t> 等显式类型 |
FlashRTC/whip.cpp |
HttpResponse、std::vector<uint8_t>、SrtpSession& 等 |
FlashRTC/sdp.cpp |
std::vector<std::string>、std::map<...>::iterator、std::map<...>::const_iterator |
FlashRTC/rtp.cpp |
std::vector<std::pair<...>>、std::function<void()> 等 |
FlashRTC/http_client.cpp |
std::map<...>::const_iterator |
FlashRTC/rtp.h |
constexpr → static const |
WhepClient.cpp |
std::function<void()>、videoQueObj、audioQueObj、pcmQueObj |
WhipClient.cpp |
std::chrono::steady_clock::time_point、encVideoObj&、encAudioObj& |
main.cpp |
std::chrono::steady_clock::time_point、long long |


