Forge — 给 AI 编程助手造一个终端启动器

7 min
AI 总结
$
|
文章总结图
文章总结图

为什么要做 Forge

AI 编程助手(Claude Code、Codex、Cursor 等)已经成了我的日常工具,但每次启动的流程让人抓狂:

  1. cd ~/Projects/some-project
  2. 想一想这次用哪个助手
  3. 翻历史记录找启动命令和参数
  4. 敲完回车,发现路径打错了……

一天切换十几次项目,光这些机械操作就能吃掉大量时间。我需要的是:选个项目 → 选个工具 → Enter → 开干,三步搞定。

于是 Forge 诞生了。

它是什么

Forge 是一个面向 AI 编程助手的 终端启动器。核心流程只有三步:

选择项目目录 → 选择启动命令 → 自动执行

它会扫描你指定的根目录下所有一级子文件夹,通过模糊搜索快速定位项目,然后从预定义的命令列表中选择要启动的 AI 工具,最后自动切换到目标目录并执行命令。

整个过程不超过 3 秒。

技术选型

决策选择理由
语言Go单二进制分发、零依赖、启动极快
TUI 框架Charm 生态Bubble Tea + Bubbles + Lip Gloss,现代终端 UI 的标杆
配置格式JSON简单直观,手动编辑友好
发布GoReleaser + Homebrew一条命令即可安装

为什么选 Go

终端工具最忌讳的就是”需要安装运行时”。Python 要 venv,Node 要 npm,而 Go 编译出来就是一个二进制文件,brew install 就完事。

为什么选 Charm 生态

传统的终端 UI 库(如 promptuisurvey)功能够用但颜值一般。Charm 生态提供了完整的 TUI 方案:

  • Bubble Tea:Elm 架构的 TUI 框架,状态管理清晰
  • Bubbles:开箱即用的组件库(文本输入、列表选择、模糊搜索)
  • Lip Gloss:终端样式引擎,支持渐变、边框、对齐

这让 Forge 的界面可以做到:渐变色 ASCII Art Banner、圆角边框面板、模糊搜索实时过滤、左侧光标指示条……全是终端原生渲染,零图形依赖。

架构设计

整个项目结构遵循 Go 的标准布局:

forge/
├── cmd/forge/main.go    # 入口,一行代码
├── internal/
│   ├── app/             # CLI 编排:参数解析、流程控制
│   ├── config/          # JSON 配置读写(支持遗留配置迁移)
│   ├── runner/          # 命令执行(Unix 下用 exec 替换进程)
│   ├── scan/            # 目录扫描与过滤
│   └── ui/              # TUI 组件:Banner、模糊搜索、样式系统
└── .goreleaser.yaml     # 自动发布配置

几个值得一提的设计:

进程替换而非子进程

在 Unix 系统上,Forge 使用 syscall.Exec 直接替换当前进程,而不是 exec.Command 创建子进程。这意味着 AI 助手完全接管了终端——信号处理、stdin/stdout 全部透传,行为与直接运行完全一致。Windows 上降级为子进程模式。

智能目录扫描

扫描逻辑只看根目录的一级子文件夹,自动过滤掉 .gitnode_modulestargetdistvendor 等噪声目录,还兼容符号链接指向目录的情况。

ANSI 色号适配

样式系统全部使用 ANSI 0-15 色号而非硬编码 hex 值。这意味着 Forge 的配色会自动跟随你的终端主题——用 Catppuccin 就是 Catppuccin 风格,用 Dracula 就是 Dracula 风格,零配置即美观。

配置文件

配置存储在 ~/.config/forge/config.json,结构极简:

{
  "root": "/Users/you/Projects",
  "commands": [
    { "name": "Claude Code", "command": "claude", "args": [] },
    { "name": "Codex", "command": "codex", "args": [] }
  ],
  "projects": [
    { "name": "my-app", "path": "~/Projects/my-app" }
  ]
}
  • root:默认扫描的根目录
  • commands:可选择的启动命令列表,随意增删
  • projects:项目书签,跳过扫描直接定位

首次运行会引导设置 root,之后修改配置文件即可。

安装

# macOS(推荐)
brew install LittleBunVerse/tap/forge

# 从源码
go install github.com/LittleBunVerse/forge/cmd/forge@latest

装完之后直接敲 forge 就能用。

写在最后

Forge 解决的是一个很小的问题——但它是每天重复几十次的小问题。把这种高频低效的操作自动化,腾出来的注意力可以专注在真正重要的事情上。

项目完全开源(Apache 2.0),欢迎提 Issue 和 PR。

LittleBunVerseforge

Loading repository data...

-- -- --