@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,19 +1,19 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "嵌入SDK"
|
|
3
|
-
description: "
|
|
2
|
+
title: "嵌入 SDK"
|
|
3
|
+
description: "使用頁面脈絡和主機指令將 Agent-Native sidecar 嵌入到現有 SaaS 應用中。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# 嵌入SDK
|
|
6
|
+
# 嵌入 SDK
|
|
7
7
|
|
|
8
8
|
將 Agent-Native 嵌入現有產品:保留您的 SaaS 應用程式,新增耐用的
|
|
9
9
|
代理sidecar,讓該代理檢視使用者所在頁面並進行操作
|
|
10
|
-
|
|
10
|
+
已在使用。如果您仍在無頭代理、豐富聊天和
|
|
11
11
|
嵌入式邊車,或完整的應用程式,從
|
|
12
12
|
[Agent Surfaces](/docs/agent-surfaces).
|
|
13
13
|
|
|
14
|
-
```an-diagram title="包埋膜" summary="
|
|
14
|
+
```an-diagram title="包埋膜" summary="主機應用程式提供伺服器端驗證和即時頁面脈絡; Agent-Native 執行持久 sidecar 並透過用戶端操作和主機指令到達開啟的分頁。"
|
|
15
15
|
{
|
|
16
|
-
"html": "<div class=\"diagram-embed\"><div class=\"diagram-box\" data-rough><strong
|
|
16
|
+
"html": "<div class=\"diagram-embed\"><div class=\"diagram-box\" data-rough><strong>主機 SaaS 應用</strong><small class=\"diagram-muted\">你的介面,你的認證</small></div><div class=\"diagram-col\"><div class=\"diagram-pill accent\">getContext →</div><div class=\"diagram-pill\">← 用戶端操作</div><div class=\"diagram-pill\">← 主機指令</div></div><div class=\"diagram-panel center\" data-rough><strong>Agent-Native sidecar</strong><small class=\"diagram-muted\">持久聊天 · 應用狀態 · 擴充功能</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-box\" data-rough>SQL<br><small class=\"diagram-muted\">框架表</small></div></div>",
|
|
17
17
|
"css": ".diagram-embed{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.diagram-embed .diagram-col{display:flex;flex-direction:column;gap:8px}.diagram-embed .diagram-arrow{font-size:22px;line-height:1}.diagram-embed .center{display:flex;flex-direction:column;align-items:center;gap:4px}"
|
|
18
18
|
}
|
|
19
19
|
```
|
|
@@ -23,15 +23,15 @@ description: "使用頁面上下文和主機指令將 Agent-Native sidecar 嵌
|
|
|
23
23
|
對於大多數 SaaS 主機,**使用完整的嵌入式執行時** - 伺服器外掛
|
|
24
24
|
`createAgentNativeEmbeddedPlugin` 加上 `<AgentNativeEmbedded>` 用戶端
|
|
25
25
|
元件。這是推薦的預設值:它重用整個框架
|
|
26
|
-
(actions、SQL
|
|
26
|
+
(actions、SQL 支援的應用程式狀態、擴充功能、瀏覽器工作階段工具)並給出
|
|
27
27
|
代理檢視使用者正在使用的頁面並進行操作的能力。
|
|
28
28
|
|
|
29
29
|
主機將 Agent-Native 伺服器路由掛載到其現有應用程式中,傳遞其
|
|
30
|
-
使用者登入Agent-Native,並在產品UI中渲染React側邊欄。
|
|
30
|
+
使用者登入 Agent-Native,並在產品 UI 中渲染 React 側邊欄。
|
|
31
31
|
Agent-Native 使用主機部署、主機工作階段和設定
|
|
32
|
-
`DATABASE_URL`
|
|
32
|
+
`DATABASE_URL` 管理自己的框架表:聊天對話串、設定,
|
|
33
33
|
應用程式狀態、擴充功能、擴充功能資料、機密、瀏覽器工作階段和
|
|
34
|
-
|
|
34
|
+
行動路由。
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
37
|
pnpm add @agent-native/core
|
|
@@ -121,13 +121,13 @@ export function BuilderAppShell({ children, content, editor }) {
|
|
|
121
121
|
}
|
|
122
122
|
```
|
|
123
123
|
|
|
124
|
-
此模式是建議的預設模式,因為它重用了完整的框架:後端 actions 安裝在 `/_agent-native/actions`
|
|
124
|
+
此模式是建議的預設模式,因為它重用了完整的框架:後端 actions 安裝在 `/_agent-native/actions` 下,代理可以呼叫與 UI 相同的 actions,使用者建立的擴充功能儲存在 SQL 中,`extensionData` 是持久的且具有使用者/組織範圍,瀏覽器工作階段工具允許後端代理檢查或操作目前開啟的分頁。
|
|
125
125
|
|
|
126
126
|
主機驗證是伺服器端的。不要將瀏覽器的身分作為事實來源傳遞;使用主機的請求/工作階段物件或短期伺服器驗證的權杖。如果主機不公開電子郵件,則返回穩定的 `userId`,Agent-Native 將使用它作為所有者金鑰。
|
|
127
127
|
|
|
128
128
|
### 資料庫隔離
|
|
129
129
|
|
|
130
|
-
嵌入模式管理SQL中的Agent-Native表。對於成熟的 SaaS 產品,最安全的預設設定是**相同的託管和驗證、專用的 Agent-Native 資料庫/架構**:
|
|
130
|
+
嵌入模式管理 SQL 中的 Agent-Native 表。對於成熟的 SaaS 產品,最安全的預設設定是**相同的託管和驗證、專用的 Agent-Native 資料庫/架構**:
|
|
131
131
|
|
|
132
132
|
```ts
|
|
133
133
|
export default createAgentNativeEmbeddedPlugin({
|
|
@@ -137,22 +137,22 @@ export default createAgentNativeEmbeddedPlugin({
|
|
|
137
137
|
});
|
|
138
138
|
```
|
|
139
139
|
|
|
140
|
-
|
|
140
|
+
支援使用主機產品的主要 `DATABASE_URL`,但請明確選取。 Agent-Native 建立 `settings`、`application_state`、`tools`、`tool_data` 等框架表、瀏覽器工作階段表、秘密、聊天對話串和相關索引。專用的資料庫/模式可以避免表名衝突,保持託管表的所有權清晰,並使備份/保留策略更容易推理。如果您有意共用主機資料庫,請首先檢查現有表名稱,並將 Agent-Native 表視為框架擁有的表。
|
|
141
141
|
|
|
142
142
|
## 其他模式 {#other-modes}
|
|
143
143
|
|
|
144
144
|
上面的包含電池的外掛是幸福的道路。伸手去拿其中之一
|
|
145
145
|
只有當它更適合您的情況時:
|
|
146
146
|
|
|
147
|
-
| 模式 |
|
|
147
|
+
| 模式 | 什麼時候使用它 | 包 |
|
|
148
148
|
| ------------------------ | ------------------------------------------------------------------------------------- | --------------------------------------- |
|
|
149
|
-
| **嵌入式應用程式選取器** | 啟動完整的 Agent-Native 應用程式作為重點 iframe
|
|
150
|
-
| **`<AgentNative>` 主橋** |
|
|
151
|
-
| **便攜式擴充功能** | 當 SaaS
|
|
149
|
+
| **嵌入式應用程式選取器** | 啟動完整的 Agent-Native 應用程式作為重點 iframe(資產選取器、表單生成器、核准面板)。 | `@agent-native/embedding` |
|
|
150
|
+
| **`<AgentNative>` 主橋** | 手動連線頁面脈絡和用戶端 actions 的獨立 sidecar 應用或跨來源 iframe。 | `@agent-native/core/client` |
|
|
151
|
+
| **便攜式擴充功能** | 當 SaaS 已擁有擴充功能儲存/核准時,讓主機使用者建置沙盒迷你應用程式。 | `@agent-native/core/client`擴充功能插槽 |
|
|
152
152
|
|
|
153
|
-
|
|
153
|
+
較低階別的 `@agent-native/embedding` 包公開:
|
|
154
154
|
|
|
155
|
-
| 匯入路徑 |
|
|
155
|
+
| 匯入路徑 | 它提供什麼 |
|
|
156
156
|
| ---------------------------------- | --------------------------------------------------------------------------------- |
|
|
157
157
|
| `@agent-native/embedding` | `EmbeddedApp` 選取器元件、`getA2AUrl`、`getMcpUrl`、`sendMessage`(流式傳輸 A2A) |
|
|
158
158
|
| `@agent-native/embedding/react` | React 特定的鉤子和元件 |
|
|
@@ -168,9 +168,9 @@ pnpm add @agent-native/embedding
|
|
|
168
168
|
|
|
169
169
|
當主機產品想要推出完整的產品時,請使用`@agent-native/embedding`
|
|
170
170
|
Agent-Native 應用程式作為聚焦的 iframe 表面:資產選取器、資產生成器,
|
|
171
|
-
|
|
171
|
+
表單建置器、行事曆時段選取器、核准面板或任何其他特定於工作的
|
|
172
172
|
工作流程。這是故意小於下面的 sidecar 主橋:
|
|
173
|
-
iframe
|
|
173
|
+
iframe 宣布準備就緒,主機可以傳送命名訊息,並且嵌入
|
|
174
174
|
應用程式可以發出域事件,例如 `chooseAsset` 或 `close`。
|
|
175
175
|
|
|
176
176
|
```tsx
|
|
@@ -200,7 +200,7 @@ export function AssetPickerDialog({ close }) {
|
|
|
200
200
|
}
|
|
201
201
|
```
|
|
202
202
|
|
|
203
|
-
|
|
203
|
+
在嵌入式應用程式內,使用瀏覽器橋宣布準備就緒並傳送
|
|
204
204
|
事件返回主機:
|
|
205
205
|
|
|
206
206
|
```ts
|
|
@@ -217,8 +217,8 @@ sendEmbeddedAppMessage("chooseAsset", {
|
|
|
217
217
|
});
|
|
218
218
|
```
|
|
219
219
|
|
|
220
|
-
資產還發出 `chooseImage`
|
|
221
|
-
|
|
220
|
+
資產還發出 `chooseImage` 作為舊圖片選取器的相容性別名
|
|
221
|
+
主機;新的整合應該偵聽 `chooseAsset`。
|
|
222
222
|
|
|
223
223
|
對於託管的第一方應用,啟用跨應用 SSO,並以 Dispatch 作為身分
|
|
224
224
|
集線器,使 `content.agent-native.com` 和 `assets.agent-native.com` 連結使用者
|
|
@@ -226,8 +226,8 @@ sendEmbeddedAppMessage("chooseAsset", {
|
|
|
226
226
|
在需要第三方 cookie 彈性時嵌入工作階段;普通應用程式cookie
|
|
227
227
|
本身並不是一個完整的嵌入驗證故事。
|
|
228
228
|
|
|
229
|
-
|
|
230
|
-
|
|
229
|
+
同一包包括用於協議發現的代理端點幫助程式和
|
|
230
|
+
透過 A2A 流式傳輸文字:
|
|
231
231
|
|
|
232
232
|
```ts
|
|
233
233
|
import { getA2AUrl, getMcpUrl, sendMessage } from "@agent-native/embedding";
|
|
@@ -245,11 +245,11 @@ for await (const chunk of sendMessage(
|
|
|
245
245
|
|
|
246
246
|
### 主機應用程式(`<AgentNative>`主機橋)
|
|
247
247
|
|
|
248
|
-
>
|
|
248
|
+
> 首選上面包含電池的外掛。使用這個較低階別的橋
|
|
249
249
|
> 僅適用於您連線頁面的獨立 sidecar 應用程式或跨來源 iframe
|
|
250
|
-
>
|
|
250
|
+
> 脈絡和用戶端 actions 自己。
|
|
251
251
|
|
|
252
|
-
對於獨立的 sidecar 應用程式或跨來源 iframe
|
|
252
|
+
對於獨立的 sidecar 應用程式或跨來源 iframe,請使用較低階別的 `<AgentNative />`。它將 iframe sidecar 和連線頁面脈絡、即時用戶端 actions 以及主機重新整理/導覽指令呈現在一個位置:
|
|
253
253
|
|
|
254
254
|
```tsx
|
|
255
255
|
import { AgentNative, defineClientAction } from "@agent-native/core/client";
|
|
@@ -324,13 +324,13 @@ export function AssistantDock({ customer, sessionToken }) {
|
|
|
324
324
|
}
|
|
325
325
|
```
|
|
326
326
|
|
|
327
|
-
|
|
327
|
+
如果您只需要顯式語義脈絡,請使用 `screen={false}`。使用 `screen={{ includeDomHtml: true }}` 作為尚未將 UI 對應到語義 ID 和選取狀態的應用程式的後備。預設情況下,主橋僅接受來自 `agentUrl` 來源的訊息。如果 iframe URL 是可信來源不同的路由/代理 URL,則傳遞 `agentOrigin`。
|
|
328
328
|
|
|
329
|
-
對於非 React
|
|
329
|
+
對於非 React 主機,直接呼叫 `createAgentNativeHostBridge()` 並傳遞相同的 `getContext`、`actions` 和 `commands` 選項。
|
|
330
330
|
|
|
331
331
|
### Iframe 側
|
|
332
332
|
|
|
333
|
-
在 Agent-Native sidecar
|
|
333
|
+
在 Agent-Native sidecar 內,使用框架助手請求主機脈絡,發現即時瀏覽器工作階段 actions,執行它們,或要求主機執行 UI 工作。在正式環境中始終透過預期的 `hostOrigin`:
|
|
334
334
|
|
|
335
335
|
```ts
|
|
336
336
|
import {
|
|
@@ -371,9 +371,9 @@ const hostTools = createAgentNativeHostTools({
|
|
|
371
371
|
|
|
372
372
|
### 伺服器中介工具橋
|
|
373
373
|
|
|
374
|
-
對於 CLAW 風格的同事,iframe 還可以向 sidecar
|
|
374
|
+
對於 CLAW 風格的同事,iframe 還可以向 sidecar 後端註冊其即時瀏覽器分頁。然後,代理取得正常的後端工具,將請求排入佇列,iframe 聲明它,主機頁面執行它,後端將結果返回給代理。
|
|
375
375
|
|
|
376
|
-
```an-diagram title="伺服器介導的瀏覽器工作階段橋" summary="
|
|
376
|
+
```an-diagram title="伺服器介導的瀏覽器工作階段橋" summary="後端工具將工作排隊;註冊的分頁聲明它,在即時頁面上執行它,並將結果返回給代理 - 因此 backend/Slack/A2A 代理仍然可以觸摸開啟的分頁。"
|
|
377
377
|
{
|
|
378
378
|
"html": "<div class=\"diagram-bridge\"><div class=\"diagram-node\" data-rough>後端代理<br><small class=\"diagram-muted\">聊天 · Slack · A2A</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-box\" data-rough>enqueue request<br><small class=\"diagram-muted\">/_agent-native/browser-sessions</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-node\" data-rough>活動標籤頁面接管它<br><small class=\"diagram-muted\">registered bridge</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-pill ok\">result → agent</div></div>",
|
|
379
379
|
"css": ".diagram-bridge{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.diagram-bridge .diagram-arrow{font-size:22px;line-height:1}"
|
|
@@ -401,15 +401,15 @@ export function SidecarRuntime() {
|
|
|
401
401
|
|
|
402
402
|
框架自動掛載`/_agent-native/browser-sessions`。一旦網橋執行,sidecar 代理就可以使用:
|
|
403
403
|
|
|
404
|
-
| 工具 | 目的
|
|
405
|
-
| ------------------------------ |
|
|
406
|
-
| `list-browser-sessions` | 檢視目前使用者的已連線主機分頁。
|
|
407
|
-
| `view-browser-session` |
|
|
408
|
-
| `list-browser-session-actions` |
|
|
409
|
-
| `run-browser-session-action` |
|
|
410
|
-
| `send-browser-session-command` |
|
|
404
|
+
| 工具 | 目的 |
|
|
405
|
+
| ------------------------------ | -------------------------------------------------- |
|
|
406
|
+
| `list-browser-sessions` | 檢視目前使用者的已連線主機分頁。 |
|
|
407
|
+
| `view-browser-session` | 向即時分頁詢問目前頁面脈絡和螢幕截圖。 |
|
|
408
|
+
| `list-browser-session-actions` | 向即時分頁詢問目前用戶端操作清單。 |
|
|
409
|
+
| `run-browser-session-action` | 透過即時分頁執行一項目前用戶端操作。 |
|
|
410
|
+
| `send-browser-session-command` | 請求主機重新整理、導覽、重新安裝、重新載入或核准。 |
|
|
411
411
|
|
|
412
|
-
這是當代理在後端、Slack/Telegram/email 中執行或作為 A2A
|
|
412
|
+
這是當代理在後端、Slack/Telegram/email 中執行或作為 A2A 被呼叫者執行時使用的橋,但在開啟時仍需要觸摸使用者目前的瀏覽器分頁。如果瀏覽器關閉,後端 actions 仍應處理持久工作,並且瀏覽器工作階段工具將報告沒有連線活動分頁。
|
|
413
413
|
|
|
414
414
|
### Actions
|
|
415
415
|
|
|
@@ -417,20 +417,20 @@ export function SidecarRuntime() {
|
|
|
417
417
|
|
|
418
418
|
| 動作型別 | 執行位置 | 瀏覽器關閉時可以工作嗎? | 最適合 |
|
|
419
419
|
| ---------- | ----------------------------------------------------- | ------------------------ | -------------------------------------------------------------------------------- |
|
|
420
|
-
| 後端操作 | Sidecar 應用、後端 API、MCP
|
|
421
|
-
| 用戶端操作 |
|
|
420
|
+
| 後端操作 | Sidecar 應用、後端 API、MCP 或整合轉接器 | 是 | 持久的工作,例如建立、更新、發布、同步、傳送、匯入。 |
|
|
421
|
+
| 用戶端操作 | 透過 `<AgentNative actions={...} />` 的目前瀏覽器分頁 | 否 | 臨時 UI 的工作方式類似於選取元素、讀取編輯器狀態、滾動到一行、複製目前畫布狀態。 |
|
|
422
422
|
|
|
423
|
-
後端 actions
|
|
423
|
+
後端 actions 應該是任何必須在重新整理、關閉瀏覽器、重試或整合觸發執行後仍然存在的預設設定。它們屬於 sidecar 應用程式的正常 Agent-Native 操作/工具層,代理可以在其中透過聊天、自動化、Slack/Telegram/電子郵件整合和背景作業呼叫它們。
|
|
424
424
|
|
|
425
|
-
用戶端 actions
|
|
425
|
+
用戶端 actions 是一個瀏覽器分頁的即時橋梁。主機使用 `source: "client"` 和 `availability: "browser-session"` 來通告它們,並且 sidecar 應該將該清單視為臨時的。當路由或選取發生變化時重新列出 actions,並在分頁消失時回退到後端 actions。
|
|
426
426
|
|
|
427
427
|
### 便攜式擴充功能
|
|
428
428
|
|
|
429
429
|
> 當您希望 Agent-Native 進行管理時,首選包含電池的外掛
|
|
430
|
-
>
|
|
430
|
+
> 擴充功能定義、核准、儲存和代理建立的擴充功能。使用
|
|
431
431
|
> 僅當 SaaS 已經擁有這些問題時才使用下面的可移植插槽。
|
|
432
432
|
|
|
433
|
-
SDK
|
|
433
|
+
SDK 還支援使用者定義的擴充功能:主機 SaaS 可以在命名槽中呈現的沙盒 Alpine.js 迷你應用程式。當客戶想要針對代理使用的相同操作/脈絡介面建置自己的小面板、計算器、儀表板或工作流程助手時,請使用此選項。
|
|
434
434
|
|
|
435
435
|
```tsx
|
|
436
436
|
import {
|
|
@@ -506,7 +506,7 @@ export function CustomerSidebar({ customer, userExtensions }) {
|
|
|
506
506
|
}
|
|
507
507
|
```
|
|
508
508
|
|
|
509
|
-
清單是安裝合同。當存在 `requestedActions`、`requestedCommands` 或 `storageScopes` 時,SDK 在 iframe
|
|
509
|
+
清單是安裝合同。當存在 `requestedActions`、`requestedCommands` 或 `storageScopes` 時,SDK 在 iframe 請求到達操作橋或儲存轉接器之前在主機中強制執行它們。當 `slots` 存在時,`AgentNativeExtensionSlot` 僅在匹配插槽中渲染擴充功能。主機仍然可以使用 `allowedActions`、`allowedCommands` 和 `allowedStorageScopes` 覆蓋每個插槽的策略。
|
|
510
510
|
|
|
511
511
|
擴充功能名是普通的 HTML。 iframe 執行時為迷你應用程式提供相同的安全橋原語:
|
|
512
512
|
|
|
@@ -531,51 +531,51 @@ iframe 內的可用全域變數:
|
|
|
531
531
|
| ------------------------------ | ------------------------------------------ |
|
|
532
532
|
| `appAction(name, args)` | 執行主機聲明的操作。 |
|
|
533
533
|
| `agentNative.context()` | 讀取目前主機頁面、資源、插槽和使用者資料。 |
|
|
534
|
-
| `agentNative.command(name, p)` |
|
|
534
|
+
| `agentNative.command(name, p)` | 要求主機導覽、重新整理、重新安裝或開啟。 |
|
|
535
535
|
| `agentNative.refresh(payload)` | `refreshData` 的快捷方式。 |
|
|
536
|
-
| `extensionData.*` |
|
|
536
|
+
| `extensionData.*` | 透過主機轉接器保留擴充功能本機資料。 |
|
|
537
537
|
|
|
538
|
-
預設情況下,`extensionData` 使用瀏覽器 `localStorage
|
|
538
|
+
預設情況下,`extensionData` 使用瀏覽器 `localStorage`,這對於原型和本機小工具很有用。正式環境 SaaS 主機應傳遞後端支援的 `storage` 轉接器,以便使用者和組織範圍的擴充功能資料持久、可審核並受應用程式權限管理。通用 HTTP 轉接器傳送 POST 主體(如 `{ operation, extensionId, slotId, collection, id, data, options, context }`),並直接期望 `{ result }` 或結果 JSON。
|
|
539
539
|
|
|
540
|
-
這個可移植的 SDK
|
|
540
|
+
這個可移植的 SDK 層與框架的內建 SQL 支援的擴充功能儲存是分開的。在 Agent-Native 應用程式中,使用現有的 `ExtensionSlot`/`EmbeddedExtension` 元件和 `create-extension` 操作。在託管 SaaS 嵌入場景中,當您希望 Agent-Native 開箱即用地管理擴充功能定義、核准、儲存和代理建立的擴充功能時,首選 `createAgentNativeEmbeddedPlugin()` 加上 `AgentNativeEmbedded`。僅當 SaaS 已擁有擴充功能定義、核准、市場、儲存和計費時才使用 `AgentNativeExtensionSlot`。
|
|
541
541
|
|
|
542
542
|
安全模型:
|
|
543
543
|
|
|
544
544
|
- 擴充功能 iframe 是沙盒的,沒有 `allow-same-origin`;小應用程式無法直接讀取父DOM、cookies或應用程式執行時。
|
|
545
|
-
-
|
|
546
|
-
- 有風險的 actions 應設定 `destructive` 或 `requiresApproval
|
|
547
|
-
- 將使用者建立的擴充功能 HTML
|
|
545
|
+
- 擴充功能只能呼叫主機和擴充功能清單允許的 actions 和指令。
|
|
546
|
+
- 有風險的 actions 應設定 `destructive` 或 `requiresApproval`,以便主機可以顯示核准流程。
|
|
547
|
+
- 將使用者建立的擴充功能 HTML 視為不受信任。按使用者/組織檢視市場安裝、紀錄操作使用情況和範圍後端儲存。
|
|
548
548
|
|
|
549
549
|
### 工作階段和分頁
|
|
550
550
|
|
|
551
|
-
主機橋的作用域為一對 iframe
|
|
551
|
+
主機橋的作用域為一對 iframe/主機視窗。如果同一使用者開啟多個分頁,則每個分頁都有自己的 `session`、脈絡、選取、用戶端 actions 和暫停的指令回應。不要假設在一個分頁中發現的用戶端操作可以在另一分頁中執行,或者它在導覽後仍然存在。
|
|
552
552
|
|
|
553
|
-
對於多分頁產品,在 SQL/後端 actions 中保持持久狀態,並僅將用戶端 actions
|
|
553
|
+
對於多分頁產品,在 SQL/後端 actions 中保持持久狀態,並僅將用戶端 actions 用於分頁本機部分:聚焦行、複製可見編輯器狀態、選取畫布元素或重新整理目前 React 查詢快取。包含足夠的 `route`、`resource` 和 `selection` 脈絡,以便 sidecar 決定目前分頁是否是執行瀏覽器工作階段操作的正確位置。
|
|
554
554
|
|
|
555
555
|
### 指令模型
|
|
556
556
|
|
|
557
|
-
|
|
557
|
+
內建指令名稱故意采用應用程式形式,而不是資料庫形式:
|
|
558
558
|
|
|
559
559
|
| 指令 | 目的 |
|
|
560
560
|
| -------------------------------------- | ----------------------------------------------- |
|
|
561
|
-
| `navigate` | 將主機 UI
|
|
561
|
+
| `navigate` | 將主機 UI 行動到路徑/檢視/資源。 |
|
|
562
562
|
| `refreshData` / `refresh-data` | 要求主機使用戶端資料無效。 |
|
|
563
563
|
| `remountView` / `remount-view` | 要求主機重新掛載子樹,例如`<App key={key} />`。 |
|
|
564
564
|
| `hardReload` / `hard-reload` | 完全重新載入瀏覽器。 |
|
|
565
|
-
| `openResource` / `open-resource` | 在主機UI中開啟特定域物件。
|
|
566
|
-
| `requestApproval` / `request-approval` |
|
|
565
|
+
| `openResource` / `open-resource` | 在主機 UI 中開啟特定域物件。 |
|
|
566
|
+
| `requestApproval` / `request-approval` | 要求主持人展示確認流程。為此註冊一個處理常式。 |
|
|
567
567
|
|
|
568
|
-
|
|
568
|
+
如果未提供處理常式,安全預設值將調度瀏覽器事件,例如 `agentNative:refresh-data` 和 `agentNative:remount-view`。 `requestApproval`沒有預設處理常式;在依賴它之前先註冊一個。
|
|
569
569
|
|
|
570
|
-
###
|
|
570
|
+
### 核准指南
|
|
571
571
|
|
|
572
|
-
在其清單中將有風險的用戶端 actions 標記為 `destructive: true
|
|
572
|
+
在其清單中將有風險的用戶端 actions 標記為 `destructive: true`,並在執行刪除、發布、傳送、收費、邀請、共用或以其他方式影響目前檢視之外的使用者的操作之前需要主機核准。後端 actions 也應該執行自己的授權和核准檢查;主機核准是有用的使用者體驗,而不是安全邊界。
|
|
573
573
|
|
|
574
574
|
更喜歡這個形狀:
|
|
575
575
|
|
|
576
576
|
- 持久突變在後端操作中執行,包括驗證、驗證、審核記錄紀錄和重試。
|
|
577
|
-
-
|
|
578
|
-
-
|
|
577
|
+
- 主機指令開啟核准 UI 或聚焦受影響的資源。
|
|
578
|
+
- 用戶端操作僅處理無法在後端發生的即時 UI 步驟。
|
|
579
579
|
|
|
580
580
|
### 執行時整合
|
|
581
581
|
|
|
@@ -583,15 +583,15 @@ iframe 內的可用全域變數:
|
|
|
583
583
|
|
|
584
584
|
| 工具 | 目的 |
|
|
585
585
|
| ------------------- | ---------------------------------------------- |
|
|
586
|
-
| `view-host-screen` |
|
|
587
|
-
| `list-host-actions` |
|
|
588
|
-
| `run-host-action` |
|
|
589
|
-
| `send-host-command` |
|
|
586
|
+
| `view-host-screen` | 讀取語義主機脈絡和螢幕截圖。 |
|
|
587
|
+
| `list-host-actions` | 列出目前分頁公開的即時瀏覽器工作階段 actions。 |
|
|
588
|
+
| `run-host-action` | 按名稱執行一個即時用戶端操作。 |
|
|
589
|
+
| `send-host-command` | 傳送重新整理、導覽、重新安裝或核准等主機指令。 |
|
|
590
590
|
|
|
591
|
-
助手有意返回普通的 `{ name, description, parameters, execute }` 物件,以便 sidecar 可以將它們調整為 AI SDK、Anthropic、OpenAI
|
|
591
|
+
助手有意返回普通的 `{ name, description, parameters, execute }` 物件,以便 sidecar 可以將它們調整為 AI SDK、Anthropic、OpenAI 函式呼叫或 Agent-Native `ActionEntry` 形狀,而無需將此 SDK 耦合到一個執行時。
|
|
592
592
|
|
|
593
593
|
## 推薦產品形狀
|
|
594
594
|
|
|
595
595
|
首先啟動 iframe。它適用於 Builder.io、客戶 SaaS 應用程式和內部管理工具,無需耦合發布週期或 CSS/執行時假設。
|
|
596
596
|
|
|
597
|
-
sidecar 本身應該仍然是 Agent-Native 應用程式/範本:actions 是後端 API 表面,SQL
|
|
597
|
+
sidecar 本身應該仍然是 Agent-Native 應用程式/範本:actions 是後端 API 表面,SQL 支援的應用程式狀態是代理的記憶,並且 Slack 或 Telegram 等整合可以路由到相同的持久聊天。嵌入的 SDK 在該 sidecar 和目前主機頁面之間提供活動膜。
|
|
@@ -5,18 +5,18 @@ description: "編寫 *.eval.ts 測試用例,根據固定輸入執行真實代
|
|
|
5
5
|
|
|
6
6
|
# CI 評估門
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
評估是一流的測試原語:您聲明一個提示加上您期望的行為,執行程式**實際上針對該輸入執行代理迴圈**,使用可組合評分器對輸出進行評分,如果任何情況得分低於其閾值,則以非零值退出。這種非零退出使 `agent-native eval` 成為一個嵌入式 CI 部署入口。
|
|
9
9
|
|
|
10
10
|
這是對 [Observability](/docs/observability) 中事後評分的補充:
|
|
11
11
|
|
|
12
|
-
- **可觀測性評估** (`observability/evals.ts`) — _“這次實際執行效果如何?”_
|
|
13
|
-
- **`*.eval.ts`(此原語)** — _“代理在此固定輸入上執行正確的操作嗎?”_
|
|
12
|
+
- **可觀測性評估** (`observability/evals.ts`) — _“這次實際執行效果如何?”_ 被動、取樣、緊鄰痕跡。
|
|
13
|
+
- **`*.eval.ts`(此原語)** — _“代理在此固定輸入上執行正確的操作嗎?”_ 主動、確定性、透過 CLI 執行的 CI 門。
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
執行程式從現有註冊表中解析與提供者無關的引擎/模型 - 沒有模型被硬編碼 - 因此相同的套件可以針對應用程式設定的任何引擎執行。
|
|
16
16
|
|
|
17
|
-
```an-diagram title="從固定輸入到部署門" summary="
|
|
17
|
+
```an-diagram title="從固定輸入到部署門" summary="跑步者實際上在每種情況下執行代理迴圈,對輸出進行評分,如果任何評分者低於閾值,則以非零值退出——使其成為一個插入式 CI 門。"
|
|
18
18
|
{
|
|
19
|
-
"html": "<div class=\"eval-flow\"><div class=\"diagram-node\">*.eval.ts<br><small class=\"diagram-muted\">prompt + expected behavior</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-node\"
|
|
19
|
+
"html": "<div class=\"eval-flow\"><div class=\"diagram-node\">*.eval.ts<br><small class=\"diagram-muted\">prompt + expected behavior</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-node\">執行代理迴圈<br><small class=\"diagram-muted\">real engine/model</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-node\">Scorers<br><small class=\"diagram-muted\">every one must pass threshold</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-col\"><div class=\"diagram-box ok\">exit 0 → deploy</div><div class=\"diagram-box warn\">exit 1 → block</div></div></div>",
|
|
20
20
|
"css": ".eval-flow{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.eval-flow .diagram-node{display:flex;flex-direction:column;gap:2px;padding:10px 14px}.eval-flow .diagram-col{display:flex;flex-direction:column;gap:8px}.eval-flow .diagram-arrow{font-size:22px;line-height:1}"
|
|
21
21
|
}
|
|
22
22
|
```
|
|
@@ -40,9 +40,9 @@ export default defineEval({
|
|
|
40
40
|
});
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
只有當**每個**得分者都達到閾值時,評估才會透過。關鍵 `defineEval` 欄位:
|
|
44
44
|
|
|
45
|
-
| 欄位 | 型別 |
|
|
45
|
+
| 欄位 | 型別 | 註解 |
|
|
46
46
|
| ----------- | --------------------- | ------------------------------------------------ |
|
|
47
47
|
| `name` | 字串 | 必填。報告中顯示。 |
|
|
48
48
|
| `input` | `{ prompt, history }` | 需要`prompt`;可選的先前 `{ role, text }` 轉彎。 |
|
|
@@ -63,24 +63,24 @@ interface AgentRunOutput {
|
|
|
63
63
|
}
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
##
|
|
66
|
+
## 內建記分器 {#built-in}
|
|
67
67
|
|
|
68
68
|
從 `@agent-native/core/eval` 匯入:
|
|
69
69
|
|
|
70
70
|
| 得分手 | 得分 | 型號? |
|
|
71
71
|
| ------------------------ | ----------------------------------------------------- | ------ |
|
|
72
|
-
| `exactMatch(expected)` | `1.0`
|
|
72
|
+
| `exactMatch(expected)` | `1.0` 如果文字等於 `expected`(已修剪,不區分大小寫) | 沒有 |
|
|
73
73
|
| `contains(needles)` | 存在所需子字串的分數(因此部分命中) | 不 |
|
|
74
|
-
| `usesTool(toolName)` | `1.0
|
|
74
|
+
| `usesTool(toolName)` | `1.0`(如果代理呼叫該工具/操作至少一次) | 否 |
|
|
75
75
|
| `llmJudge({ criteria })` | LLM 作為評委根據自然語言評分標準進行評分,→ `0..1` | 是 |
|
|
76
76
|
|
|
77
|
-
`exactMatch` 和 `contains` 采用可選的 `{ caseSensitive }`。 `llmJudge` 采用 `{ criteria, rubric?, name?, scoreRange? }` - 其輸出標準化為 `[0, 1]
|
|
77
|
+
`exactMatch` 和 `contains` 采用可選的 `{ caseSensitive }`。 `llmJudge` 采用 `{ criteria, rubric?, name?, scoreRange? }` - 其輸出標準化為 `[0, 1]`,判斷模型是執行程式解析的任何內容(絕不是硬編碼的提供者)。
|
|
78
78
|
|
|
79
79
|
## 自訂評分器:4 步流程 {#custom}
|
|
80
80
|
|
|
81
81
|
`createScorer` 從 Mastra 風格的 4 步管道建置一個記分器。僅需要 `generateScore`:
|
|
82
82
|
|
|
83
|
-
```an-diagram title="4 步評分管道" summary="預處理和分析預設身分;僅需要generateScore。 analyze 可以執行普通 JS
|
|
83
|
+
```an-diagram title="4 步評分管道" summary="預處理和分析預設身分;僅需要generateScore。 analyze 可以執行普通 JS 或透過 ctx 呼叫 LLM 判斷。"
|
|
84
84
|
{
|
|
85
85
|
"html": "<div class=\"scorer\"><div class=\"diagram-card\"><span class=\"diagram-pill\">preprocess(run)</span><small class=\"diagram-muted\">transform the run/output · optional</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-card\"><span class=\"diagram-pill\">analyze(x, ctx)</span><small class=\"diagram-muted\">plain JS or LLM judge · optional</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-card\"><span class=\"diagram-pill accent\">generateScore(a)</span><small class=\"diagram-muted\">→ 0..1 normalized · <strong>required</strong></small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-card\"><span class=\"diagram-pill\">generateReason</span><small class=\"diagram-muted\">human-readable why · optional</small></div></div>",
|
|
86
86
|
"css": ".scorer{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.scorer .diagram-card{display:flex;flex-direction:column;gap:2px;padding:8px 12px}.scorer .diagram-arrow{font-size:20px;line-height:1}"
|
|
@@ -94,7 +94,7 @@ generateScore(a) → 0..1 REQUIRED, normalized
|
|
|
94
94
|
generateReason(...) → string human-readable why (optional)
|
|
95
95
|
```
|
|
96
96
|
|
|
97
|
-
`preprocess` 和 `analyze` 預設為身分(記分員看到原始 `AgentRunOutput`)。 `analyze` 步驟接收 `ctx` 以及與提供者無關的 `judge()`
|
|
97
|
+
`preprocess` 和 `analyze` 預設為身分(記分員看到原始 `AgentRunOutput`)。 `analyze` 步驟接收 `ctx` 以及與提供者無關的 `judge()` 幫助程式,用於 LLM 支援的評分:
|
|
98
98
|
|
|
99
99
|
```ts
|
|
100
100
|
import { createScorer, clamp01 } from "@agent-native/core/eval";
|
|
@@ -133,7 +133,7 @@ agent-native eval --threshold 0.8 # override every eval's pass threshold (0..
|
|
|
133
133
|
|
|
134
134
|
| 程式碼 | 含義 |
|
|
135
135
|
| ------ | ----------------------------------------------------- |
|
|
136
|
-
| `0` |
|
|
136
|
+
| `0` | 所有評估均已透過 - *或*未找到評估檔案(CI 友好)。 |
|
|
137
137
|
| `1` | 至少有一項評估得分低於閾值,或者套件出錯。 |
|
|
138
138
|
| `2` | 錯誤的參數(例如 `--threshold` 位於 `[0, 1]` 之外)。 |
|
|
139
139
|
|
|
@@ -148,7 +148,7 @@ agent-native eval --threshold 0.8 # override every eval's pass threshold (0..
|
|
|
148
148
|
|
|
149
149
|
將任何評分器降低到閾值以下的回歸會導致該步驟失敗並阻止部署。沒有評估檔案的應用程式會退出 `0`,因此采用評估是每個應用程式的選取。
|
|
150
150
|
|
|
151
|
-
##
|
|
151
|
+
## 下一步是什麼
|
|
152
152
|
|
|
153
153
|
- [**Observability**](/docs/observability) - 實際正式環境執行的事後評分(補充層)
|
|
154
154
|
- [**Actions**](/docs/actions) — `toolCalls` 中顯示的工具/actions
|