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

OpenJarvis Morning Brief 实战:用本地 Agent 构建每天 7 点的个人晨报

发布时间:2026/9/24 22:15:47 来源:云帆数科 栏目:资讯中心
OpenJarvis Morning Brief 实战:用本地 Agent 构建每天 7 点的个人晨报
【免费下载链接】OpenJarvisPersonal AI, On Personal Devices项目地址https://gitcode.com/gh_mirrors/op/OpenJarvis点击查看免费下载这是一篇关于 OpenJarvis Morning Brief晨报应用场景的完整技术指南。文章以官方 showcase 案例为骨架结合 Morning Digest 用户指南、Scheduled Ops 教程以及morning_digestAgent 的源码实现向你展示如何让一台常开的本地设备如 Mac mini在夜间自动收集邮箱、Slack、GitHub 与日历数据在早晨 7 点生成一份「5 条要点、两分钟读完」的个人简报并通过 Discord、Slack、Telegram 或邮件送达手机。读完本文你将掌握 Morning Brief 的整体架构、配置方法、定时调度方案以及数据从采集、合成、自我评估到语音播报的完整调用链。场景5 条要点两分钟读完在每个早晨的 7 点第一杯咖啡之前一条消息会出现在用户的私有 Discord 中包含五条要点工作侧最新动态夜间合并的 GitHub 发布与合并的 PR需要行动的两封邮件附带一行摘要团队#generalSlack 频道里值得关注的内容未来 24 小时内的日历会议安排用户托付 Jarvis 追踪的一件事例如「周二的发布是否顺利上线」。它是用户在床上用手机读到的第一条信息。过去完成这份简报需要打开四个应用、逐屏滚动、判断哪些值得关注通常耗时 25 分钟现在只需要两分钟阅读即可收工。官方文档的原始截图见 docs/assets/showcase/morning-brief.png展示的是该晨报在私有 Discord 中的真实形态。为什么值得这么做每月零成本整个流程运行在壁橱里的一台 Mac mini 上。根据 leaderboard 的估算同样的提示词量若走 OpenAI API每月大约需要 18 美元。数据不出家门收件箱、Slack 私信、日历全部由 Jarvis 在本地读取、本地撰写摘要唯一的外发网络调用是发往用户自己私有 Discord 服务器的 webhook。它会学习你的偏好经过几周的运行Jarvis 会逐渐学会「以chore:开头的 PR 标题不值得展示」「自己创建的日历占位不需要提醒」。当用户对某条要点打 时摘要器会更新自己的MEMORY.md来记录偏好。搭建需要准备什么一套可运行的 Morning Brief 只需要四类资源一台常开的设备笔记本或迷你 PC例如 Mac mini保持夜间在线一个推理引擎Ollama 是最省事的默认选择本地运行 LLM数据源账号Slack、Gmail、GitHub、Google Calendar 等需要摘要的服务账号一个投递目的地Discord或 Slack、Telegram、邮件用于接收最终简报。技术方案三个原语 一个 TOML 配方Morning Brief 的实现没有引入任何专属机制而是组合了 OpenJarvis 三个已有的原语orchestratorAgent负责把采集到的原始数据合成为有条理的叙述通道适配器Channel Adapters负责把结果投递到 Discord / Slack / Telegram 等目的地调度器原语Scheduler Primitive负责按 cron 表达式定时触发。三者组合成一个 TOML 配方即可。官方提供了两条实操路线完整教程见 Scheduled Personal Ops它讲解了「cron 调度的 Agent 模式」只想做这一个工作流的话直接阅读聚焦版指南 Morning Digest投递通道的连接方式见 Channels 用户指南。在 src/openjarvis/agents/morning_digest.py 中MorningDigestAgent注册名为morning_digest以「薄编排器」的形式实现了完整流水线。从其run()方法morning_digest.py#L123-L243可以看到四个明确的步骤数据采集调用digest_collect工具按配置的 sections 解析出连接器列表_resolve_sources()默认映射见 morning_digest.py#L100-L121回看最近 24 小时的数据LLM 合成把 persona 提示词、当前日期时区、honorific 与采集到的结构化数据组装进系统提示词要求「只依据提供的数据零幻觉、控制在 200 词以内」自我评估与重生成调用DigestEvaluator对初稿打分低于 7.0 分时携带评估反馈要求模型重写评估器失败不会阻断投递TTS 语音生成与落库剥离残留 Markdown 后交给text_to_speech工具生成音频最终连同文本一起存入 SQLite 的DigestStore见 digest_store.py。五分钟快速上手1. 安装并初始化 OpenJarvisgit clone https://gitcode.com/gh_mirrors/op/OpenJarvis.git cd OpenJarvis uv sync --extra dev2. 通过 Ollama 启动本地 LLMollama pull qwen3.5:9b # 或任何你偏好的模型3. 配置晨报编辑~/.openjarvis/config.toml[engine] default ollama [intelligence] default_model qwen3.5:9b [digest] enabled true schedule 0 6 * * * # 每天 6 点cron 语法 timezone America/Los_Angeles persona jarvis honorific sir # 或 maam、boss 等 tts_backend cartesia # 或 openai voice_id c8f7835e-28a3-4f0c-80d7-c1302ac62aae # Alistair英音男声 voice_speed 1.2 sections [health, messages, calendar, world] [digest.health] sources [oura] [digest.messages] sources [gmail, google_tasks, slack, imessage] [digest.calendar] sources [gcalendar] [digest.world] sources [weather, hackernews, news_rss]在 src/openjarvis/agents/morning_digest.py#L47-L60 中可以看到这些配置项的对应默认值persona默认jarvis、sections默认[messages, calendar, health, world]、timezone默认America/Los_Angeles、tts_backend默认cartesia、honorific默认sir。仓库自带的示例配置位于 configs/openjarvis/config.toml。4. 连接数据源# Google一次 OAuth 覆盖 Gmail、Calendar、Tasks、Contacts、Drive jarvis connect gdrive # 粘贴: client_id:client_secret — 浏览器会自动打开 # Oura Ring个人访问令牌 jarvis connect oura # Spotify jarvis connect spotify # Strava jarvis connect strava天气、GitHub 和新闻源需要直接写入凭据文件# 天气OpenWeatherMap echo {api_key: YOUR_KEY, location: San Francisco,CA,US} ~/.openjarvis/connectors/weather.json # GitHub 通知 echo {token: ghp_YOUR_TOKEN} ~/.openjarvis/connectors/github.json # 新闻 RSS无需认证 — 配置你的订阅源 cat ~/.openjarvis/connectors/news_rss.json EOF {feeds: [ {name: Arxiv CS.AI, url: https://rss.arxiv.org/rss/cs.AI}, {name: TechCrunch, url: https://techcrunch.com/feed/}, {name: Bloomberg, url: https://feeds.bloomberg.com/markets/news.rss}, {name: WSJ, url: https://feeds.a.dj.com/rss/RSSWorldNews.xml} ]} EOF在 macOS 上Hacker News、iMessage 与 Apple Music 无需任何配置即可工作。数据采集的底层实现在 src/openjarvis/tools/digest_collect.pyDigestCollectTool按 section 顺序HEALTH → MESSAGES → CALENDAR → WORLD → MUSIC把每个连接器返回的Document用各自的人读格式化函数整理成结构化文本并支持unacted_only参数只保留未读邮件、未回复的 iMessage 线程、待处理的日历邀请每源最多取 15 条以避免撑爆 LLM 上下文digest_collect.py#L473-L583。5. 设置 TTS API Key# Cartesia export CARTESIA_API_KEYsk_car_... # 或 OpenAI export OPENAI_API_KEYsk-proj-...6. 生成你的第一份晨报CARTESIA_API_KEYsk_car_... jarvis digest --fresh整个流程依次执行从所有已连接数据源采集数据 → 用本地 LLM 合成口语化简报 → 用 Cartesia 的 Alistair 音色生成音频 → 打印文本并播放音频。CLI 命令速查jarvis digest --fresh # 立即生成新晨报 jarvis digest # 显示今天的缓存晨报 jarvis digest --text-only # 只打印文本不播放音频 jarvis digest --history # 查看历史晨报 jarvis digest --schedule 0 6 * * * # 设定每日调度 jarvis digest --schedule off # 关闭调度 jarvis digest --schedule # 查看当前调度状态命令实现见 src/openjarvis/cli/digest_cmd.py。其中--schedule会做两件事把enabled/schedule写回~/.openjarvis/config.toml的[digest]段_save_digest_schedule同时向TaskScheduler注册一个agentmorning_digest的 cron 任务_create_scheduler_task并自动取消旧的晨报任务避免重复触发。音频播放会依次尝试ffplay、aplay、afplay、paplay等系统播放器。另外当通过 CLI、桌面端或浏览器与 Jarvis 聊天时只要说「Good morning」或「morning digest」就会自动触发晨报无需显式执行digest命令。配置参考晨报 Sectionssections列表控制晨报覆盖的内容按优先级排序SectionSources提供内容healthoura、apple_health、strava睡眠、准备度、活动量、锻炼messagesgmail、google_tasks、slack、notion、imessage、github_notifications邮件分诊、任务、短信、Slack、PRcalendargcalendar今日事件与日程worldweather、hackernews、news_rss天气预报、科技新闻、RSS 订阅musicspotify、apple_music最近播放曲目可选开启在源码中每个 section 在系统提示词里都有对应的约束描述例如messages段要求「只优先展示需要行动的邮件或任务」、health段要求「只描述趋势省略原始测量值」见 morning_digest.py#L20-L26。TTS 音色Cartesia推荐 — 自然、富有表现力VoiceID描述Alistairc8f7835e-28a3-4f0c-80d7-c1302ac62aae老练的英音男声Benedict3c0f09d6-e0d7-499c-a594-70c5b7b93048正式优雅的英音男声Harrisondf89f42f-f285-4613-adbf-14eedcec4c9e干脆专业的英音男声Sterlingb134c304-d095-4d2b-a77a-914f5e8e84e7低沉、威严、庄重OpenAI TTSVoice描述onyx低沉男声nova温暖女声alloy中性shimmer表现力丰富的女声Persona 个性化persona字段会加载configs/openjarvis/prompts/personas/{name}.md下的提示词文件源码中的加载逻辑见 morning_digest.py#L29-L38仓库自带jarvis与neutral两个 persona。默认的jarvispersonaconfigs/openjarvis/prompts/personas/jarvis.md用含蓄的英式冷幽默播报优先突出紧急事项并把健康数据解释为趋势而非原始数字同时严格约束「只报告数据中存在的事实、不加 Markdown 与 emoji因为要朗读出来、数据源断连时静默跳过」。创建自定义 persona 只需在 personas 目录新增一个.md文件并把配置里的persona指向该文件名。新闻订阅源在~/.openjarvis/connectors/news_rss.json中可添加任意 RSS/Atom 订阅{feeds: [ {name: Arxiv CS.AI, url: https://rss.arxiv.org/rss/cs.AI}, {name: Arxiv CS.LG, url: https://rss.arxiv.org/rss/cs.LG}, {name: NYT Top Stories, url: https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml}, {name: TechCrunch, url: https://techcrunch.com/feed/}, {name: Bloomberg Markets, url: https://feeds.bloomberg.com/markets/news.rss}, {name: WSJ World News, url: https://feeds.a.dj.com/rss/RSSWorldNews.xml}, {name: Hacker News, url: https://hnrss.org/frontpage} ]}API 端点晨报同样可以通过 FastAPI 服务访问jarvis serve # 启动服务 # GET /api/digest — 获取今日晨报文本 # GET /api/digest/audio — 流式获取晨报音频MP3 # POST /api/digest/generate — 强制重新生成 # GET /api/digest/history — 历史晨报 # GET /api/digest/schedule — 当前调度配置 # POST /api/digest/schedule — 更新调度 {enabled: true, cron: 0 6 * * *}桌面端与浏览器应用在晨报生成后会显示内联音频播放器设置向导中的「Connect」按钮会自动完成 OAuth 流程——点击连接、在浏览器弹窗中授权即可。定时调度让晨报自动出现Morning Brief 的「7 点自动出现」依赖调度器。最直接的方式是使用 CLI 注册 cron 任务并启动调度守护进程jarvis scheduler create Run morning digest \ --type cron --value 0 7 * * * jarvis scheduler start # 前台运行也可作为后台服务 jarvis scheduler list # 随时查看已注册任务OpenJarvis 使用标准的五段 cron 语法minute hour day-of-month month day-of-week。安装croniteruv add croniter后可获得完整的表达式支持区间、步进等未安装时基础的hour:minute模式仍可用。调度器守护进程从 SQLite 读取已注册任务在正确时间触发并把配置的提示词交给对应 Agent脚本本身也可以独立运行——调度器只服务于「无人值守的周期性运行」这一场景。更完整的模式演示含 TOML 声明式调度与 PythonTaskSchedulerAPI见 Scheduled Personal Ops 教程 与 examples/scheduled_ops/ 下的三个示例脚本。故障排查「No digest for today」运行jarvis digest --fresh立即生成一份。Sections 为空用jarvis connect --list检查连接器状态Google / Spotify 令牌有效期约 1 小时会在下次使用时自动刷新。天气不生效OpenWeatherMap 的 API Key 创建后最长可能需要 2 小时才激活位置格式请用City,State,Country如Palo Alto,CA,US。GitHub 返回 403个人访问令牌需要在「Account permissions」下授予notifications权限不是 Repository permissions。音频无法播放确认已设置CARTESIA_API_KEY或OPENAI_API_KEY并检查对应服务的配额。深入阅读Scheduled Personal Ops 教程cron 调度 Agent 模式的完整讲解Morning Digest 用户指南本工作流的聚焦版配置教程Channels 用户指南连接 Discord / Slack / Telegram 等投递通道Agents 架构文档OrchestratorAgent等内部实现配置指南引擎与模型默认值源码晨报 Agent 在 src/openjarvis/agents/morning_digest.py数据采集工具在 src/openjarvis/tools/digest_collect.pyCLI 在 src/openjarvis/cli/digest_cmd.py赞分享【免费下载链接】OpenJarvisPersonal AI, On Personal Devices项目地址https://gitcode.com/gh_mirrors/op/OpenJarvis点击查看免费下载相关推荐OpenJarvis Daily Digest 实战指南用 orchestrator Agent 构建你的每日晨间新闻简报OpenJarvis Daily Digest 实战指南用 orchestrator Agent 构建你的每日晨间新闻简报 导读 Daily Digest 是OpenHuman Morning Briefing Agent从 prompt.md 到定时投递的每日晨报实现全解OpenHuman Morning Briefing Agent从 prompt.md 到定时投递的每日晨报实现全解 Morning Briefing 是人工智能AI 应用本地部署AI Agent交互助手深度研究OpenJarvis 人格系统实战解析 Jarvis 本地 AI 助手提示词及其在 Morning Digest 中的应用OpenJarvis 人格系统实战解析 Jarvis 本地 AI 助手提示词及其在 Morning Digest 中的应用 OpenJarvis 是一个Pe上一篇AIBrix 研究协作指南从学术灵感到生产级 LLM 推理系统的落地实践下一篇深度解析AMD锐龙性能调优高级硬件调试工具实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

