news 2026/10/1 6:57:17

Manus 立项初期会议纪要:Agent 云端浏览器与状态持久化怎么落地 TaoToken

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Manus 立项初期会议纪要:Agent 云端浏览器与状态持久化怎么落地 TaoToken

1. 从立项会议纪要里拆出的三个技术锚点

Manus 立项初期的会议纪要里,有三个词被反复提及:Agent 云端浏览器、状态持久化、渐进式披露。这三个词不是并列关系,而是一条因果链——云端浏览器决定了 Agent 能操作什么,状态持久化决定了 Agent 能不能记住做过什么,渐进式披露决定了用户能不能看懂 Agent 在做什么。任何一个环节断掉,Agent 就退化成一次性脚本。

我重新梳理这份纪要时,最强烈的感受是:团队当时讨论的不是“要不要做”,而是“先做哪一块才能让原型跑起来”。Peak 那句“Devin 的 session credential 不能持久化,这也是咱们一定要解决的事儿”基本定调了技术优先级。因为如果登录态每次都要用户手动接管,Agent 的“代理”属性就不成立,用户会觉得自己在伺候一个健忘的实习生。

所以这篇文章不打算复述会议纪要的哲学讨论,而是把纪要里散落的技术决策翻译成可运行的配置。你会看到三件事:怎么用 TaoToken 的 API 给 Agent 会话挂上持久化状态、怎么配置云端浏览器的接入检查清单、怎么用渐进式披露的思路观察 Agent 行为变化。适合正在做 Agent 原型、被会话状态丢失折磨过的开发者。

先明确一个前提:Manus 纪要里提到的“云端浏览器”不是让你去搭一个远程桌面,而是让 Agent 在一个受控的浏览器实例里执行操作,并且这个实例的登录态、文件系统、环境变量要跨会话保留。TaoToken 在这里的角色是提供模型调用入口,让 Agent 的决策层能稳定拿到推理结果。官网入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api ,两个别混。

2. TaoToken 前置:Agent 会话状态持久化的接入准备

在动手写配置之前,先把 TaoToken 的接入信息理清楚。纪要里范斌提到“密钥管理既安全又对开发者友好”,这个诉求落到实操层面就是:不要把 Key 硬编码进 Agent 的 prompt 或代码里,而是走环境变量或独立的 secret 配置。TaoToken 的 API Key 在控制台生成,地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,生成后你会拿到一串以 sk- 开头的字符串。

这里有个容易踩的坑:很多人把 Base URL 写成 https://taotoken.net/ 然后拼 /v1/chat/completions,结果 404。正确的 Base URL 是 https://taotoken.net/api ,后面接 /v1/chat/completions 或 /v1/messages 取决于你用 OpenAI 兼容格式还是 Anthropic 格式。纪要里张涛调研 XPRA 时强调“只传输变化的像素区域”,这个思路类比到 API 调用就是:只传必要的上下文,不要把整个会话历史每次都塞进去,否则 token 消耗会爆炸。

模型 ID 的选择上,Agent 场景建议用支持长上下文和工具调用的模型。如果你做的是 Claude Code 类的编码 Agent,走 Anthropic 兼容端点;如果是通用任务规划,走 OpenAI 兼容端点。具体模型列表在文档里查:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。文档里有每个模型的上下文窗口和工具调用支持情况,别凭感觉选。

状态持久化的核心思路是:Agent 每次会话开始时,从持久化存储里读取上一次的 cookies、localStorage、工作目录文件列表、环境变量;会话结束时,把这些状态写回去。TaoToken 不负责存这些状态,它只负责模型推理。状态存储你可以用 Redis、SQLite 或对象存储,关键是序列化和反序列化的格式要统一。纪要里提到“为每个用户或每个项目提供一个持久化的工作目录”,这个目录的路径要写进 Agent 的 system prompt,让它知道文件该往哪放。

还有一个细节:纪要里潘潘说“我都没有一个 overview”,指的是 Devin 的 Editor 没有文件目录树。你在做状态持久化时,要同时持久化一份文件目录的 JSON 快照,这样 Agent 恢复会话时能先看到“上次我有哪些文件”,而不是从零开始探索。这个快照的生成逻辑可以放在每次文件操作后触发,也可以放在会话结束时统一生成。

3. 可复制的 Agent 会话状态持久化配置片段

下面这份配置是我根据纪要里“登录状态、文件系统、环境变量与密钥管理”三个持久化对象整理的,你可以直接复制到项目里改。配置文件用 JSON 格式,路径放在项目根目录的agent-state/config.json。注意 Base URL 和 Key 的引用方式,Key 不要写死在 JSON 里,用环境变量注入。

