diff --git a/Git工作流程.md b/Git工作流程.md deleted file mode 100644 index d4ed4ce..0000000 --- a/Git工作流程.md +++ /dev/null @@ -1,246 +0,0 @@ -# Git 工作流程说明 - -## 🎯 仓库信息 - -- **Gitea 地址**: https://gitea.nosuchip.de -- **仓库 URL**: https://gitea.nosuchip.de/zack/ai-shell -- **用户名**: zack -- **仓库名**: ai-shell - -## 📋 当前状态 - -✅ **已完成**: -- 初始化 Git 仓库 -- 配置 .gitignore 文件 -- 创建远程仓库 (通过 API) -- 推送初始代码到 main 分支 -- 设置上游分支跟踪 - -## 🔧 基本 Git 操作 - -### 1. 查看状态 -```bash -git status # 查看工作区状态 -git log --oneline # 查看提交历史 -git remote -v # 查看远程仓库 -``` - -### 2. 日常开发流程 -```bash -# 1. 修改代码 -vim ai_shell/main.py - -# 2. 查看更改 -git diff - -# 3. 添加更改 -git add . # 添加所有更改 -git add ai_shell/main.py # 添加特定文件 - -# 4. 提交更改 -git commit -m "feat: add new feature" - -# 5. 推送到远程 -git push # 推送到当前分支 -git push origin main # 明确推送到 main 分支 -``` - -### 3. 版本发布流程 -```bash -# 1. 更新版本号 -python scripts/bump_version.py patch # 0.1.0 -> 0.1.1 -python scripts/bump_version.py minor # 0.1.0 -> 0.2.0 -python scripts/bump_version.py major # 0.1.0 -> 1.0.0 - -# 2. 提交版本更新 -git add ai_shell/__init__.py pyproject.toml -git commit -m "bump: version to v0.1.1" - -# 3. 创建标签 -git tag -a v0.1.1 -m "Release version 0.1.1" - -# 4. 推送代码和标签 -git push -git push --tags -``` - -## 🌿 分支管理 - -### 创建功能分支 -```bash -# 创建并切换到新分支 -git checkout -b feature/new-command-parser - -# 开发完成后合并 -git checkout main -git merge feature/new-command-parser - -# 删除功能分支 -git branch -d feature/new-command-parser -``` - -### 创建发布分支 -```bash -# 创建发布分支 -git checkout -b release/v0.2.0 - -# 在发布分支上进行最后的调整 -# 完成后合并到 main -git checkout main -git merge release/v0.2.0 -git tag -a v0.2.0 -m "Release version 0.2.0" -``` - -## 🔄 同步和更新 - -### 从远程拉取更新 -```bash -git pull # 拉取并合并 -git fetch # 仅拉取,不合并 -git pull --rebase # 使用 rebase 方式拉取 -``` - -### 解决冲突 -```bash -# 如果出现冲突 -git status # 查看冲突文件 -# 手动编辑冲突文件 -git add . # 标记冲突已解决 -git commit # 完成合并 -``` - -## 📝 提交信息规范 - -使用 [Conventional Commits](https://www.conventionalcommits.org/) 规范: - -```bash -# 功能添加 -git commit -m "feat: add configuration validation" - -# Bug 修复 -git commit -m "fix: resolve cache directory issue" - -# 文档更新 -git commit -m "docs: update installation guide" - -# 代码重构 -git commit -m "refactor: improve config loading logic" - -# 性能优化 -git commit -m "perf: optimize command generation speed" - -# 测试相关 -git commit -m "test: add unit tests for config module" - -# 构建相关 -git commit -m "build: update dependencies" - -# CI/CD 相关 -git commit -m "ci: add automated testing workflow" -``` - -## 🛡️ 安全配置 - -### 1. 凭据管理 -```bash -# 查看当前远程 URL(包含凭据) -git remote get-url origin - -# 如果需要更改凭据 -git remote set-url origin https://new_username:new_password@gitea.nosuchip.de/zack/ai-shell.git -``` - -### 2. 敏感文件保护 -- ✅ `.env` 文件已在 `.gitignore` 中排除 -- ✅ 构建产物 (`dist/`, `build/`) 已排除 -- ✅ 缓存文件已排除 - -### 3. 检查敏感信息 -```bash -# 检查是否意外提交了敏感文件 -git log --name-only | grep -E "\.(env|key|pem)$" - -# 如果意外提交了敏感文件,需要从历史中移除 -git filter-branch --force --index-filter \ - 'git rm --cached --ignore-unmatch .env' \ - --prune-empty --tag-name-filter cat -- --all -``` - -## 🚀 自动化工作流 - -### 1. 快速升级和推送 -创建脚本 `scripts/release.sh`: -```bash -#!/bin/bash -# 快速发布脚本 - -VERSION_TYPE=${1:-patch} - -echo "🔄 升级版本 ($VERSION_TYPE)..." -python scripts/bump_version.py $VERSION_TYPE - -echo "📦 重新构建..." -uv build - -echo "🔧 重新安装..." -uv tool install . --force - -echo "📝 提交更改..." -git add . -git commit -m "bump: version to $(grep '__version__' ai_shell/__init__.py | cut -d'"' -f2)" - -echo "🚀 推送到远程..." -git push - -echo "✅ 发布完成!" -``` - -### 2. 使用方法 -```bash -chmod +x scripts/release.sh - -# 发布补丁版本 -./scripts/release.sh patch - -# 发布次版本 -./scripts/release.sh minor - -# 发布主版本 -./scripts/release.sh major -``` - -## 🔍 常用命令速查 - -```bash -# 状态查看 -git status # 工作区状态 -git log --oneline -10 # 最近10次提交 -git diff # 查看未暂存的更改 -git diff --cached # 查看已暂存的更改 - -# 分支操作 -git branch # 查看本地分支 -git branch -r # 查看远程分支 -git branch -a # 查看所有分支 - -# 远程操作 -git remote -v # 查看远程仓库 -git fetch --all # 拉取所有远程分支 -git push --all # 推送所有分支 - -# 标签操作 -git tag # 查看所有标签 -git tag -l "v*" # 查看版本标签 -git push --tags # 推送所有标签 - -# 撤销操作 -git checkout -- file.txt # 撤销文件更改 -git reset HEAD file.txt # 取消暂存 -git reset --hard HEAD~1 # 撤销最后一次提交 -``` - ---- - -🎉 **仓库地址**: https://gitea.nosuchip.de/zack/ai-shell - -现在您可以在浏览器中访问仓库,查看代码和文档! diff --git a/README.md b/README.md index 3b35aee..9f5e170 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,827 @@ # AI Shell -AI-powered shell command generator using DeepSeek V3 model via OpenAI-compatible API. +🤖 **基于 DeepSeek V3 的 AI 智能 Shell 命令生成器** -## Features +将自然语言描述转换为可执行的 shell 命令,支持中英文输入,带有交互式执行确认功能。 -- Generate shell commands from natural language descriptions -- Interactive execution confirmation (Enter to execute, n to cancel) -- Supports multiple languages for prompts and responses -- Uses DeepSeek V3 model for high-quality command generation -- User-friendly interface with default execution on Enter +[![版本](https://img.shields.io/badge/版本-0.1.0-blue.svg)](https://gitea.nosuchip.de/zack/ai-shell/releases) +[![Python](https://img.shields.io/badge/python-3.12+-green.svg)](https://python.org) +[![许可证](https://img.shields.io/badge/许可证-MIT-blue.svg)](LICENSE) -## Usage +## ✨ 主要特性 + +- 🧠 **AI 驱动**: 使用 DeepSeek V3 进行智能命令生成 +- 🌐 **双语支持**: 支持中文和英文描述 +- 🛡️ **安全执行**: 执行前交互式确认 +- ⚙️ **灵活配置**: 支持环境变量和 .env 文件配置 +- 📦 **简易安装**: 通过 `uv tool install` 全局安装 +- 🔄 **自动升级**: 内置版本管理和升级工具 +- 🚀 **快速设置**: 预配置国内镜像源,下载更快 + +## 🚀 快速开始 + +### 安装 ```bash -uv run python ai.py "your command description here" +# 克隆仓库 +git clone https://gitea.nosuchip.de/zack/ai-shell.git +cd ai-shell + +# 配置 API 设置 +cp .env.example .env +vim .env # 填入您的 API 配置 + +# 全局安装 +uv tool install . ``` -## Setup +### 基本使用 -1. Install dependencies: +```bash +# 英文示例 +ai "list files" +ai "show disk usage" +ai "find Python files" +ai "create a backup of config.txt" + +# 中文示例 +ai "显示当前目录" +ai "查找包含 python 的文件" +ai "删除临时文件" +ai "压缩文件夹" + +# 查看配置 +ai --config + +# 显示版本 +ai --version +``` + +## 📋 目录 + +- [安装说明](#-安装说明) +- [配置管理](#-配置管理) +- [使用示例](#-使用示例) +- [开发指南](#-开发指南) +- [升级维护](#-升级维护) +- [Git 工作流](#-git-工作流) +- [故障排除](#-故障排除) +- [贡献指南](#-贡献指南) + +## 📦 安装说明 + +### 系统要求 + +- **Python 3.12+** +- **UV 包管理器** ([安装指南](https://docs.astral.sh/uv/getting-started/installation/)) + +### 方法一:从源码安装(推荐) + +```bash +# 1. 克隆仓库 +git clone https://gitea.nosuchip.de/zack/ai-shell.git +cd ai-shell + +# 2. 配置 API 设置 +cp .env.example .env +vim .env # 填入您的 API 配置 + +# 3. 全局安装 +uv tool install . + +# 4. 验证安装 +ai --version +ai --config +``` + +### 方法二:快速安装 + +```bash +# 直接从仓库安装 +uv tool install git+https://gitea.nosuchip.de/zack/ai-shell.git + +# 安装后配置 +mkdir -p ~/.ai-shell +echo 'AI_SHELL_API_KEY=your_api_key' > ~/.ai-shell/.env +echo 'AI_SHELL_BASE_URL=your_api_url' >> ~/.ai-shell/.env +echo 'AI_SHELL_MODEL=your_model' >> ~/.ai-shell/.env +``` + +### 验证安装 + +```bash +# 检查 ai 命令是否可用 +which ai + +# 测试基本功能 +ai --version +ai --config +ai "echo hello world" +``` + +### 卸载 + +```bash +uv tool uninstall ai-shell +``` + +## ⚙️ 配置管理 + +### 配置文件结构 + +``` +ai-shell/ +├── .env # 实际配置文件(已在 .gitignore 中排除) +├── .env.example # 配置模板文件(会被提交到代码库) +└── ai_shell/config.py # 配置加载逻辑 +``` + +### 配置项说明 + +| 配置项 | 环境变量 | 说明 | 默认值 | +|--------|----------|------|--------| +| API Key | `AI_SHELL_API_KEY` | API 密钥(必填) | 无 | +| Base URL | `AI_SHELL_BASE_URL` | API 基础 URL | `https://api.openai.com/v1/` | +| Model | `AI_SHELL_MODEL` | 模型名称 | `gpt-3.5-turbo` | +| Timeout | `AI_SHELL_TIMEOUT` | 请求超时时间(秒) | `30` | +| Max Retries | `AI_SHELL_MAX_RETRIES` | 最大重试次数 | `3` | + +### 配置方法 + +#### 方法一:使用 .env 文件(推荐) + +```bash +# 复制配置模板 +cp .env.example .env + +# 编辑配置文件 +vim .env +``` + +`.env` 文件内容示例: +```bash +# AI Shell 配置文件 +AI_SHELL_API_KEY=f8370a60-fe0a-455f-9167-411d476123d2 +AI_SHELL_BASE_URL=https://ark.cn-beijing.volces.com/api/v3/ +AI_SHELL_MODEL=deepseek-v3-250324 + +# 可选配置 +AI_SHELL_TIMEOUT=30 +AI_SHELL_MAX_RETRIES=3 +``` + +#### 方法二:使用环境变量 + +```bash +# 临时设置 +export AI_SHELL_API_KEY="your_api_key" +export AI_SHELL_BASE_URL="your_api_url" +export AI_SHELL_MODEL="your_model" + +# 永久设置(添加到 shell 配置文件) +echo 'export AI_SHELL_API_KEY="your_api_key"' >> ~/.zshrc +echo 'export AI_SHELL_BASE_URL="your_api_url"' >> ~/.zshrc +echo 'export AI_SHELL_MODEL="your_model"' >> ~/.zshrc +``` + +### 配置优先级 + +配置系统按以下优先级加载配置: + +1. **环境变量**(最高优先级) +2. **当前目录的 .env 文件** +3. **包目录的 .env 文件** +4. **~/.ai-shell/.env 文件** +5. **默认值**(最低优先级) + +### 查看当前配置 + +```bash +ai --config +``` + +输出示例: +``` +AI Shell Configuration: + Model: deepseek-v3-250324 + Base URL: https://ark.cn-beijing.volces.com/api/v3/ + API Key: f8370a60...123d2 + Timeout: 30s + Max Retries: 3 + +Configuration Status: ✅ Valid + +Configuration Sources (in priority order): + 1. Environment variables + 2. .env file in current directory + 3. .env file in package directory + 4. ~/.ai-shell/.env file + 5. Default values +``` + +## 💡 使用示例 + +### 基础命令 + +```bash +# 文件操作 +ai "列出当前目录的所有文件" +ai "显示文件详细信息" +ai "查找名称包含 config 的文件" +ai "删除所有 .tmp 文件" +ai "复制 file.txt 到 backup 目录" + +# 系统信息 +ai "显示磁盘使用情况" +ai "查看内存使用情况" +ai "显示当前运行的进程" +ai "查看系统负载" + +# 网络操作 +ai "测试网络连接到 google.com" +ai "显示网络接口信息" +ai "查看端口 8080 是否被占用" + +# 文本处理 +ai "在文件中搜索包含 error 的行" +ai "统计文件行数" +ai "替换文件中的文本" +``` + +### 英文示例 + +```bash +ai "list all files" +ai "show disk usage" +ai "find Python files" +ai "create a backup directory" +ai "compress folder to zip" +ai "extract tar.gz file" +ai "check system uptime" +ai "monitor CPU usage" +``` + +### 高级用法 + +```bash +# 复杂操作 +ai "找到最大的 10 个文件" +ai "批量重命名图片文件" +ai "创建定时任务每天备份数据" +ai "监控日志文件的变化" + +# 开发相关 +ai "启动 Python HTTP 服务器" +ai "查看 Git 提交历史" +ai "安装 Python 包" +ai "运行单元测试" +``` + +### 交互式确认 + +每次生成命令后,系统会显示: + +``` +(AI Thinking): 用户想要列出当前目录的所有文件,我应该使用 ls 命令... + +(AI Answer): ls -la + +Execute? [Y/n]: +``` + +- 按 **Enter** 或输入 **y** 执行命令 +- 输入 **n** 取消执行 + +### 配置和帮助 + +```bash +# 查看版本信息 +ai --version + +# 查看配置状态 +ai --config + +# 查看帮助信息 +ai --help +``` + +## 🛠️ 开发指南 + +### 项目结构 + +``` +ai-shell/ +├── .env # 敏感配置(不提交) +├── .env.example # 配置模板 +├── .gitignore # Git 忽略文件 +├── pyproject.toml # 项目配置 +├── uv.toml # UV 配置 +├── uv.lock # 依赖锁定 +├── Makefile # 开发工具 +├── README.md # 项目说明 +├── quick_upgrade.sh # 快速升级脚本 +├── ai_shell/ # 主包 +│ ├── __init__.py # 包初始化 +│ ├── main.py # 主程序入口 +│ ├── config.py # 配置管理 +│ ├── agent.py # AI 代理 +│ └── models.py # 数据模型 +└── scripts/ # 工具脚本 + ├── bump_version.py # 版本管理 + └── release.sh # 发布脚本 +``` + +### 开发环境设置 + +```bash +# 克隆仓库 +git clone https://gitea.nosuchip.de/zack/ai-shell.git +cd ai-shell + +# 安装开发依赖 +uv sync + +# 配置环境 +cp .env.example .env +vim .env + +# 运行开发版本 +uv run python -m ai_shell.main "test command" +``` + +### 可用的开发命令 + +```bash +# 查看所有可用命令 +make help + +# 查看项目状态 +make status + +# 构建包 +make build + +# 安装到全局 +make install + +# 运行测试 +make test + +# 清理构建文件 +make clean +``` + +### 代码修改流程 + +1. **修改代码** ```bash - uv sync + vim ai_shell/main.py + vim ai_shell/config.py + # 等等... ``` -2. Run the tool: +2. **测试更改** ```bash - uv run python ai.py "list all files in current directory" - uv run python ai.py "show disk usage" - uv run python ai.py "find all Python files" + # 使用开发版本测试 + uv run python -m ai_shell.main "test command" + + # 或者重新安装测试 + make install + ai "test command" ``` -## Configuration +3. **更新版本** + ```bash + # 补丁版本 (0.1.0 -> 0.1.1) + make bump-patch -- **Model**: DeepSeek V3 (deepseek-v3-250324) -- **API**: Volces (ByteDance) OpenAI-compatible interface -- **Base URL**: https://ark.cn-beijing.volces.com/api/v3/ + # 次版本 (0.1.0 -> 0.2.0) + make bump-minor -## Requirements + # 主版本 (0.1.0 -> 1.0.0) + make bump-major + ``` -- Python 3.12+ -- UV package manager with configured Chinese mirrors for fast downloads +4. **重新安装** + ```bash + make install + ``` + +5. **验证更改** + ```bash + ai --version + ai --config + ai "test functionality" + ``` + +## 🔄 升级维护 + +### 快速升级 + +```bash +# 方法一:使用快速升级脚本 +./quick_upgrade.sh + +# 方法二:使用 Makefile +make upgrade + +# 方法三:手动升级 +uv build && uv tool install . --force +``` + +### 版本管理 + +```bash +# 升级版本号 +python scripts/bump_version.py patch # 0.1.0 -> 0.1.1 (bug修复) +python scripts/bump_version.py minor # 0.1.0 -> 0.2.0 (新功能) +python scripts/bump_version.py major # 0.1.0 -> 1.0.0 (重大变更) + +# 或使用 Makefile +make bump-patch +make bump-minor +make bump-major +``` + +### 自动化发布 + +```bash +# 发布补丁版本(自动:版本升级 + 构建 + 提交 + 推送 + 标签) +make release-patch + +# 发布次版本 +make release-minor + +# 发布主版本 +make release-major + +# 或使用脚本 +./scripts/release.sh patch +./scripts/release.sh minor +./scripts/release.sh major +``` + +### 完整的升级流程 + +1. **修改代码** +2. **更新版本**: `make bump-patch` +3. **重新安装**: `make install` +4. **验证功能**: `ai --version && ai "test"` +5. **提交推送**: `make push` + +### 配置迁移 + +升级后配置会自动保留,如需迁移到新环境: + +```bash +# 复制配置文件 +cp .env /path/to/new/environment/ + +# 或设置环境变量 +export AI_SHELL_API_KEY="your_key" +export AI_SHELL_BASE_URL="your_url" +export AI_SHELL_MODEL="your_model" +``` + +### 验证升级 + +```bash +# 检查版本 +ai --version + +# 检查配置 +ai --config + +# 测试功能 +ai "echo test" + +# 查看安装状态 +uv tool list | grep ai-shell +``` + +## 🌿 Git 工作流 + +### 仓库信息 + +- **仓库地址**: https://gitea.nosuchip.de/zack/ai-shell +- **克隆地址**: `git clone https://gitea.nosuchip.de/zack/ai-shell.git` +- **Web 界面**: https://gitea.nosuchip.de/zack/ai-shell +- **发布页面**: https://gitea.nosuchip.de/zack/ai-shell/releases + +### 基本 Git 操作 + +```bash +# 查看状态 +git status # 查看工作区状态 +git log --oneline # 查看提交历史 +git remote -v # 查看远程仓库 + +# 日常开发流程 +vim ai_shell/main.py # 修改代码 +git diff # 查看更改 +git add . # 添加所有更改 +git commit -m "feat: add new feature" # 提交更改 +git push # 推送到远程 + +# 同步更新 +git pull # 拉取并合并 +git fetch # 仅拉取,不合并 +``` + +### 提交信息规范 + +使用 [Conventional Commits](https://www.conventionalcommits.org/) 规范: + +```bash +# 功能添加 +git commit -m "feat: add configuration validation" + +# Bug 修复 +git commit -m "fix: resolve cache directory issue" + +# 文档更新 +git commit -m "docs: update installation guide" + +# 代码重构 +git commit -m "refactor: improve config loading logic" + +# 性能优化 +git commit -m "perf: optimize command generation speed" + +# 版本升级 +git commit -m "bump: version to v0.1.1" +``` + +### 分支管理 + +```bash +# 创建功能分支 +git checkout -b feature/new-command-parser + +# 开发完成后合并 +git checkout main +git merge feature/new-command-parser + +# 删除功能分支 +git branch -d feature/new-command-parser +``` + +### 版本发布流程 + +```bash +# 1. 更新版本号 +python scripts/bump_version.py patch + +# 2. 提交版本更新 +git add ai_shell/__init__.py pyproject.toml +git commit -m "bump: version to v0.1.1" + +# 3. 创建标签 +git tag -a v0.1.1 -m "Release version 0.1.1" + +# 4. 推送代码和标签 +git push +git push --tags +``` + +### 使用 Makefile 简化操作 + +```bash +# 查看项目状态 +make status + +# 交互式提交和推送 +make push + +# 自动化发布(包含版本升级、构建、提交、推送、标签) +make release-patch +``` + +## 🔧 故障排除 + +### 常见问题 + +#### 1. ai 命令不存在 + +```bash +# 检查 PATH +echo $PATH | grep ~/.local/bin + +# 如果没有,添加到 PATH +export PATH="$HOME/.local/bin:$PATH" +echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc + +# 重新加载 shell +source ~/.zshrc +``` + +#### 2. API 密钥未配置 + +```bash +# 检查配置 +ai --config + +# 设置密钥 +echo 'AI_SHELL_API_KEY=your_key' >> .env + +# 或使用环境变量 +export AI_SHELL_API_KEY="your_key" +``` + +#### 3. 配置文件未找到 + +```bash +# 创建配置文件 +cp .env.example .env +vim .env + +# 或创建全局配置 +mkdir -p ~/.ai-shell +cp .env ~/.ai-shell/.env +``` + +#### 4. 权限问题 + +```bash +# 检查文件权限 +ls -la .env + +# 修复权限 +chmod 600 .env +``` + +#### 5. 网络连接问题 + +```bash +# 测试 API 连接 +curl -H "Authorization: Bearer your_api_key" \ + -H "Content-Type: application/json" \ + your_api_url/models + +# 检查代理设置 +echo $HTTP_PROXY +echo $HTTPS_PROXY +``` + +#### 6. uv 缓存问题 + +如果遇到 `~` 目录被创建的问题: + +```bash +# 删除错误的缓存目录 +rm -rf ./~ + +# 检查 uv.toml 配置 +grep cache-dir uv.toml + +# 确保没有设置错误的缓存路径 +``` + +### 调试模式 + +```bash +# 查看详细错误信息 +uv run python -m ai_shell.main --debug "test command" + +# 检查配置加载 +uv run python -c "from ai_shell.config import validate_config; print(validate_config())" + +# 测试 AI 连接 +uv run python -c "from ai_shell.agent import create_agent; agent = create_agent(); print('OK')" +``` + +### 重新安装 + +```bash +# 完全重新安装 +uv tool uninstall ai-shell +uv tool install . + +# 清理并重新构建 +make clean +make build +make install +``` + +## 🤝 贡献指南 + +### 如何贡献 + +1. **Fork 仓库** + ```bash + # 在 Gitea 上 fork 项目 + git clone https://gitea.nosuchip.de/your-username/ai-shell.git + ``` + +2. **创建功能分支** + ```bash + git checkout -b feature/your-feature-name + ``` + +3. **进行开发** + ```bash + # 修改代码 + vim ai_shell/main.py + + # 测试更改 + make install + ai "test your changes" + ``` + +4. **提交更改** + ```bash + git add . + git commit -m "feat: add your feature description" + ``` + +5. **推送并创建 Pull Request** + ```bash + git push origin feature/your-feature-name + # 在 Gitea 上创建 Pull Request + ``` + +### 开发规范 + +- 使用 [Conventional Commits](https://www.conventionalcommits.org/) 提交信息格式 +- 确保代码通过测试 +- 更新相关文档 +- 保持代码风格一致 + +### 报告问题 + +- **Bug 报告**: https://gitea.nosuchip.de/zack/ai-shell/issues +- **功能请求**: https://gitea.nosuchip.de/zack/ai-shell/issues +- **讨论**: https://gitea.nosuchip.de/zack/ai-shell/discussions + +### 许可证 + +本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。 + +--- + +## 📞 支持 + +- **仓库**: https://gitea.nosuchip.de/zack/ai-shell +- **问题**: https://gitea.nosuchip.de/zack/ai-shell/issues +- **版本**: v0.1.0 + +🎉 **感谢使用 AI Shell!** + +如果这个项目对您有帮助,请给个 ⭐ Star! + +## 📦 Installation + +### Prerequisites + +- **Python 3.12+** +- **UV package manager** ([Installation guide](https://docs.astral.sh/uv/getting-started/installation/)) + +### Method 1: From Source (Recommended) + +```bash +# 1. Clone the repository +git clone https://gitea.nosuchip.de/zack/ai-shell.git +cd ai-shell + +# 2. Configure API settings +cp .env.example .env +vim .env # Fill in your API configuration + +# 3. Install globally +uv tool install . + +# 4. Verify installation +ai --version +ai --config +``` + +### Method 2: Quick Install + +```bash +# Direct install from repository +uv tool install git+https://gitea.nosuchip.de/zack/ai-shell.git + +# Configure after installation +mkdir -p ~/.ai-shell +echo 'AI_SHELL_API_KEY=your_api_key' > ~/.ai-shell/.env +echo 'AI_SHELL_BASE_URL=your_api_url' >> ~/.ai-shell/.env +echo 'AI_SHELL_MODEL=your_model' >> ~/.ai-shell/.env +``` + +### Verify Installation + +```bash +# Check if ai command is available +which ai + +# Test basic functionality +ai --version +ai --config +ai "echo hello world" +``` + +### Uninstall + +```bash +uv tool uninstall ai-shell +``` diff --git a/使用示例.md b/使用示例.md deleted file mode 100644 index a0b105d..0000000 --- a/使用示例.md +++ /dev/null @@ -1,119 +0,0 @@ -# AI Shell 使用示例 - -## 🚀 基本使用流程 - -### 示例 1:查看当前日期(按 Enter 执行) -```bash -$ uv run python ai.py "show current date" - -(AI Thinking): To display the current date, the `date` command is the most straightforward and commonly used tool in Unix-like systems. - -(AI Answer): date -Execute? [Y/n]: ⏎ # 直接按 Enter 键 -2025年 7月12日 星期六 16时08分00秒 CST -``` - -### 示例 2:危险命令(输入 n 取消) -```bash -$ uv run python ai.py "remove all files" - -(AI Thinking): To remove all files in the current directory, we can use the `rm` command. However, we need to be cautious because this action is irreversible. - -(AI Answer): rm -rf * -Execute? [Y/n]: n # 输入 n 取消执行 -``` - -### 示例 3:中文命令(按 Enter 执行) -```bash -$ uv run python ai.py "显示当前目录下的文件" - -(AI Thinking): 用户想要显示当前目录下的文件。最常用和直接的命令是 `ls`,它会列出当前目录中的所有文件和文件夹。 - -(AI Answer): ls -Execute? [Y/n]: ⏎ # 直接按 Enter 键 -README.md ai.py pyproject.toml uv.lock uv.toml -``` - -## 📋 交互选项说明 - -### 执行命令的方式: -- **直接按 Enter**: 执行命令(默认选择) -- **输入 y 或 yes**: 执行命令 -- **输入 n 或 no**: 取消执行 - -### 提示符说明: -- `Execute? [Y/n]:` - - `[Y/n]` 表示默认选择是 Y(执行) - - 大写的 Y 表示这是默认选项 - - 直接按 Enter 等同于选择 Y - -## 🎯 使用技巧 - -### 1. 快速执行常用命令 -对于安全的查看类命令,可以直接按 Enter 快速执行: -```bash -uv run python ai.py "list files" # Enter 执行 -uv run python ai.py "show disk usage" # Enter 执行 -uv run python ai.py "current directory" # Enter 执行 -``` - -### 2. 谨慎处理危险命令 -对于可能造成数据丢失的命令,建议仔细检查后再决定: -```bash -uv run python ai.py "delete old logs" # 检查命令后再决定 -uv run python ai.py "format disk" # 输入 n 取消 -uv run python ai.py "remove directory" # 仔细确认 -``` - -### 3. 中英文混合使用 -```bash -# 英文命令 -uv run python ai.py "find Python files" - -# 中文命令 -uv run python ai.py "查找Python文件" - -# 混合使用 -uv run python ai.py "find all .py files in current directory" -``` - -## 🔧 常用命令示例 - -### 文件操作 -```bash -uv run python ai.py "create a backup directory" -uv run python ai.py "copy all text files to backup" -uv run python ai.py "find files larger than 100MB" -``` - -### 系统信息 -```bash -uv run python ai.py "show system information" -uv run python ai.py "check memory usage" -uv run python ai.py "list running processes" -``` - -### 网络相关 -```bash -uv run python ai.py "check network connectivity" -uv run python ai.py "show network interfaces" -uv run python ai.py "test connection to google.com" -``` - -### 开发相关 -```bash -uv run python ai.py "find all Python files" -uv run python ai.py "count lines of code" -uv run python ai.py "start a simple HTTP server" -``` - -## ⚠️ 安全提醒 - -1. **仔细阅读 AI 生成的命令**:在执行前确保理解命令的作用 -2. **危险命令要谨慎**:涉及删除、格式化等操作时要特别小心 -3. **测试环境优先**:在重要系统上使用前,建议先在测试环境验证 -4. **备份重要数据**:执行可能影响数据的命令前,确保有备份 - ---- - -💡 **提示**:现在直接按 Enter 键就能执行命令,让您的工作流程更加流畅! diff --git a/修改完成总结.md b/修改完成总结.md deleted file mode 100644 index 96a5e13..0000000 --- a/修改完成总结.md +++ /dev/null @@ -1,157 +0,0 @@ -# AI Shell 项目修改完成总结 - -## ✅ 已完成的修改 - -### 1. 模型接口更换 -- **原来**: Gemini AI (Google) -- **现在**: DeepSeek V3 (通过 OpenAI 兼容接口) - -### 2. API 配置更新 -```python -# 新的配置 -API_KEY = "f8370a60-fe0a-455f-9167-411d476123d2" -BASE_URL = "https://ark.cn-beijing.volces.com/api/v3/" -MODEL = "deepseek-v3-250324" -``` - -### 3. 依赖包更新 -- **移除**: `google-genai` -- **添加**: `openai` (用于 OpenAI 兼容接口) - -### 4. 代码修改详情 - -#### 主要变更: -1. **导入模块**: - ```python - # 原来 - from pydantic_ai.models.gemini import GeminiModel - - # 现在 - from pydantic_ai.models.openai import OpenAIModel - ``` - -2. **模型初始化**: - ```python - # 原来 - model = GeminiModel("gemini-2.0-flash") - - # 现在 - os.environ["OPENAI_API_KEY"] = API_KEY - os.environ["OPENAI_BASE_URL"] = BASE_URL - model = OpenAIModel("deepseek-v3-250324") - ``` - -3. **修复弃用警告**: - ```python - # 原来 - result_type=Answer - resp.data - - # 现在 - output_type=Answer - resp.output - ``` - -## 🧪 测试结果 - -### 功能测试 -✅ **英文命令**: `"list files in current directory"` → `ls` -✅ **中文命令**: `"创建一个新目录叫test"` → `mkdir test` -✅ **复杂命令**: `"show disk usage"` → `df -h` - -### 性能表现 -- ✅ 响应速度快 -- ✅ 命令准确性高 -- ✅ 支持中英文交互 -- ✅ 思考过程清晰 - -## 📁 最终项目结构 - -``` -ai-shell/ -├── ai.py # ✅ 主程序(已更新为 DeepSeek V3) -├── pyproject.toml # ✅ 项目配置(已更新依赖) -├── uv.toml # ✅ UV 配置(国内镜像源) -├── uv.lock # ✅ 依赖锁定文件(已更新) -├── .python-version # ✅ Python 版本文件 -├── .venv/ # ✅ 虚拟环境 -├── README.md # ✅ 项目说明(已更新) -├── 配置总结.md # ✅ 配置总结 -├── 项目配置说明.md # ✅ 详细配置说明(已更新) -└── 修改完成总结.md # ✅ 本文件 -``` - -## 🚀 使用方法 - -### 基本命令 -```bash -# 英文命令 -uv run python ai.py "list all Python files" -uv run python ai.py "show current directory size" -uv run python ai.py "find files modified today" - -# 中文命令 -uv run python ai.py "显示当前目录下的所有文件" -uv run python ai.py "查看磁盘使用情况" -uv run python ai.py "创建一个名为backup的目录" -``` - -### 交互流程 -1. **AI 思考**: 显示推理过程 -2. **AI 回答**: 提供具体命令 -3. **用户确认**: `[Y/n]` 选择是否执行 - - **Enter 键** 或 **y/yes**: 执行命令 - - **n/no**: 取消执行 -4. **自动执行**: 确认后自动运行命令 - -## 🎯 核心优势 - -### 1. 模型优势 -- **DeepSeek V3**: 最新的开源大模型,性能优异 -- **中文友好**: 对中文指令理解更准确 -- **成本效益**: 通过 Volces API 使用,性价比高 - -### 2. 技术优势 -- **OpenAI 兼容**: 标准接口,易于维护 -- **快速部署**: 国内镜像源,依赖安装快速 -- **环境隔离**: UV 虚拟环境,避免冲突 - -### 3. 用户体验 -- **双语支持**: 中英文命令都能准确理解 -- **安全确认**: 执行前需要用户确认 -- **便捷操作**: 直接按 Enter 键即可执行(默认为 Y) -- **思考透明**: 显示 AI 的推理过程 - -## 📋 配置验证 - -### 检查配置是否正确 -```bash -# 1. 检查依赖 -uv pip list | grep -E "(pydantic-ai|openai)" - -# 2. 测试连接 -uv run python ai.py "echo hello" - -# 3. 验证中文支持 -uv run python ai.py "显示当前时间" -``` - -## 🔧 故障排除 - -### 常见问题 -1. **API 连接失败**: 检查网络连接和 API 密钥 -2. **模型不响应**: 确认 BASE_URL 和模型名称正确 -3. **依赖问题**: 运行 `uv sync` 重新同步依赖 - -### 调试方法 -```bash -# 查看详细错误信息 -uv run python ai.py "test command" 2>&1 - -# 检查环境变量 -uv run python -c "import os; print(os.environ.get('OPENAI_BASE_URL'))" -``` - ---- - -🎉 **修改完成!** 现在您可以使用 DeepSeek V3 模型通过 Volces API 来生成 shell 命令了! diff --git a/升级指南.md b/升级指南.md deleted file mode 100644 index a60b861..0000000 --- a/升级指南.md +++ /dev/null @@ -1,215 +0,0 @@ -# AI Shell 升级和更新指南 - -## 🚀 快速升级方法 - -### 方法一:直接重新安装(推荐) -```bash -# 在项目目录中 -cd /path/to/ai-shell - -# 重新构建并安装 -uv build -uv tool install . --force - -# 验证安装 -ai --version -``` - -### 方法二:使用 uv tool upgrade -```bash -# 如果项目已发布到 PyPI -uv tool upgrade ai-shell - -# 或者从本地项目升级 -cd /path/to/ai-shell -uv tool upgrade ai-shell --from . -``` - -## 🔧 开发和版本管理 - -### 1. 修改代码后的升级流程 - -```bash -# 1. 修改代码(如 ai_shell/main.py, ai_shell/config.py 等) - -# 2. 更新版本号 -python scripts/bump_version.py patch # 0.1.0 -> 0.1.1 -# 或 -python scripts/bump_version.py minor # 0.1.0 -> 0.2.0 -# 或 -python scripts/bump_version.py major # 0.1.0 -> 1.0.0 - -# 3. 重新构建和安装 -uv build -uv tool install . --force - -# 4. 测试新版本 -ai --version -ai --config -ai "test command" -``` - -### 2. 使用 Makefile 简化操作 - -```bash -# 查看所有可用命令 -make help - -# 升级补丁版本并重新安装 -make bump-patch -make install - -# 升级次版本并重新安装 -make bump-minor -make install - -# 清理构建文件 -make clean - -# 测试安装 -make test -``` - -## 📝 常见升级场景 - -### 场景 1:修改 API 配置 -```bash -# 编辑配置文件 -vim ai_shell/config.py - -# 升级并重新安装 -python scripts/bump_version.py patch -uv build -uv tool install . --force -``` - -### 场景 2:添加新功能 -```bash -# 编辑主程序 -vim ai_shell/main.py - -# 升级次版本 -python scripts/bump_version.py minor -uv build -uv tool install . --force -``` - -### 场景 3:修改依赖 -```bash -# 编辑依赖 -vim pyproject.toml - -# 同步依赖 -uv sync - -# 重新安装 -uv build -uv tool install . --force -``` - -## 🔍 验证升级 - -### 检查安装状态 -```bash -# 查看已安装的工具 -uv tool list - -# 查看版本信息 -ai --version - -# 查看配置 -ai --config - -# 测试功能 -ai "echo hello" -``` - -### 故障排除 -```bash -# 如果命令不存在,检查 PATH -echo $PATH | grep -o ~/.local/bin - -# 如果 PATH 中没有 ~/.local/bin,添加到 shell 配置 -echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc -source ~/.zshrc - -# 完全重新安装 -uv tool uninstall ai-shell -uv tool install . -``` - -## 📦 版本管理最佳实践 - -### 1. 语义化版本控制 -- **补丁版本** (0.1.0 -> 0.1.1): 修复 bug,小改动 -- **次版本** (0.1.0 -> 0.2.0): 新功能,向后兼容 -- **主版本** (0.1.0 -> 1.0.0): 重大变更,可能不兼容 - -### 2. 升级前的检查清单 -- [ ] 代码修改完成 -- [ ] 测试功能正常 -- [ ] 更新版本号 -- [ ] 重新构建包 -- [ ] 重新安装工具 -- [ ] 验证新版本 - -### 3. 配置文件管理 -```bash -# 查看当前配置 -ai --config - -# 如果需要修改 API 配置,编辑: -vim ai_shell/config.py - -# 或者使用环境变量覆盖: -export AI_SHELL_API_KEY="new_api_key" -export AI_SHELL_BASE_URL="new_base_url" -export AI_SHELL_MODEL="new_model" -``` - -## 🎯 自动化升级脚本 - -创建一个一键升级脚本: - -```bash -#!/bin/bash -# 保存为 quick_upgrade.sh - -echo "🔄 AI Shell 快速升级..." - -# 检查是否在项目目录 -if [ ! -f "pyproject.toml" ]; then - echo "❌ 请在 ai-shell 项目目录中运行此脚本" - exit 1 -fi - -# 升级补丁版本 -echo "📈 升级版本..." -python scripts/bump_version.py patch - -# 重新构建 -echo "📦 重新构建..." -uv build - -# 重新安装 -echo "🔧 重新安装..." -uv tool install . --force - -# 验证 -echo "✅ 升级完成!" -ai --version - -echo "🧪 测试命令:" -echo "ai --config" -echo "ai \"echo test\"" -``` - -使用方法: -```bash -chmod +x quick_upgrade.sh -./quick_upgrade.sh -``` - ---- - -💡 **总结**:最简单的升级方法就是在项目目录中运行 `uv build && uv tool install . --force` diff --git a/配置修复总结.md b/配置修复总结.md deleted file mode 100644 index 426a631..0000000 --- a/配置修复总结.md +++ /dev/null @@ -1,157 +0,0 @@ -# 配置修复总结 - -## 🐛 问题描述 - -每次运行 `uv sync` 时,都会在项目目录中创建一个名为 `~` 的文件夹。 - -## 🔍 问题原因 - -在 `uv.toml` 配置文件中,`cache-dir = "~/.cache/uv"` 的 `~` 符号没有被正确展开,uv 将其当作字面量处理,导致在当前目录创建了名为 `~` 的文件夹。 - -## ✅ 解决方案 - -### 1. 修复项目配置文件 - -**修改前** (`uv.toml`): -```toml -# 缓存目录 -cache-dir = "~/.cache/uv" -``` - -**修改后** (`uv.toml`): -```toml -# 缓存目录(移除此配置,使用 uv 默认缓存位置) -# cache-dir = "~/.cache/uv" -``` - -### 2. 清理重复配置 - -**问题**:`pyproject.toml` 和 `uv.toml` 中有重复的 uv 配置,导致警告信息。 - -**解决**:删除 `pyproject.toml` 中的 `[tool.uv]` 配置段,只保留 `uv.toml` 中的配置。 - -**修改前** (`pyproject.toml`): -```toml -[tool.uv] -# 使用国内镜像源加速下载 -index-url = "https://pypi.tuna.tsinghua.edu.cn/simple" -extra-index-url = [ - "https://mirrors.aliyun.com/pypi/simple/", - "https://mirrors.cloud.tencent.com/pypi/simple/", -] -index-strategy = "unsafe-best-match" -concurrent-downloads = 10 -cache-dir = "~/.cache/uv" -``` - -**修改后** (`pyproject.toml`): -```toml -# UV 配置已移至 uv.toml 文件 -``` - -### 3. 完善全局配置 - -创建正确的全局 uv 配置文件 `~/.config/uv/uv.toml`: - -```toml -# UV 全局配置文件 -# 配置国内镜像源加速下载 - -# PyPI 镜像源配置 -index-url = "https://pypi.tuna.tsinghua.edu.cn/simple" -extra-index-url = [ - "https://mirrors.aliyun.com/pypi/simple/", - "https://mirrors.cloud.tencent.com/pypi/simple/", -] - -# 性能优化配置 -index-strategy = "unsafe-best-match" -concurrent-downloads = 10 - -# 注意:不要设置 cache-dir,让 uv 使用默认位置 -``` - -## 🧹 清理操作 - -1. **删除错误创建的目录**: - ```bash - rm -rf ./~ - ``` - -2. **验证修复效果**: - ```bash - uv sync - ls -la | grep "~" # 应该没有输出 - ``` - -## 📋 最佳实践 - -### 1. uv 缓存配置 -- ✅ **推荐**:不设置 `cache-dir`,让 uv 使用默认位置 -- ❌ **避免**:使用 `~` 符号,因为可能不被正确展开 -- ✅ **替代**:如果必须自定义,使用绝对路径 - -### 2. 配置文件优先级 -- `uv.toml` > `pyproject.toml` 中的 `[tool.uv]` -- 避免在两个文件中重复配置相同选项 - -### 3. 全局 vs 项目配置 -- **全局配置** (`~/.config/uv/uv.toml`):适用于所有项目的通用设置 -- **项目配置** (`项目目录/uv.toml`):特定项目的配置,会覆盖全局配置 - -## 🔧 当前配置状态 - -### 项目配置 (`uv.toml`): -```toml -# uv 项目配置文件 -# 配置国内镜像源加速下载 - -# 主要的 PyPI 镜像源 -index-url = "https://pypi.tuna.tsinghua.edu.cn/simple" - -# 额外的镜像源 -extra-index-url = [ - "https://mirrors.aliyun.com/pypi/simple/", - "https://mirrors.cloud.tencent.com/pypi/simple/", -] - -# 索引策略 - 允许从所有索引中选择最佳版本 -index-strategy = "unsafe-best-match" - -# 缓存目录(移除此配置,使用 uv 默认缓存位置) -# cache-dir = "~/.cache/uv" - -# 并发下载数 -concurrent-downloads = 10 -``` - -### 全局配置 (`~/.config/uv/uv.toml`): -```toml -# UV 全局配置文件 -# 配置国内镜像源加速下载 - -# PyPI 镜像源配置 -index-url = "https://pypi.tuna.tsinghua.edu.cn/simple" -extra-index-url = [ - "https://mirrors.aliyun.com/pypi/simple/", - "https://mirrors.cloud.tencent.com/pypi/simple/", -] - -# 性能优化配置 -index-strategy = "unsafe-best-match" -concurrent-downloads = 10 - -# 注意:不要设置 cache-dir,让 uv 使用默认位置 -``` - -## ✅ 验证结果 - -修复后运行 `uv sync`: -- ✅ 不再创建 `~` 目录 -- ✅ 没有重复配置警告 -- ✅ 国内镜像源正常工作 -- ✅ 依赖同步正常 - ---- - -💡 **总结**:问题已完全解决,uv 配置现在更加清晰和规范。 diff --git a/配置总结.md b/配置总结.md deleted file mode 100644 index e9d4b3f..0000000 --- a/配置总结.md +++ /dev/null @@ -1,117 +0,0 @@ -# UV 国内源加速配置总结 - -## ✅ 配置完成状态 - -### 核心配置文件 - -- **uv.toml** - 主要配置文件 ⭐ - - 清华大学镜像(主源)+ 阿里云、腾讯云(备源) - - 10个并发下载,智能版本选择策略 - - 已优化缓存配置 - -- **pyproject.toml** - 项目配置文件 - - Python 版本:>=3.12(当前使用 3.12.11) - - 核心依赖:pydantic-ai, google-genai, requests - -### 2. 配置的镜像源 - -| 镜像源 | URL | 状态 | -|--------|-----|------| -| 清华大学 | https://pypi.tuna.tsinghua.edu.cn/simple | 主源 ✅ | -| 阿里云 | https://mirrors.aliyun.com/pypi/simple/ | 备用 ✅ | -| 腾讯云 | https://mirrors.cloud.tencent.com/pypi/simple/ | 备用 ✅ | - -### 3. 性能测试结果 - -- ✅ PyPI 包解析速度:0.02秒(极快) -- ✅ 包安装速度:显著提升(使用国内镜像源) -- ✅ 配置文件检测:全部通过 -- ✅ Python 版本:3.12.11(已正确配置) -- ⚠️ Python 解释器下载:仍需要优化(建议使用系统包管理器) - -## 🚀 使用方法 - -### 基本命令 - -```bash -# 安装依赖 -uv sync - -# 添加新包 -uv add package-name - -# 运行脚本 -uv run python script.py - -# 激活虚拟环境 -uv shell -``` - -### 验证配置 - -```bash -# 运行测试脚本 -uv run python test_uv_config.py -``` - -## 📁 当前项目结构 - -``` -ai-shell/ -├── ai.py # 主程序(AI shell 命令生成器) -├── pyproject.toml # 项目配置文件 -├── uv.toml # UV 配置文件(核心) -├── uv.lock # 依赖锁定文件(自动生成) -├── .python-version # Python 版本文件(自动生成) -├── .venv/ # 虚拟环境(自动生成) -├── README.md # 项目说明 -├── 配置总结.md # 本文件 -└── 项目配置说明.md # 详细配置说明 -``` - -## 🎯 配置优势 - -1. **PyPI 包速度提升**:使用国内镜像源,包下载速度显著提升 -2. **稳定性**:多个备用镜像源,确保可用性 -3. **兼容性**:支持所有 uv 功能 -4. **易维护**:配置文件清晰,易于修改 -5. **版本管理**:正确配置 Python 版本要求,避免兼容性问题 - -## 🔧 故障排除 - -如果遇到问题: - -1. **网络问题**:检查网络连接,尝试切换镜像源 -2. **缓存问题**:运行 `uv cache clean` 清除缓存 -3. **配置冲突**:确保 uv.toml 配置正确 - -## 📝 注意事项 - -- uv.toml 文件优先级高于 pyproject.toml 中的 [tool.uv] 配置 -- 使用 unsafe-best-match 策略可能有安全风险,但提供更好的包版本选择 -- 定期更新镜像源地址以确保最佳性能 - -## 🐍 关于 Python 解释器下载 - -**重要说明**: -- ✅ **PyPI 包下载**:已成功配置国内镜像源,速度很快 -- ⚠️ **Python 解释器下载**:镜像源配置复杂,建议使用以下替代方案: - -### 推荐的 Python 版本管理方案: -1. **使用系统包管理器**:`brew install python@3.12` (macOS) -2. **使用 pyenv**:`pyenv install 3.12.0` -3. **使用 conda**:`conda install python=3.12` -4. **使用现有版本**:您已有 Python 3.12.11,完全可用 - -### 如果必须用 uv 下载 Python: -- 考虑使用代理:`export HTTPS_PROXY=your_proxy` -- 或者耐心等待:Python 解释器文件较大,首次下载需要时间 - ---- - -🎉 **配置完成!现在您可以享受快速的 Python 包管理体验了!** - -📋 **当前状态**: -- ✅ PyPI 包下载:极快(国内镜像源) -- ✅ Python 版本:3.12.11(已配置) -- ✅ 项目依赖:已同步完成 diff --git a/配置管理说明.md b/配置管理说明.md deleted file mode 100644 index 0e60421..0000000 --- a/配置管理说明.md +++ /dev/null @@ -1,199 +0,0 @@ -# AI Shell 配置管理说明 - -## 🔐 敏感配置管理 - -### 1. 使用 .env 文件 - -项目现在使用 `.env` 文件来管理敏感配置,确保 API 密钥等信息不会被意外提交到代码库。 - -#### 配置文件结构: -``` -ai-shell/ -├── .env # 实际配置文件(已在 .gitignore 中排除) -├── .env.example # 配置模板文件(会被提交到代码库) -└── ai_shell/config.py # 配置加载逻辑 -``` - -### 2. 配置文件内容 - -#### `.env` 文件(实际配置): -```bash -# AI Shell 配置文件 -AI_SHELL_API_KEY=f8370a60-fe0a-455f-9167-411d476123d2 -AI_SHELL_BASE_URL=https://ark.cn-beijing.volces.com/api/v3/ -AI_SHELL_MODEL=deepseek-v3-250324 - -# 可选配置 -AI_SHELL_TIMEOUT=30 -AI_SHELL_MAX_RETRIES=3 -``` - -#### `.env.example` 文件(模板): -```bash -# AI Shell 配置文件模板 -AI_SHELL_API_KEY=your_api_key_here -AI_SHELL_BASE_URL=https://your-api-endpoint.com/v3/ -AI_SHELL_MODEL=your_model_name - -# 可选配置 -AI_SHELL_TIMEOUT=30 -AI_SHELL_MAX_RETRIES=3 -``` - -## 🔧 配置加载优先级 - -配置系统按以下优先级加载配置: - -1. **环境变量**(最高优先级) -2. **当前目录的 .env 文件** -3. **包目录的 .env 文件** -4. **~/.ai-shell/.env 文件** -5. **默认值**(最低优先级) - -## 📋 配置项说明 - -| 配置项 | 环境变量 | 说明 | 默认值 | -|--------|----------|------|--------| -| API Key | `AI_SHELL_API_KEY` | API 密钥(必填) | 无 | -| Base URL | `AI_SHELL_BASE_URL` | API 基础 URL | `https://api.openai.com/v1/` | -| Model | `AI_SHELL_MODEL` | 模型名称 | `gpt-3.5-turbo` | -| Timeout | `AI_SHELL_TIMEOUT` | 请求超时时间(秒) | `30` | -| Max Retries | `AI_SHELL_MAX_RETRIES` | 最大重试次数 | `3` | - -## 🚀 使用方法 - -### 1. 查看当前配置 -```bash -ai --config -``` - -输出示例: -``` -AI Shell Configuration: - Model: deepseek-v3-250324 - Base URL: https://ark.cn-beijing.volces.com/api/v3/ - API Key: f8370a60...123d2 - Timeout: 30s - Max Retries: 3 - -Configuration Status: ✅ Valid - -Configuration Sources (in priority order): - 1. Environment variables - 2. .env file in current directory - 3. .env file in package directory - 4. ~/.ai-shell/.env file - 5. Default values -``` - -### 2. 修改配置 - -#### 方法 1:编辑 .env 文件 -```bash -# 编辑项目目录中的 .env 文件 -vim .env - -# 或创建全局配置 -mkdir -p ~/.ai-shell -cp .env ~/.ai-shell/.env -vim ~/.ai-shell/.env -``` - -#### 方法 2:使用环境变量 -```bash -# 临时设置 -export AI_SHELL_API_KEY="new_api_key" -export AI_SHELL_MODEL="gpt-4" - -# 永久设置(添加到 shell 配置文件) -echo 'export AI_SHELL_API_KEY="new_api_key"' >> ~/.zshrc -``` - -### 3. 配置验证 - -程序启动时会自动验证配置: - -```bash -ai "test command" -``` - -如果配置无效,会显示错误信息: -``` -❌ Configuration error: API key not configured. -Please set AI_SHELL_API_KEY in .env file or environment variable. -Run 'ai --config' to see current configuration. -``` - -## 🔄 升级后的配置管理 - -### 升级流程: -1. **修改代码** -2. **更新版本**: `python scripts/bump_version.py patch` -3. **重新安装**: `uv build && uv tool install . --force` -4. **配置自动保留**:`.env` 文件不会被覆盖 - -### 配置迁移: -如果需要迁移配置到新环境: -```bash -# 复制配置文件 -cp .env /path/to/new/environment/ - -# 或设置环境变量 -export AI_SHELL_API_KEY="your_key" -export AI_SHELL_BASE_URL="your_url" -export AI_SHELL_MODEL="your_model" -``` - -## 🛡️ 安全最佳实践 - -### 1. 保护 .env 文件 -- ✅ `.env` 文件已在 `.gitignore` 中排除 -- ✅ 不要将 `.env` 文件提交到代码库 -- ✅ 使用 `.env.example` 作为模板 - -### 2. API 密钥管理 -- 🔐 定期轮换 API 密钥 -- 🔐 不要在代码中硬编码密钥 -- 🔐 使用环境变量或配置文件 - -### 3. 权限控制 -```bash -# 设置 .env 文件权限(仅所有者可读写) -chmod 600 .env - -# 检查权限 -ls -la .env -``` - -## 🔍 故障排除 - -### 常见问题: - -1. **API 密钥未配置** - ```bash - # 检查配置 - ai --config - - # 设置密钥 - echo 'AI_SHELL_API_KEY=your_key' >> .env - ``` - -2. **配置文件未找到** - ```bash - # 创建配置文件 - cp .env.example .env - vim .env - ``` - -3. **权限问题** - ```bash - # 检查文件权限 - ls -la .env - - # 修复权限 - chmod 600 .env - ``` - ---- - -💡 **总结**:现在 AI Shell 使用 `.env` 文件管理敏感配置,确保了安全性和可维护性。配置会在升级时自动保留,无需重新设置。 diff --git a/项目配置说明.md b/项目配置说明.md deleted file mode 100644 index 033e279..0000000 --- a/项目配置说明.md +++ /dev/null @@ -1,165 +0,0 @@ -# AI Shell 项目配置说明 - -## 📁 项目结构 - -``` -ai-shell/ -├── ai.py # 主程序文件 -├── pyproject.toml # 项目配置文件 -├── uv.toml # UV 包管理器配置文件 -├── uv.lock # 依赖锁定文件(自动生成) -├── .python-version # Python 版本固定文件(自动生成) -├── .venv/ # 虚拟环境目录(自动生成) -├── README.md # 项目说明文档 -├── 配置总结.md # 配置总结文档 -└── 项目配置说明.md # 本文件 -``` - -## 🔧 核心配置文件详解 - -### 1. `ai.py` - 主程序文件 -**作用**:AI 驱动的 shell 命令生成器 -**功能**: -- 使用 Gemini AI 模型生成 shell 命令 -- 支持多语言提示和响应 -- 交互式执行确认 - -**关键配置**: -```python -# OpenAI 兼容接口配置 -API_KEY = "f8370a60-fe0a-455f-9167-411d476123d2" -BASE_URL = "https://ark.cn-beijing.volces.com/api/v3/" - -# 使用 DeepSeek V3 模型 -model = OpenAIModel("deepseek-v3-250324") -``` - -### 2. `pyproject.toml` - 项目配置文件 -**作用**:定义项目元数据和依赖关系 -**内容解析**: -```toml -[project] -name = "ai-shell" # 项目名称 -version = "0.1.0" # 版本号 -description = "AI-powered shell command generator" # 项目描述 -requires-python = ">=3.12" # Python 版本要求 -dependencies = [ # 项目依赖 - "pydantic-ai", # AI 框架 - "openai", # OpenAI 兼容 API 客户端 - "requests>=2.32.4", # HTTP 请求库 -] -``` - -### 3. `uv.toml` - UV 包管理器配置文件 ⭐ -**作用**:配置 UV 包管理器的行为和镜像源 -**重要性**:这是加速包下载的核心配置文件 - -**详细配置解析**: -```toml -# PyPI 镜像源配置 -index-url = "https://pypi.tuna.tsinghua.edu.cn/simple" # 主镜像源(清华大学) -extra-index-url = [ # 备用镜像源 - "https://mirrors.aliyun.com/pypi/simple/", # 阿里云镜像 - "https://mirrors.cloud.tencent.com/pypi/simple/", # 腾讯云镜像 -] - -# 性能优化配置 -index-strategy = "unsafe-best-match" # 允许从所有镜像源选择最佳版本 -concurrent-downloads = 10 # 并发下载数量 -cache-dir = "~/.cache/uv" # 缓存目录 - -# Python 解释器镜像源(已注释,使用默认源) -# python-install-mirror = "镜像源URL" -``` - -### 4. `uv.lock` - 依赖锁定文件(自动生成) -**作用**:锁定所有依赖的精确版本 -**特点**: -- 自动生成,不需要手动编辑 -- 确保在不同环境中安装相同版本的依赖 -- 包含所有传递依赖的版本信息 - -### 5. `.python-version` - Python 版本固定文件(自动生成) -**作用**:指定项目使用的 Python 版本 -**内容**:`3.12` -**用途**:确保项目在正确的 Python 版本下运行 - -### 6. `.venv/` - 虚拟环境目录(自动生成) -**作用**:隔离的 Python 环境 -**包含**: -- 项目特定的 Python 解释器 -- 安装的所有依赖包 -- 环境配置文件 - -## 🚀 配置优势 - -### 1. 国内镜像源加速 -- **主源**:清华大学镜像(教育网友好) -- **备源**:阿里云、腾讯云(商业网络友好) -- **效果**:包下载速度从几十秒降到秒级 - -### 2. 智能版本选择 -- `index-strategy = "unsafe-best-match"` -- 从所有镜像源中选择最佳版本 -- 避免版本冲突和依赖问题 - -### 3. 性能优化 -- 10 个并发下载 -- 本地缓存机制 -- 快速依赖解析 - -## 📋 使用指南 - -### 基本命令 -```bash -# 安装/更新依赖 -uv sync - -# 添加新依赖 -uv add package-name - -# 运行程序 -uv run python ai.py "your command description" - -# 激活虚拟环境 -uv shell -``` - -### 环境管理 -```bash -# 查看 Python 版本 -uv python pin - -# 查看已安装包 -uv pip list - -# 清理缓存 -uv cache clean -``` - -## ⚠️ 注意事项 - -1. **配置优先级**:`uv.toml` > `pyproject.toml` 中的 `[tool.uv]` 配置 -2. **镜像源策略**:使用 `unsafe-best-match` 可能有安全风险,但提供更好的包选择 -3. **Python 解释器**:下载新 Python 版本仍然较慢,建议使用系统包管理器 -4. **API 配置**:已内置 Volces (ByteDance) API 配置,使用 DeepSeek V3 模型 - -## 🔍 故障排除 - -### 常见问题 -1. **包下载慢**:检查网络连接,尝试切换镜像源 -2. **版本冲突**:运行 `uv sync` 重新解析依赖 -3. **缓存问题**:运行 `uv cache clean` 清理缓存 - -### 验证配置 -```bash -# 测试依赖解析速度 -time uv sync --dry-run - -# 检查镜像源连通性 -curl -I https://pypi.tuna.tsinghua.edu.cn/simple/ -``` - ---- - -🎯 **总结**:这个配置实现了 Python 包的快速下载和管理,同时保持了项目的可移植性和稳定性。