减少对水资源的浪费,让每一滴水多循环一次!
减少对水资源的浪费,让每一滴水多循环一次!

科技在进步,社会在发展。我们改变不了洗车行业自动化洗车的发展趋势、也无力阻止规模化自助洗车行业的悄然兴起,改变不了自动洗车及规模化自助洗车大量用水的现实。由于用工成本高,在全国范围内无人值守的自动洗车机如雨后春笋般林立于城市的… · 2026/9/24 22:15:47

YOLO遥感电力塔目标检测:数据集格式转换与训练全流程指南
YOLO遥感电力塔目标检测:数据集格式转换与训练全流程指南

简介:面向目标检测学习者和遥感应用开发者,这份资源提供了真实场景下的电力塔目标检测数据集。数据集中包含一千张高质量图片,均已使用LabelImg完成标注,并同时提供VOC、COCO和YOLO三种格式标签,分别存放,可… · 2026/9/24 22:15:40

SpringBoot+Vue老龄化社区服务管理平台设计与实现全解析
SpringBoot+Vue老龄化社区服务管理平台设计与实现全解析

我接手这个项目的时候,正赶上社区服务中心打算上一套针对老年人的服务管理系统。当时最头疼的问题不是写代码,而是怎么把“老龄化社区服务”这件听起来很宏观的事,拆成一个个能落地的功能。你要是现在打开各种源码站,搜“SpringBo… · 2026/9/24 22:15:40

