当前位置: 首页 > ai >正文

使用Screenpipe+本地大模型实现私人助手Agent

捕获屏幕信息并用本地大模型总结:我的 Screenpipe 实践记录(一)

一、引言

最近一直想使用大模型技术做些什么,其中一个想法就是做一个私人助手,可以记录每天的行为(浏览了哪些APP、访问了什么网页),每天自动总结生成报告;

这个项目的痛点有:

  1. 隐私化:我的日常行为包含一些工作内容、个人密钥,不能联网上传;
  2. 上下文:大模型分析依赖上下文,包括屏幕截图、录音等,这些数据如何保存、喂给大模型。

基于此,使用Screenpipe+Ollama+Cron,实现可以7*24在本地运行的私人助手

二、技术栈介绍

Screenpipe

img

Screenpipe是一个离线项目,它可以对你的电脑进行 24 小时监控,通过屏幕录制、OCR、音频输入和转录收集信息等途径,保存到本地数据库。

包括以下功能

  • 屏幕录制:24 小时全天候监控,实时录制屏幕,捕捉每一个操作画面。
  • OCR 文字识别:内置强大的 OCR 功能,支持中文及其他语言,轻松提取屏幕中的文字内容。
  • 音频输入与转录:支持捕获麦克风音频输入,并实时转录为文字,保存对话与语音笔记。
  • 本地数据库存储:所有信息都被安全地保存到本地数据库,保障数据隐私和安全。

Ollama

Ollama 是一个开源的大型语言模型(LLM)平台,它支持在本地启动、管理、对话自己的大模型;它支持所有主流大模型在本地启动。

NodeJs+Cron

考虑到项目需要数据管理、本地API调用、开始暂停、Web页面,因此使用NodeJs搭建;

同时,完整的天级数据会很大,本地模型算力有限,我们可以使用Cron定时5分钟记录一次,自动分析并落盘。

三、系统架构

img

四、项目流程介绍

完整项目开源:https://github.com/LittleCoolguy/screen-mic-agent

安装Screenpipe

Mac本地安装Screenpipe

curl -fsSL get.screenpi.pe/cli | sh

执行

screenpipe

执行后,出现如下日志,说明Screenpipe已经成功启动,屏幕数据记录ing。

img

安装ollame,启动模型

官网安装::https://ollama.com/download

启动ollama

ollama serve   # 新终端常驻;或在后台用 systemd/launchctl

安装模型,这里我选择的是qwen2.5:7b-instruct-q4_K_M

ollama run qwen2.5:7b-instruct-q4_K_M

测试一下,成功回答问题。

img

上下文+模型调用

这里主要是使用Screenpipe提供的SDK获取本地屏幕OCR数据、ollama的模型问答接口

模型调用逻辑示例

import { NextResponse } from "next/server";
import { buildPrompt } from "../../../lib/prompt";
import { getRecentContext } from "../../../lib/screenpipe";export const runtime = "nodejs";export async function POST(req: Request) {try {const body = await req.json().catch(() => ({}));const minutes = Math.max(1, Math.min(Number(body?.minutes || 5), 240));const question = (body?.question || "Summarize what I did recently.") as string;const context = await getRecentContext(minutes);const prompt = buildPrompt({ minutes, question, context });console.log(`[analyze] prompt built, context: ${context.length} chars`);const host = process.env.OLLAMA_HOST || "http://localhost:11434";const model = process.env.OLLAMA_MODEL || "llama3.1:8b";const res = await fetch(`${host}/api/generate`, {method: "POST",headers: { "Content-Type": "application/json" },body: JSON.stringify({model,prompt,stream: false})});if (!res.ok) {const errText = await res.text().catch(() => res.statusText);return NextResponse.json({ error: `Ollama request failed: ${errText}` }, { status: 500 });}const data = await res.json().catch(async () => ({ response: await res.text() }));const result = (data && (data.response || data.result || data.output)) || "No response.";return NextResponse.json({ result, minutes, usedModel: model });} catch (e: any) {return NextResponse.json({ error: e?.message || "Unknown error" }, { status: 500 });}
}

Screenpipe SDK调用示例

const { pipe } = await import("@screenpipe/js");const end = new Date();
const start = new Date(end.getTime() - minutes * 60 * 1000);console.log(`[screenpipe] querying for items from ${start.toISOString()} to ${end.toISOString()}`
);
const res = await pipe.queryScreenpipe({contentType: "ocr",          // 只抓 OCR// 如果你只想看某个浏览器,可以放开下一行(示例为 Edge):appName: "Google Chrome",startTime: start.toISOString(),endTime: end.toISOString(),includeFrames: false,limit: 400                   // 可按需调整
});

结果记录

img

五、后续优化

目前这个本地agent能够分析到笔者的屏幕行为并记录,但存在以下问题

  • 屏幕数据噪音多,模型不能很好的识别,需要再尝试性能更高、文本分析能力更适合的大模型;
  • 功能单一,后续计划结合Terminator插件,实现简单的自动化操作。
http://www.xdnf.cn/news/18499.html

相关文章:

  • 某电器5G智慧工厂网络建设全解析
  • Linux学习:信号的保存
  • TypeReference 泛型的使用场景及具体使用流程
  • GEO优化服务商:AI时代数字经济的新引擎——解码行业发展与技术创新实践
  • 【Spring Boot】集成Redis超详细指南 Redis在Spring Boot中的应用场景
  • kubernetes-dashboard使用http不登录
  • 【卷积神经网络详解与实例】1——计算机中的图像原理
  • 卓伊凡的开源战略与PHP-SG16加密技术深度解析-sg加密技术详解-卓伊凡
  • pixijs基础学习
  • pyecharts可视化图表-map:从入门到精通
  • 【手撕JAVA多线程:2.线程安全】 2.1.JVM层面的线程安全保证
  • C++算法·进制转换
  • DeepSeek V3.1深度解析:一个模型两种思维,迈向Agent时代的第一步!
  • 并查集详解
  • 基于Python的农作物病虫害防治网站 Python+Django+Vue.js
  • 说说你对Integer缓存的理解?
  • 文献阅读笔记【物理信息机器学习】:Physics-informed machine learning
  • 【秋招笔试】2025.08.23美团研发岗秋招笔试题
  • SpringBoot applicationContext.getBeansOfType获取某一接口所有实现类,应用于策略模式
  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第五章整理
  • 墨刀原型设计工具操作使用指南及实践操作
  • 玩转Vue3高级特性:Teleport、Suspense与自定义渲染
  • 【假设微调1B模型,一个模型参数是16bit,计算需要多少显存?】
  • 【ABAP4】创建Package
  • 【力扣 Hot100】每日一题
  • Agent原理、构建模式(附视频链接)
  • 深度解析Bitmap、RoaringBitmap 的原理和区别
  • 讲点芯片验证中的统计覆盖率
  • 【攻防世界】easyupload
  • 量子计算驱动的Python医疗诊断编程前沿展望(上)