@agent-native/core 0.79.1 → 0.79.5
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 +30 -0
- package/corpus/core/docs/content/locales/zh-TW/a2a-protocol.md +392 -0
- package/corpus/core/docs/content/locales/zh-TW/actions.md +583 -0
- package/corpus/core/docs/content/locales/zh-TW/agent-mentions.md +164 -0
- package/corpus/core/docs/content/locales/zh-TW/agent-surfaces.md +397 -0
- package/corpus/core/docs/content/locales/zh-TW/agent-teams.md +171 -0
- package/corpus/core/docs/content/locales/zh-TW/agent-web-surfaces.md +161 -0
- package/corpus/core/docs/content/locales/zh-TW/audit-log.md +111 -0
- package/corpus/core/docs/content/locales/zh-TW/authentication.md +332 -0
- package/corpus/core/docs/content/locales/zh-TW/automations.md +268 -0
- package/corpus/core/docs/content/locales/zh-TW/blueprint-installer.md +83 -0
- package/corpus/core/docs/content/locales/zh-TW/cli-adapters.md +129 -0
- package/corpus/core/docs/content/locales/zh-TW/client.md +398 -0
- package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.md +114 -0
- package/corpus/core/docs/content/locales/zh-TW/code-agents-ui.md +436 -0
- package/corpus/core/docs/content/locales/zh-TW/components.md +368 -0
- package/corpus/core/docs/content/locales/zh-TW/context-awareness.md +373 -0
- package/corpus/core/docs/content/locales/zh-TW/creating-templates.md +411 -0
- package/corpus/core/docs/content/locales/zh-TW/cross-app-sso.md +188 -0
- package/corpus/core/docs/content/locales/zh-TW/database.md +183 -0
- package/corpus/core/docs/content/locales/zh-TW/deployment.md +348 -0
- package/corpus/core/docs/content/locales/zh-TW/dispatch.md +146 -0
- package/corpus/core/docs/content/locales/zh-TW/drop-in-agent.md +260 -0
- package/corpus/core/docs/content/locales/zh-TW/durable-resume.md +65 -0
- package/corpus/core/docs/content/locales/zh-TW/embedding-sdk.md +597 -0
- package/corpus/core/docs/content/locales/zh-TW/evals.md +155 -0
- package/corpus/core/docs/content/locales/zh-TW/extensions.md +360 -0
- package/corpus/core/docs/content/locales/zh-TW/external-agents.md +619 -0
- package/corpus/core/docs/content/locales/zh-TW/faq.md +142 -0
- package/corpus/core/docs/content/locales/zh-TW/file-uploads.md +122 -0
- package/corpus/core/docs/content/locales/zh-TW/frames.md +153 -0
- package/corpus/core/docs/content/locales/zh-TW/getting-started.md +199 -0
- package/corpus/core/docs/content/locales/zh-TW/harness-agents.md +349 -0
- package/corpus/core/docs/content/locales/zh-TW/human-approval.md +86 -0
- package/corpus/core/docs/content/locales/zh-TW/internationalization.md +147 -0
- package/corpus/core/docs/content/locales/zh-TW/key-concepts.md +312 -0
- package/corpus/core/docs/content/locales/zh-TW/local-file-mode.md +433 -0
- package/corpus/core/docs/content/locales/zh-TW/mcp-apps.md +147 -0
- package/corpus/core/docs/content/locales/zh-TW/mcp-clients.md +330 -0
- package/corpus/core/docs/content/locales/zh-TW/mcp-protocol.md +279 -0
- package/corpus/core/docs/content/locales/zh-TW/messaging.md +461 -0
- package/corpus/core/docs/content/locales/zh-TW/migration-workbench.md +33 -0
- package/corpus/core/docs/content/locales/zh-TW/multi-app-workspace.md +312 -0
- package/corpus/core/docs/content/locales/zh-TW/multi-tenancy.md +52 -0
- package/corpus/core/docs/content/locales/zh-TW/native-chat-ui.md +321 -0
- package/corpus/core/docs/content/locales/zh-TW/notifications.md +231 -0
- package/corpus/core/docs/content/locales/zh-TW/observability.md +294 -0
- package/corpus/core/docs/content/locales/zh-TW/observational-memory.md +77 -0
- package/corpus/core/docs/content/locales/zh-TW/onboarding.md +216 -0
- package/corpus/core/docs/content/locales/zh-TW/plan-plugin.md +200 -0
- package/corpus/core/docs/content/locales/zh-TW/pr-visual-recap.md +384 -0
- package/corpus/core/docs/content/locales/zh-TW/processors.md +106 -0
- package/corpus/core/docs/content/locales/zh-TW/progress.md +199 -0
- package/corpus/core/docs/content/locales/zh-TW/pure-agent-apps.md +39 -0
- package/corpus/core/docs/content/locales/zh-TW/real-time-collaboration.md +680 -0
- package/corpus/core/docs/content/locales/zh-TW/recurring-jobs.md +142 -0
- package/corpus/core/docs/content/locales/zh-TW/routing.md +79 -0
- package/corpus/core/docs/content/locales/zh-TW/sandbox-adapters.md +227 -0
- package/corpus/core/docs/content/locales/zh-TW/security.md +330 -0
- package/corpus/core/docs/content/locales/zh-TW/server.md +265 -0
- package/corpus/core/docs/content/locales/zh-TW/sharing.md +219 -0
- package/corpus/core/docs/content/locales/zh-TW/skills-guide.md +281 -0
- package/corpus/core/docs/content/locales/zh-TW/template-analytics.md +259 -0
- package/corpus/core/docs/content/locales/zh-TW/template-assets.md +303 -0
- package/corpus/core/docs/content/locales/zh-TW/template-brain.md +324 -0
- package/corpus/core/docs/content/locales/zh-TW/template-calendar.md +194 -0
- package/corpus/core/docs/content/locales/zh-TW/template-chat.md +129 -0
- package/corpus/core/docs/content/locales/zh-TW/template-clips.md +368 -0
- package/corpus/core/docs/content/locales/zh-TW/template-content.md +402 -0
- package/corpus/core/docs/content/locales/zh-TW/template-design.md +173 -0
- package/corpus/core/docs/content/locales/zh-TW/template-dispatch.md +220 -0
- package/corpus/core/docs/content/locales/zh-TW/template-forms.md +178 -0
- package/corpus/core/docs/content/locales/zh-TW/template-mail.md +239 -0
- package/corpus/core/docs/content/locales/zh-TW/template-plan.md +814 -0
- package/corpus/core/docs/content/locales/zh-TW/template-slides.md +293 -0
- package/corpus/core/docs/content/locales/zh-TW/template-videos.md +222 -0
- package/corpus/core/docs/content/locales/zh-TW/tracking.md +236 -0
- package/corpus/core/docs/content/locales/zh-TW/using-your-agent.md +71 -0
- package/corpus/core/docs/content/locales/zh-TW/voice-input.md +81 -0
- package/corpus/core/docs/content/locales/zh-TW/what-is-agent-native.md +202 -0
- package/corpus/core/docs/content/locales/zh-TW/workspace-connections.md +321 -0
- package/corpus/core/docs/content/locales/zh-TW/workspace-management.md +175 -0
- package/corpus/core/docs/content/locales/zh-TW/workspace.md +323 -0
- package/corpus/core/docs/content/locales/zh-TW/writing-agent-instructions.md +173 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/client/ErrorBoundary.tsx +10 -0
- package/corpus/core/src/client/FeedbackButton.tsx +12 -0
- package/corpus/core/src/client/blocks/library/block-copy.ts +32 -0
- package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +33 -0
- package/corpus/core/src/client/i18n.tsx +5 -0
- package/corpus/core/src/localization/actions/set-localization-preference.ts +2 -1
- package/corpus/core/src/localization/shared.ts +45 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +54 -2
- package/corpus/core/src/server/onboarding-html.ts +99 -0
- package/corpus/core/src/templates/default/app/i18n/index.ts +2 -0
- package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +466 -0
- package/corpus/core/src/templates/default/app/root.tsx +8 -0
- package/corpus/templates/analytics/app/i18n/index.ts +2 -0
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +818 -0
- package/corpus/templates/analytics/app/i18n-data.ts +9 -0
- package/corpus/templates/assets/app/i18n/index.ts +2 -0
- package/corpus/templates/assets/app/i18n/zh-TW.ts +860 -0
- package/corpus/templates/assets/app/i18n-data.ts +3 -0
- package/corpus/templates/brain/app/i18n/index.ts +2 -0
- package/corpus/templates/brain/app/i18n/zh-TW.ts +709 -0
- package/corpus/templates/brain/app/i18n-data.ts +3 -0
- package/corpus/templates/calendar/app/i18n/zh-TW.ts +836 -0
- package/corpus/templates/calendar/app/i18n-data.ts +4 -0
- package/corpus/templates/chat/app/i18n/index.ts +2 -0
- package/corpus/templates/chat/app/i18n/zh-TW.ts +67 -0
- package/corpus/templates/chat/app/i18n-data.ts +3 -0
- package/corpus/templates/clips/app/i18n/index.ts +2 -0
- package/corpus/templates/clips/app/i18n/zh-TW.ts +1280 -0
- package/corpus/templates/content/app/i18n/index.ts +2 -0
- package/corpus/templates/content/app/i18n/zh-TW.ts +906 -0
- package/corpus/templates/content/app/i18n-data.ts +4 -0
- package/corpus/templates/design/app/i18n/index.ts +2 -0
- package/corpus/templates/design/app/i18n/zh-TW.ts +517 -0
- package/corpus/templates/design/app/i18n-data.ts +6 -0
- package/corpus/templates/dispatch/app/i18n/index.ts +2 -0
- package/corpus/templates/dispatch/app/i18n/zh-TW.ts +195 -0
- package/corpus/templates/dispatch/app/i18n-data.ts +3 -0
- package/corpus/templates/forms/app/i18n/index.ts +2 -0
- package/corpus/templates/forms/app/i18n/zh-TW.ts +349 -0
- package/corpus/templates/macros/app/i18n/index.ts +2 -0
- package/corpus/templates/macros/app/i18n/zh-TW.ts +224 -0
- package/corpus/templates/mail/app/i18n/index.ts +2 -0
- package/corpus/templates/mail/app/i18n/zh-TW.ts +562 -0
- package/corpus/templates/mail/app/root.tsx +6 -0
- package/corpus/templates/plan/app/i18n/index.ts +2 -0
- package/corpus/templates/plan/app/i18n/zh-TW.ts +712 -0
- package/corpus/templates/slides/app/i18n/index.ts +2 -0
- package/corpus/templates/slides/app/i18n/zh-TW.ts +531 -0
- package/corpus/templates/videos/app/i18n/index.ts +2 -0
- package/corpus/templates/videos/app/i18n/zh-TW.ts +435 -0
- package/dist/client/ErrorBoundary.d.ts.map +1 -1
- package/dist/client/ErrorBoundary.js +10 -0
- package/dist/client/ErrorBoundary.js.map +1 -1
- package/dist/client/FeedbackButton.d.ts.map +1 -1
- package/dist/client/FeedbackButton.js +12 -0
- package/dist/client/FeedbackButton.js.map +1 -1
- package/dist/client/blocks/library/block-copy.d.ts.map +1 -1
- package/dist/client/blocks/library/block-copy.js +32 -0
- package/dist/client/blocks/library/block-copy.js.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.js +32 -0
- package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
- package/dist/client/i18n.d.ts.map +1 -1
- package/dist/client/i18n.js +5 -0
- package/dist/client/i18n.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/localization/actions/set-localization-preference.d.ts.map +1 -1
- package/dist/localization/actions/set-localization-preference.js +2 -2
- package/dist/localization/actions/set-localization-preference.js.map +1 -1
- package/dist/localization/shared.d.ts +1 -1
- package/dist/localization/shared.d.ts.map +1 -1
- package/dist/localization/shared.js +43 -0
- package/dist/localization/shared.js.map +1 -1
- package/dist/resources/handlers.d.ts +2 -2
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +55 -2
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +96 -0
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/templates/default/app/i18n/index.ts +2 -0
- package/dist/templates/default/app/i18n/zh-TW.ts +466 -0
- package/dist/templates/default/app/root.tsx +8 -0
- package/docs/content/locales/zh-TW/a2a-protocol.md +392 -0
- package/docs/content/locales/zh-TW/actions.md +583 -0
- package/docs/content/locales/zh-TW/agent-mentions.md +164 -0
- package/docs/content/locales/zh-TW/agent-surfaces.md +397 -0
- package/docs/content/locales/zh-TW/agent-teams.md +171 -0
- package/docs/content/locales/zh-TW/agent-web-surfaces.md +161 -0
- package/docs/content/locales/zh-TW/audit-log.md +111 -0
- package/docs/content/locales/zh-TW/authentication.md +332 -0
- package/docs/content/locales/zh-TW/automations.md +268 -0
- package/docs/content/locales/zh-TW/blueprint-installer.md +83 -0
- package/docs/content/locales/zh-TW/cli-adapters.md +129 -0
- package/docs/content/locales/zh-TW/client.md +398 -0
- package/docs/content/locales/zh-TW/cloneable-saas.md +114 -0
- package/docs/content/locales/zh-TW/code-agents-ui.md +436 -0
- package/docs/content/locales/zh-TW/components.md +368 -0
- package/docs/content/locales/zh-TW/context-awareness.md +373 -0
- package/docs/content/locales/zh-TW/creating-templates.md +411 -0
- package/docs/content/locales/zh-TW/cross-app-sso.md +188 -0
- package/docs/content/locales/zh-TW/database.md +183 -0
- package/docs/content/locales/zh-TW/deployment.md +348 -0
- package/docs/content/locales/zh-TW/dispatch.md +146 -0
- package/docs/content/locales/zh-TW/drop-in-agent.md +260 -0
- package/docs/content/locales/zh-TW/durable-resume.md +65 -0
- package/docs/content/locales/zh-TW/embedding-sdk.md +597 -0
- package/docs/content/locales/zh-TW/evals.md +155 -0
- package/docs/content/locales/zh-TW/extensions.md +360 -0
- package/docs/content/locales/zh-TW/external-agents.md +619 -0
- package/docs/content/locales/zh-TW/faq.md +142 -0
- package/docs/content/locales/zh-TW/file-uploads.md +122 -0
- package/docs/content/locales/zh-TW/frames.md +153 -0
- package/docs/content/locales/zh-TW/getting-started.md +199 -0
- package/docs/content/locales/zh-TW/harness-agents.md +349 -0
- package/docs/content/locales/zh-TW/human-approval.md +86 -0
- package/docs/content/locales/zh-TW/internationalization.md +147 -0
- package/docs/content/locales/zh-TW/key-concepts.md +312 -0
- package/docs/content/locales/zh-TW/local-file-mode.md +433 -0
- package/docs/content/locales/zh-TW/mcp-apps.md +147 -0
- package/docs/content/locales/zh-TW/mcp-clients.md +330 -0
- package/docs/content/locales/zh-TW/mcp-protocol.md +279 -0
- package/docs/content/locales/zh-TW/messaging.md +461 -0
- package/docs/content/locales/zh-TW/migration-workbench.md +33 -0
- package/docs/content/locales/zh-TW/multi-app-workspace.md +312 -0
- package/docs/content/locales/zh-TW/multi-tenancy.md +52 -0
- package/docs/content/locales/zh-TW/native-chat-ui.md +321 -0
- package/docs/content/locales/zh-TW/notifications.md +231 -0
- package/docs/content/locales/zh-TW/observability.md +294 -0
- package/docs/content/locales/zh-TW/observational-memory.md +77 -0
- package/docs/content/locales/zh-TW/onboarding.md +216 -0
- package/docs/content/locales/zh-TW/plan-plugin.md +200 -0
- package/docs/content/locales/zh-TW/pr-visual-recap.md +384 -0
- package/docs/content/locales/zh-TW/processors.md +106 -0
- package/docs/content/locales/zh-TW/progress.md +199 -0
- package/docs/content/locales/zh-TW/pure-agent-apps.md +39 -0
- package/docs/content/locales/zh-TW/real-time-collaboration.md +680 -0
- package/docs/content/locales/zh-TW/recurring-jobs.md +142 -0
- package/docs/content/locales/zh-TW/routing.md +79 -0
- package/docs/content/locales/zh-TW/sandbox-adapters.md +227 -0
- package/docs/content/locales/zh-TW/security.md +330 -0
- package/docs/content/locales/zh-TW/server.md +265 -0
- package/docs/content/locales/zh-TW/sharing.md +219 -0
- package/docs/content/locales/zh-TW/skills-guide.md +281 -0
- package/docs/content/locales/zh-TW/template-analytics.md +259 -0
- package/docs/content/locales/zh-TW/template-assets.md +303 -0
- package/docs/content/locales/zh-TW/template-brain.md +324 -0
- package/docs/content/locales/zh-TW/template-calendar.md +194 -0
- package/docs/content/locales/zh-TW/template-chat.md +129 -0
- package/docs/content/locales/zh-TW/template-clips.md +368 -0
- package/docs/content/locales/zh-TW/template-content.md +402 -0
- package/docs/content/locales/zh-TW/template-design.md +173 -0
- package/docs/content/locales/zh-TW/template-dispatch.md +220 -0
- package/docs/content/locales/zh-TW/template-forms.md +178 -0
- package/docs/content/locales/zh-TW/template-mail.md +239 -0
- package/docs/content/locales/zh-TW/template-plan.md +814 -0
- package/docs/content/locales/zh-TW/template-slides.md +293 -0
- package/docs/content/locales/zh-TW/template-videos.md +222 -0
- package/docs/content/locales/zh-TW/tracking.md +236 -0
- package/docs/content/locales/zh-TW/using-your-agent.md +71 -0
- package/docs/content/locales/zh-TW/voice-input.md +81 -0
- package/docs/content/locales/zh-TW/what-is-agent-native.md +202 -0
- package/docs/content/locales/zh-TW/workspace-connections.md +321 -0
- package/docs/content/locales/zh-TW/workspace-management.md +175 -0
- package/docs/content/locales/zh-TW/workspace.md +323 -0
- package/docs/content/locales/zh-TW/writing-agent-instructions.md +173 -0
- package/package.json +1 -1
- package/src/templates/default/app/i18n/index.ts +2 -0
- package/src/templates/default/app/i18n/zh-TW.ts +466 -0
- package/src/templates/default/app/root.tsx +8 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "代理團隊"
|
|
3
|
+
description: "主代理代表向在自己的線程中執行的子代理工作,並在聊天中顯示為內嵌的實時預覽芯片。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 代理團隊
|
|
7
|
+
|
|
8
|
+
代理聊天是一個**協調器**,而不是一個整體。當主代理完成一項更適合由專家負責的工作時——“用我的聲音寫這封電子郵件”、“執行 BigQuery 分析”、“檢視此 PR”——它會在自己的線程、工具和上下文中生成一個子代理。子代理在主聊天中顯示為實時預覽**芯片**;點選它以分頁形式開啟完整對話。
|
|
9
|
+
|
|
10
|
+
這可以保持主線程集中,讓子代理並行執行,並為您提供任何委派工作的清晰審計跟蹤。
|
|
11
|
+
|
|
12
|
+
Agent Teams 在核心執行管理器上執行:事件流並持續,中止通過 SQL 傳播,工作在無伺服器冷啟動中幸存。
|
|
13
|
+
|
|
14
|
+
## 心智模型 {#mental-model}
|
|
15
|
+
|
|
16
|
+
- **主聊天** — 協調器。代表們,請閱讀您的請求。繁重的工作本身很少。
|
|
17
|
+
- **子代理** — 使用自己的線程、自己的系統提示符、自己的工具集執行。每個對應到 [workspace](/docs/workspace) 中的“自訂代理”設定檔案。
|
|
18
|
+
- **Chips** — 主聊天中內聯顯示的丰富預覽卡,顯示子代理的目前步驟、流輸出和最終摘要。預設折疊;點擊即可展開完整對話。
|
|
19
|
+
- **雙向訊息傳遞** - 主代理可以向正在執行的子代理發送後續訊息;當子代理遇到模糊點時可以回複訊息。
|
|
20
|
+
|
|
21
|
+
子代理狀態保留在 `application_state` SQL 表(在 `agent-task:<taskId>` 下)中,因此工作可以在無伺服器冷啟動中幸存並跨多個進程工作。
|
|
22
|
+
|
|
23
|
+
```an-diagram title="協調員和專家" summary="主聊天委托給在自己的線程中執行並作為內聯芯片報告的子代理。"
|
|
24
|
+
{
|
|
25
|
+
"html": "<div class=\"at-orc\"><div class=\"diagram-card main\"><span class=\"diagram-pill accent\">主聊天</span><small class=\"diagram-muted\">orchestrator — reads your request, delegates</small></div><div class=\"at-fan\"><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↓</div><div class=\"at-subs\"><div class=\"diagram-box\">程式碼評審<br><small class=\"diagram-muted\">own thread & prompt</small></div><div class=\"diagram-box\">BigQuery 分析<br><small class=\"diagram-muted\">own tools</small></div><div class=\"diagram-box\">語音郵件<br><small class=\"diagram-muted\">own context</small></div></div></div><div class=\"diagram-pill\">each appears inline as a live chip ↻</div></div>",
|
|
26
|
+
"css": ".at-orc{display:flex;flex-direction:column;align-items:center;gap:12px}.at-orc .diagram-card{padding:14px 18px;display:flex;flex-direction:column;gap:4px;align-items:center}.at-orc .at-fan{display:flex;flex-direction:column;align-items:center;gap:8px}.at-orc .diagram-arrow{font-size:22px}.at-orc .at-subs{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.at-orc .diagram-box{text-align:center}"
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 何時生成子代理 {#when-to-spawn}
|
|
31
|
+
|
|
32
|
+
工作出現時:
|
|
33
|
+
|
|
34
|
+
- 需要不同的**系統提示**(專業的聲音或語氣,例如“程式碼審查”)。
|
|
35
|
+
- 擁有一個**長時間執行**的工具鏈,會污染主要上下文。
|
|
36
|
+
- 可以與主代理正在執行的其他工作**並行**執行。
|
|
37
|
+
- 由一個**不同的團隊**擁有,該團隊已經擁有自訂代理設定檔案。
|
|
38
|
+
|
|
39
|
+
不要為了瑣碎的一次性工作而生成 - 直接調用操作。
|
|
40
|
+
|
|
41
|
+
## 調用子代理 {#invoking}
|
|
42
|
+
|
|
43
|
+
啟動子代理的三種方法,從最簡單到最明確:
|
|
44
|
+
|
|
45
|
+
### 1。 `@mention` 自訂代理 {#mention}
|
|
46
|
+
|
|
47
|
+
使用者在聊天編輯器中鍵入 `@agent-name`。將出現工作區子代理的下拉列表。選取其中一個插入芯片;提交後,主代理將訊息委托給該子代理。
|
|
48
|
+
|
|
49
|
+
自訂代理位於 `agents/<slug>.md` 的工作區中 — 一個帶有 YAML frontmatter 的 Markdown 檔案。格式請參見[Custom Agents](/docs/workspace#custom-agents)。
|
|
50
|
+
|
|
51
|
+
### 2。主代理自動委托 {#auto-delegate}
|
|
52
|
+
|
|
53
|
+
該框架為主代理提供了一個 `agent-teams` 工具。當模型確定工作適合已註冊的子代理設定檔案時,它會使用 `action: "spawn"` 和可選的 `agent` 參數調用該工具,該參數從 `agents/*.md` 命名設定檔案。出現一個芯片;子代理執行。主代理等待(或並行行動)並在子代理完成時合並結果。
|
|
54
|
+
|
|
55
|
+
完整的 `agent-teams` 操作集是:
|
|
56
|
+
|
|
57
|
+
| 行動 | 目的 |
|
|
58
|
+
| ------------- | -------------------------- |
|
|
59
|
+
| `spawn` | 啟動新的子代理工作 |
|
|
60
|
+
| `status` | 檢查正在執行的子代理的進度 |
|
|
61
|
+
| `read-result` | 獲取完成的子代理的輸出 |
|
|
62
|
+
| `send` | 向正在執行的子代理發送訊息 |
|
|
63
|
+
| `list` | 檢視目前使用者的所有工作 |
|
|
64
|
+
|
|
65
|
+
### 3。程序化生成 {#programmatic-spawn}
|
|
66
|
+
|
|
67
|
+
對於框架級整合,請使用 `@agent-native/core/server` 中的 `spawnTask()`:
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
import { spawnTask } from "@agent-native/core/server";
|
|
71
|
+
|
|
72
|
+
const task = await spawnTask({
|
|
73
|
+
description: "Draft an outreach email to this lead",
|
|
74
|
+
instructions: "Match Steve's voice from memory/MEMORY.md.",
|
|
75
|
+
ownerEmail: user.email,
|
|
76
|
+
systemPrompt: mailAgentSystemPrompt,
|
|
77
|
+
actions: mailActions,
|
|
78
|
+
// Pass either apiKey or engine — engine takes precedence.
|
|
79
|
+
apiKey: process.env.ANTHROPIC_API_KEY, // optional if engine is provided
|
|
80
|
+
parentSend: emit, // streaming sender for the parent chat response
|
|
81
|
+
});
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
大多數應用程式程式碼不會直接調用它 - 框架在 `@mentions` 和 `agent-teams` 工具的後台執行此操作。僅當您連線新的入口點(例如,啟動作為子代理執行的後台作業的按鈕)時,才需要使用 `spawnTask()`。
|
|
85
|
+
|
|
86
|
+
## 工作生命週期 {#lifecycle}
|
|
87
|
+
|
|
88
|
+
```an-diagram title="spawnTask() 的作用" summary="每個spawn都會建立一個線程,將狀態儲存到SQL,並將芯片事件流式傳輸直至完成。"
|
|
89
|
+
{
|
|
90
|
+
"html": "<div class=\"at-life\"><div class=\"diagram-box\"><code>spawnTask()</code></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↓</div><div class=\"diagram-card\"><span class=\"diagram-pill\">create thread</span><small class=\"diagram-muted\">new row in <code>chat_threads</code>, description as first message</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↓</div><div class=\"diagram-card\"><span class=\"diagram-pill\">persist state</span><small class=\"diagram-muted\"><code>agent-task:<id></code> → <code>application_state</code>, status=running</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↓</div><div class=\"diagram-card\"><span class=\"diagram-pill accent\">stream</span><small class=\"diagram-muted\"><code>agent_task_started</code> → chip appears; <code>agent_task_step</code> → chip updates live</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↓</div><div class=\"diagram-card ok\"><span class=\"diagram-pill ok\">complete</span><small class=\"diagram-muted\">status=completed, write summary + preview, emit <code>agent_task_done</code></small></div></div>",
|
|
91
|
+
"css": ".at-life{display:flex;flex-direction:column;align-items:stretch;gap:6px;max-width:560px}.at-life .diagram-card{display:flex;flex-direction:column;gap:3px;padding:10px 14px}.at-life .diagram-box{align-self:flex-start}.at-life .diagram-arrow{font-size:18px;align-self:center}"
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
父代理可以隨時通過 `sendToTask(taskId, message)` 恢復子代理並進行後續操作。如果子代理發生錯誤,`markTaskErrored(taskId, reason)` 會紀錄失敗並將其呈現給使用者。
|
|
96
|
+
|
|
97
|
+
雙向訊息傳遞是持久的。執行子代理的父級後續操作是
|
|
98
|
+
通過工作生命週期交付;如果子代理無法在
|
|
99
|
+
目前步驟,它們應該保持排隊並在安全的地方應用
|
|
100
|
+
延續點。子代理也可以在需要澄清時回複訊息
|
|
101
|
+
而不是無形地阻塞。
|
|
102
|
+
|
|
103
|
+
## 讀取工作狀態 {#reading-state}
|
|
104
|
+
|
|
105
|
+
來自伺服器程式碼或其他actions:
|
|
106
|
+
|
|
107
|
+
```ts
|
|
108
|
+
import { getTask, listTasks } from "@agent-native/core/server";
|
|
109
|
+
|
|
110
|
+
const task = await getTask(taskId); // single task
|
|
111
|
+
const tasks = await listTasks(); // all tasks for the user (sorted newest first)
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
`AgentTask` 關鍵欄位:
|
|
115
|
+
|
|
116
|
+
```ts
|
|
117
|
+
interface AgentTask {
|
|
118
|
+
taskId: string;
|
|
119
|
+
threadId: string;
|
|
120
|
+
description: string;
|
|
121
|
+
status: "running" | "completed" | "errored";
|
|
122
|
+
preview: string; // short one-liner for the chip
|
|
123
|
+
summary: string; // full summary once completed
|
|
124
|
+
currentStep: string; // latest step label (updated while running)
|
|
125
|
+
createdAt: number;
|
|
126
|
+
// Additional fields: parentThreadId, name, updatedAt, startedAt,
|
|
127
|
+
// completedAt, runId, error
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## 自訂代理設定檔案 {#profiles}
|
|
132
|
+
|
|
133
|
+
子代理對應到自訂代理設定檔案 - 工作區中 `agents/<slug>.md` 處的 Markdown 檔案,這些檔案顯示在 `@mention` 下拉列表中並用作委派目標。 [Workspace — Custom Agents](/docs/workspace#custom-agents) 擁有完整格式(frontmatter、`tools`、`delegate-default`、模型覆蓋)。
|
|
134
|
+
|
|
135
|
+
## 委托深度防護 {#depth-guard}
|
|
136
|
+
|
|
137
|
+
子代理可以產生子代理,這是一種失控/成本風險:無限的委托鏈可能會無限期地散開。該框架在伺服器端強制執行**委托深度**的硬上限,獨立於任何工具級防護。
|
|
138
|
+
|
|
139
|
+
頂級聊天深度為`0`。它生成的子代理深度為 `1`;該子代理可能會再次生成(深度 `2`);會建立深度 `3` 子代理的生成被 **拒絕**。預設上限為 **2**。
|
|
140
|
+
|
|
141
|
+
```an-diagram title="委派深度保護(預設上限 2)" summary="每一層都可能產生更深的一層,直到達到上限;超過它的生成將被伺服器端拒絕。"
|
|
142
|
+
{
|
|
143
|
+
"html": "<div class=\"at-depth\"><div class=\"diagram-card ok\"><span class=\"diagram-pill\">depth 0</span><strong>頂層聊天</strong><small class=\"diagram-muted ok\">may spawn ↓</small></div><div class=\"diagram-card ok\"><span class=\"diagram-pill\">depth 1</span><strong>子代理</strong><small class=\"diagram-muted ok\">may spawn ↓</small></div><div class=\"diagram-card warn\"><span class=\"diagram-pill warn\">depth 2</span><strong>子代理's sub-agent</strong><small class=\"diagram-muted\">at the cap — may NOT spawn</small></div><div class=\"diagram-card\"><span class=\"diagram-pill warn\">depth 3</span><strong>Refused</strong><small class=\"diagram-muted\">server-side error</small></div></div>",
|
|
144
|
+
"css": ".at-depth{display:flex;flex-direction:column;gap:8px}.at-depth .diagram-card{display:flex;flex-direction:column;gap:2px;padding:10px 14px}.at-depth .rung-1,.at-depth .diagram-card:nth-child(2){margin-inline-start:24px}.at-depth .diagram-card:nth-child(3){margin-inline-start:48px}.at-depth .diagram-card:nth-child(4){margin-inline-start:72px}"
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
執行是環境性的:每個子代理在紀錄其自身深度的 `AsyncLocalStorage` 內執行,因此從該執行傳遞到達的任何 `spawnTask` 都會讀取其父代的深度,並在達到上限後拒絕 - 即使 `agent-teams` 工具被交給不應該擁有它的子代理。該決定被公開為純粹的、可單元測試的 `evaluateSubagentDepth(parentDepth)`。被拒絕的生成會返回一個明確的錯誤:_“已達到委派深度限制(最大 N);無法生成另一個子代理。”_
|
|
149
|
+
|
|
150
|
+
### 設定上限 {#depth-guard-config}
|
|
151
|
+
|
|
152
|
+
使用 `AGENT_NATIVE_MAX_SUBAGENT_DEPTH` 覆蓋部署時的預設設定:
|
|
153
|
+
|
|
154
|
+
| 值 | 效果 |
|
|
155
|
+
| ------------ | --------------------------------------------------------------------------------------------------- |
|
|
156
|
+
| _(未設定)_ | `2`的預設上限。 |
|
|
157
|
+
| `0` | **不能生成任何子代理** - 頂級代理完成所有工作。 |
|
|
158
|
+
| `1`…`16` | 這么多級別的委派。 |
|
|
159
|
+
| 無效/`>16` | 非整數/負/NaN值回退到`2`; `16` 以上的任何內容都會被固定到 `16`,因此拼寫錯誤永遠不會停用防護裝置。 |
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
AGENT_NATIVE_MAX_SUBAGENT_DEPTH=1 # 允許分代理,但不能分代理
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
當子代理達到或低於上限時,框架會在其執行時上下文中注入一行,告訴它它的位置有多深以及是否可以進一步委托,以便模型適當地花費其預算。
|
|
166
|
+
|
|
167
|
+
## 下一步是什么
|
|
168
|
+
|
|
169
|
+
- [**Workspace — Custom Agents**](/docs/workspace#custom-agents) — 設定檔案格式
|
|
170
|
+
- [**A2A Protocol**](/docs/a2a-protocol) - 當“子代理”完全位於不同的應用程式中時
|
|
171
|
+
- [**Actions**](/docs/actions) — 子代理調用的工具
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "公開代理網路"
|
|
3
|
+
description: "使公開路線可爬行、可讀、可引用,並可選取由代理調用 - robots.txt、llms.txt、markdown 鏡像、JSON-LD 和公開 MCP 表面。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 公開代理網路
|
|
7
|
+
|
|
8
|
+
公開代理網路使公開 Agent-Native 路由易於代理抓取、閱讀、引用和調用。目標不是公開每個應用程式端點。目標是為已經公開的頁面發布一個幹淨的公開介面,同時將私人資料和工具存取保留在顯式控制之下。
|
|
9
|
+
|
|
10
|
+
檔案站點是參考實現。今天發貨:
|
|
11
|
+
|
|
12
|
+
- `/robots.txt` 的爬蟲策略預設允許檢索但不允許訓練。
|
|
13
|
+
- 當來源檔案公開它時,`/sitemap.xml` 具有絕對規範的 URL 和 `lastmod`。
|
|
14
|
+
- `/llms.txt` 和 `/llms-full.txt` 用於代理友好的內容發現。
|
|
15
|
+
- Markdown 鏡像,例如 `/docs/getting-started.md`。
|
|
16
|
+
- 正式環境建置後公開檔案頁面的 `Accept: text/markdown` 回應。
|
|
17
|
+
- JSON-LD 用於基礎組織、網站和頁面元資料。
|
|
18
|
+
- 審核 CLI (`npx @agent-native/core@latest audit-agent-web`),檢查上述所有內容。
|
|
19
|
+
|
|
20
|
+
設定 `publicMcp: true` 還會將選取加入的 actions 公開為公開 MCP 端點,允許外部代理直接調用它們(請參閱 [MCP Protocol](/docs/mcp-protocol))。
|
|
21
|
+
|
|
22
|
+
```an-diagram title="公開路由發布什么" summary="一條公開路線呈扇形展開,形成對代理人友好的代表。讀取路線與調用工具是分開的——工具存取保持選取加入。"
|
|
23
|
+
{
|
|
24
|
+
"html": "<div class=\"diagram-web\"><div class=\"diagram-box\" data-rough>公開路由<br><small class=\"diagram-muted\">derived from route access settings</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-grid\"><span class=\"diagram-pill\">robots.txt</span><span class=\"diagram-pill\">sitemap.xml</span><span class=\"diagram-pill\">llms.txt</span><span class=\"diagram-pill\">.md mirror</span><span class=\"diagram-pill\">JSON-LD</span><span class=\"diagram-pill\">text/markdown</span></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-col gate\"><span class=\"diagram-pill warn\">工具保持私人</span><small class=\"diagram-muted\">publicMcp + publicAgent.expose required</small></div></div>",
|
|
25
|
+
"css": ".diagram-web{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.diagram-web .diagram-arrow{font-size:22px;line-height:1}.diagram-web .diagram-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.diagram-web .gate{display:flex;flex-direction:column;gap:4px;align-items:flex-start}"
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 設定 {#config}
|
|
30
|
+
|
|
31
|
+
在現有工作區應用設定下新增 `agentWeb`(在應用的 `package.json` 中的 `agent-native` 鍵下 — 或等效的 `workspace.agentWeb`、`agentWeb` 或 `root.agentWeb`)。公開路由列表仍然來源於應用程式的路由存取設定; `agentWeb` 控制公開表面如何呈現給代理。
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"agent-native": {
|
|
36
|
+
"workspaceApp": {
|
|
37
|
+
"audience": "public",
|
|
38
|
+
"protectedPaths": ["/admin/*"],
|
|
39
|
+
"agentWeb": {
|
|
40
|
+
"discoverable": true,
|
|
41
|
+
"markdownTwins": true,
|
|
42
|
+
"llmsTxt": true,
|
|
43
|
+
"jsonLd": true,
|
|
44
|
+
"publicAgentCard": true,
|
|
45
|
+
"publicMcp": false,
|
|
46
|
+
"crawlerPolicy": "discoverable-no-training",
|
|
47
|
+
"crawlers": {
|
|
48
|
+
"training": "disallow",
|
|
49
|
+
"search": "allow",
|
|
50
|
+
"userTriggered": "allow",
|
|
51
|
+
"codingAgents": "allow",
|
|
52
|
+
"autonomousAgents": "allow"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
對於大多數應用程式,請保留預設值。如果應用有公開路由,則預設開啟`discoverable`。預設的爬蟲策略是“可發現,不可訓練”:允許搜尋、使用者觸發檢索、編碼代理、自主瀏覽代理;不允許訓練爬蟲。
|
|
61
|
+
|
|
62
|
+
## 路由真相來源 {#route-source}
|
|
63
|
+
|
|
64
|
+
代理 Web 發現遵循路由存取模型:
|
|
65
|
+
|
|
66
|
+
- 公開應用程式公開除 `protectedPaths` 之外的所有路線。
|
|
67
|
+
- 內部應用僅公開 `publicPaths`。
|
|
68
|
+
- 代理可以讀取公開共用和表單頁面。
|
|
69
|
+
- 提交的私人資料、經過驗證的儀表板和使用者/組織狀態永遠不會僅僅因為附近的頁面是公開的而包含在內。
|
|
70
|
+
|
|
71
|
+
這使混合應用程式保持自然。表單應用程式可以公開公開表單頁面並保持提交的私密性。內容應用程式可以公開已發布的帖子並保持編輯者的私密性。檔案網站可以公開除管理工具之外的所有內容。
|
|
72
|
+
|
|
73
|
+
## 公開頁面不是公開工具 {#public-tools}
|
|
74
|
+
|
|
75
|
+
公開頁面存取和公開工具存取是分開的。路線僅公開意味著代理可以將該路線讀取為 HTML、Markdown、站點地圖條目、llms 條目和結構化資料。
|
|
76
|
+
|
|
77
|
+
```an-callout
|
|
78
|
+
{
|
|
79
|
+
"tone": "warning",
|
|
80
|
+
"body": "**A public page is not a public tool.** Making a route crawlable never exposes an action. Tool access requires an explicit `publicAgent.expose` opt-in on the action *and* `publicMcp: true` on the app."
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
要通過公開代理協議公開操作,該操作必須選取加入:
|
|
85
|
+
|
|
86
|
+
```an-annotated-code title="在公開表面上選取一項安全行動"
|
|
87
|
+
{
|
|
88
|
+
"filename": "actions/search-docs.ts",
|
|
89
|
+
"language": "ts",
|
|
90
|
+
"code": "export default defineAction({\n description: \"搜尋 published docs\",\n readOnly: true,\n publicAgent: {\n expose: true,\n readOnly: true,\n requiresAuth: false,\n isConsequential: false,\n title: \"搜尋 published docs\",\n },\n run: async (args) => {\n // ...\n },\n});",
|
|
91
|
+
"annotations": [
|
|
92
|
+
{ "lines": "4", "label": "明確選取加入", "note": "Without `publicAgent.expose === true`, the action never appears on any public agent surface — no matter how public its routes are." },
|
|
93
|
+
{ "lines": "5-7", "label": "自我描述安全性", "note": "將其標記為唯讀,聲明它是否需要驗證,並標記它是否是重要的。除非策略明確允許,否則公開 MCP 排除 consequential/write 操作。" }
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
`agentWeb.publicMcp` 預設情況下保持 `false`。啟用公開 MCP 時,伺服器應僅公開 actions 和 `publicAgent.expose === true`,並且仍應排除後續或寫入 actions,除非操作和驗證策略明確允許它們。
|
|
99
|
+
|
|
100
|
+
## 建置時檔案 {#build-time}
|
|
101
|
+
|
|
102
|
+
`@agent-native/core/agent-web` 中的框架實用程序從一頁面列表生成通用檔案:
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
import {
|
|
106
|
+
buildAgentWebStaticFiles,
|
|
107
|
+
normalizeAgentWebConfig,
|
|
108
|
+
} from "@agent-native/core/agent-web";
|
|
109
|
+
|
|
110
|
+
const config = normalizeAgentWebConfig(
|
|
111
|
+
{ crawlerPolicy: "discoverable-no-training" },
|
|
112
|
+
{ hasPublicRoutes: true },
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
const files = buildAgentWebStaticFiles({
|
|
116
|
+
siteName: "My Agent-Native App",
|
|
117
|
+
siteUrl: "https://example.com",
|
|
118
|
+
description: "Public docs for my app.",
|
|
119
|
+
config,
|
|
120
|
+
pages: [
|
|
121
|
+
{
|
|
122
|
+
path: "/docs",
|
|
123
|
+
title: "Docs",
|
|
124
|
+
description: "Start here.",
|
|
125
|
+
markdown: "# 檔案\n\n從這裡開始。\n",
|
|
126
|
+
markdownPath: "/docs/getting-started.md",
|
|
127
|
+
lastmod: new Date(),
|
|
128
|
+
},
|
|
129
|
+
],
|
|
130
|
+
});
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Vite 應用可以在正式環境建置期間使用 `@agent-native/core/vite` 中的 `createAgentWebVitePlugin` 將這些檔案寫入 `public`、`dist`、`dist/client`、`dist/server/public` 或 `build/client`。
|
|
134
|
+
|
|
135
|
+
## 審核網站 {#audit}
|
|
136
|
+
|
|
137
|
+
對已部署站點或本機正式環境伺服器使用 CLI 審核:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
npx @agent-native/core@latest audit-agent-web --url https://www.agent-native.com
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
審核檢查:
|
|
144
|
+
|
|
145
|
+
- SSR-可見HTML。
|
|
146
|
+
- 規範 URL。
|
|
147
|
+
- JSON-LD。
|
|
148
|
+
- `robots.txt` 政策和絕對站點地圖 URL。
|
|
149
|
+
- 絕對站點地圖條目。
|
|
150
|
+
- `/llms.txt` 和 `/llms-full.txt`。
|
|
151
|
+
- Markdown 鏡子。
|
|
152
|
+
- `Accept: text/markdown`.
|
|
153
|
+
- 公開代理檢索使用者代理不會出現意外的 401/403 阻塞。
|
|
154
|
+
|
|
155
|
+
如果缺少所需的公開表面,審核將以非零值退出。
|
|
156
|
+
|
|
157
|
+
## 下一步是什么
|
|
158
|
+
|
|
159
|
+
- [**Actions**](/docs/actions) — 如何選取 actions 加入公開代理協議
|
|
160
|
+
- [**MCP Protocol**](/docs/mcp-protocol) — `publicMcp: true` 啟用的 MCP 表面
|
|
161
|
+
- [**Deployment**](/docs/deployment) - 這些靜態檔案在建置期間寫入的位置
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "審核記錄"
|
|
3
|
+
description: "持久的、僅附加的紀錄,紀錄誰更改了哪些應用資料、何時以及是您還是代理 - 在操作接縫處自動捕獲。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 審核記錄
|
|
7
|
+
|
|
8
|
+
每個代理本機應用程式都會獲得開箱即用的審核記錄:一個持久的、完整的、存取範圍的、僅附加的紀錄,紀錄**誰改變了哪些應用程式資料、何時、從哪裡以及(何時是代理)在哪個執行中。** 捕獲在操作接縫處自動進行;您無需為其編寫任何程式碼。
|
|
9
|
+
|
|
10
|
+
由於代理可以代表您更改資料,因此審核記錄在這裡回答的標題問題不僅僅是“誰編輯了此紀錄”,而是 **“是我還是代理,以及哪個輪次導致了它?”** 框架中沒有其他系統可以回答這個問題。
|
|
11
|
+
|
|
12
|
+
## 審計與可觀察性與跟蹤 {#which}
|
|
13
|
+
|
|
14
|
+
三個系統出於三個不同的原因紀錄“發生了什么”。根據您要問的問題進行選取:
|
|
15
|
+
|
|
16
|
+
| 系統 | 它回答的問題 | 保真度 | 觀眾 |
|
|
17
|
+
| ---------------------------------------- | -------------------------------------- | ---------------------- | ------------------------ |
|
|
18
|
+
| **審核記錄**(本頁面) | “誰更改了此紀錄,何時更改,是代理嗎?” | **完整、耐用、有範圍** | 使用者、管理員、代理本身 |
|
|
19
|
+
| **[Observability](/docs/observability)** | “代理為什么要這樣做,花費了多少?” | 采樣跨度遙測 | 開發人員 |
|
|
20
|
+
| **[Tracking](/docs/tracking)** | “人們如何使用該產品?” | 即發即忘外部 SaaS | PM/增長 |
|
|
21
|
+
|
|
22
|
+
采樣或發送給分析提供者的審核記錄是無用的 - 重點是它是完整的、本機的且可查詢的。所以它是它自己的子系統,而不是其他兩個的模式。
|
|
23
|
+
|
|
24
|
+
## 自動捕獲的內容 {#captured}
|
|
25
|
+
|
|
26
|
+
當任何 **mutating** 操作執行時(任何不是唯讀 `GET` 的操作),框架都會向 `agent_audit_log` 追加一行:
|
|
27
|
+
|
|
28
|
+
- **操作** — 操作名稱(例如 `delete-recording`)。
|
|
29
|
+
- **演員** - `agent`、`human` 或 `system`,加上演員的電子郵件 - 填充**即使是代理呼叫**,因此您會得到“代理,代表 alice@,...”。
|
|
30
|
+
- **執行連結** - 觸發調用(工具調用)的代理 `threadId` / `turnId`,因此突變可以追溯到確切的代理回合。
|
|
31
|
+
- **Surface** — `tool`(代理)、`frontend`、`http`、`cli`、`mcp` 或 `a2a`。
|
|
32
|
+
- **結果** — `success`、`error`(帶有錯誤程式碼)或 `denied`(被人工審批門阻止)。
|
|
33
|
+
- **輸入** — 調用參數,具有憑證形狀的值 [redacted](#privacy)。
|
|
34
|
+
- **目標和所有者** — 操作更改的資源,用於 [scope reads](#reading)。
|
|
35
|
+
|
|
36
|
+
無需接線 - 捕獲透明地連線到 `defineAction`。唯讀的actions會被跳過,並且預設會跳過一些高頻框架actions(app-statesync、context-xray、navigation)以避免記錄泛濫。
|
|
37
|
+
|
|
38
|
+
## 聲明操作更改了什么 {#target}
|
|
39
|
+
|
|
40
|
+
預設情況下,事件的範圍僅限於 **參與者** - 您可以看到自己的更改以及代理代表您所做的更改。要對*shared*資源進行更改也出現在**所有者的**跟蹤中,並按資源標記事件,請聲明`target`:
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
export default defineAction({
|
|
44
|
+
description: "Delete a recording.",
|
|
45
|
+
schema: z.object({ id: z.string() }),
|
|
46
|
+
audit: {
|
|
47
|
+
target: (args, result) => ({
|
|
48
|
+
type: "recording",
|
|
49
|
+
id: args.id,
|
|
50
|
+
// Optional — defaults to the actor. Set when editing someone else's resource.
|
|
51
|
+
ownerEmail: result?.ownerEmail,
|
|
52
|
+
visibility: "org",
|
|
53
|
+
}),
|
|
54
|
+
summary: (args) => `Deleted recording ${args.id}`,
|
|
55
|
+
},
|
|
56
|
+
run: async (args, ctx) => {
|
|
57
|
+
/* ...delete... */
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
`audit` 中的所有內容都是可選的。最小有用的新增是 `target: () => ({ type, id })`。
|
|
63
|
+
|
|
64
|
+
### 調整捕獲 {#tuning}
|
|
65
|
+
|
|
66
|
+
| 選項 | 效果 |
|
|
67
|
+
| -------------------- | -------------------------------------------- |
|
|
68
|
+
| `audit.target` | 使用向其所有者讀取的資源和範圍來標記事件。 |
|
|
69
|
+
| `audit.summary` | 該事件的人類可讀的簡短行。 |
|
|
70
|
+
| `audit.onRead` | 審核敏感的**讀取**(秘密存取、批量匯出)。 |
|
|
71
|
+
| `audit.enabled` | `true` 強制捕獲; `false` 選取排除噪聲突變。 |
|
|
72
|
+
| `audit.recordInputs` | `false` 跳過捕獲(已編輯的)參數。 |
|
|
73
|
+
|
|
74
|
+
## 閱讀蹤跡 {#reading}
|
|
75
|
+
|
|
76
|
+
每個應用程式中的代理**和**前端都可以使用兩個讀取的actions,調用者的範圍在SQL中 - 它們永遠不會返回其他租戶的行:
|
|
77
|
+
|
|
78
|
+
- **`list-audit-events`** — 按 `targetType` / `targetId`、`actorKind` (`agent` | `human` | `system`)、`status`、`threadId` / `turnId`、`action` 過濾, `sinceMs`、`limit`。
|
|
79
|
+
- **`get-audit-event`** — 按 id 的一個事件,包括其經過編輯的輸入負載。
|
|
80
|
+
|
|
81
|
+
通過使用 `useActionQuery` 從 UI 調用 `list-audit-events` 來建置活動來源或“誰更改了此”行 - 切勿手寫對審核表的提取:
|
|
82
|
+
|
|
83
|
+
```tsx
|
|
84
|
+
import { useActionQuery } from "@agent-native/core/client";
|
|
85
|
+
|
|
86
|
+
const { data } = useActionQuery("list-audit-events", {
|
|
87
|
+
targetType: "recording",
|
|
88
|
+
targetId: recordingId,
|
|
89
|
+
});
|
|
90
|
+
// data.events → [{ action, actorKind, actorEmail, turnId, status, summary, createdAt }, …]
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
代理可以調用相同的操作 - 詢問它“你對此錄音做了什么更改?”它會從蹤跡中回答。
|
|
94
|
+
|
|
95
|
+
## 隱私和保留 {#privacy}
|
|
96
|
+
|
|
97
|
+
- **編輯** - 在存儲任何輸入之前,憑證形狀的金鑰和值(權杖、秘密、密碼、承載字串)將被剝離,並截斷超大的有效負載。審核記錄永遠不會成為秘密的輔助存儲。也不要讓 `summary` 文本包含敏感資料。
|
|
98
|
+
- **僅追加** — 審核行沒有更新或刪除操作。唯一的刪除是保留清除,這使得記錄作為審計跟蹤值得信賴。
|
|
99
|
+
- **租戶隔離** — 讀取範圍僅限於調用者的身分和組織;沒有身分,沒有任何匹配。
|
|
100
|
+
|
|
101
|
+
通過環境設定:
|
|
102
|
+
|
|
103
|
+
- `AGENT_NATIVE_AUDIT_RETENTION_DAYS` — 行保留多長時間(預設 `365`;`0` = 永遠保留)。
|
|
104
|
+
- `AGENT_NATIVE_AUDIT_ENABLED=false` — 全域終止開關。
|
|
105
|
+
|
|
106
|
+
## 下一步是什么
|
|
107
|
+
|
|
108
|
+
- [**Actions**](/docs/actions) — 捕獲發生的 `defineAction` 接縫
|
|
109
|
+
- [**Human-in-the-Loop Approvals**](/docs/human-approval) — 門控 actions,紀錄為 `denied`
|
|
110
|
+
- [**Security & Data Scoping**](/docs/security) — 所有權模型審核讀取重用
|
|
111
|
+
- [**Observability**](/docs/observability) - 代理執行的遙測(另一個“發生了什么”)
|