runtime
提供AI助手UI的运行时管理,包括本地运行时深度解析和外部存储使用,确保AI应用高效运行。
npx skills add assistant-ui/skills --skill runtimeBefore / After 效果对比
1 组在 AI 聊天界面中手动管理复杂的运行时状态和线程列表,容易出错且难以维护,尤其是在多线程交互场景下。
利用 assistant-ui Runtime,通过 `useLocalRuntime` 和 `useExternalStoreRuntime` 等钩子,高效管理 AI 助手的运行时状态、线程列表和类型定义,简化开发。
description SKILL.md
runtime
assistant-ui Runtime Always consult assistant-ui.com/llms.txt for latest API. References ./references/local-runtime.md -- useLocalRuntime deep dive ./references/external-store.md -- useExternalStoreRuntime deep dive ./references/thread-list.md -- Thread list management ./references/state-hooks.md -- State access hooks ./references/types.md -- Type definitions Runtime Hierarchy AssistantRuntime ├── ThreadListRuntime (thread management) │ ├── ThreadListItemRuntime (per-thread item) │ └── ... └── ThreadRuntime (current thread) ├── ComposerRuntime (input state) └── MessageRuntime[] (per-message) └── MessagePartRuntime[] (per-content-part) State Access (Modern API) import { useAui, useAuiState, useAuiEvent } from "@assistant-ui/react"; function ChatControls() { const api = useAui(); const messages = useAuiState(s => s.thread.messages); const isRunning = useAuiState(s => s.thread.isRunning); useAuiEvent("composer.send", (e) => { console.log("Sent in thread:", e.threadId); }); return ( <button onClick={() => api.thread().append({ role: "user", content: [{ type: "text", text: "Hello!" }], })}> Send {isRunning && ( <button onClick={() => api.thread().cancelRun()}>Cancel )} ); } Thread Operations const api = useAui(); const thread = api.thread(); // Append message thread.append({ role: "user", content: [{ type: "text", text: "Hello" }] }); // Cancel generation thread.cancelRun(); // Get current state const state = thread.getState(); // { messages, isRunning, ... } Message Operations const message = api.thread().message(0); // By index message.edit({ role: "user", content: [{ type: "text", text: "Updated" }] }); message.reload(); Events useAuiEvent("thread.runStart", () => {}); useAuiEvent("thread.runEnd", () => {}); useAuiEvent("composer.send", ({ threadId }) => { console.log("Sent in thread:", threadId); }); useAuiEvent("thread.modelContextUpdate", () => {}); Capabilities const caps = useAuiState(s => s.thread.capabilities); // { cancel, edit, reload, copy, speak, attachments } Quick Reference // Get messages const messages = useAuiState(s => s.thread.messages); // Check running state const isRunning = useAuiState(s => s.thread.isRunning); // Append message api.thread().append({ role: "user", content: [{ type: "text", text: "Hi" }] }); // Cancel generation api.thread().cancelRun(); // Edit message api.thread().message(index).edit({ ... }); // Reload message api.thread().message(index).reload(); Common Gotchas "Cannot read property of undefined" Ensure hooks are called inside AssistantRuntimeProvider State not updating Use selectors with useAuiState to prevent unnecessary re-renders Messages array empty Check runtime is configured Verify API response format Weekly Installs565Repositoryassistant-ui/skillsGitHub Stars7First SeenJan 21, 2026Security AuditsGen Agent Trust HubPassSocketPassSnykPassInstalled oncodex474opencode465gemini-cli457github-copilot447amp396kimi-cli392
forum用户评价 (0)
发表评价
暂无评价,来写第一条吧
统计数据
用户评分
为此 Skill 评分