CopilotKit vừa phát hành Channels SDK, một thư viện mã nguồn mở cho phép tích hợp một tác nhân (agent) hiện có vào nền tảng nhắn tin. Giả định cốt lõi của SDK này là tập trung và có thể kiểm chứng: người dùng đã có một tác nhân với mô hình, công cụ và logic nghiệp vụ. Channels cung cấp cho tác nhân này một môi trường để tương tác với người dùng mà không cần viết lại mã cho từng nền tảng.
Hiện tại, Channels SDK hỗ trợ Slack và Microsoft Teams dưới dạng các nền tảng truy cập sớm. Discord và Google Chat được công bố là các nền tảng dự kiến sẽ được hỗ trợ trong tương lai.
Việc cài đặt bao gồm hai gói:
```
npm install @copilotkit/channels @copilotkit/runtime
```
Kết nối với tác nhân của bạn
CopilotKit vừa phát hành Channels SDK, một thư viện mã nguồn mở cho phép tích hợp một tác nhân (agent) hiện có vào nền tảng nhắn tin. Giả định cốt lõi của thư viện này là tập trung và có thể kiểm chứng: người dùng đã có một tác nhân với mô hình, công cụ và logic nghiệp vụ. Channels cung cấp một môi trường để tác nhân tương tác với người dùng mà không cần viết lại mã cho từng nền tảng.
Hiện tại, Channels hỗ trợ Slack và Microsoft Teams dưới dạng các giao diện truy cập sớm. Discord và Google Chat được lên kế hoạch hỗ trợ trong tương lai.
Việc cài đặt bao gồm hai gói:
```
npm install @copilotkit/channels @copilotkit/runtime
```
Kết nối với tác nhân của người dùng được thực hiện thông qua AG-UI, giao thức tương tác tác nhân-người dùng do CopilotKit duy trì. Bất kỳ hệ thống nào hỗ trợ AG-UI đều có thể hoạt động. Điều này bao gồm LangGraph, CrewAI, Mastra, Pydantic AI, Google ADK và cả một tác nhân HTTP đơn giản do người dùng tự phát triển. Mô hình và lớp điều phối của người dùng vẫn được giữ nguyên.
Điểm khác biệt quan trọng là Channels không phải là một tác nhân thứ hai. Nó là một phương tiện truyền tải cùng với một mục tiêu hiển thị. Người dùng viết một tin nhắn một lần và bộ điều hợp sẽ chuyển đổi nó sang định dạng gốc của từng nền tảng. Điều này có nghĩa là Block Kit trong Slack và Adaptive Cards trong Teams, không phải là một khối văn bản được đẩy qua webhook.
**Có thể triển khai không?**
Có. SDK đã được phát hành, cấp phép MIT và có hợp đồng thời gian chạy được ghi lại.
**Quy trình hoạt động của một lượt tương tác**
Đây là quy trình duy nhất cho mỗi lượt tương tác:
1. Một người dùng gửi tin nhắn đến ứng dụng của bạn trong Slack hoặc Microsoft Teams.
2. CopilotKit Intelligence nhận sự kiện từ nền tảng và chuyển đến quy trình Channels của bạn.
3. Channels chạy tác nhân của bạn qua AG-UI, thực thi các công cụ và hiển thị kết quả.
4. Intelligence gửi giao diện người dùng gốc của nền tảng trở lại cuộc trò chuyện.
Sự phân chia trách nhiệm được thực hiện như sau: Người dùng vận hành tác nhân, thông tin xác thực mô hình, công cụ và logic nghiệp vụ của mình. Người dùng cũng vận hành trình lắng nghe Channels chạy dài hạn, cùng với trạng thái ứng dụng, triển khai và nhật ký. Intelligence quản lý thông tin xác thực nền tảng Slack và Teams. Nó cũng chịu trách nhiệm về việc tiếp nhận dữ liệu từ nền tảng, phân phối có xác thực, đăng ký thời gian chạy, kiểm tra tình trạng và kết nối lại.
Việc hiển thị cần được giải thích thêm. Tin nhắn được tạo dưới dạng JSX và được chuyển đổi thành một biểu diễn trung gian có thể tuần tự hóa. Bộ điều hợp dịch biểu diễn đó sang định dạng gốc của nền tảng, và các trình xử lý tương tác được liên kết thông qua một kho hành động.
**Hợp đồng thời gian chạy**
Vòng đời là phần đáng để tìm hiểu. Không có lệnh `channel.start()`. Thời gian chạy sở hữu việc kích hoạt.
```
import { createChannel } from "@copilotkit/channels";
import { CopilotRuntime, CopilotKitIntelligence } from "@copilotkit/runtime/v2";
import { createCopilotNodeListener } from "@copilotkit/runtime/v2/node";
const channel = createChannel({
name: process.env.CHANNEL_CODE,
provider: "slack",
agent: makeAgent,
});
const runtime = new CopilotRuntime({
agents: {},
intelligence: new CopilotKitIntelligence({ apiKey: process.env.INTELLIGENCE_API_KEY }),
identifyUser: () => ({ id: "channels-runtime", name: "Channels Runtime" }),
channels: [channel],
});
const listener = createCopilotNodeListener({ runtime, basePath: "/api/copilotkit" });
await listener.channels.ready({ timeoutMs: 30_000 });
```
Việc tạo trình lắng nghe sẽ bắt đầu kết nối kênh. Lệnh `await channels.ready()` sẽ khiến cấu hình bị lỗi gây ra lỗi khởi động rõ ràng thay vì âm thầm. `channels.status()` trả về trạng thái tổng thể mà người dùng có thể dựa vào, và `channels.stop()` sẽ đóng kênh để tắt máy một cách duyên dáng.
Thời gian chạy (runtime) cung cấp các trình lắng nghe (listener) cho Node, Hono và Express thông qua các đường dẫn con @copilotkit/runtime/v2/*.
Hàm createChannel yêu cầu nhiều hơn một tên và một tác nhân (agent). Các tùy chọn đi kèm bao gồm tools (công cụ), context (ngữ cảnh), components (thành phần), commands (lệnh), store (lưu trữ), sanitizeAgentEvents (làm sạch sự kiện tác nhân), showToolStatus (hiển thị trạng thái công cụ) và replyContinuation (tiếp tục trả lời). Việc đăng ký các thành phần JSX có tên cho phép một kênh hiển thị lại và kích hoạt lại các trình xử lý sau khi khởi động lại. Nếu không đăng ký, một cú nhấp chuột vào tin nhắn được đăng trước khi khởi động lại sẽ trở thành một hành động đã hết hạn.
Những gì tác nhân có thể làm trong kênh
Bộ tính năng này nhắm đến công việc diễn ra trong một luồng, không phải trò chuyện vì lợi ích của nó.
Giao diện người dùng tạo sinh (Generative UI), để tác nhân hiển thị giao diện khi nhiệm vụ yêu cầu.
Con người tham gia vào vòng lặp (Human in the loop), để một người phê duyệt trước khi một hành động quan trọng được thực hiện.
Công cụ (Tools), để tác nhân có thể tạo một vấn đề, đặt lịch họp hoặc mở một yêu cầu kéo (pull request).
Một lớp lưu trữ (persistence layer), cộng với bản ghi (transcript) mang bộ nhớ qua các nền tảng.
Lệnh gạch chéo (Slash commands) và đề cập (mentions), được ánh xạ đến tương tác tác nhân phù hợp.
OpenTag minh họa cụ thể mô hình phê duyệt. Mọi thay đổi của Linear và Notion đều bị chặn trong mã trước khi yêu cầu MCP chạy. Trình chặn phát ra một confirm_write và chỉ tiếp tục sau khi được phê duyệt. Đọc và hiển thị không bị tạm dừng.
Những điểm chính
@copilotkit/channels 0.5.0 đã có mặt trên npm theo giấy phép MIT, với Slack và Microsoft Teams là các giao diện truy cập sớm.
Mỗi kênh yêu cầu một khóa API CopilotKit Intelligence, trên đường dẫn được quản lý và đường dẫn trực tiếp.
Slack đã có sẵn rộng rãi dưới dạng nhà cung cấp được quản lý; Teams được liệt kê là truy cập sớm nhưng vẫn có một ghi chú hạn chế trong các loại được cung cấp.
Các bộ điều hợp Discord, Telegram và WhatsApp được cung cấp trong gói dưới dạng các tích hợp sắp tới.
Việc triển khai yêu cầu Node.js 22+, một dự án ESM và một quy trình chạy dài; máy chủ phi tập trung (serverless) sẽ không giữ kết nối.
Cảm ơn nhóm Copilotkit vì sự lãnh đạo tư tưởng / tài nguyên cho bài viết này. Bài viết này được tài trợ bởi Copilokit.
Nguồn tin: MarkTechPost — Tác giả: Asif Razzaq. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.