@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,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "藍圖安裝程序"
|
|
3
|
+
description: "agent-native add 將精心策劃的 Markdown 整合配方列印到標準輸出 - 將其通過管道傳輸到您的編碼代理,該代理將針對您的實時儲存庫應用更改。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 藍圖安裝程序
|
|
7
|
+
|
|
8
|
+
> **這是誰的:** 新增提供者、渠道的主機作者和整合商,
|
|
9
|
+
> 沙箱後端,或通過將配方傳輸到其編碼代理中來對儲存庫進行操作。
|
|
10
|
+
|
|
11
|
+
`agent-native add` 不是\*\*一個為你編寫檔案的愚蠢的腳手架。它將精心策劃的 Markdown _整合藍圖_ 發送到標準輸出。您可以將該藍圖傳輸到您自己的編碼代理(Claude 程式碼、Codex 等)中,該代理將針對具有完整上下文的實時儲存庫應用更改。
|
|
12
|
+
|
|
13
|
+
這符合代理應用更改、檔案系統優先的風格:框架提供配方(要接觸的規範檔案、要遵守的規則、驗證步驟),編碼代理進行編輯。
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
agent-native add provider stripe | claude
|
|
17
|
+
agent-native add channel discord | codex
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
```an-diagram title="新增列印菜譜;您的編碼代理應用它" summary="agent-native 向 stdout 發出 Markdown 藍圖(對 stderr 進行診斷);您可以將其通過管道傳輸到 Claude Code 或 Codex,這將使用完整的上下文編輯您的實時儲存庫。"
|
|
21
|
+
{
|
|
22
|
+
"html": "<div class=\"diagram-bp\"><div class=\"diagram-node\" data-rough>agent-native add<br><small class=\"diagram-muted\"><kind> <name|URL></small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-box\" data-rough>Markdown 藍圖<br><small class=\"diagram-muted\">stdout · 要觸碰的檔案 · 規則 · 驗證</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-panel center\" data-rough>編碼 Agent<br><small class=\"diagram-muted\">claude · codex</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-pill ok\">edits your live repo</div></div>",
|
|
23
|
+
"css": ".diagram-bp{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.diagram-bp .diagram-arrow{font-size:22px;line-height:1}.diagram-bp .center{display:flex;flex-direction:column;align-items:center;gap:4px}"
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 用法 {#usage}
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
agent-native add <kind> <name> # print a curated blueprint
|
|
31
|
+
agent-native add <kind> <https://docs…> # 從 URL 進行研究和整合
|
|
32
|
+
agent-native add --list # list available kinds and blueprints
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
- 一個赤裸裸的**名字**就能解析出`blueprints/<kind>/<name>.md`精心策劃的藍圖。
|
|
36
|
+
- **URL**(而不是名稱)會發出此類的通用*研究和整合*藍圖,其中嵌入 URL 作為研究起點(URL 是研究種子,而不是已知配方)。
|
|
37
|
+
- 藍圖轉到 **stdout**;診斷會發送到 stderr,因此 `… | claude` 只會收到藍圖。
|
|
38
|
+
|
|
39
|
+
## 播種藍圖 {#seeded}
|
|
40
|
+
|
|
41
|
+
`agent-native add --list` 顯示包裝盒中的物品:
|
|
42
|
+
|
|
43
|
+
| 種類 | 姓名 | 它設定什么 |
|
|
44
|
+
| ---------- | --------- | ---------------------------------------------------------------------- |
|
|
45
|
+
| `provider` | `stripe` | 將提供程序連線到 `provider-api` 基板(目錄/檔案/請求三重奏)。 |
|
|
46
|
+
| `channel` | `discord` | 實現 `PlatformAdapter` 入站 Webhook 通道並註冊它。 |
|
|
47
|
+
| `sandbox` | `docker` | 實現 `SandboxAdapter` 接縫以在 Docker 容器中執行 `run-code`。 |
|
|
48
|
+
| `action` | `crud` | 新增具有 Zod 架構的單個多表面 `defineAction`(一個 `update` 超過 N)。 |
|
|
49
|
+
|
|
50
|
+
每個藍圖都是獨立的:讀取它的編碼代理獲取要接觸的檔案、要遵守的框架規則(actions 是單一事實來源、從不硬編碼秘密、範圍可擁有的資料、為 `packages/*` 來源新增變更集)以及具體的 **驗證** 部分。
|
|
51
|
+
|
|
52
|
+
## URL → 研究藍圖 {#url}
|
|
53
|
+
|
|
54
|
+
當您傳遞 URL 時,該型別沒有策劃的配方(或想要新的整合),`add` 會發出一個通用的“研究和整合”藍圖,以 URL 作為種子:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
agent-native add provider https://docs.example.com/api | claude
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
生成的藍圖告訴編碼代理獲取真實端點的 URL(及其連結到的頁面)、驗證模型、有效負載形狀和簽名/驗證要求(而不是從訓練資料中猜測),然後實施和驗證。它還帶有特定型別的指導(例如,`provider` URL 轉向 `provider-api` 基板;`channel` URL 轉向 `PlatformAdapter`)。
|
|
61
|
+
|
|
62
|
+
## 新增您自己的藍圖 {#authoring}
|
|
63
|
+
|
|
64
|
+
將 Markdown 檔案拖放到 `packages/core/blueprints/<kind>/<name>.md` 中。 kind 是子目錄;該名稱是不帶 `.md` 的檔案名。它是自動拾取的 - `--list`、名稱解析和目錄都在執行時讀取目錄。無需更改程式碼即可註冊。
|
|
65
|
+
|
|
66
|
+
藍圖 `.md` 檔案通過 `package.json` `files` 中的 `blueprints` 條目發送到已發布的包中,因此最終使用者可以在 `node_modules/@agent-native/core/blueprints/**` 上進行解析。
|
|
67
|
+
|
|
68
|
+
將每個藍圖編寫為編碼代理的指令集,沒有其他上下文。一個好的藍圖具有:
|
|
69
|
+
|
|
70
|
+
1. **一行目標**和“您是代理本機應用程式中的編碼代理,將這些作為真正的來源更改應用”框架。
|
|
71
|
+
2. **首先閱讀** - *是*合約的確切檔案。
|
|
72
|
+
3. **要接觸的檔案** - 具體路徑以及每個更改的作用。
|
|
73
|
+
4. **要遵守的框架規則** - actions-first,無硬編碼秘密,範圍可擁有的資料,新增可發布包來源的變更集。
|
|
74
|
+
5. **驗證** — 型別檢查、重點 `*.spec.ts` 和端對端檢查。
|
|
75
|
+
|
|
76
|
+
> [!TIP]
|
|
77
|
+
> 現有型別下的新策劃藍圖不需要程式碼 - 但如果您建立一個全新的型別目錄,該型別也會自動顯示在 `--list` 中。
|
|
78
|
+
|
|
79
|
+
## 下一步是什么
|
|
80
|
+
|
|
81
|
+
- [**Sandbox Adapters**](/docs/sandbox-adapters) — `add sandbox docker` 藍圖目標的接縫
|
|
82
|
+
- [**Actions**](/docs/actions) - 每個藍圖建置的單一事實來源
|
|
83
|
+
- [**External Agents**](/docs/external-agents) — 連線將藍圖通過管道傳輸到的編碼代理
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "CLI 適配器"
|
|
3
|
+
description: "通過標準適配器介面(適配器指南中介紹的兩個適配器接縫之一)為代理提供對任何 CLI 工具(gh、ffmpeg、stripe)的結構化存取。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# CLI 適配器
|
|
7
|
+
|
|
8
|
+
> **適合的位置:** CLI 適配器是
|
|
9
|
+
> 框架。規範指南是 [Adapters](/docs/sandbox-adapters),
|
|
10
|
+
> 覆蓋此接縫和 `run-code` 沙箱接縫 - 包括共用
|
|
11
|
+
> 邊缘/無伺服器約束。本頁面是CLI端的快速參考。
|
|
12
|
+
|
|
13
|
+
CLI 適配器包裝單個指令行工具(`gh`、`ffmpeg`、`stripe`、`aws`),以便代理可以發現它,檢查它是否已安裝,並使用一致的 stdout/stderr/exit-code 結果執行它。如果沒有這個接縫,每個腳本都會重新發明如何調用 CLI 並解析其輸出。
|
|
14
|
+
|
|
15
|
+
```an-diagram title="CLI 適配器 → 註冊表 → 操作面" summary="ShellCliAdapter 包裝二進制檔案; CliRegistry 收集適配器以供發現; defineAction 在代理 + UI 操作介面上公開一個調用。"
|
|
16
|
+
{
|
|
17
|
+
"html": "<div class=\"diagram-cli\"><div class=\"diagram-node\" data-rough>gh · ffmpeg · stripe<br><small class=\"diagram-muted\">command-line tools</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-box\" data-rough>ShellCliAdapter<br><small class=\"diagram-muted\">isAvailable · execute</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-panel center\" data-rough>CliRegistry<br><small class=\"diagram-muted\">describe() for discovery</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-pill accent\">defineAction</div></div>",
|
|
18
|
+
"css": ".diagram-cli{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.diagram-cli .diagram-arrow{font-size:22px;line-height:1}.diagram-cli .center{display:flex;flex-direction:column;align-items:center;gap:4px}"
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## 介面 {#the-interface}
|
|
23
|
+
|
|
24
|
+
每個 CLI 適配器都實現 `CliAdapter`:
|
|
25
|
+
|
|
26
|
+
```ts
|
|
27
|
+
import type { CliAdapter, CliResult } from "@agent-native/core/adapters/cli";
|
|
28
|
+
|
|
29
|
+
interface CliAdapter {
|
|
30
|
+
name: string; // "gh", "stripe", "ffmpeg"
|
|
31
|
+
description: string; // What the agent sees during discovery
|
|
32
|
+
isAvailable(): Promise<boolean>;
|
|
33
|
+
execute(args: string[]): Promise<CliResult>;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
interface CliResult {
|
|
37
|
+
stdout: string;
|
|
38
|
+
stderr: string;
|
|
39
|
+
exitCode: number;
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## ShellCli適配器 {#shell-adapter}
|
|
44
|
+
|
|
45
|
+
對於大多數 CLI,您不需要自訂類 - `ShellCliAdapter` 使用合理的預設值包裝任何二進制檔案:
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
import { ShellCliAdapter } from "@agent-native/core/adapters/cli";
|
|
49
|
+
|
|
50
|
+
const gh = new ShellCliAdapter({
|
|
51
|
+
command: "gh",
|
|
52
|
+
description: "GitHub CLI — manage repos, PRs, issues, and releases",
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
const ffmpeg = new ShellCliAdapter({
|
|
56
|
+
command: "ffmpeg",
|
|
57
|
+
description: "Audio/video processing and transcoding",
|
|
58
|
+
timeoutMs: 120_000, // 2 min for long encodes
|
|
59
|
+
env: { STRIPE_API_KEY: process.env.STRIPE_SECRET_KEY! },
|
|
60
|
+
});
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
選項:`command`(必填)、`description`(必填)、`name`(預設為 `command`)、`env`(與 `process.env` 合並)、`cwd`(預設為 `process.cwd()`)和 `timeoutMs`(預設) `30000`)。
|
|
64
|
+
|
|
65
|
+
對於自訂驗證、輸出解析或前/後處理,請直接實現 `CliAdapter`,而不是使用 `ShellCliAdapter`。
|
|
66
|
+
|
|
67
|
+
## 註冊表 {#registry}
|
|
68
|
+
|
|
69
|
+
`CliRegistry` 收集適配器,以便代理可以發現執行時可用的內容:
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
import { CliRegistry, ShellCliAdapter } from "@agent-native/core/adapters/cli";
|
|
73
|
+
|
|
74
|
+
const cliRegistry = new CliRegistry();
|
|
75
|
+
cliRegistry.register(
|
|
76
|
+
new ShellCliAdapter({ command: "gh", description: "GitHub CLI" }),
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
cliRegistry.list(); // all registered
|
|
80
|
+
await cliRegistry.listAvailable(); // only installed
|
|
81
|
+
await cliRegistry.describe(); // [{ name, description, available }] for discovery
|
|
82
|
+
|
|
83
|
+
const gh = cliRegistry.get("gh");
|
|
84
|
+
const result = await gh?.execute(["pr", "list", "--json", "title,url"]);
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## 從actions使用 {#from-actions}
|
|
88
|
+
|
|
89
|
+
將 CLI 調用包裝在 `defineAction` 中以將其公開在操作介面上 - 當程式碼在伺服器操作介面內執行時需要 `defineAction`;否則直接在 `scripts/` 檔案中使用適配器。切勿在動作中調用 `process.exit`;相反,會拋出錯誤。
|
|
90
|
+
|
|
91
|
+
```ts
|
|
92
|
+
// actions/list-prs.ts
|
|
93
|
+
import { defineAction } from "@agent-native/core/action";
|
|
94
|
+
import { ShellCliAdapter } from "@agent-native/core/adapters/cli";
|
|
95
|
+
import { z } from "zod";
|
|
96
|
+
|
|
97
|
+
const gh = new ShellCliAdapter({ command: "gh", description: "GitHub CLI" });
|
|
98
|
+
|
|
99
|
+
export default defineAction({
|
|
100
|
+
description: "List open pull requests via the GitHub CLI.",
|
|
101
|
+
schema: z.object({}),
|
|
102
|
+
async run() {
|
|
103
|
+
if (!(await gh.isAvailable())) {
|
|
104
|
+
throw new Error("GitHub CLI not installed. Run: brew install gh");
|
|
105
|
+
}
|
|
106
|
+
const result = await gh.execute([
|
|
107
|
+
"pr",
|
|
108
|
+
"list",
|
|
109
|
+
"--json",
|
|
110
|
+
"title,url,state",
|
|
111
|
+
"--limit",
|
|
112
|
+
"10",
|
|
113
|
+
]);
|
|
114
|
+
if (result.exitCode !== 0) {
|
|
115
|
+
throw new Error(result.stderr || "gh pr list failed");
|
|
116
|
+
}
|
|
117
|
+
return JSON.parse(result.stdout);
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## 邊缘和無伺服器 {#edge-serverless}
|
|
123
|
+
|
|
124
|
+
CLI 適配器使用 `node:child_process`,它在邊缘/工作線程執行時(Cloudflare Workers、Netlify Edge Functions)上不存在。在標準 Node.js 環境中執行 CLI 適配器端點和工作。此約束與沙箱接縫共用 - 請參閱 [Adapters](/docs/sandbox-adapters#edge-serverless) 中的完整討論。
|
|
125
|
+
|
|
126
|
+
## 下一步是什么
|
|
127
|
+
|
|
128
|
+
- [**Adapters**](/docs/sandbox-adapters) — 兩個適配器接縫的規範指南。
|
|
129
|
+
- [**Actions**](/docs/actions) — 操作面 CLI 適配器通常被包裹在其中。
|
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "用戶端"
|
|
3
|
+
description: "用於代理本機應用程式的 React 掛鉤和實用程序:sendToAgentChat、可選代理聊天上下文狀態、useDbSync、useAgentChatGenerate 和 cn。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 用戶端
|
|
7
|
+
|
|
8
|
+
`@agent-native/core` 為代理本機應用程式的瀏覽器端提供 React 掛鉤和實用程序。
|
|
9
|
+
|
|
10
|
+
這些用戶端/React API 是從 `@agent-native/core` 和 `@agent-native/core/client` 匯出的。為了清晰和正確的捆綁,從 `@agent-native/core/client`(瀏覽器條目)匯入它們,因為預設情況下裸 `@agent-native/core` 根解析為 Node 建置。
|
|
11
|
+
|
|
12
|
+
對於基於檔案的路由 - 新增頁面、動態參數和導覽 - 請參閱 [Routing](/docs/routing)。
|
|
13
|
+
|
|
14
|
+
## 獲取和修改資料 {#fetching-mutating}
|
|
15
|
+
|
|
16
|
+
從瀏覽器讀取和寫入應用程式資料的主要方式是通過操作掛鉤。切勿手寫 `fetch` 調用 `/_agent-native/*` 路由 - 請改用命名助手(請參閱 [Actions](/docs/actions))。
|
|
17
|
+
|
|
18
|
+
```an-diagram title="瀏覽器資料循環" summary="鉤子通過動作進行讀寫; useDbSync 監視資料庫,以便代理和後台寫入自動重新獲取相同的快取。"
|
|
19
|
+
{
|
|
20
|
+
"html": "<div class=\"diagram-client\"><div class=\"diagram-col\"><div class=\"diagram-node\">useActionQuery<br><small class=\"diagram-muted\">cached read</small></div><div class=\"diagram-node\">useActionMutation<br><small class=\"diagram-muted\">write + invalidate</small></div></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↔</div><div class=\"diagram-box\" data-rough>Actions<br><small class=\"diagram-muted\">/_agent-native/actions/*</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↔</div><div class=\"diagram-panel\" data-rough><strong>SQL 資料庫</strong></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↻</div><div class=\"diagram-pill ok\">useDbSync → refetch on change</div></div>",
|
|
21
|
+
"css": ".diagram-client{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.diagram-client .diagram-col{display:flex;flex-direction:column;gap:10px}.diagram-client .diagram-arrow{font-size:22px;line-height:1}"
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
```tsx
|
|
26
|
+
import {
|
|
27
|
+
useActionQuery,
|
|
28
|
+
useActionMutation,
|
|
29
|
+
callAction,
|
|
30
|
+
} from "@agent-native/core/client";
|
|
31
|
+
|
|
32
|
+
// Read: auto-cached, auto-invalidated on mutations
|
|
33
|
+
const { data, isLoading } = useActionQuery("get-lead", { leadId });
|
|
34
|
+
|
|
35
|
+
// Mutate: emits a change event so query caches refetch
|
|
36
|
+
const { mutate, isPending } = useActionMutation("create-lead");
|
|
37
|
+
mutate({ name: "Alice", company: "Acme" });
|
|
38
|
+
|
|
39
|
+
// Imperative: for one-off calls outside a component
|
|
40
|
+
await callAction("archive-lead", { leadId });
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## sendToAgentChat(選取) {#sendtoagentchat}
|
|
44
|
+
|
|
45
|
+
通過 postMessage 向代理聊天發送訊息——這是從 UI 互動中委派 AI 工作的常用方法。傳遞 `context` 來隱藏模型上下文,傳遞 `submit: true` 來立即發送,或者傳遞 `submit: false` 來預先填寫使用者首先審閱的草稿。
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
import { sendToAgentChat } from "@agent-native/core/client";
|
|
49
|
+
|
|
50
|
+
// Auto-submit a prompt with hidden context
|
|
51
|
+
sendToAgentChat({
|
|
52
|
+
message: "Generate alt text for this image",
|
|
53
|
+
context: "Image path: /api/projects/hero.jpg",
|
|
54
|
+
submit: true,
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
// Prefill without submitting (user reviews first)
|
|
58
|
+
sendToAgentChat({
|
|
59
|
+
message: "Rewrite this in a conversational tone",
|
|
60
|
+
context: selectedText,
|
|
61
|
+
submit: false,
|
|
62
|
+
});
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
在使用 `embedApp()` 建立的 MCP 應用嵌入中,自動提交訊息
|
|
66
|
+
(`submit`省略或`true`)被轉發到MCP應用程式主橋,這
|
|
67
|
+
要求包含主機新增隱藏上下文並發送可見使用者回合。
|
|
68
|
+
`context` 保持模型可見,而不發布為面向使用者的聊天。
|
|
69
|
+
`submit: false` 保留本機預填充/審核行為,因為 MCP 應用不會
|
|
70
|
+
定義標準草稿預填充 API。在內部,這是提交的聊天路徑
|
|
71
|
+
有時會以 `agentNative.submitChat` 的形式出現;應用程式碼應該調用
|
|
72
|
+
`sendToAgentChat()` 而不是直接發布該事件。
|
|
73
|
+
|
|
74
|
+
### 後台靜默發送 {#background-send}
|
|
75
|
+
|
|
76
|
+
當 UI 操作應該啟動真正的代理工作時,請使用 `background: true`
|
|
77
|
+
開啟或聚焦側邊欄。這仍然會建立一個正常的聊天線程/執行,
|
|
78
|
+
使用代理的工具/actions/context,並通過以下方式保持工作可觀察
|
|
79
|
+
執行托盤;它不是原始的一次性模型調用。
|
|
80
|
+
|
|
81
|
+
```ts
|
|
82
|
+
const tabId = sendToAgentChat({
|
|
83
|
+
message: "Analyze this import and create any missing records",
|
|
84
|
+
context: `Import batch id: ${batchId}`,
|
|
85
|
+
submit: true,
|
|
86
|
+
newTab: true,
|
|
87
|
+
background: true,
|
|
88
|
+
openSidebar: false,
|
|
89
|
+
});
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
`background` 旨在與 `newTab` 配對,因此隱藏的工作不會
|
|
93
|
+
overwrite the user's active conversation. Use the returned `tabId` if the UI
|
|
94
|
+
需要將後續狀態或深層連結關聯到稍後的執行。
|
|
95
|
+
|
|
96
|
+
### 代理聊天訊息 {#agentchatmessage}
|
|
97
|
+
|
|
98
|
+
| 選項 | 型別 | 描述 |
|
|
99
|
+
| --------------------- | ----------- | ----------------------------------------------------------------- |
|
|
100
|
+
| `message` | `string` | 發送到聊天的可見提示 |
|
|
101
|
+
| `context` | `string?` | 附加隱藏上下文(聊天UI中未顯示) |
|
|
102
|
+
| `submit` | `boolean?` | true = 自動提交,false = 僅預填充 |
|
|
103
|
+
| `newTab` | `boolean?` | 為此提示建立單獨的聊天線程 |
|
|
104
|
+
| `background` | `boolean?` | 使用 `newTab`,在不聚焦分頁的情況下執行並在 `RunsTray` 中顯示執行 |
|
|
105
|
+
| `openSidebar` | `boolean?` | 設定 false 來提交/預填充而不開啟側邊欄 |
|
|
106
|
+
| `projectSlug` | `string?` | 結構化上下文的可選專案段 |
|
|
107
|
+
| `preset` | `string?` | 下游消費者的可選預設名稱 |
|
|
108
|
+
| `referenceImagePaths` | `string[]?` | 可選的參考圖片路徑 |
|
|
109
|
+
|
|
110
|
+
## 客服人員聊天上下文狀態(高級) {#agent-chat-context-state}
|
|
111
|
+
|
|
112
|
+
上下文狀態 API 是 UI 的可選管道,需要雙向同步
|
|
113
|
+
暫存上下文芯片:在編輯器之外渲染目前暫存專案,
|
|
114
|
+
反映某個專案是否已附加,或提供明確的
|
|
115
|
+
刪除/清除控件。
|
|
116
|
+
|
|
117
|
+
不要為了簡單的“將其發送給代理”而聯系這些助手,或者
|
|
118
|
+
“預填寫此草稿以供審核”流程。將 `sendToAgentChat()` 與 `context` 結合使用
|
|
119
|
+
還有 `submit`。
|
|
120
|
+
|
|
121
|
+
| API | 何時使用 |
|
|
122
|
+
| --------------------------------- | ----------------------------------------------- |
|
|
123
|
+
| `useAgentChatContext()` | React 元件需要實時暫存上下文列表 |
|
|
124
|
+
| `setAgentChatContextItem(item)` | 指令式程式碼應暫存或替換一個鍵控上下文項 |
|
|
125
|
+
| `listAgentChatContext()` | 非 React 程式碼需要暫存上下文的一次性快照 |
|
|
126
|
+
| `removeAgentChatContextItem(key)` | UI 應通過其穩定的 `key` 刪除一個暫存上下文項 |
|
|
127
|
+
| `clearAgentChatContext()` | UI 應清除所有暫存上下文,例如在視圖或模式重置後 |
|
|
128
|
+
| `refreshAgentChatContext()` | 指令程式碼應該重新讀取最新的持久上下文快照 |
|
|
129
|
+
|
|
130
|
+
`useAgentChatContext()` 返回 `{ items, set, remove, clear, refresh }`。
|
|
131
|
+
|
|
132
|
+
## openAgentSettings(部分?) {#openagentsettings}
|
|
133
|
+
|
|
134
|
+
當應用設定頁面或設定卡開啟時使用 `openAgentSettings()`
|
|
135
|
+
代理側邊欄的“設定”分頁。傳遞一個部分id,例如`"llm"`,`"secrets"`,
|
|
136
|
+
`"automations"`、`"voice"` 或 `"limits"` 開啟特定部分。
|
|
137
|
+
|
|
138
|
+
```ts
|
|
139
|
+
import { openAgentSettings } from "@agent-native/core/client";
|
|
140
|
+
|
|
141
|
+
openAgentSettings();
|
|
142
|
+
openAgentSettings("secrets");
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
更喜歡這個助手而不是直接調度 `agent-panel:open-settings`。
|
|
146
|
+
|
|
147
|
+
```tsx
|
|
148
|
+
import { useAgentChatContext } from "@agent-native/core/client";
|
|
149
|
+
|
|
150
|
+
function SelectionContextButton({ record }: { record: { id: string } }) {
|
|
151
|
+
const chatContext = useAgentChatContext();
|
|
152
|
+
const contextKey = `selected-record:${record.id}`;
|
|
153
|
+
const isAttached = chatContext.items.some((item) => item.key === contextKey);
|
|
154
|
+
|
|
155
|
+
return (
|
|
156
|
+
<button
|
|
157
|
+
type="button"
|
|
158
|
+
onClick={() => {
|
|
159
|
+
if (isAttached) {
|
|
160
|
+
chatContext.remove(contextKey);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
chatContext.set({
|
|
165
|
+
key: contextKey,
|
|
166
|
+
title: "Selected Record",
|
|
167
|
+
context: JSON.stringify(record, null, 2),
|
|
168
|
+
openSidebar: false,
|
|
169
|
+
});
|
|
170
|
+
}}
|
|
171
|
+
>
|
|
172
|
+
{isAttached ? "Remove from prompt context" : "Add to prompt context"}
|
|
173
|
+
</button>
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
`listAgentChatContext()` 用於僅需要檢查的指令式程式碼
|
|
179
|
+
目前暫存專案一次。 `clearAgentChatContext()` 故意寬泛;使用
|
|
180
|
+
僅更改一項選取時為 `removeAgentChatContextItem(key)`。
|
|
181
|
+
|
|
182
|
+
### AgentChatContextSetOptions {#agentchatcontextsetoptions}
|
|
183
|
+
|
|
184
|
+
| 選項 | 型別 | 描述 |
|
|
185
|
+
| ------------- | ---------- | ------------------------------------------- |
|
|
186
|
+
| `key` | `string` | 用於替換現有塊的穩定標識符 |
|
|
187
|
+
| `title` | `string` | 作曲家芯片中顯示的短標籤 |
|
|
188
|
+
| `context` | `string` | 下一個提交的提示中包含隱藏上下文 |
|
|
189
|
+
| `openSidebar` | `boolean?` | 預設為true;靜默地將 false 傳遞給舞台上下文 |
|
|
190
|
+
|
|
191
|
+
## 詢問使用者問題(選取) {#ask-user-question}
|
|
192
|
+
|
|
193
|
+
通過應用程式碼向使用者提出多項選取問題,並將其內聯呈現
|
|
194
|
+
代理小組,並**等待他們的答複**。它是用戶端的孿生
|
|
195
|
+
代理的內置`ask-question`工具:它將`GuidedQuestionPayload`寫入
|
|
196
|
+
`"guided-questions"` 應用程式狀態金鑰(已安裝的位置
|
|
197
|
+
`GuidedQuestionFlow` 渲染它)並顯示代理面板,所以問題是
|
|
198
|
+
可見。與代理工具不同——其答案會返回給代理——
|
|
199
|
+
`askUserQuestion()` **解析調用者的答案**,因此 UI 可以
|
|
200
|
+
在上面分支。
|
|
201
|
+
|
|
202
|
+
當 UI 之前需要做出一個小決定(2-4 個選項)時使用它
|
|
203
|
+
開始代理工作——而不是建置自訂模式。到達
|
|
204
|
+
用於自由形式細節的組合器,以及用於多欄位輸入的表單/快顯框。
|
|
205
|
+
|
|
206
|
+
```tsx
|
|
207
|
+
import { askUserQuestion, sendToAgentChat } from "@agent-native/core/client";
|
|
208
|
+
|
|
209
|
+
const length = await askUserQuestion({
|
|
210
|
+
question: "How long should this deck be?",
|
|
211
|
+
header: "Deck length", // optional short chip/heading (≈12 chars)
|
|
212
|
+
options: [
|
|
213
|
+
{ label: "Short (3–5 slides)", value: "short" },
|
|
214
|
+
{ label: "Medium (6–10 slides)", value: "medium", recommended: true },
|
|
215
|
+
{ label: "Long (11+ slides)", value: "long" },
|
|
216
|
+
],
|
|
217
|
+
allowFreeText: false, // omit the "Other" free-text option (default adds it)
|
|
218
|
+
allowMultiple: false, // single-select (default)
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
if (length) {
|
|
222
|
+
sendToAgentChat({ message: `Generate a ${length} deck.`, submit: true });
|
|
223
|
+
}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
每個選項都是`{ label, value?, description?, preview?, recommended? }`; `value`
|
|
227
|
+
預設為`label`,`preview`在
|
|
228
|
+
選項。承諾以選定的 `value`(或 `value[]` 時)解析
|
|
229
|
+
`allowMultiple`),使用者選取“其他”時的自由文本字串,或 `null`
|
|
230
|
+
如果他們跳過——它將保持待定狀態,直到使用者回答。需要代理面板
|
|
231
|
+
要安裝(每個範本中都有)。
|
|
232
|
+
|
|
233
|
+
代理通過其 `ask-question` 工具到達相同的 UI:更願意讓
|
|
234
|
+
當 _it_ 遇到一個無法從上下文解析的真正分叉時,代理會詢問;使用
|
|
235
|
+
`askUserQuestion()`,當 _UI_ 需要對選取進行操作時。
|
|
236
|
+
|
|
237
|
+
## MCP應用程式主橋 {#mcp-app-host-bridge}
|
|
238
|
+
|
|
239
|
+
作為 MCP 應用嵌入的路由應該是 URL-first:載入目前工件
|
|
240
|
+
路徑/查詢參數,渲染真實的React路由或聚焦的共用元件,
|
|
241
|
+
並且僅將主機橋用於主機擁有的行為。 `@agent-native/core/client`
|
|
242
|
+
匯出助手嵌入的路由調用:
|
|
243
|
+
|
|
244
|
+
```ts
|
|
245
|
+
import {
|
|
246
|
+
getMcpAppHostContext,
|
|
247
|
+
openMcpAppHostLink,
|
|
248
|
+
requestMcpAppDisplayMode,
|
|
249
|
+
updateMcpAppModelContext,
|
|
250
|
+
useMcpAppHostContext,
|
|
251
|
+
} from "@agent-native/core/client";
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
`getMcpAppHostContext()`讀取最新推送的主機上下文快照;
|
|
255
|
+
`useMcpAppHostContext()` 訂閱 React 元件的更改。請求
|
|
256
|
+
助手(`openMcpAppHostLink`、`requestMcpAppDisplayMode`,
|
|
257
|
+
`updateMcpAppModelContext`) 在嵌入式 MCP 應用框架之外返回 `false`,或
|
|
258
|
+
`Promise<boolean>` 在框架內。 `sendToAgentChat()` 使用相同的橋
|
|
259
|
+
從嵌入式路由自動提交提示。
|
|
260
|
+
|
|
261
|
+
橋本身 - `ui/*` JSON-RPC 訊息、`agentNative.mcpHost.*`
|
|
262
|
+
包裝器中繼、移植與受控幀渲染、主機上下文以及
|
|
263
|
+
顯示模式請求 — 屬於
|
|
264
|
+
[External Agents](/docs/external-agents#mcp-app-bridge).
|
|
265
|
+
|
|
266
|
+
## 動態建議 {#dynamic-suggestions}
|
|
267
|
+
|
|
268
|
+
`<AgentSidebar>`、`<AgentPanel>` 和 `<AssistantChat>` 預設將靜態 `suggestions` 與上下文感知建議合並。當可見空聊天時,框架從應用程式狀態中讀取 `navigation`、`selection`、`pending-selection-context` 和目前 URL,然後提供與目前螢幕匹配的提示芯片。
|
|
269
|
+
|
|
270
|
+
```tsx
|
|
271
|
+
<AgentSidebar
|
|
272
|
+
suggestions={["Summarize my inbox"]}
|
|
273
|
+
dynamicSuggestions={{ max: 4 }}
|
|
274
|
+
>
|
|
275
|
+
<App />
|
|
276
|
+
</AgentSidebar>
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
設定 `dynamicSuggestions={false}` 僅保留靜態芯片。當應用程式需要來自同一應用程式狀態上下文的確定性特定於域的芯片時,傳遞 `getSuggestions`。
|
|
280
|
+
|
|
281
|
+
## useAgentChatGenerate() {#useagentchatgenerating}
|
|
282
|
+
|
|
283
|
+
React 鉤子,通過載入狀態跟蹤包裝 sendToAgentChat:
|
|
284
|
+
|
|
285
|
+
```ts
|
|
286
|
+
import { useAgentChatGenerating } from "@agent-native/core/client";
|
|
287
|
+
|
|
288
|
+
function GenerateButton() {
|
|
289
|
+
const [isGenerating, send] = useAgentChatGenerating();
|
|
290
|
+
|
|
291
|
+
return (
|
|
292
|
+
<button
|
|
293
|
+
disabled={isGenerating}
|
|
294
|
+
onClick={() => send({
|
|
295
|
+
message: "Generate a summary",
|
|
296
|
+
context: documentContent,
|
|
297
|
+
submit: true,
|
|
298
|
+
})}
|
|
299
|
+
>
|
|
300
|
+
{isGenerating ? "Generating..." : "Generate"}
|
|
301
|
+
</button>
|
|
302
|
+
);
|
|
303
|
+
}
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
當您調用 `send()` 時,`isGenerating` 變為 true,並在代理完成生成時自動重置為 false。
|
|
307
|
+
|
|
308
|
+
## useDbSync(選項?) {#usedbsync}
|
|
309
|
+
|
|
310
|
+
React 掛鉤(以前稱為 `useFileWatcher`),用於偵听 SSE 上的資料庫更改,回退到輪詢,並使保持 UI 與代理寫入保持一致的框架查詢快取無效:
|
|
311
|
+
|
|
312
|
+
```ts
|
|
313
|
+
import { useDbSync } from "@agent-native/core/client";
|
|
314
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
315
|
+
|
|
316
|
+
function App() {
|
|
317
|
+
const queryClient = useQueryClient();
|
|
318
|
+
|
|
319
|
+
useDbSync({
|
|
320
|
+
queryClient,
|
|
321
|
+
pollUrl: "/_agent-native/poll",
|
|
322
|
+
onEvent: (data) => console.log("Data changed:", data),
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
return <div>...</div>;
|
|
326
|
+
}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### 選項 {#usedbsync-options}
|
|
330
|
+
|
|
331
|
+
| 選項 | 型別 | 描述 |
|
|
332
|
+
| ------------------ | ------------------ | -------------------------------------------------------------------------------------- |
|
|
333
|
+
| `queryClient` | `QueryClient?` | React-查詢用戶端快取失效 |
|
|
334
|
+
| `queryKeys` | `string[]?` | 已棄用並被忽略;為舊的調用站點保留 |
|
|
335
|
+
| `pollUrl` | `string?` | 輪詢端點 URL。預設值:`"/_agent-native/poll"` |
|
|
336
|
+
| `sseUrl` | `string \| false?` | SSE endpoint URL. Default: `"/_agent-native/events"`; pass `false` to use polling only |
|
|
337
|
+
| `interval` | `number?` | 輪詢間隔(以毫秒為單位)。預設值:`2000` |
|
|
338
|
+
| `fallbackInterval` | `number?` | SSE 不可用時的回退輪詢間隔。預設值:`15000` |
|
|
339
|
+
| `pauseWhenHidden` | `boolean?` | 當瀏覽器分頁隱藏時暫停輪詢。預設值:`true` |
|
|
340
|
+
| `ignoreSource` | `string?` | 要忽略的每個分頁請求來源,以便分頁不會從其自己的寫入中重新獲取 |
|
|
341
|
+
| `onEvent` | `(data) => void` | SSE/polling 收到更改事件時的可選回調 |
|
|
342
|
+
|
|
343
|
+
對於普通CRUD,優先選取`useActionQuery`和`useActionMutation`;變異 actions 會發出 `source: "action"` 並且這些鉤子會自動重新獲取。
|
|
344
|
+
|
|
345
|
+
## useChangeVersion / useChangeVersions {#use-change-version}
|
|
346
|
+
|
|
347
|
+
框架使用更改版本將 React 查詢快取與後台代理、cron 作業或其他使用者所做的更改同步。
|
|
348
|
+
|
|
349
|
+
當任何伺服器端資料庫發生突變時,伺服器都會使用特定的 `source` 金鑰紀錄更改事件。用戶端的 `useDbSync` 偵听器接收這些事件並增加該來源的本機更改版本計數器。通過將版本計數器折疊到 React 查詢鍵中,每當後端通知用戶端新活動時,查詢就會自動重新獲取。
|
|
350
|
+
|
|
351
|
+
- **`useChangeVersion(source: string): number`** — 返回一個計數器,每當指定的 `source` 發生突變時該計數器就會遞增。
|
|
352
|
+
- **`useChangeVersions(sources: readonly string[]): number`** — 返回多個來源的版本計數器之和。
|
|
353
|
+
|
|
354
|
+
### 範例:將原始查詢與資料庫同步
|
|
355
|
+
|
|
356
|
+
```tsx
|
|
357
|
+
import { useQuery } from "@tanstack/react-query";
|
|
358
|
+
import { useChangeVersion } from "@agent-native/core/client";
|
|
359
|
+
|
|
360
|
+
function DashboardView({ id }) {
|
|
361
|
+
// Get version for dashboards domain source
|
|
362
|
+
const v = useChangeVersion("dashboards");
|
|
363
|
+
|
|
364
|
+
const { data } = useQuery({
|
|
365
|
+
queryKey: ["dashboard", id, v], // Invalidate automatically when version bumps
|
|
366
|
+
queryFn: () => fetchDashboard(id),
|
|
367
|
+
placeholderData: (prev) => prev, // Prevent layout flicker during refetch
|
|
368
|
+
});
|
|
369
|
+
|
|
370
|
+
return <div>{data?.title}</div>;
|
|
371
|
+
}
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
### 延遲模型和失效行為
|
|
375
|
+
|
|
376
|
+
- **UI-發起的突變:**當您使用 `useActionMutation` 從 UI 執行操作時,突變會在成功時立即觸發 `source: "action"` 本機事件。這會根據該操作觸發所有查詢鍵的**即時、樂觀的重新獲取**,從而避免視覺延遲。
|
|
377
|
+
- **後台或代理突變:** 當 AI 代理、Webhook 或後台工作人員突變資料時,更新會廣播到用戶端。用戶端的 `useDbSync` 可以立即通過 SSE(伺服器發送的事件)捕獲此資訊,也可以回退到 **2 秒輪詢滴答**。然後查詢金鑰版本會發生變化,從而觸發後台重新獲取。
|
|
378
|
+
|
|
379
|
+
```an-diagram title="重新獲取的兩條路徑" summary="本機突變會立即使自己的快取失效;遠端寫入通過 SSE 到達此分頁,或作為後備的輪詢標記。"
|
|
380
|
+
{
|
|
381
|
+
"html": "<div class=\"diagram-latency\"><div class=\"diagram-col\"><div class=\"diagram-card\" data-rough><span class=\"diagram-pill ok\">此標籤頁面</span><strong>useActionMutation</strong><small class=\"diagram-muted\">fires source: \"action\" on success → instant local refetch</small></div><div class=\"diagram-card\" data-rough><span class=\"diagram-pill accent\">代理 · webhook · 其他標籤頁面</span><strong>遠端寫入</strong><small class=\"diagram-muted\">SSE push, or the ~2s polling tick as fallback → version bumps → background refetch</small></div></div></div>",
|
|
382
|
+
"css": ".diagram-latency .diagram-col{display:flex;flex-direction:column;gap:12px}.diagram-latency .diagram-card{display:flex;flex-direction:column;gap:4px;padding:14px 16px}"
|
|
383
|
+
}
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
## cn(...輸入) {#cn}
|
|
387
|
+
|
|
388
|
+
合並類名的實用程序(clsx + tailwind-merge):
|
|
389
|
+
|
|
390
|
+
```ts
|
|
391
|
+
import { cn } from "@agent-native/core/client";
|
|
392
|
+
|
|
393
|
+
<div className={cn(
|
|
394
|
+
"px-4 py-2 rounded",
|
|
395
|
+
isActive && "bg-primary text-primary-foreground",
|
|
396
|
+
className
|
|
397
|
+
)} />
|
|
398
|
+
```
|