开发过程跟踪器:本地服务管理(使用 CLI + TUI)

发布: (2026年2月16日 GMT+8 09:10)
7 分钟阅读
原文: Dev.to

Source: Dev.to

请提供您希望翻译的正文内容(除代码块和 URL 之外的文字),我将为您翻译成简体中文并保持原有的 Markdown 格式。

我构建的内容

我构建了 Dev Process Tracker (devpt),一个拥有 CLI 和 TUI 工作流的本地开发服务管理器。

它针对一种常见的实际情况而构建:多个本地服务、混合的启动方式,以及难以快速诊断的故障。

使用 devpt,我可以:

  • 注册已知服务(add
  • 执行生命周期操作(startstoprestart
  • 检查运行时状态(lsstatus
  • 查看日志(logs
  • 切换到交互式工作流(devpt

Managed vs. Discovered(为何两者都重要)

  • Managed – 你在 devpt 中显式定义的服务(名称、工作目录、命令、预期端口)
  • Discovered – 当前本地 TCP 端口上正在监听的任何进程,即使它是由 devpt 之外启动的

示例

  1. 你在 devpt 中注册一个前端,使用 npm run dev 并监听 3100 端口。
  2. 另一个终端中仍有一个旧的 npm run dev 进程在 3100 端口运行。

devpt ls --details 会显示两者,从而让你快速发现重复并停止陈旧的进程。

为什么不直接使用 PM2、Docker Compose 或 make 目标?

这些工具很有用,但它们解决的是问题的不同部分。

工具优势devpt 填补的空白
PM2对受管 Node 进程的管理非常出色缺乏对混合技术栈的本地进程广泛发现
Docker Compose对容器化服务的支持极佳许多团队运行混合本地栈(主机 + 容器)
make targets便捷的快捷方式不是运行时清单或诊断界面

devpt 专注于 跨栈本地运行时可视化 + 生命周期控制 + 崩溃诊断,并将这些功能统一在一个界面中。

演示

仓库:


一天的工作流程

开始一天:已经在运行的内容?

./devpt ls --details

devpt ls --details

这会为你提供一个关于当前机器上所有监听服务的单一清单视图,既包括你显式使用 devpt 注册的服务,也包括在其他地方启动后被遗忘的进程。

启动本地堆栈

./devpt add frontend ./sandbox/servers/node-basic "npm run dev" 3100
./devpt add api ./sandbox/servers/python-basic "python3 server.py" 3300
./devpt start frontend
./devpt start api

Bring up your local stack

在这里,devpt 管理的正是开发者每天实际运行的同类命令,而不是简化或合成的示例。

调查问题并恢复

./devpt status frontend
./devpt logs frontend --lines 60
./devpt restart frontend
./devpt stop api

Investigate

当出现故障时,控制和诊断都集中在同一个地方。你可以查看崩溃状态、检查最近的日志,并在不切换工具或终端的情况下采取行动。

切换到交互模式

./devpt

TUI

相同的工作流也可以在 TUI 中使用,使其在一天中保持运行并在本地环境变化时进行交互变得十分实用。

Source:

我使用 GitHub Copilot CLI 的经验

我把 Copilot CLI 当作高速草稿和推理伙伴使用,然后手动约束其行为以符合项目需求。

示例 1:命令验证

提示

gh copilot suggest "add command validation for managed service commands and include tests for blocked patterns"

对最终产品的影响

  • 加速了初始验证/测试脚手架的搭建。
  • 最终逻辑被手动收紧为项目安全的模式,并提供更清晰的 CLI 错误信息。

示例 2:崩溃诊断设计

提示

gh copilot suggest "show crash reason and recent log tail in status command for crashed services"

对最终产品的影响

  • 帮助塑造了 CRASH DETAILS 部分的设计。
  • 最终输出和启发式规则被编辑,以降低噪声、提升信号。

示例 3:未奏效的情况

早期的一个建议推动了比实际需要更大范围的 TUI 重构。我拒绝了该方向,保持了 CLI‑first 的设计。

为什么放弃完整的状态重写

交互回归的风险对本次挑战的范围来说过高,所以我将重点放在:

  • 聚焦的 UI 行为改进
  • 不进行破坏性的状态模型重写

这种权衡让工具保持稳定的同时仍提升了可用性。

对我的工作流的整体影响

  • 更快的实现草稿
  • 更早发现边缘案例
  • 在编写测试时实现更紧密的反馈循环
  • 最终行为仍然经过人工审查

详细的提示层面证据记录于:

适用人群

devpt 适用于运行混合本地栈(Node、Python、Go、容器)的开发者,他们需要可靠的运行时可视化和快速的故障诊断。

它回答的核心问题: 实际在运行什么,我接下来应该怎么做?

0 浏览
Back to Blog

相关文章

阅读更多 »