# 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 - **工具系统** - 支持自定义工具,大模型可调用工具获取信息 ## 界面展示 ### 对话界面 ![对话界面](assets/对话.jpg) 自然语言交互界面,AI 实时展示思考过程和工具调用。 ### 对话历史 ![对话历史](assets/对话历史.jpg) 查看历史对话记录,支持继续对话和重新生成。 ### 终端界面 ![终端界面](assets/终端.jpg) 支持在终端中直接执行命令,实时查看执行结果。 ### 节点管理 ![节点管理](assets/节点.jpg) 管理多台服务器节点,支持添加、编辑、删除节点。 ### 分享功能 ![分享对话设置](assets/分享对话设置.jpg) 分享对话时支持设置标题、密码保护、有效期,以及选择展示内容(输入、思考、工具调用、回答)。 ![分享页面预览](assets/分享页面预览.jpg) 分享页面纯净展示,无需登录即可查看对话内容,支持密码保护访问。 ## 技术栈 ### 后端 - 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余项工具 ### 工具管理 ![工具列表](assets/工具列表.jpg) 查看所有可用工具,支持启用/禁用工具。 ![工具编辑](assets/工具编辑.jpg) 自定义工具配置,包括工具名称、描述、参数定义和执行代码。 ### 工具调用流程 ``` 用户消息 → 大模型 → 判断是否需要调用工具 ↓ 返回 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) | | 沙盒路径 | 文件操作允许的路径范围 | #### 模型配置 ![模型配置](assets/模型配置.jpg) 配置大模型 API,支持 OpenAI 兼容的 API 接口。 #### 全局配置 ![全局配置](assets/全局配置.jpg) 系统全局设置,包括提示词模板、沙盒路径、迭代次数等。 #### 用户配置 ![用户配置](assets/用户配置.jpg) 用户个人设置,包括主题、语言等偏好配置。 ### 自定义工具 工具代码需要定义 `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 回答的完整流程: ![对话完整过程](assets/对话完整过程.png) ### 对话流程说明 用户请求:"写一个 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 返回了文件创建成功的摘要,包括文件路径、大小、创建时间,以及文件内容说明和使用方法。 ## 任务测试 ### 任务测试脚本 ![任务测试脚本](assets/任务测试脚本.png) ### 任务测试结果 ![任务测试结果](assets/任务测试结果.png) ### 任务测试完整流程(包含思考、工具调用、回答过程,输入内容太长暂未展示) ![任务测试流程](assets/任务测试流程.png)