anirban1809/zipcode
GitHub: anirban1809/zipcode
一个基于 Go 和 Bubble Tea 的终端 AI 编码助手,强调系统感知与安全约束执行,支持多 LLM 模型切换。
Stars: 0 | Forks: 0
# ZipCode
一个基于终端的 AI 助手界面,使用 Go 和 Bubble Tea 框架构建。ZipCode 提供了一个 TUI(终端用户界面),通过简洁直观的命令行界面与 AI 模型进行交互。
## 概述
ZipCode 是一个单二进制 Go 应用程序,用于模拟 AI 助手界面,具有以下特性:
- 带有命令建议的交互式终端 UI
- 多 AI 模型支持(模拟)
- 工作区管理
- 带有自动补全的命令系统
- 实时状态显示
- 适应终端尺寸的响应式布局
## 功能特性
- **终端优先设计**:使用 Bubble Tea 构建,提供流畅的 TUI 体验
- **命令系统**:带有自动补全和描述的斜杠命令
- **模型切换**:在不同 AI 模型(Claude、Gemini、GPT)之间切换
- **工作区感知**:显示当前工作目录
- **交互式菜单**:使用键盘导航命令和模型
- **模拟响应**:带有旋转动画的模拟 AI 响应
- **使用情况追踪**:显示会话统计信息(token、延迟、运行时间)
## 安装说明
### 前置条件
- Go 1.24.2 或更高版本
- Git(用于构建元数据)
### 从源码构建
```
# 克隆 repository
git clone
cd zipcode
# 构建 binary
make build
# 运行 application
./bin/zipcode
```
### 开发
```
# 在开发模式下运行并启用 race detector
make dev
# 运行 tests
make test
# 格式化 code
make fmt
# 运行 linter
make lint
# 清理 build artifacts
make clean
# 为多平台构建 release binaries
make dist
```
## 使用指南
### 启动应用程序
```
# 从 source 运行
make run
# 或运行已构建的 binary
./bin/zipcode
```
### 基本控制
- **Enter**:提交 prompt 或执行选定的命令
- **Shift+Enter**:在 prompt 中换行
- **↑/↓ 方向键**:导航菜单或滚动结果
- **Tab**:选择高亮的菜单项
- **Ctrl+C / q / Esc**:退出应用程序
### 命令列表
输入 `/` 查看可用命令。使用方向键导航,按 Enter 执行:
| 命令 | 描述 |
|---------|-------------|
| `/init` | 初始化当前工作区会话 |
| `/models` | 打开模型选择器并切换活动模型 |
| `/quit` | 退出应用程序 |
| `/help` | 显示帮助和可用命令用法 |
| `/status` | 显示当前会话和环境状态 |
| `/config` | 查看或调整模拟配置设置 |
| `/auth` | 管理模拟认证状态 |
| `/sync` | 运行模拟工作区同步操作 |
| `/deploy` | 启动模拟部署流程 |
| `/logs` | 显示最近的模拟执行日志 |
| `/doctor` | 运行模拟诊断检查 |
| `/clear` | 清除结果/输出区域 |
| `/version` | 显示应用程序版本详情 |
| `/theme` | 切换 UI 主题选项(模拟) |
### 可用模型
- claude-4-sonnet
- claude-4-opus
- gemini-2.0-flash
- gpt-4.1
## 架构
### 项目结构
```
zipcode/
├── main.go # Application entry point and TUI logic
├── go.mod # Go module definition
├── Makefile # Build and development targets
├── bin/ # Compiled binaries
├── dist/ # Release builds
└── src/ # Source code packages
├── ui/ # UI components and models
├── tools/ # Utility tools and integrations
└── bootstrap/ # Application initialization
```
### 关键组件
#### 主应用程序 (`main.go`)
- **RootModel**:管理布局和终端尺寸的主应用程序模型
- **model**:处理用户输入、命令和显示的核心 TUI 模型
- **命令系统**:斜杠命令解析和执行
- **菜单导航**:用于命令和模型选择的交互式菜单
#### UI 框架
- 使用 **Bubble Tea** 构建响应式 TUI
- 使用 **Lipgloss** 进行样式和布局设计
- 适应终端尺寸的响应式设计
#### 状态管理
- 工作区跟踪
- 当前模型选择
- 命令历史和建议
- 会话统计
## 依赖项
### 核心依赖
- `github.com/charmbracelet/bubbletea` - TUI 框架
- `github.com/charmbracelet/bubbles` - UI 组件(textinput、viewport)
- `github.com/charmbracelet/lipgloss` - 样式和布局
- `golang.org/x/term` - 终端处理
### 开发依赖
- `golangci-lint` - Go linting 和静态分析
## 开发
### 代码风格
项目遵循标准 Go 规范:
- 使用 `go fmt` 进行代码格式化
- 使用 `golangci-lint` 进行静态分析
- UI 和业务逻辑之间关注点分离清晰
### 添加新命令
1. 在 `initialModel()` 中将命令添加到 `commands` 切片
2. 在 `commandDesc` map 中添加描述
3. 在 `runCommand()` switch 语句中处理命令
### 自定义模型
修改 `initialModel()` 中的 `modelOptions` 切片以添加或删除 AI 模型。
## 构建元数据
Makefile 将构建元数据注入到二进制文件中:
- Version:Git tag 或 "dev"
- Commit:短 Git hash 或 "none"
- Build time:UTC 时间戳
此元数据显示在应用程序页脚中,可用于调试。
## 许可证
[在此处添加您的许可证信息]
## 贡献
[在此处添加贡献指南]
## 路线图
- [ ] 真实 AI 模型集成
- [ ] 配置文件支持
- [ ] 用于扩展的插件系统
- [ ] 持久化历史记录
- [ ] 主题自定义
- [ ] 多语言支持
标签:Bubble Tea, CLI, EVTX分析, Go语言, LLM客户端, TUI, WiFi技术, 人工智能, 人机交互, 代码生成, 单二进制文件, 多模型支持, 威胁情报, 安全合规, 实时状态, 工作区管理, 开发者工具, 效率工具, 日志审计, 架构约束, 渗透测试工具, 用户模式Hook绕过, 程序破解, 系统感知, 终端用户界面, 编程助手, 网络代理, 自动补全