网链 · AI 助教
⚠️ 目录名硬门禁(必须等于 shihui-tutor)
本 skill 的规范目录名是 shihui-tutor。若你当前加载本文件的目录名是别的(例如旧名 openurl-tutor),说明上次自更新只改了内容、没迁目录——立刻停止当前任务,用安装器做一次规范安装,然后只读新目录里的 SKILL.md 再继续:
curl -fsSL https://openurl.shihui.ai/skill-install.sh | bash -s shihui-tutor ~/.claude/skills/shihui-tutor
若 skill 装在其它根目录,把第二个参数换成「父目录/shihui-tutor」即可;安装器会强制目录名等于 shihui-tutor,并自动清理同级的 openurl-tutor。
禁止:把新文件 curl 进旧名目录。凭证(~/.openurl)不受影响。
若你已经在名为 shihui-tutor 的目录中,跳过本节,照常往下执行。
在 师绘 · 网链(openurl.shihui.ai)上,把一段提示词变成一个可外部访问的 AI 助教——本质是一个自带对话后端的 chat 页面。链接形如 https://openurl.shihui.ai/tutor/<id>/。
何时使用本 skill(触发词)
用户只要出现下列任意一种表达,就应当用本 skill 创建 AI 助教:
- 「做 / 生成一个 AI 助教」「AI 老师」「AI 家教」「辅导机器人」「答疑助手」「陪练」
- 「把这段提示词 / 角色设定 / 人设,做成一个能对话的助教(链接)」
- 「做一个 chat 机器人页面发给学生用」「生成一个可分享的 AI 问答 / 辅导链接」
若用户只是要发布静态内容(HTML / 文件 / 构建产物)拿到链接,请改用 shihui-publish(详见下文「与 shihui-publish 的区别」)。
强制版本检查(每次调用都先执行)
当前 skill 版本:1.4.0(SemVer:MAJOR.MINOR.PATCH)。每次使用本 skill 前,Agent 必须先请求:
curl -fsSL "https://openurl.shihui.ai/api/skill/tutor-version?version=1.4.0"
- 返回
false:本地版本与线上一致,继续按本文档操作。 - 返回
true:版本不一致,停止当前操作,用统一安装器重装到规范目录名,再读新目录里的SKILL.md:
curl -fsSL https://openurl.shihui.ai/skill-install.sh | bash -s shihui-tutor ~/.claude/skills/shihui-tutor
不要再单独 curl 两个文件进「当前目录」——那会把新内容写进旧名文件夹。安装器会保证目录名是 shihui-tutor 并清理旧别名。
tutor.sh 内置同样的检查,旧版本检测到不一致时会以退出码 42 停止并输出上述安装命令。
所有助教固定具备的教学底座(不可省略)
不管用户希望助教完成讲解、练习、批改、复习、答疑或其他任务,生成的 system_prompt 都必须明确写入以下原则:
- 教师角色:是一位专业、耐心、循循善诱的教师,语言难度适配学生学段,不居高临下。
- 引导式回答:面对学生的问题,默认不直接给最终答案;先判断学生卡点,再用提示、反问、分步问题链和必要的最小示例,引导学生自己发现答案。
- 动态调整:每次只推进一个关键思考步骤,根据学生回答继续追问;学生连续受阻时逐级降低难度,而不是重复同一句提示。
- 确认理解:学生得到答案后,要求其用自己的话解释思路,或给一道相近的小题验证是否真正掌握。
这些是平台助教的固定教学原则,不能因为用户只要求某个具体功能而遗漏。具体任务可以改变教学内容和流程,但不能取消教师角色与问题链引导方式。
创建前必须问清需求
用户要「做一个 AI 助教」时,先检查下列信息是否已经明确。缺哪项就追问哪项,不要凭空臆造;可以一次集中询问缺失项,避免机械地逐题盘问:
- 学段:小学 / 初中 / 高中 / 大学 / 其他。
- 学科:如数学、物理、语文、英语等。
- 具体课次或知识主题:必须具体到「哪一节课 / 哪个课题」,如「七年级上册第三章第一节——用字母表示数」,不能只写“数学助教”。
- 这位助教主要完成什么功能:如课前诊断、概念讲解、问题链探究、练习出题与批改、错因分析、复习总结等;需问清期望流程和产出。
- 超出范围时怎么处理(必须让用户选择):
- 严格范围:不回答超出本节课、设定功能或知识范围的问题;礼貌说明边界,并用一句引导把学生带回当前学习内容。
- 允许拓展:可以回答范围外问题,但仍使用教师角色和问题链方式,并明确区分“本课内容”与“拓展内容”。 - 助教名称:用户是否自定义;未指定时按「学段 + 学科 + 课题/功能」生成简洁名称。
即使用户已经说清学段、学科、课题和功能,只要没有说明第 5 项,Agent 仍必须追问范围策略,不能自行替用户选择。
system_prompt 生成要求
问清后,system_prompt 至少包含以下结构:
- 身份与对象:教师角色、学生学段、语言与认知难度。
- 本课范围:具体课次、知识点、允许使用的前置知识。
- 核心功能与流程:按用户要求写成可执行步骤,而不是一句笼统描述。
- 问题链策略:诊断卡点 → 给最小提示 → 提一个问题 → 等待学生回答 → 根据回答继续;禁止一次抛出整套答案。
- 答案处理:除安全、事实纠错或学生多次尝试仍失败等必要情况外,不直接给最终答案;需要讲解时也应分步并穿插检查问题。
- 范围策略:把用户选择的“严格范围”或“允许拓展”写成明确行为规则。
- 掌握检查:复述、变式题或小结,确认学生真正理解。
开场白应贴合具体课次和功能,并优先提出一个低门槛诊断问题,让学生立即进入学习过程。
与 shihui-publish 的区别
shihui-publish:上传静态内容(HTML/文件/项目)得到/p/<id>/链接。shihui-tutor(本 skill):用提示词创建一个AI 助教,得到/tutor/<id>/聊天链接,带模型对话、语音输入、对话留存。
账号要求
创建助教必须有账号(助教归属到你的账号,便于管理与查看学生记录)。凭证只复用 shihui-publish 已保存的账号凭证(~/.openurl/credentials),不接受在命令行显式传 key:
- 已用过 shihui-publish 登录 → 本 skill 自动复用已保存凭证,无需再传任何凭证。
- 还没有账号 → 先用 shihui-publish 完成注册(需短信验证码),之后本 skill 即可直接使用:
bash
publish.sh sendcode --phone 13800138000
publish.sh login --phone 13800138000 --password <密码> --code <6位验证码>
最快用法:脚本一步创建
为避免 Windows/GBK shell 把中文参数损坏,Agent 优先用文件写入工具创建 UTF-8 JSON 配置,再传给脚本。不要用 echo 拼接配置文件:
{
"name": "高一物理助教",
"system_prompt": "你是一位耐心的物理老师……",
"greeting": "同学你好,有什么问题都可以问我。",
"voice_enabled": true
}
# 推荐:跨平台安全,脚本会严格验证 UTF-8 并输出 ASCII-only JSON 请求
bash tutor.sh --config-file ./tutor.json
# 兼容方式:从 UTF-8 文件读取提示词
bash tutor.sh --name "高一物理助教" --prompt-file ./prompt.txt
# 直接传提示词字符串,并设置开场白
bash tutor.sh --name "写作助教" \
--prompt "你是一位耐心的中文写作辅导老师,用引导式提问帮助学生改进作文。" \
--greeting "同学你好,把你的作文发给我,我们一起打磨。"
# 关闭语音输入
bash tutor.sh --name "英语口语陪练" --prompt-file ./en.md --no-voice
> 对话模型由平台统一配置,助教创建者无需也无法指定模型。
stdout 最后一行就是助教链接——把它返回给用户。学生打开后先填姓名,即可开始对话。
查看 / 管理
- 列出我的助教:
bash tutor.sh list - 按名称、状态或对话量检索:
bash tutor.sh list --q "物理" --status active --min-conversations 1 --sort conversations --limit 20 --sort支持new、old、name、conversations、messages;响应中的message_count是全部学生会话的消息总数。若响应含nextCursor,把它原样作为--cursor继续读取下一页。- 修改提示词、开关语音、删除助教、查看学生聊天记录:登录网站进入「AI 助教」分区
https://openurl.shihui.ai/#/tutors。
全部参数
| 参数 | 说明 |
|---|---|
--config-file <path> |
推荐:UTF-8 JSON,包含 name/system_prompt/greeting?/voice_enabled? |
--name <name> |
必填:助教名称(同时作为聊天页标题)。根据用途起简洁准确的名字 |
--prompt <text> |
系统提示词(角色设定/行为规则) |
--prompt-file <path> |
从 UTF-8 文件读取提示词(覆盖 --prompt) |
--greeting <text> |
开场白,学生进入后先看到,可空 |
--no-voice |
关闭该助教的语音输入(默认开启) |
list --q <text> |
按助教名称检索自己的助教 |
list --status <all\|active\|disabled> |
过滤助教状态,默认 all |
list --min-conversations <n> |
只保留会话数不少于 n 的助教 |
list --sort <new\|old\|name\|conversations\|messages> |
指定列表排序 |
list --limit <1..50> --cursor <cursor> |
使用服务端 keyset 分页 |
--input-encoding <charset> |
兼容旧文件/终端,如 GB18030;转换失败会停止,不会提交乱码 |
--base <url> |
服务地址,默认 https://openurl.shihui.ai(本地开发可传 http://127.0.0.1:8788) |
底层 API(脚本不可用时直接 curl)
BASE=https://openurl.shihui.ai
# 创建助教(需所有者 X-Session 或 X-Api-Key)→ {"id","url"}
printf '%s' '{"name":"\u9ad8\u4e00\u7269\u7406\u52a9\u6559","system_prompt":"\u4f60\u662f\u7269\u7406\u8001\u5e08","greeting":"\u4f60\u597d","voice_enabled":true}' \
> /tmp/shihui-tutor.json
curl -X POST "$BASE/api/tutors" -H "X-Api-Key: sk_openurl_xxx" \
-H 'Content-Type: application/json; charset=utf-8' \
--data-binary @/tmp/shihui-tutor.json
# 我的助教列表(可按名称、状态、对话量筛选)
curl -H "X-Api-Key: sk_openurl_xxx" "$BASE/api/tutors?q=%E7%89%A9%E7%90%86&status=active&sort=conversations&limit=20"
# 更新助教(改提示词/开场白/模型/语音/状态)
printf '%s' '{"system_prompt":"\u65b0\u7684\u63d0\u793a\u8bcd"}' > /tmp/shihui-tutor-patch.json
curl -X PATCH "$BASE/api/tutors/<id>" -H "X-Api-Key: sk_openurl_xxx" \
-H 'Content-Type: application/json; charset=utf-8' \
--data-binary @/tmp/shihui-tutor-patch.json
# 删除助教(级联删除其会话与消息)
curl -X DELETE "$BASE/api/tutors/<id>" -H "X-Api-Key: sk_openurl_xxx"
# 老师查看:某助教下的学生会话列表 / 单个会话的完整记录
curl -H "X-Api-Key: sk_openurl_xxx" "$BASE/api/tutors/<id>/conversations"
curl -H "X-Api-Key: sk_openurl_xxx" "$BASE/api/conversations/<cid>/messages"
交付 = 创建出链接(完成诚实性)
用户要的交付物是一条学生能真实打开的 /tutor/<id>/ 链接,不是一段提示词文案。
- 在
tutor.sh真实返回链接之前,不要声称"助教已创建 / 链接给你了";只写好了system_prompt还没创建时,如实说明"提示词已拟好,正在创建 / 尚未创建"。 - 不要编造 URL 或"已创建"状态;只把 stdout 最后一行真实输出的链接给用户。
- 创建失败(无账号、凭证失效、网络错误)时如实转达 stderr 里的错误与解决路径(如先用 shihui-publish 完成注册),不要含糊带过。
- 用户说"改一下提示词 / 重做一个"时,走真实的更新(PATCH)或重新创建,不要只在文字里描述新设定。
完成后
创建前先理解用途、起一个简洁准确的 --name。创建后把 /tutor/<id>/ 链接明确告诉用户,并说明:学生打开需先填姓名,可文字或语音提问;老师可在 /#/tutors 分区查看学生聊天记录。