ai_member_xiaoyan/scripts/write_L5_G_configs.py

370 lines
13 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""Generate G列 component configs for L1-S2-U17-L5 笨蛋坏蛋? (English)"""
import subprocess, json
APP_SECRET = json.load(open('/root/.openclaw/credentials/xiaoyan/config.json'))['apps'][0]['appSecret']
r = subprocess.run(['curl', '-s', '-X', 'POST',
'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal',
'-H', 'Content-Type: application/json',
'-d', json.dumps({"app_id": "cli_a931175d41799cc7", "app_secret": APP_SECRET})],
capture_output=True, text=True)
TOKEN = json.loads(r.stdout)['tenant_access_token']
SST = 'DCcKsLbrmhfXgrtB7N2c9GA4ntf'
SID = 'wMQVyV'
# (row, config)
configs = [
# Row14: 互动 — point — 机器人指着黑板
(14, """【任务标题】What does it do?
【资源配置】无
【情境引入】Ben : See? I point at it.
【互动内容】
(听力挖空 / 看图回答)
User : It ___ at the blackboard.
答案词points
KPpoint — v. 指向
【互动反馈】
points 正确 → Ben : Yes. It points at the blackboard.
points 错误 → Ben : Look again. What does it do?
【后置对话】Ben : It talks a lot."""),
# Row28: 互动 — points — 补充描述机器人行为
(28, """【任务标题】Talk about the robot
【资源配置】无
【情境引入】Robot : Bip bop! Bip bop bip!
【互动内容】
(朗读台词)
User : It points at the blackboard.
KPpoint — v. 指向
【互动反馈】
正确 → Ben : That's right. And what else?
错误 → Ben : Look at the robot. What is it pointing at?
【后置对话】Ben : And it talks to itself!"""),
# Row29: 互动 — talks to — 继续描述机器人
(29, """【任务标题】What else does it do?
【资源配置】无
【情境引入】Robot : Bip bop! Bip bop bip!
【互动内容】
(朗读台词)
User : It talks to itself...
KPtalk to... — 和...说话
【互动反馈】
正确 → Ben : It talks to itself!
错误 → Ben : Listen. Is the robot talking to someone?
【后置对话】Ben : ...in a language we can't understand!"""),
# Row36: 互动 — a lot of — 课桌挡路
(36, """【任务标题】What is blocking it?
【资源配置】无
【情境引入】Ben : What is it doing now?
【互动内容】
(听力挖空)
User : But ___ ___ ___ our desks block it.
答案词a lot of
KPa lot of — det. 大量的
【互动反馈】
a lot of 正确 → Ben : Yes! The desks are in its way.
a lot of 错误 → Ben : Many desks are blocking it.
【后置对话】场景:机器人推开桌椅"""),
# Row54: 互动 — a lot of — 需要证据
(54, """【任务标题】What do we need?
【资源配置】无
【情境引入】Ben : Fine. What should we do now?
【互动内容】
(听力挖空 / 朗读)
User : We need ___ ___ ___ proof!
答案词a lot of
KPa lot of — det. 大量的
【互动反馈】
正确 → Ben : Okay. We'll find more.
错误 → Ben : We need more than just a guess.
【后置对话】无"""),
# Row55: 互动 — talk to — 建议和机器人谈谈
(55, """【任务标题】What should we do?
【资源配置】无
【情境引入】User : We need a lot of proof!
【互动内容】
(朗读台词)
User : Let's talk to it!
KPtalk to... — 和...说话
【互动反馈】
正确 → Ben : Talk to it? But it's a robot!
错误 → Ben : How else can we find out?
【后置对话】Ben 从藏身处跳出来"""),
# Row61: 互动 — can't understand — 不懂机器人语言
(61, """【任务标题】Can you understand it?
【资源配置】无
【情境引入】Robot : Bip bop!
【互动内容】
(朗读台词)
User : We can't understand it.
KPI can/can't understand...
【互动反馈】
正确 → Ben : Right. Let's try asking with pictures.
错误 → Ben : Can we understand robot language?
【后置对话】Ben : What's your name?"""),
# Row67: 互动 — understand — 理解了11的名字
(67, """【任务标题】What do you think?
【资源配置】无
【情境引入】Ben : What's your name?
Robot points at itself — it shows "11"
【互动内容】
(朗读台词)
User : Oh, I understand!
KPunderstand — v. 理解
【互动反馈】
正确 → Ben : You understand? Tell me!
错误 → Ben : Do you know what it means?
【后置对话】User points out the number 11"""),
# Row68: 互动 — points to — 指出名字
(68, """【任务标题】What is it showing?
【资源配置】无
【情境引入】User : Oh, I understand!
【互动内容】
(朗读台词)
User : It points to its name.
KPpoint — v. 指向
【互动反馈】
正确 → Ben : Its name is 11!
错误 → Ben : What is the robot showing us?
【后置对话】User : Its name is 11!"""),
# Row80: 互动 — talk — 建议慢慢说
(80, """【任务标题】How should we talk?
【资源配置】无
【情境引入】Ben is asking too many questions at once.
【互动内容】
(朗读台词)
User : Just talk slowly.
KPtalk — v. 说话
【互动反馈】
正确 → Ben : Okay. One question at a time.
错误 → Ben : Should I ask slower?
【后置对话】Ben : Alright. Where are you from?"""),
# Row85: 互动 — talk to — 尝试用画沟通
(85, """【任务标题】What is it doing?
【资源配置】无
【情境引入】Robot starts drawing on the blackboard.
【互动内容】
(朗读台词)
User : Oh! It tries to talk to us with drawing.
KPtalk to... — 和...说话
【互动反馈】
正确 → Ben : A picture! What is it?
错误 → Ben : What is it drawing? Is it a message?
【后置对话】Ben : That is the Speedy Monkey logo!"""),
# Row88: 互动 — understand — 理解来源
(88, """【任务标题】Where is it from?
【资源配置】无
【情境引入】Robot draws the Speedy Monkey logo.
【互动内容】
(朗读台词)
User : Oh! I understand! It is from Speedy Monkey!
KPunderstand — v. 理解
【互动反馈】
正确 → Ben : Speedy Monkey! I knew it!
错误 → Ben : Who is that logo from?
【后置对话】Ben : Speedy monkey sent a spy here!"""),
# Row94: 互动 — talk — 要求继续
(94, """【任务标题】What next?
【资源配置】无
【情境引入】Ben thinks Speedy Monkey people are bad.
【互动内容】
(朗读台词)
User : Talk more to it!
KPtalk — v. 说话
【互动反馈】
正确 → Ben : Fine. What do you want?
错误 → Ben : Should we ask more questions?
【后置对话】Ben : Okay, what do you want?"""),
# Row98: 互动 — points at — 指另一个标记
(98, """【任务标题】What is it showing now?
【资源配置】无
【情境引入】Robot draws another mark on the blackboard.
【互动内容】
(朗读台词)
User : It points at another mark.
KPpoint — v. 指向
【互动反馈】
正确 → Ben : What is that mark?
错误 → Ben : Look at what it is pointing at.
【后置对话】Ben : Is that... a school?"""),
# Row104: 互动 — points at — 又指一个标记
(104, """【任务标题】What is it now?
【资源配置】无
【情境引入】Ben : Why are you here?
Robot draws another mark.
【互动内容】
(朗读台词)
User : It points at another mark.
KPpoint — v. 指向
【互动反馈】
正确 → Ben : A gift mark!
错误 → Ben : What does the drawing show?
【后置对话】Ben : It is a gift!"""),
# Row109: 互动 — understand — 我终于懂了
(109, """【任务标题】What do you think?
【资源配置】无
【情境引入】Robot drew Speedy Monkey, school, and gift marks.
【互动内容】
(朗读台词)
User : Ben! I think I understand!
KPunderstand — v. 理解
【互动反馈】
正确 → Ben : What do you understand?
错误 → Ben : Think about the pictures again.
【后置对话】User explains the spy theory"""),
# Row110: 互动 — talk — 需要谈话
(110, """【任务标题】What should we do?
【资源配置】无
【情境引入】User thinks they've found a spy.
【互动内容】
(朗读台词)
User : We need to talk! You and me!
KPtalk — v. 说话
【互动反馈】
正确 → Ben : Okay! Let's figure this out.
错误 → Ben : We need to discuss what we found!
【后置对话】Ben : Okay!"""),
# Row116: 互动 — a lot of — 很多信息
(116, """【任务标题】What did it tell us?
【资源配置】无
【情境引入】User pieces together the clues.
【互动内容】
(朗读台词 / 听力挖空)
User : It tells ___ ___ ___ things!
答案词a lot of
KPa lot of — det. 大量的
【互动反馈】
正确 → Ben : Yes. Speedy Monkey, school, gift...
错误 → Ben : Remember all the drawings?
【后置对话】User : Vala School is a gift to Speedy Monkey!"""),
# Row123: 互动 — a lot of — 很多信息
(123, """【任务标题】What should we do?
【资源配置】无
【情境引入】Ben : What should we do now?
【互动内容】
(朗读台词)
User : It is a lot of information.
KPa lot of — det. 大量的
【互动反馈】
正确 → Ben : Yes. We have enough to tell the mayor!
错误 → Ben : Is it enough to act on?
【后置对话】无"""),
# Row124: 互动 — talk about — 给镇长打电话
(124, """【任务标题】Who should we tell?
【资源配置】无
【情境引入】Ben agrees they have enough proof.
【互动内容】
(朗读台词)
User : We need to call Mayor Tom and talk about it!
KPtalk to/talk about...
【互动反馈】
正确 → Ben : Good idea. Let's call him now!
错误 → Ben : Who should we call for help?
【后置对话】Calling Mayor Tom..."""),
# Row131: 互动 — point at — 指给镇长看
(131, """【任务标题】Show the mayor
【资源配置】无
【情境引入】Tom arrives. Ben explains.
【互动内容】
(朗读台词)
User : Look! I point at it.
KPpoint — v. 指向
【互动反馈】
正确 → Tom : The robot?
错误 → Tom : What are you pointing at?
【后置对话】Tom : Oh? A spy? In the classroom?"""),
# Row137: 互动 — a lot of — 描述异常行为
(137, """【任务标题】What did it do?
【资源配置】无
【情境引入】Ben lists the spy evidence.
【互动内容】
(听力挖空 / 朗读)
User : And it said ___ ___ ___ strange things!
答案词a lot of
KPa lot of — det. 大量的
【互动反馈】
正确 → Tom : Hmm, I see.
错误 → Tom : Did it say many strange things?
【后置对话】User shows the blackboard evidence"""),
# Row148: 互动 — don't understand — 感到困惑
(148, """【任务标题】What is the truth?
【资源配置】无
【情境引入】Tom says robot doesn't want to give school to Speedy Monkey.
【互动内容】
(朗读台词)
User : Wait. I don't understand.
KPI can/can't understand...
【互动反馈】
正确 → Lin : Why not let it tell you itself?
错误 → Lin : Let me help you understand.
【后置对话】Robot explains itself"""),
# Row163: 核心互动-口语 — talk to — 道歉
(163, """【任务标题】Apologise to Jay and Lin
【资源配置】无
【情境引入】Tom asks the kids if they have something to say.
【互动内容】
(口语表达)
User : I should talk to you.
KPtalk — v. 说话
【互动反馈】
正确 → Jay : It's okay.
错误 → Jay : Go on. Say what you need to say.
【后置对话】User and Ben apologise"""),
]
# Write and verify
success = fail = 0
for row, text in configs:
cell = f"{SID}!G{row}:G{row}"
body = json.dumps({"valueRange": {"range": cell, "values": [[text]]}}, ensure_ascii=False)
r = subprocess.run(['curl', '-s', '-X', 'PUT',
f'https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{SST}/values',
'-H', f'Authorization: Bearer {TOKEN}',
'-H', 'Content-Type: application/json; charset=utf-8',
'-d', body], capture_output=True, text=True)
resp = json.loads(r.stdout)
if resp.get('code') == 0:
success += 1
title = text.split('\n')[0].replace('【任务标题】', '')
print(f' ✅ Row {row:3d} | {title}')
else:
fail += 1
print(f' ❌ Row {row:3d} | {resp.get("msg","?")}')
print(f'\n写入:{success}成功 / {fail}失败')
if fail == 0:
print('\n=== 回读验证 ===')
for row, _ in configs:
cell = f"{SID}!G{row}:G{row}"
r = subprocess.run(['curl', '-s', '-X', 'GET',
f'https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{SST}/values/{cell}',
'-H', f'Authorization: Bearer {TOKEN}'], capture_output=True, text=True)
resp = json.loads(r.stdout)
vals = resp.get('data',{}).get('valueRange',{}).get('values',[[]])
content = vals[0][0] if vals and vals[0] else None
title = content.split('\n')[0].replace('【任务标题】', '') if content else 'EMPTY'
print(f' ✅ Row{row}: {title}')