首页/新闻资讯/正文详情

Cursor+Python+PyQt5:用TaoToken统一Key打造电脑监控小工具

发布时间:2026/9/27 21:04:19 来源:云帆数科 栏目:资讯中心
Cursor+Python+PyQt5:用TaoToken统一Key打造电脑监控小工具
1. 从“能跑”到“好用”桌面监控小工具的真实痛点用 Cursor 配合 Python PyQt5 写一个电脑监控小工具很多人第一次跑通时都挺兴奋窗口弹出来时间在跳CPU 占用率在动。但真把它挂在桌面角落当常驻工具用问题就来了。我自己踩过的坑是AI 生成的代码里硬件数据读取路径写死了换台机器 CPU 温度直接显示 N/A进程列表刷新太频繁界面卡成幻灯片更麻烦的是后面想加一个“AI 解读当前资源占用”的功能每个脚本都要单独配一套 Key散落在不同文件里改一次要翻半天。这篇就围绕这个场景展开用 Cursor 辅助写 Python PyQt5 桌面监控程序把屏幕截图、进程列表、CPU/内存/GPU 占用做成可视化面板同时用 TaoToken 统一 Key 和 API 通道接入 AI 能力。所谓“统一 Key”就是不管你有多少个脚本、多少个模型调用点都走同一个 API 地址和同一套密钥配置集中在一个config.toml里换模型只改一行。适合已经会用 Python 写点小工具、想让桌面监控更实用、并且打算把 AI 能力接进来的开发者。下面会给出可复制的config.toml配置骨架、PyQt5 界面与监控脚本代码以及运行验证和报错排查步骤。技术部分占大头拿 Key 的部分放在前面快速带过。2. TaoToken 前置统一 Key 与 API 通道怎么准备TaoToken 在这里扮演的角色是“统一入口”。你的监控脚本要调用 AI 做资源解读、异常摘要不需要分别去对接不同厂商的 SDK只需要一个 API 地址和一把 Key。官网入口在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 根地址是 https://taotoken.net/api 这个地址不加 UTM 参数直接用于代码里。操作路径很直接进控制台创建 API Key然后把它写进本地配置文件。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite API Keys 管理页在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。如果你后面要做长期编码或 Agent 类任务可以了解 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。注意Key 只放在本地config.toml不要硬编码进.py文件更不要提交到 Git。监控工具经常要分享给同事配置文件分离能避免泄露。配置骨架长这样放在项目根目录# config.toml [api] base_url https://taotoken.net/api api_key sk-你的Key model claude-sonnet-4-20250514 timeout 30 [monitor] refresh_interval_ms 1500 process_top_n 8 screenshot_enabled true screenshot_dir ./shots [ui] opacity 0.97 always_on_top true font_size 12读取配置用 Python 标准库tomllib3.11或tomliimport tomllib from pathlib import Path def load_config(pathconfig.toml): with open(path, rb) as f: return tomllib.load(f) CFG load_config() API_BASE CFG[api][base_url] API_KEY CFG[api][api_key] MODEL CFG[api][model]这样你的监控脚本、截图脚本、AI 解读脚本都从同一个CFG取配置换模型只改config.toml一行。3. 可复制配置PyQt5 监控面板 截图 进程 AI 解读先装依赖pip install pyqt5 psutil requests pillow tomli主程序分三块硬件数据采集、界面刷新、AI 解读。硬件采集用psutil拿 CPU/内存GPU 部分用pynvmlNVIDIA或降级为 N/A避免像很多 AI 生成代码那样写死 OpenHardwareMonitor 的 8085 端口导致换机就崩。# monitor_core.py import psutil from datetime import datetime def get_system_snapshot(): cpu_percent psutil.cpu_percent(intervalNone) mem psutil.virtual_memory() disk psutil.disk_usage(/) procs [] for p in sorted(psutil.process_iter([pid, name, cpu_percent, memory_percent]), keylambda x: x.info[cpu_percent] or 0, reverseTrue)[:8]: procs.append({ pid: p.info[pid], name: p.info[name], cpu: round(p.info[cpu_percent] or 0, 1), mem: round(p.info[memory_percent] or 0, 1), }) return { time: datetime.now().strftime(%Y-%m-%d %H:%M:%S), cpu: cpu_percent, mem: mem.percent, disk: disk.percent, procs: procs, }GPU 读取单独封装读不到就返回 None界面显示 N/A不要让整个程序崩# gpu_reader.py def get_gpu_info(): try: import pynvml pynvml.nvmlInit() handle pynvml.nvmlDeviceGetHandleByIndex(0) util pynvml.nvmlDeviceGetUtilizationRates(handle) mem pynvml.nvmlDeviceGetMemoryInfo(handle) return { gpu_util: util.gpu, gpu_mem: round(mem.used / mem.total * 100, 1), } except Exception: return {gpu_util: None, gpu_mem: None}截图功能用Pillow的ImageGrab保存到config.toml里配置的目录# screenshot.py import os from PIL import ImageGrab from datetime import datetime def capture_screen(save_dir./shots): os.makedirs(save_dir, exist_okTrue) path os.path.join(save_dir, fshot_{datetime.now():%Y%m%d_%H%M%S}.png) ImageGrab.grab().save(path) return pathAI 解读部分走 TaoToken 的 API用requests发一个 chat completions 请求把当前快照拼成 prompt# ai_advisor.py import requests from config_loader import API_BASE, API_KEY, MODEL def explain_snapshot(snapshot): prompt ( f当前系统快照CPU {snapshot[cpu]}%内存 {snapshot[mem]}% f磁盘 {snapshot[disk]}%。占用最高的进程 .join(f{p[name]}(CPU {p[cpu]}%) for p in snapshot[procs][:5]) 。请用三句话说明是否存在异常并给一条优化建议。 ) resp requests.post( f{API_BASE}/v1/chat/completions, headers{Authorization: fBearer {API_KEY}, Content-Type: application/json}, json{model: MODEL, messages: [{role: user, content: prompt}], max_tokens: 300}, timeout30, ) resp.raise_for_status() return resp.json()[choices][0][message][content]界面部分用 PyQt5 的QTimer定时刷新把上面的数据填进 QLabel 和 QTableWidget。关键点是刷新逻辑放在QThread或加锁避免 AI 请求阻塞 UI# main_window.py from PyQt5.QtWidgets import (QApplication, QWidget, QLabel, QVBoxLayout, QTableWidget, QTableWidgetItem, QPushButton) from PyQt5.QtCore import QTimer from monitor_core import get_system_snapshot from gpu_reader import get_gpu_info from ai_advisor import explain_snapshot class MonitorWindow(QWidget): def __init__(self): super().__init__() self.setWindowTitle(系统监控 AI 解读) self.resize(420, 520) layout QVBoxLayout(self) self.label_time QLabel(--) self.label_cpu QLabel(CPU: --) self.label_mem QLabel(内存: --) self.label_gpu QLabel(GPU: --) self.table QTableWidget(0, 4) self.table.setHorizontalHeaderLabels([PID, 进程, CPU%, 内存%]) self.btn_ai QPushButton(AI 解读当前状态) self.label_ai QLabel(等待解读...) self.label_ai.setWordWrap(True) for w in [self.label_time, self.label_cpu, self.label_mem, self.label_gpu, self.table, self.btn_ai, self.label_ai]: layout.addWidget(w) self.btn_ai.clicked.connect(self.run_ai) self.timer QTimer(self) self.timer.timeout.connect(self.refresh) self.timer.start(1500) self.snapshot {} def refresh(self): self.snapshot get_system_snapshot() gpu get_gpu_info() self.label_time.setText(self.snapshot[time]) self.label_cpu.setText(fCPU: {self.snapshot[cpu]}%) self.label_mem.setText(f内存: {self.snapshot[mem]}%) self.label_gpu.setText(fGPU: {gpu[gpu_util] if gpu[gpu_util] is not None else N/A}%) self.table.setRowCount(len(self.snapshot[procs])) for i, p in enumerate(self.snapshot[procs]): for j, v in enumerate([p[pid], p[name], p[cpu], p[mem]]): self.table.setItem(i, j, QTableWidgetItem(str(v))) def run_ai(self): if not self.snapshot: return try: self.label_ai.setText(explain_snapshot(self.snapshot)) except Exception as e: self.label_ai.setText(fAI 调用失败: {e}) if __name__ __main__: import sys app QApplication(sys.argv) w MonitorWindow() w.show() sys.exit(app.exec_())这套代码和很多 AI 直接生成的版本相比最大的区别是配置外置、GPU 可降级、AI 调用不阻塞界面。Cursor 生成初版后你可以用自然语言让它“把 AI 请求放到 QThread 里”它会帮你改。4. 验证请求跑起来看到什么才算成功先验证 API 通道是否通单独跑一段最小请求import requests from config_loader import API_BASE, API_KEY, MODEL r requests.post( f{API_BASE}/v1/chat/completions, headers{Authorization: fBearer {API_KEY}}, json{model: MODEL, messages: [{role: user, content: 回复 OK}]}, timeout15, ) print(r.status_code, r.json()[choices][0][message][content])预期输出200 OK。如果这里就报 401说明 Key 写错或没带Bearer报 404检查base_url是不是https://taotoken.net/api不要多加/v1之外的路径。再跑主程序python main_window.py成功时你会看到时间每秒跳动CPU/内存/GPU 数值刷新进程表格按 CPU 排序点“AI 解读当前状态”后下方出现一段中文分析。截图功能可以单独测from screenshot import capture_screen print(capture_screen())返回文件路径且./shots下出现 PNG 即成功。想快速对比不同模型对同一快照的解读可以用模型对话页面手动试https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchatutm_campaignrewrite 。5. 本篇常见错排查报错一ModuleNotFoundError: No module named tomllibPython 3.10 及以下没有tomllib。装tomli并改导入try: import tomllib except ModuleNotFoundError: import tomli as tomllib报错二requests.exceptions.ConnectionError或超时先确认网络能访问https://taotoken.net/api再检查config.toml里base_url是否被误写成带/v1/chat/completions的完整路径。代码里只写根地址路径由请求拼接。报错三GPU 一直显示 N/A没有 NVIDIA 显卡或没装pynvml时属正常降级。想显示 AMD/Intel 核显需要额外库建议先保持 N/A不要让程序崩。Cursor 里可以直接问“帮我把 GPU 读取改成可选依赖”它会加 try/except。报错四界面卡顿、点击无响应AI 请求是同步的放在主线程会阻塞。把explain_snapshot放进QThreadfrom PyQt5.QtCore import QThread, pyqtSignal class AIWorker(QThread): done pyqtSignal(str) def __init__(self, snapshot): super().__init__() self.snapshot snapshot def run(self): try: self.done.emit(explain_snapshot(self.snapshot)) except Exception as e: self.done.emit(f失败: {e})报错五401 UnauthorizedKey 失效或复制时带了空格。重新在 API Keys 页面生成https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。接入细节可查文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。报错六截图保存失败ImageGrab在多显示器或权限受限环境可能报错。先确认screenshot_dir有写权限Windows 下避免保存到系统盘根目录。6. 把统一 Key 用在长期编码与 Agent 任务上这套监控工具只是起点。当你开始用 Cursor 写更多脚本、做自动化 Agent 时统一 Key 的价值会更明显所有项目共用一份config.toml换模型、调超时、加备用通道都只改一处。如果你打算把监控数据接到长期运行的编码助手或 Agent 流程里可以看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。Claude Code 相关接入参考https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecodeutm_campaignrewrite 。实际用下来最省事的做法是把config.toml放在用户目录项目里用软链接或环境变量指向它这样多个监控脚本、截图工具、AI 解读模块共享同一套配置不用每开一个新项目就重新配一遍 Key。