OLAP高可用架构设计:从原理到故障恢复的工程实践指南
OLAP高可用架构设计:从原理到故障恢复的工程实践指南

凌晨两点接到值班电话,说报表平台卡死,运营看板全部白屏,用户那边已经炸了锅。我打开监控一看,OLAP集群的查询接口P99延迟已经飙到30秒开外,几个核心节点CPU打满,队列里堆了几万个查询请求。那天晚上我盯着… · 2026/9/24 23:00:40

二叉树遍历全攻略:递归与迭代的Java实现及复杂度分析
二叉树遍历全攻略:递归与迭代的Java实现及复杂度分析

二叉树遍历这块,说实话是算法面试里最容易被问“穿”的知识点。你打开任一份Java后端岗位的题库,前中后序、层序遍历基本是标配,而且面试官往往不会满足于你背出一种写法,递归算过关,紧接着就会追问一句“迭代怎么写&a… · 2026/9/24 23:00:40

RocketMQ 消息重复消费怎么办?四种去重方案对比与实战
RocketMQ 消息重复消费怎么办?四种去重方案对比与实战

1. 这事到底坑在哪:消息重复从来不是“万一”做后端开发的,只要系统里接了 RocketMQ,早晚会被同一个问题找上门:消费端收到了同一条消息两次,而且业务被重复执行了。我最早遇到这事是在一个订单支付的场景,… · 2026/9/24 23:00:40

