# AITerm
**Repository Path**: newpc/aiterm
## Basic Information
- **Project Name**: AITerm
- **Description**: AITerm是一款基于AI的智能终端管理工具,通过自然语言指令远程管理服务器,提升运维效率。核心功能包括自然语言交互、多节点管理、智能命令生成、风险评估及实时执行反馈。支持快速部署、自定义提示词,兼容OpenAI API,并提供Web多端访问。技术栈采用Python/FastAPI后端和Vue 3前端,内置文件操作、HTTP请求等预设工具。项目开源地址:https://gitee.com/newp
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-04-16
- **Last Updated**: 2026-05-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# AITerm
[中文](README.md) | [English](README_en.md)
AI 驱动的智能终端管理工具,通过自然语言指令远程管理服务器。
### 重点
效果可以参考完整的跳转文字流程
## 简介
在日常运维服务器过程中,经常需要手动输入大量命令。AITerm 旨在通过自然语言交互,让 AI 自动完成这些任务,提升运维效率。
虽然市面上已有 Claude Code、Openclaw、OpenCode、Codex 等自动化工具,但在部署、使用灵活性方面个人认为仍有不足。AITerm 专注于:
- **快速部署** - 一键启动,无需复杂配置
- **模型配置简单** - 支持 OpenAI 兼容 API,配置直观
- **提示词自定义** - 系统提示词支持完全自定义
- **多端访问** - Web 架构,PC 端、移动端均可访问
> 本系统使用 DeepSeek 官方 API 调试开发,支持 `/chat/completions` 接口,兼容 OpenAI API 格式。
## 功能特性
- **自然语言交互** - 用自然语言描述任务,AI 自动规划并执行
- **多节点管理** - 支持管理多台服务器,统一调度执行
- **智能命令生成** - AI 自动生成适配目标系统的命令
- **风险评估** - 高风险命令自动识别,需人工确认后执行
- **实时执行反馈** - SSE 流式输出命令执行过程
- **跨平台支持** - 兼容 Windows、Linux、macOS
- **工具系统** - 支持自定义工具,大模型可调用工具获取信息
## 界面展示
### 对话界面

自然语言交互界面,AI 实时展示思考过程和工具调用。
### 对话历史

查看历史对话记录,支持继续对话和重新生成。
### 终端界面

支持在终端中直接执行命令,实时查看执行结果。
### 节点管理

管理多台服务器节点,支持添加、编辑、删除节点。
### 分享功能

分享对话时支持设置标题、密码保护、有效期,以及选择展示内容(输入、思考、工具调用、回答)。

分享页面纯净展示,无需登录即可查看对话内容,支持密码保护访问。
## 技术栈
### 后端
- Python 3.10+ / FastAPI
- SQLite
- OpenAI 兼容 API
### 前端
- Vue 3 + TypeScript
- Element Plus
- xterm.js
- CodeMirror 6
## 快速开始
### 环境要求
- Python 3.10+
- Node.js 18+
### 后端启动
```bash
cd backend
pip install -r requirements.txt
python main.py
```
服务默认运行在 `http://localhost:18084`
#### 数据库配置
backend/app/configs/app.json中配置数据库类型为sqlite/mysql
系统会自动创建表和字段
如果配置sqlite,默认路径为backend/data/aiterm.db
如需使用 MySQL,请按以下步骤操作:
1. 复制配置模板文件:
```bash
cd backend/configs
cp app.json.bak app.json
```
2. 编辑 `app.json`,修改数据库配置:
```json
{
"database": {
"driver": "mysql",
"mysql_host": "your_mysql_host",
"mysql_port": 3306,
"mysql_user": "your_username",
"mysql_password": "your_password",
"mysql_database": "aiterm"
}
}
```
### 前端启动
```bash
cd frontend
yarn install
yarn dev
```
前端开发服务器默认运行在 `http://localhost:18085`
### 生产部署
```bash
# 构建前端,自动输出到 backend/dist 目录
cd frontend
yarn build
# 启动后端,访问 http://localhost:18084 即可看到前端页面
cd ../backend
python main.py
```
## 工具系统
### 初始化默认配置
自动初始化系统提示词、历史轮数、工具调用轮数、命令黑白名单、sandbox路径等
```bash
python init_scripts/init_settings.py
```
### 初始化默认工具
工具页面 点击 【导入内置工具】,选择需要的工具导入
预设工具包括:
| 工具名称 | 显示名称 | 描述 |
| ---------------- | ------------ | ---------------------------------------- |
| get_current_time | 获取当前时间 | 获取当前日期、时间和星期 |
| read_file | 读取文件 | 读取指定路径的文件内容 |
| write_file | 写入文件 | 将内容写入指定路径的文件 |
| list_directory | 列出目录 | 列出指定目录下的文件和子目录 |
| delete_file | 删除文件 | 删除指定的文件 |
| copy_file | 复制文件 | 复制文件到指定路径 |
| move_file | 移动文件 | 移动或重命名文件 |
| http_request | HTTP请求 | 发送HTTP请求,支持GET、POST等方法 |
| download_file | 下载文件 | 从URL下载文件到本地 |
| create_directory | 创建目录 | 创建目录,支持多级创建 |
| get_file_info | 获取文件信息 | 获取文件的详细信息,包括大小、修改时间等 |
| search_files | 搜索文件 | 在目录中搜索匹配的文件 |
等等共计40余项工具
### 工具管理

查看所有可用工具,支持启用/禁用工具。

