Nhúng các Mind đã cấu hình vào ứng dụng của bạn, máy khách Node có kiểu cho nhắn tin, sự kiện và các tuyến API Builder sau khi bạn thiết lập với Minds CLI.
@animocabrands/minds-client-lib là cách bạn đóng gói và nhúng Minds vào ứng dụng hoặc sản phẩm của mình. Hầu hết các nhà phát triển bắt đầu với Minds CLI : liệt kê các Mind, xem chi tiết, theo dõi Cognition, quản lý Circle, duyệt Bazaar — rồi chuyển sang đây khi đã sẵn sàng ra mắt. Thư viện này cung cấp cùng Builder API kèm kiểu TypeScript: nhắn tin, waitForReply, sự kiện SSE và các route tài khoản bạn đã từng chạy trên terminal.
Thêm gói vào phía máy chủ của dự án của bạn. Giao diện người dùng, thương hiệu và luồng người dùng của bạn vẫn là của bạn; máy khách xử lý HTTP có định dạng kiểu và truyền phát đến api.build. Hoàn tất Thiết lập tài khoản , xác thực Mind của bạn bằng CLI, sau đó kết nối các ví dụ bên dưới hoặc chuyển chúng cho một agent lập trình sau khi cấu hình hoàn tất.
Cài đặt
Yêu cầu Node 22+.
npm install @animocabrands/minds-client-lib
Xác thực
Truyền khóa Builder API của bạn cho các route tài khoản và nhắn tin. Thư viện chỉ gửi X-Api-Key trên các route cần xác thực (≥0.1.2). X-Access-Key đã ngừng hỗ trợ, vui lòng không dùng. Tên biến môi trường vẫn là MINDS_BUILDER_API_KEY.
import { BUILDER_API_KEY_ENV, BUILDER_API_KEY_HEADER, createMindsClient,} from "@animocabrands/minds-client-lib";const builderApiKey = process.env[BUILDER_API_KEY_ENV];if (!builderApiKey) throw new Error(`${BUILDER_API_KEY_ENV} is not set`);const client = createMindsClient({ builderApiKey });
createMindsClient({}) chỉ hợp lệ với danh mục Bazaar công khai (client.bazaar.*). Các phương thức cần xác thực sẽ báo lỗi MindsApiError với mã missing_builder_api_key tại thời điểm gọi nếu chưa cung cấp key, chứ không phải lúc khởi tạo.
Danh sách Minds
listMinds() trả về mọi Mind trên tài khoản của bạn (mindId, name, model, species, và các trường liên quan).
Mức sử dụng và số dư Cognition theo từng Mind tương ứng với các lệnh CLI. Minds tiêu tốn Cognition khi suy luận, chạy công cụ và thực hiện tác vụ tự chủ, chứ không chỉ khi trò chuyện. Cả hai phương thức đều nhận mindId (UUID) và một AbortSignal tùy chọn.Cognition là nguồn năng lượng cho khả năng suy luận, sử dụng công cụ và làm việc tự chủ của Mind. Sử dụng getCognitionUsage và getCognitionUsageByTool để theo dõi mức sử dụng theo thời gian và theo công cụ. Sử dụng getCognitionBalance để xem số dư Cognition còn lại:
Hai phương thức thống kê chấp nhận các khoảng thời gian khác nhau: getCognitionUsage nhận 1m, 5m, 15m, 1h, 1d, 1w, 1M; còn getCognitionUsageByTool chỉ nhận hour, day, week, month. Có thể dùng thêm startTime và endTime (định dạng ISO date-time) để giới hạn khoảng thời gian cho cả hai.
Circle của một Mind là nhóm cộng tác viên con người của Mind đó. getCircle trả về trực tiếp mảng CircleMember[]; addCircleMembers và removeCircleMembers trả về envelope CircleMutationResult kèm kết quả theo từng email và bản tóm tắt best-effort:
Các Circle chỉ chấp nhận email cộng tác viên là con người, không chấp nhận các địa chỉ @hellominds.ai của Mind dành cho các nhà phát triển. Tư cách thành viên Circle từ Mind đến Mind không được hỗ trợ qua API này. listCirclesForAccount() là một tiện ích gọi listMinds() sau đó gọi getCircle() song song cho từng Mind; hãy sử dụng tính năng này để có cái nhìn tổng quan trên toàn bộ tài khoản thay vì cho các đường dẫn hoạt động mạnh.
Danh mục Bazaar
Danh mục Bazaar công khai có sẵn dưới dạng client.bazaar, không cần API key. Dùng Bazaar để tra cứu ID (skillId, appId), sau đó trang bị các ID đó bằng các phương thức Mind equip bên dưới. Cấu trúc route nằm trong tham chiếu API ở mục Bazaar và Minds; CLI cũng cung cấp danh mục này qua minds bazaar.Các mục trong danh sách có thể kèm equippedCount — số Mind đã trang bị mục đó trên toàn nền tảng. Đây là mức độ phổ biến trên toàn nền tảng — hãy sử dụng listEquippedSkills / listEquippedApps cho tập trang bị theo từng Mind.
Các ứng dụng sử dụng appId và appName (không phải name). collectSearchResults tự động phân trang lên đến scanMax, áp dụng sắp xếp/lọc phía máy khách và báo cáo truncated khi số lượng quét được vượt quá max. sort: "equipped" sắp xếp theo equippedCount giảm dần (mức độ phổ biến trên nền tảng), chứ không phải theo trạng thái trang bị của từng Mind.
Trang bị kỹ năng và ứng dụng
Liệt kê, trang bị hoặc tháo trang bị kỹ năng và ứng dụng trên một Mind (yêu cầu khóa Builder API). Body sử dụng { ids: string[] }; các mutation trả về { results: [...] } với skillId / appId, isEquipped và changed (kết quả app có thể bao gồm cả appVersionId và version):
Khi cần duyệt danh mục, hãy tra cứu ID qua client.bazaar trước.Các kỹ năng được trang bị bao gồm source: mind cho kỹ năng từ danh mục / do Mind tạo, system cho kỹ năng nền tảng (ví dụ: Skill Architect).
Cuộc trò chuyện
Liên kết một bí danh (ví dụ: main) ổn định với một Mind trước khi nhắn tin:
await client.ensureConversation("main", mindId);
ensureConversation là idempotent, nếu bí danh đã tồn tại cho Mind đó, cuộc hội thoại hiện tại sẽ được trả về.Các trình trợ giúp cấp thấp hơn khi bạn tự quản lý bí danh:
getHistory trả về toàn bộ bản ghi hội thoại giữa người dùng và Mind. Các hàng sử dụng senderType (1 = con người, 0 = Mind). Cùng trường này xuất hiện trên các sự kiện SSE từ subscribeEvents / eventsIterator / waitForReply.sendMessage yêu cầu alias và messageText. attachments tùy chọn chấp nhận các đối tượng outbound, ưu tiên url HTTPS công khai với fileName và mimeType:
await client.sendMessage({ alias: "main", messageText: "Summarize this PDF in one sentence.", attachments: [ { url: "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf", fileName: "dummy.pdf", mimeType: "application/pdf", extension: "pdf", }, ],});
Các URL hình ảnh sử dụng cùng một dạng (mimeType: "image/png", v.v.). Các phản hồi của Mind trên getHistory, waitForReply và các sự kiện SSE có thể bao gồm các Artifact inbound, ví dụ:
// One attachment on a Mind reply (PDF; artifact body truncated){ artifactId: "7388b65d-144a-49ff-a4dc-cb7c23ded982", slug: "whale_watchtower_skill_artifact_1_0_5", logicalType: "document", mimeType: "application/pdf", extension: "pdf", artifact: "JVBERi0xLjQK...",}
Gửi đi sử dụng content cho tải trọng nội tuyến; câu trả lời đến sử dụng artifact cho cùng một vai trò. slug và logicalType là các chuỗi tùy chọn, hãy coi các giá trị như là gợi ý, không phải là một enum cố định. Xem tham chiếu API để biết chi tiết về trường.getLatestHistoryFingerprint trả về dấu vân tay của tin nhắn mới nhất, hãy truyền nó dưới dạng after trong getHistory để chỉ lấy các hàng mới hơn hoặc dưới dạng afterFingerprint trước waitForReply để bạn có thể phát hiện ra các câu trả lời đến sau khi bạn gửi.
Giải quyết Mind nào mà một bí danh đã nói chuyện lần cuối:
for await (const event of client.eventsIterator({ alias: "main" })) { console.log(event.fingerprint, event.messageText);}
Truyền signal cho các tùy chọn trình lặp hoặc đăng ký để hủy khi quy trình của bạn tắt.
Lỗi
Các lệnh gọi HTTP thất bại sẽ báo lỗi MindsApiError kèm status, code và message. Gọi phương thức cần xác thực mà thiếu builderApiKey sẽ báo missing_builder_api_key ngay khi gọi. Lỗi 401/403 thường do Builder API key bị thiếu hoặc đã bị thu hồi; lỗi 429 có thể kèm hướng dẫn thử lại.
Các loại (BuilderMind, Conversation, MessageRecord, MessagingEvent, CognitionBalance, BazaarSkill, BazaarApp, EquippedSkill, EquippedApp, CircleMember, CircleMutationResult, CognitionUsageResponse, CognitionUsageByToolResponse, UpdateMindStatusBody, …) và parseHumanIdFromBuilderApiKey được xuất từ mục nhập gói.