INFO: Started server process [xxx]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000
6. 使用CLI客户端(新终端)
python cli.py
看到欢迎界面且 API服务正常运行 表示一切就绪。
📖 使用指南
示例输入输出
以下是一个完整的交互示例,展示从提问到代码执行的全流程:
输入:
你 > 用Python写一个冒泡排序,保存为 bubble_sort.py
输出(AI自动调用 write_file 工具):
🔧 调用工具: write_file
文件已保存: bubble_sort.py
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
if __name__ == "__main__":
test = [64, 34, 25, 12, 22, 11, 90]
print("排序前:", test)
print("排序后:", bubble_sort(test))
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
Metax Claude Clone - 基于沐曦GPU的编程助手Agent
📖 项目简介
本项目是一个基于沐曦国产GPU的类Claude Code智能编程助手,专为第八届CCF开源创新大赛设计。
通过在沐曦GPU(64GB显存)上部署 Qwen2.5-7B-Instruct 大语言模型,结合FastAPI后端和Rich命令行前端,实现了:
🎯 核心亮点
✨ 功能特性
当前已实现
session_id多会话隔离,/clear命令清空记忆/read命令读取本地文件作为上下文/run命令直接执行Python代码并显示结果/status命令检查API服务是否正常运行list_files工具,支持列出指定目录下的所有文件和文件夹read_file、write_file、run_code、run_file、list_files五种工具logs/文件夹,按会话ID分文件存储--session指定会话ID,--log指定日志文件🛠️ 技术栈
📁 项目结构
metax-claude-clone/ ├── api.py # FastAPI后端服务(模型加载+推理+Function Calling工具调度) ├── cli.py # 命令行客户端(交互式编程助手) ├── test_model.py # 模型加载测试脚本 ├── test_tools.py # Function Calling 模板测试脚本 ├── test_api.py # API接口自动化测试脚本 ├── test_cli.py # CLI功能自动化测试脚本 ├── requirements.txt # Python依赖包列表 ├── 踩坑日志.md # 开发踩坑记录 ├── logs/ # 对话日志文件夹(自动创建) │ └── chat_xxxx.log # 按会话ID分文件存储 ├── workspace/ # 工作目录(代码文件测试区) └── README.md # 项目说明文档(本文件)
🚀 快速开始
环境要求
本项目的开发和测试均在 GiteeAI 算力容器 上完成。租用 GPU 实例后, 通过 JupyterLab 页面(File → New → Terminal)打开终端进行操作。
安装部署
1. 克隆项目
2. 安装 accelerate(模型加载必需)
3. 下载模型
运行测试脚本,首次执行会自动从 HuggingFace 下载 Qwen2.5-7B-Instruct 模型:
看到
模型加载成功表示模型已就绪。4. 安装其余依赖
模型下载完成后,安装其他 Python 依赖:
5. 启动 API 服务
看到以下输出表示启动成功:
6. 使用CLI客户端(新终端)
看到欢迎界面且
API服务正常运行表示一切就绪。📖 使用指南
示例输入输出
以下是一个完整的交互示例,展示从提问到代码执行的全流程:
输入:
输出(AI自动调用 write_file 工具):
输入:
输出:
输入:
输出:
基础对话
直接输入问题或代码需求:
AI会生成带语法高亮的代码:
多轮对话
支持上下文记忆,可以连续提问:
/read 命令 - 读取文件
将本地文件内容作为上下文提供给AI:
/clear 命令 - 清空对话记忆
清空当前会话的对话历史,开始全新的对话:
/run 命令 - 执行代码
直接运行Python代码文件并查看结果:
/status 命令 - 检查API状态
CLI命令行参数
启动CLI时支持以下参数:
--sessionpython cli.py --session my_project--logpython cli.py --log project.logAI自动工具调用(Function Calling)
AI可以根据需求自动调用工具,无需手动输入命令。当前支持 5 种工具:
list_filesread_filewrite_filerun_coderun_file模型通过
<tool_call>JSON</tool_call>格式输出工具调用,后端解析后执行并回传结果,模型再基于结果生成最终回答。API调用示例
🔧 配置说明
API参数
session_idCLI配置
在 cli.py 中可调整:
🧪 测试
测试模型加载
测试所有功能
📊 项目进度
⚠️ 已知限制
trust_remote_code=True加载的 Qwen tokenizer 在输入约 14000+ 字符时,tokenize()方法内部抛出TextEncodeInput类型错误(即使输入是合法str)。已通过激进的历史截断策略(保留最近 4 轮对话、文件内容截断至 2000 字符、工具结果截断至 3000 字符)将 prompt 控制在安全范围内。📝 开发记录
踩坑记录
详见 踩坑日志.md