{ "agent": { "name": "manus-prototype", "model_id": "claude-sonnet-4-20250514", "base_url": "https://taotoken.net/api", "api_key_env": "TAOTOKEN_API_KEY", "max_tokens": 8192, "temperature": 0.3 }, "persistence": { "enabled": true, "storage_backend": "sqlite", "sqlite_path": "./agent-state/sessions.db", "snapshot_interval_seconds": 30, "restore_on_start": true }, "browser": { "mode": "cloud", "headless": true, "viewport": { "width": 1280, "height": 800 }, "user_data_dir": "./agent-state/browser-profile", "persist_cookies": true, "persist_local_storage": true, "interactive_takeover": { "enabled": true, "trigger_on": ["captcha", "two_factor", "login_required"], "timeout_seconds": 300 } }, "filesystem": { "workspace_root": "./agent-state/workspace", "snapshot_manifest": "./agent-state/workspace-manifest.json", "max_file_size_mb": 50 }, "secrets": { "provider": "env", "keys": ["TAOTOKEN_API_KEY", "THIRD_PARTY_API_KEY"], "mask_in_logs": true }, "progressive_disclosure": { "default_visible_panels": ["chat"], "reveal_on_event": { "shell_exec": ["shell"], "browser_navigate": ["browser"], "file_write": ["editor"] } } }

这份配置里几个关键点解释一下。persistence.storage_backend用 sqlite 是为了原型阶段方便,生产环境换成 Redis 或 Postgres 都行,只要保证restore_on_start能读到上一次的快照。browser.user_data_dir指向一个持久化目录,这样 Chromium 的 cookies 和 localStorage 不会因为进程重启而丢失,这是纪要里“登录状态持久化”的落地方式。

interactive_takeover.trigger_on对应纪要里“用户接管”的讨论。当 Agent 检测到验证码或两步验证时,暂停自动化,把浏览器控制权交给用户,用户完成后 Agent 继续。timeout_seconds设 300 秒是防止用户忘记操作导致会话卡死。

progressive_disclosure这一段直接对应纪要里潘潘说的“一开始只有 planner,然后一点一点随着工作逐渐出来”。default_visible_panels只显示聊天框,当 Agent 执行 shell 命令时才浮现 shell 面板,导航浏览器时才浮现 browser 面板。这样新用户不会被四个面板同时轰炸。

如果你用的是 Claude Code 或 Cline 这类工具,配置文件的路径和字段名会不同,但核心三件套不变:Base URL 填https://taotoken.net/api,Key 从环境变量读,Model ID 填你选的模型。Cline 的 MCP 配置里,baseUrl字段对应上面的base_url,apiKey字段建议用${env:TAOTOKEN_API_KEY}的引用方式。Codex 的auth.json里则是api_base和api_key两个字段,别搞混。

4. 验证请求:重启会话后确认状态恢复

配置写完后,必须做一次完整的验证,否则你不知道状态到底有没有持久化成功。验证分三步:第一次会话写入状态、模拟进程重启、第二次会话读取状态。

第一步,启动 Agent 并让它执行一个会产生状态的操作。比如让 Agent 访问一个需要登录的页面,手动完成登录,然后让 Agent 在 workspace 里写一个文件。用 curl 直接测 TaoToken 的 API 是否通:

export TAOTOKEN_API_KEY="sk-你的key" curl -s https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-20250514", "messages": [{"role": "user", "content": "回复 OK 两个字母"}], "max_tokens": 10 }'

如果返回的 JSON 里有choices[0].message.content且内容是 OK,说明 API 通了。如果返回 401,检查 Key 是否复制完整;如果返回local proxy failed,检查 Base URL 是不是写成了https://taotoken.net/而不是https://taotoken.net/api。

第二步,杀掉 Agent 进程,但不要删除agent-state目录。然后重新启动 Agent,观察日志里有没有restore_on_start相关的输出。正常情况下,Agent 启动时会从 sqlite 里读取上一次的会话快照,包括 cookies 和文件列表。

第三步,让 Agent 执行一个依赖上次状态的任务。比如“打开上次登录的页面,确认是否还在登录态”或“列出 workspace 里上次生成的文件”。如果 Agent 能直接访问而不需要重新登录,说明 cookies 持久化成功;如果能看到上次的文件列表,说明文件系统快照恢复成功。

验证渐进式披露时,观察 Agent 执行不同操作时面板的浮现顺序。第一次执行 shell 命令时,shell 面板应该从隐藏变为可见;第一次导航浏览器时,browser 面板才出现。如果所有面板一开始就全部显示,说明default_visible_panels配置没生效。

还有一个验证点是模型对话的连通性。你可以用 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite 这个入口直接测试模型是否能正常回复,确认 Key 和模型 ID 的对应关系没问题。这个入口适合快速验证,不用写代码。

5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth

排障部分我按真实报错来写,每个报错对应一个具体的配置问题。