相关推荐

claude省钱方式:用settings.json与CLAUDE.md把tokens花在刀刃上
claude省钱方式:用settings.json与CLAUDE.md把tokens花在刀刃上

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 21:04:19

仓颉编程语言开发环境搭建(vscode):TaoToken 统一 Key 配置与 cjc 编译验证
仓颉编程语言开发环境搭建(vscode):TaoToken 统一 Key 配置与 cjc 编译验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 21:04:19

南宁本地网站设计避坑指南:3个关键动作解决没人访问难题
南宁本地网站设计避坑指南:3个关键动作解决没人访问难题

南宁本地网站设计避坑指南:3个关键动作解决没人访问难题 网站做好了没人访问,这是南宁本地企业主最头疼的噩梦。很多老板花了几万块做官网,上线后每天访客个位数,甚至连自己员工都找不到后台入口。问题不在设计多丑,而在前期没做对 最佳实践 。… · 2026/9/27 21:04:13

Jellyfin Media Player 跨平台媒体播放器:三步连上服务器,从安装到播放完整走一遍
Jellyfin Media Player 跨平台媒体播放器:三步连上服务器,从安装到播放完整走一遍

Jellyfin Media Player 跨平台媒体播放器:三步连上服务器,从安装到播放完整走一遍 【免费下载链接】jellyfin-desktop Jellyfin Desktop Client 项目地址: https://gitcode.com/GitHub_Trending/je/jellyfin-desktop Jellyfin Media Player&#… · 2026/9/27 21:32:01

