一个框架三种形态:API、聊天、SaaS,agent-native 想通吃?
一个框架三种形态API、聊天、SaaSagent-native 想通吃【免费下载链接】agent-nativeA framework for building agentic apps项目地址: https://gitcode.com/GitHub_Trending/ag/agent-native当行业还在争论Agent 到底应该长在对话框里、长在 API 网关后面还是长成一整个产品时Builder.io 开源的 agent-native 给出了一个略显贪心的答案三种都要。作为一款定位为构建 agentic 应用的 TypeScript 框架它宣称开发者只需把每个能力定义一次就能同时获得无界面 API、富对话界面和完整 SaaS 应用三种形态——agent 把它当工具调用UI 把它当函数调用HTTP、MCP、A2A、CLI 各取所需。一次定义、处处可用的口号在工具链里并不新鲜但真正落到三种产品形态共享同一份业务逻辑的框架并不多。本文不打算复述宣传语而是直接进入仓库源码与官方文档拆解这套统一 Action 架构如何支撑三种形态以及形态切换背后到底要付出什么代价。三种形态共享一条 Action 主线agent-native 的整个设计都建立在一个核心抽象上Action。在官方架构文档中框架被明确划分为三层——Core框架本身actions、PostgreSQL/PGlite、Drizzle、auth、应用状态、Agent 执行、路由与实时同步、Toolkit可复用的 UI 与产品系统组件、Templates构建在 Core 之上的完整领域应用。而贯穿这三层的是同一份 Action 注册表。一个最简 Action 长这样直接来自仓库里的真实模板文件// community-templates/account-expert/actions/hello.ts import { defineAction } from agent-native/core/action; import { z } from zod; export default defineAction({ description: Return a friendly greeting., mcpTool: true, schema: z.object({ name: z.string().default(world).describe(Name to greet), }), http: { method: GET }, run: async ({ name }) { return { message: Hello, ${name}! }; }, });这段代码没有注册表、没有 index 文件、没有路由配置。框架在启动时扫描actions/目录并自动挂载每个文件见 Actions 总览随后同一个defineAction()会扇出到六个消费方Agent 工具Agent 依据 zod 推导出的 JSON Schema 调用它前端 HookuseActionQuery(hello, { name: Alex })带完整类型推断框架传输层自动挂载在/_agent-native/actions/helloCLI 命令pnpm action hello --nameAlexMCP 工具任何 MCP 兼容宿主Claude、Cursor、Codex可直接发现并调用A2A 工具工作区内其他 agent-native 应用可跨应用委托。更关键的是架构层面的对比传统应用里前端只调用自己的 API 层Agent 想获得同样的能力必须再写一套独立集成而在 agent-native 中UI 和 Agent 调用的是同一个 action、同一张 SQL 表只有一个实现要写只有一个地方可能藏 bug——这是它敢于宣称三种形态通吃的底层逻辑。API 形态无浏览器但绝不是无状态API 形态对应官方文档里的 Automation-first 路径脚手架命令是npx --yes agent-native/corelatest create my-agent --headless社区情报中关于 agent-native 的描述经常出现可构建无界面 API的说法但仓库文档《Automation-First Apps》里有一句被反复强调的话值得注意Automation-first 并不意味着无状态。会话、线程、运行记录、设置、凭据、应用状态、分享记录全部落在 SQL 里——本地开发用 PGlite生产环境用持久化 PostgreSQL。在这种形态下API 层根本不需要单独构建。每一个defineAction天生就是一个 HTTP 端点curl -sS -X POST https://your-app.example.com/_agent-native/actions/summarize-week \ -H Authorization: Bearer $AGENT_NATIVE_TOKEN \ -H Content-Type: application/json \ -d {formId: form_123}关于鉴权HTTP API 文档给出了一个值得注意的细节connectCLI 可以签发两类令牌——绑定个人身份的 Personal Token以及绑定组织合成身份的 Org Service Token。后者的设计意图很直白CI、客服机器人、定时集成这类人走了还得继续跑的场景token 的 subject 是svc-support-deskservice.orgId即使签发者离职或撤销个人令牌也不受影响。这说明框架对API 形态的思考不是简单地把 chat 端点暴露出去而是把它当作一个需要身份治理的生产级集成面。同样的能力也可以整段交给 Agentpnpm agent Summarize this weeks forms.会在项目文件夹里直接跑完整的 app-agent 循环而如果另一个服务需要调用整个 Agent 而非单个 action可以用agentNative.invoke()或runAgentLoop()来自agent-native/core/server自行驱动循环。至于更细粒度的协议选择MCP 文档说明每个部署的应用会自动挂载/mcp端点并提供ask-agent元工具把复杂任务委托给完整 Agent 循环。聊天形态Agent 与 UI 共享同一个会话聊天形态是官方推荐的默认入口脚手架命令npx --yes agent-native/corelatest create my-app --standalone --template chat共享在这个形态下有三个层次构成了核心概念文档所谓的五个架构规则中的关键部分共享 Actions。用户在聊天里说Call the hello action for AlexAgent 依据 description 和 schema 找到 action 并执行用户在页面上点击按钮React 通过useActionMutation调用同一个 action。两条路径走同一份校验、同一份权限、同一份实现。共享数据。Agent 干的活出现在 UI 里UI 里干的活 Agent 也能读到因为双方读写的是同一张 PostgreSQL 表。框架通过/_agent-native/events走 SSE 流式推送并保留轮询作为通用兜底——实时同步文档里明确说这条链路在所有部署环境都工作包括 serverless 和 edge因为它依赖数据库而非内存状态或文件系统监听。共享应用状态。这是最容易被忽视的一层。UI 在每次路由变化时向application_state表写入一条navigation记录Agent 在行动前通过view-screenaction 读取它。仓库模板中的实现很直观// community-templates/account-expert/actions/view-screen.ts export default defineAction({ description: See what the user is currently looking at on screen. Returns the current navigation state for the chat-first app. Always call this first before taking any action., schema: z.object({}), http: false, readOnly: true, run: async () { const navigation await readAppState(navigation); ... return screen; }, });这解决了编辑这个到底指哪个对象这个经典歧义Agent 不是盲猜而是读取用户当前聚焦的线程、图表或文档。Agent 不点击 UI它通过和 UI 相同的 action 层工作——这句话是整套设计的公约数。SaaS 形态开箱即用的可克隆产品第三种形态最重也最激进。它不再是一个脚手架而是一整套可直接改品牌上线的产品。官方称之为Cloneable SaaS从完成品而不是空模板开始。仓库里的templates/目录提供了完整的领域应用——Mail智能收件箱、Calendar智能日历、ContentMDX 笔记、Brain企业知识问答、Slides演示文稿、Analytics数据分析、Clips会议录制、Design设计原型、Forms表单、Plan可视化计划、Dispatch工作区控制台等。这类模板自带什么Templates 文档和核心概念文档列出的清单包括SQL 状态、上下文感知、实时同步、深链、原生聊天组件、生成式 UI、认证与组织权限Better Auth orgs/members/roles/RBAC、技能与记忆、自动化任务、Agent 团队、MCP 双向接入、跨应用 A2A 委托。对一个 SaaS 团队来说这些恰好是每个产品都要做一遍但又不想做的横切能力。值得注意的是生态层的设计community-templates/目录里的示例如 account-expert与官方模板走同一套框架接口而社区模板机制允许任何人把自己的仓库变成模板源CLI 通过--template community:owner/repo#v1.2.0直接安装并可 pin 分支、标签或 commit。换句话说SaaS 形态不仅是拿来即用还具备成为别人的起点的传播属性——这解释了为什么社区文章会反复强调技能复用、自我进化与 Monorepo 工作区能力。形态切换的代价配置复杂度与部署取舍三种形态共享 Action 层听起来像是一次开发、三处交付。但仓库文档在几个关键位置诚实标注了边界这些细节恰恰是评估框架时最该读的部分。第一--headless只是脚手架选择不是运行时模式。《Automation-First Apps》明确写道--headless只选择初始脚手架不选择不同的架构且不存在把 action-only 项目原地转换为浏览器应用的agent-native命令。当产品需要 UI 时官方路径是用 Chat 模板作为迁移参考把模板的 shell、server 插件和 UI 依赖引进来然后保留你的 action 名称、Zod schema、SQL 数据、instructions 和 skills。合同被刻意保持为可移植的——但迁移工作仍然真实存在不是零成本。第二部署形态与数据层绑定。框架基于 Nitro 构建可以编译到 Node.js、serverless 函数、edge worker、Docker、Vercel、Netlify、Cloudflare Workers 等目标见 Deployment 文档。但本地开发用的 PGlitedata/pglite在容器、预览环境和 serverless 文件系统里都可能随时被重置因此每个部署的应用都需要持久化 PostgreSQL。上线前要配置的远不止一个连接串DATABASE_URL、BETTER_AUTH_SECRET用openssl rand -hex 32生成、工作区场景的A2A_SECRET还要在首次访问前运行pnpm migrate:production。三种形态在部署层的共同点是全部状态进 SQL这条硬约束。第三安全与治理不免费。社区对 agent-native 的一篇使用介绍2026-09明确指出项目不替代安全治理与低代码平台权限、审计与部署仍需开发者自行实现。这与仓库的自我定位一致——框架提供 auth 骨架和 access 守卫的复用模式如server/lib/access.ts中的accessFilter、assertAccess、authorize但业务级的细粒度权限边界由应用自己定义。例如 account-expert 模板里对 Slack 写操作的审批逻辑就是业务代码显式声明的// community-templates/account-expert/actions/provider-api-request.ts export function requiresProviderApiApproval(args: { method: string }): boolean { return args.method ! GET args.method ! HEAD; }非幂等的写操作触发审批流读操作放行——这种操作即策略的模式是框架留给开发者的设计空间也是形态自由背后真正的配置成本所在。结语通吃的不是形态是那份契约回到标题的问题agent-native 想通吃 API、聊天、SaaS 三种形态吗从产品野心看确实如此但从架构看通吃的并不是三种界面——而是那份Action SQL 状态 上下文感知的契约。无界面的定时任务、聊天里的实时协作者、完整产品里的仪表盘最终都汇聚到同一个defineAction()和同一张数据库表。这种设计真正省下的是传统架构里UI 一套 API、Agent 一套集成、外部系统再一套封装的重复劳动而真正要付的代价是理解这套契约、接受一切状态入 SQL的约束以及为三种形态分别做权限、审计与部署治理。至于这个取舍是否划算取决于你的产品里 Agent 与 UI 是否真的在持续处理同一份工作——如果是它可能是当前把这种耦合做得最彻底的框架之一。【免费下载链接】agent-nativeA framework for building agentic apps项目地址: https://gitcode.com/GitHub_Trending/ag/agent-native创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

