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

在AWS上构建类Manus的生产级AI Agent服务:TaoToken统一Key接入与Planning-with-Files配置实战

发布时间:2026/9/28 19:11:31

资讯中心
01
ARTICLE

在AWS上构建类Manus的生产级AI Agent服务:TaoToken统一Key接入与Planning-with-Files配置实战

在AWS上构建类Manus的生产级AI Agent服务:TaoToken统一Key接入与Planning-with-Files配置实战
1. 为什么要在 AWS 上自建类 Manus 的 Agent 服务Manus 这类通用 AI Agent 最让人上头的地方是它能自己拆任务、自己调工具、自己检查结果一个复杂需求丢进去它能在几十步里把活干完。但真到自己动手做问题马上来了模型调用散落在各个文件里今天用 OpenAI 的 Key明天换 Claude 的 Key后天又要接 DeepSeek密钥管理一团乱任务跑到第 15 步上下文超了Agent 开始失忆前面做过什么全忘了再加上 AWS 上一堆服务要串起来ECS、Lambda、S3、SQS光是让链路跑通就得折腾好几天。这篇就解决两件事。第一用 TaoToken 的统一 Key 和 API 通道把多模型调用收敛成一个入口Agent 服务端不用再关心底层是哪家模型换模型只改一个配置。第二落地 Planning-with-Files 机制用任务计划 进展笔记 交付成果三个文件当 Agent 的外部记忆让长周期任务不再丢状态。适合已经在 AWS 上有基础、想搭一套能上生产的 Agent 服务的后端和平台同学也适合想先跑通链路再逐步优化的个人开发者。我试过把模型调用和任务状态分开管理之后整个 Agent 服务的可维护性提升非常明显下面把可复制的配置和验证步骤完整给出来。2. TaoToken 前置统一 Key 与 API 通道准备TaoToken 在这里扮演的角色是模型能力的统一网关。你的 Agent 服务端只需要认一个 base_url 和一个 Key具体请求打到哪个模型由配置决定。这样做的好处很直接Agent 的规划模块、执行模块、总结模块可以分别指定不同模型但代码里只有一套调用逻辑。先拿到访问凭证。打开官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册后进入控制台在 API Keys 页面创建一个 Key。建议按环境拆 Key比如 dev 一个、prod 一个方便后续在 AWS Secrets Manager 里做隔离。创建 Key 的入口在控制台里https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewriteAPI 的基础地址是 https://taotoken.net/api 注意这个地址不带任何查询参数直接作为 OpenAI 兼容客户端的 base_url 使用即可。如果你用的是 Anthropic 风格的 SDK走的是另一套路径文档里有说明。注意Key 只创建一次就保存好页面刷新后不再完整显示。生产环境不要把它写进代码或镜像统一放 Secrets Manager。模型能力可以先在对话页验证通不通https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite如果你后面要做长期编码类 Agent或者需要跑 Coding Plan 这种持续任务可以单独看下套餐页https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite接入细节和参数说明在文档里https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite3. 可复制配置settings.json 与 config.toml 骨架Agent 服务端我习惯用 Python配置分两层一层是应用级 settings.json管模型路由和任务参数一层是工具级 config.toml管 Planning-with-Files 的文件路径和沙箱行为。下面两份骨架可以直接抄。3.1 settings.json模型路由与任务参数{ taotoken: { base_url: https://taotoken.net/api, api_key_env: TAOTOKEN_API_KEY, timeout_seconds: 120, max_retries: 3 }, model_routing: { planner: { model: claude-sonnet-4-20250514, temperature: 0.2, max_tokens: 4096 }, executor: { model: gpt-4o, temperature: 0.1, max_tokens: 8192 }, summarizer: { model: deepseek-chat, temperature: 0.3, max_tokens: 2048 } }, agent: { max_steps: 40, step_timeout_seconds: 300, context_window_tokens: 128000, planning_with_files: { enabled: true, workspace_root: /app/workspace, plan_file: task_plan.md, notes_file: notes.md, deliverables_dir: deliverables } }, aws: { region: us-east-1, s3_bucket: ai-agent-workspace, sqs_queue_url: https://sqs.us-east-1.amazonaws.com/123456789012/agent-tasks } }这里的关键点是 model_routing 把三个角色拆开了。planner 用推理强的模型做任务分解executor 用工具调用稳的模型做执行summarizer 用便宜的模型做收尾总结。三个角色都走同一个 base_url换模型只改 model 字段。3.2 config.tomlPlanning-with-Files 与沙箱配置[workspace] root /app/workspace plan_file task_plan.md notes_file notes.md deliverables_dir deliverables max_file_size_mb 10 [planning] auto_checkpoint true checkpoint_every_steps 5 replan_on_failure true max_replan_attempts 2 [sandbox] enabled true runtime python:3.11-slim cpu_limit 1.0 memory_limit 1024m network_disabled true timeout_seconds 120 readonly_rootfs true [storage] backend s3 bucket ai-agent-workspace prefix tasks sync_interval_seconds 30 [logging] level INFO cloudwatch_group /ecs/ai-agentsandbox 段是生产环境必须开的。network_disabled true 让代码执行环境断网readonly_rootfs true 防止容器内文件被篡改这两个开关能挡掉大部分意外。3.3 在 AWS Secrets Manager 里存 Keyaws secretsmanager create-secret \ --name ai-agent/taotoken-key \ --secret-string {TAOTOKEN_API_KEY:sk-你的实际Key}然后在 ECS 任务定义里引用{ name: TAOTOKEN_API_KEY, valueFrom: arn:aws:secretsmanager:us-east-1:123456789012:secret:ai-agent/taotoken-key:TAOTOKEN_API_KEY:: }这样容器启动时环境变量自动注入代码里用 os.environ 读就行镜像里永远不出现明文 Key。4. CC Switch / Cline 接入与端到端验证配置写好了先别急着上 ECS本地用 CC Switch 或 Cline 把链路验证通能省掉大量在云上排查的时间。4.1 CC Switch 接入步骤CC Switch 用来管理多套模型配置切换环境很方便。新建一个配置字段这样填{ name: taotoken-prod, base_url: https://taotoken.net/api, api_key: sk-你的实际Key, default_model: claude-sonnet-4-20250514, models: [ claude-sonnet-4-20250514, gpt-4o, deepseek-chat ] }保存后切到这套配置发一条测试消息能正常返回就说明 Key 和通道没问题。4.2 Cline 接入步骤Cline 在 VS Code 里配置更直接。打开设置API Provider 选 OpenAI CompatibleBase URL 填 https://taotoken.net/api API Key 填你的 KeyModel ID 填 claude-sonnet-4-20250514。保存后新建一个对话让它读一个本地文件并总结能跑通就说明工具调用链路正常。4.3 服务端验证脚本本地验证通过后写一个最小脚本验证 Agent 服务端的调用逻辑import os import json from openai import OpenAI client OpenAI( base_urlhttps://taotoken.net/api, api_keyos.environ[TAOTOKEN_API_KEY], ) def plan_task(description: str) - str: resp client.chat.completions.create( modelclaude-sonnet-4-20250514, temperature0.2, messages[ {role: system, content: 你是任务规划器把用户需求拆成可执行步骤输出 JSON。}, {role: user, content: description}, ], ) return resp.choices[0].message.content if __name__ __main__: result plan_task(分析一份 CSV 销售数据输出月度趋势报告) print(result)跑起来看到结构化的步骤 JSON说明规划模块通了。接着把 executor 和 summarizer 也各发一次请求三个角色都通模型路由层就算验证完成。4.4 Planning-with-Files 落盘验证在服务端加一段初始化逻辑确认三个文件能正确创建from pathlib import Path import json def init_task_workspace(task_id: str, description: str) - dict: root Path(/app/workspace) / task_id root.mkdir(parentsTrue, exist_okTrue) (root / deliverables).mkdir(exist_okTrue) plan { task_id: task_id, description: description, status: planning, steps: [], current_step: 0, } (root / task_plan.md).write_text( # Task Plan\n\njson\n json.dumps(plan, ensure_asciiFalse, indent2) \n\n, encodingutf-8, ) (root / notes.md).write_text(# Notes\n\n, encodingutf-8) return {workspace: str(root), plan: str(root / task_plan.md)}执行后检查 /app/workspace 下是否出现任务目录和两个 md 文件deliverables 目录是否为空目录。这一步过了说明文件工作流的基础设施就绪。5. 本篇常见错排查5.1 401 或 403Key 没注入或环境变量名对不上最常见的是 ECS 任务定义里 valueFrom 的 ARN 写错或者环境变量名和代码里读的不一致。先在容器里执行 env | grep TAOTOKEN 确认变量存在再确认代码里 os.environ 的键名完全一致。Secrets Manager 的 ARN 末尾要带 :TAOTOKEN_API_KEY:: 这种 JSON key 后缀漏了会拿到整个 JSON 字符串而不是值。5.2 模型名报错路由配置里的 model 字段写错TaoToken 的模型名要和平台支持的名称一致写错会返回 model not found。排查方法是把 settings.json 里的 model 字段单独拿出来用 curl 直接打一次curl 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:ping}]}能返回就说明模型名对报错就换一个平台支持的名称。5.3 任务跑到中途上下文超限这是 Planning-with-Files 要解决的核心问题。如果还是超检查两点一是 checkpoint_every_steps 是不是设太大建议 5 步一次二是 notes.md 是不是只追加不压缩长任务里笔记会膨胀需要定期让 summarizer 把旧笔记压缩成摘要再写回。可以在 planning 段加一个 notes_max_tokens 限制超过就触发压缩。5.4 沙箱里代码执行超时timeout_seconds 默认 120数据分析类任务经常不够。调大到 300 的同时确认 memory_limit 也同步调大否则会 OOM 而不是超时。另外 network_disabled true 时任何需要联网的代码都会失败如果任务确实要调外部 API得单独开一个受控的出网策略不要直接关掉这个开关。5.5 S3 同步失败IAM 权限不足任务文件写本地没问题但同步到 S3 报 AccessDenied基本是任务角色的 IAM 策略没给 s3:PutObject 和 s3:ListBucket。检查任务定义里的 taskRoleArn 对应的策略Resource 要同时包含 arn:aws:s3:::ai-agent-workspace/* 和 arn:aws:s3:::ai-agent-workspace 两条少一条都会失败。6. 把链路跑通之后整套东西跑通之后你会发现 Agent 服务的复杂度其实不在模型调用而在状态管理和错误恢复。TaoToken 把模型这一层收敛掉之后你可以把精力放在 Planning-with-Files 的检查点设计和沙箱的隔离策略上。建议先把 checkpoint 和 replan 这两个机制调稳再考虑接更多工具。模型对话页可以用来快速验证新模型的表现接入文档里有完整的参数说明长期跑编码类任务的话 Coding Plan 会更划算。
02
RELATED NEWS

相关资讯

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

03
WHY YAOTU

想打造同款高转化官网?

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

◈

场景化定制

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

◐

营销型架构

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

▲

全周期服务

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

免费获取你的建站方案

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