@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,18 +1,18 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "CLI
|
|
3
|
-
description: "
|
|
2
|
+
title: "CLI 轉接器"
|
|
3
|
+
description: "透過標準轉接器介面(轉接器指南中介紹的兩個轉接器接縫之一)為代理提供對任何 CLI 工具(gh、ffmpeg、stripe)的結構化存取。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# CLI
|
|
6
|
+
# CLI 轉接器
|
|
7
7
|
|
|
8
|
-
> **適合的位置:** CLI
|
|
8
|
+
> **適合的位置:** CLI 轉接器是
|
|
9
9
|
> 框架。規範指南是 [Adapters](/docs/sandbox-adapters),
|
|
10
10
|
> 覆蓋此接縫和 `run-code` 沙箱接縫 - 包括共用
|
|
11
|
-
>
|
|
11
|
+
> 邊緣/無伺服器約束。本頁面是 CLI 端的快速參考。
|
|
12
12
|
|
|
13
|
-
CLI
|
|
13
|
+
CLI 轉接器包裝單一指令行工具(`gh`、`ffmpeg`、`stripe`、`aws`),以便代理可以發現它,檢查它是否已安裝,並使用一致的 stdout/stderr/exit-code 結果執行它。如果沒有這個接縫,每個指令碼都會重新發明如何呼叫 CLI 並解析其輸出。
|
|
14
14
|
|
|
15
|
-
```an-diagram title="CLI
|
|
15
|
+
```an-diagram title="CLI 轉接器 → 註冊表 → 操作面" summary="ShellCliAdapter 包裝二進制檔案; CliRegistry 收集轉接器以供發現; defineAction 在代理 + UI 操作介面上公開一個呼叫。"
|
|
16
16
|
{
|
|
17
17
|
"html": "<div class=\"diagram-cli\"><div class=\"diagram-node\" data-rough>gh · ffmpeg · stripe<br><small class=\"diagram-muted\">command-line tools</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-box\" data-rough>ShellCliAdapter<br><small class=\"diagram-muted\">isAvailable · execute</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-panel center\" data-rough>CliRegistry<br><small class=\"diagram-muted\">describe() for discovery</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-pill accent\">defineAction</div></div>",
|
|
18
18
|
"css": ".diagram-cli{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.diagram-cli .diagram-arrow{font-size:22px;line-height:1}.diagram-cli .center{display:flex;flex-direction:column;align-items:center;gap:4px}"
|
|
@@ -21,7 +21,7 @@ CLI 適配器包裝單個指令行工具(`gh`、`ffmpeg`、`stripe`、`aws`)
|
|
|
21
21
|
|
|
22
22
|
## 介面 {#the-interface}
|
|
23
23
|
|
|
24
|
-
每個 CLI
|
|
24
|
+
每個 CLI 轉接器都實現 `CliAdapter`:
|
|
25
25
|
|
|
26
26
|
```ts
|
|
27
27
|
import type { CliAdapter, CliResult } from "@agent-native/core/adapters/cli";
|
|
@@ -40,7 +40,7 @@ interface CliResult {
|
|
|
40
40
|
}
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
## ShellCli
|
|
43
|
+
## ShellCli轉接器 {#shell-adapter}
|
|
44
44
|
|
|
45
45
|
對於大多數 CLI,您不需要自訂類 - `ShellCliAdapter` 使用合理的預設值包裝任何二進制檔案:
|
|
46
46
|
|
|
@@ -60,13 +60,13 @@ const ffmpeg = new ShellCliAdapter({
|
|
|
60
60
|
});
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
選項:`command`(必填)、`description`(必填)、`name`(預設為 `command`)、`env`(與 `process.env`
|
|
63
|
+
選項:`command`(必填)、`description`(必填)、`name`(預設為 `command`)、`env`(與 `process.env` 合併)、`cwd`(預設為 `process.cwd()`)和 `timeoutMs`(預設) `30000`)。
|
|
64
64
|
|
|
65
65
|
對於自訂驗證、輸出解析或前/後處理,請直接實現 `CliAdapter`,而不是使用 `ShellCliAdapter`。
|
|
66
66
|
|
|
67
67
|
## 註冊表 {#registry}
|
|
68
68
|
|
|
69
|
-
`CliRegistry`
|
|
69
|
+
`CliRegistry` 收集轉接器,以便代理可以發現執行時可用的內容:
|
|
70
70
|
|
|
71
71
|
```ts
|
|
72
72
|
import { CliRegistry, ShellCliAdapter } from "@agent-native/core/adapters/cli";
|
|
@@ -86,7 +86,7 @@ const result = await gh?.execute(["pr", "list", "--json", "title,url"]);
|
|
|
86
86
|
|
|
87
87
|
## 從actions使用 {#from-actions}
|
|
88
88
|
|
|
89
|
-
將 CLI
|
|
89
|
+
將 CLI 呼叫包裝在 `defineAction` 中以將其公開在操作介面上 - 當程式碼在伺服器操作介面內執行時需要 `defineAction`;否則直接在 `scripts/` 檔案中使用轉接器。切勿在動作中呼叫 `process.exit`;相反,會拋出錯誤。
|
|
90
90
|
|
|
91
91
|
```ts
|
|
92
92
|
// actions/list-prs.ts
|
|
@@ -119,11 +119,11 @@ export default defineAction({
|
|
|
119
119
|
});
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
##
|
|
122
|
+
## 邊緣和無伺服器 {#edge-serverless}
|
|
123
123
|
|
|
124
|
-
CLI
|
|
124
|
+
CLI 轉接器使用 `node:child_process`,它在邊緣/工作對話串執行時(Cloudflare Workers、Netlify Edge Functions)上不存在。在標準 Node.js 環境中執行 CLI 轉接器端點和工作。此約束與沙箱接縫共用 - 請參閱 [Adapters](/docs/sandbox-adapters#edge-serverless) 中的完整討論。
|
|
125
125
|
|
|
126
|
-
##
|
|
126
|
+
## 下一步是什麼
|
|
127
127
|
|
|
128
|
-
- [**Adapters**](/docs/sandbox-adapters) —
|
|
129
|
-
- [**Actions**](/docs/actions) — 操作面 CLI
|
|
128
|
+
- [**Adapters**](/docs/sandbox-adapters) — 兩個轉接器接縫的規範指南。
|
|
129
|
+
- [**Actions**](/docs/actions) — 操作面 CLI 轉接器通常被包裹在其中。
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "用戶端"
|
|
3
|
-
description: "
|
|
3
|
+
description: "用於 Agent-Native 應用程式的 React 掛鉤和實用程式:sendToAgentChat、可選代理聊天脈絡狀態、useDbSync、useAgentChatGenerate 和 cn。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 用戶端
|
|
7
7
|
|
|
8
|
-
`@agent-native/core`
|
|
8
|
+
`@agent-native/core` 為 Agent-Native 應用程式的瀏覽器端提供 React 掛鉤和實用程式。
|
|
9
9
|
|
|
10
10
|
這些用戶端/React API 是從 `@agent-native/core` 和 `@agent-native/core/client` 匯出的。為了清晰和正確的捆綁,從 `@agent-native/core/client`(瀏覽器條目)匯入它們,因為預設情況下裸 `@agent-native/core` 根解析為 Node 建置。
|
|
11
11
|
|
|
12
12
|
對於基於檔案的路由 - 新增頁面、動態參數和導覽 - 請參閱 [Routing](/docs/routing)。
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## 取得和修改資料 {#fetching-mutating}
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
從瀏覽器讀取和寫入應用程式資料的主要方式是透過操作掛鉤。切勿手寫 `fetch` 呼叫 `/_agent-native/*` 路由 - 請改用命名助手(請參閱 [Actions](/docs/actions))。
|
|
17
17
|
|
|
18
|
-
```an-diagram title="
|
|
18
|
+
```an-diagram title="瀏覽器資料迴圈" summary="鉤子透過動作進行讀寫; useDbSync 監視資料庫,以便代理和背景寫入自動重新取得相同的快取。"
|
|
19
19
|
{
|
|
20
20
|
"html": "<div class=\"diagram-client\"><div class=\"diagram-col\"><div class=\"diagram-node\">useActionQuery<br><small class=\"diagram-muted\">cached read</small></div><div class=\"diagram-node\">useActionMutation<br><small class=\"diagram-muted\">write + invalidate</small></div></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↔</div><div class=\"diagram-box\" data-rough>Actions<br><small class=\"diagram-muted\">/_agent-native/actions/*</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↔</div><div class=\"diagram-panel\" data-rough><strong>SQL 資料庫</strong></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↻</div><div class=\"diagram-pill ok\">useDbSync → refetch on change</div></div>",
|
|
21
21
|
"css": ".diagram-client{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.diagram-client .diagram-col{display:flex;flex-direction:column;gap:10px}.diagram-client .diagram-arrow{font-size:22px;line-height:1}"
|
|
@@ -42,7 +42,7 @@ await callAction("archive-lead", { leadId });
|
|
|
42
42
|
|
|
43
43
|
## sendToAgentChat(選取) {#sendtoagentchat}
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
透過 postMessage 向代理聊天傳送訊息——這是從 UI 互動中委派 AI 工作的常用方法。傳遞 `context` 來隱藏模型脈絡,傳遞 `submit: true` 來立即傳送,或者傳遞 `submit: false` 來預先填寫使用者首先審閱的草稿。
|
|
46
46
|
|
|
47
47
|
```ts
|
|
48
48
|
import { sendToAgentChat } from "@agent-native/core/client";
|
|
@@ -63,20 +63,20 @@ sendToAgentChat({
|
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
在使用 `embedApp()` 建立的 MCP 應用嵌入中,自動提交訊息
|
|
66
|
-
(`submit`省略或`true`)被轉發到MCP應用程式主橋,這
|
|
67
|
-
|
|
66
|
+
(`submit`省略或`true`)被轉發到 MCP 應用程式主橋,這
|
|
67
|
+
要求包含主機新增隱藏脈絡並傳送可見使用者回合。
|
|
68
68
|
`context` 保持模型可見,而不發布為面向使用者的聊天。
|
|
69
69
|
`submit: false` 保留本機預填充/審核行為,因為 MCP 應用不會
|
|
70
70
|
定義標準草稿預填充 API。在內部,這是提交的聊天路徑
|
|
71
|
-
有時會以 `agentNative.submitChat`
|
|
71
|
+
有時會以 `agentNative.submitChat` 的形式出現;應用程式碼應該呼叫
|
|
72
72
|
`sendToAgentChat()` 而不是直接發布該事件。
|
|
73
73
|
|
|
74
|
-
###
|
|
74
|
+
### 背景靜默傳送 {#background-send}
|
|
75
75
|
|
|
76
76
|
當 UI 操作應該啟動真正的代理工作時,請使用 `background: true`
|
|
77
|
-
|
|
78
|
-
使用代理的工具/actions/context
|
|
79
|
-
|
|
77
|
+
開啟或聚焦側邊欄。這仍然會建立一個正常的聊天對話串/執行,
|
|
78
|
+
使用代理的工具/actions/context,並透過以下方式保持工作可觀察
|
|
79
|
+
執行托盤;它不是原始的一次性模型呼叫。
|
|
80
80
|
|
|
81
81
|
```ts
|
|
82
82
|
const tabId = sendToAgentChat({
|
|
@@ -97,35 +97,35 @@ overwrite the user's active conversation. Use the returned `tabId` if the UI
|
|
|
97
97
|
|
|
98
98
|
| 選項 | 型別 | 描述 |
|
|
99
99
|
| --------------------- | ----------- | ----------------------------------------------------------------- |
|
|
100
|
-
| `message` | `string` |
|
|
101
|
-
| `context` | `string?` |
|
|
100
|
+
| `message` | `string` | 傳送到聊天的可見提示 |
|
|
101
|
+
| `context` | `string?` | 附加隱藏脈絡(聊天 UI 中未顯示) |
|
|
102
102
|
| `submit` | `boolean?` | true = 自動提交,false = 僅預填充 |
|
|
103
|
-
| `newTab` | `boolean?` |
|
|
103
|
+
| `newTab` | `boolean?` | 為此提示建立單獨的聊天對話串 |
|
|
104
104
|
| `background` | `boolean?` | 使用 `newTab`,在不聚焦分頁的情況下執行並在 `RunsTray` 中顯示執行 |
|
|
105
105
|
| `openSidebar` | `boolean?` | 設定 false 來提交/預填充而不開啟側邊欄 |
|
|
106
|
-
| `projectSlug` | `string?` |
|
|
106
|
+
| `projectSlug` | `string?` | 結構化脈絡的可選專案段 |
|
|
107
107
|
| `preset` | `string?` | 下游消費者的可選預設名稱 |
|
|
108
108
|
| `referenceImagePaths` | `string[]?` | 可選的參考圖片路徑 |
|
|
109
109
|
|
|
110
|
-
##
|
|
110
|
+
## 代理聊天脈絡狀態(進階) {#agent-chat-context-state}
|
|
111
111
|
|
|
112
|
-
|
|
113
|
-
|
|
112
|
+
脈絡狀態 API 是 UI 的可選管道,需要雙向同步
|
|
113
|
+
暫存脈絡標籤:在編輯器之外渲染目前暫存專案,
|
|
114
114
|
反映某個專案是否已附加,或提供明確的
|
|
115
|
-
|
|
115
|
+
刪除/清除控制項。
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
不要為了簡單的“將其傳送給代理”而聯絡這些助手,或者
|
|
118
118
|
“預填寫此草稿以供審核”流程。將 `sendToAgentChat()` 與 `context` 結合使用
|
|
119
119
|
還有 `submit`。
|
|
120
120
|
|
|
121
|
-
| API | 何時使用
|
|
122
|
-
| --------------------------------- |
|
|
123
|
-
| `useAgentChatContext()` | React
|
|
124
|
-
| `setAgentChatContextItem(item)` |
|
|
125
|
-
| `listAgentChatContext()` | 非 React
|
|
126
|
-
| `removeAgentChatContextItem(key)` | UI
|
|
127
|
-
| `clearAgentChatContext()` | UI
|
|
128
|
-
| `refreshAgentChatContext()` |
|
|
121
|
+
| API | 何時使用 |
|
|
122
|
+
| --------------------------------- | --------------------------------------------- |
|
|
123
|
+
| `useAgentChatContext()` | React 元件需要即時暫存脈絡清單 |
|
|
124
|
+
| `setAgentChatContextItem(item)` | 指令式程式碼應暫存或替換一個鍵控脈絡項 |
|
|
125
|
+
| `listAgentChatContext()` | 非 React 程式碼需要暫存脈絡的一次性快照 |
|
|
126
|
+
| `removeAgentChatContextItem(key)` | UI 應透過其穩定的 `key` 刪除一個暫存脈絡項 |
|
|
127
|
+
| `clearAgentChatContext()` | UI 應清除所有暫存脈絡,例如在檢視或模式重設後 |
|
|
128
|
+
| `refreshAgentChatContext()` | 指令程式碼應該重新讀取最新的持久脈絡快照 |
|
|
129
129
|
|
|
130
130
|
`useAgentChatContext()` 返回 `{ items, set, remove, clear, refresh }`。
|
|
131
131
|
|
|
@@ -181,22 +181,22 @@ function SelectionContextButton({ record }: { record: { id: string } }) {
|
|
|
181
181
|
|
|
182
182
|
### AgentChatContextSetOptions {#agentchatcontextsetoptions}
|
|
183
183
|
|
|
184
|
-
| 選項 | 型別 | 描述
|
|
185
|
-
| ------------- | ---------- |
|
|
186
|
-
| `key` | `string` |
|
|
187
|
-
| `title` | `string` |
|
|
188
|
-
| `context` | `string` |
|
|
189
|
-
| `openSidebar` | `boolean?` | 預設為true;靜默地將 false
|
|
184
|
+
| 選項 | 型別 | 描述 |
|
|
185
|
+
| ------------- | ---------- | ----------------------------------------- |
|
|
186
|
+
| `key` | `string` | 用於替換現有塊的穩定識別碼 |
|
|
187
|
+
| `title` | `string` | 撰寫器標籤中顯示的短標籤 |
|
|
188
|
+
| `context` | `string` | 下一個提交的提示中包含隱藏脈絡 |
|
|
189
|
+
| `openSidebar` | `boolean?` | 預設為true;靜默地將 false 傳遞給舞台脈絡 |
|
|
190
190
|
|
|
191
191
|
## 詢問使用者問題(選取) {#ask-user-question}
|
|
192
192
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
193
|
+
透過應用程式碼向使用者提出多項選取問題,並將其行內呈現
|
|
194
|
+
代理小組,並**等待他們的答覆**。它是用戶端的孿生
|
|
195
|
+
代理的內建`ask-question`工具:它將`GuidedQuestionPayload`寫入
|
|
196
196
|
`"guided-questions"` 應用程式狀態金鑰(已安裝的位置
|
|
197
197
|
`GuidedQuestionFlow` 渲染它)並顯示代理面板,所以問題是
|
|
198
198
|
可見。與代理工具不同——其答案會返回給代理——
|
|
199
|
-
`askUserQuestion()`
|
|
199
|
+
`askUserQuestion()` **解析呼叫者的答案**,因此 UI 可以
|
|
200
200
|
在上面分支。
|
|
201
201
|
|
|
202
202
|
當 UI 之前需要做出一個小決定(2-4 個選項)時使用它
|
|
@@ -226,20 +226,20 @@ if (length) {
|
|
|
226
226
|
每個選項都是`{ label, value?, description?, preview?, recommended? }`; `value`
|
|
227
227
|
預設為`label`,`preview`在
|
|
228
228
|
選項。承諾以選定的 `value`(或 `value[]` 時)解析
|
|
229
|
-
`allowMultiple`)
|
|
229
|
+
`allowMultiple`),使用者選取“其他”時的自由文字字串,或 `null`
|
|
230
230
|
如果他們跳過——它將保持待定狀態,直到使用者回答。需要代理面板
|
|
231
231
|
要安裝(每個範本中都有)。
|
|
232
232
|
|
|
233
|
-
|
|
234
|
-
當 _it_
|
|
233
|
+
代理透過其 `ask-question` 工具到達相同的 UI:更願意讓
|
|
234
|
+
當 _it_ 遇到一個無法從脈絡解析的真正分叉時,代理會詢問;使用
|
|
235
235
|
`askUserQuestion()`,當 _UI_ 需要對選取進行操作時。
|
|
236
236
|
|
|
237
|
-
## MCP應用程式主橋 {#mcp-app-host-bridge}
|
|
237
|
+
## MCP 應用程式主橋 {#mcp-app-host-bridge}
|
|
238
238
|
|
|
239
239
|
作為 MCP 應用嵌入的路由應該是 URL-first:載入目前工件
|
|
240
|
-
路徑/查詢參數,渲染真實的React路由或聚焦的共用元件,
|
|
240
|
+
路徑/查詢參數,渲染真實的 React 路由或聚焦的共用元件,
|
|
241
241
|
並且僅將主機橋用於主機擁有的行為。 `@agent-native/core/client`
|
|
242
|
-
|
|
242
|
+
匯出助手嵌入的路由呼叫:
|
|
243
243
|
|
|
244
244
|
```ts
|
|
245
245
|
import {
|
|
@@ -251,7 +251,7 @@ import {
|
|
|
251
251
|
} from "@agent-native/core/client";
|
|
252
252
|
```
|
|
253
253
|
|
|
254
|
-
`getMcpAppHostContext()
|
|
254
|
+
`getMcpAppHostContext()`讀取最新推送的主機脈絡快照;
|
|
255
255
|
`useMcpAppHostContext()` 訂閱 React 元件的更改。請求
|
|
256
256
|
助手(`openMcpAppHostLink`、`requestMcpAppDisplayMode`,
|
|
257
257
|
`updateMcpAppModelContext`) 在嵌入式 MCP 應用框架之外返回 `false`,或
|
|
@@ -259,13 +259,13 @@ import {
|
|
|
259
259
|
從嵌入式路由自動提交提示。
|
|
260
260
|
|
|
261
261
|
橋本身 - `ui/*` JSON-RPC 訊息、`agentNative.mcpHost.*`
|
|
262
|
-
|
|
262
|
+
包裝器中繼、移植與受控幀渲染、主機脈絡以及
|
|
263
263
|
顯示模式請求 — 屬於
|
|
264
264
|
[External Agents](/docs/external-agents#mcp-app-bridge).
|
|
265
265
|
|
|
266
266
|
## 動態建議 {#dynamic-suggestions}
|
|
267
267
|
|
|
268
|
-
`<AgentSidebar>`、`<AgentPanel>` 和 `<AssistantChat>` 預設將靜態 `suggestions`
|
|
268
|
+
`<AgentSidebar>`、`<AgentPanel>` 和 `<AssistantChat>` 預設將靜態 `suggestions` 與脈絡感知建議合併。當可見空聊天時,框架從應用程式狀態中讀取 `navigation`、`selection`、`pending-selection-context` 和目前 URL,然後提供與目前螢幕匹配的提示標籤。
|
|
269
269
|
|
|
270
270
|
```tsx
|
|
271
271
|
<AgentSidebar
|
|
@@ -276,11 +276,11 @@ import {
|
|
|
276
276
|
</AgentSidebar>
|
|
277
277
|
```
|
|
278
278
|
|
|
279
|
-
設定 `dynamicSuggestions={false}`
|
|
279
|
+
設定 `dynamicSuggestions={false}` 僅保留靜態標籤。當應用程式需要來自同一應用程式狀態脈絡的確定性特定於域的標籤時,傳遞 `getSuggestions`。
|
|
280
280
|
|
|
281
281
|
## useAgentChatGenerate() {#useagentchatgenerating}
|
|
282
282
|
|
|
283
|
-
React
|
|
283
|
+
React 鉤子,透過載入狀態跟蹤包裝 sendToAgentChat:
|
|
284
284
|
|
|
285
285
|
```ts
|
|
286
286
|
import { useAgentChatGenerating } from "@agent-native/core/client";
|
|
@@ -303,11 +303,11 @@ function GenerateButton() {
|
|
|
303
303
|
}
|
|
304
304
|
```
|
|
305
305
|
|
|
306
|
-
|
|
306
|
+
當您呼叫 `send()` 時,`isGenerating` 變為 true,並在代理完成生成時自動重設為 false。
|
|
307
307
|
|
|
308
308
|
## useDbSync(選項?) {#usedbsync}
|
|
309
309
|
|
|
310
|
-
React 掛鉤(以前稱為 `useFileWatcher
|
|
310
|
+
React 掛鉤(以前稱為 `useFileWatcher`),用於偵聽 SSE 上的資料庫更改,回退到輪詢,並使保持 UI 與代理寫入保持一致的框架查詢快取無效:
|
|
311
311
|
|
|
312
312
|
```ts
|
|
313
313
|
import { useDbSync } from "@agent-native/core/client";
|
|
@@ -331,22 +331,22 @@ function App() {
|
|
|
331
331
|
| 選項 | 型別 | 描述 |
|
|
332
332
|
| ------------------ | ------------------ | -------------------------------------------------------------------------------------- |
|
|
333
333
|
| `queryClient` | `QueryClient?` | React-查詢用戶端快取失效 |
|
|
334
|
-
| `queryKeys` | `string[]?` |
|
|
334
|
+
| `queryKeys` | `string[]?` | 已棄用並被忽略;為舊的呼叫站點保留 |
|
|
335
335
|
| `pollUrl` | `string?` | 輪詢端點 URL。預設值:`"/_agent-native/poll"` |
|
|
336
336
|
| `sseUrl` | `string \| false?` | SSE endpoint URL. Default: `"/_agent-native/events"`; pass `false` to use polling only |
|
|
337
337
|
| `interval` | `number?` | 輪詢間隔(以毫秒為單位)。預設值:`2000` |
|
|
338
338
|
| `fallbackInterval` | `number?` | SSE 不可用時的回退輪詢間隔。預設值:`15000` |
|
|
339
339
|
| `pauseWhenHidden` | `boolean?` | 當瀏覽器分頁隱藏時暫停輪詢。預設值:`true` |
|
|
340
|
-
| `ignoreSource` | `string?` |
|
|
340
|
+
| `ignoreSource` | `string?` | 要忽略的每個分頁請求來源,以便分頁不會從其自己的寫入中重新取得 |
|
|
341
341
|
| `onEvent` | `(data) => void` | SSE/polling 收到更改事件時的可選回調 |
|
|
342
342
|
|
|
343
|
-
對於普通CRUD,優先選取`useActionQuery`和`useActionMutation`;變異 actions 會發出 `source: "action"`
|
|
343
|
+
對於普通CRUD,優先選取`useActionQuery`和`useActionMutation`;變異 actions 會發出 `source: "action"` 並且這些鉤子會自動重新取得。
|
|
344
344
|
|
|
345
345
|
## useChangeVersion / useChangeVersions {#use-change-version}
|
|
346
346
|
|
|
347
|
-
框架使用更改版本將 React
|
|
347
|
+
框架使用更改版本將 React 查詢快取與背景代理、cron 作業或其他使用者所做的更改同步。
|
|
348
348
|
|
|
349
|
-
當任何伺服器端資料庫發生突變時,伺服器都會使用特定的 `source` 金鑰紀錄更改事件。用戶端的 `useDbSync`
|
|
349
|
+
當任何伺服器端資料庫發生突變時,伺服器都會使用特定的 `source` 金鑰紀錄更改事件。用戶端的 `useDbSync` 偵聽器接收這些事件並增加該來源的本機更改版本計數器。透過將版本計數器折疊到 React 查詢鍵中,每當後端通知用戶端新活動時,查詢就會自動重新取得。
|
|
350
350
|
|
|
351
351
|
- **`useChangeVersion(source: string): number`** — 返回一個計數器,每當指定的 `source` 發生突變時該計數器就會遞增。
|
|
352
352
|
- **`useChangeVersions(sources: readonly string[]): number`** — 返回多個來源的版本計數器之和。
|
|
@@ -373,10 +373,10 @@ function DashboardView({ id }) {
|
|
|
373
373
|
|
|
374
374
|
### 延遲模型和失效行為
|
|
375
375
|
|
|
376
|
-
- **UI-發起的突變:**當您使用 `useActionMutation` 從 UI 執行操作時,突變會在成功時立即觸發 `source: "action"`
|
|
377
|
-
-
|
|
376
|
+
- **UI-發起的突變:**當您使用 `useActionMutation` 從 UI 執行操作時,突變會在成功時立即觸發 `source: "action"` 本機事件。這會根據該操作觸發所有查詢鍵的**即時、樂觀的重新取得**,從而避免視覺延遲。
|
|
377
|
+
- **背景或代理突變:** 當 AI 代理、Webhook 或背景工作人員突變資料時,更新會廣播到用戶端。用戶端的 `useDbSync` 可以立即透過 SSE(伺服器傳送的事件)捕獲此資訊,也可以回退到 **2 秒輪詢滴答**。然後查詢金鑰版本會發生變化,從而觸發背景重新取得。
|
|
378
378
|
|
|
379
|
-
```an-diagram title="
|
|
379
|
+
```an-diagram title="重新取得的兩條路徑" summary="本機突變會立即使自己的快取失效;遠端寫入透過 SSE 到達此分頁,或作為後備的輪詢標記。"
|
|
380
380
|
{
|
|
381
381
|
"html": "<div class=\"diagram-latency\"><div class=\"diagram-col\"><div class=\"diagram-card\" data-rough><span class=\"diagram-pill ok\">此標籤頁面</span><strong>useActionMutation</strong><small class=\"diagram-muted\">fires source: \"action\" on success → instant local refetch</small></div><div class=\"diagram-card\" data-rough><span class=\"diagram-pill accent\">代理 · webhook · 其他標籤頁面</span><strong>遠端寫入</strong><small class=\"diagram-muted\">SSE push, or the ~2s polling tick as fallback → version bumps → background refetch</small></div></div></div>",
|
|
382
382
|
"css": ".diagram-latency .diagram-col{display:flex;flex-direction:column;gap:12px}.diagram-latency .diagram-card{display:flex;flex-direction:column;gap:4px;padding:14px 16px}"
|
|
@@ -385,7 +385,7 @@ function DashboardView({ id }) {
|
|
|
385
385
|
|
|
386
386
|
## cn(...輸入) {#cn}
|
|
387
387
|
|
|
388
|
-
|
|
388
|
+
合併類名的實用程式(clsx + tailwind-merge):
|
|
389
389
|
|
|
390
390
|
```ts
|
|
391
391
|
import { cn } from "@agent-native/core/client";
|
|
@@ -5,30 +5,30 @@ description: "分叉一個可用的 SaaS 產品並使其成為您的產品 - 包
|
|
|
5
5
|
|
|
6
6
|
# 範本
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
想要發布您自己的人工智慧分析工具嗎?郵件用戶端?表格生成器?選取一個範本,您只需幾分鐘即可獲得一個可執行的 SaaS — 代理、資料庫、驗證和部署管道已連線完畢。
|
|
9
9
|
|
|
10
|
-
大多數“範本”都會為您提供一個空白的腳手架和一個很長的 TODO
|
|
10
|
+
大多數“範本”都會為您提供一個空白的腳手架和一個很長的 TODO 清單。Agent-Native 翻轉了這一點。每一個都是**完整的 SaaS 級產品** - 在第一天就已經可以執行,已經可以發貨,並且完全由您來定制、品牌化和部署。將它們視為可克隆的 SaaS,而不是入門工具包:您正在分叉成品,而不是盯著樣板檔案。
|
|
11
11
|
|
|
12
12
|
## 可用範本 {#catalog}
|
|
13
13
|
|
|
14
14
|
每一個都是您今天可以使用的真實應用程式,以及您自己版本的啟動板。
|
|
15
15
|
|
|
16
|
-
| 範本 |
|
|
17
|
-
| ----------------------------------------- |
|
|
18
|
-
| [**Chat**](/docs/template-chat) |
|
|
19
|
-
| [**Mail**](/docs/template-mail) |
|
|
20
|
-
| [**Calendar**](/docs/template-calendar) | 本機代理 Google Calendar。活動、同步、公開預訂連結、代理驅動的調度。
|
|
21
|
-
| [**Content**](/docs/template-content) | MDX
|
|
22
|
-
| [**Brain**](/docs/template-brain) |
|
|
23
|
-
| [**Assets**](/docs/template-assets) |
|
|
24
|
-
| [**Slides**](/docs/template-slides) |
|
|
25
|
-
| [**Video**](/docs/template-videos) | Remotion
|
|
26
|
-
| [**Analytics**](/docs/template-analytics) |
|
|
27
|
-
| [**Clips**](/docs/template-clips) |
|
|
28
|
-
| [**Design**](/docs/template-design) | Agent 原生 HTML 原型工作室,用於互動式 Alpine/Tailwind 設計。
|
|
29
|
-
| [**Forms**](/docs/template-forms) |
|
|
30
|
-
| [**Plan**](/docs/template-plan) |
|
|
31
|
-
| [**Dispatch**](/docs/template-dispatch) | 工作區控制平面:共用秘密、可重用整合、Slack/Telegram、計畫作業。
|
|
16
|
+
| 範本 | 它是什麼 |
|
|
17
|
+
| ----------------------------------------- | ----------------------------------------------------------------------------------------------- |
|
|
18
|
+
| [**Chat**](/docs/template-chat) | 最小的聊天優先應用程式,具有持久對話串、actions、驗證以及通往自訂 UI 或您自己的後端的幹淨路徑。 |
|
|
19
|
+
| [**Mail**](/docs/template-mail) | Agent-Native 超人。收件箱、標籤、人工智慧分類、鍵盤優先、透過代理起草和傳送。 |
|
|
20
|
+
| [**Calendar**](/docs/template-calendar) | 本機代理 Google Calendar。活動、同步、公開預訂連結、代理驅動的調度。 |
|
|
21
|
+
| [**Content**](/docs/template-content) | MDX 的開放原始碼黑曜石。本機 Markdown/MDX、Tiptap 編輯器、Notion 同步、即時多使用者協作。 |
|
|
22
|
+
| [**Brain**](/docs/template-brain) | 幹淨的公司聊天由引用的機構記憶、核准的來源、審查門和引文支援。 |
|
|
23
|
+
| [**Assets**](/docs/template-assets) | 用於品牌庫、上傳、參考和品牌圖片/影片產生的數位資產管理器。 |
|
|
24
|
+
| [**Slides**](/docs/template-slides) | Agent-Native Google 幻燈片。基於 React 的簡報由代理直接生成和編輯。 |
|
|
25
|
+
| [**Video**](/docs/template-videos) | Remotion 上的程式化動態圖形和產品示範影片。 |
|
|
26
|
+
| [**Analytics**](/docs/template-analytics) | Agent-Native 振幅/混合面板。連線資料來源、提示圖表、固定到儀表板。 |
|
|
27
|
+
| [**Clips**](/docs/template-clips) | 非同步螢幕+攝影機錄製,包含轉錄、章節和 AI 摘要。 |
|
|
28
|
+
| [**Design**](/docs/template-design) | Agent 原生 HTML 原型工作室,用於互動式 Alpine/Tailwind 設計。 |
|
|
29
|
+
| [**Forms**](/docs/template-forms) | Agent-Native Typeform。建置、共用、收集提交內容並將其路由到 Slack、表格、webhooks 或 Discord。 |
|
|
30
|
+
| [**Plan**](/docs/template-plan) | 帶有圖表、線框圖和註解的視覺計畫和 PR 概述。 |
|
|
31
|
+
| [**Dispatch**](/docs/template-dispatch) | 工作區控制平面:共用秘密、可重用整合、Slack/Telegram、計畫作業。 |
|
|
32
32
|
|
|
33
33
|
不需要域範本?當您想要一個使用者可以立即交談的基本應用程式時,請使用 [Chat](/docs/template-chat),或者使用 [Pure-Agent Apps](/docs/pure-agent-apps) 首先開始操作。
|
|
34
34
|
|
|
@@ -38,20 +38,20 @@ description: "分叉一個可用的 SaaS 產品並使其成為您的產品 - 包
|
|
|
38
38
|
|
|
39
39
|
每個範本都附帶通常需要數月才能建置的部件:
|
|
40
40
|
|
|
41
|
-
- **工作代理** —
|
|
41
|
+
- **工作代理** — 已經連線到應用程式,已經能夠在您的資料上取得 actions,已經能夠了解您正在檢視的內容。請參閱 [Messaging the agent](/docs/messaging) 了解其工作原理。
|
|
42
42
|
- **Auth** — 登入、工作階段、組織、多租戶隔離。已經完成了。
|
|
43
43
|
- **資料庫** — 每個範本都有其架構、查詢和遷移準備就緒。帶上您自己的 SQL 資料庫(Postgres、SQLite、Turso、D1)——框架會進行調整。
|
|
44
|
-
-
|
|
44
|
+
- **即時 UI** — 螢幕與代理的操作保持同步。在聊天中點選“草稿電子郵件”,草稿立即出現在您的收件箱中。
|
|
45
45
|
- **部署就緒** — 推送到 Netlify、Vercel、Cloudflare、AWS 或執行 Node.js 的任何其他地方。沒有供應商鎖定。
|
|
46
46
|
- **品牌掛鉤** - 名稱、顏色、徽標、文案都很容易更改。
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
這不是理論上的主張。此框架的作者在郵件範本上執行他的實際收件箱,在行事曆範本上執行他的實際行事曆,在分析範本上執行他的實際分析。範本是日常驅動軟體。
|
|
49
49
|
|
|
50
|
-
##
|
|
50
|
+
## 你做什麼 {#what-you-do}
|
|
51
51
|
|
|
52
52
|
從“我想要自己的 SaaS”到“我擁有自己的 SaaS”的路徑很短:
|
|
53
53
|
|
|
54
|
-
```an-diagram title="分叉並定制" summary="
|
|
54
|
+
```an-diagram title="分叉並定制" summary="選取一個成品,對其進行品牌化,用簡單的英語對其進行改進,然後將其傳送到您自己的域。"
|
|
55
55
|
{
|
|
56
56
|
"html": "<div class=\"diagram-fork\"><div class=\"diagram-card\"><span class=\"diagram-pill\">1</span><strong>Pick</strong><small class=\"diagram-muted\">a complete template</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-card\"><span class=\"diagram-pill\">2</span><strong>Brand</strong><small class=\"diagram-muted\">名稱、顏色、Logo、文案</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-card\"><span class=\"diagram-pill accent\">3</span><strong>Customize</strong><small class=\"diagram-muted\">ask the agent ↻</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-card\"><span class=\"diagram-pill ok\">4</span><strong>Ship</strong><small class=\"diagram-muted\">your own domain</small></div></div>",
|
|
57
57
|
"css": ".diagram-fork{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.diagram-fork .diagram-card{display:flex;flex-direction:column;gap:6px;padding:14px 16px;min-width:130px}.diagram-fork .diagram-arrow{font-size:22px;line-height:1}"
|
|
@@ -59,22 +59,22 @@ description: "分叉一個可用的 SaaS 產品並使其成為您的產品 - 包
|
|
|
59
59
|
```
|
|
60
60
|
|
|
61
61
|
1. **選取一個範本。**使用 CLI 選取器,或瀏覽檔案並選取一個開始。
|
|
62
|
-
2.
|
|
63
|
-
3. **自訂它。** 要求代理新增您需要的列,更改收件箱分組的方式,連線到您的內部 API
|
|
62
|
+
2. **打造品牌。**更改名稱、顏色、徽標和文案。大多數範本都將其公開在單一設定檔案中。
|
|
63
|
+
3. **自訂它。** 要求代理新增您需要的列,更改收件箱分組的方式,連線到您的內部 API,新增新檢視。代理編輯程式碼;您檢視差異。
|
|
64
64
|
4. **發貨。**執行部署指令。您現在在自己的域中擁有自己的正式環境 SaaS。
|
|
65
65
|
|
|
66
|
-
步驟 2-4 通常需要幾天而不是幾個月的時間。第 3 步是開放式的 -
|
|
66
|
+
步驟 2-4 通常需要幾天而不是幾個月的時間。第 3 步是開放式的 - 透過與代理交談,用簡單的英語來說,您的分叉 SaaS 會隨著時間的推移而發展。
|
|
67
67
|
|
|
68
|
-
##
|
|
68
|
+
## 為什麼這是實用的 {#why}
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
傳統的程式碼庫分叉模型會大規模當機:每個使用者維護自己的收件箱聽起來像是一場維護噩夢。兩個框架決策使其發揮作用:
|
|
71
71
|
|
|
72
72
|
1. **代理進行維護。**您無需編寫程式碼來新增列或連線新的整合 - 您可以詢問代理。所以“你自己的分叉收件箱”是一個功能,而不是一個負擔。
|
|
73
|
-
2. **每使用者自訂,無需每使用者程式碼。** Skills
|
|
73
|
+
2. **每使用者自訂,無需每使用者程式碼。** Skills、記憶、指令、連線的 MCP 伺服器和子代理都位於 SQL 中。每個使用者都有自己的定制層;共用程式碼庫同時託管所有這些內容。
|
|
74
74
|
|
|
75
75
|
結果:Claude - 每個使用者的程式碼級靈活性,以及正常的 SaaS 部署經濟性。
|
|
76
76
|
|
|
77
|
-
```an-diagram title="
|
|
77
|
+
```an-diagram title="為什麼每使用者分叉規模" summary="有兩個想法使分叉和定制模型保持實用:代理進行維護,每個使用者的定制位於 SQL 中,而不是每個使用者的程式碼中。"
|
|
78
78
|
{
|
|
79
79
|
"html": "<div class=\"diagram-why\"><div class=\"diagram-panel\" data-rough><strong>分享d codebase</strong><small class=\"diagram-muted\">一個應用,一次部署</small><div class=\"diagram-pill accent\">agent does the maintenance</div></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↔</div><div class=\"diagram-panel\" data-rough><strong>SQL 中的使用者層</strong><small class=\"diagram-muted\">skills · 記憶 · 指令 · MCP · 子代理</small><div class=\"diagram-pill ok\">no per-user code</div></div></div>",
|
|
80
80
|
"css": ".diagram-why{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.diagram-why .diagram-panel{display:flex;flex-direction:column;gap:8px;padding:14px 18px;min-width:240px;flex:1}.diagram-why .diagram-arrow{font-size:24px;line-height:1}"
|
|
@@ -87,7 +87,7 @@ description: "分叉一個可用的 SaaS 產品並使其成為您的產品 - 包
|
|
|
87
87
|
|
|
88
88
|
## 嘗試一下技巧 {#try-with-a-skill}
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
還沒有準備好搭建腳手架嗎?您可以使用單一指令將 Agent-Native 超級功能新增到已使用的編碼代理中 - 無需應用程式。請參閱 [Skills Guide](/docs/skills-guide#app-backed-skills)。
|
|
91
91
|
|
|
92
92
|
## 在此基礎上建置
|
|
93
93
|
|
|
@@ -109,6 +109,6 @@ npx @agent-native/core@latest create my-platform
|
|
|
109
109
|
|
|
110
110
|
填寫`.env`(主要是`ANTHROPIC_API_KEY`和`DATABASE_URL`)、`pnpm install`、`pnpm dev`,就可以了。沒有“TODO:實現登入”,沒有預留位置路由。
|
|
111
111
|
|
|
112
|
-
部署目標:任何 Nitro
|
|
112
|
+
部署目標:任何 Nitro 相容主機(Node、Cloudflare、Netlify、Vercel、Deno、Lambda、Bun)和任何 Drizzle 相容 SQL 資料庫(SQLite、Postgres、Turso、D1、Supabase、Neon)。對於工作區,`npx @agent-native/core@latest deploy` 一次建置每個應用程式並將它們傳送到單一來源。參見[Deployment](/docs/deployment)。
|
|
113
113
|
|
|
114
114
|
要創作和發布您自己的範本,請參閱 [Creating Templates](/docs/creating-templates)。
|