WRS-2降轨分幅数据全解析:从Path/Row查询到Landsat影像任务规划

WRS-2降轨分幅数据全解析:从Path/Row查询到Landsat影像任务规划

简介:这是一份基于WRS-2全球参考系统的Landsat TM影像下行轨道矢量数据,面向遥感与地理信息科学的学习者和工程师,方便快速获取卫星下降轨道对应区域的土地覆盖信息。压缩包内共包含九个文件,以Shapefile标准格式组织,…

2026/10/11 9:59:56 阅读更多 →
风光储并网模型搭建全攻略:从MPPT到SOC的实战避坑指南

风光储并网模型搭建全攻略:从MPPT到SOC的实战避坑指南

说实话,风光储并网模型这活儿,看起来就是把光伏、风机、储能三个单元各自搭好,再并到一根母线上,最后挂到电网上。听起来不算复杂,但真动手的时候,光伏MPPT的初始占空比、风机转子侧控制的PI参数、储能SOC的…

2026/10/11 9:58:55 阅读更多 →
AI Agent自学成才:软件测试的范式革命已至

AI Agent自学成才:软件测试的范式革命已至

最近一年,我有个特别直观的感受:以前大家聊AI软件测试,说的是“用AI帮忙生成几个用例”,现在完全变了一个画风。你给一个AI Agent扔下一个待测应用,它能自己打开界面、点击按钮、填写表单、断言结果,发现Bu…