三国人物关系词频分析词云图:从分词到ECharts交互实战
三国人物关系词频分析词云图:从分词到ECharts交互实战

简介:这是一份面向Python文本分析与数据可视化学习者的实战项目包,围绕三国人物关系与词频展开,适合想掌握中文分词、词频统计和词云图生成的中级学习者练手。压缩包共16个文件,约6.73MB,包含py脚本、txt语料与停用词表… · 2026/9/24 23:00:40

九款图纸加密软件选型指南:透明加密与权限管控实战
九款图纸加密软件选型指南:透明加密与权限管控实战

设计图纸这东西,在制造业、建筑设计、室内装修、工程施工这些圈子里,就是命根子。一张总装图、一套施工图、一份模具图,背后可能是几个月甚至几年的研发投入,是几十号人反复打磨出来的成果。可现实情况是,图纸文件在流… · 2026/9/24 23:00:40

基于ZooKeeper顺序节点实现轻量级FIFO队列的原理与实战
基于ZooKeeper顺序节点实现轻量级FIFO队列的原理与实战

前阵子有个任务调度模块把我折腾得够呛:一批离线数据处理任务必须严格按提交顺序执行,前一个任务不结束,后一个就不能开始。业务方最开始用数据库表加状态位轮询,查询越频繁锁冲突越多;后来试过 Redis List&#xff0c… · 2026/9/24 23:00:33

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

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

企业微信二维码