Janus-Pro-7B构建智能运维助手自动分析日志并执行C盘清理建议你是不是也遇到过这样的场景电脑用着用着C盘就飘红了系统开始弹窗警告空间不足。手动去清理吧面对Windows目录下密密麻麻的文件夹和文件根本无从下手生怕删错了系统文件导致电脑崩溃。传统的清理工具要么太“傻瓜”清理不彻底要么太“激进”存在风险。今天我们就来聊聊如何用Janus-Pro-7B大模型打造一个真正“懂行”的智能桌面运维助手。它不仅能监控你的C盘空间还能像一位经验丰富的运维工程师一样自动分析系统日志精准定位空间“元凶”并给出安全、具体的清理建议甚至帮你生成可执行的脚本。1. 场景与痛点为什么需要智能运维助手想象一下你正在赶一个重要的项目报告电脑突然卡顿紧接着弹出一个令人焦虑的提示“C盘空间不足请释放磁盘空间。” 你不得不停下手中的工作开始一场与垃圾文件的“战斗”。传统的解决方法有哪些呢手动清理打开“磁盘清理”工具但往往只能清理出有限的临时文件治标不治本。第三方清理软件虽然功能强大但有时会误删重要文件或者清理后系统出现莫名问题信任度是个挑战。凭经验排查资深用户可能会去检查Windows\Temp、用户AppData\Local\Temp或者查看哪些软件日志文件巨大。但这需要专业知识且效率低下。核心痛点在于缺乏精准的、可解释的、安全的清理指导。用户不知道哪些文件可以安全删除哪些是系统或应用运行所必需的。而Janus-Pro-7B这类大模型恰好具备强大的自然语言理解和上下文分析能力可以“阅读”系统日志和文件结构做出接近人类专家的判断。我们这个智能运维助手原型就是要解决这个问题。它扮演一个“分析员”和“建议者”的角色将监控、分析、决策建议自动化把最终的执行权留给用户兼顾了智能与安全。2. 方案设计助手如何工作我们的智能运维助手核心工作流程分为四个阶段监控、分析、建议、执行。整个方案就像一个闭环的运维小系统。2.1 整体架构与工作流整个系统可以简单地用下面的流程来理解[持续监控] → [触发预警] → [收集信息] → [模型分析] → [生成建议] → [用户确认] → [执行清理]监控与触发一个后台服务比如用Python脚本实现持续监控C盘的剩余空间比例。我们设定一个阈值例如当剩余空间低于15%时触发预警流程。信息收集触发后程序自动收集两类关键信息磁盘分析信息使用系统命令如dir、du的Windows替代工具如WinDirStat的命令行接口或Python的os、psutil模块扫描C盘找出占用空间最大的前N个目录和文件。相关日志信息读取近期系统日志如Windows事件日志、应用程序日志特别是那些已知会产生大量日志的软件如Docker Desktop、IDE、下载工具等提取与磁盘写入、文件增长相关的错误或警告信息。模型分析与建议生成将收集到的结构化信息大文件列表、目录树片段、日志摘要整理成一段清晰的提示词Prompt发送给本地的Janus-Pro-7B模型。模型的任务是分析原因判断空间不足的主要原因是什么是某个软件的缓存爆炸还是日志文件未轮转或是下载目录未清理评估风险识别列表中的哪些文件/目录是系统核心组件、正在运行的程序文件或重要用户数据标记为“高风险不建议删除”。生成建议针对可安全清理的项目生成具体的操作建议。这不仅仅是“可以删除XXX目录”而是提供详细的、可操作的命令行指令或PowerShell脚本片段。用户交互与执行将模型生成的清理建议包括命令和风险说明通过一个简单的图形界面GUI或命令行界面CLI展示给用户。用户可以选择全部执行、部分执行或忽略。确认后程序调用系统命令执行清理或由用户手动复制命令执行。2.2 为什么选择Janus-Pro-7B在众多开源大模型中Janus-Pro-7B有几个特点非常适合这个场景较强的指令遵循与推理能力它能较好地理解“分析磁盘空间问题并给出安全清理命令”这类复杂的多步骤指令。代码生成能力它能够生成正确、可用的PowerShell或Batch命令脚本这是自动化执行的关键。本地部署所有数据你的文件列表、日志都在本地处理无需上传到云端保障了隐私和安全。适中的资源消耗7B参数规模的模型在消费级显卡如RTX 3060 12GB上即可流畅运行适合作为常驻后台的助手服务。3. 动手实现从监控到建议生成的代码示例下面我们用Python来勾勒出这个助手原型的核心代码片段。假设我们已经在本机部署好了Janus-Pro-7B的API服务例如使用Ollama、vLLM或类似框架。3.1 第一步磁盘空间监控与信息收集import psutil import os import subprocess import json from datetime import datetime, timedelta def check_disk_usage(threshold_percent15): 检查C盘使用情况 disk_usage psutil.disk_usage(C:\\) free_percent disk_usage.free / disk_usage.total * 100 if free_percent threshold_percent: print(f[预警] C盘剩余空间不足: {free_percent:.1f}%) return True, free_percent, disk_usage return False, free_percent, disk_usage def collect_large_files_and_dirs(top_n20): 收集C盘下占用空间最大的文件和目录示例实际需递归扫描或调用专业工具 # 注意全盘扫描耗时生产环境应使用更高效方法或扫描特定目录 target_dirs [ os.environ.get(TEMP, C:\\Windows\\Temp), os.path.join(os.environ[USERPROFILE], AppData\\Local\\Temp), os.path.join(os.environ[USERPROFILE], Downloads), C:\\Windows\\Logs, C:\\ProgramData, ] large_items [] for root_dir in target_dirs: if os.path.exists(root_dir): try: # 使用walk遍历简化示例实际应对深度和耗时做控制 for dirpath, dirnames, filenames in os.walk(root_dir): for f in filenames: fp os.path.join(dirpath, f) try: size os.path.getsize(fp) if size 100 * 1024 * 1024: # 大于100MB的文件 large_items.append({path: fp, size: size, type: file}) except (OSError, PermissionError): pass except (OSError, PermissionError): pass # 按大小排序取前top_n个 large_items.sort(keylambda x: x[size], reverseTrue) return large_items[:top_n] def collect_recent_logs(log_dirs, lookback_hours24): 收集指定日志目录中最近更新的文件 recent_logs [] cutoff_time datetime.now() - timedelta(hourslookback_hours) for log_dir in log_dirs: if os.path.exists(log_dir): for entry in os.scandir(log_dir): if entry.is_file() and entry.name.endswith((.log, .txt, .etl)): if datetime.fromtimestamp(entry.stat().st_mtime) cutoff_time: # 只记录路径和大小避免读取大文件内容 recent_logs.append({ path: entry.path, size: entry.stat().st_size, modified: entry.stat().st_mtime }) return recent_logs3.2 第二步构建Prompt并调用Janus-Pro-7B分析这是整个系统的“大脑”部分。我们将收集到的信息组织成一段清晰的提示词。import requests # 假设Janus-Pro-7B通过HTTP API提供服务 def build_analysis_prompt(disk_info, large_items, recent_logs): 构建发送给大模型的提示词 prompt f 你是一个专业的Windows系统运维助手。请分析以下C盘空间不足的情况并提供安全、具体的清理建议。 **系统状态** - C盘剩余空间比例{disk_info[free_percent]:.1f}% - 总空间{disk_info[total_gb]:.1f} GB 已用{disk_info[used_gb]:.1f} GB 剩余{disk_info[free_gb]:.1f} GB **疑似占用空间较大的项目前10个** {json.dumps(large_items[:10], indent2, ensure_asciiFalse)} **近期有更新的日志文件** {json.dumps(recent_logs[:5], indent2, ensure_asciiFalse)} **请执行以下任务** 1. **分析根本原因**根据以上信息判断导致C盘空间不足最可能的原因是什么例如某个应用程序缓存失控、日志文件未轮转、下载目录堆积等 2. **识别风险项目**在上面的“疑似占用空间较大的项目”列表中指出哪些是**系统关键文件、正在运行的程序文件或重要用户数据**如浏览器配置文件、IDE索引并说明为什么不能删除。 3. **生成清理建议**针对**可以安全清理**的项目提供具体的操作步骤。请为每一个建议的清理操作生成 - **清理目标**明确的文件或目录路径。 - **可安全清理的理由**简短说明。 - **具体的操作命令**提供可以直接在Windows PowerShell或命令提示符中运行的命令。例如 Remove-Item -Path C:\\Users\\YourName\\AppData\\Local\\Temp\\*.tmp -Force -Recurse 或 del /f /s /q C:\\Windows\\Temp\\*.* - **预估可释放空间**大致能清理出多少MB/GB。 4. **给出整体建议**除了立即清理还有什么长期预防措施如配置日志轮转、更改软件默认存储路径等 请以清晰、结构化的JSON格式回复包含以下字段root_cause, risky_items, cleanup_actions (数组每个动作包含 target, reason, command, space_to_free), long_term_advice。 return prompt def call_janus_model(prompt, api_urlhttp://localhost:8000/v1/completions): 调用本地的Janus-Pro-7B模型API headers {Content-Type: application/json} data { prompt: prompt, max_tokens: 1500, temperature: 0.2, # 较低的温度使输出更确定、更专业 stop: [\n\n\n] # 停止标记 } try: response requests.post(api_url, headersheaders, jsondata, timeout60) response.raise_for_status() result response.json() # 解析返回的文本提取JSON部分 # 这里假设模型返回的是纯文本我们需要从中解析出JSON。 # 更健壮的做法是使用API的JSON模式功能如果支持。 generated_text result.get(choices, [{}])[0].get(text, ) # 简易提取JSON实际应用中需要更严谨的解析 import re json_match re.search(r\{.*\}, generated_text, re.DOTALL) if json_match: return json.loads(json_match.group()) else: return {error: 未能从模型响应中解析出JSON, raw_text: generated_text[:500]} except Exception as e: return {error: f调用模型API失败: {e}}3.3 第三步解析结果与用户交互拿到模型的分析结果后我们需要将其友好地展示给用户。def present_analysis_result(analysis_result): 向用户展示分析结果和建议 if error in analysis_result: print(f分析过程出错{analysis_result[error]}) return print(*50) print(智能运维助手 - C盘空间分析报告) print(*50) print(f\n## 根本原因分析) print(f{analysis_result.get(root_cause, 未提供)}) print(f\n## 高风险项目请勿删除) risky analysis_result.get(risky_items, []) if risky: for item in risky: print(f- 路径{item.get(path)}) print(f 原因{item.get(reason)}) else: print(- 未识别出明确的高风险项目。) print(f\n## 安全清理建议) actions analysis_result.get(cleanup_actions, []) if actions: for i, action in enumerate(actions, 1): print(f\n{i}. 目标{action.get(target)}) print(f 理由{action.get(reason)}) print(f 命令{action.get(command)}) print(f 预估释放{action.get(space_to_free, 未知)}) else: print(- 未生成具体的清理建议。) print(f\n## 长期维护建议) print(f{analysis_result.get(long_term_advice, 无)}) print(\n *50) return actions def execute_cleanup_with_confirmation(cleanup_actions): 在用户确认后执行清理命令 if not cleanup_actions: print(没有可执行的清理动作。) return print(\n请确认要执行以下清理操作输入对应序号用逗号分隔或输入 all 执行全部输入 skip 跳过) for i, action in enumerate(cleanup_actions, 1): print(f[{i}] {action.get(command)}) choice input(\n您的选择: ).strip().lower() commands_to_run [] if choice all: commands_to_run [act[command] for act in cleanup_actions] elif choice skip: print(已跳过执行。) return else: try: indices [int(idx.strip()) - 1 for idx in choice.split(,)] commands_to_run [cleanup_actions[i][command] for i in indices if 0 i len(cleanup_actions)] except ValueError: print(输入无效跳过执行。) return for cmd in commands_to_run: print(f\n正在执行: {cmd}) confirm input(是否确认执行(y/N): ).strip().lower() if confirm y: try: # 注意执行删除命令有风险生产环境应有更严格的确认和回滚机制。 # 此处使用subprocess.run对于PowerShell命令可能需要指定shellTrue和正确的执行策略。 result subprocess.run(cmd, shellTrue, capture_outputTrue, textTrue, timeout30) if result.returncode 0: print(执行成功。) else: print(f执行可能失败返回码{result.returncode}) print(f错误信息{result.stderr}) except Exception as e: print(f执行命令时发生异常{e}) else: print(已取消执行。)3.4 第四步主程序流程将以上所有步骤串联起来。def main(): 主监控循环 print(智能C盘清理助手已启动正在监控...) # 这里简化为单次检查实际应为后台守护进程或定时任务 triggered, free_percent, disk_usage check_disk_usage(threshold_percent15) if triggered: print(检测到C盘空间不足开始分析...) # 1. 收集信息 large_items collect_large_files_and_dirs(top_n15) log_dirs [C:\\Windows\\Logs, C:\\ProgramData\\SomeApp\\Logs] # 根据实际情况调整 recent_logs collect_recent_logs(log_dirs) disk_info { free_percent: free_percent, total_gb: disk_usage.total / (1024**3), used_gb: disk_usage.used / (1024**3), free_gb: disk_usage.free / (1024**3), } # 2. 调用模型分析 prompt build_analysis_prompt(disk_info, large_items, recent_logs) print(正在调用AI模型进行分析请稍候...) analysis_result call_janus_model(prompt) # 3. 展示结果 cleanup_actions present_analysis_result(analysis_result) # 4. 用户交互与执行 if cleanup_actions and isinstance(cleanup_actions, list): execute_cleanup_with_confirmation(cleanup_actions) else: print(未获得有效的清理建议分析结束。) else: print(fC盘空间充足 ({free_percent:.1f}%)无需操作。) if __name__ __main__: main()4. 效果展望与实际应用建议通过上述原型我们可以看到结合Janus-Pro-7B的智能运维助手不再是简单的文件删除工具而是一个具备分析、判断、建议能力的智能体。它能带来的价值精准定位不再盲目清理而是基于日志和文件分析找到真正的“空间浪费者”。风险规避模型能识别系统关键文件极大降低了误删导致系统故障的风险。自动化建议生成的命令行建议可以直接使用提升了运维效率。知识沉淀模型的分析过程和理由本身就是一份宝贵的运维知识记录。在实际应用中你还可以考虑以下优化方向增强信息收集集成更专业的磁盘分析工具如WizTree、TreeSize的命令行版本的输出获取更全面的文件树信息。丰富Prompt工程在Prompt中加入更多Windows系统知识和常见软件缓存路径规则让模型的判断更精准。安全沙箱对于生成的命令可以先在沙箱环境或通过“模拟运行”-WhatIf参数 in PowerShell进行测试确认无误后再实际执行。历史记录与学习记录每次清理的分析结果和执行效果用于优化未来的Prompt或训练更专用的模型。图形化界面将上述命令行程序包装成带有进度条、图表展示和一键清理按钮的桌面应用体验更佳。这个项目不仅仅是一个C盘清理工具它展示了一种范式将大语言模型作为“决策大脑”与传统脚本的“执行手脚”相结合来解决那些需要一定专业知识和上下文判断的自动化运维问题。你可以将类似的思路扩展到内存分析、网络故障排查、安全日志审计等多个运维场景。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
Janus-Pro-7B构建智能运维助手:自动分析日志并执行C盘清理建议
Janus-Pro-7B构建智能运维助手自动分析日志并执行C盘清理建议你是不是也遇到过这样的场景电脑用着用着C盘就飘红了系统开始弹窗警告空间不足。手动去清理吧面对Windows目录下密密麻麻的文件夹和文件根本无从下手生怕删错了系统文件导致电脑崩溃。传统的清理工具要么太“傻瓜”清理不彻底要么太“激进”存在风险。今天我们就来聊聊如何用Janus-Pro-7B大模型打造一个真正“懂行”的智能桌面运维助手。它不仅能监控你的C盘空间还能像一位经验丰富的运维工程师一样自动分析系统日志精准定位空间“元凶”并给出安全、具体的清理建议甚至帮你生成可执行的脚本。1. 场景与痛点为什么需要智能运维助手想象一下你正在赶一个重要的项目报告电脑突然卡顿紧接着弹出一个令人焦虑的提示“C盘空间不足请释放磁盘空间。” 你不得不停下手中的工作开始一场与垃圾文件的“战斗”。传统的解决方法有哪些呢手动清理打开“磁盘清理”工具但往往只能清理出有限的临时文件治标不治本。第三方清理软件虽然功能强大但有时会误删重要文件或者清理后系统出现莫名问题信任度是个挑战。凭经验排查资深用户可能会去检查Windows\Temp、用户AppData\Local\Temp或者查看哪些软件日志文件巨大。但这需要专业知识且效率低下。核心痛点在于缺乏精准的、可解释的、安全的清理指导。用户不知道哪些文件可以安全删除哪些是系统或应用运行所必需的。而Janus-Pro-7B这类大模型恰好具备强大的自然语言理解和上下文分析能力可以“阅读”系统日志和文件结构做出接近人类专家的判断。我们这个智能运维助手原型就是要解决这个问题。它扮演一个“分析员”和“建议者”的角色将监控、分析、决策建议自动化把最终的执行权留给用户兼顾了智能与安全。2. 方案设计助手如何工作我们的智能运维助手核心工作流程分为四个阶段监控、分析、建议、执行。整个方案就像一个闭环的运维小系统。2.1 整体架构与工作流整个系统可以简单地用下面的流程来理解[持续监控] → [触发预警] → [收集信息] → [模型分析] → [生成建议] → [用户确认] → [执行清理]监控与触发一个后台服务比如用Python脚本实现持续监控C盘的剩余空间比例。我们设定一个阈值例如当剩余空间低于15%时触发预警流程。信息收集触发后程序自动收集两类关键信息磁盘分析信息使用系统命令如dir、du的Windows替代工具如WinDirStat的命令行接口或Python的os、psutil模块扫描C盘找出占用空间最大的前N个目录和文件。相关日志信息读取近期系统日志如Windows事件日志、应用程序日志特别是那些已知会产生大量日志的软件如Docker Desktop、IDE、下载工具等提取与磁盘写入、文件增长相关的错误或警告信息。模型分析与建议生成将收集到的结构化信息大文件列表、目录树片段、日志摘要整理成一段清晰的提示词Prompt发送给本地的Janus-Pro-7B模型。模型的任务是分析原因判断空间不足的主要原因是什么是某个软件的缓存爆炸还是日志文件未轮转或是下载目录未清理评估风险识别列表中的哪些文件/目录是系统核心组件、正在运行的程序文件或重要用户数据标记为“高风险不建议删除”。生成建议针对可安全清理的项目生成具体的操作建议。这不仅仅是“可以删除XXX目录”而是提供详细的、可操作的命令行指令或PowerShell脚本片段。用户交互与执行将模型生成的清理建议包括命令和风险说明通过一个简单的图形界面GUI或命令行界面CLI展示给用户。用户可以选择全部执行、部分执行或忽略。确认后程序调用系统命令执行清理或由用户手动复制命令执行。2.2 为什么选择Janus-Pro-7B在众多开源大模型中Janus-Pro-7B有几个特点非常适合这个场景较强的指令遵循与推理能力它能较好地理解“分析磁盘空间问题并给出安全清理命令”这类复杂的多步骤指令。代码生成能力它能够生成正确、可用的PowerShell或Batch命令脚本这是自动化执行的关键。本地部署所有数据你的文件列表、日志都在本地处理无需上传到云端保障了隐私和安全。适中的资源消耗7B参数规模的模型在消费级显卡如RTX 3060 12GB上即可流畅运行适合作为常驻后台的助手服务。3. 动手实现从监控到建议生成的代码示例下面我们用Python来勾勒出这个助手原型的核心代码片段。假设我们已经在本机部署好了Janus-Pro-7B的API服务例如使用Ollama、vLLM或类似框架。3.1 第一步磁盘空间监控与信息收集import psutil import os import subprocess import json from datetime import datetime, timedelta def check_disk_usage(threshold_percent15): 检查C盘使用情况 disk_usage psutil.disk_usage(C:\\) free_percent disk_usage.free / disk_usage.total * 100 if free_percent threshold_percent: print(f[预警] C盘剩余空间不足: {free_percent:.1f}%) return True, free_percent, disk_usage return False, free_percent, disk_usage def collect_large_files_and_dirs(top_n20): 收集C盘下占用空间最大的文件和目录示例实际需递归扫描或调用专业工具 # 注意全盘扫描耗时生产环境应使用更高效方法或扫描特定目录 target_dirs [ os.environ.get(TEMP, C:\\Windows\\Temp), os.path.join(os.environ[USERPROFILE], AppData\\Local\\Temp), os.path.join(os.environ[USERPROFILE], Downloads), C:\\Windows\\Logs, C:\\ProgramData, ] large_items [] for root_dir in target_dirs: if os.path.exists(root_dir): try: # 使用walk遍历简化示例实际应对深度和耗时做控制 for dirpath, dirnames, filenames in os.walk(root_dir): for f in filenames: fp os.path.join(dirpath, f) try: size os.path.getsize(fp) if size 100 * 1024 * 1024: # 大于100MB的文件 large_items.append({path: fp, size: size, type: file}) except (OSError, PermissionError): pass except (OSError, PermissionError): pass # 按大小排序取前top_n个 large_items.sort(keylambda x: x[size], reverseTrue) return large_items[:top_n] def collect_recent_logs(log_dirs, lookback_hours24): 收集指定日志目录中最近更新的文件 recent_logs [] cutoff_time datetime.now() - timedelta(hourslookback_hours) for log_dir in log_dirs: if os.path.exists(log_dir): for entry in os.scandir(log_dir): if entry.is_file() and entry.name.endswith((.log, .txt, .etl)): if datetime.fromtimestamp(entry.stat().st_mtime) cutoff_time: # 只记录路径和大小避免读取大文件内容 recent_logs.append({ path: entry.path, size: entry.stat().st_size, modified: entry.stat().st_mtime }) return recent_logs3.2 第二步构建Prompt并调用Janus-Pro-7B分析这是整个系统的“大脑”部分。我们将收集到的信息组织成一段清晰的提示词。import requests # 假设Janus-Pro-7B通过HTTP API提供服务 def build_analysis_prompt(disk_info, large_items, recent_logs): 构建发送给大模型的提示词 prompt f 你是一个专业的Windows系统运维助手。请分析以下C盘空间不足的情况并提供安全、具体的清理建议。 **系统状态** - C盘剩余空间比例{disk_info[free_percent]:.1f}% - 总空间{disk_info[total_gb]:.1f} GB 已用{disk_info[used_gb]:.1f} GB 剩余{disk_info[free_gb]:.1f} GB **疑似占用空间较大的项目前10个** {json.dumps(large_items[:10], indent2, ensure_asciiFalse)} **近期有更新的日志文件** {json.dumps(recent_logs[:5], indent2, ensure_asciiFalse)} **请执行以下任务** 1. **分析根本原因**根据以上信息判断导致C盘空间不足最可能的原因是什么例如某个应用程序缓存失控、日志文件未轮转、下载目录堆积等 2. **识别风险项目**在上面的“疑似占用空间较大的项目”列表中指出哪些是**系统关键文件、正在运行的程序文件或重要用户数据**如浏览器配置文件、IDE索引并说明为什么不能删除。 3. **生成清理建议**针对**可以安全清理**的项目提供具体的操作步骤。请为每一个建议的清理操作生成 - **清理目标**明确的文件或目录路径。 - **可安全清理的理由**简短说明。 - **具体的操作命令**提供可以直接在Windows PowerShell或命令提示符中运行的命令。例如 Remove-Item -Path C:\\Users\\YourName\\AppData\\Local\\Temp\\*.tmp -Force -Recurse 或 del /f /s /q C:\\Windows\\Temp\\*.* - **预估可释放空间**大致能清理出多少MB/GB。 4. **给出整体建议**除了立即清理还有什么长期预防措施如配置日志轮转、更改软件默认存储路径等 请以清晰、结构化的JSON格式回复包含以下字段root_cause, risky_items, cleanup_actions (数组每个动作包含 target, reason, command, space_to_free), long_term_advice。 return prompt def call_janus_model(prompt, api_urlhttp://localhost:8000/v1/completions): 调用本地的Janus-Pro-7B模型API headers {Content-Type: application/json} data { prompt: prompt, max_tokens: 1500, temperature: 0.2, # 较低的温度使输出更确定、更专业 stop: [\n\n\n] # 停止标记 } try: response requests.post(api_url, headersheaders, jsondata, timeout60) response.raise_for_status() result response.json() # 解析返回的文本提取JSON部分 # 这里假设模型返回的是纯文本我们需要从中解析出JSON。 # 更健壮的做法是使用API的JSON模式功能如果支持。 generated_text result.get(choices, [{}])[0].get(text, ) # 简易提取JSON实际应用中需要更严谨的解析 import re json_match re.search(r\{.*\}, generated_text, re.DOTALL) if json_match: return json.loads(json_match.group()) else: return {error: 未能从模型响应中解析出JSON, raw_text: generated_text[:500]} except Exception as e: return {error: f调用模型API失败: {e}}3.3 第三步解析结果与用户交互拿到模型的分析结果后我们需要将其友好地展示给用户。def present_analysis_result(analysis_result): 向用户展示分析结果和建议 if error in analysis_result: print(f分析过程出错{analysis_result[error]}) return print(*50) print(智能运维助手 - C盘空间分析报告) print(*50) print(f\n## 根本原因分析) print(f{analysis_result.get(root_cause, 未提供)}) print(f\n## 高风险项目请勿删除) risky analysis_result.get(risky_items, []) if risky: for item in risky: print(f- 路径{item.get(path)}) print(f 原因{item.get(reason)}) else: print(- 未识别出明确的高风险项目。) print(f\n## 安全清理建议) actions analysis_result.get(cleanup_actions, []) if actions: for i, action in enumerate(actions, 1): print(f\n{i}. 目标{action.get(target)}) print(f 理由{action.get(reason)}) print(f 命令{action.get(command)}) print(f 预估释放{action.get(space_to_free, 未知)}) else: print(- 未生成具体的清理建议。) print(f\n## 长期维护建议) print(f{analysis_result.get(long_term_advice, 无)}) print(\n *50) return actions def execute_cleanup_with_confirmation(cleanup_actions): 在用户确认后执行清理命令 if not cleanup_actions: print(没有可执行的清理动作。) return print(\n请确认要执行以下清理操作输入对应序号用逗号分隔或输入 all 执行全部输入 skip 跳过) for i, action in enumerate(cleanup_actions, 1): print(f[{i}] {action.get(command)}) choice input(\n您的选择: ).strip().lower() commands_to_run [] if choice all: commands_to_run [act[command] for act in cleanup_actions] elif choice skip: print(已跳过执行。) return else: try: indices [int(idx.strip()) - 1 for idx in choice.split(,)] commands_to_run [cleanup_actions[i][command] for i in indices if 0 i len(cleanup_actions)] except ValueError: print(输入无效跳过执行。) return for cmd in commands_to_run: print(f\n正在执行: {cmd}) confirm input(是否确认执行(y/N): ).strip().lower() if confirm y: try: # 注意执行删除命令有风险生产环境应有更严格的确认和回滚机制。 # 此处使用subprocess.run对于PowerShell命令可能需要指定shellTrue和正确的执行策略。 result subprocess.run(cmd, shellTrue, capture_outputTrue, textTrue, timeout30) if result.returncode 0: print(执行成功。) else: print(f执行可能失败返回码{result.returncode}) print(f错误信息{result.stderr}) except Exception as e: print(f执行命令时发生异常{e}) else: print(已取消执行。)3.4 第四步主程序流程将以上所有步骤串联起来。def main(): 主监控循环 print(智能C盘清理助手已启动正在监控...) # 这里简化为单次检查实际应为后台守护进程或定时任务 triggered, free_percent, disk_usage check_disk_usage(threshold_percent15) if triggered: print(检测到C盘空间不足开始分析...) # 1. 收集信息 large_items collect_large_files_and_dirs(top_n15) log_dirs [C:\\Windows\\Logs, C:\\ProgramData\\SomeApp\\Logs] # 根据实际情况调整 recent_logs collect_recent_logs(log_dirs) disk_info { free_percent: free_percent, total_gb: disk_usage.total / (1024**3), used_gb: disk_usage.used / (1024**3), free_gb: disk_usage.free / (1024**3), } # 2. 调用模型分析 prompt build_analysis_prompt(disk_info, large_items, recent_logs) print(正在调用AI模型进行分析请稍候...) analysis_result call_janus_model(prompt) # 3. 展示结果 cleanup_actions present_analysis_result(analysis_result) # 4. 用户交互与执行 if cleanup_actions and isinstance(cleanup_actions, list): execute_cleanup_with_confirmation(cleanup_actions) else: print(未获得有效的清理建议分析结束。) else: print(fC盘空间充足 ({free_percent:.1f}%)无需操作。) if __name__ __main__: main()4. 效果展望与实际应用建议通过上述原型我们可以看到结合Janus-Pro-7B的智能运维助手不再是简单的文件删除工具而是一个具备分析、判断、建议能力的智能体。它能带来的价值精准定位不再盲目清理而是基于日志和文件分析找到真正的“空间浪费者”。风险规避模型能识别系统关键文件极大降低了误删导致系统故障的风险。自动化建议生成的命令行建议可以直接使用提升了运维效率。知识沉淀模型的分析过程和理由本身就是一份宝贵的运维知识记录。在实际应用中你还可以考虑以下优化方向增强信息收集集成更专业的磁盘分析工具如WizTree、TreeSize的命令行版本的输出获取更全面的文件树信息。丰富Prompt工程在Prompt中加入更多Windows系统知识和常见软件缓存路径规则让模型的判断更精准。安全沙箱对于生成的命令可以先在沙箱环境或通过“模拟运行”-WhatIf参数 in PowerShell进行测试确认无误后再实际执行。历史记录与学习记录每次清理的分析结果和执行效果用于优化未来的Prompt或训练更专用的模型。图形化界面将上述命令行程序包装成带有进度条、图表展示和一键清理按钮的桌面应用体验更佳。这个项目不仅仅是一个C盘清理工具它展示了一种范式将大语言模型作为“决策大脑”与传统脚本的“执行手脚”相结合来解决那些需要一定专业知识和上下文判断的自动化运维问题。你可以将类似的思路扩展到内存分析、网络故障排查、安全日志审计等多个运维场景。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。