自定义工具配置,包括工具名称、描述、参数定义和执行代码。
### 工具调用流程
```
用户消息 → 大模型 → 判断是否需要调用工具
↓
返回 tool_calls(工具名+参数)
↓
系统执行工具代码 → 返回结果
↓
结果返回大模型 → 生成最终回复
```
## 对话流程
### 消息展示结构
对话过程中,消息按照以下顺序展示:
````
┌─────────────────────────────────────────────────────────────┐
│ 用户输入 │
│ "写一个 HTTP Python 服务器文件并保存" │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 🧠 思考中... (实时显示) │
│ ├─ 用户想要创建一个 HTTP 服务器文件... │
│ ├─ 我需要先查看当前目录结构... │
│ └─ 然后创建一个简单的 HTTP 服务器代码... │
│ │
│ ✅ 已思考 (耗时 2.3s) [展开/收起] │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 🔧 调用工具: list_directory (2024-01-15 10:30:15) │
│ ├─ 参数: {"path": "/data/sandbox"} │
│ └─ 结果: {"files": ["test.py", "data.json"]} │
│ │
│ 🔧 调用工具: write_file (2024-01-15 10:30:18) │
│ ├─ 参数: {"path": "/data/sandbox/http_server.py", ...} │
│ └─ 结果: {"success": true} │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 💬 AI 回答 │
│ 我已经为你创建了一个简单的 HTTP 服务器文件 `http_server.py`, │
│ 保存在沙盒目录中。你可以使用以下命令运行它: │
│ │
│ ```bash │
│ python http_server.py │
│ ``` │
└─────────────────────────────────────────────────────────────┘
````
### 多轮工具调用
当任务复杂时,大模型可能进行多轮思考和工具调用:
```
输入 → 思考1 → 工具调用1 → 思考2 → 工具调用2 → ... → 回答
```
示例流程:
| 步骤 | 类型 | 内容说明 |
| ---- | ---- | ---------------------------------- |
| 1 | 输入 | 用户发送消息 |
| 2 | 思考 | 大模型分析任务,规划执行步骤 |
| 3 | 工具 | 调用 `list_directory` 查看目录结构 |
| 4 | 思考 | 根据目录内容,决定下一步操作 |
| 5 | 工具 | 调用 `write_file` 创建文件 |
| 6 | 思考 | 确认文件创建成功,准备回答 |
| 7 | 回答 | 生成最终回复 |
### 实时显示特性
- **思考过程实时流式输出** - 用户可以看到大模型的思考过程
- **工具调用即时反馈** - 显示工具名称、参数和执行结果
- **时间信息** - 每个思考阶段和工具调用都显示时间戳
- **独立展开控制** - 思考和工具调用区域可独立展开/收起
### 配置选项
在全局设置中可以配置:
| 配置项 | 说明 |
| ------------ | ---------------------------------- |
| 显示对话输入 | 是否显示每次调用大模型时的输入内容 |
| 最大迭代次数 | 工具调用的最大循环次数(默认 20) |
| 沙盒路径 | 文件操作允许的路径范围 |
#### 模型配置

配置大模型 API,支持 OpenAI 兼容的 API 接口。
#### 全局配置

系统全局设置,包括提示词模板、沙盒路径、迭代次数等。
#### 用户配置

用户个人设置,包括主题、语言等偏好配置。
### 自定义工具
工具代码需要定义 `execute` 函数:
```python
def execute(arguments):
"""
arguments: dict - 工具参数
返回: 工具执行结果
"""
# 在这里编写你的工具逻辑
return {"success": True, "result": "..."}
```
## 使用示例
1. 访问 Web 界面,配置 LLM API
2. 在聊天界面输入自然语言指令,如:
- "查看系统内存使用情况"
- "安装 nginx 并配置反向代理"
- "检查磁盘空间并清理临时文件"
3. AI 自动生成命令计划,确认后执行
4. 实时查看执行结果
## 项目结构
```
AITerm/
├── backend/ # 后端服务
│ ├── app/ # 应用模块
│ │ ├── api/ # API 路由
│ │ ├── db/ # 数据库模型
│ │ ├── models/ # Pydantic 模型
│ │ ├── repositories/ # 数据访问层
│ │ └── services/ # 业务逻辑层
│ ├── init_scripts/ # 初始化脚本
│ ├── dist/ # 前端构建输出(自动生成)
│ └── main.py # 入口文件
├── frontend/ # 前端应用
│ ├── src/ # 源代码
│ └── public/ # 静态资源
├── assets/ # 文档图片
└── README.md
```
## 完整对话示例
以下是一个完整的对话示例,展示了从用户输入到 AI 回答的完整流程:

### 对话流程说明
用户请求:"写一个 HTTP Python 的代码文件并保存"
**第 1 轮迭代:**
| 阶段 | 内容 |
| -------- | ------------------------------------------------------- |
| 思考 | 分析用户需求,决定先查看沙盒目录结构 |
| 工具调用 | `list_directory` - 查看目录 `I:/sandbox` |
| 结果 | 发现目录中已有 `flask_app`、`http_server.py`、`main.py` |
**第 2 轮迭代:**
| 阶段 | 内容 |
| -------- | ------------------------------------------------- |
| 思考 | 决定创建一个新的综合 HTTP 示例文件 `http_demo.py` |
| 工具调用 | `write_file` - 写入完整的 HTTP 服务器代码 |
| 结果 | 成功创建 6.6 KB 的 Python 文件 |
**第 3 轮迭代:**
| 阶段 | 内容 |
| -------- | ------------------------------ |
| 思考 | 验证文件是否创建成功 |
| 工具调用 | `get_file_info` - 获取文件信息 |
| 结果 | 确认文件创建成功,显示文件详情 |
**最终回答:**
AI 返回了文件创建成功的摘要,包括文件路径、大小、创建时间,以及文件内容说明和使用方法。
## 任务测试
### 任务测试脚本

### 任务测试结果

### 任务测试完整流程(包含思考、工具调用、回答过程,输入内容太长暂未展示)
