@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,27 +1,27 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "
|
|
3
|
-
description: "將 Claude Code、Codex、Pi 和其他完整的編碼工具作為 Agent-Native
|
|
4
|
-
search: "harness代理AgentHarness ai-sdk HarnessAgent Claude程式碼Codex Pi Cursor Mastra嵌入式編碼代理resolveAgentHarness startAgentHarnessRun可恢復工作階段沙箱主機工具"
|
|
2
|
+
title: "安全帶代理"
|
|
3
|
+
description: "將 Claude Code、Codex、Pi 和其他完整的編碼工具作為 Agent-Native 內的嵌入式代理執行,並具有自己的迴圈、沙箱、本機工具和可恢復的 SQL 支援的工作階段。"
|
|
4
|
+
search: "harness代理AgentHarness ai-sdk HarnessAgent Claude 程式碼Codex Pi Cursor Mastra嵌入式編碼代理resolveAgentHarness startAgentHarnessRun可恢復工作階段沙箱主機工具"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
#
|
|
7
|
+
# 安全代理
|
|
8
8
|
|
|
9
9
|
> **這是給誰的:** 主機作者連線完整的編碼執行時(Claude 程式碼,
|
|
10
10
|
> Codex, Pi) 轉換為 Agent-Native 作為代理。建置應用程式?從
|
|
11
11
|
> [Creating Templates](/docs/creating-templates).
|
|
12
12
|
|
|
13
13
|
線束代理是一個完整的代理執行時 - Claude 程式碼、Codex、Pi 等 -
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
擁有自己的迴圈、工作區、本機檔案工具、工作階段狀態、壓縮,
|
|
15
|
+
核准模型和沙箱行為。 Agent-Native 透過
|
|
16
16
|
**`AgentHarness`** `@agent-native/core/agent/harness` 中的基質,流式傳輸它們
|
|
17
|
-
|
|
17
|
+
將事件放入正常的紀錄中,並保留其本機工作階段,以便成為一個對話串
|
|
18
18
|
可以暫停和恢復。
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
這與內建聊天代理和自帶聊天功能不同
|
|
21
|
+
執行時。內建代理和`AgentEngine`為一個模型往返
|
|
22
22
|
在`runAgentLoop`下面。一個harness不是一個`AgentEngine`提供者——它執行它的
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
自己的端對端迴圈,因此 Agent-Native 將其作為工作階段驅動,而不是單一
|
|
24
|
+
模型呼叫。
|
|
25
25
|
|
|
26
26
|
```an-diagram title="安全帶擁有它的環; Agent-Native 驅動工作階段" summary="AgentHarness 底層 creates/resumes 本機工作階段,將其事件流式傳輸到正常轉錄本中,並在輪次之間將恢復狀態保留在 SQL 中。"
|
|
27
27
|
{
|
|
@@ -32,31 +32,31 @@ search: "harness代理AgentHarness ai-sdk HarnessAgent Claude程式碼Codex Pi C
|
|
|
32
32
|
|
|
33
33
|
## 我需要哪個編碼檔案? {#which-doc}
|
|
34
34
|
|
|
35
|
-
| 你想要……
|
|
36
|
-
|
|
|
37
|
-
|
|
|
38
|
-
| 渲染 Claude-Code/Codex 樣式 **編碼工作區 UI**
|
|
39
|
-
| 交換執行代理的 **`run-code` 工具**的後端
|
|
40
|
-
| 封裝一個CLI工具(`gh`、`ffmpeg
|
|
35
|
+
| 你想要…… | 使用 |
|
|
36
|
+
| ---------------------------------------------------------- | -------------------------------------------- |
|
|
37
|
+
| 使用自己的迴圈+工具**作為代理**執行 Claude 程式碼/Codex/Pi | **安全帶代理**(本頁面) |
|
|
38
|
+
| 渲染 Claude-Code/Codex 樣式 **編碼工作區 UI** | [Agent-Native Code UI](/docs/code-agents-ui) |
|
|
39
|
+
| 交換執行代理的 **`run-code` 工具**的後端 | [Adapters](/docs/sandbox-adapters) |
|
|
40
|
+
| 封裝一個 CLI 工具(`gh`、`ffmpeg`)供代理呼叫 | [Adapters](/docs/sandbox-adapters) |
|
|
41
41
|
|
|
42
42
|
相鄰表面:將您在其他地方建置的代理放在 Agent-Native 的聊天後面
|
|
43
43
|
UI 與 [`AgentChatRuntime`](/docs/native-chat-ui#byo-agent-runtimes);讓一個
|
|
44
|
-
外部 MCP
|
|
45
|
-
|
|
44
|
+
外部 MCP 主機透過 [External Agents](/docs/external-agents) 呼叫您的應用;
|
|
45
|
+
生成背景/子代理與 [Custom Agents & Teams](/docs/agent-teams) 一起執行。
|
|
46
46
|
|
|
47
|
-
##
|
|
47
|
+
## 內建安全帶 {#built-in}
|
|
48
48
|
|
|
49
|
-
`registerBuiltinAgentHarnesses()` 註冊由 AI SDK
|
|
49
|
+
`registerBuiltinAgentHarnesses()` 註冊由 AI SDK 支援的三個轉接器
|
|
50
50
|
`HarnessAgent`:
|
|
51
51
|
|
|
52
|
-
| 姓名 | 執行時
|
|
53
|
-
| ---------------------------- |
|
|
54
|
-
| `ai-sdk-harness:claude-code` | Claude程式碼 | 是的 | 是的 |
|
|
55
|
-
| `ai-sdk-harness:codex` | Codex
|
|
56
|
-
| `ai-sdk-harness:pi` | 圓週率
|
|
52
|
+
| 姓名 | 執行時 | 沙盒 | 核准 |
|
|
53
|
+
| ---------------------------- | ------------- | ---- | ---- |
|
|
54
|
+
| `ai-sdk-harness:claude-code` | Claude 程式碼 | 是的 | 是的 |
|
|
55
|
+
| `ai-sdk-harness:codex` | Codex | 是的 | 沒有 |
|
|
56
|
+
| `ai-sdk-harness:pi` | 圓週率 | 沒有 | 是的 |
|
|
57
57
|
|
|
58
58
|
它們的執行時包是**可選的對等依賴項**並且延遲載入,因此
|
|
59
|
-
|
|
59
|
+
從不使用安全帶的應用程式無需付費。每個轉接器都帶有一個
|
|
60
60
|
`installPackage` 提示(例如`@ai-sdk/harness@canary
|
|
61
61
|
@ai-sdk/harness-codex@canary`); `resolveAgentHarness`拋出一個明確的安裝
|
|
62
62
|
如果缺少包,則會出現錯誤,並且 `isAgentHarnessPackageInstalled(entry)`
|
|
@@ -67,13 +67,13 @@ UI 與 [`AgentChatRuntime`](/docs/native-chat-ui#byo-agent-runtimes);讓一個
|
|
|
67
67
|
|
|
68
68
|
## ACP代理 {#acp}
|
|
69
69
|
|
|
70
|
-
Agent-Native可以充當[ACP](https://agentclientprotocol.com)(代理用戶端
|
|
70
|
+
Agent-Native 可以充當[ACP](https://agentclientprotocol.com)(代理用戶端
|
|
71
71
|
協議)**用戶端**並驅動本機編碼代理 - Gemini CLI、Claude 程式碼,
|
|
72
|
-
或任何符合ACP
|
|
73
|
-
|
|
72
|
+
或任何符合ACP標準的代理——透過相同的基材。代理作為
|
|
73
|
+
本機子行程透過stdio使用換行符分隔的JSON-RPC; ACP的編輯
|
|
74
74
|
↔ 代理模型就是這個形狀。
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
此轉接器的範圍是**本機編碼**。子行程繼承
|
|
77
77
|
父環境,因此代理重用它已有的任何本機 CLI 登入
|
|
78
78
|
(例如使用者主目錄中的 `gemini` 或 `claude` 驗證)。這不是一個
|
|
79
79
|
託管或沙盒傳輸,並且它不是聊天/A2A 傳輸 - 對於這些,
|
|
@@ -81,7 +81,7 @@ Agent-Native可以充當[ACP](https://agentclientprotocol.com)(代理用戶端
|
|
|
81
81
|
|
|
82
82
|
| 姓名 | 預設指令 | 可恢復\* |
|
|
83
83
|
| ----------------- | ---------------------------------------------- | -------- |
|
|
84
|
-
| `acp` | _(
|
|
84
|
+
| `acp` | _(透過設定提供`command`/`args`)_ | 是的 |
|
|
85
85
|
| `acp:gemini` | `npx -y @google/gemini-cli --experimental-acp` | 是的 |
|
|
86
86
|
| `acp:claude-code` | `npx -y @zed-industries/claude-code-acp` | 是的 |
|
|
87
87
|
|
|
@@ -107,16 +107,16 @@ const custom = resolveAgentHarness("acp", {
|
|
|
107
107
|
```
|
|
108
108
|
|
|
109
109
|
協議傳輸(`@zed-industries/agent-client-protocol`)是可選的
|
|
110
|
-
|
|
110
|
+
透過`installPackage`提示延遲載入依賴,就像 AI SDK 一樣
|
|
111
111
|
安全帶。代理二進制檔案本身(`@google/gemini-cli`,
|
|
112
112
|
`@zed-industries/claude-code-acp`, …) 是一個單獨的外部 CLI;預設
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
透過 `npx` 啟動它,並且指令/參數保持可重寫,因為代理 ACP
|
|
114
|
+
入口標誌仍在演變。
|
|
115
115
|
|
|
116
|
-
`permissionMode`
|
|
116
|
+
`permissionMode` 使用工具呼叫對應到 ACP `session/request_permission`
|
|
117
117
|
設定代理報告:讀取始終執行,編輯在 `allow-edits` 下執行,以及
|
|
118
|
-
一切有風險的提示,除非`allow-all
|
|
119
|
-
`approval-request`
|
|
118
|
+
一切有風險的提示,除非`allow-all`。核准表面正常
|
|
119
|
+
`approval-request` 事件。該轉接器服務於 `fs/read_text_file` 和
|
|
120
120
|
`fs/write_text_file` 針對工作階段工作區(拒絕逃逸路徑
|
|
121
121
|
it) 並寫入發出 `file-change` 事件;終端方法未公布,
|
|
122
122
|
因此代理使用自己的 shell。
|
|
@@ -125,12 +125,12 @@ it) 並寫入發出 `file-change` 事件;終端方法未公布,
|
|
|
125
125
|
|
|
126
126
|
有兩個 Codex 表面,它們的驗證方式不同:
|
|
127
127
|
|
|
128
|
-
- **Agent-Native 程式碼/桌面**
|
|
129
|
-
使用者已執行`codex login`,此本機執行重用任何ChatGPT
|
|
130
|
-
|
|
128
|
+
- **Agent-Native 程式碼/桌面** 在使用者電腦上執行 `codex exec`。如果
|
|
129
|
+
使用者已執行`codex login`,此本機執行重用任何 ChatGPT
|
|
130
|
+
透過訂閱或 API 金鑰驗證已安裝的Codex CLI 報告
|
|
131
131
|
`codex login status`.
|
|
132
132
|
- **`ai-sdk-harness:codex`**載入`@ai-sdk/harness-codex`,它驅動Codex
|
|
133
|
-
|
|
133
|
+
透過 `@openai/codex-sdk` 進入線束沙箱。它不會默默地
|
|
134
134
|
繼承使用者的桌面 `~/.codex` 登入名,因為沙箱可能是遠端的
|
|
135
135
|
或孤立。對於可信/私人沙箱,請選取使用 `codexCliAuth: true`;
|
|
136
136
|
Agent-Native 將本機 Codex CLI auth 檔案複製到沙箱中
|
|
@@ -150,7 +150,7 @@ const adapter = resolveAgentHarness("ai-sdk-harness:codex", {
|
|
|
150
150
|
```
|
|
151
151
|
|
|
152
152
|
`codexCliAuth: true` 讀取為 `CODEX_HOME/auth.json` 或 `~/.codex/auth.json`。至
|
|
153
|
-
|
|
153
|
+
指向不同的本機登入,透過
|
|
154
154
|
`{ codexCliAuth: { codexHome: "/path/to/.codex" } }` 或
|
|
155
155
|
`{ codexCliAuth: { authJsonPath: "/path/to/auth.json" } }`.
|
|
156
156
|
|
|
@@ -167,7 +167,7 @@ const adapter = resolveAgentHarness("ai-sdk-harness:codex");
|
|
|
167
167
|
```
|
|
168
168
|
|
|
169
169
|
`resolveAgentHarness(name, config?)` 返回 `AgentHarnessAdapter`。
|
|
170
|
-
可選的 `config`
|
|
170
|
+
可選的 `config` 被轉發到轉接器工廠 - 用於 AI SDK 轉接器
|
|
171
171
|
對應到 `AiSdkHarnessAdapterOptions`(`label`、`description`,
|
|
172
172
|
僅 `permissionMode`、`harnessOptions`、`agentOptions` 和 Codex
|
|
173
173
|
`codexCliAuth`)。使用`listAgentHarnesses()`枚舉註冊的內容
|
|
@@ -202,18 +202,18 @@ const run = startAgentHarnessRun({
|
|
|
202
202
|
```
|
|
203
203
|
|
|
204
204
|
`startAgentHarnessRun`從執行管理器返回`ActiveRun`,所以輪到
|
|
205
|
-
|
|
205
|
+
透過現有的執行路由、逐字稿和取消顯示,就像
|
|
206
206
|
任何其他代理執行。傳遞已經建立的 `session` 而不是 `createSession`
|
|
207
|
-
|
|
207
|
+
繼續您在記憶中儲存的工作階段。
|
|
208
208
|
|
|
209
209
|
## 會議和簡歷 {#sessions}
|
|
210
210
|
|
|
211
211
|
線束擁有長期存在的本機工作階段狀態。 Agent-Native 將其保留在 SQL
|
|
212
|
-
|
|
213
|
-
是**不透明** - Agent-Native
|
|
212
|
+
因此對話串可以在輪流、行程和部署中生存。 `resumeState`
|
|
213
|
+
是**不透明** - Agent-Native 儲存它並將其返還,但從不檢查或
|
|
214
214
|
解釋它。
|
|
215
215
|
|
|
216
|
-
```an-diagram title="跨回合、流程和部署恢復" summary="每一輪都會將一個不透明的resumeState分離到SQL中;下一回合將其意見回饋到 createSession 而不是重播聊天紀錄。"
|
|
216
|
+
```an-diagram title="跨回合、流程和部署恢復" summary="每一輪都會將一個不透明的resumeState分離到 SQL 中;下一回合將其意見回饋到 createSession 而不是重播聊天紀錄。"
|
|
217
217
|
{
|
|
218
218
|
"html": "<div class=\"diagram-resume\"><div class=\"diagram-node\" data-rough>第 N 輪<br><small class=\"diagram-muted\">streamTurn</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-box\" data-rough>detach → resumeState<br><small class=\"diagram-muted\">不透明 · SQL harness 工作階段</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-node\" data-rough>第 N+1 輪<br><small class=\"diagram-muted\">createSession.resumeState</small></div></div>",
|
|
219
219
|
"css": ".diagram-resume{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.diagram-resume .diagram-arrow{font-size:22px;line-height:1}"
|
|
@@ -233,30 +233,30 @@ const last = await getLatestAgentHarnessSessionForThread(threadId);
|
|
|
233
233
|
商店還公開了`saveAgentHarnessSession`、`updateAgentHarnessSession`,
|
|
234
234
|
`getAgentHarnessSession`, `getAgentHarnessSessionByRunId`,
|
|
235
235
|
`markAgentHarnessSessionStopped` 和 `ensureAgentHarnessSessionTables`。
|
|
236
|
-
`startAgentHarnessRun`
|
|
236
|
+
`startAgentHarnessRun` 為您呼叫儲存/更新/停止路徑;伸手去夠他們
|
|
237
237
|
僅直接在自訂主機中。
|
|
238
238
|
|
|
239
239
|
## 託管工具和權限 {#host-tools}
|
|
240
240
|
|
|
241
241
|
線束帶有自己的本機工具(讀取、編輯、寫入、shell 等),因此
|
|
242
|
-
|
|
243
|
-
|
|
242
|
+
您**不**將檔案編輯重新公開為主機工具。僅透過**狹窄,
|
|
243
|
+
當您透過 `createSession.tools` 有意設定** Agent-Native actions
|
|
244
244
|
希望該工具能夠實現特定的應用操作 - 並保留 `defineAction`
|
|
245
|
-
|
|
245
|
+
驗證、請求脈絡、超時、截斷和唯讀中繼資料完好無損
|
|
246
246
|
你知道。
|
|
247
247
|
|
|
248
|
-
`permissionMode`
|
|
248
|
+
`permissionMode` 控制安全帶在未經核准的情況下可以執行的操作:
|
|
249
249
|
|
|
250
250
|
| 模式 | 含義 |
|
|
251
251
|
| ------------- | ----------------------------------------- |
|
|
252
252
|
| `allow-reads` | 預設。讀取執行;編輯和有風險的actions提示 |
|
|
253
253
|
| `allow-edits` | 讀取和編輯執行;其他有風險actions提示 |
|
|
254
|
-
| `allow-all` |
|
|
254
|
+
| `allow-all` | 無核准門控 |
|
|
255
255
|
|
|
256
|
-
|
|
257
|
-
工作階段標記為 `idle
|
|
256
|
+
當線束暫停等待核准時,它會發出 `approval-request` 事件,並且
|
|
257
|
+
工作階段標記為 `idle`,並紀錄待核准,因此 UI 可以
|
|
258
258
|
將其浮出水面並根據使用者的決定繼續。請參閱
|
|
259
|
-
[Human Approval](/docs/human-approval)
|
|
259
|
+
[Human Approval](/docs/human-approval) 為核准表面。
|
|
260
260
|
|
|
261
261
|
## 活動 {#events}
|
|
262
262
|
|
|
@@ -264,25 +264,25 @@ const last = await getLatestAgentHarnessSessionForThread(threadId);
|
|
|
264
264
|
轉換為標準 `AgentChatEvent` 流
|
|
265
265
|
`agentHarnessEventToAgentChatEvents`。事件聯盟覆蓋`text-delta`,
|
|
266
266
|
`thinking-delta`、`activity`、`tool-start`、`tool-done`(可攜帶
|
|
267
|
-
`mcpApp`
|
|
267
|
+
`mcpApp` 原生小工具的負載)、`approval-request`、`file-change`,
|
|
268
268
|
`compaction`、`usage`、`error` 和 `done`。因為工具結果流經
|
|
269
|
-
|
|
269
|
+
相同的翻譯,動作聲明的本機小工具仍然呈現 - 請參閱
|
|
270
270
|
[Native 聊天介面](/docs/native-chat-ui).
|
|
271
271
|
|
|
272
|
-
##
|
|
272
|
+
## 背景執行和 UI {#background-runs}
|
|
273
273
|
|
|
274
274
|
Harness 將專案執行到共用的 `BackgroundAgentRun` 形狀中
|
|
275
|
-
`createAgentHarnessBackgroundAgentController()`
|
|
276
|
-
|
|
277
|
-
程式碼或 Codex
|
|
278
|
-
|
|
275
|
+
`createAgentHarnessBackgroundAgentController()` 並可透過
|
|
276
|
+
現有執行路由為`goalId=agent-harness`。這意味著長期執行的 Claude
|
|
277
|
+
程式碼或 Codex 工作階段出現在相同的背景執行和轉錄表面中
|
|
278
|
+
作為代理團隊和其他轉接器,使用 `listAgentHarnessBackgroundRuns`,
|
|
279
279
|
`listAgentHarnessBackgroundTranscriptEvents`、`getAgentHarnessBackgroundRun` 和
|
|
280
280
|
`stopAgentHarnessBackgroundRun` 可用於自訂主機。
|
|
281
281
|
|
|
282
|
-
##
|
|
282
|
+
## 自訂轉接器 {#custom-adapters}
|
|
283
283
|
|
|
284
|
-
|
|
285
|
-
`AgentHarnessAdapter`
|
|
284
|
+
要包裝不是內建函式之一的執行時,請實現
|
|
285
|
+
`AgentHarnessAdapter` 並註冊它。轉接器聲明其功能並且
|
|
286
286
|
建立工作階段;工作階段公開 `streamTurn` 和可選的 `continueTurn`,
|
|
287
287
|
`approve`、`detach`、`stop` 和 `destroy`。
|
|
288
288
|
|
|
@@ -320,21 +320,21 @@ registerAgentHarness({
|
|
|
320
320
|
});
|
|
321
321
|
```
|
|
322
322
|
|
|
323
|
-
|
|
324
|
-
`installPackage`
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
(`createAiSdkHarnessAdapter`,由 `@ai-sdk/harness` 的 `HarnessAgent`
|
|
323
|
+
透過 `createSession` 中的動態匯入和一個
|
|
324
|
+
`installPackage` 提示。對於橋支援的編碼線束,需要真正的
|
|
325
|
+
沙箱/工作區提供者,而不是在中執行任意編碼代理
|
|
326
|
+
主機行程 - 請參閱 [Sandbox Adapters](/docs/sandbox-adapters)。 AI SDK 轉接器
|
|
327
|
+
(`createAiSdkHarnessAdapter`,由 `@ai-sdk/harness` 的 `HarnessAgent` 支援)是
|
|
328
328
|
此合約的一個實現,而不是公開抽象。
|
|
329
329
|
|
|
330
330
|
## 不要 {#donts}
|
|
331
331
|
|
|
332
|
-
- 請勿將 Claude 程式碼、Codex
|
|
333
|
-
|
|
332
|
+
- 請勿將 Claude 程式碼、Codex、游標、Mastra 或 Pi 新增為 `AgentEngine`。他們
|
|
333
|
+
擁有自己的迴圈;在 `AgentEngine.stream()` 下執行一個雙執行迴圈
|
|
334
334
|
並丟失工作階段生命週期語義。
|
|
335
335
|
- 不要每回合將完整的 Agent-Native 聊天歷史紀錄重播到安全帶中。簡歷
|
|
336
336
|
使用 `resumeState` 的線束工作階段。
|
|
337
|
-
- 不要將`resumeState
|
|
337
|
+
- 不要將`resumeState`儲存在`application_state`中。它屬於安全帶
|
|
338
338
|
工作階段 SQL 表。
|
|
339
339
|
- 預設情況下,不要將每個應用操作公開給每個線束工作階段。遞給它
|
|
340
340
|
小型、專用工具集。
|
|
@@ -344,6 +344,6 @@ registerAgentHarness({
|
|
|
344
344
|
- [Native 聊天介面](/docs/native-chat-ui) — 將您自己的代理置於 UI 與 `AgentChatRuntime` 的聊天後面。
|
|
345
345
|
- [Agent Surfaces](/docs/agent-surfaces) — 選取無頭、聊天、邊車或完整應用。
|
|
346
346
|
- [Agent-Native Code UI](/docs/code-agents-ui) — 可重用的編碼工作區表面。
|
|
347
|
-
- [Custom Agents & Teams](/docs/agent-teams) —
|
|
347
|
+
- [Custom Agents & Teams](/docs/agent-teams) — 背景執行和子代理委派。
|
|
348
348
|
- [Sandbox Adapters](/docs/sandbox-adapters) — 用於編碼工具的可插入執行後端。
|
|
349
|
-
- [Human Approval](/docs/human-approval) —
|
|
349
|
+
- [Human Approval](/docs/human-approval) — 核准表面線束執行使用。
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "
|
|
3
|
-
description: "在高後果操作執行之前暫停代理 - defineAction 的 needApproval 門會發出一個approval_required
|
|
2
|
+
title: "人在環核准"
|
|
3
|
+
description: "在高後果操作執行之前暫停代理 - defineAction 的 needApproval 門會發出一個approval_required 事件,人工核准,然後工具才會執行。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# 人在環核准
|
|
7
7
|
|
|
8
|
-
大多數 actions
|
|
8
|
+
大多數 actions 應該直接執行。其中一些操作(傳送電子郵件、為卡充值、刪除帳戶)是面向外部且難以復原的,您不希望代理自主執行這些操作。對於這些,`defineAction` 有一個選取加入的**核准門**:當代理嘗試呼叫該操作時,迴圈會暫停,向人類顯示核准/拒絕功能,並*僅*在人類核准該特定呼叫後才執行該操作。
|
|
9
9
|
|
|
10
10
|
> [!WARNING]
|
|
11
|
-
>
|
|
11
|
+
> 保持很少的核准。每個門控操作都是代理迴圈中的硬停止——它會中斷執行並需要人工往返。僅將 `needsApproval` 用於真正後果嚴重、難以撤銷、面向外的操作。如果您發現自己對讀取或例行寫入進行門控,那麼您就錯了。預設為**關閉**,幾乎每個操作都應將其關閉。
|
|
12
12
|
|
|
13
13
|
## `needsApproval` 門 {#needs-approval}
|
|
14
14
|
|
|
@@ -20,67 +20,67 @@ description: "在高後果操作執行之前暫停代理 - defineAction 的 need
|
|
|
20
20
|
"language": "ts",
|
|
21
21
|
"code": "export default defineAction({\n description: \"Send an email via Gmail.\",\n schema: z.object({\n to: z.string(),\n subject: z.string(),\n body: z.string(),\n }),\n // Sending is outward-facing and hard to undo, so the agent can never send\n // without a human approving the specific call. Drafting/queueing is\n // unaffected — only the real send is gated.\n needsApproval: true,\n run: async (args) => {\n /* ...actually send... */\n },\n});",
|
|
22
22
|
"annotations": [
|
|
23
|
-
{ "lines": "10", "label": "整個大門", "note": "
|
|
24
|
-
{ "lines": "11-13", "label": "run() is untouched", "note": "
|
|
23
|
+
{ "lines": "10", "label": "整個大門", "note": "一面旗帜。當它為真且呼叫未獲核准時,迴圈會在 `run` 之前停止 - 模型本身永遠不會達到副作用。" },
|
|
24
|
+
{ "lines": "11-13", "label": "run() is untouched", "note": "處理常式保持不變。核准是由其週圍的迴圈強制執行的,而不是由 `run` 內的任何內容強制執行。" }
|
|
25
25
|
]
|
|
26
26
|
}
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
- **`needsApproval: true`** —
|
|
30
|
-
- **`needsApproval: (args, ctx) => boolean | Promise<boolean>`** — 僅當謂詞返回 true
|
|
29
|
+
- **`needsApproval: true`** — 始終需要核准。
|
|
30
|
+
- **`needsApproval: (args, ctx) => boolean | Promise<boolean>`** — 僅當謂詞返回 true 時才需要核准。有條件地選取門,例如僅適用於外部收件人或僅高於美元閾值:
|
|
31
31
|
|
|
32
32
|
```ts
|
|
33
33
|
needsApproval: (args) => !args.to.endsWith("@your-company.com"),
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
保持謂詞純粹且快速。
|
|
36
|
+
保持謂詞純粹且快速。 **關閉失敗**:如果謂詞拋出異常,框架會將其視為“需要核准”,而不是默默地執行後果嚴重的操作。
|
|
37
37
|
|
|
38
|
-
當 `needsApproval`
|
|
38
|
+
當 `needsApproval` 被省略時,行為是逐位元組不變的——公開路徑上沒有額外的成本。
|
|
39
39
|
|
|
40
|
-
這對於舊版 `parameters` 樣式的 actions 和基於架構的 actions,以及應用內代理、子代理、A2A 和 MCP
|
|
40
|
+
這對於舊版 `parameters` 樣式的 actions 和基於架構的 actions,以及應用內代理、子代理、A2A 和 MCP 呼叫者(每個代理透過同一迴圈進行表面路由)的工作原理相同。
|
|
41
41
|
|
|
42
|
-
##
|
|
42
|
+
## 迴圈如何暫停 {#loop}
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
當代理呼叫門控操作並且此特定呼叫尚未獲得核准時,迴圈不會執行 `run()`。相反,它:
|
|
45
45
|
|
|
46
|
-
1.
|
|
46
|
+
1. 解析門。對於謂詞,它呼叫`needsApproval(input, ctx)`;拋出被視為“必須核准”(失敗關閉)。
|
|
47
47
|
2. 發出 `tool_start` 事件(以便 UI 顯示呼叫),然後立即發出 **`approval_required`** 事件,然後停止轉彎。該操作的副作用永遠不會發生。
|
|
48
48
|
|
|
49
49
|
`approval_required` 事件包含用戶端呈現可供性所需的一切:
|
|
50
50
|
|
|
51
|
-
| 欄位 | 型別 |
|
|
51
|
+
| 欄位 | 型別 | 註解 |
|
|
52
52
|
| ------------- | -------- | -------------------------------------------- |
|
|
53
|
-
| `tool` | `string` |
|
|
53
|
+
| `tool` | `string` | 代理嘗試呼叫的操作名稱。 |
|
|
54
54
|
| `input` | 物件 | 代理傳遞的參數。 |
|
|
55
|
-
| `approvalKey` | `string` |
|
|
56
|
-
| `toolCallId` | `string` |
|
|
55
|
+
| `approvalKey` | `string` | **穩定金鑰**用戶端回顯以核准*此確切的呼叫*。 |
|
|
56
|
+
| `toolCallId` | `string` | 模型端工具呼叫 ID(如果可用)。 |
|
|
57
57
|
|
|
58
|
-
`approvalKey`
|
|
58
|
+
`approvalKey` 是根據工具名稱及其輸入確定性派生的,因此相同的邏輯呼叫始終會生成相同的金鑰。模型永遠不會看到或設定它 - 它純粹是框架和人類的核准功能之間的握手。
|
|
59
59
|
|
|
60
60
|
暫停工具返回一個結果,告訴模型轉動已暫停並且不再重試,因此模型不會旋轉。
|
|
61
61
|
|
|
62
62
|
## 人類如何認可 {#approve}
|
|
63
63
|
|
|
64
|
-
在 `approval_required` 上,聊天 UI
|
|
64
|
+
在 `approval_required` 上,聊天 UI 在暫停的工具呼叫上呈現 **核准/拒絕** 提示。這是在 `AssistantChat` 中自動連線的 - 您無需根據範本建置它。
|
|
65
65
|
|
|
66
|
-
-
|
|
66
|
+
- **核准**重新發出在 `approvedToolCalls: [approvalKey]` 中攜帶呼叫金鑰的輪次(普通的繼續訊息)。在重新發出的回合中,門會看到已核准的集合中的金鑰,並讓特定的呼叫正常執行。
|
|
67
67
|
- **Deny** 在本機消除可供性;沒有重新發出任何內容,因此該操作永遠不會執行。
|
|
68
68
|
|
|
69
|
-
`approvedToolCalls` 是聊天請求 (`AgentChatRequest.approvedToolCalls`) 上的欄位。其中不存在的金鑰將保持暫停狀態 -
|
|
69
|
+
`approvedToolCalls` 是聊天請求 (`AgentChatRequest.approvedToolCalls`) 上的欄位。其中不存在的金鑰將保持暫停狀態 - 核准一個呼叫永遠不會茫然地核准其他呼叫。因為金鑰是內容尋址的,所以核准授權*使用這些參數進行呼叫*;如果模型稍後建議不同的傳送,那就是新的金鑰和新的核准。
|
|
70
70
|
|
|
71
71
|
## 端對端 {#flow}
|
|
72
72
|
|
|
73
|
-
```an-diagram title="
|
|
73
|
+
```an-diagram title="核准中斷" summary="門控呼叫會在 run() 觸發之前暫停回合。核准重新發出攜帶呼叫金鑰的回合;只有這樣,副作用才會發生。"
|
|
74
74
|
{
|
|
75
|
-
"html": "<div class=\"diagram-approve\"><div class=\"diagram-box\" data-rough
|
|
75
|
+
"html": "<div class=\"diagram-approve\"><div class=\"diagram-box\" data-rough>代理呼叫 send-email</div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↓</div><div class=\"diagram-panel warn\" data-rough><strong>Gate 為真,呼叫尚未核准</strong><small class=\"diagram-muted\">loop emits tool_start + approval_required { tool, input, approvalKey }</small><span class=\"diagram-pill warn\">turn pauses — run() did NOT execute</span></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↓</div><div class=\"diagram-box\" data-rough>人在聊天中點選核准<br><small class=\"diagram-muted\">用戶端用 approvedToolCalls: [approvalKey] 重新發起本輪</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↓</div><div class=\"diagram-panel ok\" data-rough><span class=\"diagram-pill ok\">Gate sees the key → run() executes → email sends</span></div></div>",
|
|
76
76
|
"css": ".diagram-approve{display:flex;flex-direction:column;align-items:center;gap:8px}.diagram-approve .diagram-panel{display:flex;flex-direction:column;gap:6px;align-items:center;padding:12px 16px;text-align:center}.diagram-approve .diagram-arrow{font-size:22px;line-height:1}"
|
|
77
77
|
}
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
-
在框架中此門的典型(並且故意很少)使用是郵件範本的 `send-email` 操作,該操作設定 `needsApproval: true
|
|
80
|
+
在框架中此門的典型(並且故意很少)使用是郵件範本的 `send-email` 操作,該操作設定 `needsApproval: true`,以便代理可以自由起草和排隊,但在沒有人工核准特定傳送的情況下永遠無法實際傳送訊息。
|
|
81
81
|
|
|
82
82
|
## 相關
|
|
83
83
|
|
|
84
84
|
- [**Actions**](/docs/actions#needs-approval) — 完整的 `defineAction` 表面,包括用於驗證返回值的 `outputSchema`。
|
|
85
|
-
- [**Security**](/docs/security) -
|
|
85
|
+
- [**Security**](/docs/security) - 何時達到核准門與向模型隱藏操作。
|
|
86
86
|
- [**Mail template**](/docs/template-mail) — `send-email` 是參考範例。
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "國際化"
|
|
3
|
-
description: "使用共用區域設定目錄、語言選取器、瀏覽器語言回退和區域設定感知檔案內容本機化 Agent
|
|
3
|
+
description: "使用共用區域設定目錄、語言選取器、瀏覽器語言回退和區域設定感知檔案內容本機化 Agent-Native 應用。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 國際化
|
|
7
7
|
|
|
8
|
-
Agent
|
|
9
|
-
`@agent-native/core/client/i18n`
|
|
8
|
+
Agent-Native 應用程式可以透過共用本機化框架和範本 UI
|
|
9
|
+
`@agent-native/core/client/i18n` 執行時。框架儲存使用者的
|
|
10
10
|
SQL 設定中的語言選取,將其公開為 actions,並回退到
|
|
11
11
|
當應用尚未翻譯字串時為英語。
|
|
12
12
|
|
|
13
13
|
## 執行時
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
透過`AppProviders`使用提供者:
|
|
16
16
|
|
|
17
17
|
```tsx
|
|
18
18
|
import { AppProviders, getLocaleInitScript } from "@agent-native/core/client";
|
|
@@ -31,9 +31,9 @@ const LOCALE_INIT_SCRIPT = getLocaleInitScript();
|
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
`getLocaleInitScript()` 設定初始 `lang`、`dir` 和
|
|
34
|
-
`window.__AGENT_NATIVE_LOCALE__` 在 React 水合之前。公開SSR
|
|
35
|
-
從`@agent-native/core/server
|
|
36
|
-
|
|
34
|
+
`window.__AGENT_NATIVE_LOCALE__` 在 React 水合之前。公開SSR路由可以
|
|
35
|
+
從`@agent-native/core/server`呼叫`resolveLocaleFromRequest()`並傳遞
|
|
36
|
+
將區域設定/目錄解析到該指令碼中以避免水合不匹配。
|
|
37
37
|
|
|
38
38
|
## 目錄
|
|
39
39
|
|
|
@@ -66,7 +66,7 @@ export const i18nCatalog = {
|
|
|
66
66
|
|
|
67
67
|
使用 `useT()` 作為介面字串,並將 `<LanguagePicker />` 放在應用程式的
|
|
68
68
|
`/settings` 頁面。側邊欄應用程式應在應用程式側邊欄中公開**設定**;
|
|
69
|
-
|
|
69
|
+
標題語言圖示只是一個快捷方式。
|
|
70
70
|
|
|
71
71
|
```tsx
|
|
72
72
|
import {
|
|
@@ -92,30 +92,30 @@ function SettingsPage() {
|
|
|
92
92
|
}
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
|
|
96
|
-
用於模型、API
|
|
95
|
+
“代理設定”控制項應開啟右側代理側邊欄的“設定”分頁
|
|
96
|
+
用於模型、API 按鍵、自動化、語音和其他框架級控制項。
|
|
97
97
|
應用可能會在自己的設定頁面中複製高價值的框架設定
|
|
98
98
|
當設定是應用程式的核心,但側邊欄設定分頁仍然是
|
|
99
99
|
事實來源。
|
|
100
100
|
|
|
101
|
-
使用 `useFormatters()`
|
|
101
|
+
使用 `useFormatters()` 表示日期、數字、相對時間和清單。不要放
|
|
102
102
|
翻譯字串中區域設定敏感的日期/數字格式。
|
|
103
103
|
|
|
104
104
|
## 檔案網站內容 {#docs-site-content}
|
|
105
105
|
|
|
106
|
-
|
|
106
|
+
公開檔案頁面使用相同的核心提供者,但具有
|
|
107
107
|
`persistPreference={false}` 因此匿名檔案流量使用 localStorage 和
|
|
108
108
|
瀏覽器語言而不是 SQL 設定 actions。英文來源程式碼保留在
|
|
109
|
-
`packages/core/docs/content/*.md
|
|
109
|
+
`packages/core/docs/content/*.md`。本機化頁面覆蓋其旁邊的即時頁面
|
|
110
110
|
`packages/core/docs/content/locales/<locale>/<slug>.md`.
|
|
111
111
|
|
|
112
112
|
使用與應用程式目錄相同的 BCP-47 區域設定程式碼。保留與
|
|
113
113
|
英文來源,在翻譯的標題上使用 `{#anchor}` 保留穩定的錨點,
|
|
114
|
-
|
|
114
|
+
並留下路由、操作名稱、協議欄位、環境變數和提供者名稱
|
|
115
115
|
未翻譯。如果某個語言環境沒有為頁面翻譯 Markdown,則檔案站點
|
|
116
116
|
該頁面恢復為英語,同時仍本機化導覽和 Chrome。
|
|
117
117
|
|
|
118
|
-
Docs Markdown 可能包含結構化的 `an-*`
|
|
118
|
+
Docs Markdown 可能包含結構化的 `an-*` 可視塊。請在合理時翻譯其中面向使用者的文字欄位,例如 file-tree 標題和 `entries[].note`、callout 內文、tab 標籤以及 annotated-code 的 labels/notes。保持穩定識別碼不變:檔名、路徑、env vars、路由字串、action 名稱、language tags、程式碼片段、JSON keys 和協議名稱。
|
|
119
119
|
|
|
120
120
|
## Actions和堅持
|
|
121
121
|
|
|
@@ -126,7 +126,7 @@ Docs Markdown 可能包含結構化的 `an-*` 可視塊。請在合理時翻譯
|
|
|
126
126
|
|
|
127
127
|
持久值存在於 `localization` 下的使用者範圍 SQL 設定中。
|
|
128
128
|
`localStorage` 僅用於預水合和匿名回退。主動
|
|
129
|
-
|
|
129
|
+
區域設定作為環境脈絡鏡像到應用程式狀態中,以便代理可以看到
|
|
130
130
|
目前介面語言。
|
|
131
131
|
|
|
132
132
|
## 守衛
|
|
@@ -137,11 +137,11 @@ Docs Markdown 可能包含結構化的 `an-*` 可視塊。請在合理時翻譯
|
|
|
137
137
|
pnpm guard:i18n-catalogs
|
|
138
138
|
```
|
|
139
139
|
|
|
140
|
-
|
|
140
|
+
守衛驗證支援的區域設定檔名、金鑰對等、預留位置對等,
|
|
141
141
|
過時的金鑰,以及 CLDR 複數類別到 `Intl.PluralRules`。它檢查
|
|
142
142
|
結構,而不是翻譯品質;高可見度字串仍然需要人類
|
|
143
143
|
審查。
|
|
144
144
|
|
|
145
|
-
|
|
146
|
-
|
|
145
|
+
不要翻譯穩定的識別碼,例如操作名稱、路由、枚舉值,
|
|
146
|
+
應用程式狀態鍵、資料庫值、協議欄位、環境變數名稱或提供者
|
|
147
147
|
名字。
|