@agent-native/core 0.84.35 → 0.84.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -51
- package/corpus/core/CHANGELOG.md +18 -0
- package/corpus/core/docs/content/actions.mdx +17 -24
- package/corpus/core/docs/content/agent-surfaces.mdx +59 -56
- package/corpus/core/docs/content/cloneable-saas.mdx +3 -3
- package/corpus/core/docs/content/faq.mdx +4 -4
- package/corpus/core/docs/content/getting-started.mdx +246 -204
- package/corpus/core/docs/content/key-concepts.mdx +9 -9
- package/corpus/core/docs/content/locales/ar-SA/cloneable-saas.mdx +3 -3
- package/corpus/core/docs/content/locales/ar-SA/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/ar-SA/getting-started.mdx +148 -214
- package/corpus/core/docs/content/locales/ar-SA/pure-agent-apps.mdx +4 -9
- package/corpus/core/docs/content/locales/ar-SA/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/ar-SA/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/locales/de-DE/cloneable-saas.mdx +3 -3
- package/corpus/core/docs/content/locales/de-DE/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/de-DE/getting-started.mdx +145 -211
- package/corpus/core/docs/content/locales/de-DE/pure-agent-apps.mdx +4 -9
- package/corpus/core/docs/content/locales/de-DE/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/de-DE/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/locales/es-ES/cloneable-saas.mdx +3 -3
- package/corpus/core/docs/content/locales/es-ES/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/es-ES/getting-started.mdx +148 -214
- package/corpus/core/docs/content/locales/es-ES/pure-agent-apps.mdx +4 -9
- package/corpus/core/docs/content/locales/es-ES/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/es-ES/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/fr-FR/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/fr-FR/getting-started.mdx +146 -212
- package/corpus/core/docs/content/locales/fr-FR/pure-agent-apps.mdx +4 -9
- package/corpus/core/docs/content/locales/fr-FR/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/fr-FR/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/locales/hi-IN/cloneable-saas.mdx +3 -3
- package/corpus/core/docs/content/locales/hi-IN/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/hi-IN/getting-started.mdx +149 -215
- package/corpus/core/docs/content/locales/hi-IN/pure-agent-apps.mdx +8 -13
- package/corpus/core/docs/content/locales/hi-IN/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/hi-IN/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/ja-JP/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/ja-JP/getting-started.mdx +144 -210
- package/corpus/core/docs/content/locales/ja-JP/pure-agent-apps.mdx +8 -13
- package/corpus/core/docs/content/locales/ja-JP/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/ja-JP/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/locales/ko-KR/cloneable-saas.mdx +3 -3
- package/corpus/core/docs/content/locales/ko-KR/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/ko-KR/getting-started.mdx +146 -212
- package/corpus/core/docs/content/locales/ko-KR/pure-agent-apps.mdx +8 -13
- package/corpus/core/docs/content/locales/ko-KR/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/ko-KR/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/locales/pt-BR/cloneable-saas.mdx +3 -3
- package/corpus/core/docs/content/locales/pt-BR/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/pt-BR/getting-started.mdx +145 -211
- package/corpus/core/docs/content/locales/pt-BR/pure-agent-apps.mdx +4 -9
- package/corpus/core/docs/content/locales/pt-BR/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/pt-BR/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/locales/zh-CN/cloneable-saas.mdx +3 -3
- package/corpus/core/docs/content/locales/zh-CN/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/zh-CN/getting-started.mdx +158 -209
- package/corpus/core/docs/content/locales/zh-CN/pure-agent-apps.mdx +4 -9
- package/corpus/core/docs/content/locales/zh-CN/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/zh-CN/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.mdx +3 -3
- package/corpus/core/docs/content/locales/zh-TW/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/zh-TW/getting-started.mdx +158 -212
- package/corpus/core/docs/content/locales/zh-TW/pure-agent-apps.mdx +4 -9
- package/corpus/core/docs/content/locales/zh-TW/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/zh-TW/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/native-chat-ui.mdx +17 -32
- package/corpus/core/docs/content/pure-agent-apps.mdx +46 -26
- package/corpus/core/docs/content/template-chat.mdx +8 -8
- package/corpus/core/docs/content/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/what-is-agent-native.mdx +6 -6
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/cli/skills.ts +7 -9
- package/corpus/core/src/client/AssistantChat.tsx +27 -13
- package/corpus/core/src/client/MultiTabAssistantChat.tsx +2 -0
- package/corpus/core/src/client/RunStuckBanner.tsx +195 -21
- package/corpus/core/src/client/blocks/library/wireframe-kit.tsx +57 -9
- package/corpus/core/src/client/blocks/library/wireframe.tsx +3 -18
- package/corpus/core/src/client/chat/widgets/builtin-tool-renderers.tsx +28 -32
- package/corpus/core/src/client/use-run-stuck-detection.ts +14 -1
- package/corpus/core/src/db/schema.ts +5 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +5 -2
- package/corpus/core/src/styles/blocks.css +27 -6
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +1 -4
- package/corpus/templates/content/actions/list-trashed-content-databases.ts +1 -1
- package/corpus/templates/plan/.agents/skills/visual-plan/references/wireframe.md +7 -9
- package/corpus/templates/plan/.agents/skills/visual-recap/references/wireframe.md +7 -9
- package/dist/cli/skills.d.ts +1 -1
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +7 -9
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +6 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +19 -13
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +1 -1
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/RunStuckBanner.d.ts +13 -1
- package/dist/client/RunStuckBanner.d.ts.map +1 -1
- package/dist/client/RunStuckBanner.js +138 -16
- package/dist/client/RunStuckBanner.js.map +1 -1
- package/dist/client/blocks/library/wireframe-kit.d.ts +6 -6
- package/dist/client/blocks/library/wireframe-kit.d.ts.map +1 -1
- package/dist/client/blocks/library/wireframe-kit.js +52 -5
- package/dist/client/blocks/library/wireframe-kit.js.map +1 -1
- package/dist/client/blocks/library/wireframe.d.ts.map +1 -1
- package/dist/client/blocks/library/wireframe.js +1 -11
- package/dist/client/blocks/library/wireframe.js.map +1 -1
- package/dist/client/chat/widgets/builtin-tool-renderers.d.ts.map +1 -1
- package/dist/client/chat/widgets/builtin-tool-renderers.js +27 -31
- package/dist/client/chat/widgets/builtin-tool-renderers.js.map +1 -1
- package/dist/client/use-run-stuck-detection.d.ts +4 -0
- package/dist/client/use-run-stuck-detection.d.ts.map +1 -1
- package/dist/client/use-run-stuck-detection.js +7 -1
- package/dist/client/use-run-stuck-detection.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/db/schema.d.ts +2 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +3 -2
- package/dist/db/schema.js.map +1 -1
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/progress/routes.d.ts +1 -1
- package/dist/resources/handlers.d.ts +3 -3
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +3 -2
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/styles/blocks.css +27 -6
- package/docs/content/actions.mdx +17 -24
- package/docs/content/agent-surfaces.mdx +59 -56
- package/docs/content/cloneable-saas.mdx +3 -3
- package/docs/content/faq.mdx +4 -4
- package/docs/content/getting-started.mdx +246 -204
- package/docs/content/key-concepts.mdx +9 -9
- package/docs/content/locales/ar-SA/cloneable-saas.mdx +3 -3
- package/docs/content/locales/ar-SA/faq.mdx +4 -4
- package/docs/content/locales/ar-SA/getting-started.mdx +148 -214
- package/docs/content/locales/ar-SA/pure-agent-apps.mdx +4 -9
- package/docs/content/locales/ar-SA/template-chat.mdx +2 -2
- package/docs/content/locales/ar-SA/using-your-agent.mdx +2 -2
- package/docs/content/locales/de-DE/cloneable-saas.mdx +3 -3
- package/docs/content/locales/de-DE/faq.mdx +4 -4
- package/docs/content/locales/de-DE/getting-started.mdx +145 -211
- package/docs/content/locales/de-DE/pure-agent-apps.mdx +4 -9
- package/docs/content/locales/de-DE/template-chat.mdx +2 -2
- package/docs/content/locales/de-DE/using-your-agent.mdx +2 -2
- package/docs/content/locales/es-ES/cloneable-saas.mdx +3 -3
- package/docs/content/locales/es-ES/faq.mdx +4 -4
- package/docs/content/locales/es-ES/getting-started.mdx +148 -214
- package/docs/content/locales/es-ES/pure-agent-apps.mdx +4 -9
- package/docs/content/locales/es-ES/template-chat.mdx +2 -2
- package/docs/content/locales/es-ES/using-your-agent.mdx +2 -2
- package/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
- package/docs/content/locales/fr-FR/faq.mdx +4 -4
- package/docs/content/locales/fr-FR/getting-started.mdx +146 -212
- package/docs/content/locales/fr-FR/pure-agent-apps.mdx +4 -9
- package/docs/content/locales/fr-FR/template-chat.mdx +2 -2
- package/docs/content/locales/fr-FR/using-your-agent.mdx +2 -2
- package/docs/content/locales/hi-IN/cloneable-saas.mdx +3 -3
- package/docs/content/locales/hi-IN/faq.mdx +4 -4
- package/docs/content/locales/hi-IN/getting-started.mdx +149 -215
- package/docs/content/locales/hi-IN/pure-agent-apps.mdx +8 -13
- package/docs/content/locales/hi-IN/template-chat.mdx +2 -2
- package/docs/content/locales/hi-IN/using-your-agent.mdx +2 -2
- package/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
- package/docs/content/locales/ja-JP/faq.mdx +4 -4
- package/docs/content/locales/ja-JP/getting-started.mdx +144 -210
- package/docs/content/locales/ja-JP/pure-agent-apps.mdx +8 -13
- package/docs/content/locales/ja-JP/template-chat.mdx +2 -2
- package/docs/content/locales/ja-JP/using-your-agent.mdx +2 -2
- package/docs/content/locales/ko-KR/cloneable-saas.mdx +3 -3
- package/docs/content/locales/ko-KR/faq.mdx +4 -4
- package/docs/content/locales/ko-KR/getting-started.mdx +146 -212
- package/docs/content/locales/ko-KR/pure-agent-apps.mdx +8 -13
- package/docs/content/locales/ko-KR/template-chat.mdx +2 -2
- package/docs/content/locales/ko-KR/using-your-agent.mdx +2 -2
- package/docs/content/locales/pt-BR/cloneable-saas.mdx +3 -3
- package/docs/content/locales/pt-BR/faq.mdx +4 -4
- package/docs/content/locales/pt-BR/getting-started.mdx +145 -211
- package/docs/content/locales/pt-BR/pure-agent-apps.mdx +4 -9
- package/docs/content/locales/pt-BR/template-chat.mdx +2 -2
- package/docs/content/locales/pt-BR/using-your-agent.mdx +2 -2
- package/docs/content/locales/zh-CN/cloneable-saas.mdx +3 -3
- package/docs/content/locales/zh-CN/faq.mdx +4 -4
- package/docs/content/locales/zh-CN/getting-started.mdx +158 -209
- package/docs/content/locales/zh-CN/pure-agent-apps.mdx +4 -9
- package/docs/content/locales/zh-CN/template-chat.mdx +2 -2
- package/docs/content/locales/zh-CN/using-your-agent.mdx +2 -2
- package/docs/content/locales/zh-TW/cloneable-saas.mdx +3 -3
- package/docs/content/locales/zh-TW/faq.mdx +4 -4
- package/docs/content/locales/zh-TW/getting-started.mdx +158 -212
- package/docs/content/locales/zh-TW/pure-agent-apps.mdx +4 -9
- package/docs/content/locales/zh-TW/template-chat.mdx +2 -2
- package/docs/content/locales/zh-TW/using-your-agent.mdx +2 -2
- package/docs/content/native-chat-ui.mdx +17 -32
- package/docs/content/pure-agent-apps.mdx +46 -26
- package/docs/content/template-chat.mdx +8 -8
- package/docs/content/using-your-agent.mdx +2 -2
- package/docs/content/what-is-agent-native.mdx +6 -6
- package/package.json +1 -1
|
@@ -1,259 +1,193 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Primeiros passos"
|
|
3
|
-
description: "Crie
|
|
3
|
+
description: "Crie uma app agentic começando pelo chat, adicione uma action, renderize resultados estruturados inline e evolua para uma página persistente que o agent pode abrir."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Primeiros passos
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
estado. Um agente básico é feito de instruções que o orientam, skills que ensinam
|
|
10
|
-
comportamento repetível e actions que permite que ele faça um trabalho real.
|
|
11
|
-
|
|
12
|
-
**Quer um aplicativo completo para começar?** Clone um de nossos modelos avançados —
|
|
13
|
-
[Chat](/docs/template-chat), [Mail](/docs/template-mail),
|
|
14
|
-
[Calendar](/docs/template-calendar), [Content](/docs/template-content),
|
|
15
|
-
[Analytics](/docs/template-analytics) e [many more](/docs/cloneable-saas) —
|
|
16
|
-
cada um deles é um aplicativo completo que você personaliza.
|
|
17
|
-
|
|
18
|
-
Construir do zero? A única escolha inicial é se você deseja um UI —
|
|
19
|
-
tudo depois (escrever instruções, adicionar skills, definir actions, executar
|
|
20
|
-
o agente) é o mesmo de qualquer maneira.
|
|
21
|
-
|
|
22
|
-
<FileTree
|
|
23
|
-
id="doc-block-z4fwh6"
|
|
24
|
-
title={"Um agente Agent-Native básico"}
|
|
25
|
-
entries={[
|
|
26
|
-
{
|
|
27
|
-
path: "AGENTS.md",
|
|
28
|
-
note: "Instruções sempre ativas: propósito, regras, tom e mapa do que o agente pode fazer",
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
path: ".agents/skills/customer-research/SKILL.md",
|
|
32
|
-
note: "Um playbook reutilizável que o agente carrega quando a tarefa combina",
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
path: "actions/summarize-week.ts",
|
|
36
|
-
note: "Código tipado que o agente, UI, CLI, HTTP, MCP, A2A, jobs e webhooks podem executar",
|
|
37
|
-
},
|
|
38
|
-
]}
|
|
39
|
-
/>
|
|
40
|
-
|
|
41
|
-
Isso é verdade quer você comece com um bate-papo UI, um agente sem cabeça ou um aplicativo completo.
|
|
42
|
-
O UI muda a superfície; instruções, skills e actions dão ao agente seu
|
|
43
|
-
orientação e comportamento.
|
|
44
|
-
|
|
45
|
-
## 1. Crie seu aplicativo
|
|
46
|
-
|
|
47
|
-
Você precisará de [Node.js 22+](https://nodejs.org) e [pnpm](https://pnpm.io).
|
|
48
|
-
|
|
49
|
-
Execute `create` sem sinalizadores e ele perguntará como você deseja iniciar (um modelo completo,
|
|
50
|
-
Chat ou Headless) antes de mais nada:
|
|
8
|
+
Agent-Native é para criar agentic applications: o AI agent e a UI compartilham as mesmas [actions](/docs/actions), dados SQL e application state. O caminho principal começa pelo Chat para que usuários possam falar com o agent imediatamente, e depois adiciona as superfícies de app que o fluxo merece.
|
|
51
9
|
|
|
52
|
-
|
|
53
|
-
npx @agent-native/core@latest create my-app
|
|
54
|
-
```
|
|
10
|
+
O fluxo útil:
|
|
55
11
|
|
|
56
|
-
|
|
12
|
+
1. Criar uma Chat app.
|
|
13
|
+
2. Adicionar uma action.
|
|
14
|
+
3. Renderizar o resultado da action inline no chat.
|
|
15
|
+
4. Persistir dados em SQL.
|
|
16
|
+
5. Adicionar uma página que o agent pode abrir quando a inspeção visual fizer mais sentido.
|
|
57
17
|
|
|
58
|
-
|
|
59
|
-
|
|
18
|
+
## 1. Crie uma Chat app {#create-your-app}
|
|
19
|
+
|
|
20
|
+
Você precisa de [Node.js 22+](https://nodejs.org) e [pnpm](https://pnpm.io).
|
|
60
21
|
|
|
61
22
|
```bash
|
|
62
23
|
npx @agent-native/core@latest create my-app --template chat
|
|
24
|
+
cd my-app
|
|
25
|
+
pnpm install
|
|
26
|
+
pnpm dev
|
|
63
27
|
```
|
|
64
28
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
29
|
+
O template inclui durable chat threads, auth, live sync, diretório `actions/`, actions padrão `view-screen` e `navigate`, e uma app React pronta para estender.
|
|
30
|
+
|
|
31
|
+
## 2. Adicione uma action {#add-an-action}
|
|
32
|
+
|
|
33
|
+
Uma action é uma operação tipada que o agent e a UI chamam juntos. Para este fluxo, crie `actions/analyze-responses.ts`: ela analisa respostas de formulários e retorna um formato validado para um gráfico de chat customizado.
|
|
34
|
+
|
|
35
|
+
<!-- prettier-ignore -->
|
|
36
|
+
```ts
|
|
37
|
+
// actions/analyze-responses.ts
|
|
38
|
+
import { defineAction } from "@agent-native/core/action";
|
|
39
|
+
import { z } from "zod";
|
|
40
|
+
|
|
41
|
+
const responseChartResultSchema = z.object({
|
|
42
|
+
title: z.string(),
|
|
43
|
+
points: z.array(z.object({ day: z.string(), responses: z.number() })),
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
export default defineAction({
|
|
47
|
+
description: "Analyze recent form responses and render a custom chart.",
|
|
48
|
+
schema: z.object({
|
|
49
|
+
formId: z.string().default("demo")
|
|
50
|
+
}),
|
|
51
|
+
outputSchema: responseChartResultSchema,
|
|
52
|
+
chatUI: {
|
|
53
|
+
renderer: "responses.response-chart",
|
|
54
|
+
title: "Gráfico de respostas"
|
|
55
|
+
},
|
|
56
|
+
readOnly: true,
|
|
57
|
+
run: async ({ formId }) => ({
|
|
58
|
+
title: `Responses for ${formId}`,
|
|
59
|
+
points: [{ day: "Mon", responses: 12 }, { day: "Tue", responses: 18 }, { day: "Wed", responses: 24 }, { day: "Thu", responses: 21 }],
|
|
60
|
+
}),
|
|
61
|
+
});
|
|
70
62
|
```
|
|
71
63
|
|
|
72
|
-
|
|
64
|
+
Execute diretamente:
|
|
73
65
|
|
|
74
66
|
```bash
|
|
75
|
-
|
|
76
|
-
pnpm install
|
|
67
|
+
pnpm action analyze-responses --formId demo
|
|
77
68
|
```
|
|
78
69
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
## 2. Adicione uma ação
|
|
82
|
-
|
|
83
|
-
Uma ação é uma operação que seu agente — e seu UI — podem chamar. Ambos os andaimes
|
|
84
|
-
envie com este exemplo:
|
|
85
|
-
|
|
86
|
-
<AnnotatedCode
|
|
87
|
-
id="doc-block-r8sat6"
|
|
88
|
-
title="Sua primeira action"
|
|
89
|
-
filename="actions/hello.ts"
|
|
90
|
-
language="ts"
|
|
91
|
-
code={
|
|
92
|
-
'import { defineAction } from "@agent-native/core/action";\nimport { z } from "zod";\n\nexport default defineAction({\n description: "Diga olá a partir do agente local.",\n schema: z.object({\n name: z.string().default("world"),\n }),\n http: { method: "GET" },\n readOnly: true,\n run: async ({ name }) => {\n return { message: `Hello, ${name}!` };\n },\n});'
|
|
93
|
-
}
|
|
94
|
-
annotations={[
|
|
95
|
-
{
|
|
96
|
-
lines: "5",
|
|
97
|
-
label: "Descrição da ferramenta",
|
|
98
|
-
note: "O agente lê `description` para decidir quando chamar isto como ferramenta.",
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
lines: "6-8",
|
|
102
|
-
label: "Contrato tipado",
|
|
103
|
-
note: "Um `schema` zod valida entradas de todas as superfícies: agente, UI, HTTP, MCP e A2A.",
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
lines: "9",
|
|
107
|
-
label: "Verbo HTTP",
|
|
108
|
-
note: "Exponha esta ação em um endpoint HTTP montado automaticamente.",
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
lines: "10",
|
|
112
|
-
label: "Somente leitura",
|
|
113
|
-
note: "`readOnly` marca a ação como segura para chamar sem aprovação e cacheável para consultas.",
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
lines: "11-13",
|
|
117
|
-
label: "Uma implementação",
|
|
118
|
-
note: "O corpo de `run` é a única fonte da verdade que todas as superfícies executam.",
|
|
119
|
-
},
|
|
120
|
-
]}
|
|
121
|
-
/>
|
|
122
|
-
|
|
123
|
-
Substitua `hello` pela primeira operação real em seu domínio. Você define uma vez;
|
|
124
|
-
todas as superfícies captam isso.
|
|
125
|
-
|
|
126
|
-
Use `AGENTS.md` para orientação que deve ser aplicada a cada turno. Use uma habilidade quando o
|
|
127
|
-
o agente precisa de um fluxo de trabalho ou procedimento de domínio reutilizável. Use uma ação quando o
|
|
128
|
-
o agente precisa de uma maneira digitada e testável para ler dados, gravar dados, chamar um API ou
|
|
129
|
-
realizar uma aprovação.
|
|
130
|
-
|
|
131
|
-
## 3. Execute-o
|
|
132
|
-
|
|
133
|
-
Chame a ação diretamente:
|
|
70
|
+
Ou peça ao agent no navegador:
|
|
134
71
|
|
|
135
|
-
|
|
136
|
-
pnpm action hello --name Steve
|
|
137
|
-
```
|
|
72
|
+
> Analise as respostas recentes do formulário de demonstração.
|
|
138
73
|
|
|
139
|
-
|
|
74
|
+
## 3. Renderize o resultado no chat {#render-inline}
|
|
140
75
|
|
|
141
|
-
|
|
142
|
-
pnpm agent "Call the hello action for Steve and explain what happened."
|
|
143
|
-
```
|
|
76
|
+
Como a action declara `outputSchema` e uma `chatUI.renderer` específica do produto, o transcript não transforma dados estruturados em texto corrido. Registre um componente React para esse id exato no startup da app, por exemplo importando `app/chat-renderers.tsx` uma vez a partir de `app/root.tsx`:
|
|
144
77
|
|
|
145
|
-
|
|
146
|
-
|
|
78
|
+
<!-- prettier-ignore -->
|
|
79
|
+
```tsx
|
|
80
|
+
import { registerActionChatRenderer, type ToolRendererProps,} from "@agent-native/core/client/chat";
|
|
81
|
+
|
|
82
|
+
type ResponseChartResult = {
|
|
83
|
+
title: string;
|
|
84
|
+
points: Array<{ day: string; responses: number }>;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
function ResponseChart({ context }: ToolRendererProps) {
|
|
88
|
+
const result = context.resultJson as ResponseChartResult;
|
|
89
|
+
const max = Math.max(...result.points.map((point) => point.responses), 1);
|
|
90
|
+
return (
|
|
91
|
+
<section className="rounded-lg border bg-card p-4">
|
|
92
|
+
<h3 className="text-sm font-medium">{result.title}</h3>
|
|
93
|
+
<div className="mt-4 flex h-32 items-end gap-2">
|
|
94
|
+
{result.points.map((point) => (
|
|
95
|
+
<div key={point.day} className="flex flex-1 flex-col items-center gap-2">
|
|
96
|
+
<div className="w-full rounded-t bg-primary" style={{ height: `${(point.responses / max) * 100}%` }} />
|
|
97
|
+
<span className="text-xs text-muted-foreground">{point.day}</span>
|
|
98
|
+
</div>
|
|
99
|
+
))}
|
|
100
|
+
</div>
|
|
101
|
+
</section>
|
|
102
|
+
);
|
|
103
|
+
}
|
|
147
104
|
|
|
148
|
-
|
|
149
|
-
|
|
105
|
+
registerActionChatRenderer({
|
|
106
|
+
id: "responses.response-chart",
|
|
107
|
+
renderer: "responses.response-chart",
|
|
108
|
+
Component: ResponseChart,
|
|
109
|
+
});
|
|
150
110
|
```
|
|
151
111
|
|
|
152
|
-
|
|
153
|
-
trabalhos agendados e webhooks. Defina uma vez, ligue de qualquer lugar.
|
|
154
|
-
|
|
155
|
-
<Diagram id="doc-block-12nw2be" title={"Uma ação, cada superfície"} summary={"Um único arquivo defineAction é distribuído para todos os consumidores sem fiação extra."}>
|
|
156
|
-
|
|
157
|
-
```html
|
|
158
|
-
<div class="diagram-fan">
|
|
159
|
-
<div class="diagram-box" data-rough>defineAction</div>
|
|
160
|
-
<div class="diagram-arrow diagram-muted" aria-hidden="true">→</div>
|
|
161
|
-
<div class="diagram-surfaces">
|
|
162
|
-
<span class="diagram-pill">Interface de chat</span
|
|
163
|
-
><span class="diagram-pill">CLI</span><span class="diagram-pill">HTTP</span
|
|
164
|
-
><span class="diagram-pill">MCP</span><span class="diagram-pill">A2A</span
|
|
165
|
-
><span class="diagram-pill">Jobs agendados</span
|
|
166
|
-
><span class="diagram-pill">Webhooks</span>
|
|
167
|
-
</div>
|
|
168
|
-
</div>
|
|
169
|
-
```
|
|
112
|
+
Para saídas genéricas reutilizáveis, o framework também oferece renderers integrados `data-chart` e `data-table`, além de `data-insights` para cards combinados de resumo/gráfico/tabela. Veja [Native Chat UI](/docs/native-chat-ui).
|
|
170
113
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
display: flex;
|
|
180
|
-
flex-wrap: wrap;
|
|
181
|
-
gap: 8px;
|
|
182
|
-
max-width: 420px;
|
|
183
|
-
}
|
|
184
|
-
.diagram-fan .diagram-arrow {
|
|
185
|
-
font-size: 22px;
|
|
186
|
-
line-height: 1;
|
|
187
|
-
}
|
|
188
|
-
```
|
|
114
|
+
<WireframeBlock id="doc-block-inline-result-wireframe-pt">
|
|
115
|
+
<Screen
|
|
116
|
+
surface="desktop"
|
|
117
|
+
html={
|
|
118
|
+
"<div style='min-height:340px;box-sizing:border-box;padding:24px;display:flex;justify-content:center;align-items:center;background:var(--wf-bg)'><div style='width:min(530px,100%);display:flex;flex-direction:column;gap:14px'><div class='wf-card' data-rough style='align-self:flex-end;max-width:70%;padding:12px 14px'><strong>User</strong><p style='margin:6px 0 0'>Analise respostas de demo.</p></div><div class='wf-card' data-rough style='align-self:flex-start;width:min(370px,100%);padding:14px'><strong>Agent</strong><p class='wf-muted' style='margin:6px 0 12px'>Renderizado com responses.response-chart.</p><section class='wf-card' data-rough style='padding:14px'><h3 style='margin:0 0 12px;font-size:14px'>Gráfico de respostas</h3><div data-rough='line:bottom' style='height:104px;display:flex;align-items:end;gap:8px;border-bottom:1.4px solid var(--wf-line);padding-bottom:4px'><div style='flex:1;display:flex;flex-direction:column;align-items:center;gap:6px'><div data-rough style='height:38px;width:100%;background:color-mix(in srgb, var(--wf-accent) 24%, transparent);border:1.4px solid var(--wf-accent);border-radius:8px 8px 3px 3px'></div><span class='wf-muted'>Seg</span></div><div style='flex:1;display:flex;flex-direction:column;align-items:center;gap:6px'><div data-rough style='height:62px;width:100%;background:color-mix(in srgb, var(--wf-accent) 30%, transparent);border:1.4px solid var(--wf-accent);border-radius:8px 8px 3px 3px'></div><span class='wf-muted'>Ter</span></div><div style='flex:1;display:flex;flex-direction:column;align-items:center;gap:6px'><div data-rough style='height:86px;width:100%;background:color-mix(in srgb, var(--wf-accent) 36%, transparent);border:1.4px solid var(--wf-accent);border-radius:8px 8px 3px 3px'></div><span class='wf-muted'>Qua</span></div><div style='flex:1;display:flex;flex-direction:column;align-items:center;gap:6px'><div data-rough style='height:54px;width:100%;background:color-mix(in srgb, var(--wf-accent) 42%, transparent);border:1.4px solid var(--wf-accent);border-radius:8px 8px 3px 3px'></div><span class='wf-muted'>Qui</span></div></div></section></div></div></div>"
|
|
119
|
+
}
|
|
120
|
+
/>
|
|
121
|
+
</WireframeBlock>
|
|
189
122
|
|
|
190
|
-
|
|
123
|
+
## 4. Persista dados em SQL {#persist-data}
|
|
191
124
|
|
|
192
|
-
|
|
125
|
+
Quando o resultado precisa ser revisitado, comparado ou atualizado, salve em SQL e mantenha leitura/escrita atrás de actions:
|
|
193
126
|
|
|
194
|
-
|
|
195
|
-
histórico de execução e credenciais residem em SQL. Localmente é SQLite em
|
|
196
|
-
`data/app.db`; na produção você define `DATABASE_URL`. Veja
|
|
197
|
-
[Deployment](/docs/deployment).
|
|
127
|
+
Defina a tabela com os helpers portáveis do framework, não com imports de `drizzle-orm/sqlite-core` ou `drizzle-orm/pg-core`:
|
|
198
128
|
|
|
199
|
-
|
|
129
|
+
```ts
|
|
130
|
+
// server/db/schema.ts
|
|
131
|
+
import { integer, now, table, text } from "@agent-native/core/db/schema";
|
|
200
132
|
|
|
201
|
-
|
|
133
|
+
export const responseInsights = table("response_insights", {
|
|
134
|
+
id: text("id").primaryKey(),
|
|
135
|
+
formId: text("form_id").notNull(),
|
|
136
|
+
title: text("title").notNull(),
|
|
137
|
+
summary: text("summary").notNull(),
|
|
138
|
+
responseCount: integer("response_count").notNull(),
|
|
139
|
+
createdAt: text("created_at").notNull().default(now()),
|
|
140
|
+
updatedAt: text("updated_at").notNull().default(now()),
|
|
141
|
+
});
|
|
142
|
+
```
|
|
202
143
|
|
|
203
|
-
|
|
144
|
+
Esses helpers escolhem o backend SQL configurado, então o mesmo schema pode rodar com SQLite local e em produção com Postgres, Turso/libSQL, D1 ou outro provider SQL suportado.
|
|
204
145
|
|
|
205
|
-
|
|
146
|
+
- `create-response-insight` escreve um novo insight.
|
|
147
|
+
- `list-response-insights` lê dados para a página.
|
|
148
|
+
- `update-response-insight` atualiza um registro.
|
|
149
|
+
- `analyze-responses` continua retornando o widget nativo do chat.
|
|
206
150
|
|
|
207
|
-
|
|
208
|
-
é uma pequena rota construída no componente `<AgentChatSurface>`:
|
|
151
|
+
Não crie uma REST route duplicada só para o navegador; UI e agent devem compartilhar actions.
|
|
209
152
|
|
|
210
|
-
|
|
211
|
-
// app/routes/_index.tsx
|
|
212
|
-
import { AgentChatSurface } from "@agent-native/core/client";
|
|
153
|
+
## 5. Adicione uma página que o agent pode abrir {#add-a-page}
|
|
213
154
|
|
|
214
|
-
|
|
215
|
-
return <AgentChatSurface mode="page" className="h-full" />;
|
|
216
|
-
}
|
|
217
|
-
```
|
|
155
|
+
Adicione a route `/response-insights` com `useActionQuery("list-response-insights")` e `useActionMutation("create-response-insight")`. A página é uma projeção do SQL state; os dados continuam sendo escritos pelas mesmas actions.
|
|
218
156
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
-
|
|
224
|
-
|
|
225
|
-
|
|
157
|
+
<WireframeBlock id="doc-block-response-insights-page-wireframe-pt">
|
|
158
|
+
<Screen
|
|
159
|
+
surface="desktop"
|
|
160
|
+
html={
|
|
161
|
+
"<main style='min-height:440px;box-sizing:border-box;padding:28px;background:var(--wf-bg)'><section style='max-width:960px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:16px;align-items:stretch'><section class='wf-card' data-rough style='display:flex;flex-direction:column;gap:16px'><header><h2 style='margin:0 0 4px;font-size:28px'>Insights de respostas</h2><p class='wf-muted' style='margin:0'>Insights que o agente criou a partir das respostas do formulário.</p></header><button class='primary' data-rough style='align-self:flex-start'>Analisar formulário demo</button><section style='display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px'><article class='wf-box' data-rough style='padding:12px'><strong>Tema de preços</strong><p class='wf-muted' style='margin:8px 0 0'>Usuários pedem um plano de equipe.</p></article><article class='wf-box' data-rough style='padding:12px'><strong>Queda no onboarding</strong><p class='wf-muted' style='margin:8px 0 0'>Três etapas precisam de texto mais claro.</p></article></section><section class='wf-card' data-rough style='display:flex;flex-direction:column;gap:10px'><div class='wf-row wf-box' data-rough style='padding:10px 12px;gap:12px;justify-content:space-between'><strong>Formulário de demonstração</strong><span class='wf-muted'>42 respostas analisadas</span></div><div class='wf-row wf-box' data-rough style='padding:10px 12px;gap:12px;justify-content:space-between'><strong>Próximo passo</strong><span class='wf-muted'>Revisar dois rascunhos de insights</span></div></section></section><aside class='wf-card' data-rough style='height:100%;box-sizing:border-box;display:flex;flex-direction:column;gap:12px'><strong>Chat</strong><div class='wf-box' data-rough style='align-self:flex-end;max-width:210px;padding:10px 12px'><span class='wf-muted'>Você</span><p style='margin:4px 0 0'>Abra insights de respostas.</p></div><div class='wf-box' data-rough style='align-self:flex-start;max-width:210px;padding:10px 12px'><span class='wf-muted'>Agent</span><p style='margin:4px 0 0'>Insights de respostas abertos.</p></div></aside></section></main>"
|
|
162
|
+
}
|
|
163
|
+
/>
|
|
164
|
+
</WireframeBlock>
|
|
226
165
|
|
|
227
|
-
|
|
228
|
-
[Native Interface de chat](/docs/native-chat-ui) para renderizar resultados de ações como tabelas,
|
|
229
|
-
gráficos e cartões digitados em vez de texto simples.
|
|
166
|
+
Estenda `view-screen` e `navigate` para que o agent saiba a route atual e possa abrir `/response-insights`. Resultados também podem incluir `href: "/response-insights"` para mostrar um botão "Abrir insights de respostas".
|
|
230
167
|
|
|
231
|
-
|
|
232
|
-
sua camada `app/` (Roteador React + Vite) é exatamente o que o andaime sem cabeça
|
|
233
|
-
deixa de fora. A atitude mais limpa é iniciar (ou reformular) a partir do bate-papo
|
|
234
|
-
modelo; seu estado `actions/`, agente e SQL permanecem inalterados. Veja
|
|
235
|
-
[Agent Surfaces](/docs/agent-surfaces) para cada superfície intermediária.
|
|
168
|
+
Quando o chat em página inteira abrir uma página da app, use `AgentChatSurface`, `AgentSidebar`, `useAgentChatHomeHandoff`, `useAgentChatHomeHandoffLinks` e `chatViewTransition` de [Agent Surfaces](/docs/agent-surfaces#rich-chat) para mover o chat para a lateral sem perder o thread.
|
|
236
169
|
|
|
237
|
-
## Estrutura do projeto
|
|
170
|
+
## Estrutura do projeto {#project-structure}
|
|
238
171
|
|
|
239
172
|
```text
|
|
240
173
|
my-app/
|
|
241
|
-
actions/ #
|
|
242
|
-
app/ #
|
|
243
|
-
server/ # Servidor
|
|
244
|
-
AGENTS.md # Instruções
|
|
245
|
-
.agents/ # Skills que o agente
|
|
174
|
+
actions/ # Operações acionáveis pelo agente e pela interface
|
|
175
|
+
app/ # Rotas, páginas e superfícies de chat em React
|
|
176
|
+
server/ # Servidor Nitro e esquema SQL
|
|
177
|
+
AGENTS.md # Instruções sempre ativas para o agente do app
|
|
178
|
+
.agents/ # Skills que o agente carrega quando relevante
|
|
246
179
|
data/app.db # Estado SQLite local quando DATABASE_URL não está definido
|
|
247
180
|
```
|
|
248
181
|
|
|
249
|
-
##
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
- **[
|
|
256
|
-
|
|
257
|
-
- **[
|
|
258
|
-
- **[
|
|
259
|
-
- **[
|
|
182
|
+
## Quer um ponto de partida completo para analytics? {#analytics-starting-point}
|
|
183
|
+
|
|
184
|
+
O exemplo de Insights de respostas acima é pequeno de propósito para mostrar as peças do framework. Se você estiver criando um produto real de analytics, comece com [Analytics](/docs/template-analytics). É o ponto de partida robusto: conecte seus providers, use os dashboards e agent actions existentes e personalize a partir daí.
|
|
185
|
+
|
|
186
|
+
## Próximos passos {#next}
|
|
187
|
+
|
|
188
|
+
- **[Actions](/docs/actions)** — schemas, auth, approvals, hooks e transport.
|
|
189
|
+
- **[Native Chat UI](/docs/native-chat-ui)** — tabelas, gráficos e typed cards para resultados de actions.
|
|
190
|
+
- **[Chat Template](/docs/template-chat)** — a app mínima chat-first.
|
|
191
|
+
- **[Analytics Template](/docs/template-analytics)** — uma base robusta para analytics; conecte providers e personalize a partir daí.
|
|
192
|
+
- **[Context Awareness](/docs/context-awareness)** — `view-screen`, `navigate`, route state e objetos selecionados.
|
|
193
|
+
- **[Agent Surfaces](/docs/agent-surfaces)** — chat, inline UI, app pages, embedded sidecars, automation e agents externos.
|
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "
|
|
3
|
-
description: "
|
|
2
|
+
title: "Automation-First Apps"
|
|
3
|
+
description: "Apps Agent-Native sem navegador para scheduled jobs, filas, scripts, integration workers e agents externos."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Automation-First Apps
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
produto, não um painel. Você envia uma solicitação do terminal, Slack, email, um
|
|
10
|
-
trabalho agendado, outro agente ou bate-papo — "resumir meus e-mails não lidos", "postar o
|
|
11
|
-
métricas diárias para Slack" — e o agente atua e retorna o resultado onde quer que esteja
|
|
12
|
-
pertence. Ainda é um aplicativo real: actions, sessões, estado do aplicativo, histórico,
|
|
13
|
-
configurações, credenciais e registros de compartilhamento, todos ativos em SQL.
|
|
8
|
+
Uma automation-first app é uma app Agent-Native sem navegador para scheduled jobs, filas, scripts, integration workers e agents externos. Não é o caminho padrão de Getting Started, mas é útil quando o workflow ainda não precisa de uma página. Ainda é uma app real: actions, sessions, application state, run history, settings, credentials e registros de compartilhamento vivem em SQL.
|
|
14
9
|
|
|
15
10
|
<Diagram id="doc-block-8brd1i" title={"O loop app-agent é a porta de entrada"} summary={"Muitos pontos de entrada alcançam um loop de agente sobre ações e estados SQL-backed; os resultados retornam para o local de origem da solicitação. A IU é adicionada apenas quando humanos precisam supervisionar."}>
|
|
16
11
|
|
|
@@ -7,7 +7,7 @@ description: "Um aplicativo nativo de agente com foco mínimo no chat: threads d
|
|
|
7
7
|
|
|
8
8
|
O Chat é o ponto de partida básico do aplicativo nativo do agente. Ele oferece um shell limpo no estilo ChatGPT com bate-papo no centro, uma lista de tópicos à esquerda, navegação padrão do aplicativo, autenticação, sincronização ao vivo, actions e um exemplo de ação. Comece aqui quando quiser um aplicativo de navegador real no qual você possa desenvolver sem se comprometer com um modelo de domínio.
|
|
9
9
|
|
|
10
|
-
Se você deseja
|
|
10
|
+
Se você deseja um runtime automation-first sem navegador UI, comece com [Automation-First Apps](/docs/pure-agent-apps). Se você quiser um formato de produto de domínio finalizado, comece com [Calendar](/docs/template-calendar), [Mail](/docs/template-mail), [Content](/docs/template-content), [Forms](/docs/template-forms), [Analytics](/docs/template-analytics) ou outro modelo de domínio.
|
|
11
11
|
|
|
12
12
|
<WireframeBlock id="doc-block-a4b2bv">
|
|
13
13
|
<Screen
|
|
@@ -200,4 +200,4 @@ O agente deve adicionar um esquema Drizzle, actions, rota, navegação e instru
|
|
|
200
200
|
- [**Agent Surfaces**](/docs/agent-surfaces) — padrões headless, chat, incorporados e de aplicativo completo
|
|
201
201
|
- [**Actions**](/docs/actions) — o bate-papo do sistema de ação e UI chamam
|
|
202
202
|
- [**Native Interface de chat**](/docs/native-chat-ui) — primitivas da superfície de bate-papo e opções de tempo de execução
|
|
203
|
-
- [**
|
|
203
|
+
- [**Automation-First Apps**](/docs/pure-agent-apps): automações, filas, scripts e workflows de agents externos sem UI de navegador
|
|
@@ -99,7 +99,7 @@ O agente não é um aplicativo separado que você acessa. Ele é fornecido como
|
|
|
99
99
|
|
|
100
100
|
Nem todo aplicativo precisa de um painel completo. Quando o agente _é_ o produto, você pode pular a maior parte do UI personalizado: abra o aplicativo, peça o que deseja e deixe o agente fazer o resto. O agente ainda tem sua superfície de gerenciamento (histórico, espaço de trabalho, configurações), mas a interação principal é a conversa, e não os cliques.
|
|
101
101
|
|
|
102
|
-
→ [**
|
|
102
|
+
→ [**Automation-First Apps**](/docs/pure-agent-apps) — apps sem navegador para jobs, filas, scripts e agents externos.
|
|
103
103
|
|
|
104
104
|
## Você coedita com ele {#you-co-edit}
|
|
105
105
|
|
|
@@ -113,5 +113,5 @@ Quando você e o agente estão trabalhando no mesmo documento, vocês não se re
|
|
|
113
113
|
- [**Agent Mentions**](/docs/agent-mentions) — direcione-o com menções a `@`
|
|
114
114
|
- [**Voice Input**](/docs/voice-input) — direcione falando
|
|
115
115
|
- [**Drop-in Agent**](/docs/drop-in-agent) — incorpore-o em qualquer aplicativo React
|
|
116
|
-
- [**
|
|
116
|
+
- [**Automation-First Apps**](/docs/pure-agent-apps) — apps sem navegador para jobs, filas, scripts e agents externos
|
|
117
117
|
- [**Real-Time Collaboration**](/docs/real-time-collaboration) — coeditam o mesmo documento juntos
|
|
@@ -30,7 +30,7 @@ description: "分叉一个可用的 SaaS 产品并使其成为您的产品 - 包
|
|
|
30
30
|
| [**Plan**](/docs/template-plan) | 带有图表、线框图和注释的视觉计划和公关概述。 |
|
|
31
31
|
| [**Dispatch**](/docs/template-dispatch) | 工作区控制平面:共享秘密、可重用集成、Slack/Telegram、计划作业。 |
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
不需要域应用?当您想要一个用户可以立即交谈,并可继续扩展 actions、原生结果和页面的基本应用时,请使用 [Chat](/docs/template-chat)。只有在暂时不需要浏览器 UI 的自动化工作流中,才使用 [Automation-First Apps](/docs/pure-agent-apps)。
|
|
34
34
|
|
|
35
35
|
查看 [Apps](/apps) 下的完整目录,或直接跳到其中一个 - 例如,如果您想要一款工作区风格的应用,[Dispatch](/docs/template-dispatch) 是一个很好的起点。
|
|
36
36
|
|
|
@@ -166,7 +166,7 @@ description: "分叉一个可用的 SaaS 产品并使其成为您的产品 - 包
|
|
|
166
166
|
|
|
167
167
|
## 在此基础上构建
|
|
168
168
|
|
|
169
|
-
- [**Getting Started**](/docs/getting-started) -
|
|
169
|
+
- [**Getting Started**](/docs/getting-started) - 创建聊天优先应用,添加 action,渲染结构化结果,并扩展为页面
|
|
170
170
|
- [**Messaging the agent**](/docs/messaging) - 用户(和您)如何与每个模板附带的代理对话
|
|
171
171
|
- [**Multi-App Workspace**](/docs/multi-app-workspace) — 将多个模板捆绑到一个共享身份验证、品牌和代理的工作区
|
|
172
172
|
- [**Dispatch**](/docs/template-dispatch) — 工作区控制平面模板
|
|
@@ -180,7 +180,7 @@ description: "分叉一个可用的 SaaS 产品并使其成为您的产品 - 包
|
|
|
180
180
|
npx @agent-native/core@latest create my-platform
|
|
181
181
|
```
|
|
182
182
|
|
|
183
|
-
您将获得一个多选选择器。选择一个应用程序(独立)或多个应用程序(工作区 - 应用程序共享身份验证、品牌、代理配置和数据库)。每个挑选的模板都与您需要的每个文件一起构建到 `apps/<name>/`
|
|
183
|
+
您将获得一个多选选择器。选择一个应用程序(独立)或多个应用程序(工作区 - 应用程序共享身份验证、品牌、代理配置和数据库)。每个挑选的模板都与您需要的每个文件一起构建到 `apps/<name>/` 中。对于没有浏览器 UI 的自动化应用,而不是模板 UI,请使用 `npx @agent-native/core@latest create my-agent --headless`。
|
|
184
184
|
|
|
185
185
|
填写`.env`(主要是`ANTHROPIC_API_KEY`和`DATABASE_URL`)、`pnpm install`、`pnpm dev`,就可以了。没有“TODO:实现登录”,没有占位符路由。
|
|
186
186
|
|
|
@@ -11,15 +11,15 @@ description: "有关原生代理的常见问题 - 它是什么、它的用途、
|
|
|
11
11
|
|
|
12
12
|
### 什么是代理原生? {#what-is-agent-native}
|
|
13
13
|
|
|
14
|
-
Agent-native 是一个用于构建应用程序的框架,其中 AI
|
|
14
|
+
Agent-native 是一个用于构建应用程序的框架,其中 AI 代理及其周围的产品界面是平等的合作伙伴。通常的路径是从聊天开始,添加 typed actions,在聊天中渲染结构化结果,然后围绕同一份 SQL state 扩展成持久页面。不变的是智能体和人类共享相同的 actions、数据库和状态。完整解释请参见 [What Is Agent-Native?](/docs/what-is-agent-native)。
|
|
15
15
|
|
|
16
16
|
### 这是给谁的? {#who-is-this-for}
|
|
17
17
|
|
|
18
18
|
Agent-native 适合那些想要真正的应用程序和 AI 代理使用相同数据和 actions 工作的人。常见的路径是:
|
|
19
19
|
|
|
20
20
|
- **如果您需要邮件、日历、表单、计划或其他无需设置的成品模板,请使用托管应用程序** - 从 [template gallery](/templates) 开始。
|
|
21
|
-
-
|
|
22
|
-
-
|
|
21
|
+
- **从聊天开始**如果您想要默认的从零构建路径:用户可以立即与 agent 对话,然后您用 actions、原生结果和屏幕扩展它 - 从 [Getting Started](/docs/getting-started) 或 [Chat](/docs/template-chat) 开始。
|
|
22
|
+
- **从 automation-first 开始**如果您正在构建定时任务、队列、脚本、integration worker 或暂时没有浏览器 UI 的外部 agent 工作流 — 从 [Automation-First Apps](/docs/pure-agent-apps) 开始。
|
|
23
23
|
- **分叉并自定义模板**如果您想要自己的 SaaS 产品,并且已连接身份验证、数据库、UI 和代理 actions — 请参阅 [Templates](/docs/cloneable-saas)。
|
|
24
24
|
- **从头开始构建**如果您想要新的代理驱动产品的框架原语 - 从 [Getting Started](/docs/getting-started) 开始。
|
|
25
25
|
- **如果您希望 Claude、ChatGPT、Codex、Cursor 或 GitHub Copilot / VS Code 使用代理本机应用程序,请连接另一个代理或代码工具** - 请参阅 [External Agents](/docs/external-agents) 和 [Skills Guide](/docs/skills-guide)。
|
|
@@ -128,7 +128,7 @@ Anthropic Claude、OpenAI(GPT-5 系列)、Google Gemini 以及使用 OpenAI
|
|
|
128
128
|
|
|
129
129
|
### 我可以构建模板未涵盖的内容吗? {#build-from-scratch}
|
|
130
130
|
|
|
131
|
-
|
|
131
|
+
是的。如果你想要一个基本的 agentic app,请运行 `npx @agent-native/core@latest create my-chat-app --template chat`;您可以获得持久的聊天线程、actions、身份验证、SQL 支持的运行时状态、原生内联结果渲染,以及添加自己屏幕的空间。如果您正在构建 no-browser automation,请运行 `npx @agent-native/core@latest create my-agent --headless`。请参阅 [Getting Started](/docs/getting-started)、[Automation-First Apps](/docs/pure-agent-apps) 和 [Chat](/docs/template-chat)。
|
|
132
132
|
|
|
133
133
|
### 我可以在不分叉模板的情况下尝试它吗? {#try-with-a-skill}
|
|
134
134
|
|