尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

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

发布时间:2026/9/24 22:15:45

资讯中心
01
ARTICLE

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

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),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。