2026/10/11 9:58:55 阅读更多 →

最新新闻

小学组C++算法赛初赛备考指南:从真题拆解到避坑技巧

小学组C++算法赛初赛备考指南:从真题拆解到避坑技巧

简介:这份资源是2024年信息素养大赛C算法创意实践挑战赛小学组初赛的真题解析文档,面向小学阶段对编程有兴趣、已具备一定C基础的学习者,也适合指导教师作为教学参考。内容覆盖单选题与判断题两种题型,涉及变量定义、运算符、布尔…

2026/10/11 10:56:27 阅读更多 →
为什么 Local Studio 要维护双引擎栈?engines 与 compute 架构及 ComputeBridge 桥接实现解析

为什么 Local Studio 要维护双引擎栈?engines 与 compute 架构及 ComputeBridge 桥接实现解析

【免费下载链接】local-studio Control panel for VLLM, Sglang, llama.cpp, exllamav3 项目地址: https://gitcode.com/gh_mirrors/vl/local-studio 点击查看 免费下载 Local Studio 是一款本地优先的 LLM 推理控制台,统一管理 vLLM、SGLang、llama.cp…

2026/10/11 10:56:27 阅读更多 →
每日算法题2

每日算法题2

链接:LCR 170. 交易逆序对的总数 - 力扣(LeetCode) 在股票交易中,如果前一天的股价高于后一天的股价,则可以认为存在一个「交易逆序对」。请设计一个程序,输入一段时间内的股票交易记录 record&#xff0c…

