@agent-native/core 0.79.11 → 0.79.15
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/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +25 -0
- package/corpus/core/docs/content/locales/zh-TW/a2a-protocol.md +68 -68
- package/corpus/core/docs/content/locales/zh-TW/actions.md +82 -82
- package/corpus/core/docs/content/locales/zh-TW/agent-mentions.md +22 -22
- package/corpus/core/docs/content/locales/zh-TW/agent-surfaces.md +82 -82
- package/corpus/core/docs/content/locales/zh-TW/agent-teams.md +29 -29
- package/corpus/core/docs/content/locales/zh-TW/agent-web-surfaces.md +11 -11
- package/corpus/core/docs/content/locales/zh-TW/audit-log.md +16 -16
- package/corpus/core/docs/content/locales/zh-TW/authentication.md +32 -32
- package/corpus/core/docs/content/locales/zh-TW/automations.md +32 -32
- package/corpus/core/docs/content/locales/zh-TW/blueprint-installer.md +19 -19
- package/corpus/core/docs/content/locales/zh-TW/cli-adapters.md +17 -17
- package/corpus/core/docs/content/locales/zh-TW/client.md +62 -62
- package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.md +32 -32
- package/corpus/core/docs/content/locales/zh-TW/code-agents-ui.md +91 -91
- package/corpus/core/docs/content/locales/zh-TW/components.md +51 -51
- package/corpus/core/docs/content/locales/zh-TW/context-awareness.md +66 -66
- package/corpus/core/docs/content/locales/zh-TW/creating-templates.md +39 -39
- package/corpus/core/docs/content/locales/zh-TW/cross-app-sso.md +29 -29
- package/corpus/core/docs/content/locales/zh-TW/database.md +21 -21
- package/corpus/core/docs/content/locales/zh-TW/deployment.md +37 -37
- package/corpus/core/docs/content/locales/zh-TW/dispatch.md +43 -43
- package/corpus/core/docs/content/locales/zh-TW/drop-in-agent.md +34 -34
- package/corpus/core/docs/content/locales/zh-TW/durable-resume.md +18 -18
- package/corpus/core/docs/content/locales/zh-TW/embedding-sdk.md +73 -73
- package/corpus/core/docs/content/locales/zh-TW/evals.md +16 -16
- package/corpus/core/docs/content/locales/zh-TW/extensions.md +81 -81
- package/corpus/core/docs/content/locales/zh-TW/external-agents.md +146 -146
- package/corpus/core/docs/content/locales/zh-TW/faq.md +43 -43
- package/corpus/core/docs/content/locales/zh-TW/file-uploads.md +11 -11
- package/corpus/core/docs/content/locales/zh-TW/frames.md +33 -33
- package/corpus/core/docs/content/locales/zh-TW/getting-started.md +28 -28
- package/corpus/core/docs/content/locales/zh-TW/harness-agents.md +78 -78
- package/corpus/core/docs/content/locales/zh-TW/human-approval.md +27 -27
- package/corpus/core/docs/content/locales/zh-TW/internationalization.md +19 -19
- package/corpus/core/docs/content/locales/zh-TW/key-concepts.md +68 -68
- package/corpus/core/docs/content/locales/zh-TW/local-file-mode.md +50 -50
- package/corpus/core/docs/content/locales/zh-TW/mcp-apps.md +38 -38
- package/corpus/core/docs/content/locales/zh-TW/mcp-clients.md +67 -67
- package/corpus/core/docs/content/locales/zh-TW/mcp-protocol.md +50 -50
- package/corpus/core/docs/content/locales/zh-TW/messaging.md +99 -99
- package/corpus/core/docs/content/locales/zh-TW/migration-workbench.md +6 -6
- package/corpus/core/docs/content/locales/zh-TW/multi-app-workspace.md +39 -39
- package/corpus/core/docs/content/locales/zh-TW/multi-tenancy.md +7 -7
- package/corpus/core/docs/content/locales/zh-TW/native-chat-ui.md +38 -38
- package/corpus/core/docs/content/locales/zh-TW/notifications.md +23 -23
- package/corpus/core/docs/content/locales/zh-TW/observability.md +49 -49
- package/corpus/core/docs/content/locales/zh-TW/observational-memory.md +23 -23
- package/corpus/core/docs/content/locales/zh-TW/onboarding.md +40 -40
- package/corpus/core/docs/content/locales/zh-TW/plan-plugin.md +37 -37
- package/corpus/core/docs/content/locales/zh-TW/pr-visual-recap.md +72 -72
- package/corpus/core/docs/content/locales/zh-TW/processors.md +17 -17
- package/corpus/core/docs/content/locales/zh-TW/progress.md +15 -15
- package/corpus/core/docs/content/locales/zh-TW/pure-agent-apps.md +10 -10
- package/corpus/core/docs/content/locales/zh-TW/real-time-collaboration.md +103 -103
- package/corpus/core/docs/content/locales/zh-TW/recurring-jobs.md +19 -19
- package/corpus/core/docs/content/locales/zh-TW/routing.md +9 -9
- package/corpus/core/docs/content/locales/zh-TW/sandbox-adapters.md +48 -48
- package/corpus/core/docs/content/locales/zh-TW/security.md +49 -49
- package/corpus/core/docs/content/locales/zh-TW/server.md +47 -47
- package/corpus/core/docs/content/locales/zh-TW/sharing.md +22 -22
- package/corpus/core/docs/content/locales/zh-TW/skills-guide.md +46 -46
- package/corpus/core/docs/content/locales/zh-TW/template-analytics.md +40 -40
- package/corpus/core/docs/content/locales/zh-TW/template-assets.md +69 -69
- package/corpus/core/docs/content/locales/zh-TW/template-brain.md +81 -81
- package/corpus/core/docs/content/locales/zh-TW/template-calendar.md +40 -40
- package/corpus/core/docs/content/locales/zh-TW/template-chat.md +27 -27
- package/corpus/core/docs/content/locales/zh-TW/template-clips.md +85 -85
- package/corpus/core/docs/content/locales/zh-TW/template-content.md +65 -66
- package/corpus/core/docs/content/locales/zh-TW/template-design.md +29 -29
- package/corpus/core/docs/content/locales/zh-TW/template-dispatch.md +51 -51
- package/corpus/core/docs/content/locales/zh-TW/template-forms.md +25 -25
- package/corpus/core/docs/content/locales/zh-TW/template-mail.md +71 -71
- package/corpus/core/docs/content/locales/zh-TW/template-plan.md +92 -92
- package/corpus/core/docs/content/locales/zh-TW/template-slides.md +52 -52
- package/corpus/core/docs/content/locales/zh-TW/template-videos.md +30 -30
- package/corpus/core/docs/content/locales/zh-TW/tracking.md +29 -29
- package/corpus/core/docs/content/locales/zh-TW/using-your-agent.md +18 -18
- package/corpus/core/docs/content/locales/zh-TW/voice-input.md +19 -19
- package/corpus/core/docs/content/locales/zh-TW/what-is-agent-native.md +61 -61
- package/corpus/core/docs/content/locales/zh-TW/workspace-connections.md +41 -41
- package/corpus/core/docs/content/locales/zh-TW/workspace-management.md +27 -27
- package/corpus/core/docs/content/locales/zh-TW/workspace.md +58 -58
- package/corpus/core/docs/content/locales/zh-TW/writing-agent-instructions.md +41 -41
- package/corpus/core/docs/content/template-clips.md +48 -2
- package/corpus/core/package.json +2 -1
- package/corpus/core/src/client/AgentPanel.tsx +27 -3
- package/corpus/core/src/deploy/build.ts +738 -57
- package/corpus/core/src/deploy/route-discovery.ts +1 -1
- package/corpus/core/src/server/edge.ts +50 -0
- package/corpus/core/src/styles/agent-native.css +93 -0
- package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +44 -44
- package/corpus/core/src/vite/client.ts +1 -0
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +5 -3
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +69 -70
- package/corpus/templates/analytics/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/assets/app/components/layout/Layout.tsx +3 -3
- package/corpus/templates/assets/app/i18n/zh-TW.ts +82 -82
- package/corpus/templates/assets/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/brain/app/components/layout/Layout.tsx +6 -4
- package/corpus/templates/brain/app/i18n/zh-TW.ts +90 -90
- package/corpus/templates/brain/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +1 -1
- package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +1 -1
- package/corpus/templates/calendar/app/i18n/zh-TW.ts +57 -57
- package/corpus/templates/calendar/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/calendar/server/lib/booking-og-fonts.ts +20 -6
- package/corpus/templates/calendar/server/lib/booking-og-image.ts +17 -9
- package/corpus/templates/chat/app/components/layout/Layout.tsx +5 -3
- package/corpus/templates/chat/app/i18n/zh-TW.ts +3 -3
- package/corpus/templates/chat/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/clips/AGENTS.md +6 -0
- package/corpus/templates/clips/actions/delete-recording-permanent.ts +7 -1
- package/corpus/templates/clips/actions/get-recording-player-data.ts +44 -2
- package/corpus/templates/clips/actions/navigate.ts +2 -0
- package/corpus/templates/clips/actions/save-bug-report-context.ts +173 -0
- package/corpus/templates/clips/actions/view-screen.ts +58 -7
- package/corpus/templates/clips/app/components/recorder/storage-setup-card.tsx +9 -3
- package/corpus/templates/clips/app/hooks/use-navigation-state.ts +17 -0
- package/corpus/templates/clips/app/i18n/ar-SA.ts +31 -0
- package/corpus/templates/clips/app/i18n/de-DE.ts +32 -0
- package/corpus/templates/clips/app/i18n/en-US.ts +32 -0
- package/corpus/templates/clips/app/i18n/es-ES.ts +32 -0
- package/corpus/templates/clips/app/i18n/fr-FR.ts +32 -0
- package/corpus/templates/clips/app/i18n/hi-IN.ts +32 -0
- package/corpus/templates/clips/app/i18n/ja-JP.ts +31 -0
- package/corpus/templates/clips/app/i18n/ko-KR.ts +32 -0
- package/corpus/templates/clips/app/i18n/pt-BR.ts +32 -0
- package/corpus/templates/clips/app/i18n/zh-CN.ts +30 -0
- package/corpus/templates/clips/app/i18n/zh-TW.ts +461 -451
- package/corpus/templates/clips/app/routes/bug-report.done.tsx +126 -0
- package/corpus/templates/clips/app/routes/bug-report.tsx +222 -0
- package/corpus/templates/clips/app/routes/record.tsx +104 -12
- package/corpus/templates/clips/changelog/2026-06-26-brief-network-blips-no-longer-block-recording-or-wrongly-pro.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-26-bug-report-recordings-can-keep-redacted-host-app-context-wit.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-26-bug-report-widgets-can-launch-clips-recordings-from-embedded.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-26-desktop-recording-keeps-connected-users-out-of-the-storage-s.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-26-if-a-recording-can-t-be-uploaded-the-chrome-extension-now-sa.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/clips/chrome-extension/public/manifest.json +9 -2
- package/corpus/templates/clips/chrome-extension/src/background.ts +43 -0
- package/corpus/templates/clips/chrome-extension/src/offscreen.ts +111 -6
- package/corpus/templates/clips/chrome-extension/src/popup.ts +18 -7
- package/corpus/templates/clips/desktop/src/app.tsx +53 -19
- package/corpus/templates/clips/server/db/schema.ts +26 -0
- package/corpus/templates/clips/server/lib/public-agent-context.ts +51 -0
- package/corpus/templates/clips/server/plugins/auth.ts +1 -0
- package/corpus/templates/clips/server/plugins/db.ts +28 -0
- package/corpus/templates/clips/server/routes/api/agent-context.json.get.ts +4 -1
- package/corpus/templates/clips/shared/bug-report.ts +161 -0
- package/corpus/templates/content/app/components/layout/Layout.tsx +10 -8
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +1 -1
- package/corpus/templates/content/app/i18n/zh-TW.ts +67 -66
- package/corpus/templates/content/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/design/app/components/layout/Layout.tsx +3 -3
- package/corpus/templates/design/app/i18n/zh-TW.ts +44 -44
- package/corpus/templates/design/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/dispatch/app/i18n/zh-TW.ts +5 -4
- package/corpus/templates/dispatch/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/forms/app/components/layout/Layout.tsx +4 -2
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +1 -1
- package/corpus/templates/forms/app/i18n/zh-TW.ts +48 -48
- package/corpus/templates/forms/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +3 -3
- package/corpus/templates/macros/app/i18n/zh-TW.ts +5 -5
- package/corpus/templates/macros/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/mail/app/i18n/zh-TW.ts +83 -83
- package/corpus/templates/mail/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/plan/app/components/layout/Layout.tsx +5 -3
- package/corpus/templates/plan/app/i18n/zh-TW.ts +69 -69
- package/corpus/templates/plan/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/slides/app/components/layout/Layout.tsx +3 -3
- package/corpus/templates/slides/app/i18n/zh-TW.ts +64 -64
- package/corpus/templates/slides/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/videos/app/components/layout/Layout.tsx +2 -2
- package/corpus/templates/videos/app/i18n/zh-TW.ts +54 -54
- package/corpus/templates/videos/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +14 -4
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/deploy/build.d.ts +29 -2
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +587 -51
- package/dist/deploy/build.js.map +1 -1
- package/dist/deploy/route-discovery.d.ts +1 -1
- package/dist/deploy/route-discovery.js +1 -1
- package/dist/deploy/route-discovery.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +2 -2
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/routes.d.ts +7 -7
- package/dist/resources/handlers.d.ts +2 -2
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/edge.d.ts +11 -0
- package/dist/server/edge.d.ts.map +1 -0
- package/dist/server/edge.js +11 -0
- package/dist/server/edge.js.map +1 -0
- package/dist/styles/agent-native.css +93 -0
- package/dist/templates/default/app/i18n/zh-TW.ts +44 -44
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +1 -0
- package/dist/vite/client.js.map +1 -1
- package/docs/content/locales/zh-TW/a2a-protocol.md +68 -68
- package/docs/content/locales/zh-TW/actions.md +82 -82
- package/docs/content/locales/zh-TW/agent-mentions.md +22 -22
- package/docs/content/locales/zh-TW/agent-surfaces.md +82 -82
- package/docs/content/locales/zh-TW/agent-teams.md +29 -29
- package/docs/content/locales/zh-TW/agent-web-surfaces.md +11 -11
- package/docs/content/locales/zh-TW/audit-log.md +16 -16
- package/docs/content/locales/zh-TW/authentication.md +32 -32
- package/docs/content/locales/zh-TW/automations.md +32 -32
- package/docs/content/locales/zh-TW/blueprint-installer.md +19 -19
- package/docs/content/locales/zh-TW/cli-adapters.md +17 -17
- package/docs/content/locales/zh-TW/client.md +62 -62
- package/docs/content/locales/zh-TW/cloneable-saas.md +32 -32
- package/docs/content/locales/zh-TW/code-agents-ui.md +91 -91
- package/docs/content/locales/zh-TW/components.md +51 -51
- package/docs/content/locales/zh-TW/context-awareness.md +66 -66
- package/docs/content/locales/zh-TW/creating-templates.md +39 -39
- package/docs/content/locales/zh-TW/cross-app-sso.md +29 -29
- package/docs/content/locales/zh-TW/database.md +21 -21
- package/docs/content/locales/zh-TW/deployment.md +37 -37
- package/docs/content/locales/zh-TW/dispatch.md +43 -43
- package/docs/content/locales/zh-TW/drop-in-agent.md +34 -34
- package/docs/content/locales/zh-TW/durable-resume.md +18 -18
- package/docs/content/locales/zh-TW/embedding-sdk.md +73 -73
- package/docs/content/locales/zh-TW/evals.md +16 -16
- package/docs/content/locales/zh-TW/extensions.md +81 -81
- package/docs/content/locales/zh-TW/external-agents.md +146 -146
- package/docs/content/locales/zh-TW/faq.md +43 -43
- package/docs/content/locales/zh-TW/file-uploads.md +11 -11
- package/docs/content/locales/zh-TW/frames.md +33 -33
- package/docs/content/locales/zh-TW/getting-started.md +28 -28
- package/docs/content/locales/zh-TW/harness-agents.md +78 -78
- package/docs/content/locales/zh-TW/human-approval.md +27 -27
- package/docs/content/locales/zh-TW/internationalization.md +19 -19
- package/docs/content/locales/zh-TW/key-concepts.md +68 -68
- package/docs/content/locales/zh-TW/local-file-mode.md +50 -50
- package/docs/content/locales/zh-TW/mcp-apps.md +38 -38
- package/docs/content/locales/zh-TW/mcp-clients.md +67 -67
- package/docs/content/locales/zh-TW/mcp-protocol.md +50 -50
- package/docs/content/locales/zh-TW/messaging.md +99 -99
- package/docs/content/locales/zh-TW/migration-workbench.md +6 -6
- package/docs/content/locales/zh-TW/multi-app-workspace.md +39 -39
- package/docs/content/locales/zh-TW/multi-tenancy.md +7 -7
- package/docs/content/locales/zh-TW/native-chat-ui.md +38 -38
- package/docs/content/locales/zh-TW/notifications.md +23 -23
- package/docs/content/locales/zh-TW/observability.md +49 -49
- package/docs/content/locales/zh-TW/observational-memory.md +23 -23
- package/docs/content/locales/zh-TW/onboarding.md +40 -40
- package/docs/content/locales/zh-TW/plan-plugin.md +37 -37
- package/docs/content/locales/zh-TW/pr-visual-recap.md +72 -72
- package/docs/content/locales/zh-TW/processors.md +17 -17
- package/docs/content/locales/zh-TW/progress.md +15 -15
- package/docs/content/locales/zh-TW/pure-agent-apps.md +10 -10
- package/docs/content/locales/zh-TW/real-time-collaboration.md +103 -103
- package/docs/content/locales/zh-TW/recurring-jobs.md +19 -19
- package/docs/content/locales/zh-TW/routing.md +9 -9
- package/docs/content/locales/zh-TW/sandbox-adapters.md +48 -48
- package/docs/content/locales/zh-TW/security.md +49 -49
- package/docs/content/locales/zh-TW/server.md +47 -47
- package/docs/content/locales/zh-TW/sharing.md +22 -22
- package/docs/content/locales/zh-TW/skills-guide.md +46 -46
- package/docs/content/locales/zh-TW/template-analytics.md +40 -40
- package/docs/content/locales/zh-TW/template-assets.md +69 -69
- package/docs/content/locales/zh-TW/template-brain.md +81 -81
- package/docs/content/locales/zh-TW/template-calendar.md +40 -40
- package/docs/content/locales/zh-TW/template-chat.md +27 -27
- package/docs/content/locales/zh-TW/template-clips.md +85 -85
- package/docs/content/locales/zh-TW/template-content.md +65 -66
- package/docs/content/locales/zh-TW/template-design.md +29 -29
- package/docs/content/locales/zh-TW/template-dispatch.md +51 -51
- package/docs/content/locales/zh-TW/template-forms.md +25 -25
- package/docs/content/locales/zh-TW/template-mail.md +71 -71
- package/docs/content/locales/zh-TW/template-plan.md +92 -92
- package/docs/content/locales/zh-TW/template-slides.md +52 -52
- package/docs/content/locales/zh-TW/template-videos.md +30 -30
- package/docs/content/locales/zh-TW/tracking.md +29 -29
- package/docs/content/locales/zh-TW/using-your-agent.md +18 -18
- package/docs/content/locales/zh-TW/voice-input.md +19 -19
- package/docs/content/locales/zh-TW/what-is-agent-native.md +61 -61
- package/docs/content/locales/zh-TW/workspace-connections.md +41 -41
- package/docs/content/locales/zh-TW/workspace-management.md +27 -27
- package/docs/content/locales/zh-TW/workspace.md +58 -58
- package/docs/content/locales/zh-TW/writing-agent-instructions.md +41 -41
- package/docs/content/template-clips.md +48 -2
- package/package.json +2 -1
- package/src/templates/default/app/i18n/zh-TW.ts +44 -44
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "A2A協議"
|
|
3
|
-
description: "
|
|
2
|
+
title: "A2A 協議"
|
|
3
|
+
description: "透過 JSON-RPC 進行代理間通信:發現、訊息傳遞、流式傳輸和工作管理。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# A2A協議
|
|
6
|
+
# A2A 協議
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
透過 HTTP 進行代理間通信。代理相互發現、傳送訊息並接收結構化結果。
|
|
9
9
|
|
|
10
10
|
## 概述 {#overview}
|
|
11
11
|
|
|
12
|
-
A2A(代理到代理)是用於代理間通信的 JSON-RPC
|
|
12
|
+
A2A(代理到代理)是用於代理間通信的 JSON-RPC 協議。郵件代理可以要求分析代理執行查詢。行事曆代理可以搜尋專案管理代理中的問題。每個代理透過代理卡公開其功能,並透過標準 JSON-RPC 端點接受工作。
|
|
13
13
|
|
|
14
|
-
A2A 是此框架中跨應用程式委派的基礎 - 最顯著的是 [Dispatch](/docs/dispatch)
|
|
14
|
+
A2A 是此框架中跨應用程式委派的基礎 - 最顯著的是 [Dispatch](/docs/dispatch),它將單一入站訊息(Slack、電子郵件等)路由到工作區中最適合處理它的任何應用程式。
|
|
15
15
|
|
|
16
16
|
關鍵概念:
|
|
17
17
|
|
|
18
|
-
- **代理卡** — `/.well-known/agent-card.json` 上描述 skills
|
|
19
|
-
- **JSON-RPC** —
|
|
18
|
+
- **代理卡** — `/.well-known/agent-card.json` 上描述 skills 和功能的公開中繼資料
|
|
19
|
+
- **JSON-RPC** — Agent-Native 應用程式使用 `POST /_agent-native/a2a`;外部/遺留節點可以使用 `POST /a2a`
|
|
20
20
|
- **工作** - 每條訊息都會建立一個具有生命週期的工作(已提交、正在工作、已完成、失敗、已取消)
|
|
21
21
|
- **JWT 承載驗證** - 正式環境 A2A 需要 `A2A_SECRET` 或顯式遺留 `apiKeyEnv`
|
|
22
22
|
|
|
23
|
-
```an-diagram title="
|
|
23
|
+
```an-diagram title="一名代理將工作交給另一名代理" summary="郵件代理發現分析代理的卡,傳送 JSON-RPC 訊息,並返回已完成的工作。"
|
|
24
24
|
{
|
|
25
25
|
"html": "<div class=\"diagram-handoff\"><div class=\"diagram-card\"><strong>郵件 Agent</strong><small class=\"diagram-muted\">needs analytics</small></div><div class=\"diagram-col\"><div class=\"diagram-pill\">GET /.well-known/agent-card.json</div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-pill accent\">POST /_agent-native/a2a<br><small class=\"diagram-muted\">message/send</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">←</div><div class=\"diagram-pill ok\">工作 · 已完成</div></div><div class=\"diagram-card\" data-rough><strong>分析 Agent</strong><small class=\"diagram-muted\">執行 run-query,返回結果</small></div></div>",
|
|
26
26
|
"css": ".diagram-handoff{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.diagram-handoff .diagram-col{display:flex;flex-direction:column;align-items:center;gap:6px}.diagram-handoff .diagram-arrow{font-size:20px;line-height:1}"
|
|
@@ -29,7 +29,7 @@ A2A 是此框架中跨應用程式委派的基礎 - 最顯著的是 [Dispatch](/
|
|
|
29
29
|
|
|
30
30
|
## 伺服器設定 {#server-setup}
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
大多數範本透過框架代理聊天外掛取得 A2A。如果您自己安裝它,請在伺服器外掛中呼叫 `mountA2A()`:
|
|
33
33
|
|
|
34
34
|
```ts
|
|
35
35
|
// server/plugins/a2a.ts
|
|
@@ -58,19 +58,19 @@ export default defineNitroPlugin((nitro) => {
|
|
|
58
58
|
|
|
59
59
|
此安裝座:
|
|
60
60
|
|
|
61
|
-
- `GET /.well-known/agent-card.json` —
|
|
62
|
-
- `POST /_agent-native/a2a` —
|
|
61
|
+
- `GET /.well-known/agent-card.json` — 公開發現中繼資料。
|
|
62
|
+
- `POST /_agent-native/a2a` — 主要 Agent-Native JSON-RPC 端點。
|
|
63
63
|
- `POST /_agent-native/a2a/_process-task` — 內部非同步處理器路由,使用 `A2A_SECRET` 簽名。
|
|
64
64
|
|
|
65
|
-
對於公開傳統/簡單路徑的外部代理,用戶端還回退到 `/a2a
|
|
65
|
+
對於公開傳統/簡單路徑的外部代理,用戶端還回退到 `/a2a`。正式環境 Agent-Native 部署應設定 `A2A_SECRET`;如果沒有它,託管執行時將無法關閉,而不是接受未經驗證的遠端工作。
|
|
66
66
|
|
|
67
67
|
## 代理卡 {#agent-card}
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
代理卡是根據您的設定自動產生的,並在 `/.well-known/agent-card.json` 上提供。其他代理取得它以發現您的代理的 skills。
|
|
70
70
|
|
|
71
71
|
### 每租戶技能過濾 {#agent-card-filtering}
|
|
72
72
|
|
|
73
|
-
卡端點是公開的,因此框架會在提供服務之前編輯 skills,其 ID 顯示每個使用者或每個組織的整合。任何 ID 以 `mcp__user_<emailhash>_…` 或 `mcp__org_<orgid>_…`
|
|
73
|
+
卡端點是公開的,因此框架會在提供服務之前編輯 skills,其 ID 顯示每個使用者或每個組織的整合。任何 ID 以 `mcp__user_<emailhash>_…` 或 `mcp__org_<orgid>_…` 開頭的技能都會從已發布的卡牌中刪除。操作者控制的 stdio MCP 工具(從 `mcp.config.json` 載入)和範本定義的 skills 保持可見。這可以防止未經驗證的呼叫者對存在哪些租戶或他們連線的整合進行指紋識別。參見`packages/core/src/a2a/server.ts`。
|
|
74
74
|
|
|
75
75
|
```json
|
|
76
76
|
{
|
|
@@ -101,7 +101,7 @@ export default defineNitroPlugin((nitro) => {
|
|
|
101
101
|
}
|
|
102
102
|
```
|
|
103
103
|
|
|
104
|
-
_(版本可能有所不同;在 `/.well-known/agent-card.json`
|
|
104
|
+
_(版本可能有所不同;在 `/.well-known/agent-card.json` 取得目前 `protocolVersion` 的應用的即時卡。)_
|
|
105
105
|
|
|
106
106
|
當設定了`A2A_SECRET`(推薦路徑)時,該卡會通告一個
|
|
107
107
|
`jwtBearer` 方案如上。僅當遺留時才新增`apiKey`方案
|
|
@@ -110,20 +110,20 @@ _(版本可能有所不同;在 `/.well-known/agent-card.json` 獲取目前 `
|
|
|
110
110
|
|
|
111
111
|
## JSON-RPC方法 {#json-rpc-methods}
|
|
112
112
|
|
|
113
|
-
|
|
113
|
+
所有方法均透過 `POST /_agent-native/a2a` 呼叫,格式為 JSON-RPC 2.0:
|
|
114
114
|
|
|
115
115
|
| 方法 | 描述 | 關鍵參數 |
|
|
116
116
|
| ---------------- | ---------------------------------------------------------------------- | ----------------------------- |
|
|
117
|
-
| `message/send` |
|
|
118
|
-
| `message/stream` |
|
|
119
|
-
| `tasks/get` | 按 ID
|
|
117
|
+
| `message/send` | 傳送訊息並等待工作完成。透過`async: true`立即返回`working`狀態並輪詢。 | `message, contextId?, async?` |
|
|
118
|
+
| `message/stream` | 傳送訊息,接收 SSE 工作更新 | `message, contextId?` |
|
|
119
|
+
| `tasks/get` | 按 ID 取得工作 - 用於輪詢非同步工作是否完成 | `id` |
|
|
120
120
|
| `tasks/cancel` | 取消正在執行的工作 | `id` |
|
|
121
121
|
|
|
122
122
|
```an-api title="主要 A2A 端點" summary="所有 JSON-RPC 方法都是這裡的 POSTed。顯示message/send。"
|
|
123
123
|
{
|
|
124
124
|
"method": "POST",
|
|
125
125
|
"path": "/_agent-native/a2a",
|
|
126
|
-
"summary": "
|
|
126
|
+
"summary": "傳送訊息並等待工作完成",
|
|
127
127
|
"description": "JSON-RPC 2.0 endpoint for `message/send`, `message/stream`, `tasks/get`, and `tasks/cancel`. Pass `async: true` to return immediately in `working` state and poll with `tasks/get`.",
|
|
128
128
|
"auth": "JWT bearer signed with A2A_SECRET (or legacy apiKeyEnv static token)",
|
|
129
129
|
"params": [
|
|
@@ -144,9 +144,9 @@ _(版本可能有所不同;在 `/.well-known/agent-card.json` 獲取目前 `
|
|
|
144
144
|
}
|
|
145
145
|
```
|
|
146
146
|
|
|
147
|
-
當使用 `async: true`
|
|
147
|
+
當使用 `async: true` 呼叫 `message/send` 時,JSON-RPC 處理常式會將工作排入佇列,並將 POST 自觸發到內部 `/_agent-native/a2a/_process-task` 路由,以便處理常式在具有自己的完全超時的新函式執行中執行。該路由使用綁定到工作 ID 的 HMAC 權杖進行驗證(5 分鐘生存期,使用 `A2A_SECRET` 簽名)。它安裝在 `/_agent-native/a2a` JSON-RPC 路由之前,因此 h3 的前綴匹配不會吞噬它。
|
|
148
148
|
|
|
149
|
-
```an-diagram title="無伺服器上的非同步工作生命週期" summary="async:true
|
|
149
|
+
```an-diagram title="無伺服器上的非同步工作生命週期" summary="async:true 在幾毫秒內返回工作,然後在呼叫者輪詢時重新執行執行代理迴圈。"
|
|
150
150
|
{
|
|
151
151
|
"html": "<div class=\"diagram-async\"><div class=\"diagram-box\" data-rough>message/send<br><small class=\"diagram-muted\">async: true</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-panel\"><span class=\"diagram-pill\">enqueue task</span><span class=\"diagram-pill warn\">return working</span><small class=\"diagram-muted\">約毫秒級</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↓</div><div class=\"diagram-box\" data-rough>自觸發 POST /_agent-native/a2a/_process-task<br><small class=\"diagram-muted\">HMAC token · 全新執行 · 完整超時</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-col\"><div class=\"diagram-pill\">tasks/get (poll)</div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↻</div><div class=\"diagram-pill ok\">completed</div></div></div>",
|
|
152
152
|
"css": ".diagram-async{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.diagram-async .diagram-panel{display:flex;flex-direction:column;align-items:center;gap:6px}.diagram-async .diagram-col{display:flex;flex-direction:column;align-items:center;gap:6px}.diagram-async .diagram-arrow{font-size:20px;line-height:1}",
|
|
@@ -155,10 +155,10 @@ _(版本可能有所不同;在 `/.well-known/agent-card.json` 獲取目前 `
|
|
|
155
155
|
```
|
|
156
156
|
|
|
157
157
|
> [!IMPORTANT]
|
|
158
|
-
> **無伺服器 Webhook
|
|
159
|
-
>
|
|
158
|
+
> **無伺服器 Webhook 和閘道超時:**
|
|
159
|
+
> 託管環境閘道(例如 Netlify、Vercel 或 Cloudflare Pages)對面向公眾的 HTTP 路由施加嚴格的執行限制(通常為 10 到 30 秒)。由於代理迴圈可能需要大量時間來執行查詢、取得脈絡和執行工具,因此在呼叫 A2A 端點或處理外部 webhooks 時,您**必須使用 `async: true`**。這會立即將 `working` 狀態返回到 API 閘道,僅保持連線開啟幾毫秒,而自觸發的 `/process-task` POST 在背景執行代理迴圈。不要阻止主 HTTP 請求等待代理迴圈完成。
|
|
160
160
|
|
|
161
|
-
訊息包含鍵入的部分 -
|
|
161
|
+
訊息包含鍵入的部分 - 文字、結構化資料和檔案都可以在一條訊息中傳輸:
|
|
162
162
|
|
|
163
163
|
```an-annotated-code title="帶有鍵入部分的 A2A 訊息"
|
|
164
164
|
{
|
|
@@ -210,7 +210,7 @@ for await (const update of client.stream({
|
|
|
210
210
|
|
|
211
211
|
## 方便幫手 {#convenience-helper}
|
|
212
212
|
|
|
213
|
-
|
|
213
|
+
對於簡單的文字輸入/文字輸出呼叫,請使用 `callAgent()`:
|
|
214
214
|
|
|
215
215
|
```ts
|
|
216
216
|
import { callAgent } from "@agent-native/core/a2a";
|
|
@@ -224,10 +224,10 @@ const response = await callAgent(
|
|
|
224
224
|
console.log(response); // "There were 1,247 signups last week..."
|
|
225
225
|
```
|
|
226
226
|
|
|
227
|
-
##
|
|
227
|
+
## 程式化工作區呼叫 {#programmatic-invoke}
|
|
228
228
|
|
|
229
|
-
|
|
230
|
-
|
|
229
|
+
對於 Agent-Native 工作區,在程式碼或 a 時更喜歡 `agentNative` 幫助器
|
|
230
|
+
無頭應用程式需要發現同級應用程式並透過 ID、名稱或呼叫它們
|
|
231
231
|
URL。它使用與
|
|
232
232
|
`agent-native agents` 和 `agent-native invoke` CLI 指令。
|
|
233
233
|
|
|
@@ -246,34 +246,34 @@ console.log(`Called ${result.target.name}: ${result.responseText}`);
|
|
|
246
246
|
```
|
|
247
247
|
|
|
248
248
|
將此用於可組合的迷你應用程式:調度或協調器應用程式發現
|
|
249
|
-
|
|
250
|
-
|
|
249
|
+
工作空間同級,然後呼叫擁有提供者的專業應用程式,
|
|
250
|
+
資料集或工作流程。在正式環境 Agent-Native 應用程式中,在每個中設定 `A2A_SECRET`
|
|
251
251
|
應用程式環境並傳遞呼叫者身分(`userEmail`),因此出站呼叫
|
|
252
252
|
簽名為 JWT 不記名代幣。僅將 `apiKeyEnv` 用於舊版外部對等點
|
|
253
|
-
需要靜態不記名權杖。使用本機actions
|
|
253
|
+
需要靜態不記名權杖。使用本機actions而不是自己呼叫。
|
|
254
254
|
|
|
255
255
|
## 工作生命週期 {#task-lifecycle}
|
|
256
256
|
|
|
257
|
-
|
|
257
|
+
每條訊息都會建立一個在以下狀態之間移動的工作:
|
|
258
258
|
|
|
259
259
|
`submitted` → `working` → `completed` | `failed` | `canceled` | `input-required`
|
|
260
260
|
|
|
261
|
-
`input-required`
|
|
261
|
+
`input-required` 是非終端:處理常式正在等待來自呼叫者的更多資訊,一旦輸入到達,工作就可以移回 `working`。
|
|
262
262
|
|
|
263
263
|
| 狀態 | 含義 |
|
|
264
264
|
| ---------------- | ------------------------------ |
|
|
265
265
|
| `submitted` | 工作已建立,已排隊等待處理 |
|
|
266
266
|
| `working` | Handler正在處理訊息 |
|
|
267
|
-
| `completed` |
|
|
268
|
-
| `failed` |
|
|
269
|
-
| `canceled` |
|
|
270
|
-
| `input-required` |
|
|
267
|
+
| `completed` | 處理常式成功完成 |
|
|
268
|
+
| `failed` | 處理常式拋出錯誤 |
|
|
269
|
+
| `canceled` | 工作已透過tasks/cancel取消 |
|
|
270
|
+
| `input-required` | 處理常式需要呼叫者提供更多資訊 |
|
|
271
271
|
|
|
272
|
-
工作保留在 `a2a_tasks` SQL
|
|
272
|
+
工作保留在 `a2a_tasks` SQL 表中,稍後可以透過 `tasks/get` 檢索。
|
|
273
273
|
|
|
274
274
|
## 安全 {#security}
|
|
275
275
|
|
|
276
|
-
|
|
276
|
+
在每個呼叫或接收 A2A 流量的正式環境應用上設定 `A2A_SECRET`。Agent-Native 呼叫者使用此秘密簽署 JWT 不記名權杖,以便接收者可以在代理迴圈開始之前驗證呼叫者身分。
|
|
277
277
|
|
|
278
278
|
對於仍然使用共用靜態權杖的外部對等點,請將設定中的 `apiKeyEnv` 設定為包含預期持有者權杖的環境變數的名稱:
|
|
279
279
|
|
|
@@ -292,21 +292,21 @@ const client = new A2AClient(url, process.env.A2A_API_KEY);
|
|
|
292
292
|
|
|
293
293
|
### 驗證策略邊界 {#auth-policy}
|
|
294
294
|
|
|
295
|
-
|
|
295
|
+
承載驗證在代理迴圈看到訊息之前在請求邊界(JSON-RPC 處理常式中)執行。 `packages/core/src/a2a/auth-policy.ts` 中的共用助手決定部署需要什麼:
|
|
296
296
|
|
|
297
|
-
- `isA2AProductionRuntime()` 在 Netlify、AWS Lambda、Cloudflare Pages/Workers、Vercel、Render、Fly 和 Cloud Run 上返回 `true` — 即使 `NODE_ENV` 不是 `"production"`。一些無伺服器提供者不會一致地設定 `NODE_ENV
|
|
297
|
+
- `isA2AProductionRuntime()` 在 Netlify、AWS Lambda、Cloudflare Pages/Workers、Vercel、Render、Fly 和 Cloud Run 上返回 `true` — 即使 `NODE_ENV` 不是 `"production"`。一些無伺服器提供者不會一致地設定 `NODE_ENV`,因此該策略也會讀取特定於提供者的標誌。
|
|
298
298
|
- 當 `A2A_SECRET` 設定時,`hasConfiguredA2ASecret()` 返回 `true`。
|
|
299
299
|
- `shouldAdvertiseJwtA2AAuth()`是代理卡用來決定是否發布`jwtBearer`安全方案的依據。
|
|
300
300
|
|
|
301
|
-
正式環境策略是嚴格的:在任何正式環境執行時中,除非設定了 `A2A_SECRET`(返回 503),否則非同步 `_process-task` 路由拒絕調度,並且 JSON-RPC
|
|
301
|
+
正式環境策略是嚴格的:在任何正式環境執行時中,除非設定了 `A2A_SECRET`(返回 503),否則非同步 `_process-task` 路由拒絕調度,並且 JSON-RPC 端點拒絕未經驗證的呼叫。開發回退(警告一次,允許)僅在未設定正式環境標誌時觸發。
|
|
302
302
|
|
|
303
|
-
|
|
303
|
+
此邊界很重要,因為代理迴圈接受來自遠端呼叫者的自由格式輸入。將不記名檢查放入迴圈內,或依靠工具來強制執行它,將使提示注入或有問題的處理常式繞過驗證。將其保持在 HTTP 邊界意味著權杖故障會在任何 LLM 呼叫之前短路。
|
|
304
304
|
|
|
305
|
-
JWT 驗證(`server.ts` 中的 `verifyA2AToken`)接受使用全域 `A2A_SECRET`
|
|
305
|
+
JWT 驗證(`server.ts` 中的 `verifyA2AToken`)接受使用全域 `A2A_SECRET` 或透過權杖的 `org_domain` 聲明從 SQL 尋找的組織範圍秘密簽名的權杖,並在存在時強制執行權杖自己的 `aud`/`iss` 聲明。
|
|
306
306
|
|
|
307
307
|
## 繼續 {#continuations}
|
|
308
308
|
|
|
309
|
-
|
|
309
|
+
當代理呼叫未立即返回的遠端 A2A 對等點時,框架會輪詢 `tasks/get` 直到工作解決。這是透過 `A2AClient.sendAndWait` 連線的,這是 `callAgent()` 幫助程式使用的預設模式。
|
|
310
310
|
|
|
311
311
|
```ts
|
|
312
312
|
// Default: async + poll (safe on serverless hosts)
|
|
@@ -320,54 +320,54 @@ const reply2 = await callAgent(url, "Quick lookup", { async: false });
|
|
|
320
320
|
|
|
321
321
|
對於由訊息傳遞整合(Slack、電子郵件)觸發的入站延續,框架會將延續保留在 SQL 中並在帶外進行處理:
|
|
322
322
|
|
|
323
|
-
-
|
|
324
|
-
- 自觸發的 `POST /_agent-native/integrations/process-a2a-continuation`
|
|
325
|
-
- 如果遠端工作仍在工作,則會重新計畫並重新分派該行。投票預算**受約 20 分鐘遠端工作** (`MAX_REMOTE_WORK_MS`) 和 **30 次調度嘗試** (`MAX_ATTEMPTS`)
|
|
326
|
-
-
|
|
323
|
+
- 當整合處理常式將其移交給遠端代理時,一行將寫入 `a2a_continuations` 表。
|
|
324
|
+
- 自觸發的 `POST /_agent-native/integrations/process-a2a-continuation` 聲明該行,在遠端代理上呼叫 `tasks/get`,並將回覆傳遞給整合轉接器或重新安排。
|
|
325
|
+
- 如果遠端工作仍在工作,則會重新計畫並重新分派該行。投票預算**受約 20 分鐘遠端工作** (`MAX_REMOTE_WORK_MS`) 和 **30 次調度嘗試** (`MAX_ATTEMPTS`) 的限制;在任一限制之後,繼續都會失敗並出現明顯錯誤,並且使用者會收到“代理未及時回應”回覆。
|
|
326
|
+
- 迴圈清理器 (`claimDueA2AContinuations`) 重新聲明上一個函式執行終止時剩餘的所有連續行。即使呼叫應用程式在輪詢中當機,下一次掃描也會恢復工作。
|
|
327
327
|
|
|
328
328
|
在`packages/core/src/integrations/a2a-continuation-processor.ts`中定義。相同的重試作業模式用於整合 Webhook 工作 (`pending-tasks-retry-job.ts`),這是一個上限為 3 次嘗試的獨特佇列 - 與上面的連續輪詢預算分開。
|
|
329
329
|
|
|
330
|
-
## 工作區A2A {#workspace-a2a}
|
|
330
|
+
## 工作區 A2A {#workspace-a2a}
|
|
331
331
|
|
|
332
|
-
|
|
332
|
+
在部署到單一 Netlify 站點的多應用工作區中(請參閱 [multi-app workspace](/docs/multi-app-workspace)),`apps/<id>/` 下的每個應用都會自動註冊為 A2A 對等點:
|
|
333
333
|
|
|
334
334
|
- 共用的 `A2A_SECRET` 在建置時安裝到每個應用程式的環境中。
|
|
335
|
-
-
|
|
336
|
-
- 使用共用金鑰簽名的出站呼叫攜帶呼叫者的電子郵件(`sub`)和組織域(如果存在)。接收方的 JWT
|
|
337
|
-
-
|
|
335
|
+
- 跨應用呼叫是同來源的 - `https://workspace.example.com/apps/analytics` 呼叫 `https://workspace.example.com/apps/mail` - 因此沒有 DNS、CORS 或每對 JWT 設定。
|
|
336
|
+
- 使用共用金鑰簽名的出站呼叫攜帶呼叫者的電子郵件(`sub`)和組織域(如果存在)。接收方的 JWT 驗證程式按順序接受來自 SQL 的共用秘密或組織範圍秘密。
|
|
337
|
+
- 代理發現會遍歷工作區註冊表,而不是依賴操作者手動連線每個對等點。請參閱 `packages/core/src/server/agent-discovery.ts` 中的 `discoverAgents` 和 `packages/core/src/org/handlers.ts` 中的組織重新整理路徑。
|
|
338
338
|
|
|
339
|
-
外部 A2A — 呼叫工作區之外的代理 — 仍然使用不記名權杖模型 (`apiKeyEnv` + `A2AClient(url, apiKey)`)。工作區A2A位於頂部;外部對等點沒有任何變化。
|
|
339
|
+
外部 A2A — 呼叫工作區之外的代理 — 仍然使用不記名權杖模型 (`apiKeyEnv` + `A2AClient(url, apiKey)`)。工作區 A2A 位於頂部;外部對等點沒有任何變化。
|
|
340
340
|
|
|
341
341
|
## 無伺服器陷阱 {#serverless}
|
|
342
342
|
|
|
343
|
-
**永遠不要依賴“一勞永逸”的 `Promise`
|
|
343
|
+
**永遠不要依賴“一勞永逸”的 `Promise` 超過回應的壽命。**無伺服器函式(Netlify、Vercel、AWS Lambda、Cloud Run)會在回應內文重新整理時凍結 - 有時甚至在未等待的 `fetch(...)` 的 TCP 握手完成之前。在 Node 上本機工作的模式將默默地放棄正式環境中的工作。
|
|
344
344
|
|
|
345
345
|
A2A 非同步調度和 [integration webhook queue](/docs/messaging) 使用的框架模式是:
|
|
346
346
|
|
|
347
|
-
1. 接受請求,保留SQL需要發生的事情,立即返回200。
|
|
348
|
-
2. 將 `POST` 自觸發到單獨的框架路由(`/_agent-native/a2a/_process-task` 或 `/_agent-native/integrations/process-task
|
|
347
|
+
1. 接受請求,保留 SQL 需要發生的事情,立即返回200。
|
|
348
|
+
2. 將 `POST` 自觸發到單獨的框架路由(`/_agent-native/a2a/_process-task` 或 `/_agent-native/integrations/process-task`),以便實際工作在**新函式執行**中執行,並具有自己的完整超時。
|
|
349
349
|
3. 使用綁定到行 ID 的 HMAC 權杖來驗證 self-fire,並使用 `A2A_SECRET` 簽名。
|
|
350
|
-
4.
|
|
350
|
+
4. 重複的重試作業會清除所有已聲明但未完成的行,因此當機的函式不會使工作陷入困境。
|
|
351
351
|
|
|
352
|
-
當您編寫自己的 A2A
|
|
352
|
+
當您編寫自己的 A2A 處理常式或整合轉接器時,請遵循相同的形狀。不要將工作附加到 `return` 之後的獨立承諾中。如果您必須從無伺服器處理常式中自行啟動,請在返回之前啟動擷取,並給它一個微小的啟動時間(框架使用較短的超時),以便 Lambda 式執行時不會在出站請求離開行程之前凍結。 `integration-webhooks`技能是規範參考。
|
|
353
353
|
|
|
354
354
|
## 代理提及 {#agent-mentions}
|
|
355
355
|
|
|
356
|
-
|
|
356
|
+
您可以在聊天編輯器中直接提及代理 `@`。連線代理使用 A2A:當您提及連線代理時,伺服器會對該代理進行 A2A 呼叫,並將回應編織到您的對話脈絡中。
|
|
357
357
|
|
|
358
|
-
|
|
358
|
+
自訂工作區代理有所不同:它們在目前應用/執行時本機執行,而不是透過 A2A 執行。
|
|
359
359
|
|
|
360
|
-
請參閱 [Agent Mentions](/docs/agent-mentions)
|
|
360
|
+
請參閱 [Agent Mentions](/docs/agent-mentions),詳細了解提及的工作原理、如何新增代理以及如何建立自訂提及提供者。
|
|
361
361
|
|
|
362
362
|
## 訊息傳遞整合 {#messaging-integrations}
|
|
363
363
|
|
|
364
|
-
|
|
364
|
+
還可以透過 Slack、電子郵件、Telegram 和 WhatsApp 等外部訊息平台聯絡代理。使用者在這些平台上傳送訊息,代理在同一對話串中使用與網頁聊天相同的工具和 actions 進行回應。
|
|
365
365
|
|
|
366
366
|
有關每個平台的設定詳細資訊,請參閱 [Messaging](/docs/messaging)。
|
|
367
367
|
|
|
368
368
|
## 範例:跨代理查詢 {#example}
|
|
369
369
|
|
|
370
|
-
|
|
370
|
+
郵件代理需要分析資料。分析代理透過 A2A 公開“執行查詢”技能:
|
|
371
371
|
|
|
372
372
|
```ts
|
|
373
373
|
// In the mail agent's actions/get-analytics.ts
|
|
@@ -389,4 +389,4 @@ export default defineAction({
|
|
|
389
389
|
});
|
|
390
390
|
```
|
|
391
391
|
|
|
392
|
-
|
|
392
|
+
分析代理接收訊息,透過其處理常式執行查詢,並返回結果。郵件操作取得文字回應。沒有共用資料庫,沒有直接的 API 呼叫——只有代理到代理的通信。
|