Deno Agent 架构
在直接 SDK、MCP、LangChain 与 LlamaIndex 之间选择可控的 Agent 实现
Agent 不是一个特殊 runtime,而是“模型决策 → 工具执行 → 结果回传 → 停止判断”的循环。Deno 的价值在于给工具执行显式权限,并能用 Web API、npm SDK、MCP 与 Sandbox 组合边界。
先选复杂度
| 需求 | 起点 |
|---|---|
| 一个模型、少量函数工具 | 供应商官方 SDK,自己写短循环 |
| 工具要被多个客户端复用 | MCP Server |
| 多供应商、graph、tracing、现成 integration | 评估 LangChain.js / LangGraph |
| 文档索引、RAG 与数据 connector 为主 | 评估 LlamaIndex.TS |
| 执行模型生成代码 | Deno Sandbox,不是普通 Deno.Command |
框架通过 npm 兼容层能否安装,不等于每个 integration 在 Deno 上都可用。选型前为实际用到的 loader、vector store、native dependency 和 streaming path 写 smoke test。
可控循环必须有的边界
用户请求
→ 模型(只看到允许的 tool schema)
→ 校验 tool name + arguments
→ 授权 / 人工确认
→ 执行有超时的工具
→ 返回结构化结果
→ 达到停止条件或最大步数
- 固定
maxSteps、总 deadline、token/成本预算和重试次数。 - 工具 handler 不接受任意 shell、SQL、URL 或文件路径。
- 读写分级;删除、付款、发布和生产变更必须单独授权。
- prompt injection 可能来自网页、数据库和 MCP resource;检索内容不是指令,也不是授权。
- 每步记录 tool 名、参数摘要、耗时、结果类型和错误,不记录秘密。
继续阅读:OpenAI、MCP Server、Deno Sandbox。