关掉网页,AI 还能继续干活?Lumi 开源私人代理部署与上手
把一项资料研究交给 AI,接下来你会关心什么?
我更关心这几件事:能不能先去做别的,回来再看结果?做到一半,能不能补一句“只看官方文档”?下次还要不要重新解释我的目标和偏好?如果要替我发邮件,能不能先让我看清楚发给谁、发什么?
Lumi 把这些问题放进了同一套工作流程:交代任务、后台执行、查看活动、调整指令、批准具体动作、拿到文件。
它所在的开源项目叫 Lumen,代理叫 Lumi。核心应用使用原生 HTML、CSS、JavaScript 和 Node.js,没有额外 npm 运行依赖,可以部署在自己的电脑或常在线主机上。模型由你自己接入,代码采用 MIT 协议。
这篇文章带你从启动服务走到第一项任务,再看计划、记忆、应用连接和独立桌面怎么配合。这里的“关掉网页继续工作”有一个前提:运行 Lumi 的 Node 服务必须保持在线。
本文基于 Lumen 1.6.0,成稿核对日期为 2026-10-05,源码提交为 524725e。10 月 4 日在 macOS、Node.js v22.23.1 下启动了隔离数据目录中的界面,并运行仓库自动测试,结果为 40 项通过、0 项失败。模型与平台测试使用模拟服务;真实模型任务质量、真实账号连接和云端部署不计入此次实测结果。
项目地址:ergou-yu/lumen。
1. 先看效果:任务交出去之后,去哪里找它?
打开 Lumi,先看到的是聊天页。莫奈水面背景、奶油色面板、Lumi 头像,整体更像一个个人工作空间。

本次启动的当前版本界面。右上角为“演示模式”,尚未连接真实模型;这里展示界面,不代表真实任务已经执行。
你可以直接输入任务,也可以附加文件、使用语音。真正值得关注的是侧栏里的 “活动”:它承接后台任务、进度、审批、成果、计划和共享状态。
先把九个页面的用途认清,后面会省很多来回找入口的时间。
| 聊天 | 交代任务、追问、附加文件、切换模型、查看历史 | 后台任务需要先启用后台模型 |
| 动态 | 看今日简报、目标概况和兴趣卡片,发起进一步研究 | 内置兴趣内容是示例;实时信息要用“联网生成真实简报”核查 |
| 灵感 | 从效率、生活、创作、学习等示例开始,或按已知目标生成个性化建议 | 建议保存后,点击“交给 Lumi”才委托执行 |
| 目标 | 建立目标、拆步骤、查看进度 | 原页面主要管理浏览器本地条目;共享目标在活动页 |
| 文件 | 查看、整理和下载成果 | 后台文件也可从活动记录与计算机工作区取得 |
| 记忆 | 查看、编辑、遗忘偏好与事实;接入可选深度记忆 | 原本地记忆与后台共享记忆需要迁移衔接 |
| 计算机 | 搜索、阅读网页、使用工作区;启动独立 Linux 桌面 | 真实桌面需要 Docker 和支持图像观察的模型 |
| 技能 | 查看专业流程说明,管理页面侧技能启用状态 | 技能涉及的外部工具仍要单独满足依赖 |
| 活动 | 查看持续任务、批准动作、调整指令、管理计划、共享目标和记忆 | 是检查后台实际执行结果的主要入口 |
我的建议是:第一次使用,先走通 聊天 → 活动 → 成果,再接邮箱和桌面。这样出了问题,也容易判断卡在哪一层。
2. 接下来部署:先启动,再接自己的模型
2.1 核心应用,三条命令启动
准备 Git 和 Node.js 18 或更高版本。在 macOS、Linux 或 Windows 终端执行:
git clone https://github.com/ergou-yu/lumen.git
cd lumen
node server.js
默认地址是:
http://127.0.0.1:8787
核心应用没有需要先安装的 npm 依赖,因此这条启动路径可以直接运行。Docker、Hindsight 和技能脚本用到的工具属于额外能力,按需配置。
如果端口冲突,在 macOS/Linux 下可以换一个:
PORT=9000 LUMEN_NO_OPEN=1 node server.js
Windows PowerShell 对应写法是:
$env:PORT = "9000"
$env:LUMEN_NO_OPEN = "1"
node server.js
LUMEN_NO_OPEN=1 表示启动时不自动打开浏览器。服务运行期间,保留这个终端进程。
2.2 模型接入有两步,第二步容易漏
先到 设置 → 模型接入,填写模型协议、端点、模型名称和自己的 API Key。
后台支持三类协议:
| OpenAI 兼容 | Base URL 通常包含 /v1;后台使用相应的 Chat Completions 接口 |
| Anthropic | Base URL 可带或不带 /v1,服务按 Messages 接口调用 |
| Gemini | Base URL 需要包含 API 版本路径,例如 /v1beta |
然后进入 活动 → 启用当前模型,明确把配置交给服务桥。活动页应显示已连接的后台模型。