2026/10/11 10:56:27 阅读更多 →
如何用电脑键盘操控手机终端:OpenClaw on Android搭配Termux的SSH远程配置完全指南

如何用电脑键盘操控手机终端:OpenClaw on Android搭配Termux的SSH远程配置完全指南

移动开发AI 应用CLI开发工具 【免费下载链接】openclaw-android Run OpenClaw on Android with a single command — no proot, no Linux 项目地址: https://gitcode.com/gh_mirrors/op/openclaw-android 点击查看 免费下载 OpenClaw on Android 让你在手机上运行 …

2026/10/11 10:56:27 阅读更多 →
Mesh 还是 Focus?Cell Architecture Studio 双视图模式与截面透视实战指南

Mesh 还是 Focus?Cell Architecture Studio 双视图模式与截面透视实战指南

【免费下载链接】cell-architecture-studio Interactive 3D cell architecture gallery built with React and Three.js 项目地址: https://gitcode.com/gh_mirrors/ce/cell-architecture-studio 点击查看 免费下载 Cell Architecture Studio 是一款基于 React 和 …

2026/10/11 10:56:27 阅读更多 →
【AI 和未来】工作(1)

【AI 和未来】工作(1)

原文链接:https://www.ibm.com/cn-zh/think/insights/ai-and-the-future-of-work 概述 人工智能融入职场是重大技术变革,开启人机协作时代。叠加全球技能短缺、后疫情远程办公、企业数据爆炸等背景,AI成为企业解决业务难题、打造个性化员工体…

2026/10/11 10:55:27 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/10 10:38:42 阅读更多 →