我们构建了完全在终端中运行的 Voice Chat(真的)

发布: (2026年2月15日 GMT+8 09:18)
6 分钟阅读
原文: Dev.to

Source: Dev.to

这是对 GitHub Copilot CLI Challenge 的提交

我们构建的

VoiceSync — 因为谁需要 GUI,当你可以拥有黑客氛围时? 😎

我们构建了一个完全功能的语音聊天应用,完全在终端运行。它就像 Discord 和 Zoom 的结合体,拥有命令行美学。

亮点

  • 🎙️ 实时语音聊天,带有实时波形可视化(你真的可以 看到 声波)
  • 🔐 端到端加密(AES‑256‑GCM + Diffie‑Hellman,因为我们不是野蛮人)
  • 💬 文字聊天 + 桌面通知(让你知道朋友何时吐槽你)
  • 🌍 通过 ngrok 隧道在互联网工作
  • 🤖 内置 AI 助手,由 GitHub Copilot CLI 提供支持(是的,Copilot 里还有 Copilot)
  • 📊 音频质量指示器,实时显示延迟、比特率和数据包抖动
  • 👥 加入/离开通知,让你知道谁在潜伏

技术栈: Node.js、WebSockets、SoX(用于音频)、Blessed.js(用于终端 UI),以及大量令人担忧的能量饮料。

致谢我的团队: @muhammedameen_enesiibrah@thecodedaniel — 没有你们我根本无法调试那场音频回声噩梦 🙏

演示

截图

VoiceSync 截图 1

VoiceSync 截图 2

VoiceSync 截图 3

Source:

我使用 GitHub Copilot CLI 的体验

好的方面

使用 Copilot 前: “我该怎么再次加密 WebSocket 音频流?”

使用 Copilot 后:

gh copilot suggest "encrypt websocket audio stream nodejs"

……瞬间得到答案。

Copilot CLI 基本上是我们的第三只大脑。我们把它 集成 到应用内部,这样用户在使用 VoiceSync 时真的可以直接提问:

[You]: @copilot 这个应用的加密是怎么实现的?
[Copilot]: VoiceSync 使用 AES‑256‑GCM 加密并配合 Diffie‑Hellman 密钥交换…

元编程?是的。实用?绝对。

Copilot 为我们解决的真实场景

来自地狱的音频回声 Bug
我们花了三天时间让主持人听到自己的声音两遍。Copilot 建议检查服务器是否在向自己广播。只需一行代码即可修复。痛苦 = 结束。

gh copilot explain "websocket server broadcasting to sender"

SoX 跨平台噩梦
Windows 使用 -t waveaudio,macOS 使用 -d,Linux 使用……别的东西。Copilot 帮我们写了一个配置模块,能够检测平台并使用正确的参数。

gh copilot suggest "detect platform and use correct audio device args nodejs"

终端 UI 渲染问题
文字像被诅咒的 PowerPoint 一样在面板之间渗透。向 Copilot 询问 Blessed.js 的批量渲染后发现我们调用 screen.render() 过多。啪,一下子修好了。

“哦,糟糕”时刻

最酷的部分?我们在开发期间使用 Copilot 如此频繁,以至于我们想到:“如果用户也能这样做呢?”
于是我们将 @copilot 添加为 应用内命令。现在使用 VoiceSync 的任何人都可以在不离开终端的情况下提问。就像有一个随时待命的开发团队。

Productivity Boost

老实说,我们大概节省了 40–50 小时

  • 再也不用在 Stack Overflow 上切换标签页
  • 再也不用说“等一下,我去 Google 一下”
  • 再也不用独自破解晦涩的错误信息

Copilot CLI 成为了我们的调试伙伴、文档搜索引擎和橡皮鸭三位一体。

我们学到了什么

GitHub Copilot CLI 不仅用于编写代码——它还能用于理解代码。当我们遇到错误时,我们不会愤怒地去 Google,而是运行:

gh copilot explain "SyntaxError: Unexpected token in JSON"

它告诉我们我们正尝试将二进制音频帧解析为 JSON(这…是的,现在终于明白了)。

亲自尝试

# Install
git clone https://github.com/Boweii22/Copilot
cd Copilot
npm install

# Host a room
npm run host

# Join from another terminal/machine
npm run join -- localhost ABC123 YourName

进入全屏模式

退出全屏模式

完整说明请参阅 README。支持 Windows、macOS 和 Linux。需要 Node.js 和 SoX(我们记录了所有细节,因为我们不是怪物)。

最后的想法

我们在极短的时间内完成了这个项目,这期间伴随着大量令人不安的压力 😭😅,并且要兼顾睡眠不足。GitHub Copilot CLI 成了我们第四位团队成员——我们之前根本不知道自己需要它。

如果你曾经想过,“我真希望能向终端求助,” 现在可以实现了。

另外,如果你仍在使用 Discord 与朋友进行语音通话,那你就错过了更出色的终端体验。快来 @ 我们吧。 😤

构建使用的技术: 过量的甜食、GitHub Copilot CLI、友谊的力量以及 WebSockets 😅

P.S. — 是的,我们知道 P2P 会更酷。这是 v2.0 的计划。现在,请享受真正可用的自托管语音聊天。

团队

[@_boweii](https://dev.to/_boweii), [@muhammedameen_enesiibrah](https://dev.to/muhammedameen_enesiibrah), [@thecodedaniel](https://dev.to/thecodedaniel)
0 浏览
Back to Blog

相关文章

阅读更多 »