本次截取的活动页,尚未启用后台模型。左侧是后台配置与委托入口,右侧是计划任务。生图模型输入框里的默认名称也需改成你的端点实际支持的模型。
这里有个坑:在浏览器里填好 Key,不等于后台已经配置好。 页面直连与后台执行是两条配置路径。想让任务在关页后继续,应检查活动页,而不是只看聊天页能否回复。
如果习惯用环境变量,也可以在 macOS/Linux 下启动:
# 将两处“替换为……”改成你的真实配置。
# 此例使用 OpenAI 协议;其他提供商请同时修改协议和 Base URL。
LUMEN_MODEL_TYPE=openai \\
LUMEN_MODEL_BASE=https://api.openai.com/v1 \\
LUMEN_MODEL_NAME='替换为你的模型名称' \\
LUMEN_MODEL_API_KEY='替换为你的API_Key' \\
LUMEN_NO_OPEN=1 \\
node server.js
不要凭“兼容 OpenAI”几个字就认定所有能力都可用。文本、图像观察和生图分别取决于端点与模型支持范围。只返回文本的模型,无法承担需要看截图的桌面任务。
没有模型时,可以先体验明确标注的演示模式。直接打开 index.html 也能预览静态界面;持续任务应从服务桥网址进入。
3. 第一项任务,先让它交付一份能检查的文件
刚部署完,我建议先选资料研究或清单整理。任务范围小、结果容易核验,也不需要先连接私人账号。
下面这段可以复制到 活动 → 责任或任务,点击“开始后台任务”。已经启用后台聊天时,也可以从聊天页委托。
请阅读以下两份项目官方说明:
https://github.com/ergou-yu/lumen/blob/main/README.md
https://github.com/ergou-yu/lumen/blob/main/docs/deployment.md
帮我整理一份 Lumi 本地部署检查清单,保存为
research/lumi-deploy-checklist.md。
要求:
1. 分成“核心启动、后台模型、独立桌面、应用连接、常在线部署”五部分。
2. 每部分写清依赖、配置入口、成功信号和常见错误。
3. 给出来源链接;无法读取的内容标为“未核实”。
4. 区分关闭网页、停止服务、电脑休眠这三种情况。
5. 不连接我的账号,不发送消息,不替我修改系统设置。
完成后告诉我文件位置,并列出仍需要我确认的事项。
这是一份使用模板,产物需要由你接入的模型实际执行后生成。检查时看四件事:
如果做到一半发现范围太大,在任务卡片里补一句:
调整一下:只保留本机部署。先完成核心启动和后台模型两部分,桌面与应用连接列为可选项。
后台支持暂停、继续、停止和补充指令。新指令会让尚未执行的旧模型计划作废,避免继续沿着过时要求操作。
然后可以关掉网页,保留 Node 服务运行,稍后重新打开活动页检查结果。“任务已保存”说明委托已进入系统;是否完成,要看工具回执和实际文件。
4. 临时任务之外:把目标、记忆和计划连起来
4.1 后台任务能恢复,也有执行预算
Lumi 将任务状态和检查点保存为本地 JSON。普通读取任务在服务重启后可以按检查点继续,已完成结果也能重新读取。
涉及外部写入时,处理更谨慎。比如请求发出后,服务恰好断线,无法确认对方是否收到,系统会标记 “需要核实外部结果”,不会直接重发一遍。
当前后台最多同时执行 2 项任务。一个父任务可以创建最多 3 个独立子任务,等待它们完成后汇总;不支持继续嵌套子任务。停止父任务也不会顺手停止独立子任务,需要分别检查。
单任务有 64 个模型步骤的预算,每轮最多 16 步。这几个数字是调度限制,不是耗时、费用或成功率承诺。桌面操作还会串行执行,避免多个任务同时抢一台电脑;服务重启后的桌面任务,需要先检查现场再重新委托。
4.2 目标和记忆,解决“每次都要重新解释”
假设你想连续四周学习一个技术主题,可以先在活动页建立共享目标:
目标:四周内整理出一份能复现的 Node 服务部署笔记。
步骤:
第一周:跑通本地启动与配置。
第二周:理解任务持久化与恢复。
第三周:核对应用权限与审批。
第四周:补充常在线部署和故障处理。
再保存一条偏好:
我更喜欢中文说明。技术结论先给来源和复现步骤,再解释原理。
目标提供方向,记忆提供约束。后续生成个性化建议时,Lumi 可以根据这些已知信息研究并保存建议,附上建议理由。你选中“交给 Lumi”后,它才开始执行。 
项目已有验收截图,使用模拟模型数据。它展示建议依据和委托入口,不代表生产模型的推荐质量已经经过评测。
旧版浏览器条目可以通过 活动 → 迁移此浏览器的记忆与目标 转入共享状态。访问同一服务桥的其他设备,能够看到后台任务、目标、记忆、建议和计划。
需要注意,旧聊天记录和浏览器设置仍保存在各自浏览器里。因此,跨设备使用时优先去活动页找后台工作;不要期待所有历史对话自动出现在另一台设备上。
记忆可以查看、修改、遗忘和导出。还有一个可选层 Hindsight,用于长期记忆的召回、沉淀与反思,需要额外部署和模型配置;不启用它,轻量记忆也能使用。此次没有验证真实 Hindsight 服务。
4.3 计划任务,适合有明确来源的重复研究
比如,你想工作日早上检查项目文档是否更新,可以在活动页填写:
| 重复做什么 | 检查指定仓库的 README 与部署说明,保存变化摘要和来源 |
| 运行方式 | 工作日 |
| 时区 | Asia/Shanghai |
| 每天时间 | 09:00 |
| 通知 | 来源内容变化时 |
| 任务权限 | 只读研究与建议 |
计划支持一次性、固定间隔、每天、工作日,也能设置截止时间、编辑、暂停和删除。任务还可以在需要等待时进入休眠,到指定时间继续跟进。
“来源内容变化时”用于减少重复通知。来源没变,系统会抑制重复完成通知;这比每天换一种措辞告诉你“暂无变化”更实用。通知可以在活动页查看,也可通过已配置的 Webhook 或本人私聊回传。
只读计划可以保存建议与研究笔记,但不能发送消息、写产物文件、操作电脑或执行代码。 如果需要生成文件等工作,应选择对应执行模式;对外写入仍要具体审批。
暂停计划会影响后续触发,已经开始的任务需要单独处理。电脑休眠或关机时,本地计划也不能继续跑;要常在线,就把服务放在另一台持续运行的主机上。
5. 需要点网页时,Lumi 有一台独立 Linux 桌面
资料阅读与真实网页操作是两种需求,Lumi 为它们提供了两个层次。
轻量 LumenBox 用于搜索、获取网页正文、访问链接和操作工作区。它不运行网页 JavaScript,适合文本研究;遇到依赖前端交互的网站,就需要真实浏览器。
LumenBox Desktop 在 Docker 中运行独立的 Linux 桌面,基于 Debian 13,包含 Chromium、Xvfb 和 VNC/noVNC。计算机页能看到 Live 画面,也能接管并归还控制权。
本机先安装并启动 Docker Desktop,再从计算机页构建、启动桌面。也可以在仓库根目录执行:
docker build -t lumen-box vm-box/
首次构建需要下载镜像和软件包,时间取决于网络。创建桌面之后,图像观察模型才能根据截图规划操作;遇到登录、验证码等环节,可以接管处理,再把控制权还给 Lumi。
桌面动作还能按名称引用服务端保存的凭证,获批后由服务桥注入字段。凭证列表接口只返回名称与类型,文件存储的保护边界见后面的说明。
桌面里提供 Chromium、终端、文件管理器、GIMP、Inkscape、Blender、Kdenlive 和外观面板,还包含 Node、Python、pip/venv、FFmpeg、Pillow、ReportLab 与 PDF 工具。3D 与视频使用 CPU/软件渲染,速度取决于主机分配的资源。
这些工具给文件创作提供了环境,具体工作流还需要实际验证。当前完整 PDF、Office、视频产物流水线,以及交互工具的在线托管与分享,仍未完成。
文件怎么拿出来?
容器中的 ~/Downloads 与 Lumi 的 vm-home/ 工作区共享。网页下载、你上传的资料、任务生成的文本文件,可以通过计算机页查看和下载;后台任务产物也会出现在活动记录中。
新的后台文本文件操作会检查路径穿越和符号链接逃逸。生成 HTML、JavaScript 文件也可以,但“生成了文件”之后,仍需按自己的部署方式运行或发布。
两个需要审批的能力:代码执行与生图
后台支持执行 Node/Python 代码,使用临时 Docker 容器:普通用户、无网络、15 秒、256 MB 内存、1 CPU。执行前需要批准,适合小段计算和代码验证,不适合依赖在线安装或长时间运行的任务。
真实生图则需要支持 Images API 的 OpenAI 兼容后台端点,以及该端点实际可用的图像模型。调用前要批准,成功后保存 PNG。程序绘制的演示艺术与真实模型生图是两条路径,查看结果时要认清来源。
独立桌面也能换成 Lumi 的样子
默认桌面采用燕麦黄与雾粉,提供 60 套内置壁纸组合,也支持上传 PNG、JPEG、静态 SVG,单文件上限 6 MB。窗口标题栏和 Dock 强调色可以调整。

