22081795148543773340e0e8eda5f869da0ec52b
参考 aider 的实现,添加 Git 深度集成功能: - GitRepo: 封装 simple-git 的基础 Git 操作 - AutoCommitManager: 支持 immediate/batch/manual 三种自动提交模式 - MessageGenerator: 智能生成 conventional/simple/detailed 格式的 commit message - UndoManager: 安全的 undo 机制,仅允许撤销 AI 生成的提交 主要特性: - 文件变更后自动提交 (batch 模式默认 3 秒延迟) - 智能检测变更类型 (feat/fix/docs/test/chore 等) - 自动检测 scope (从文件路径推断) - 多重安全检查的 undo 机制 - 追踪 AI 生成的提交,防止误撤销用户提交 - 与 Hook 系统集成 添加 simple-git 依赖 编写完整测试用例 (26 个测试)
AI Terminal Assistant
由 kurihada 开发
一个运行在终端中的 AI 编程助手,基于 Claude API 构建。可以帮助您读取和写入文件、执行 bash 命令、搜索代码和文件、回答编程问题等。
✨ 特性
- 🚀 终端原生体验:直接在终端中与 AI 交互
- 🔧 强大的工具集:
- 文件读写操作
- Bash 命令执行
- 目录列表和文件搜索
- 代码分析和建议
- 🛡️ 安全第一:在执行可能有风险的命令前会请求确认
- 💬 两种模式:
- 交互模式:持续对话
- 单次提问模式:快速获取答案
- ⚙️ 可配置:支持多种 AI 模型和参数配置
📦 安装
前提条件
- Node.js 18+
- Anthropic API Key
全局安装
npm install -g .
本地开发
# 克隆项目
git clone <your-repo-url>
cd ai-terminal-assistant
# 安装依赖
npm install
# 构建项目
npm run build
# 链接到全局
npm link
🚀 快速开始
1. 初始化配置
ai-assist init
按照提示设置您的 Anthropic API Key。
2. 启动交互模式
ai-assist
3. 单次提问模式
ai-assist ask "如何读取当前目录下的所有文件?"
🎯 使用示例
文件操作
用户:读取 package.json 文件
AI:正在读取 package.json...
(显示文件内容)
用户:修改版本号为 1.0.1
AI:确认要修改 package.json 吗? (y/n)
代码分析
用户:帮我分析 src/index.ts 中的主要功能
AI:正在读取文件...
(分析代码结构,解释主要功能)
系统命令
用户:查看当前目录的文件列表
AI:正在执行 ls -la...
(显示目录内容)
用户:安装 lodash 包
AI:确认要执行 npm install lodash 吗? (y/n)
🔧 配置
环境变量
创建 .env 文件(参考 .env.example):
# Anthropic API Key (必需)
ANTHROPIC_API_KEY=sk-ant-xxxxx
# 可选配置
AI_MODEL=claude-sonnet-4-20250514
AI_MAX_TOKENS=4096
支持的 AI 模型
claude-sonnet-4-20250514(默认)claude-haiku-3-20251120- 其他 Claude 模型
📁 项目结构
ai-terminal-assistant/
├── src/
│ ├── core/ # 核心代理逻辑
│ ├── tools/ # 工具函数
│ │ ├── bash.ts # Bash 命令工具
│ │ ├── file.ts # 文件操作工具
│ │ └── index.ts # 工具导出
│ ├── ui/ # 用户界面
│ ├── utils/ # 工具函数
│ └── index.ts # 主入口文件
├── dist/ # 编译输出
├── package.json
├── tsconfig.json
└── README.md
🛠️ 开发
构建项目
npm run build
开发模式
npm run dev
代码检查
npm run lint
⚠️ 安全注意事项
- API Key 安全:不要将
.env文件提交到版本控制 - 命令确认:AI 在执行修改文件或运行系统命令前会请求确认
- 权限管理:确保 AI 助手只有必要的文件访问权限
📝 许可证
MIT License
🤝 贡献
欢迎提交 Issue 和 Pull Request!
🐛 问题反馈
如果您遇到任何问题,请:
- 检查 API Key 是否正确配置
- 确保有足够的 API 额度
- 查看终端错误信息
- 在 GitHub 上提交 Issue
📚 相关技术
- Claude API
- Node.js
- TypeScript
- Commander.js - CLI 框架
- Inquirer.js - 交互式命令行界面
提示:AI 助手会尽力帮助您,但请始终审查它建议的代码更改和命令执行,特别是在生产环境中。
Description
Languages
TypeScript
91.3%
Astro
7.6%
CSS
0.4%
Rust
0.3%
Tree-sitter Query
0.2%
Other
0.1%