深入掌握 PSR-7:基于 OpenCart 内置 psr/http-message 的 HTTP 消息与流式操作实战
深入掌握 PSR-7:基于 OpenCart 内置 psr/http-message 的 HTTP 消息与流式操作实战

电商后端 【免费下载链接】opencart A free shopping cart system. OpenCart is an open source PHP-based online e-commerce solution. 项目地址: https://gitcode.com/gh_mirrors/op/opencart 点击查看 免费下载 PSR-7 定义了 PHP 生态中 HTTP 消息(… · 2026/9/27 21:32:01

疗养院有必要做网站吗适合什么场景
疗养院有必要做网站吗适合什么场景

疗养院做网站多少钱?避坑指南与部署全流程 找过几家建站公司,报价从3000到3万不等,心里直打鼓:这钱花得值不值?疗养院有必要做网站吗?很多院长或行政负责人在咨询时,最担心的就是被销售话术忽悠,花大价钱买了个花里胡哨但没人看的页面。其实,… · 2026/9/27 21:32:01

OpenClaw(小龙虾)完全使用与技术解析:从入门到精通,本地AI助理实战指南|TaoToken 统一 Key 接入配置
OpenClaw(小龙虾)完全使用与技术解析:从入门到精通,本地AI助理实战指南|TaoToken 统一 Key 接入配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 21:31:54

评测体系:给评测做评测——hollow eval 事故、异步化与「全绿 ≠ 无缺陷」
评测体系:给评测做评测——hollow eval 事故、异步化与「全绿 ≠ 无缺陷」

评测体系:给评测做评测——hollow eval 事故、异步化与「全绿 ≠ 无缺陷」 语言 / Language:中文 | 系列第九章(目录)| 上一章:全链路延迟与稳定性调优 项目:Agentdemo007 —— 电商… · 2026/9/27 21:31:54

Orchard Core 临时文件存储深入指南:ITempDirectoryProvider 架构、配置与共享卷挂载实战
Orchard Core 临时文件存储深入指南:ITempDirectoryProvider 架构、配置与共享卷挂载实战

CMS后端Web框架 【免费下载链接】OrchardCore Orchard Core is an open-source modular and multi-tenant application framework built with ASP.NET Core, and a content management system (CMS) built on top of that framework. 项目地址: https://gitcode.com… · 2026/9/27 21:31:54

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码