仓库内置的 Lumi 壁纸素材,不是本次运行桌面的实机截图。
外观与浏览器数据保存在私有 lumen-box-home 卷里。桌面升级会先构建新镜像,再替换容器,保留旧容器备份;启动失败时恢复旧桌面,并继续复用工作区与 home 卷。
明确要求 “用我的电脑” 时,才使用 QCU 本机操作桥,需要额外安装 CLI 并给予系统权限。日常尝试桌面任务,可以先使用独立桌面。旧的宿主软沙箱终端也不能当作容器隔离,可用 LUMEN_VM_SHELL=0 关闭。
6. 接邮箱、日历和飞书,先分清连接与授权
“帮我整理未读邮件,并起草回复”是一个很自然的任务。但模型能写出回复,与实际读取邮箱、发送邮件之间,还隔着账号连接和动作权限。
Lumi 提供 IMAP/SMTP、Google、Microsoft Graph、飞书等连接器路径,涉及邮件、日历、消息和文档的具体能力以账号、接口和授权范围为准。
| IMAP / SMTP | 读取收件箱、发送邮件 | 自己的服务器地址、凭证与权限 |
| Gmail、Calendar 等已实现动作 | 注册 OAuth Web 应用并完成账号授权 | |
| Microsoft Graph | 邮件、日历等已实现动作 | 当前个人 Microsoft 账户授权;本机可用公共客户端与 PKCE |
| 飞书 | 用户身份下的消息、文档、日历动作 | 国内飞书 OAuth 应用、账号授权与对应用户 scopes |
正确顺序是:
仓库没有内置已经注册好的公共 OAuth 应用,因此自托管时仍需要完成一次应用注册。飞书企业自建应用也有分发范围限制,具体配置见项目的 OAuth 部署说明。
权限开关允许 Lumi 尝试某类动作,平台账号还必须真正连接,并授予所需权限。 这两层都通过后,才谈得上执行。
设置里还有动作规则,可选择允许、明确要求才做、先问、转交本人四种倾向。它们帮助控制询问方式,服务端硬限制仍然优先;后台对外写入也仍需批准固定的动作参数。
邮件入口支持未读筛选、中文 MIME 解码和 IMAP 分包处理,会过滤明显的验证码、密码重置邮件主题。这种主题过滤范围有限,不能替代完整的敏感信息识别。
能从手机私聊里交代任务吗?
后台实现了 Slack、Microsoft Teams、WhatsApp 的本人文本私聊入口:绑定本人身份,校验平台签名或 JWT,去重后创建任务。完成或等待审批时,可以回传原私聊。
接入需要自己的平台应用、凭证和公开 HTTPS 回调。当前不支持群聊、附件,真实平台账号尚未完成端到端验收;待审批动作仍在受保护的活动页处理。
另外,设置中的 Instagram 倾向属于浏览器操作路径,没有原生 Instagram API。不要把出现一个平台名称,理解为已实现该平台的全部功能。
7. 让 Lumi 按专业流程做事:技能、语音与个性外观
项目当前包含 10 个内置技能目录,界面会按学习研究、审计、交付评审、前端艺术、电脑操作等类别展示。
这些技能覆盖学习引导、知识关系、资源发现、学习手册、研究预算、证据打包、Harness 审计、交付评审、前端动效与 QCU 操作。技能页能查看说明,后台也可以读取内置技能,为任务提供专业流程。
把技能用好,关键是满足它要求的输入和依赖。一个研究技能可能还需要外部服务或脚本环境,一个电脑技能需要操作桥。读取了 SKILL.md,并不会自动安装好它们。
聊天还支持浏览器语音识别和回复朗读,采用连续轮次:说完、处理、朗读,再继续听。朗读时也能打字,结束语音不会停止后台任务。它依赖浏览器支持与麦克风权限,当前没有原生 Realtime 通话。
外观方面,原来的莫奈风格头像保留。活动页还提供共享名字、形状、颜色、眼睛、眼镜、配饰预览,可以把 Lumi 调成自己喜欢的样子;当前预览也不等于完整的原生动画宠物。
8. 这次实际验证了什么?哪些地方还要自己试?
功能介绍写到这里,最容易让人误解的就是“都支持”三个字。所以把验证条件摆出来。
本次使用 macOS、Node.js v22.23.1,在一份独立临时数据目录中启动应用。界面截图没有使用私人账号、模型密钥或真实任务数据,也没有混入尚未合入的前端设计预览。
在仓库根目录运行:
npm test
Node 测试运行器的实际输出摘要如下,统计包含子测试:
# tests 40
# pass 40
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 6764.327875
约 6.76 秒是这次自动测试套件的运行时间。它不能拿来推算真实模型完成一项研究任务要多久。
| 持续任务 | 请求提交后由服务执行、状态与成果落盘、重启读取回执 |
| 审批与失败处理 | 固定批准参数、拒绝失效审批、未知写入结果不自动重发 |
| 中途调整 | 暂停期间不应用晚到结果、补充指令使旧计划作废 |
| 计划与通知 | 时区、工作日、夏令时、截止时间、来源不变时抑制通知 |
| 模型适配 | 三类协议的请求、图像观察格式、模拟 Images API 的 PNG 回执 |
| 应用与渠道 | OAuth / PKCE、令牌续期和断开竞态、凭据接口隔离、消息签名与本人绑定 |
| 文件与桌面 | 路径和符号链接检查、主题输入检查、镜像升级与失败恢复逻辑 |
| 更新 | 区分磁盘代码与运行中的服务、离线时不误报最新 |
测试中的模型响应、OAuth 平台和消息渠道使用模拟服务。这证明相应代码路径通过了自动检查,不能推出真实账号已经接通,也不能推出模型研究准确率或桌面操作成功率。
如果准备长期使用,我会再选自己的真实任务,记录输入、模型名称、结果文件、耗时、费用和失败原因。先有这些记录,再讨论“好不好用”,比只放一张成功截图更有价值。
上手时,优先检查这六个地方
| 聊天能回复,关页后任务没继续 | 活动页是否启用后台模型;Node 服务是否仍运行 |
| 提示桌面不可用 | Docker 是否安装并启动、镜像是否构建、模型是否支持图像观察 |
| 连接器有配置,却读不到账号 | OAuth 是否完成、scopes 是否足够、活动页是否开放读取权限 |
| 另一台设备没有旧聊天 | 后台共享状态在活动页;旧聊天和设置仍按浏览器保存 |
| 拉取新代码后界面行为没变 | 运行中的 Node 服务是否已重启,再刷新网页 |
| 打算跑定时任务 | 先确认主机持续在线,设置时区与结束时间,再选通知方式 |
还有几条边界值得提前知道:
- 停止不能撤销已经发生的外部动作。 邮件发出后再停止任务,不会把邮件收回。
- 审批由服务端检查具体动作。 “全自动”倾向不能绕过硬限制;当前 Sentinel 是动作审批层,尚不具备 Chromium 全部网络出口拦截等完整安全体系。
- 凭证接口不回传明文,存储仍需保护。 模型配置、连接器令牌及凭证条目保存在私有文件中,0600 是文件权限;当前凭证 JSON 没有实现静态加密保险库。
- 自托管仍可能调用外部服务。 使用云模型、应用 API 或 Hindsight 时,相应数据会按所选端点传输。清除浏览器数据也不会同步清空服务端状态或第三方历史。
9. 想常在线,先选对部署方式
本机体验用默认回环地址即可。需要持续工作时,可以在常在线主机直接运行 Node 服务,并设置独立私有数据目录、访问口令和系统服务管理器。
下面是 macOS/Linux 的启动配置示例;模型配置按前面的步骤另外提供:
LUMEN_NO_OPEN=1 \\
LUMEN_DATA_DIR='/替换为你的私有数据目录' \\
LUMEN_ACCESS_TOKEN='替换为随机生成的高强度口令' \\
LUMEN_HOST=127.0.0.1 \\
node server.js
跨设备或公网访问,通过 HTTPS 反向代理连接回环端口,并阻止绕过代理直接访问 Node 端口。平台消息入口还需要能访问的 HTTPS webhook;OAuth 云端回调需要配置 LUMEN_PUBLIC_URL。
项目也提供 Compose 配置:
cp .env.example .env
# 编辑 .env,填写访问口令和自己的模型配置。
docker compose up -d –build
Compose 默认提供应用服务,持久化后台数据,并将端口绑定到宿主回环地址。默认没有 Docker socket、QCU 或独立桌面环境,因此在这个应用容器里,不能直接启动 LumenBox Desktop、隔离代码工具或托管 Hindsight。需要这些能力,应按部署文档在具备 Docker daemon 的主机上配置。
这仍是一套个人服务:一份私有数据目录绑定一个个人身份,没有多租户账号隔离。备份时保存私有数据目录或数据卷;其中可能含任务、记忆与凭证,不要放进公开仓库。
更新入口在 设置 → 更新。它会区分本地代码版本和正在运行的服务版本;拉取完成后出现“待重启”,就在原终端停止服务,用原配置重新启动,再刷新网页。本地有未提交修改时,应用内更新会拒绝覆盖。
10. 想继续改它,先从后台任务链路读起
Lumi 的关键链路可以这样看:
#mermaid-svg-UIjuSNNmtMccnIqP{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-UIjuSNNmtMccnIqP .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-UIjuSNNmtMccnIqP .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-UIjuSNNmtMccnIqP .error-icon{fill:#552222;}#mermaid-svg-UIjuSNNmtMccnIqP .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-UIjuSNNmtMccnIqP .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-UIjuSNNmtMccnIqP .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-UIjuSNNmtMccnIqP .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-UIjuSNNmtMccnIqP .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-UIjuSNNmtMccnIqP .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-UIjuSNNmtMccnIqP .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-UIjuSNNmtMccnIqP .marker{fill:#333333;stroke:#333333;}#mermaid-svg-UIjuSNNmtMccnIqP .marker.cross{stroke:#333333;}#mermaid-svg-UIjuSNNmtMccnIqP svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-UIjuSNNmtMccnIqP p{margin:0;}#mermaid-svg-UIjuSNNmtMccnIqP .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-UIjuSNNmtMccnIqP .cluster-label text{fill:#333;}#mermaid-svg-UIjuSNNmtMccnIqP .cluster-label span{color:#333;}#mermaid-svg-UIjuSNNmtMccnIqP .cluster-label span p{background-color:transparent;}#mermaid-svg-UIjuSNNmtMccnIqP .label text,#mermaid-svg-UIjuSNNmtMccnIqP span{fill:#333;color:#333;}#mermaid-svg-UIjuSNNmtMccnIqP .node rect,#mermaid-svg-UIjuSNNmtMccnIqP .node circle,#mermaid-svg-UIjuSNNmtMccnIqP .node ellipse,#mermaid-svg-UIjuSNNmtMccnIqP .node polygon,#mermaid-svg-UIjuSNNmtMccnIqP .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-UIjuSNNmtMccnIqP .rough-node .label text,#mermaid-svg-UIjuSNNmtMccnIqP .node .label text,#mermaid-svg-UIjuSNNmtMccnIqP .image-shape .label,#mermaid-svg-UIjuSNNmtMccnIqP .icon-shape .label{text-anchor:middle;}#mermaid-svg-UIjuSNNmtMccnIqP .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-UIjuSNNmtMccnIqP .rough-node .label,#mermaid-svg-UIjuSNNmtMccnIqP .node .label,#mermaid-svg-UIjuSNNmtMccnIqP .image-shape .label,#mermaid-svg-UIjuSNNmtMccnIqP .icon-shape .label{text-align:center;}#mermaid-svg-UIjuSNNmtMccnIqP .node.clickable{cursor:pointer;}#mermaid-svg-UIjuSNNmtMccnIqP .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-UIjuSNNmtMccnIqP .arrowheadPath{fill:#333333;}#mermaid-svg-UIjuSNNmtMccnIqP .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-UIjuSNNmtMccnIqP .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-UIjuSNNmtMccnIqP .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-UIjuSNNmtMccnIqP .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-UIjuSNNmtMccnIqP .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-UIjuSNNmtMccnIqP .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-UIjuSNNmtMccnIqP .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-UIjuSNNmtMccnIqP .cluster text{fill:#333;}#mermaid-svg-UIjuSNNmtMccnIqP .cluster span{color:#333;}#mermaid-svg-UIjuSNNmtMccnIqP div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-UIjuSNNmtMccnIqP .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-UIjuSNNmtMccnIqP rect.text{fill:none;stroke-width:0;}#mermaid-svg-UIjuSNNmtMccnIqP .icon-shape,#mermaid-svg-UIjuSNNmtMccnIqP .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-UIjuSNNmtMccnIqP .icon-shape p,#mermaid-svg-UIjuSNNmtMccnIqP .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-UIjuSNNmtMccnIqP .icon-shape .label rect,#mermaid-svg-UIjuSNNmtMccnIqP .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-UIjuSNNmtMccnIqP .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-UIjuSNNmtMccnIqP .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-UIjuSNNmtMccnIqP :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
聊天或本人私聊入口
Node 后台任务
模型规划
工具调用与权限检查
读取:搜索、网页、文件
写入:具体审批后执行
活动记录与成果
JSON 检查点与共享状态
对应的源码入口也很直接:
| server.js | HTTP 服务桥、连接器、桌面与审批接口 |
| lib/runtime.js | 后台任务、工具调度、检查点、计划、子任务 |
| lib/model.js | 三类模型协议与 Images API |
| lib/channels.js | 本人私聊、签名验证与任务回传 |
| js/continuity.js | 活动页、共享状态和后台任务控制 |
| vm-box/ | 独立 Linux 桌面与主题 |
| skills/、tests/ | 专业流程说明和自动验证 |
如果想自己扩展,我会先加一个范围明确的工具,再验证它的权限、失败回执和持久化行为。这样前端里多出的按钮,才有一条真正能执行、能检查的后台路径。
第一次上手就用前面的部署清单任务:打开来源,下载文件,逐项核对;再补一条指令,看看结果能否按要求收窄。等这条工作流程走顺,再逐步启用计划、应用连接和独立桌面。
交代任务时,把来源、成果格式和完成标准说清楚;回来时,检查实际回执和文件。 这是 Lumi 最值得先练熟的用法。
项目与复现资料
- Lumen 开源仓库与 MIT 许可
- 本文对应版本 README
- 常在线部署与 OAuth 配置
- 自动测试源码
网硕互联帮助中心




评论前必须登录!
注册