基于华为开发者空间的Cherry Studio代码分析与智能重构实战

举报
Damon小智 发表于 2025/08/05 13:12:47 2025/08/05
【摘要】 本案例演示如何在华为开发者空间云主机上,搭建Cherry Studio开发环境,结合DeepSeek-R1模型进行Python代码分析、性能优化建议、代码重构和单元测试生成等实际开发任务。通过阅读本文,您将完成从环境搭建到深度实战的全流程,能够在 Cherry Studio 中高效利用本地 DeepSeek-R1 服务,使用AI快速进行深度代码质量分析,显著提升代码质量和开发效率。

基于华为开发者空间的Cherry Studio代码分析与智能重构实战

1 概述

1.1 案例介绍

本案例演示如何在华为开发者空间云主机上,搭建Cherry Studio开发环境,结合DeepSeek-R1模型进行Python代码分析、性能优化建议、代码重构和单元测试生成等实际开发任务。

1.2 适用对象

  • Python开发工程师
  • 代码质量管理团队
  • 软件架构师
  • 计算机科学专业学生

1.3 案例时长

预计 90 分钟

1.4 案例流程

  1. 开启华为开发者空间云主机
  2. 安装 Linux 版 Cherry Studio
  3. 安装并启动 Ollama 服务
  4. 部署 DeepSeek-R1 代码分析模型
  5. 在 Cherry Studio 中配置模型接入
  6. 基于Python项目的智能重构实战

1.5 资源总览

资源名称 规格 单价(元) 时长(分钟)
开发者空间–云主机 4 vCPUs 8 GB Ubuntu 24.04 Server 定制版 0 90
Linux 版 Cherry Studio AppImage 可执行文件 0
Ollama 本地模型服务 DeepSeek-R1(本地部署) 0
Python开发环境 Python 3.11 + 常用库 0

2 环境配置

2.1 开发者空间

华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机(点击免费领取)、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者 从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。

华为开发者空间.png

打开“我的云主机”→“打开云主机”,系统默认 Ubuntu 24.04 Server 定制版。

云主机桌面.png

2.2 安装Python开发环境

# 更新系统包
sudo apt update && sudo apt upgrade -y

# 安装 Python 3.12 和开发工具
sudo apt install python3.12 python3.12-venv python3.12-dev -y

# 可选:安装基本工具(如 pylint 等)备用
sudo apt install pylint flake8 black isort -y

# 创建开发目录
mkdir -p ~/code-analysis-project
cd ~/code-analysis-project

# 创建并激活虚拟环境
python3.12 -m venv venv
source venv/bin/activate

# 在虚拟环境中安装 Python 代码分析和测试工具
pip install --upgrade pip
pip install pylint flake8 black isort pytest pytest-cov

image-24.png

2.3 安装并配置 Ollama

Ollama 是开源的本地 LLM 管理工具,支持快速下载、运行及交互多种预训练模型。

打开一共命令行窗口,执行下面命令:

# 安装 Ollama
curl -fsSL https://dtse-mirrors.obs.cn-north-4.myhuaweicloud.com/case/0035/install.sh | sudo bash

# 启动 Ollama 服务
sudo systemctl enable ollama
sudo systemctl start ollama

ollama安装.png

部署 DeepSeek-R1 模型:

ollama run deepseek-r1:1.5b

ollama安装完成.png

2.4 安装 Linux 版 Cherry Studio

打开一个新的命令行窗口输入以下命令,更新软件包。

sudo apt update
sudo apt upgrade -y

更新软件包.png

Cherry Studio Releases 下载 ARM64 AppImage:
Cherry-Studio-1.3.9-arm64.AppImage

下载CherryStudio.png

下载完成.png

在终端输入以下命令进行相关依赖包的下载。

sudo apt update #升级系统所有软件包
sudo apt install zlib1g zlib1g-dev #提供运行时库文件,供依赖zlib的程序运行时使用。

image-5.png

接着,我们启用Ubuntu的universe软件仓库并安装libfuse2软件包,这是FUSE(Filesystem in Userspace)的核心库,FUSE允许普通用户在用户空间实现文件系统(无需内核模块),常用于挂载虚拟文件系统或特殊用途的文件系统。

sudo add-apt-repository universe #启用Ubuntu的universe软件仓库
sudo apt install libfuse2 #安装libfuse2软件包

image-4.png

赋予执行权限并启动:

cd ../../home/developer/Downloads/
sudo chmod u+x Cherry-Studio-1.3.9-arm64.AppImage ./Cherry-Studio-1.3.9-arm64.AppImage --no-sandbox

image-8.png

启动成功后,自动跳出 Cherry Studio 页面。

image-9.png


3 实战项目

3.1 创建Python示例项目

创建一个包含常见代码问题的Python项目:

cd ~/code-analysis-project

# 创建项目结构
mkdir -p src tests docs

# 创建示例代码文件
cat > src/data_processor.py << 'EOF'
import time
import json

class DataProcessor:
    def __init__(self):
        self.data = []
        self.processed_data = []
    
    def load_data(self, file_path):
        # 性能问题:没有异常处理
        with open(file_path, 'r') as f:
            self.data = json.load(f)
    
    def process_data(self):
        # 性能问题:低效循环
        for i in range(len(self.data)):
            item = self.data[i]
            if item['status'] == 'active':
                processed_item = {}
                processed_item['id'] = item['id']
                processed_item['name'] = item['name'].upper()
                processed_item['score'] = item['score'] * 2
                self.processed_data.append(processed_item)
                time.sleep(0.01)  # 模拟耗时操作
    
    def get_summary(self):
        # 代码重复和可读性问题
        total = 0
        count = 0
        for item in self.processed_data:
            total += item['score']
            count += 1
        
        if count > 0:
            average = total / count
        else:
            average = 0
        
        return {
            'total_items': count,
            'total_score': total,
            'average_score': average
        }

# 全局函数,缺乏封装
def calculate_metrics(data):
    if len(data) == 0:
        return None
    
    scores = []
    for item in data:
        scores.append(item['score'])
    
    return {
        'min': min(scores),
        'max': max(scores),
        'avg': sum(scores) / len(scores)
    }
EOF

# 创建测试数据
cat > test_data.json << 'EOF'
[
    {"id": 1, "name": "Alice", "score": 85, "status": "active"},
    {"id": 2, "name": "Bob", "score": 92, "status": "inactive"},
    {"id": 3, "name": "Charlie", "score": 78, "status": "active"},
    {"id": 4, "name": "Diana", "score": 96, "status": "active"}
]
EOF

image-25.png

3.2 在 Cherry Studio 中配置 DeepSeek 模型

打开 Cherry Studio → “设置” → “模型服务” → Ollama → “管理”

image-10.png

点击加号按钮,将 deepseek-r1:1.5b 添加到模型服务里。

image-11.png

image-12.png

回到 Cherry Studio 主页面,在界面上方选择我们本次通过 ollama服务 部署的 deepseek-r1:1.5b 模型。

image-13.png

接着我们向 deepseek 提问,测试模型是否可以正常工作。

image-14.png

如正常返回,则说明 Cherry Studio 已经成功接入 DeepSeek 模型服务。

3.3 代码质量分析实战

在Cherry Studio中创建新对话,上传 data_processor.py 文件:

提示词1:代码质量分析

你是一位资深的Python代码审查专家。请分析上传的代码文件,从以下几个维度进行评估:

1. 代码规范性(PEP8兼容性)
2. 性能问题识别
3. 潜在的bug和异常处理
4. 代码可读性和维护性
5. 设计模式应用

请提供详细的分析报告,包括具体的问题位置和改进建议。

image-27.png

预期输出示例:

  • 发现性能问题:低效的循环方式、不必要的sleep操作
  • 异常处理缺失:文件读取没有异常捕获
  • 代码重复:计算逻辑可以提取为通用方法
  • 命名规范:部分变量命名不够清晰

3.4 性能优化建议生成

提示词2:性能优化

基于上面的代码分析,请提供具体的性能优化方案:

1. 针对循环效率问题的优化建议
2. 内存使用优化策略  
3. 异步处理的可能性分析
4. 数据结构选择优化

请提供优化后的代码实现。

image-28.png

3.5 自动化代码重构

提示词3:代码重构

请基于最佳实践重构上述Python代码,要求:

1. 遵循SOLID原则
2. 添加完整的异常处理
3. 优化算法效率
4. 添加类型注解
5. 改善代码可读性
6. 添加详细的文档字符串

请提供重构后的完整代码。

image-29.png

预期重构后代码示例:

from typing import List, Dict, Optional, Any
import json
import logging
from pathlib import Path

