我把 OpenDots 做成了互动学习室:用一条任务路径理解个人智能体
每次读一个新的 Agent 项目,我最容易遇到的障碍,并不是术语太多,而是读完介绍以后,仍然说不清:谁来执行、在哪协作、结果存在哪里,以及出错后该怎么继续。
研究 OpenDots 时,我决定把这段理解过程做成一个互动学习室。现在已经公开:
https://opendots-learning-studio.pages.dev/
它有五章、十二道递进练习,可以点击对象、回放工作流、跟随架构里的请求路径,也可以听中文 AI 合成讲解。本文讲清楚学习路线和背后的几项设计,先读文章也能获得一个基本框架。
先对齐:模型、Agent 与 OpenDots 分别是什么
模型负责根据输入生成输出;工具让程序有机会读取资料、编辑文档或操作其他系统;Agent 则把模型、工具、上下文和执行步骤组织起来,围绕目标推进任务。这里的定义是理解项目的一种工作定义,不意味着 Agent 可以无限自主行动。
OpenDots 是 CopilotKit 的开源 Agent 工作区模板。Dot 可以有自己的角色、指令、工具许可和电脑。它提供了搭建个人专员工作区的起点,需要使用者部署和配置相关服务。
“个人智能体”在这里指面向个人任务组织上下文、动作和成果的系统。给它起一个名字,并没有自动解决权限、持久化或恢复的问题。
学习室是我独立制作的教学站,讲解依据固定在 OpenDots 源码版本 625452e06cde74cb25b0ce319e2c1be0488f5a5f。它与真正运行 OpenDots 的工作区是两个应用;站内工作流是教学演练,不调用真实模型或外部服务,也不是官方课程。
用一间工作室记住五个对象
先把“每周研究竞品,先让我看草稿,再保存简报”放进脑海,再认识对象,会比先背术语容易一些。
| 对象 | 工作室里的比喻 | 需要记住的职责 |
|---|---|---|
| Dot | 同事 | 角色、指令与获准使用的工具 |
| Thread | 协作对话 | 推进任务的交谈过程 |
| Page | 作品 | 保存以后可以继续编辑的内容 |
| Space | 书架 | 组织页面与文档 |
| Computer | 工位 | 浏览器、工作文件与工具环境 |
这组比喻用来帮助记忆,不是把产品对象完全等同于现实同事。多个 Dot 有不同角色,也不等于模板已经具备多专员自动组队、交接和协同调度的完整能力。
跟着一次任务走,先看哪里会停
在学习室中,我把研究任务拆成派工、找证据、审阅、保存和后续更新。每一步都可以检查四件事:用户看到了什么、系统做了什么、存了什么、下一步由谁决定。
用户要求“先让我审阅”时,研究结果先进入审阅卡,用户选择批准后,再走保存 Page 的路径。这里的暂停是一个有意义的工作状态,不应靠前端动画直接跳过。
这也不能推广成“所有写入天然都会先审批”。页面审阅与外部工具审批有各自的入口和配置。站内明确区分了用户要求的审阅路径,以及启用 Ask first 的 MCP 工具路径。MCP 可以理解为连接外部工具的一套标准接口;工具能被发现,不代表当前 Dot 已获准执行全部动作。
另一个值得单独演练的情形是中断:任务停了,之前已经写出的文件或页面,可能仍然存在。恢复服务以后,先检查成果、动作记录与远端回执,再决定是否重试。任务状态不是外部动作已撤销的证据。
架构先抓住“一条执行链、三处存储”
源码路线里,浏览器界面把用户的消息和操作送到服务端。Hono 可以理解为处理 Web 请求的服务框架;CopilotRuntime 承接会话入口;DotAgent 组织模型与可用工具,通过 TanStack AI 推进执行。
一条简化的聊天路径是:Web 界面 → 会话入口 → DotAgent → 模型与工具 → 结果及会话事件。
读源码时,更容易混淆的是存储。至少需要区分三处:
| 保存位置 | 在当前实现中承担的主要职责 | 不能据此推断什么 |
|---|---|---|
| 本地 SQLite | Dot、Space、Page、任务与部分运行状态、审批和回执等工作区数据 | 有 Thread ID,不代表这里保存了完整聊天历史 |
| Intelligence / Threads | 消息、工具调用与会话事件等 | 能编辑 Page,不代表会话服务已经配置完成 |
| Computer 的持久卷 | Dot 电脑的文件等工作数据 | 写出 report.md,不代表已经创建了一张 Page |
SQLite 是应用使用的轻量关系数据库;持久卷可以理解为容器重启后仍要保留的数据目录。这三处存储在源码中的责任不同,排障时也要分别确认。
例如,页面可以手动编辑,但 Dot chat 提示 setup required,首先应沿“文档编辑”和“会话执行”两条路径检查,不能仅凭界面打开成功就判断所有服务已接通。
十二道题,让理解从“看懂”走到“能解释”
练习分为基础辨认、机制解释、故障诊断和迁移设计四级。实际题目包括:
- 想在下周继续编辑最终简报,应该寻找哪个对象?
- Dot 电脑写出 report.md,聊天有工具记录,却没看到 Page,怎样解释?
- 页面可以手动编辑,但聊天提示 setup required,怎样定位?
- 怎样设计“每周研究竞品,先审草稿,再保存简报”的工作流?
选择题有解释,自由回答有参考检查点和回到对应章节的补学入口。自由回答的初始勾选来自本地词汇匹配,需要学习者逐项复核;它不是模型语义评分,也不是能力认证。
免登录的进度保存,我做了什么取舍
这个公开学习站部署在 Cloudflare Pages。Pages 负责把网页、样式、插画和音频这些静态资源交付给浏览器;课程交互与学习记录仍在浏览器里运行。
当前进度写入 localStorage,可以把它理解为浏览器给这个网站留的一小块本地储物柜。免登录也可以保存目标、答案和自查记录,但这不是账号云同步:换浏览器、换设备、换域名,不会自动带走原来的记录;删除网站数据也会删掉它们。
因此我补上了 JSON 文件备份、导入前预览,以及一次导入撤回。JSON 是一种可以保存结构化数据的文本格式;这里的备份包含学习目标和答案,适合由学习者自己保管。保存失败时也会提示,并允许导出当前仍在内存里的记录。
这个选择让第一版不需要账号与数据库服务,先把免登录学习和可携带备份做完整。将来如果要支持跨设备自动同步,再引入身份、服务端存储和同步冲突处理,不能把目前的本机保存宣传成已经具备这些能力。
如何体验并检验它
打开站点后,可以按下面的顺序走一遍:
- 在学习准备里写下一项你真实想交付的工作,先完成概念判断。
- 在产品地图中切换 Dot、Thread、Page 等对象,用自己的话说明职责。
- 在工作流里先预测下一步,再播放;切换拒绝或中断情形,解释差异。
- 到技术架构中沿一条请求路径,确认执行与存储分别落在哪里。
- 完成分级练习,沿提示回到不熟悉的章节,再补充回答。
- 导出一份进度备份;如需导入,先检查预览,必要时使用撤回。
最后试着写一张自己的任务单:目标、触发条件、许可、工具、成果位置、验收标准和中断后如何继续。能把这些说清楚,再运行真实项目,才更容易判断成功、失败和缺了什么配置。
体验地址:https://opendots-learning-studio.pages.dev/
源码出处:https://github.com/CopilotKit/OpenDots/tree/625452e06cde74cb25b0ce319e2c1be0488f5a5f
本文是作者对独立教学站的介绍与自荐,AI 辅助写作和配图,音频为 AI 合成。项目后续会变化,以上说明针对本课程采用的源码版本,不代表所有外部集成都完成了真实联调。

浙公网安备 33010602011771号