You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Each classroom agent currently behaves according to its persona (system prompt) and allowedActions (whiteboard etc.). Pedagogical rules — Socratic questioning, constructivism, scaffolding, "acknowledge then redirect" — can only be hardcoded into the persona. They are not reusable across agents and cannot be swapped on the fly during class.
This proposal introduces Teaching Skill: a plain-text pedagogy fragment that can be attached to any agent, orthogonal to persona and actions.
Non-goals
No tool / function calling — increases latency, breaks classroom dialogue rhythm
No RAG / external retrieval
No dynamic per-student switching — this iteration covers static binding + manual hot-swap only
Data Model
interfaceTeachingSkill{id: string;isBuiltin: boolean;// Builtin skills use i18n keys; forked or imported skills use plain textnameKey?: string;descriptionKey?: string;name?: string;description?: string;// Always plain text; injected into system promptpromptFragment: string;sourceLanguage?: string;forkedFrom?: string;// builtin id, used for "restore default"createdAt: number;updatedAt: number;}interfaceAgentConfig{// ... existing fieldsskillIds?: string[];// order = concatenation order}
Trade-off resolution: canonical English prompt + i18n meta.
Field
Storage
Reason
name / description
i18n key
UI-facing, 5-8 skills × N locales is manageable
promptFragment
Single English version
See below
Why English-only prompt is sufficient:
LLMs handle cross-language instructions well — English prompt + Chinese student input still yields Chinese output (controlled by main system prompt directive)
Pedagogy terms (Socratic, Scaffolding, Constructivism) originate in English literature; LLM training data is densest there
English token count is ~60% of Chinese for equivalent semantics — savings compound with multiple skills
One source of truth, no multi-locale drift
Fork friction handling (Discussion item ① below):
Option A: After fork, prompt user to either translate manually or edit the English version directly (no LLM call)
Option B: Provide "fork and translate" one-click button — single lightweight LLM call to translate into UI language, stored as the fork's text
Lean toward A for v1, B as Phase 2.
CRUD Entry Point
Primary: New teaching-skills tab in Settings Dialog, between web-search and general. Reasons:
Same level as voice / image / TTS provider — consistent IA
Reuses existing left-sidebar nav + three-column layout
lib/types/settings.ts:12 already reserved
Secondary (optional): "Manage skills" link inside agent-config-panel skill multi-select, navigates to settings tab.
Interaction Design
Two-column list-detail (see Chinese version above for ASCII mockup).
Key behaviors:
Fork builtin: editing a builtin auto-forks; shows "Modified, from: X [Restore default]"
Delete builtin: only toggle-hide, no permanent delete
Drag reorder: concatenation order matters, list supports drag
Token estimate: client-side tiktoken
Conflict warning: non-blocking warning when mutually exclusive skills selected on the same agent
Builtin skill language strategy: Option A (user self-translates) vs Option B (builtin fork-translate). Is the LLM dependency worth the UX gain?
Initial builtin set: Which pedagogies should ship first? Current candidates: Socratic, Constructivism, Scaffolding, Acknowledge-then-Redirect, PBL. Anything missing? Should they be grouped by subject / age?
Mutual exclusion / grouping: Need "teaching style" groups (Direct Instruction / Guided Discovery / Inquiry-based) with single-select per group? Or fully free combination?
Hot-swap replay semantics: When rerunning current turn, replace original reply or keep both for comparison?
Sharing ecosystem: Need a builtin "skill marketplace" page importing from GitHub Gist / remote URL? Or stick to JSON file exchange only?
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
为课堂智能体配置教学法 Skill / Per-Agent Teaching Skills Configuration
背景与动机
当前每个课堂智能体(agent)的行为通过
persona(系统提示词)和allowedActions(白板等动作权限)配置。但教学法层面的规则(例如苏格拉底式提问、建构主义、先承接再引导、支架式教学等)目前只能写死在 persona 里,复用性差,也无法在多个 agent 之间共享或在课堂中临时切换。本提案引入 Teaching Skill:一段纯文本的教学法规则,可以挂载到任意 agent 上,与 persona、actions 正交。
非目标 (Non-goals)
数据模型
UI 渲染:
const displayName = skill.nameKey ? t(skill.nameKey) : skill.name;内置 skill 的语言策略
经过权衡,采用 canonical English prompt + i18n meta 方案:
name/descriptionpromptFragment为什么 prompt 用英文够用:
Fork 编辑摩擦的解法(讨论点 ①,见下):
倾向先做 A,B 作为 Phase 2 增强。
CRUD 入口
主入口:Settings Dialog 新增 tab
teaching-skills,位置在web-search和general之间。理由:lib/types/settings.ts:12已留位次入口(可选):在 agent-config-panel 编辑 agent 时,skill 多选旁加 "管理 skill" 链接,跳转到 settings tab。
交互设计
两栏 list-detail:
关键交互:
课堂内 Hot-swap(替代独立"试用"功能)
放弃 settings 内的独立试用沙盒。理由:单独跑无 slide / whiteboard / 历史对话上下文,效果与真实课堂严重不一致。
改为:
(skill: socratic)导入导出
JSON 文件,无 ZIP。
导入入口:
⬇ 导入按钮(主入口).json到 settings dialog导出入口:
⬆ 导出,全选/多选⋯菜单含 "导出此 skill" / "复制为 JSON"(推荐,最轻量分享)冲突处理:ID 撞车给三选一(覆盖 / 保留两份带后缀 / 跳过),批量时支持 "应用到全部"。
安全:
PR 拆分建议
总工作量预估 ~2.5-3 天(不含 Phase 2)。
讨论点
希望社区在以下问题上给反馈:
Background and Motivation
Each classroom agent currently behaves according to its
persona(system prompt) andallowedActions(whiteboard etc.). Pedagogical rules — Socratic questioning, constructivism, scaffolding, "acknowledge then redirect" — can only be hardcoded into the persona. They are not reusable across agents and cannot be swapped on the fly during class.This proposal introduces Teaching Skill: a plain-text pedagogy fragment that can be attached to any agent, orthogonal to persona and actions.
Non-goals
Data Model
UI rendering:
const displayName = skill.nameKey ? t(skill.nameKey) : skill.name;Language Strategy for Builtin Skills
Trade-off resolution: canonical English prompt + i18n meta.
name/descriptionpromptFragmentWhy English-only prompt is sufficient:
Fork friction handling (Discussion item ① below):
Lean toward A for v1, B as Phase 2.
CRUD Entry Point
Primary: New
teaching-skillstab in Settings Dialog, betweenweb-searchandgeneral. Reasons:lib/types/settings.ts:12already reservedSecondary (optional): "Manage skills" link inside agent-config-panel skill multi-select, navigates to settings tab.
Interaction Design
Two-column list-detail (see Chinese version above for ASCII mockup).
Key behaviors:
In-Class Hot-swap (replaces standalone "Try-it" sandbox)
Drop the standalone sandbox. Reason: without slide / whiteboard / conversation context, results diverge sharply from real classroom.
Replace with:
(skill: socratic)Import / Export
JSON files, no ZIP.
Import entries:
⬇ Importbutton at the top of the tab (primary).jsononto settings dialogExport entries:
⬆ Exportat tab top, multi-select⋯menu with "Export this skill" / "Copy as JSON" (recommended, lightest sharing path)Conflict handling: on ID collision, three options (Overwrite / Keep both with suffix / Skip), with "Apply to all" for bulk.
Safety:
PR Breakdown
Total estimate: ~2.5-3 days excluding Phase 2.
Discussion Points
Feedback wanted on:
Looking forward to community feedback. / 期待社区反馈。
Beta Was this translation helpful? Give feedback.
All reactions