我给我的 terminal 配了一个名叫 Nura 的 AI agent。她诊断了我破碎的埃塞俄比亚互联网。
Source: Dev.to
我构建的
我住在埃塞俄比亚的亚的斯亚贝巴。我的网络一天会多次中断。不是那种“慢速 YouTube”——你的 SSH 会话消失,git push 失败,你正盯着闪烁的光标的情况。
我厌倦了每次都手动运行 ping、traceroute 和 dig。于是我构建了一个名为 Nura 的 AI 代理。
Nura 24/7 监控你的网络。她在一个美观的全屏终端仪表盘中实时跟踪 ping、DNS、HTTP、抖动和丢包,并以 sparkline 图表展示。但关键是——她不仅仅是显示数字。
当出现问题时,Nura 会进行调查
按下 [i],Nura 会在你的真实网络上部署九个真实的诊断工具:
- 扩展 ping
- traceroute
- 使用 Google 和 Cloudflare DNS 的 dig
- 带完整时间拆分的 curl
- 路由表分析
她收集所有输出字节,交给 GitHub Copilot CLI 进行分析,并为你生成一份简明的英文报告:哪里出了问题、原因以及如何修复。
她不是一个仪表盘。她是你的 AI 网络代理。
技术栈
- Go – 终端的 Elm Architecture
- Lip Gloss – 类 CSS 的声明式样式,支持粗边框、颜色渐变、动画条
- GitHub Copilot CLI – Nura 的分析大脑
- 9 个系统工具 –
ping、traceroute、dig、curl、ip、nslookup等(由 Nura 执行) - 2,500+ 行 Go – 单一二进制文件,无运行时依赖
Nura 的功能
实时仪表盘(粗彩色边框)
| 面板 | 边框颜色 | 显示内容 |
|---|---|---|
| PING | ![green] | 延迟、最小/最大值、丢包率 |
| DNS | ![blue] | 域名解析速度 |
| HTTP | ![orange] | 完整请求时序 + 状态码 |
| HEALTH | ![magenta] | 复合 0‑100 分数,带双粗渐变进度条 |
| Sparkline 图表 | – | 随时间的趋势 |
| 活动流 | – | Nura 记录的每一个事件 |
AI 调查([i])
当你请求 Nura 进行调查时,她会执行以下步骤:
| 步骤 | 操作 |
|---|---|
| 1 | 运行扩展 ping(10 个数据包) |
| 2 | 跟踪网络路由 |
| 3 | 测试三个 DNS 解析器(系统、Google 8.8.8.8、Cloudflare 1.1.1.1) |
| 4 | 使用完整时序拆分测量 HTTP(DNS / Connect / TLS / TTFB / Total) |
| 5 | 检查路由表和网络接口 |
| 6 | 运行 nslookup 进行验证 |
| 7 | 将 所有 原始输出喂给 GitHub Copilot CLI |
| 8 | 编写结构化报告,包含诊断、发现、建议和严重程度 |
| 9 | 若 Copilot CLI 无法访问(因为网络中断),则回退到本地分析 |
调查界面会显示动画进度信息,例如:
- “Nura 正在追踪你的数据包路径…”
- “Nura 正在向 Copilot CLI 征求第二意见…”
…并伴随一个粗大的动画进度条。
多视图
- 仪表盘 –
d - 事件 –
e - 调查 –
i - 帮助 –
?
演示
- 仓库: (未提供链接)
- Asciinema 录制: (未提供链接)
演示展示:
- 带有循环颜色 ASCII 标志、粗边框面板、实时指标的仪表盘
- 介绍 Nura 的帮助视图
- 事件视图
- 调查视图 – 动画进度条、九个工具运行、AI 生成的报告
- 带有累计 sparkline 数据的最终仪表盘
Source: …
我的 GitHub Copilot CLI 体验
1. Copilot CLI 作为 Nura 的“大脑”(运行时)
这就是本次提交与众不同的地方。Copilot CLI 不仅是一个开发工具——它是应用程序内部的推理引擎。
当 Nura 运行她的九个诊断工具时,会收集数百行原始输出(ping 统计、traceroute 跳数、DNS 查询时间、HTTP 时延细分、路由表)。她把所有内容写成结构化提示并喂给 gh copilot explain。
Copilot CLI 返回人类能够真正理解的结果,例如:
“您在第 7 跳的 ISP 网关正在丢包。可以切换到 Cloudflare DNS 作为临时解决方案。”
关键在于:Copilot CLI 此时并没有生成代码,而是充当领域专家——一个能够阅读原始诊断输出并用普通英语解释的网络工程师。不会 traceroute 的开发者只需按 [i] 就能得到可操作的建议。
由于该工具是为不可靠网络设计的,Nura 还有一个优雅的回退方案。如果她无法连接 Copilot CLI(网络中断——正是你正在调查的原因),她会在本地对原始输出进行模式匹配分析,仍然生成报告。
2. Copilot CLI 作为我的开发伙伴(构建时)
我主要是 TypeScript 开发者,Go 对我来说是新领域。Copilot CLI 在以下方面帮助了我:
# 理解 Bubble Tea 使用的 Elm‑style 架构
gh copilot explain "Bubble Tea Model‑Update‑View pattern"
# 学习 Go 并发原语
gh copilot explain "sync.RWMutex for concurrent goroutine access"
# 解析命令行工具输出
gh copilot suggest -t shell "parse ping output for latency and packet loss"
# 使用 Lip Gloss 创建粗边框
gh copilot explain "lipgloss thick border custom Border struct"
3. 为什么这个提交脱颖而出
大多数提交使用 Copilot CLI 来构建某些东西。这是预期的行为。
NetPulse/Nura 将 Copilot CLI 用作运行时 AI 引擎——把编码助手转变为任何人都能使用的网络诊断专家。按一下按钮,即可得到诊断报告。这种集成方式改变了开发者工具的使用人群。
而且整个系统是因为我真的需要它而构建的。当你的网络不稳定时,你需要一个能够在本地仍然运行的 AI 助手。Nura 正好提供了这一点。
我们的网络每天会掉线 5 次,而你的生计依赖于持续推送代码,所以你必须自己打造工具。
技术栈
- Go
- GitHub Copilot CLI — Nura 的分析引擎
- 9 system tools —
ping、traceroute、dig、curl、ip、nslookup等
