@agent-native/core 0.79.12 → 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 +19 -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 +417 -42
- 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 +3 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +361 -37
- 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/resources/handlers.d.ts +2 -2
- 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,41 +1,41 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "多應用工作區"
|
|
3
|
-
description: "
|
|
3
|
+
description: "在一個單一儲存庫中託管許多 Agent-Native 應用程式,並具有共用驗證、RBAC、指令、skills、元件和憑證。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 多應用工作區
|
|
7
7
|
|
|
8
|
-
> **哪個工作區檔案?** 此頁面涵蓋 **部署形狀** -
|
|
8
|
+
> **哪個工作區檔案?** 此頁面涵蓋 **部署形狀** - 一個單一儲存庫、許多應用程式、共用驗證和統一部署。對於工作空間*是什麼*(自訂層:`AGENTS.md`、`LEARNINGS.md`、個人記憶、skills、自訂代理),請參閱 [Workspace](/docs/workspace);有關治理(誰審查、核准和擁有什麼),請參閱 [Workspace Governance](/docs/workspace-management)。
|
|
9
9
|
|
|
10
|
-
當對內部工具進行振動編碼需要一個下午時,您不會停下來。一個團隊最終得到了一個 CRM
|
|
10
|
+
當對內部工具進行振動編碼需要一個下午時,您不會停下來。一個團隊最終得到了一個 CRM、一個支援收件箱、一個儀表板、一個操作主控台——十個小應用程式,每個應用程式都是獨立搭建的。這很好,直到您需要更改所有內容為止。
|
|
11
11
|
|
|
12
|
-
那時,每個應用程式都有自己的 `AGENTS.md`、自己的驗證外掛、自己的複製貼上布局元件、自己的硬編碼 Slack
|
|
12
|
+
那時,每個應用程式都有自己的 `AGENTS.md`、自己的驗證外掛、自己的複製貼上布局元件、自己的硬編碼 Slack 權杖、自己關於“組織”是什麼的想法。合規規則的變更意味著十個 PR。輪換 API 金鑰意味著十次重新部署。品牌重新整理意味著十個不同的標題變得不同步。原本讓建置它們變得容易的事情現在卻讓它們變得難以管理。
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
**多應用程式工作區**模式是 Agent-Native 解決此問題的方式。您可以將所有應用程式與私人 `packages/shared` 包一起託管在一個單一儲存庫中。此框架擁有通用的預設值; `packages/shared` 僅適用於真正針對您的工作區定制的程式碼、指令、skills、元件或外掛覆蓋。每個應用程式都縮小到少數幾個螢幕和 actions,這使其獨一無二。
|
|
15
15
|
|
|
16
|
-
##
|
|
16
|
+
## 分享什麼內容 {#what-gets-shared}
|
|
17
17
|
|
|
18
18
|
您組織中的每個應用都應同意的任何內容都可以存在於 `packages/shared` 中:
|
|
19
19
|
|
|
20
20
|
| 共用的東西 | 它居住的地方 |
|
|
21
21
|
| --------------- | -------------------------------------------------- |
|
|
22
|
-
| 驗證/SSO覆蓋
|
|
22
|
+
| 驗證/SSO 覆蓋 | 從 `src/server/index.ts` 匯出 `authPlugin` |
|
|
23
23
|
| 組織/RBAC規則 | 更好的驗證組織,可選地由 `authPlugin` 包裝 |
|
|
24
24
|
| 代理聊天覆蓋 | 從 `src/server/index.ts` 匯出 `agentChatPlugin` |
|
|
25
25
|
| 企業代理說明 | `AGENTS.md` |
|
|
26
|
-
|
|
|
26
|
+
| 代理skills | `.agents/skills/<skill-name>/SKILL.md` |
|
|
27
27
|
| 共用代理actions | `actions/*.ts` |
|
|
28
|
-
| 共用React元件
|
|
28
|
+
| 共用 React 元件 | 從`src/client/index.ts`匯出 |
|
|
29
29
|
| 設計代幣/品牌 | 新增共用的 CSS 檔案並從每個應用匯入 |
|
|
30
30
|
| 共用 API 憑證 | 更喜歡框架範圍的憑證;僅當需要命名空間時才新增助手 |
|
|
31
31
|
|
|
32
|
-
每個單獨的應用程式都變成*只是一組螢幕* —
|
|
32
|
+
每個單獨的應用程式都變成*只是一組螢幕* — 路由、儀表板、檢視、特定於域的 actions。框架預設值涵蓋其餘部分,直到您新增真正的工作區自訂。
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
當您的應用想要使用另一個第一方應用時,同樣的邊界也適用。需要電子郵件、行事曆、分析和公司記憶脈絡的新工作區儀表板應使用現有的郵件、行事曆、分析和大腦應用程式作為透過連結或 A2A 連線的鄰居。它不應該克隆這些範本,建立嵌套它們的包裝應用程式,或者在其內部搭建子應用程式只是為了存取其資料或代理。僅當您明確想要自訂該應用程式時,才分叉或搭建副本。
|
|
35
35
|
|
|
36
36
|
## 開始使用 {#getting-started}
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
工作區是 Agent-Native 專案的預設形狀。腳手架一具有:
|
|
39
39
|
|
|
40
40
|
```bash
|
|
41
41
|
npx @agent-native/core@latest create my-company-platform
|
|
@@ -45,7 +45,7 @@ CLI 顯示每個第一方範本的多選選取器。選取任意數量的郵件
|
|
|
45
45
|
|
|
46
46
|
您將獲得一個包含私人共用包的 pnpm monorepo、一個連線工作區發現的根 `package.json`、一個共用 `.env` 以及您選取的每個應用程式的一個子目錄:
|
|
47
47
|
|
|
48
|
-
```an-file-tree title="
|
|
48
|
+
```an-file-tree title="一個腳手架產生的 workspace"
|
|
49
49
|
{
|
|
50
50
|
"entries": [
|
|
51
51
|
{ "path": "package.json", "note": "聲明 agent-native.workspaceCore" },
|
|
@@ -71,7 +71,7 @@ pnpm install
|
|
|
71
71
|
pnpm dev # opens Dispatch; other apps start on first visit
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
-
每個應用程式都已經知道如何登入、共用相同的資料庫以及載入工作區 `AGENTS.md`。您沒有連線任何這些 -
|
|
74
|
+
每個應用程式都已經知道如何登入、共用相同的資料庫以及載入工作區 `AGENTS.md`。您沒有連線任何這些 - 框架透過根 `package.json` 中的 `agent-native.workspaceCore` 欄位自動發現共用包:
|
|
75
75
|
|
|
76
76
|
```json
|
|
77
77
|
{
|
|
@@ -107,15 +107,15 @@ pnpm dev
|
|
|
107
107
|
|
|
108
108
|
## 您在何處覆蓋內容 {#layering}
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
工作區中的 Agent-Native 應用程式按以下順序從三個位置解析橫切行為:
|
|
111
111
|
|
|
112
112
|
1. **應用程式本機** — `apps/<name>/` 內的檔案(最高優先級)
|
|
113
113
|
2. **工作空間共用** — `packages/shared/`(共用中間層)內的檔案
|
|
114
114
|
3. **框架預設** — `@agent-native/core`(最低)
|
|
115
115
|
|
|
116
|
-
|
|
116
|
+
合併按檔名進行。如果應用程式提供的本機檔案也存在於上游,則本機檔案獲勝。如果沒有,則應用工作區共用版本。如果共用也沒有提供,則框架預設啟動。這適用於外掛、skills、actions 和 `AGENTS.md`。
|
|
117
117
|
|
|
118
|
-
```an-diagram title="
|
|
118
|
+
```an-diagram title="三層,按檔名合併" summary="每個應用程式首先從應用程式本機解析外掛、技能、操作和 AGENTS.md,然後是共用包,然後是框架預設值。"
|
|
119
119
|
{
|
|
120
120
|
"html": "<div class=\"layer\"><div class=\"diagram-card accent\"><span class=\"diagram-pill accent\">1 · App local</span><small class=\"diagram-muted\"><code>apps/<name>/</code> — highest priority</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↓</div><div class=\"diagram-card\"><span class=\"diagram-pill\">2 · Workspace shared</span><small class=\"diagram-muted\"><code>packages/shared/</code> — the mid-layer</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↓</div><div class=\"diagram-card\"><span class=\"diagram-pill\">3 · Framework default</span><small class=\"diagram-muted\"><code>@agent-native/core</code> — lowest</small></div><div class=\"diagram-arrow diagram-accent\" aria-hidden=\"true\">↓</div><div class=\"diagram-box ok\">first match wins</div></div>",
|
|
121
121
|
"css": ".layer{display:flex;flex-direction:column;align-items:center;gap:6px}.layer .diagram-card{display:flex;flex-direction:column;gap:3px;padding:12px 16px;width:320px}.layer .diagram-arrow{font-size:18px;line-height:1}.layer .diagram-box{margin-top:2px}"
|
|
@@ -130,31 +130,31 @@ pnpm dev
|
|
|
130
130
|
| 代理聊天外掛 | `apps/<name>/server/plugins/agent-chat.ts` |
|
|
131
131
|
| 特定技能 | `apps/<name>/.agents/skills/<skill-name>/SKILL.md` |
|
|
132
132
|
| 特定操作 | `apps/<name>/actions/<action-name>.ts` |
|
|
133
|
-
| 其他代理說明 | `apps/<name>/AGENTS.md
|
|
133
|
+
| 其他代理說明 | `apps/<name>/AGENTS.md`(與工作區一合併) |
|
|
134
134
|
|
|
135
135
|
無需接線,無需設定。建立檔案並接管。
|
|
136
136
|
|
|
137
137
|
## 編輯共用行為 {#editing-shared-behavior}
|
|
138
138
|
|
|
139
|
-
您自訂的所有橫切內容都位於 `packages/shared/` 中。從 `src/server/index.ts` 匯出 `authPlugin`,每個應用程式都會在下次開發重新載入時拾取它。在 `.agents/skills/` 下新增一項技能,每個應用程式的代理都會看到它。向`actions
|
|
139
|
+
您自訂的所有橫切內容都位於 `packages/shared/` 中。從 `src/server/index.ts` 匯出 `authPlugin`,每個應用程式都會在下次開發重新載入時拾取它。在 `.agents/skills/` 下新增一項技能,每個應用程式的代理都會看到它。向`actions/`新增一個動作,每個應用程式的代理都可以呼叫它。
|
|
140
140
|
|
|
141
141
|
由於共用包是 `workspace:*` 依賴項,因此 pnpm 將其符號連結到每個應用程式的 `node_modules/` 中。您永遠不會建置或發布它 - 應用程式會在建置時捆綁它們需要的任何內容。
|
|
142
142
|
|
|
143
143
|
## 執行時全域資源 {#runtime-global-resources}
|
|
144
144
|
|
|
145
|
-
使用 `packages/shared` 作為應隨儲存庫附帶的程式碼級預設值:外掛、共用 actions、共用 React 程式碼、檔案系統 `AGENTS.md` 和檔案系統 skills。將 Dispatch
|
|
145
|
+
使用 `packages/shared` 作為應隨儲存庫附帶的程式碼級預設值:外掛、共用 actions、共用 React 程式碼、檔案系統 `AGENTS.md` 和檔案系統 skills。將 Dispatch 工作區資源用於管理員希望在不更改程式碼的情況下進行管理的執行時可編輯全域脈絡。
|
|
146
146
|
|
|
147
|
-
|
|
147
|
+
調度資源的範圍為**所有應用程式**(每個應用程式在執行時繼承它們,沒有複製或同步步驟)或**選定的應用程式**(為每個應用程式授予特定於應用程式的脈絡)。請參閱 [Workspace](/docs/workspace#global-resources) 了解完整的資源模型表、路徑約定和推薦的入門包。
|
|
148
148
|
|
|
149
149
|
## 驗證和RBAC {#auth-and-rbac}
|
|
150
150
|
|
|
151
|
-
|
|
151
|
+
每個 Agent-Native 應用程式都已附帶 [Better Auth](/docs/authentication) 以及框架的內建組織系統。在工作區中,您可以在每個應用程式中免費獲得該功能,並由同一資料庫支援。有關完整的多租戶模型(組織、角色、資料隔離),請參閱 [Multi-Tenancy](/docs/multi-tenancy)。
|
|
152
152
|
|
|
153
|
-
|
|
153
|
+
對於特定於企業的規則(允許清單域、SSO 強制執行、額外角色檢查),請從 `packages/shared/src/server/index.ts` 匯出 `authPlugin`。現在,工作區中的每個應用程式都會強制執行這些規則。
|
|
154
154
|
|
|
155
155
|
活動組織自動流動:`session.orgId` → `AGENT_ORG_ID` → SQL 行範圍,因此用 `org_id` 標記的資料對於其他組織甚至代理來說都是不可見的。完整模型請參見 [Security & Data Scoping](/docs/security)。
|
|
156
156
|
|
|
157
|
-
## 共用MCP伺服器 {#shared-mcp}
|
|
157
|
+
## 共用 MCP 伺服器 {#shared-mcp}
|
|
158
158
|
|
|
159
159
|
跨工作區應用共用 MCP 伺服器的推薦選項(按優先順序排列):
|
|
160
160
|
|
|
@@ -168,7 +168,7 @@ pnpm dev
|
|
|
168
168
|
|
|
169
169
|
## 共用環境變數 {#shared-env}
|
|
170
170
|
|
|
171
|
-
工作區根 `.env` 會自動載入到每個應用程式中。將共用金鑰放在根目錄中一次(`ANTHROPIC_API_KEY`、`A2A_SECRET`、`BETTER_AUTH_SECRET`、`DATABASE_URL`、`BUILDER_PRIVATE_KEY`
|
|
171
|
+
工作區根 `.env` 會自動載入到每個應用程式中。將共用金鑰放在根目錄中一次(`ANTHROPIC_API_KEY`、`A2A_SECRET`、`BETTER_AUTH_SECRET`、`DATABASE_URL`、`BUILDER_PRIVATE_KEY` 等),每個應用程式都會取得它們。每個應用程式覆蓋進入 `apps/<name>/.env` 並在衝突時獲勝。
|
|
172
172
|
|
|
173
173
|
對於執行時應用程式憑證,與手動編輯 `.env` 檔案相比,更喜歡使用 DispatchVault。保管庫預設為所有應用程式存取,因此每個儲存的保管庫金鑰可供每個工作區應用程式使用,並且可以使用 `sync-vault-to-app` 推送。僅當應用程式需要顯式的每金鑰授權時,才將保管庫切換到手動模式。
|
|
174
174
|
|
|
@@ -187,11 +187,11 @@ my-company-platform/
|
|
|
187
187
|
|
|
188
188
|
## 共用憑證 {#shared-credentials}
|
|
189
189
|
|
|
190
|
-
預設情況下,同一工作區中的應用程式指向同一 `DATABASE_URL
|
|
190
|
+
預設情況下,同一工作區中的應用程式指向同一 `DATABASE_URL`,因此框架憑證儲存可以使憑證可供每個應用程式使用,而無需每個應用程式設定。直接使用 `@agent-native/core/credentials`,或者如果您的工作區需要更嚴格的命名約定,則在 `packages/shared` 中新增瘦助手。
|
|
191
191
|
|
|
192
192
|
## 共用設計權杖 {#design-tokens}
|
|
193
193
|
|
|
194
|
-
|
|
194
|
+
此框架基於 Tailwind v4。僅當工作區有真正的品牌權杖可供共用時,才將共用的 CSS 檔案新增到 `packages/shared`,然後從每個應用程式的 `app/global.css` 匯入它:
|
|
195
195
|
|
|
196
196
|
```css
|
|
197
197
|
@import "tailwindcss";
|
|
@@ -214,7 +214,7 @@ my-company-platform/
|
|
|
214
214
|
|
|
215
215
|
### 統一部署(推薦)
|
|
216
216
|
|
|
217
|
-
|
|
217
|
+
一個指令建置工作區中的每個應用程式,並將它們傳送到單一來源,每個應用程式一個路徑:
|
|
218
218
|
|
|
219
219
|
```bash
|
|
220
220
|
npx @agent-native/core@latest deploy
|
|
@@ -223,7 +223,7 @@ npx @agent-native/core@latest deploy
|
|
|
223
223
|
# https://your-agents.com/forms/* → apps/forms
|
|
224
224
|
```
|
|
225
225
|
|
|
226
|
-
每個應用程式均使用 `APP_BASE_PATH=/<name>` 和 `VITE_APP_BASE_PATH=/<name>`
|
|
226
|
+
每個應用程式均使用 `APP_BASE_PATH=/<name>` 和 `VITE_APP_BASE_PATH=/<name>` 建置,並透過選定的 Nitro 預設發出。 Cloudflare Pages 是預設預設,並使用 `dist/_worker.js` 和 `_routes.json` 的調度程式工作人員。 `npx @agent-native/core@latest deploy --preset netlify` 支援 Netlify;它在 `.netlify/functions-internal/<app>-server` 下發出應用程式功能,並生成重新導向,使靜態資產不受強制,因此 CDN 首先提供檔案。 `npx @agent-native/core@latest deploy --preset vercel` 支援 Vercel;它使用 Vercel 的建置輸出 API 編寫根 `.vercel/output` 包。
|
|
227
227
|
|
|
228
228
|
```an-diagram title="統一部署:一個來源,每個應用一個路徑" summary="每個應用程式都遵循單一來源,因此登入工作階段和跨應用程式 A2A 是免費的。"
|
|
229
229
|
{
|
|
@@ -234,8 +234,8 @@ npx @agent-native/core@latest deploy
|
|
|
234
234
|
|
|
235
235
|
同來源\*\*才是真正的回報所在:
|
|
236
236
|
|
|
237
|
-
- **共用登入工作階段。** Better Auth 在頂點域上設定其 cookie,因此登入任何應用程式都會登入到每個應用程式。沒有跨域SSO舞蹈。
|
|
238
|
-
- **零設定跨應用程式 A2A。** `@mail` 標記 `@calendar`
|
|
237
|
+
- **共用登入工作階段。** Better Auth 在頂點域上設定其 cookie,因此登入任何應用程式都會登入到每個應用程式。沒有跨域 SSO 舞蹈。
|
|
238
|
+
- **零設定跨應用程式 A2A。** `@mail` 標記 `@calendar` 成為同來源取得 - 兄弟之間沒有 CORS,沒有 JWT 簽名。外部 A2A 仍沿用至今的 JWT。
|
|
239
239
|
- **一條 DNS 紀錄,一個證書,一個 CDN 快取。**
|
|
240
240
|
|
|
241
241
|
發布 `dist/` 輸出:
|
|
@@ -271,7 +271,7 @@ npx @agent-native/core@latest deploy --preset vercel --build-only
|
|
|
271
271
|
}
|
|
272
272
|
```
|
|
273
273
|
|
|
274
|
-
|
|
274
|
+
對於大多數帶有一些公開頁面的內部應用程式,請保留受眾內部和清單頁面前綴:
|
|
275
275
|
|
|
276
276
|
```json
|
|
277
277
|
{
|
|
@@ -287,11 +287,11 @@ npx @agent-native/core@latest deploy --preset vercel --build-only
|
|
|
287
287
|
|
|
288
288
|
### 每個應用獨立部署
|
|
289
289
|
|
|
290
|
-
更喜歡每個應用程式在自己的域中(`mail.company.com`、`calendar.company.com`)?工作區中的每個應用程式仍然是獨立可部署的 - `cd apps/mail && npx @agent-native/core@latest build` 的行為與獨立腳手架完全相同。然後,跨應用程式 A2A
|
|
290
|
+
更喜歡每個應用程式在自己的域中(`mail.company.com`、`calendar.company.com`)?工作區中的每個應用程式仍然是獨立可部署的 - `cd apps/mail && npx @agent-native/core@latest build` 的行為與獨立腳手架完全相同。然後,跨應用程式 A2A 透過具有共用 `A2A_SECRET` 的標準 JWT 簽名路徑。單獨部署的應用程式之間的跨域 SSO 由以 Dispatch 作為中心的身分聯合處理 - 請參閱 [Cross-App SSO](/docs/cross-app-sso);統一的單來源部署避免了需要它。
|
|
291
291
|
|
|
292
292
|
### 共用資料庫、共用憑證
|
|
293
293
|
|
|
294
|
-
|
|
294
|
+
無論您選取什麼,都將每個應用程式指向相同的 `DATABASE_URL` 以獲得開箱即用的跨應用程式狀態:一組使用者帳戶、一組組織、一組共用設定。如果每個應用程式都有自己的資料庫,那麼工作區模式仍然有效 - 您只是失去了共用狀態的故事。
|
|
295
295
|
|
|
296
296
|
共用包本身永遠不會獨立部署。這是一個 `workspace:*` 依賴項,pnpm 符號連結到每個應用程式的 `node_modules/`,因此每個應用程式在建置時透明地捆綁它需要的任何內容。
|
|
297
297
|
|
|
@@ -299,14 +299,14 @@ npx @agent-native/core@latest deploy --preset vercel --build-only
|
|
|
299
299
|
|
|
300
300
|
工作區圖案故意變窄。它故意不處理一些事情:
|
|
301
301
|
|
|
302
|
-
-
|
|
303
|
-
- **將共用程式碼發布到私人npm。**共用包僅限`workspace
|
|
304
|
-
- **固定元件庫。** `packages/shared`
|
|
302
|
+
- **加密憑證保管庫。**首選調度保管庫來取得執行時應用程式憑證(請參閱 [Shared environment variables](#shared-env))。非保管庫回退路徑(直接寫入框架 `settings` 表的共用憑證)現在將它們儲存為純文字,因此當您依賴它時,請負責任地輪換。
|
|
303
|
+
- **將共用程式碼發布到私人npm。**共用包僅限`workspace:*`;透過私人註冊表進行多儲存庫共用是可行的,但無法搭建。
|
|
304
|
+
- **固定元件庫。** `packages/shared` 是您放置共用元件的位置。此框架不會強制 shadcn/ui 或任何其他系統進入該插槽。
|
|
305
305
|
|
|
306
306
|
## 另請參閱 {#see-also}
|
|
307
307
|
|
|
308
|
-
- [Workspace](/docs/workspace) - 工作區中每個應用共用的自訂層(`AGENTS.md`、`LEARNINGS.md
|
|
308
|
+
- [Workspace](/docs/workspace) - 工作區中每個應用共用的自訂層(`AGENTS.md`、`LEARNINGS.md`、個人記憶、skills、自訂代理)。
|
|
309
309
|
- [Workspace Governance](/docs/workspace-management) — 分支、CODEOWNERS、一個儲存庫中多個應用的 PR 審核。
|
|
310
310
|
- [Multi-Tenancy](/docs/multi-tenancy) — 組織、角色和每個組織的資料隔離。
|
|
311
311
|
- [Cross-App SSO](/docs/cross-app-sso) — 用於單獨域部署的身分聯合。
|
|
312
|
-
- [Dispatch](/docs/dispatch) -
|
|
312
|
+
- [Dispatch](/docs/dispatch) - 執行時控制平面,通常位於多應用工作區中,作為機密庫、整合目錄和核准中心。
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "多租戶"
|
|
3
|
-
description: "
|
|
3
|
+
description: "每個 Agent-Native 應用程式都是開箱即用的多租戶 - 組織、團隊成員、角色和每個組織的資料隔離,且零設定。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 多租戶
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
每個 Agent-Native 應用程式都是開箱即用的多租戶。組織、團隊成員、基於角色的存取和每個組織的資料隔離均內建於框架中,零設定。
|
|
9
9
|
|
|
10
10
|
## 您免費獲得的東西 {#free}
|
|
11
11
|
|
|
12
12
|
新的 `npx @agent-native/core@latest create` 腳手架已附帶:
|
|
13
13
|
|
|
14
14
|
- **使用者註冊和登入** — 參見 [Authentication](/docs/authentication)。
|
|
15
|
-
- **組織** —
|
|
15
|
+
- **組織** — 使用者建立組織並透過電子郵件邀請成員。每個組織都是一個完全隔離的租戶。
|
|
16
16
|
- **角色** — 每個成員都是 `owner`、`admin` 或 `member`; actions可以檢視角色是否授權。
|
|
17
17
|
- **組織切換** — 工作階段跟蹤活動組織 (`session.orgId`),切換它會更改使用者和代理看到的資料。
|
|
18
18
|
- **每組織資料隔離** — 每個查詢都會自動限定到活動組織。
|
|
19
19
|
|
|
20
|
-
如果您正在評估 CRM
|
|
20
|
+
如果您正在評估 CRM、專案跟蹤器、支援收件箱或任何團隊工具的原生代理,那麼多租戶基礎已經存在。所有第一方範本都是多租戶的 - 請參閱 [Cloneable SaaS templates](/docs/cloneable-saas) 取得清單。
|
|
21
21
|
|
|
22
22
|
```an-diagram title="組織成員資格和隔離" summary="使用者以 owner/admin/member 身分加入組織。每個可擁有的行都帶有擁有它的租戶的 org_id ,並且沒有行跨越邊界泄漏。"
|
|
23
23
|
{
|
|
@@ -30,7 +30,7 @@ description: "每個代理本機應用程式都是開箱即用的多租戶 - 組
|
|
|
30
30
|
|
|
31
31
|
組織切換者和成員 UI 在每個範本中呈現,無需額外程式碼。他們在 `/_agent-native/org/*` 下驅動核心組織 REST 路由(建立組織、切換組織、列出/邀請/刪除成員、更改角色、設定允許的電子郵件域)。使用者從切換器中選取活動組織;成員面板處理邀請和角色變更。
|
|
32
32
|
|
|
33
|
-
這是框架自己的`org
|
|
33
|
+
這是框架自己的`org/`模組,而不是Better Auth的組織外掛(故意不註冊)。完整的組織管理介面——`createOrganization`、REST 路由和範本編寫的 `defineAction` 包裝器(如 `invite-member`)——紀錄在 [Authentication → Organizations](/docs/authentication#organizations) 中。
|
|
34
34
|
|
|
35
35
|
## 隔離的工作原理 {#isolation}
|
|
36
36
|
|
|
@@ -43,10 +43,10 @@ description: "每個代理本機應用程式都是開箱即用的多租戶 - 組
|
|
|
43
43
|
}
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
這與用於每使用者範圍的管道相同。對於 SQL
|
|
46
|
+
這與用於每使用者範圍的管道相同。對於 SQL 層級的機制、`ownableColumns()` 合約和 `accessFilter` / `resolveAccess` / `assertAccess` 防護,請參閱 [Security → Data Scoping](/docs/security#data-scoping) — 範圍界定管道的單一事實來源。
|
|
47
47
|
|
|
48
48
|
## 相關檔案 {#related}
|
|
49
49
|
|
|
50
50
|
- [Authentication](/docs/authentication#organizations) — 工作階段、社交提供者和組織管理介面
|
|
51
51
|
- [Security → Data Scoping](/docs/security#data-scoping) - SQL 級隔離、`ownableColumns()` 合約和存取防護
|
|
52
|
-
- [Multi-App Workspace](/docs/multi-app-workspace) — 在具有共用驗證和 RBAC
|
|
52
|
+
- [Multi-App Workspace](/docs/multi-app-workspace) — 在具有共用驗證和 RBAC 的單一儲存庫中託管多個 Agent-Native 應用程式
|
|
@@ -6,35 +6,35 @@ description: "操作聲明的本機聊天渲染器、可重用的 DataTable/Data
|
|
|
6
6
|
# 原生聊天 UI
|
|
7
7
|
|
|
8
8
|
本機聊天 UI 是第一方代理輸出的應用內渲染路徑。一個
|
|
9
|
-
操作返回結構化JSON
|
|
9
|
+
操作返回結構化JSON,聊天執行時識別顯式小工具
|
|
10
10
|
判別式,`<AssistantChat>`在
|
|
11
11
|
對話。您不會為
|
|
12
12
|
正常的應用聊天。
|
|
13
13
|
|
|
14
14
|
當使用者應該檢查代理所在位置的輸出時,使用本機聊天 UI
|
|
15
15
|
已經講過:查詢結果、回應見解、設定摘要,
|
|
16
|
-
|
|
16
|
+
核准/拒絕控制,或應用程式檢視的連結。使用[MCP Apps](/docs/mcp-apps)
|
|
17
17
|
當外部主機(例如 Claude、ChatGPT、Copilot 或 Cursor)應該渲染時
|
|
18
|
-
|
|
18
|
+
來自您的應用的行內路由。
|
|
19
19
|
|
|
20
|
-
```an-diagram title="原生渲染路徑" summary="操作返回 JSON
|
|
20
|
+
```an-diagram title="原生渲染路徑" summary="操作返回 JSON;執行時匹配顯式小工具判別式或 chatUI.renderer; AssistantChat 安裝真實的 React 元件。沒有 iframe,沒有 HTML 執行。"
|
|
21
21
|
{
|
|
22
22
|
"html": "<div class=\"diagram-render\"><div class=\"diagram-node\">Action 執行<br><small class=\"diagram-muted\">返回結構化 JSON</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-panel center\" data-rough><span class=\"diagram-pill accent\">Match</span><small class=\"diagram-muted\">explicit widget · chatUI.renderer</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-box\"><AssistantChat><br><small class=\"diagram-muted\">掛載 React widget</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-card col\"><div class=\"diagram-pill ok\">DataTable</div><div class=\"diagram-pill ok\">DataChart</div><div class=\"diagram-pill ok\">DataInsights</div></div></div>",
|
|
23
23
|
"css": ".diagram-render{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.diagram-render .center{display:flex;flex-direction:column;align-items:center;gap:4px;padding:14px}.diagram-render .col{display:flex;flex-direction:column;gap:6px;padding:12px}.diagram-render .diagram-arrow{font-size:22px;line-height:1}"
|
|
24
24
|
}
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
##
|
|
27
|
+
## 動作聲明的小工具 {#action-declared-widgets}
|
|
28
28
|
|
|
29
29
|
本機路徑有兩個顯式部分:
|
|
30
30
|
|
|
31
31
|
- `outputSchema` 驗證操作的回應形狀。
|
|
32
32
|
- `chatUI.renderer` 為驗證結果選取原生 React 渲染器。
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
內建資料渲染器使用普通的 JSON 結果和 `widget` 加上
|
|
35
35
|
匹配有效負載:
|
|
36
36
|
|
|
37
|
-
|
|
|
37
|
+
| 小工具 | 所需的有效負載 | 渲染為 |
|
|
38
38
|
| ----------------- | --------------------------- | ----------------------------- |
|
|
39
39
|
| `"data-table"` | `table` | 原生的、可重用的資料表 |
|
|
40
40
|
| `"data-chart"` | `chartSeries` | 原生條形圖、折線圖或面積圖 |
|
|
@@ -100,20 +100,20 @@ export default defineAction({
|
|
|
100
100
|
```an-callout
|
|
101
101
|
{
|
|
102
102
|
"tone": "success",
|
|
103
|
-
"body": "僅當操作聲明 `chatUI`**或**結果攜帶顯式已知的 `widget` 判別式時,渲染器才會接管。它從不形狀推斷任意物件,也從不從工具結果執行 HTML 或 JavaScript -
|
|
103
|
+
"body": "僅當操作聲明 `chatUI`**或**結果攜帶顯式已知的 `widget` 判別式時,渲染器才會接管。它從不形狀推斷任意物件,也從不從工具結果執行 HTML 或 JavaScript - 因此本機小工具不能成為注入向量。"
|
|
104
104
|
}
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
當使用者請求圖表、圖形、表格、趨勢或精簡報告時,應用代理
|
|
108
108
|
應該更喜歡聲明這些本機渲染器之一的操作。決賽
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
輔助文字應保持簡短並讓小工具攜帶資料;請勿複製
|
|
110
|
+
除非使用者明確要求輸入文字,否則將相同的行放入 Markdown 表中
|
|
111
111
|
匯出。
|
|
112
112
|
|
|
113
113
|
當不存在域操作但代理已檢索緊湊時,
|
|
114
|
-
|
|
114
|
+
真實的資料,它可以透過以下方式呼叫框架`render-data-widget`操作
|
|
115
115
|
相同的 `data-table`、`data-chart` 或 `data-insights` JSON 形狀。僅此操作
|
|
116
|
-
|
|
116
|
+
驗證並渲染小工具;它不是資料來源,不得使用
|
|
117
117
|
發明預留位置指標。
|
|
118
118
|
|
|
119
119
|
## 資料表輸出 {#data-table}
|
|
@@ -138,7 +138,7 @@ export default defineAction({
|
|
|
138
138
|
|
|
139
139
|
## 資料圖表輸出 {#data-chart}
|
|
140
140
|
|
|
141
|
-
`chartSeries`
|
|
141
|
+
`chartSeries` 支援座席答案中使用的常見圖表形狀,無需
|
|
142
142
|
要求每個範本提供自己的聊天渲染器:
|
|
143
143
|
|
|
144
144
|
```ts
|
|
@@ -153,27 +153,27 @@ export default defineAction({
|
|
|
153
153
|
```
|
|
154
154
|
|
|
155
155
|
保持圖表資料緊湊。對於大型資料集,在操作和連結中聚合
|
|
156
|
-
到包含 `display.primaryAction` 或操作 `link`
|
|
156
|
+
到包含 `display.primaryAction` 或操作 `link` 中繼資料的完整應用檢視。
|
|
157
157
|
|
|
158
|
-
##
|
|
158
|
+
## 本機小工具與 MCP 應用程式 {#native-vs-mcp-apps}
|
|
159
159
|
|
|
160
|
-
|
|
160
|
+
本機聊天小工具和 MCP 應用程式是互補的:
|
|
161
161
|
|
|
162
|
-
-
|
|
163
|
-
JSON
|
|
162
|
+
- **本機小工具**用於應用程式自己的聊天執行時。動作結果為
|
|
163
|
+
JSON,框架渲染內建的 React 小工具。
|
|
164
164
|
- **MCP 應用程式**適用於外部主機。該操作聲明 `mcpApp` 並且通常
|
|
165
|
-
`link
|
|
165
|
+
`link`,並且主機在支援時行內渲染真實的應用程式路由。
|
|
166
166
|
- **深層連結**仍然是通用的後備方案。使用操作 `link` 或
|
|
167
|
-
`display.primaryAction`、CLI 用戶端、較舊的 MCP
|
|
168
|
-
|
|
167
|
+
`display.primaryAction`、CLI 用戶端、較舊的 MCP 主機和純文字紀錄
|
|
168
|
+
讀者可以開啟完整的應用檢視。
|
|
169
169
|
|
|
170
|
-
|
|
171
|
-
|
|
170
|
+
當本機小工具負載和 MCP 應用中繼資料都存在時,應用內
|
|
171
|
+
聊天更喜歡本機小工具。外部主機使用 MCP Apps 資源或
|
|
172
172
|
深層連結回退。
|
|
173
173
|
|
|
174
174
|
## 自訂原生渲染器 {#custom-native-renderers}
|
|
175
175
|
|
|
176
|
-
|
|
176
|
+
透過精確的渲染器 ID 註冊特定於產品的元件,然後聲明該 ID
|
|
177
177
|
關於行動:
|
|
178
178
|
|
|
179
179
|
```tsx
|
|
@@ -203,13 +203,13 @@ export default defineAction({
|
|
|
203
203
|
`AgentChatRuntime` 是聊天 shell 的自帶代理合約,並且
|
|
204
204
|
本節是其規範參考。它允許您在其他地方建置代理
|
|
205
205
|
將標準化事件流式傳輸到 Agent-Native 的對話 UI 中,同時保持
|
|
206
|
-
|
|
206
|
+
共用撰寫器、指令碼渲染、工具卡、核准、本機小工具,
|
|
207
207
|
和週圍的應用程式布局。 [Drop-in Agent](/docs/drop-in-agent#custom-chat-ui)
|
|
208
|
-
|
|
209
|
-
|
|
208
|
+
此處為執行時故事的教學點,以及 [Component API](/docs/components#agent-chat-ui)
|
|
209
|
+
列出每個連線器和轉接器及其匯入路徑;合約本身是
|
|
210
210
|
如下所述。
|
|
211
211
|
|
|
212
|
-
```an-diagram title="BYO 執行時保留 Agent-Native 聊天 shell" summary="
|
|
212
|
+
```an-diagram title="BYO 執行時保留 Agent-Native 聊天 shell" summary="您的外部代理透過連線器傳輸標準化事件; Agent-Native 保留撰寫器、逐字稿、工具卡、核准和本機小工具。"
|
|
213
213
|
{
|
|
214
214
|
"html": "<div class=\"diagram-byo\"><div class=\"diagram-box\" data-rough>你的代理<br><small class=\"diagram-muted\">OpenAI · Claude · Vercel AI · AG-UI · HTTP</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-panel center\"><span class=\"diagram-pill accent\">connector</span><small class=\"diagram-muted\">標準化 message-* / tool-* 事件</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-card col\"><div class=\"diagram-pill\"><AssistantChat runtime=… /></div><small class=\"diagram-muted\">composer · transcript · tool cards</small><small class=\"diagram-muted\">approvals · native widgets</small></div></div>",
|
|
215
215
|
"css": ".diagram-byo{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.diagram-byo .center{display:flex;flex-direction:column;align-items:center;gap:4px;padding:14px}.diagram-byo .col{display:flex;flex-direction:column;gap:6px;padding:14px}.diagram-byo .diagram-arrow{font-size:22px;line-height:1}"
|
|
@@ -284,13 +284,13 @@ data: {"type":"done","reason":"complete"}
|
|
|
284
284
|
```
|
|
285
285
|
|
|
286
286
|
對於非常簡單的代理,接受 JSON 回應 `{ "text": "..." }` 並且
|
|
287
|
-
|
|
287
|
+
轉換為單一助理訊息。對於更豐富的代理,請流式傳輸
|
|
288
288
|
`message-*`, `tool-*`, `approval-request`, `status`, `artifact`, `file`,
|
|
289
289
|
`usage`、`error` 和 `done` 事件。工具結果可以攜帶`mcpApp`或
|
|
290
|
-
`chatUI`
|
|
290
|
+
`chatUI` 中繼資料,因此操作聲明的本機小工具仍然會在沒有
|
|
291
291
|
iframe。
|
|
292
292
|
|
|
293
|
-
|
|
293
|
+
當您希望內建 Agent-Native 傳輸作為執行時物件時,請使用:
|
|
294
294
|
|
|
295
295
|
```ts
|
|
296
296
|
import { createAgentNativeChatRuntime } from "@agent-native/core/client/chat";
|
|
@@ -302,20 +302,20 @@ const runtime = createAgentNativeChatRuntime({
|
|
|
302
302
|
```
|
|
303
303
|
|
|
304
304
|
僅在需要完整時才使用`<AssistantChat createAdapter={...} />`
|
|
305
|
-
assist-ui
|
|
306
|
-
擁有整個外部轉錄本並且只想要 Agent-Native
|
|
305
|
+
assist-ui 轉接器控制項。當您的產品時單獨使用`PromptComposer`
|
|
306
|
+
擁有整個外部轉錄本並且只想要 Agent-Native 的撰寫器
|
|
307
307
|
欄位。
|
|
308
308
|
|
|
309
309
|
OpenAI、AG-UI、Claude Agent SDK 和 Vercel AI SDK 流可以使用標準
|
|
310
310
|
連線器助手。 ACP 保留編碼代理/編輯器互操作性,而不是
|
|
311
|
-
|
|
312
|
-
|
|
311
|
+
最終使用者的通用應用程式聊天執行時。此處未聲明支援 A2UI;
|
|
312
|
+
如果它成熟,它應該適應這個相同的顯式執行時/小工具契約。
|
|
313
313
|
|
|
314
314
|
## 相關檔案 {#related-docs}
|
|
315
315
|
|
|
316
|
-
- [Actions](/docs/actions) —
|
|
316
|
+
- [Actions](/docs/actions) — 定義返回本機小工具資料的操作。
|
|
317
317
|
- [Agent Surfaces](/docs/agent-surfaces) — 決定您是否需要無頭、聊天、邊車或完整應用程式。
|
|
318
|
-
- [Drop-in Agent](/docs/drop-in-agent) —
|
|
318
|
+
- [Drop-in Agent](/docs/drop-in-agent) — 安裝標準聊天執行時的教學。
|
|
319
319
|
- [Component API](/docs/components) — 用於聊天層、執行時和工具渲染器的每次匯出 API 對應。
|
|
320
|
-
- [MCP Apps](/docs/mcp-apps) — 用於外部 MCP
|
|
320
|
+
- [MCP Apps](/docs/mcp-apps) — 用於外部 MCP 主機的行內 UI。
|
|
321
321
|
- [Key Concepts](/docs/key-concepts#protocols) — 協議狀態和定位。
|
|
@@ -5,9 +5,9 @@ description: "具有可插入通道的應用內通知 - 收件箱、Webhook 或
|
|
|
5
5
|
|
|
6
6
|
# 通知
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
一個功能,多個目的地。從任何伺服器端程式碼(操作、自動化、外掛)呼叫 `notify()`,事件就會出現在使用者的應用內收件箱中,並分發到每個註冊的頻道。附帶一個響鈴下拉 UI 元件,主機範本將其放入其標頭中。
|
|
9
9
|
|
|
10
|
-
通知是進入應用程式響鈴收件箱的單向警報(加上 Webhook
|
|
10
|
+
通知是進入應用程式響鈴收件箱的單向警報(加上 Webhook 扇出)。要透過 Slack/電子郵件/Telegram/WhatsApp 與您的代理*交談*,請參閱 [Messaging](/docs/messaging)。
|
|
11
11
|
|
|
12
12
|
```ts
|
|
13
13
|
import { notify } from "@agent-native/core/notifications";
|
|
@@ -33,18 +33,18 @@ await notify(
|
|
|
33
33
|
| `warning` | 使用者應該盡快檢視的內容 |
|
|
34
34
|
| `critical` | 需要立即關注 |
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
嚴重性驅動下拉清單中的徽章樣式,並傳遞到管道,以便它們可以根據緊急情況進行分支。
|
|
37
37
|
|
|
38
|
-
##
|
|
38
|
+
## 內建頻道 {#channels}
|
|
39
39
|
|
|
40
|
-
| 頻道 | 交付
|
|
41
|
-
| --------- |
|
|
42
|
-
| `inbox` | 持久化到`notifications`表;驅動鈴UI | 始終開啟 - 原語的一部分。 |
|
|
43
|
-
| `webhook` | POST JSON 到已設定的 URL
|
|
40
|
+
| 頻道 | 交付 | 需要 |
|
|
41
|
+
| --------- | ------------------------------------ | -------------------------------------------------- |
|
|
42
|
+
| `inbox` | 持久化到`notifications`表;驅動鈴 UI | 始終開啟 - 原語的一部分。 |
|
|
43
|
+
| `webhook` | POST JSON 到已設定的 URL | `NOTIFICATIONS_WEBHOOK_URL` 環境變數在啟動時設定。 |
|
|
44
44
|
|
|
45
|
-
Webhook 通道根據所有者的臨時 [secrets](/docs/security) 解析 URL 和 `NOTIFICATIONS_WEBHOOK_AUTH` 中的 `${keys.NAME}`
|
|
45
|
+
Webhook 通道根據所有者的臨時 [secrets](/docs/security) 解析 URL 和 `NOTIFICATIONS_WEBHOOK_AUTH` 中的 `${keys.NAME}` 引用,因此原始值永遠不會進入代理的脈絡。強制執行每鍵 URL 允許清單 - 自動化 `web-request` 工具使用相同的規則。
|
|
46
46
|
|
|
47
|
-
```an-diagram title="
|
|
47
|
+
```an-diagram title="管道和嚴重性" summary="收件箱始終開啟; webhook 需要一個環境變數;自訂頻道在啟動時註冊。嚴重性驅動徽章樣式並傳遞到每個管道。"
|
|
48
48
|
{
|
|
49
49
|
"html": "<div class=\"diagram-channels\"><div class=\"diagram-panel col\" data-rough><strong>Channels</strong><div class=\"diagram-box\" data-rough>inbox<br><small class=\"diagram-muted\">always on — part of the primitive</small></div><div class=\"diagram-box\" data-rough>webhook<br><small class=\"diagram-muted\">needs NOTIFICATIONS_WEBHOOK_URL</small></div><div class=\"diagram-box\" data-rough>custom<br><small class=\"diagram-muted\">registerNotificationChannel()</small></div></div><div class=\"diagram-panel col\" data-rough><strong>嚴重程度決定徽章</strong><div class=\"sev-row\"><span class=\"diagram-pill\">info</span><span class=\"diagram-muted\">確認和 FYI</span></div><div class=\"sev-row\"><span class=\"diagram-pill warn\">warning</span><span class=\"diagram-muted\">look at soon</span></div><div class=\"sev-row\"><span class=\"diagram-pill accent\">critical</span><span class=\"diagram-muted\">needs immediate attention</span></div></div></div>",
|
|
50
50
|
"css": ".diagram-channels{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-start}.diagram-channels .col{display:flex;flex-direction:column;gap:10px;padding:14px;min-width:240px}.diagram-channels .sev-row{display:flex;align-items:center;gap:10px}"
|
|
@@ -117,7 +117,7 @@ await markAllNotificationsRead("steve@builder.io");
|
|
|
117
117
|
await deleteNotification(rows[0].id, "steve@builder.io");
|
|
118
118
|
```
|
|
119
119
|
|
|
120
|
-
|
|
120
|
+
每個函式都是所有者範圍的 - 沒有跨使用者讀取,沒有跨使用者寫入。
|
|
121
121
|
|
|
122
122
|
## NotificationChannel 介面 {#channel-interface}
|
|
123
123
|
|
|
@@ -145,7 +145,7 @@ interface NotificationMeta {
|
|
|
145
145
|
|
|
146
146
|
## HTTP API {#http}
|
|
147
147
|
|
|
148
|
-
|
|
148
|
+
透過 core-routes 外掛安裝在 `/_agent-native/notifications/*`。所有路由的範圍僅限於經過驗證的工作階段的電子郵件。
|
|
149
149
|
|
|
150
150
|
| 方法 | 路徑 |
|
|
151
151
|
| -------- | --------------------------------------------------- |
|
|
@@ -171,7 +171,7 @@ interface NotificationMeta {
|
|
|
171
171
|
}
|
|
172
172
|
```
|
|
173
173
|
|
|
174
|
-
## UI元件 {#ui}
|
|
174
|
+
## UI 元件 {#ui}
|
|
175
175
|
|
|
176
176
|
```tsx
|
|
177
177
|
import { NotificationsBell } from "@agent-native/core/client/notifications";
|
|
@@ -186,9 +186,9 @@ export function HeaderBar() {
|
|
|
186
186
|
}
|
|
187
187
|
```
|
|
188
188
|
|
|
189
|
-
|
|
189
|
+
帶有未讀徽章的響鈴圖示。點選可開啟最近通知的下拉清單。使用 shadcn 語義標記,適應主機範本的淺色/深色主題。
|
|
190
190
|
|
|
191
|
-
傳遞 `browserNotifications` 來為每個新的未讀專案觸發系統 `new Notification(...)`
|
|
191
|
+
傳遞 `browserNotifications` 來為每個新的未讀專案觸發系統 `new Notification(...)` 快顯視窗 - 當使用者的分頁位於背景時很有用。下拉選單會呈現“啟用”提示,直到使用者授予權限;透過通知 `tag` 欄位防止每個 ID 重複。
|
|
192
192
|
|
|
193
193
|
## 代理工具 {#agent-tools}
|
|
194
194
|
|
|
@@ -196,10 +196,10 @@ export function HeaderBar() {
|
|
|
196
196
|
|
|
197
197
|
| 行動 | 參數 | 目的 |
|
|
198
198
|
| ------ | ----------------------------------------------------------------------- | ---------------------------------- |
|
|
199
|
-
| `send` | `severity`(必填)、`title`(必填)、`body`、`metadataJson`、`channels` |
|
|
200
|
-
| `list` | `unreadOnly`、`limit`(最多 200 個,預設 20 個) |
|
|
199
|
+
| `send` | `severity`(必填)、`title`(必填)、`body`、`metadataJson`、`channels` | 向使用者的收件箱和註冊頻道傳送通知 |
|
|
200
|
+
| `list` | `unreadOnly`、`limit`(最多 200 個,預設 20 個) | 列出脈絡的最近通知 |
|
|
201
201
|
|
|
202
|
-
自動化(請參閱 [Automations](/docs/automations)
|
|
202
|
+
自動化(請參閱 [Automations](/docs/automations))可以透過其主體中的 `action=send` 呼叫 `manage-notifications` - 這是將外部事件轉變為使用者可見警報的規範模式。
|
|
203
203
|
|
|
204
204
|
## 事件總線 {#event-bus}
|
|
205
205
|
|
|
@@ -220,12 +220,12 @@ export function HeaderBar() {
|
|
|
220
220
|
## 它是如何工作的 {#internals}
|
|
221
221
|
|
|
222
222
|
- **所有者範圍** — 每行都有一個 `owner` 列;每個查詢都會對其進行過濾;每個路由都使用經過驗證的工作階段的電子郵件。使用者永遠不會看到彼此的通知。
|
|
223
|
-
- **輪詢整合** -
|
|
223
|
+
- **輪詢整合** - 每個突變都會呼叫 `recordChange()`,因此使用 [`useDbSync`](/docs/client) 的範本會自動失效,無需任何額外的接線。
|
|
224
224
|
- **盡力扇出** — 捕獲並紀錄通道錯誤;一個失敗的通道不會阻止其他通道或收件箱寫入。
|
|
225
|
-
- **即發即忘** — `notify()`
|
|
225
|
+
- **即發即忘** — `notify()` 在收件箱寫入完成後返回;自訂通道在背景執行。
|
|
226
226
|
|
|
227
|
-
##
|
|
227
|
+
## 下一步是什麼
|
|
228
228
|
|
|
229
|
-
- [**Automations**](/docs/automations) — `notify()`
|
|
230
|
-
- [**Security**](/docs/security) — 為 Webhook
|
|
229
|
+
- [**Automations**](/docs/automations) — `notify()` 最常見的呼叫者
|
|
230
|
+
- [**Security**](/docs/security) — 為 Webhook 通道提供支援的 `${keys.NAME}` 替代
|
|
231
231
|
- [**Server plugins**](/docs/server) — 啟動時註冊自訂通道
|