401 Unauthorized:最常见的原因是 Key 没传或传错。检查Authorizationheader 是不是Bearer sk-xxx格式,注意 Bearer 后面有一个空格。如果你用的是环境变量引用,确认环境变量在当前 shell 里已经 export。另一个原因是 Key 被撤销或过期,去控制台重新生成一个。

local proxy failed:这个报错通常出现在 Base URL 配置错误时。TaoToken 的 Base URL 是https://taotoken.net/api,不是https://taotoken.net/,也不是https://taotoken.net/api/v1。如果你在 Cline 或 Claude Code 里填了带/v1的 Base URL,工具可能会再拼一次/v1,导致路径变成/api/v1/v1/chat/completions,触发这个报错。把 Base URL 改成https://taotoken.net/api即可。

reading choices 报错:完整报错通常是Cannot read properties of undefined (reading 'choices')。这说明 API 返回的 JSON 结构里没有choices字段,大概率是请求根本没成功,返回的是一个错误对象。先看 HTTP 状态码,如果是 4xx 或 5xx,按上面的 401 或 local proxy failed 排查。如果状态码是 200 但返回体里没有 choices,检查请求体里的model字段是否拼写正确,模型 ID 不存在时有些网关会返回非标准结构。

OAuth 相关报错:如果你在配置 Claude Code 或 Codex 时看到 OAuth 报错,通常是因为工具默认走了 OAuth 流程而不是 API Key 流程。Claude Code 需要在 settings 里显式指定ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY,Codex 需要在auth.json里填api_base和api_key。不要走 OAuth 登录,直接填 Key。

状态恢复失败:如果重启后 Agent 没有恢复状态,检查restore_on_start是否为 true,sqlite_path指向的文件是否存在且非空。如果 sqlite 文件存在但恢复失败,可能是序列化格式不兼容,清空 sessions.db 重新跑一次。

渐进式披露不生效:检查reveal_on_event的事件名是否和 Agent 实际触发的事件名一致。不同框架的事件名可能不同,比如有的用shell_exec,有的用run_command。在 Agent 的日志里看实际事件名,然后改配置。

排障时建议开 debug 日志,把每次 API 请求的 URL、header、body 都打出来。TaoToken 的接入文档里有各语言的示例代码,对照着看能快速定位问题:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。

6. 从原型到长期运行:Coding Plan 与接入文档

原型跑通后,下一步是让它能长期稳定运行。纪要里提到“通用性平台+高频场景优化”的双轮驱动,落到工程上就是:先用通用 Agent 跑通主流程,再把高频操作沉淀成预设能力。这个过程中,API 调用的稳定性和成本控制是关键。

如果你打算把 Agent 用于长期编码任务或持续运行的 Agent 场景,可以关注 Coding Plan 的入口:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite 。它适合需要持续调用模型、对上下文长度和调用频率有要求的场景。具体额度和限制在页面里有说明,按你的实际用量选。

接入文档是另一个必须反复看的地方。TaoToken 的文档覆盖了 OpenAI 兼容格式和 Anthropic 兼容格式的请求示例,还有各语言 SDK 的配置方式。文档地址:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。遇到报错先查文档里的错误码说明,大部分问题都有对应解释。

API Key 的管理建议单独建一个 secret 配置文件,不要和业务代码混在一起。控制台地址:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite 。可以生成多个 Key 分别用于开发、测试、生产,方便排查问题时定位是哪个环境的调用。

最后回到纪要里张涛说的那句“一个旨在重新定义智能体、致力于成为人类强大心智延伸的探索之旅”。技术决策的价值不在于讨论时有多激动,而在于能不能变成可运行的代码。状态持久化和云端浏览器这两个点,只要有一个没落地,Agent 就还是玩具。把上面的配置跑通,重启会话后看到状态恢复的那一刻,你大概能体会到纪要里团队为什么把 persistence 列为“一定要解决的事儿”。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 6:57:06

广东背单词小程序怎么选?6步实测清单帮你少走弯路

关于广东专业的背单词小程序公司哪家强,我实测了半个月,发现真正影响效果的并不是公司名气,而是这6个筛选步骤你有没有走完。如果你正打算用小程序帮孩子或自己提升词汇量,这份清单能帮你省下大量试错时间,建议先收藏再…

作者头像 李华
网站建设 2026/10/1 6:56:44

Qt之QTextCursor接口:从光标定位到富文本编辑的实战拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 6:55:49

免费转 pdf 用什么软件?打工人、学生党实用工具整理

平时办公、写论文、交材料,经常需要把 Word、Excel、图片转成 PDF,很多工具要么要会员,要么转换完自带水印。今天整理了一批靠谱的免费方案,分为电脑本地软件、在线网页,还有不用下载 APP 的微信小程序,按需…

作者头像 李华