docs: 完善项目文档
- README.md: 重写中文文档,补充特性说明、项目结构、使用指南 - README.en.md: 重写英文文档,与中文版对齐 - CHANGELOG.md: 补充 v5.0.0 更新日志 - CONTRIBUTING.md: 新增贡献指南 - HELP.md: 更新使用指南,适配 v5.0.0
This commit is contained in:
1 parent
139fce720c
commit
4b0c739c07
5 files changed
+690
-163
No files matched your search
+30
-5
@@ -1,13 +1,38 @@
|
|||||||
# 更新日志
|
# 更新日志
|
||||||
|
|
||||||
|
所有重要更改都记录在此文件中。格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/)。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## v5.0.0 (2026-04-25)
|
||||||
|
|
||||||
|
### 🚀 新增功能
|
||||||
|
- **TUI v2** — 全新 TUI 界面,对标 Claude Code / OpenCode,暗色主题 + 现代布局
|
||||||
|
- **完整 MCP 协议支持** — 为所有插件添加 MCP (Model Context Protocol) 定义
|
||||||
|
- **代码统计 Skill** (`code_stats`) — 新增 Skill 协议示例
|
||||||
|
- **工程化自动化插件** — 新增 3 个工程化自动化插件(`auto_engineer`、`project_analyzer`、`git_workflow`)
|
||||||
|
- **任务调度器** (`scheduler`) — 定时任务支持
|
||||||
|
|
||||||
|
### 🏗️ 架构改进
|
||||||
|
- **重写代码沙箱** — 全新的安全沙箱实现,支持超时控制和资源限制
|
||||||
|
- **完整测试套件** — 192 个测试用例,覆盖核心功能
|
||||||
|
- **Skill handler 修复** — 修复 Skill 协议参数解析问题
|
||||||
|
- **MarkdownSkill MCP** — MCP 定义改为从元数据动态生成
|
||||||
|
|
||||||
|
### 🐛 修复
|
||||||
|
- 修复 MarkdownSkill MCP 定义硬编码问题
|
||||||
|
- 修复 Skill handler 参数解析错误
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## v3.6.0-release (2026-04-25)
|
## v3.6.0-release (2026-04-25)
|
||||||
|
|
||||||
### 🚀 新增功能
|
### 🚀 新增功能
|
||||||
- **精准代码编辑器** (`code_editor`) - 搜索替换、批量编辑、diff 对比、行级操作
|
- **精准代码编辑器** (`code_editor`) — 搜索替换、批量编辑、diff 对比、行级操作
|
||||||
- **代码搜索理解** (`code_search`) - 跨文件搜索、正则匹配、符号提取、依赖分析
|
- **代码搜索理解** (`code_search`) — 跨文件搜索、正则匹配、符号提取、依赖分析
|
||||||
- **Git 版本控制** (`git_tools`) - 完整 Git 操作支持
|
- **Git 版本控制** (`git_tools`) — 完整 Git 操作支持
|
||||||
- **TUI 默认模式** - 图形化界面为默认启动方式
|
- **TUI 默认模式** — 图形化界面为默认启动方式
|
||||||
- **彩蛋** - 运行 `python easter_egg.py` 发现惊喜
|
- **彩蛋** — 运行 `python easter_egg.py` 发现惊喜
|
||||||
|
|
||||||
### 🏗️ 架构重构
|
### 🏗️ 架构重构
|
||||||
- 拆分 `ai_cli.py`(3860行)为模块化 `xiaoli/` 包
|
- 拆分 `ai_cli.py`(3860行)为模块化 `xiaoli/` 包
|
||||||
|
|||||||
+148
@@ -0,0 +1,148 @@
|
|||||||
|
# 贡献指南
|
||||||
|
|
||||||
|
感谢你对小狸 Pro-CLI 项目的关注!以下是参与贡献的方式和规范。
|
||||||
|
|
||||||
|
## 如何贡献
|
||||||
|
|
||||||
|
### 报告 Bug
|
||||||
|
|
||||||
|
1. 在 Gitee 上创建 [Issue](https://gitee.com/shuiyu1123/xiaoli-cli/issues)
|
||||||
|
2. 描述清楚问题的复现步骤、期望行为和实际行为
|
||||||
|
3. 附上相关的日志输出或截图
|
||||||
|
4. 注明你的 Python 版本和操作系统
|
||||||
|
|
||||||
|
### 提交功能建议
|
||||||
|
|
||||||
|
1. 创建 Issue,标题以 `[Feature]` 开头
|
||||||
|
2. 描述你想要的功能和使用场景
|
||||||
|
3. 如果可能,提供实现思路
|
||||||
|
|
||||||
|
### 提交代码
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Fork 并克隆
|
||||||
|
git clone https://gitee.com/你的用户名/xiaoli-cli.git
|
||||||
|
cd xiaoli-cli
|
||||||
|
|
||||||
|
# 2. 创建特性分支
|
||||||
|
git checkout -b feat/你的功能名
|
||||||
|
|
||||||
|
# 3. 开发并测试
|
||||||
|
# ... 编写代码 ...
|
||||||
|
python -m pytest tests/
|
||||||
|
|
||||||
|
# 4. 提交
|
||||||
|
git add .
|
||||||
|
git commit -m "feat: 描述你的改动"
|
||||||
|
|
||||||
|
# 5. 推送并创建 PR
|
||||||
|
git push origin feat/你的功能名
|
||||||
|
```
|
||||||
|
|
||||||
|
## 提交规范
|
||||||
|
|
||||||
|
使用 [Conventional Commits](https://www.conventionalcommits.org/) 格式:
|
||||||
|
|
||||||
|
```
|
||||||
|
<type>(<scope>): <description>
|
||||||
|
|
||||||
|
[可选 body]
|
||||||
|
|
||||||
|
[可选 footer]
|
||||||
|
```
|
||||||
|
|
||||||
|
### Type 类型
|
||||||
|
|
||||||
|
| 类型 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| `feat` | 新功能 |
|
||||||
|
| `fix` | Bug 修复 |
|
||||||
|
| `docs` | 文档更新 |
|
||||||
|
| `style` | 代码格式(不影响功能) |
|
||||||
|
| `refactor` | 重构 |
|
||||||
|
| `perf` | 性能优化 |
|
||||||
|
| `test` | 测试相关 |
|
||||||
|
| `chore` | 构建/工具链 |
|
||||||
|
| `ci` | CI/CD |
|
||||||
|
|
||||||
|
### 示例
|
||||||
|
|
||||||
|
```
|
||||||
|
feat(plugins): 新增 Docker 管理插件
|
||||||
|
fix(sandbox): 修复超时后进程未正确终止
|
||||||
|
docs: 更新 README 安装说明
|
||||||
|
refactor(engines): 统一引擎初始化逻辑
|
||||||
|
```
|
||||||
|
|
||||||
|
## 插件开发
|
||||||
|
|
||||||
|
### 新建插件
|
||||||
|
|
||||||
|
1. 在 `plugins/` 目录创建 `your_plugin.py`
|
||||||
|
2. 实现 `Plugin` 类:
|
||||||
|
|
||||||
|
```python
|
||||||
|
class Plugin:
|
||||||
|
"""插件描述"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.usage = "使用说明"
|
||||||
|
self.cli = None
|
||||||
|
|
||||||
|
def set_cli(self, cli):
|
||||||
|
self.cli = cli
|
||||||
|
|
||||||
|
def get_tool_info(self):
|
||||||
|
return {
|
||||||
|
"name": "your_plugin",
|
||||||
|
"description": "插件描述",
|
||||||
|
"keywords": ["关键词1", "关键词2"],
|
||||||
|
"usage": self.usage
|
||||||
|
}
|
||||||
|
|
||||||
|
def handle(self, args: str) -> str:
|
||||||
|
try:
|
||||||
|
# 实现逻辑
|
||||||
|
return "结果"
|
||||||
|
except Exception as e:
|
||||||
|
return f"错误: {e}"
|
||||||
|
```
|
||||||
|
|
||||||
|
3. 可选:实现 `get_mcp_definition()` 支持 MCP 协议
|
||||||
|
4. 在 `tests/` 中添加对应测试
|
||||||
|
|
||||||
|
### 插件检查清单
|
||||||
|
|
||||||
|
- [ ] 类名是 `Plugin`
|
||||||
|
- [ ] 实现了 `get_tool_info()` 和 `handle()`
|
||||||
|
- [ ] 返回值是字符串
|
||||||
|
- [ ] 所有异常被捕获
|
||||||
|
- [ ] 包含 `usage` 属性
|
||||||
|
- [ ] 通过基本测试
|
||||||
|
|
||||||
|
## 代码风格
|
||||||
|
|
||||||
|
- 遵循 PEP 8
|
||||||
|
- 使用 4 空格缩进
|
||||||
|
- 函数和变量使用 `snake_case`
|
||||||
|
- 类名使用 `PascalCase`
|
||||||
|
- 字符串优先使用双引号
|
||||||
|
- 添加必要的注释和 docstring
|
||||||
|
|
||||||
|
## 测试
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 运行全部测试
|
||||||
|
python -m pytest tests/
|
||||||
|
|
||||||
|
# 运行并显示覆盖率
|
||||||
|
python -m pytest tests/ -v --tb=short
|
||||||
|
```
|
||||||
|
|
||||||
|
新功能必须包含测试,Bug 修复应补充回归测试。
|
||||||
|
|
||||||
|
## 问题?
|
||||||
|
|
||||||
|
如有疑问,欢迎在 Gitee 上提 Issue 或通过以下方式联系:
|
||||||
|
|
||||||
|
- 📦 仓库:https://gitee.com/shuiyu1123/xiaoli-cli
|
||||||
@@ -1,80 +1,154 @@
|
|||||||
# 小狸 Pro-CLI 使用指南
|
# 小狸 Pro-CLI 使用指南
|
||||||
|
|
||||||
## 基本操作
|
## 快速上手
|
||||||
|
|
||||||
### 启动和退出
|
### 启动
|
||||||
- 启动程序: 运行 `python ai_cli.py`
|
|
||||||
- 退出程序: 输入 `/quit`
|
|
||||||
|
|
||||||
### 帮助命令
|
```bash
|
||||||
- `/help` - 显示帮助信息
|
# TUI 模式(默认)
|
||||||
|
python -m xiaoli
|
||||||
|
|
||||||
## AI引擎管理
|
# CLI 模式
|
||||||
|
python -m xiaoli --cli
|
||||||
|
|
||||||
### 切换AI引擎
|
# 指定引擎
|
||||||
- `/model spark` - 切换到讯飞星火AI引擎
|
python -m xiaoli --engine ollama
|
||||||
|
```
|
||||||
|
|
||||||
|
### 基本操作
|
||||||
|
|
||||||
|
- **退出程序**: 输入 `/quit` 或 `Ctrl+C`
|
||||||
|
- **查看帮助**: 输入 `/help`
|
||||||
|
- **查看版本**: 输入 `/about`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## AI 引擎管理
|
||||||
|
|
||||||
|
### 切换引擎
|
||||||
|
|
||||||
|
```
|
||||||
|
/model ollama # 切换到 Ollama 本地模型
|
||||||
|
/model mimo # 切换到小米 MiMo
|
||||||
|
/model glm # 切换到智谱 GLM
|
||||||
|
/model qwq # 切换到 QwQ 深度思考
|
||||||
|
```
|
||||||
|
|
||||||
|
### 查看可用引擎
|
||||||
|
|
||||||
|
```
|
||||||
|
/engine list
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 聊天记录管理
|
## 聊天记录管理
|
||||||
|
|
||||||
### 保存聊天记录
|
| 命令 | 说明 |
|
||||||
- `/chat save <名称>` - 将当前对话保存为指定名称的聊天记录
|
|------|------|
|
||||||
|
| `/chat save <名称>` | 保存当前对话 |
|
||||||
|
| `/chat list` | 列出所有保存的对话 |
|
||||||
|
| `/chat open <名称>` | 加载历史对话 |
|
||||||
|
|
||||||
### 查看聊天记录
|
---
|
||||||
- `/chat list` - 显示所有已保存的聊天记录
|
|
||||||
|
|
||||||
### 加载聊天记录
|
## 内置工具
|
||||||
- `/chat open <名称>` - 加载指定名称的聊天记录并继续对话
|
|
||||||
|
|
||||||
## 插件工具
|
小狸会根据你的自然语言描述自动选择合适的工具。以下是主要工具:
|
||||||
|
|
||||||
AI可以自动调用以下工具来帮助您完成各种任务:
|
### 代码编辑器 (`code_editor`)
|
||||||
|
|
||||||
### 文件管理工具␍
|
用于精准的代码编辑操作:
|
||||||
- 功能:读取、写入、追加、删除、复制、移动文件和目录操作␍
|
|
||||||
- 用法示例:␍
|
|
||||||
- `file_manager list` - 列出当前目录内容␍
|
|
||||||
- `file_manager read test.txt` - 读取文件内容␍
|
|
||||||
- `file_manager write test.txt 内容` - 写入文件␍
|
|
||||||
- `file_manager append test.txt 内容` - 追加内容到文件␍
|
|
||||||
- `file_manager delete test.txt` - 删除文件␍
|
|
||||||
- `file_manager create test.txt` - 创建空文件␍
|
|
||||||
- `file_manager mkdir new_dir` - 创建目录␍
|
|
||||||
- `file_manager copy source.txt dest.txt` - 复制文件␍
|
|
||||||
- `file_manager move source.txt dest.txt` - 移动文件␍
|
|
||||||
- `file_manager info test.txt` - 查看文件信息␍
|
|
||||||
- `file_manager tree` - 显示目录树结构␍
|
|
||||||
|
|
||||||
### 音频播放工具␍
|
- **替换代码** — 指定文件和要替换的内容
|
||||||
- 功能:播放音频文件␍
|
- **批量编辑** — 一次修改多处
|
||||||
- 用法示例:␍
|
- **查看代码** — 按行号范围查看
|
||||||
- `audio_player play` - 播放Ciallo~(∠・ω- )⌒☆-.mp3音频文件␍
|
|
||||||
- `/ciallo` - 播放音频文件␍
|
|
||||||
|
|
||||||
## 基本操作命令␍
|
### 代码搜索 (`code_search`)
|
||||||
|
|
||||||
### 系统信息命令␍
|
用于理解和搜索代码库:
|
||||||
- `/about` - 显示程序信息和版本详情␍
|
|
||||||
|
- **项目结构** — 查看目录树
|
||||||
|
- **搜索代码** — 按关键词搜索文件
|
||||||
|
- **符号提取** — 提取函数、类定义
|
||||||
|
- **代码统计** — 代码行数、文件数统计
|
||||||
|
|
||||||
|
### Git 操作 (`git_tools`)
|
||||||
|
|
||||||
|
- `status` — 查看状态
|
||||||
|
- `diff` — 查看变更
|
||||||
|
- `log` — 查看提交历史
|
||||||
|
- `commit <消息>` — 提交更改
|
||||||
|
|
||||||
|
### 文件管理 (`file_manager`)
|
||||||
|
|
||||||
|
| 操作 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| `list` | 列出目录内容 |
|
||||||
|
| `read <路径>` | 读取文件 |
|
||||||
|
| `write <路径> -c "内容"` | 写入文件 |
|
||||||
|
| `append <路径> -c "内容"` | 追加内容 |
|
||||||
|
| `delete <路径>` | 删除文件 |
|
||||||
|
| `mkdir <路径>` | 创建目录 |
|
||||||
|
| `copy <源> <目标>` | 复制文件 |
|
||||||
|
| `move <源> <目标>` | 移动文件 |
|
||||||
|
| `info <路径>` | 查看文件信息 |
|
||||||
|
| `tree` | 显示目录树 |
|
||||||
|
|
||||||
|
### 命令执行 (`cmd_executor`)
|
||||||
|
|
||||||
|
直接在沙箱中执行系统命令,支持超时控制。
|
||||||
|
|
||||||
|
### AI 搜索 (`ai_search`)
|
||||||
|
|
||||||
|
使用 AI 进行智能搜索和问答。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 自然语言交互
|
||||||
|
|
||||||
|
你不需要记住命令格式,直接用自然语言描述需求即可:
|
||||||
|
|
||||||
|
```
|
||||||
|
"帮我看看 src/app.py 的第 10 到 20 行"
|
||||||
|
"搜索项目里所有用到 requests.get 的地方"
|
||||||
|
"提交代码,消息是修复登录bug"
|
||||||
|
"统计一下这个项目的代码量"
|
||||||
|
```
|
||||||
|
|
||||||
|
AI 会自动理解你的意图并调用合适的工具。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 远程连接
|
||||||
|
|
||||||
|
### 启动 WebSocket 服务
|
||||||
|
|
||||||
|
```
|
||||||
|
/remote start <端口> <密码>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 代理模式
|
||||||
|
|
||||||
|
```
|
||||||
|
/remote proxy <中继地址> <服务器密码> <本地端口> <本地密码>
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 使用技巧
|
## 使用技巧
|
||||||
|
|
||||||
1. **自然语言交互**:直接用自然语言与AI对话,AI会理解您的意图并自动调用相应工具。␍
|
1. **TUI 模式** — 默认启动 TUI 图形界面,体验更好;使用 `--cli` 切换到传统模式
|
||||||
|
2. **引擎选择** — 本地开发用 `ollama`,深度思考用 `qwq`,通用场景用 `mimo`
|
||||||
|
3. **代码编辑** — 描述需求即可,AI 会自动使用代码编辑器
|
||||||
|
4. **Git 工作流** — 自然语言描述,AI 自动执行 Git 操作
|
||||||
|
5. **插件扩展** — 可以自行开发插件,详见 [开发文档](开发文档/开发文档.md)
|
||||||
|
|
||||||
2. **工具调用**:当AI需要执行特定任务时,会自动调用相应的插件工具,并在屏幕上显示执行结果。␍
|
---
|
||||||
␍
|
|
||||||
3. **聊天记录管理**:可以随时保存当前对话,在需要时加载之前的对话继续交流。␍
|
|
||||||
␍
|
|
||||||
4. **路径操作**:␍
|
|
||||||
- 支持用户主目录下的绝对路径操作␍
|
|
||||||
- 支持项目目录和当前目录下的相对路径操作␍
|
|
||||||
- 文件大小限制为50MB␍
|
|
||||||
␍
|
|
||||||
5. **等待动画**:AI思考时会显示随机的温馨句子,每5秒更换一次。␍
|
|
||||||
␍
|
|
||||||
6. **插件命令**:可以使用 `/命令名` 直接调用插件功能,如 `/file`、`/read`、`/write`、`/ciallo` 等。␍
|
|
||||||
|
|
||||||
## 注意事项
|
## 注意事项
|
||||||
|
|
||||||
- 请勿尝试访问系统关键目录(如Windows系统目录、/etc等)␍
|
- 文件操作大小限制为 50MB
|
||||||
- 文件操作大小限制为50MB␍
|
- 代码执行在沙箱环境中,有超时限制
|
||||||
- 音频播放需要系统支持相应的音频格式␍
|
- 音频播放需要系统支持相应格式
|
||||||
- 可以随时使用 `/help` 命令查看帮助信息
|
- TUI 模式需要安装 `textual` 和 `rich`
|
||||||
+150
-25
@@ -1,36 +1,161 @@
|
|||||||
# xiaoli cli
|
# XiaoLi Pro-CLI
|
||||||
|
|
||||||
#### Description
|
<p align="center">
|
||||||
本仓库用于提交xiaoli系列源代码,本仓库源于github 2024年九月项目,因账户2fa码丢失,现已迁移至gitee
|
<strong>Intelligent Programming Assistant — Precise Code Editing, Code Search, Git Integration, Multi-AI Engine Support</strong>
|
||||||
|
</p>
|
||||||
|
|
||||||
#### Software Architecture
|
<p align="center">
|
||||||
Software architecture description
|
<img src="https://img.shields.io/badge/version-5.0.0-blue" alt="version">
|
||||||
|
<img src="https://img.shields.io/badge/python-3.8+-green" alt="python">
|
||||||
|
<img src="https://img.shields.io/badge/license-MIT-orange" alt="license">
|
||||||
|
</p>
|
||||||
|
|
||||||
#### Installation
|
---
|
||||||
|
|
||||||
1. xxxx
|
## ✨ Features
|
||||||
2. xxxx
|
|
||||||
3. xxxx
|
|
||||||
|
|
||||||
#### Instructions
|
- 🤖 **Multi AI Engines** — Ollama, MiMo, GLM, QwQ, MaaS and more
|
||||||
|
- 🔧 **Precise Code Editing** — Search & replace, batch edits, diff comparison, line-level operations
|
||||||
|
- 🔍 **Code Search & Understanding** — Cross-file search, regex matching, symbol extraction, dependency analysis
|
||||||
|
- 🔄 **Git Integration** — Full Git workflow support
|
||||||
|
- 🎨 **Dual UI Modes** — TUI graphical interface (default) + traditional CLI mode
|
||||||
|
- 🧩 **Triple Protocol Plugin System** — Plugin / Skill / MCP protocols
|
||||||
|
- 🌐 **WebSocket Remote** — Remote connections and QQ bot integration
|
||||||
|
- 🛡️ **Code Sandbox** — Secure code execution environment
|
||||||
|
|
||||||
1. xxxx
|
## 📦 Quick Start
|
||||||
2. xxxx
|
|
||||||
3. xxxx
|
|
||||||
|
|
||||||
#### Contribution
|
### Installation
|
||||||
|
|
||||||
1. Fork the repository
|
```bash
|
||||||
2. Create Feat_xxx branch
|
git clone https://gitee.com/shuiyu1123/xiaoli-cli.git
|
||||||
3. Commit your code
|
cd xiaoli-cli
|
||||||
4. Create Pull Request
|
pip install -r requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
#### Gitee Feature
|
```bash
|
||||||
|
# TUI mode (default, requires textual)
|
||||||
|
python -m xiaoli
|
||||||
|
|
||||||
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
|
# CLI mode
|
||||||
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
|
python -m xiaoli --cli
|
||||||
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
|
|
||||||
4. The most valuable open source project [GVP](https://gitee.com/gvp)
|
# Specify engine
|
||||||
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
|
python -m xiaoli --engine mimo
|
||||||
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
|
||||||
|
# Show version
|
||||||
|
python -m xiaoli --version
|
||||||
|
```
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
**Core:**
|
||||||
|
|
||||||
|
| Package | Purpose |
|
||||||
|
|---------|---------|
|
||||||
|
| `colorama` | Terminal colored output |
|
||||||
|
| `openai` | OpenAI compatible API |
|
||||||
|
| `requests` | HTTP requests |
|
||||||
|
| `Pillow` | Image processing |
|
||||||
|
| `numpy` | Numerical computation |
|
||||||
|
|
||||||
|
**Optional:**
|
||||||
|
|
||||||
|
| Package | Purpose |
|
||||||
|
|---------|---------|
|
||||||
|
| `textual` | TUI mode |
|
||||||
|
| `opencv-python` | Enhanced image processing |
|
||||||
|
| `pygame` | Audio playback |
|
||||||
|
| `websockets` | WebSocket remote |
|
||||||
|
|
||||||
|
## 🏗️ Architecture
|
||||||
|
|
||||||
|
```
|
||||||
|
xiaoli-cli/
|
||||||
|
├── xiaoli/ # Core package (v3.6+ modular architecture)
|
||||||
|
│ ├── __main__.py # Entry point (python -m xiaoli)
|
||||||
|
│ ├── app.py # Main application (orchestration layer)
|
||||||
|
│ ├── config.py # Configuration management
|
||||||
|
│ ├── engines.py # AI engine management
|
||||||
|
│ ├── sandbox.py # Code execution sandbox
|
||||||
|
│ ├── prompt.py # System prompts
|
||||||
|
│ ├── tui.py # TUI interface
|
||||||
|
│ ├── conversation/ # Conversation handling
|
||||||
|
│ └── display/ # Display output (CLI/TUI dual mode)
|
||||||
|
│
|
||||||
|
├── plugins/ # Plugins (Plugin protocol)
|
||||||
|
│ ├── code_editor.py # Precise code editor ⭐
|
||||||
|
│ ├── code_search.py # Code search & understanding ⭐
|
||||||
|
│ ├── git_tools.py # Git version control ⭐
|
||||||
|
│ └── ... # 20+ plugins
|
||||||
|
│
|
||||||
|
├── skills/ # Skills (Skill protocol)
|
||||||
|
├── ai_engines/ # AI engine implementations
|
||||||
|
├── image_engine/ # Image processing engines
|
||||||
|
├── tests/ # Test suite
|
||||||
|
└── requirements.txt # Dependencies
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎮 Commands
|
||||||
|
|
||||||
|
| Command | Description |
|
||||||
|
|---------|-------------|
|
||||||
|
| `/help` | Show help |
|
||||||
|
| `/quit` | Exit |
|
||||||
|
| `/about` | Show version info |
|
||||||
|
| `/model <engine>` | Switch AI engine |
|
||||||
|
| `/engine list` | List available engines |
|
||||||
|
| `/chat save <name>` | Save conversation |
|
||||||
|
| `/chat list` | List conversations |
|
||||||
|
| `/chat open <name>` | Load conversation |
|
||||||
|
| `/tui` | Toggle TUI mode |
|
||||||
|
|
||||||
|
## 🔌 Plugin Development
|
||||||
|
|
||||||
|
XiaoLi supports three plugin protocols. See [Development Documentation](开发文档/开发文档.md) for details.
|
||||||
|
|
||||||
|
### Plugin Protocol
|
||||||
|
|
||||||
|
```python
|
||||||
|
class Plugin:
|
||||||
|
def get_tool_info(self):
|
||||||
|
return {"name": "my_tool", "description": "...", "keywords": [...]}
|
||||||
|
|
||||||
|
def handle(self, args: str) -> str:
|
||||||
|
return "result"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Skill Protocol
|
||||||
|
|
||||||
|
```python
|
||||||
|
from skills.base import Skill, SkillResult
|
||||||
|
|
||||||
|
class MySkill(Skill):
|
||||||
|
name = "my_skill"
|
||||||
|
def run(self, **kwargs) -> SkillResult:
|
||||||
|
return SkillResult(success=True, message="Done")
|
||||||
|
```
|
||||||
|
|
||||||
|
### MCP Protocol
|
||||||
|
|
||||||
|
Supports Anthropic/OpenAI Model Context Protocol for seamless external tool integration.
|
||||||
|
|
||||||
|
## 🤝 Contributing
|
||||||
|
|
||||||
|
1. Fork the repository
|
||||||
|
2. Create a feature branch (`git checkout -b feat/amazing-feature`)
|
||||||
|
3. Commit your changes (`git commit -m 'feat: add amazing feature'`)
|
||||||
|
4. Push to the branch (`git push origin feat/amazing-feature`)
|
||||||
|
5. Create a Pull Request
|
||||||
|
|
||||||
|
## 📄 License
|
||||||
|
|
||||||
|
This project is licensed under the [MIT License](LICENSE).
|
||||||
|
|
||||||
|
## 🔗 Links
|
||||||
|
|
||||||
|
- 📦 Gitee: https://gitee.com/shuiyu1123/xiaoli-cli
|
||||||
|
- 📖 [Development Docs](开发文档/开发文档.md)
|
||||||
|
- 📋 [Changelog](CHANGELOG.md)
|
||||||
@@ -1,26 +1,155 @@
|
|||||||
# 小狸 Pro-CLI
|
# 小狸 Pro-CLI
|
||||||
|
|
||||||
智能编程助手 — 支持精准代码编辑、代码搜索、Git 版本控制、多 AI 引擎切换。
|
<p align="center">
|
||||||
|
<strong>智能编程助手 — 支持精准代码编辑、代码搜索、Git 版本控制、多 AI 引擎切换</strong>
|
||||||
|
</p>
|
||||||
|
|
||||||
## 快速开始
|
<p align="center">
|
||||||
|
<img src="https://img.shields.io/badge/version-5.0.0-blue" alt="version">
|
||||||
|
<img src="https://img.shields.io/badge/python-3.8+-green" alt="python">
|
||||||
|
<img src="https://img.shields.io/badge/license-MIT-orange" alt="license">
|
||||||
|
</p>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✨ 特性
|
||||||
|
|
||||||
|
- 🤖 **多 AI 引擎** — 支持 Ollama、MiMo、智谱 GLM、QwQ、MaaS 等,随时切换
|
||||||
|
- 🔧 **精准代码编辑** — 搜索替换、批量编辑、diff 对比、行级操作
|
||||||
|
- 🔍 **代码搜索理解** — 跨文件搜索、正则匹配、符号提取、依赖分析
|
||||||
|
- 🔄 **Git 版本控制** — 完整 Git 操作支持
|
||||||
|
- 🎨 **双模式界面** — TUI 图形化界面(默认)+ 传统命令行模式
|
||||||
|
- 🧩 **三协议插件系统** — Plugin 协议 / Skill 协议 / MCP 协议
|
||||||
|
- 🌐 **WebSocket 远程** — 支持远程连接和 QQ 机器人集成
|
||||||
|
- 🛡️ **代码沙箱** — 安全的代码执行环境
|
||||||
|
|
||||||
|
## 📦 快速开始
|
||||||
|
|
||||||
|
### 安装
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# 克隆仓库
|
||||||
|
git clone https://gitee.com/shuiyu1123/xiaoli-cli.git
|
||||||
|
cd xiaoli-cli
|
||||||
|
|
||||||
# 安装依赖
|
# 安装依赖
|
||||||
pip install colorama openai requests Pillow numpy
|
pip install -r requirements.txt
|
||||||
|
|
||||||
# 启动 CLI
|
|
||||||
python -m xiaoli
|
|
||||||
|
|
||||||
# 或指定引擎
|
|
||||||
python -m xiaoli --engine mimo
|
|
||||||
|
|
||||||
# 启动 TUI 模式(需要 textual)
|
|
||||||
python -m xiaoli --tui
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 核心能力
|
### 启动
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# TUI 模式(默认,需 textual)
|
||||||
|
python -m xiaoli
|
||||||
|
|
||||||
|
# CLI 模式
|
||||||
|
python -m xiaoli --cli
|
||||||
|
|
||||||
|
# 指定引擎
|
||||||
|
python -m xiaoli --engine mimo
|
||||||
|
|
||||||
|
# 查看版本
|
||||||
|
python -m xiaoli --version
|
||||||
|
```
|
||||||
|
|
||||||
|
### 依赖
|
||||||
|
|
||||||
|
**核心依赖:**
|
||||||
|
|
||||||
|
| 包名 | 用途 |
|
||||||
|
|------|------|
|
||||||
|
| `colorama` | 终端彩色输出 |
|
||||||
|
| `openai` | OpenAI 兼容接口 |
|
||||||
|
| `requests` | HTTP 请求 |
|
||||||
|
| `Pillow` | 图像处理 |
|
||||||
|
| `numpy` | 数值计算 |
|
||||||
|
|
||||||
|
**可选依赖:**
|
||||||
|
|
||||||
|
| 包名 | 用途 |
|
||||||
|
|------|------|
|
||||||
|
| `textual` | TUI 模式 |
|
||||||
|
| `opencv-python` | 图像处理增强 |
|
||||||
|
| `pygame` | 音频播放 |
|
||||||
|
| `websockets` | WebSocket 远程 |
|
||||||
|
|
||||||
|
## 🏗️ 项目结构
|
||||||
|
|
||||||
|
```
|
||||||
|
xiaoli-cli/
|
||||||
|
├── xiaoli/ # 核心包(v3.6+ 模块化架构)
|
||||||
|
│ ├── __init__.py # 版本信息
|
||||||
|
│ ├── __main__.py # 入口点 (python -m xiaoli)
|
||||||
|
│ ├── app.py # 主应用(编排层)
|
||||||
|
│ ├── config.py # 配置管理
|
||||||
|
│ ├── engines.py # AI 引擎管理
|
||||||
|
│ ├── sandbox.py # 代码安全沙箱
|
||||||
|
│ ├── prompt.py # 系统提示词
|
||||||
|
│ ├── tui.py # TUI 界面
|
||||||
|
│ ├── conversation/ # 对话处理
|
||||||
|
│ │ ├── __init__.py # 响应解析器
|
||||||
|
│ │ └── history.py # 聊天记录
|
||||||
|
│ └── display/ # 显示输出
|
||||||
|
│ └── __init__.py # CLI/TUI 双模式
|
||||||
|
│
|
||||||
|
├── plugins/ # 插件(Plugin 协议)
|
||||||
|
│ ├── code_editor.py # 精准代码编辑器 ⭐
|
||||||
|
│ ├── code_search.py # 代码搜索理解 ⭐
|
||||||
|
│ ├── git_tools.py # Git 版本控制 ⭐
|
||||||
|
│ ├── file_manager.py # 文件管理
|
||||||
|
│ ├── cmd_executor.py # 命令执行
|
||||||
|
│ ├── ai_search.py # AI 搜索
|
||||||
|
│ ├── auto_engineer.py # 自动工程化
|
||||||
|
│ ├── project_analyzer.py # 项目分析
|
||||||
|
│ ├── git_workflow.py # Git 工作流
|
||||||
|
│ ├── scheduler.py # 任务调度
|
||||||
|
│ └── ...
|
||||||
|
│
|
||||||
|
├── skills/ # 技能(Skill 协议)
|
||||||
|
│ ├── base.py # 技能基类
|
||||||
|
│ ├── code_stats.py # 代码统计
|
||||||
|
│ └── file-manager/ # 文件管理技能
|
||||||
|
│
|
||||||
|
├── ai_engines/ # AI 引擎
|
||||||
|
│ ├── ollama_engine.py # Ollama 本地模型
|
||||||
|
│ ├── mimo_engine.py # 小米 MiMo
|
||||||
|
│ ├── GLM_http_engine.py # 智谱 GLM
|
||||||
|
│ ├── qwq_engine.py # QwQ 深度思考
|
||||||
|
│ ├── xfyun_spark_engine.py # 讯飞星火
|
||||||
|
│ ├── SDK_openAI.py # OpenAI 兼容 SDK
|
||||||
|
│ └── ...
|
||||||
|
│
|
||||||
|
├── image_engine/ # 图像引擎
|
||||||
|
├── core/ # 旧版核心模块(兼容)
|
||||||
|
├── tests/ # 测试套件
|
||||||
|
├── 开发文档/ # 开发文档
|
||||||
|
├── ai_cli.py # 旧版入口(兼容)
|
||||||
|
├── launcher.py # 启动器
|
||||||
|
├── websocket_server.py # WebSocket 服务
|
||||||
|
└── requirements.txt # 依赖清单
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎮 使用指南
|
||||||
|
|
||||||
|
### 内置命令
|
||||||
|
|
||||||
|
| 命令 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| `/help` | 显示帮助信息 |
|
||||||
|
| `/quit` | 退出程序 |
|
||||||
|
| `/about` | 显示版本信息 |
|
||||||
|
| `/model <引擎>` | 切换 AI 引擎 |
|
||||||
|
| `/engine list` | 列出可用引擎 |
|
||||||
|
| `/chat save <名称>` | 保存聊天记录 |
|
||||||
|
| `/chat list` | 列出聊天记录 |
|
||||||
|
| `/chat open <名称>` | 加载聊天记录 |
|
||||||
|
| `/file.read <路径>` | 读取文件 |
|
||||||
|
| `/tui` | 切换 TUI 模式 |
|
||||||
|
|
||||||
|
### 核心工具
|
||||||
|
|
||||||
|
#### 代码编辑器 (`code_editor`)
|
||||||
|
|
||||||
### 代码编辑 (code_editor)
|
|
||||||
```bash
|
```bash
|
||||||
# 精准替换
|
# 精准替换
|
||||||
{"action":"use_tool","tool":"code_editor","args":"edit src/app.py
|
{"action":"use_tool","tool":"code_editor","args":"edit src/app.py
|
||||||
@@ -37,7 +166,8 @@ def new():
|
|||||||
{"action":"use_tool","tool":"code_editor","args":"read_range src/app.py 10 20"}
|
{"action":"use_tool","tool":"code_editor","args":"read_range src/app.py 10 20"}
|
||||||
```
|
```
|
||||||
|
|
||||||
### 代码搜索 (code_search)
|
#### 代码搜索 (`code_search`)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 项目结构
|
# 项目结构
|
||||||
{"action":"use_tool","tool":"code_search","args":"structure ."}
|
{"action":"use_tool","tool":"code_search","args":"structure ."}
|
||||||
@@ -52,7 +182,8 @@ def new():
|
|||||||
{"action":"use_tool","tool":"code_search","args":"stats ."}
|
{"action":"use_tool","tool":"code_search","args":"stats ."}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Git 操作 (git_tools)
|
#### Git 操作 (`git_tools`)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
{"action":"use_tool","tool":"git_tools","args":"status"}
|
{"action":"use_tool","tool":"git_tools","args":"status"}
|
||||||
{"action":"use_tool","tool":"git_tools","args":"diff"}
|
{"action":"use_tool","tool":"git_tools","args":"diff"}
|
||||||
@@ -60,74 +191,98 @@ def new():
|
|||||||
{"action":"use_tool","tool":"git_tools","args":"commit 修复bug"}
|
{"action":"use_tool","tool":"git_tools","args":"commit 修复bug"}
|
||||||
```
|
```
|
||||||
|
|
||||||
## 命令
|
### AI 引擎
|
||||||
|
|
||||||
| 命令 | 说明 |
|
|
||||||
|------|------|
|
|
||||||
| `/help` | 帮助信息 |
|
|
||||||
| `/quit` | 退出 |
|
|
||||||
| `/model <引擎>` | 切换 AI 引擎 |
|
|
||||||
| `/engine list` | 列出可用引擎 |
|
|
||||||
| `/chat save/list/open` | 聊天记录管理 |
|
|
||||||
| `/file.read <路径>` | 读取文件 |
|
|
||||||
| `/tui` | 切换 TUI 模式 |
|
|
||||||
|
|
||||||
## AI 引擎
|
|
||||||
|
|
||||||
| 引擎 | 类型 | 说明 |
|
| 引擎 | 类型 | 说明 |
|
||||||
|------|------|------|
|
|------|------|------|
|
||||||
| ollama | 本地 | Ollama 本地模型 |
|
| `ollama` | 本地 | Ollama 本地模型,无需 API 密钥 |
|
||||||
| mimo | 云端 | 小米 MiMo |
|
| `mimo` | 云端 | 小米 MiMo |
|
||||||
| glm_http | 云端 | 智谱 GLM |
|
| `glm_http` | 云端 | 智谱 GLM |
|
||||||
| qwq | 云端 | QwQ 深度思考 |
|
| `qwq` | 云端 | QwQ 深度思考引擎 |
|
||||||
| maas_http | 云端 | MaaS |
|
| `maas_http` | 云端 | MaaS |
|
||||||
|
| `spark` | 云端 | 讯飞星火 |
|
||||||
|
| `iflow` | 云端 | iFlow API |
|
||||||
|
|
||||||
## 架构
|
### 远程连接
|
||||||
|
|
||||||
```
|
|
||||||
xiaoli/ # 新架构(v3.6)
|
|
||||||
├── __init__.py # 版本信息
|
|
||||||
├── __main__.py # 入口点 (python -m xiaoli)
|
|
||||||
├── app.py # 主应用(薄编排层)
|
|
||||||
├── config.py # 配置管理
|
|
||||||
├── engines.py # AI 引擎管理
|
|
||||||
├── sandbox.py # 代码安全沙箱
|
|
||||||
├── prompt.py # 系统提示词
|
|
||||||
├── conversation/ # 对话处理
|
|
||||||
│ ├── __init__.py # 响应解析器
|
|
||||||
│ └── history.py # 聊天记录
|
|
||||||
└── display/ # 显示输出
|
|
||||||
└── __init__.py # CLI/TUI 双模式
|
|
||||||
|
|
||||||
plugins/ # 插件(Liugin 协议)
|
|
||||||
├── code_editor.py # 精准代码编辑器 ⭐
|
|
||||||
├── code_search.py # 代码搜索理解 ⭐
|
|
||||||
├── git_tools.py # Git 版本控制 ⭐
|
|
||||||
├── file_manager.py # 文件管理
|
|
||||||
├── ai_search.py # AI 搜索
|
|
||||||
├── cmd_executor.py # 命令执行
|
|
||||||
└── ...
|
|
||||||
|
|
||||||
ai_engines/ # AI 引擎
|
|
||||||
├── ollama_engine.py
|
|
||||||
├── mimo_engine.py
|
|
||||||
├── GLM_http_engine.py
|
|
||||||
└── ...
|
|
||||||
```
|
|
||||||
|
|
||||||
## 开发
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 克隆
|
# 启动 WebSocket 服务
|
||||||
git clone https://gitee.com/shuiyu1123/xiaoli-cli.git
|
/remote start 9079 your_password
|
||||||
|
|
||||||
# 安装依赖
|
# 代理模式
|
||||||
pip install -r requirements.txt
|
/remote proxy relay.example.com:9079 server_pwd 12345 pc_pwd
|
||||||
|
|
||||||
# 运行
|
|
||||||
python -m xiaoli
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 许可证
|
## 🔌 插件开发
|
||||||
|
|
||||||
MIT License
|
小狸支持三种插件协议,详见 [开发文档](开发文档/开发文档.md)。
|
||||||
|
|
||||||
|
### Plugin 协议
|
||||||
|
|
||||||
|
```python
|
||||||
|
class Plugin:
|
||||||
|
"""我的插件"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.usage = "使用说明"
|
||||||
|
self.cli = None
|
||||||
|
|
||||||
|
def get_tool_info(self):
|
||||||
|
return {
|
||||||
|
"name": "my_tool",
|
||||||
|
"description": "工具描述",
|
||||||
|
"keywords": ["关键词"],
|
||||||
|
"usage": self.usage
|
||||||
|
}
|
||||||
|
|
||||||
|
def handle(self, args: str) -> str:
|
||||||
|
return "处理结果"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Skill 协议
|
||||||
|
|
||||||
|
```python
|
||||||
|
from skills.base import Skill, SkillResult
|
||||||
|
|
||||||
|
class MySkill(Skill):
|
||||||
|
name = "my_skill"
|
||||||
|
description = "技能描述"
|
||||||
|
|
||||||
|
def run(self, **kwargs) -> SkillResult:
|
||||||
|
return SkillResult(success=True, message="完成")
|
||||||
|
```
|
||||||
|
|
||||||
|
### MCP 协议
|
||||||
|
|
||||||
|
支持 Anthropic/OpenAI 标准的 Model Context Protocol,可与外部工具无缝集成。
|
||||||
|
|
||||||
|
## 🧪 测试
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 运行所有测试
|
||||||
|
python -m pytest tests/
|
||||||
|
|
||||||
|
# 运行特定测试
|
||||||
|
python -m pytest tests/test_sandbox.py
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🤝 贡献
|
||||||
|
|
||||||
|
欢迎贡献!请阅读 [贡献指南](CONTRIBUTING.md)。
|
||||||
|
|
||||||
|
1. Fork 本仓库
|
||||||
|
2. 创建特性分支 (`git checkout -b feat/amazing-feature`)
|
||||||
|
3. 提交更改 (`git commit -m 'feat: add amazing feature'`)
|
||||||
|
4. 推送分支 (`git push origin feat/amazing-feature`)
|
||||||
|
5. 创建 Pull Request
|
||||||
|
|
||||||
|
## 📄 许可证
|
||||||
|
|
||||||
|
本项目采用 [MIT License](LICENSE) 开源许可证。
|
||||||
|
|
||||||
|
## 🔗 链接
|
||||||
|
|
||||||
|
- 📦 Gitee: https://gitee.com/shuiyu1123/xiaoli-cli
|
||||||
|
- 📖 [开发文档](开发文档/开发文档.md)
|
||||||
|
- 📋 [更新日志](CHANGELOG.md)
|
||||||
|
- ❓ [使用指南](HELP.md)
|
||||||
Reference in new issue
Block a user