class DataProcessor:
    """高效的数据处理器,支持JSON数据的加载、处理和分析。"""
    
    def __init__(self) -> None:
        self.data: List[Dict[str, Any]] = []
        self.processed_data: List[Dict[str, Any]] = []
        self.logger = logging.getLogger(__name__)
    
    def load_data(self, file_path: str) -> bool:
        """安全地加载JSON数据文件。
        
        Args:
            file_path: JSON文件路径
            
        Returns:
            bool: 加载成功返回True,失败返回False
        """
        try:
            path = Path(file_path)
            if not path.exists():
                self.logger.error(f"文件不存在: {file_path}")
                return False
                
            with open(file_path, 'r', encoding='utf-8') as f:
                self.data = json.load(f)
            return True
        except (json.JSONDecodeError, IOError) as e:
            self.logger.error(f"加载文件失败: {e}")
            return False
    
    def process_data(self) -> None:
        """高效处理数据,使用列表推导式优化性能。"""
        self.processed_data = [
            {
                'id': item['id'],
                'name': item['name'].upper(),
                'score': item['score'] * 2
            }
            for item in self.data
            if item.get('status') == 'active'
        ]

3.6 生成单元测试用例

提示词4:单元测试生成

请为重构后的DataProcessor类生成完整的单元测试套件,要求:

1. 使用pytest框架
2. 包含正常情况和异常情况的测试
3. 提供测试数据的setup和teardown
4. 测试覆盖率达到90%以上
5. 包含性能测试用例
6. 添加参数化测试

请提供完整的测试代码文件。

image-31.png

3.7 代码文档生成

提示词5:文档生成

请为这个Python项目生成完整的技术文档,包括:

1. API文档(方法说明、参数、返回值)
2. 使用示例和最佳实践
3. 性能基准测试结果
4. 部署和配置指南
5. 常见问题解答

文档格式使用Markdown,适合放在项目的docs目录中。

image-34.png

3.8 代码质量报告

最后,让AI生成一份综合的代码质量报告:

提示词6:质量报告

请生成一份完整的代码质量分析报告,包括:

1. 原始代码vs重构代码的对比分析
2. 性能改进的量化指标
3. 代码复杂度分析
4. 安全性评估
5. 可维护性评分
6. 后续优化建议

请以表格和图表的形式展示关键指标。

image-36.png


4 验证和测试

4.1 运行代码质量检查

# 使用pylint检查代码质量
pylint src/data_processor.py

# 使用flake8检查代码规范
flake8 src/data_processor.py

# 格式化代码
black src/data_processor.py
isort src/data_processor.py

image-32.png

4.2 执行单元测试

sudo apt install python3-pytest 
pip install pytest-cov

# 运行测试并生成覆盖率报告
pytest tests/ --cov=src --cov-report=html

# 查看测试结果
cat htmlcov/index.html

image-33.png

4.3 性能基准测试

# 创建性能测试脚本
cat > benchmark.py << 'EOF'
import time
import json
from src.data_processor import DataProcessor

def benchmark_processing():
    processor = DataProcessor()
    
    # 生成大量测试数据
    large_data = [
        {"id": i, "name": f"User{i}", "score": i % 100, "status": "active"}
        for i in range(10000)
    ]
    
    with open('large_test_data.json', 'w') as f:
        json.dump(large_data, f)
    
    # 测试加载性能
    start_time = time.time()
    processor.load_data('large_test_data.json')
    load_time = time.time() - start_time
    
    # 测试处理性能
    start_time = time.time()
    processor.process_data()
    process_time = time.time() - start_time
    
    print(f"数据加载时间: {load_time:.2f}秒")
    print(f"数据处理时间: {process_time:.2f}秒")
    print(f"处理的记录数: {len(processor.processed_data)}")

if __name__ == "__main__":
    benchmark_processing()
EOF
python benchmark.py

image-35.png


5 总结

通过本案例,您已经掌握了:

  1. 环境搭建:在华为开发者空间搭建Cherry Studio + DeepSeek开发环境
  2. 代码分析:使用AI进行深度代码质量分析
  3. 智能重构:基于最佳实践进行代码重构
  4. 测试生成:自动化单元测试用例生成
  5. 性能优化:数据驱动的性能改进建议
  6. 文档生成:完整的技术文档自动化生成

至此,您已完成从环境搭建到深度实战的全流程,能够在 Cherry Studio 中高效利用本地 DeepSeek-R1 服务,使用AI快速进行深度代码质量分析,显著提升代码质量和开发效率,特别适合团队协作和代码审查场景。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。