Skip to content

AI 辅助开发

使用 AI 编码工具(Cursor / Claude Code / Copilot / Codex / CodeBuddy / Trae 等)+ SDK Helper Skill,通过对话辅助, 使用 @tencent-classroom/sdk 腾讯云实时互动-教育版无UI-SDK 完成互动课堂项目的开发。

你不需要通读所有 API 文档, 了解接入完整流程. 只需要告诉 AI 你想实现的互动课堂项目,它帮你写代码、查文档、检查错误。

安装 Skill

方式一:Skills CLI

自动检测并安装到你的 AI 工具:

bash
npx skills add InteractiveClassroom/skills --skill tcic-sdk-helper

更新:

bash
npx skills update

方式二:腾讯 SkillHub

通过对话安装

复制提示词,发送给任意 AI 助手即可安装 Skill,包括但不限于Lighthouse OpenClaw、WorkBuddy、QClaw、Kimi、Claude等

bash
请先检查是否已安装 SkillHub 商店,若未安装,请根据 https://skillhub.cn/install/skillhub.md 安装Skillhub商店,但是只安装CLI,然后安装tcic-sdk-helper技能。
若已安装,则直接安装tcic-sdk-helper技能。

命令行安装

01、在终端中执行以下命令,即可安装腾讯 SkillHub CLI

bash
// 复制命令到终端执行,安装 CLI 并优先采用 SkillHub 加速安装技能
curl -fsSL https://skillhub.cn/install/install.sh | bash

02、安装完 CLI 后,安装 Skill

bash
skillhub install tcic-sdk-helper

能做什么

这个 Skill 给 AI Agent 注入了腾讯云实时互动-教育版无UI-SDK的辅助能力,包括:

  1. 代码生成 — 按角色(老师/学生/助教/巡课)和场景辅助开发出可运行代码,处理好生命周期顺序、错误处理、权限检查、资源释放,开发者不用从零拼。

  2. 文档查询 — 遇到具体 API 参数、枚举值、State/Event 细节时,给出回答。

  3. 代码诊断 — 开发者提供代码,Skill 识别常见错误:状态订阅时机错误、资源未释放、越权操作等。

开发流程

第一步:创建项目 & 获取参数

向 AI 提问:

"我要开始接入 TCIC SDK,需要准备什么?"

AI 会检查你是否安装了 SDK,并引导你获取 schoolIdclassIduserIdtoken 等接入参数。

如果你还没有 token,AI 会提供腾讯云 API 文档链接,指导你通过服务端 RegisterUser + LoginUser 获取。

第二步:生成接入代码

告诉 AI 你的角色和需求:

"帮我写一个学生端接入代码,需要连麦上台和聊天功能"

"写一个老师端的完整接入,包含开始上课、音视频、白板"

"我需要一个助教端,只管理成员和聊天"

AI 会输出完整可运行代码,包含:

  • 实例创建和初始化
  • 事件监听(在 joinClass 前注册)
  • 进房和错误处理
  • stageList$ 驱动的远端流绑定
  • 音视频推流(上台后)
  • 资源释放(leaveClass + destroy)

第三步:按场景扩展功能

在基础代码上逐步添加功能:

"加上屏幕共享功能"

"加上 IM 聊天收发消息"

"加上答题器"

"加上白板和课件"

AI 会生成对应场景的代码片段,并正确处理资源生命周期。

第四步:查询 API 细节

遇到具体问题时直接问:

"bindRemoteView 的第三个参数是什么?"

"TResultCode 错误码 1010 是什么意思?"

"classStatus$ 的值有哪些?分别代表什么状态?"

"stageList$ 和 memberList$ 有什么区别?"

AI 会回答。

第五步:诊断和修复

写好代码后,让 AI 检查:

"帮我检查为什么其他成员上台但是UI看不到视频画面" + 提供已写好的代码

AI 会根据业务逻辑+实际场景, 给出原因和解决方案。

示例:从零完成学生端

以下展示一个完整的对话流程:

:我要做一个学生端页面,需要看到老师的视频、能举手连麦、有聊天功能。Vue 3 项目。

AI:(检查环境 → 确认角色 → 生成完整代码)

typescript
import { TencentClassroom, TEvent, StreamType } from '@tencent-classroom/sdk';
import type { MemberInfo, ViewBinding } from '@tencent-classroom/sdk';

// classId / userId / token 由服务端调用腾讯云 API 获取
// 详见:https://cloud.tencent.com/document/product/1639/80938
const classroom = new TencentClassroom({ schoolId: YOUR_SCHOOL_ID });

await classroom.init();

// 事件注册(必须在 joinClass 前)
classroom.on(TEvent.KICK_OUT, (reason) => { /* 处理踢出 */ });
classroom.on(TEvent.CLASS_END, () => { /* 课堂结束 */ });

const result = await classroom.joinClass({ classId, userId, token, role: 'student' });
if (!result.ok) { console.error(result.message); return; }

// stageList$ 驱动远端流绑定
const bindings = new Map<string, ViewBinding>();
classroom.state.stageList$.subscribe((members) => {
  // ... diff 绑定/解绑逻辑
});

// 举手连麦
await classroom.handUp();

// 上台后开启音视频
classroom.state.stageStatus$.subscribe((status) => {
  if (status === 'active') {
    classroom.startCamera(localVideoDom);
    classroom.startMicrophone();
  }
});

// IM 消息
classroom.state.messageList$.subscribe((msgs) => { /* 渲染 */ });
await classroom.sendTextMessage('Hello');

// 离开时清理
classroom.leaveClass();
classroom.destroy();

:stageList$ 怎么做 diff 绑定?

AI:(输出 diff 逻辑)

:帮我检查一下为什么学生看不到其他学生的视频画面

AI:(执行诊断)