concepts

能力平面

next-ai-ready 如何将你的功能暴露为 AI 可调用的工具。

能力平面将你的应用功能转化为 AI Agent 可以调用的工具。定义一次 Action,自动通过多种协议暴露。

defineAction

js
import { defineAction } from "@next-ai-ready/actions";
import { z } from "zod";

defineAction({
  name: "search_product",
  description: "按关键词搜索产品。",
  whenToUse: "当用户想查找产品时使用。",
  input: z.object({ keyword: z.string() }),
  output: z.object({ items: z.array(z.object({ id: z.string(), title: z.string() })) }),
  public: true,
  handler: async ({ keyword }) => {
    return { items: await db.products.search(keyword) };
  },
});

生成内容

每个 Action 定义会生成:

  • `POST /api/actions/<name>` — 带输入验证的 REST 端点
  • `/openapi.json` — OpenAPI 3.1 规范,Action 作为 operation
  • `/tools.json` — OpenAI 兼容的工具清单
  • `/.well-known/ai-plugin.json` — ChatGPT 插件描述符
  • MCP tool — 通过 /api/mcp 端点和 stdio 服务器暴露

可见性控制

Action 默认私有。设置 public: true 将其暴露给 AI:

  • `public: true` — Action 出现在所有生成的清单中,任何 Agent 可调用
  • `public: false`(默认) — Action 存在于注册表中但不对外暴露

whenToUse 字段对 AI 工具选择至关重要 —— 它告诉模型*何时*该 Action 是合适的。doctor CLI 会在公开 Action 缺少 whenToUse 时发出警告。