@aiyiran/myclaw 1.1.177 → 1.1.178
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Snipaste_2026-07-02_09-55-26.png +0 -0
- package/assets/myclaw-inject.js +148 -182
- package/create_agent.js +22 -14
- package/index.js +26 -24
- package/package.json +1 -1
- package/voice-input-test.html +392 -0
|
Binary file
|
package/assets/myclaw-inject.js
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
var stopping = false; // 正在等待最终识别结果(stopVoice 的 2 秒窗口)
|
|
31
31
|
var suppressNextClipboardCopy = false;
|
|
32
32
|
|
|
33
|
-
// ═══ 1.
|
|
33
|
+
// ═══ 1. 右下角版本入口(打开快捷命令) ═══
|
|
34
34
|
function createVersionBar() {
|
|
35
35
|
if (document.querySelector("#myclaw-version-bar")) return;
|
|
36
36
|
|
|
@@ -56,55 +56,23 @@
|
|
|
56
56
|
"border: 1px solid rgba(120, 120, 120, 0.25)",
|
|
57
57
|
].join(";");
|
|
58
58
|
bar.textContent = "🐾 v" + MYCLAW_VERSION;
|
|
59
|
-
bar.title = "
|
|
59
|
+
bar.title = "打开快捷命令";
|
|
60
60
|
|
|
61
61
|
bar.onmouseenter = function () { bar.style.background = "rgba(37, 99, 235, 1)"; bar.style.color = "#fff"; bar.style.transform = "scale(1.05)"; };
|
|
62
62
|
bar.onmouseleave = function () { bar.style.background = "rgba(59, 130, 246, 0.85)"; bar.style.color = "#fff"; bar.style.transform = "scale(1)"; };
|
|
63
63
|
bar.onclick = function (e) {
|
|
64
64
|
e.stopPropagation();
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
if (commandOpen) {
|
|
66
|
+
closeCommandModal();
|
|
67
|
+
} else {
|
|
68
|
+
openCommandModal();
|
|
69
|
+
}
|
|
69
70
|
};
|
|
70
71
|
|
|
71
72
|
document.body.appendChild(bar);
|
|
72
73
|
}
|
|
73
74
|
|
|
74
|
-
// ═══ 1.1
|
|
75
|
-
function createDocButton() {
|
|
76
|
-
if (document.querySelector("#myclaw-doc-btn")) return;
|
|
77
|
-
|
|
78
|
-
var btn = document.createElement("div");
|
|
79
|
-
btn.id = "myclaw-doc-btn";
|
|
80
|
-
btn.style.cssText = [
|
|
81
|
-
"position: fixed",
|
|
82
|
-
"bottom: 8px",
|
|
83
|
-
"right: 260px",
|
|
84
|
-
"padding: 2px 8px",
|
|
85
|
-
"background: none",
|
|
86
|
-
"color: rgba(150, 150, 150, 0.4)",
|
|
87
|
-
"font-size: 10px",
|
|
88
|
-
"font-family: monospace",
|
|
89
|
-
"z-index: 99999",
|
|
90
|
-
"user-select: none",
|
|
91
|
-
"cursor: pointer",
|
|
92
|
-
"transition: color 0.2s",
|
|
93
|
-
].join(";");
|
|
94
|
-
btn.textContent = "\uD83D\uDCD6 \u6587\u6863";
|
|
95
|
-
btn.title = "\u6253\u5F00\u5E2E\u52A9\u6587\u6863";
|
|
96
|
-
|
|
97
|
-
btn.onmouseenter = function () { btn.style.color = "rgba(150, 150, 150, 0.8)"; };
|
|
98
|
-
btn.onmouseleave = function () { btn.style.color = "rgba(150, 150, 150, 0.4)"; };
|
|
99
|
-
btn.onclick = function (e) {
|
|
100
|
-
e.stopPropagation();
|
|
101
|
-
window.open("https://www.yiranlaoshi.com/blog-posts/2026-04-08-10-00-00_%E7%AC%AC1%E8%AF%BE%E6%99%BA%E8%83%BD%E4%BD%93%E5%85%A5%E9%97%A8%E9%97%AF%E5%85%B3%E5%8D%A1/index.html", "_blank");
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
document.body.appendChild(btn);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// ═══ 1.2 右下角 CMD 按钮(弹框 iframe) ═══
|
|
75
|
+
// ═══ 1.1 右下角 CMD 按钮(弹框 iframe) ═══
|
|
108
76
|
var cmdOpen = false;
|
|
109
77
|
|
|
110
78
|
function createCmdButton() {
|
|
@@ -1411,6 +1379,109 @@ btn.addEventListener("click", function () {
|
|
|
1411
1379
|
});
|
|
1412
1380
|
}
|
|
1413
1381
|
|
|
1382
|
+
// 弹出命令输入小弹框
|
|
1383
|
+
function promptAndRun(title, placeholder, hint, cmdTemplate, btnColor, defaultValue, allowAnyName) {
|
|
1384
|
+
var mask = document.createElement("div");
|
|
1385
|
+
mask.style.cssText = [
|
|
1386
|
+
"position:fixed",
|
|
1387
|
+
"top:0;left:0;width:100vw;height:100vh",
|
|
1388
|
+
"background:rgba(0,0,0,0.3)",
|
|
1389
|
+
"z-index:999999",
|
|
1390
|
+
"display:flex",
|
|
1391
|
+
"align-items:center",
|
|
1392
|
+
"justify-content:center",
|
|
1393
|
+
"animation:myclaw-fade-in 0.15s ease",
|
|
1394
|
+
].join(";");
|
|
1395
|
+
|
|
1396
|
+
var box = document.createElement("div");
|
|
1397
|
+
box.style.cssText = [
|
|
1398
|
+
"width:360px",
|
|
1399
|
+
"background:#1e1e2e",
|
|
1400
|
+
"border-radius:8px",
|
|
1401
|
+
"overflow:hidden",
|
|
1402
|
+
"box-shadow:0 8px 32px rgba(0,0,0,0.5)",
|
|
1403
|
+
].join(";");
|
|
1404
|
+
|
|
1405
|
+
var h = document.createElement("div");
|
|
1406
|
+
h.style.cssText = "padding:10px 14px;background:#2d2d3f;color:#cdd6f4;font-size:13px;display:flex;justify-content:space-between;align-items:center;";
|
|
1407
|
+
h.innerHTML = '<span>' + title + '</span>';
|
|
1408
|
+
var x = document.createElement("span");
|
|
1409
|
+
x.textContent = "\u2715";
|
|
1410
|
+
x.style.cssText = "cursor:pointer;padding:2px 6px;border-radius:3px;transition:background 0.15s;";
|
|
1411
|
+
x.onmouseenter = function () { x.style.background = "rgba(255,255,255,0.1)"; };
|
|
1412
|
+
x.onmouseleave = function () { x.style.background = "none"; };
|
|
1413
|
+
x.onclick = function () { mask.remove(); };
|
|
1414
|
+
h.appendChild(x);
|
|
1415
|
+
|
|
1416
|
+
var body = document.createElement("div");
|
|
1417
|
+
body.style.cssText = "padding:16px;display:flex;flex-direction:column;gap:10px;";
|
|
1418
|
+
|
|
1419
|
+
var desc = document.createElement("div");
|
|
1420
|
+
desc.textContent = hint;
|
|
1421
|
+
desc.style.cssText = "font-size:11px;color:#888;";
|
|
1422
|
+
body.appendChild(desc);
|
|
1423
|
+
|
|
1424
|
+
var input = document.createElement("input");
|
|
1425
|
+
input.type = "text";
|
|
1426
|
+
input.placeholder = placeholder;
|
|
1427
|
+
input.value = defaultValue || '';
|
|
1428
|
+
input.style.cssText = "padding:8px 10px;background:#252536;border:1px solid #3d3d5c;border-radius:4px;color:#cdd6f4;font-size:13px;font-family:monospace;outline:none;";
|
|
1429
|
+
input.onfocus = function () { input.style.borderColor = btnColor; };
|
|
1430
|
+
input.onblur = function () { input.style.borderColor = "#3d3d5c"; };
|
|
1431
|
+
body.appendChild(input);
|
|
1432
|
+
|
|
1433
|
+
var submitBtn = document.createElement("button");
|
|
1434
|
+
submitBtn.textContent = title;
|
|
1435
|
+
submitBtn.style.cssText = "padding:8px 16px;background:" + btnColor + ";border:none;border-radius:4px;color:#fff;font-size:12px;font-family:monospace;cursor:pointer;transition:opacity 0.15s;";
|
|
1436
|
+
submitBtn.onmouseenter = function () { submitBtn.style.opacity = "0.8"; };
|
|
1437
|
+
submitBtn.onmouseleave = function () { submitBtn.style.opacity = "1"; };
|
|
1438
|
+
|
|
1439
|
+
function doSubmit() {
|
|
1440
|
+
var val = input.value.trim();
|
|
1441
|
+
if (!val) {
|
|
1442
|
+
input.style.borderColor = "#ff4444";
|
|
1443
|
+
input.focus();
|
|
1444
|
+
return;
|
|
1445
|
+
}
|
|
1446
|
+
// allowAnyName=true(如「新伙伴」):允许中文,后端 mc new 会自动生成 ascii id 并把中文存为显示名。
|
|
1447
|
+
// 否则(如「添加对话」):仍要求 ascii,因为它需要的是真实 agent id。
|
|
1448
|
+
if (!allowAnyName && !/^[a-zA-Z0-9\-]+$/.test(val)) {
|
|
1449
|
+
input.style.borderColor = "#ff4444";
|
|
1450
|
+
input.focus();
|
|
1451
|
+
return;
|
|
1452
|
+
}
|
|
1453
|
+
submitBtn.disabled = true;
|
|
1454
|
+
submitBtn.textContent = "\u6267\u884C\u4E2D...";
|
|
1455
|
+
var safeName = allowAnyName ? '"' + val.replace(/"/g, '') + '"' : val;
|
|
1456
|
+
var cmd = cmdTemplate.replace("{name}", safeName);
|
|
1457
|
+
runCommand(cmd);
|
|
1458
|
+
setTimeout(function () { mask.remove(); }, 1000);
|
|
1459
|
+
}
|
|
1460
|
+
|
|
1461
|
+
submitBtn.onclick = doSubmit;
|
|
1462
|
+
input.onkeydown = function (e) { if (e.key === "Enter") doSubmit(); };
|
|
1463
|
+
body.appendChild(submitBtn);
|
|
1464
|
+
|
|
1465
|
+
box.appendChild(h);
|
|
1466
|
+
box.appendChild(body);
|
|
1467
|
+
mask.appendChild(box);
|
|
1468
|
+
mask.onclick = function (e) { if (e.target === mask) mask.remove(); };
|
|
1469
|
+
document.body.appendChild(mask);
|
|
1470
|
+
setTimeout(function () { input.focus(); }, 100);
|
|
1471
|
+
}
|
|
1472
|
+
|
|
1473
|
+
function openNewAgentPrompt() {
|
|
1474
|
+
promptAndRun(
|
|
1475
|
+
"\u65B0\u5EFA\u4F19\u4F34",
|
|
1476
|
+
"\u8F93\u5165\u65B0\u4F19\u4F34\u540D\u79F0\uFF0C\u5982 my-cat",
|
|
1477
|
+
"\u7ED9\u4F60\u7684\u65B0 AI \u4F19\u4F34\u8D77\u4E2A\u540D\u5B57\uFF08\u4E2D\u6587 / \u82F1\u6587\u5747\u53EF\uFF09\uFF0C\u70B9\u51FB\u540E\u4F1A\u81EA\u52A8\u521B\u5EFA",
|
|
1478
|
+
"mc new {name}",
|
|
1479
|
+
"#3b82f6",
|
|
1480
|
+
"",
|
|
1481
|
+
true
|
|
1482
|
+
);
|
|
1483
|
+
}
|
|
1484
|
+
|
|
1414
1485
|
// ═══ 7.5 右下角"新会话"按钮(支持中文命名) ═══
|
|
1415
1486
|
//
|
|
1416
1487
|
// 实现思路(复用原生机制,避免重写会话切换逻辑):
|
|
@@ -1543,6 +1614,41 @@ btn.addEventListener("click", function () {
|
|
|
1543
1614
|
document.body.appendChild(btn);
|
|
1544
1615
|
}
|
|
1545
1616
|
|
|
1617
|
+
function createNewAgentButton() {
|
|
1618
|
+
if (document.querySelector("#myclaw-newagent-btn")) return;
|
|
1619
|
+
|
|
1620
|
+
var btn = document.createElement("div");
|
|
1621
|
+
btn.id = "myclaw-newagent-btn";
|
|
1622
|
+
btn.style.cssText = [
|
|
1623
|
+
"position: fixed",
|
|
1624
|
+
"bottom: 8px",
|
|
1625
|
+
"right: 430px",
|
|
1626
|
+
"padding: 3px 10px",
|
|
1627
|
+
"background: rgba(59, 130, 246, 0.85)",
|
|
1628
|
+
"color: #fff",
|
|
1629
|
+
"font-size: 11px",
|
|
1630
|
+
"font-weight: bold",
|
|
1631
|
+
"font-family: monospace",
|
|
1632
|
+
"border-radius: 4px",
|
|
1633
|
+
"z-index: 99999",
|
|
1634
|
+
"user-select: none",
|
|
1635
|
+
"cursor: pointer",
|
|
1636
|
+
"transition: all 0.2s",
|
|
1637
|
+
"letter-spacing: 0.5px",
|
|
1638
|
+
].join(";");
|
|
1639
|
+
btn.textContent = "🤝 新伙伴";
|
|
1640
|
+
btn.title = "创建一个新的 AI 伙伴";
|
|
1641
|
+
|
|
1642
|
+
btn.onmouseenter = function () { btn.style.background = "rgba(37, 99, 235, 1)"; btn.style.transform = "scale(1.05)"; };
|
|
1643
|
+
btn.onmouseleave = function () { btn.style.background = "rgba(59, 130, 246, 0.85)"; btn.style.transform = "scale(1)"; };
|
|
1644
|
+
btn.onclick = function (e) {
|
|
1645
|
+
e.stopPropagation();
|
|
1646
|
+
openNewAgentPrompt();
|
|
1647
|
+
};
|
|
1648
|
+
|
|
1649
|
+
document.body.appendChild(btn);
|
|
1650
|
+
}
|
|
1651
|
+
|
|
1546
1652
|
function closeNewSessionModal() {
|
|
1547
1653
|
newSessionOpen = false;
|
|
1548
1654
|
var m = document.querySelector("#myclaw-newsession-modal");
|
|
@@ -1616,56 +1722,14 @@ btn.addEventListener("click", function () {
|
|
|
1616
1722
|
setTimeout(function () { input.focus(); }, 100);
|
|
1617
1723
|
}
|
|
1618
1724
|
|
|
1619
|
-
// ═══ 8.
|
|
1725
|
+
// ═══ 8. 快捷命令弹框 ═══
|
|
1620
1726
|
|
|
1621
1727
|
var commandOpen = false;
|
|
1622
1728
|
|
|
1623
|
-
function createCommandButton() {
|
|
1624
|
-
if (document.querySelector("#myclaw-command-btn")) return;
|
|
1625
|
-
|
|
1626
|
-
var btn = document.createElement("div");
|
|
1627
|
-
btn.id = "myclaw-command-btn";
|
|
1628
|
-
btn.style.cssText = [
|
|
1629
|
-
"position: fixed",
|
|
1630
|
-
"bottom: 8px",
|
|
1631
|
-
"right: 190px",
|
|
1632
|
-
"padding: 3px 10px",
|
|
1633
|
-
"background: rgba(16, 185, 129, 0.85)",
|
|
1634
|
-
"color: #fff",
|
|
1635
|
-
"font-size: 11px",
|
|
1636
|
-
"font-weight: bold",
|
|
1637
|
-
"font-family: monospace",
|
|
1638
|
-
"border-radius: 4px",
|
|
1639
|
-
"z-index: 99999",
|
|
1640
|
-
"user-select: none",
|
|
1641
|
-
"cursor: pointer",
|
|
1642
|
-
"transition: all 0.2s",
|
|
1643
|
-
"letter-spacing: 0.5px",
|
|
1644
|
-
].join(";");
|
|
1645
|
-
btn.textContent = "\u2795 \u547D\u4EE4";
|
|
1646
|
-
btn.title = "\u5FEB\u6377\u547D\u4EE4";
|
|
1647
|
-
|
|
1648
|
-
btn.onmouseenter = function () { btn.style.background = "rgba(5, 150, 105, 1)"; btn.style.transform = "scale(1.05)"; };
|
|
1649
|
-
btn.onmouseleave = function () { if (!commandOpen) { btn.style.background = "rgba(16, 185, 129, 0.85)"; } btn.style.transform = "scale(1)"; };
|
|
1650
|
-
btn.onclick = function (e) {
|
|
1651
|
-
e.stopPropagation();
|
|
1652
|
-
if (commandOpen) {
|
|
1653
|
-
closeCommandModal();
|
|
1654
|
-
} else {
|
|
1655
|
-
openCommandModal();
|
|
1656
|
-
}
|
|
1657
|
-
};
|
|
1658
|
-
|
|
1659
|
-
document.body.appendChild(btn);
|
|
1660
|
-
}
|
|
1661
|
-
|
|
1662
1729
|
function openCommandModal() {
|
|
1663
1730
|
if (document.querySelector("#myclaw-command-modal")) return;
|
|
1664
1731
|
commandOpen = true;
|
|
1665
1732
|
|
|
1666
|
-
var btn = document.querySelector("#myclaw-command-btn");
|
|
1667
|
-
if (btn) btn.style.background = "rgba(5, 150, 105, 1)";
|
|
1668
|
-
|
|
1669
1733
|
// 遮罩
|
|
1670
1734
|
var overlay = document.createElement("div");
|
|
1671
1735
|
overlay.id = "myclaw-command-modal";
|
|
@@ -1735,100 +1799,6 @@ btn.addEventListener("click", function () {
|
|
|
1735
1799
|
return '';
|
|
1736
1800
|
}
|
|
1737
1801
|
|
|
1738
|
-
// 弹出 input 小弹框
|
|
1739
|
-
function promptAndRun(title, placeholder, hint, cmdTemplate, btnColor, defaultValue, allowAnyName) {
|
|
1740
|
-
var mask = document.createElement("div");
|
|
1741
|
-
mask.style.cssText = [
|
|
1742
|
-
"position:fixed",
|
|
1743
|
-
"top:0;left:0;width:100vw;height:100vh",
|
|
1744
|
-
"background:rgba(0,0,0,0.3)",
|
|
1745
|
-
"z-index:999999",
|
|
1746
|
-
"display:flex",
|
|
1747
|
-
"align-items:center",
|
|
1748
|
-
"justify-content:center",
|
|
1749
|
-
"animation:myclaw-fade-in 0.15s ease",
|
|
1750
|
-
].join(";");
|
|
1751
|
-
|
|
1752
|
-
var box = document.createElement("div");
|
|
1753
|
-
box.style.cssText = [
|
|
1754
|
-
"width:360px",
|
|
1755
|
-
"background:#1e1e2e",
|
|
1756
|
-
"border-radius:8px",
|
|
1757
|
-
"overflow:hidden",
|
|
1758
|
-
"box-shadow:0 8px 32px rgba(0,0,0,0.5)",
|
|
1759
|
-
].join(";");
|
|
1760
|
-
|
|
1761
|
-
// 标题
|
|
1762
|
-
var h = document.createElement("div");
|
|
1763
|
-
h.style.cssText = "padding:10px 14px;background:#2d2d3f;color:#cdd6f4;font-size:13px;display:flex;justify-content:space-between;align-items:center;";
|
|
1764
|
-
h.innerHTML = '<span>' + title + '</span>';
|
|
1765
|
-
var x = document.createElement("span");
|
|
1766
|
-
x.textContent = "\u2715";
|
|
1767
|
-
x.style.cssText = "cursor:pointer;padding:2px 6px;border-radius:3px;transition:background 0.15s;";
|
|
1768
|
-
x.onmouseenter = function () { x.style.background = "rgba(255,255,255,0.1)"; };
|
|
1769
|
-
x.onmouseleave = function () { x.style.background = "none"; };
|
|
1770
|
-
x.onclick = function () { mask.remove(); };
|
|
1771
|
-
h.appendChild(x);
|
|
1772
|
-
|
|
1773
|
-
// body
|
|
1774
|
-
var body = document.createElement("div");
|
|
1775
|
-
body.style.cssText = "padding:16px;display:flex;flex-direction:column;gap:10px;";
|
|
1776
|
-
|
|
1777
|
-
var desc = document.createElement("div");
|
|
1778
|
-
desc.textContent = hint;
|
|
1779
|
-
desc.style.cssText = "font-size:11px;color:#888;";
|
|
1780
|
-
body.appendChild(desc);
|
|
1781
|
-
|
|
1782
|
-
var input = document.createElement("input");
|
|
1783
|
-
input.type = "text";
|
|
1784
|
-
input.placeholder = placeholder;
|
|
1785
|
-
input.value = defaultValue || '';
|
|
1786
|
-
input.style.cssText = "padding:8px 10px;background:#252536;border:1px solid #3d3d5c;border-radius:4px;color:#cdd6f4;font-size:13px;font-family:monospace;outline:none;";
|
|
1787
|
-
input.onfocus = function () { input.style.borderColor = btnColor; };
|
|
1788
|
-
input.onblur = function () { input.style.borderColor = "#3d3d5c"; };
|
|
1789
|
-
body.appendChild(input);
|
|
1790
|
-
|
|
1791
|
-
var submitBtn = document.createElement("button");
|
|
1792
|
-
submitBtn.textContent = title;
|
|
1793
|
-
submitBtn.style.cssText = "padding:8px 16px;background:" + btnColor + ";border:none;border-radius:4px;color:#fff;font-size:12px;font-family:monospace;cursor:pointer;transition:opacity 0.15s;";
|
|
1794
|
-
submitBtn.onmouseenter = function () { submitBtn.style.opacity = "0.8"; };
|
|
1795
|
-
submitBtn.onmouseleave = function () { submitBtn.style.opacity = "1"; };
|
|
1796
|
-
|
|
1797
|
-
function doSubmit() {
|
|
1798
|
-
var val = input.value.trim();
|
|
1799
|
-
if (!val) {
|
|
1800
|
-
input.style.borderColor = "#ff4444";
|
|
1801
|
-
input.focus();
|
|
1802
|
-
return;
|
|
1803
|
-
}
|
|
1804
|
-
// allowAnyName=true\uFF08\u5982\u300C\u65B0\u4F19\u4F34\u300D\uFF09\uFF1A\u5141\u8BB8\u4E2D\u6587\uFF0C\u540E\u7AEF mc new \u4F1A\u81EA\u52A8\u751F\u6210 ascii id \u5E76\u628A\u4E2D\u6587\u5B58\u4E3A\u663E\u793A\u540D\u3002
|
|
1805
|
-
// \u5426\u5219\uFF08\u5982\u300C\u6DFB\u52A0\u5BF9\u8BDD\u300D\uFF09\uFF1A\u4ECD\u8981\u6C42 ascii\uFF0C\u56E0\u4E3A\u5B83\u9700\u8981\u7684\u662F\u771F\u5B9E agent id\u3002
|
|
1806
|
-
if (!allowAnyName && !/^[a-zA-Z0-9\-]+$/.test(val)) {
|
|
1807
|
-
input.style.borderColor = "#ff4444";
|
|
1808
|
-
input.focus();
|
|
1809
|
-
return;
|
|
1810
|
-
}
|
|
1811
|
-
submitBtn.disabled = true;
|
|
1812
|
-
submitBtn.textContent = "\u6267\u884C\u4E2D...";
|
|
1813
|
-
// \u5141\u8BB8\u4EFB\u610F\u540D\u65F6\uFF0Cname \u53EF\u80FD\u542B\u4E2D\u6587/\u7A7A\u683C\uFF0C\u52A0\u53CC\u5F15\u53F7\u9632\u6B62 shell \u62C6\u8BCD
|
|
1814
|
-
var safeName = allowAnyName ? '"' + val.replace(/"/g, '') + '"' : val;
|
|
1815
|
-
var cmd = cmdTemplate.replace("{name}", safeName);
|
|
1816
|
-
runCommand(cmd);
|
|
1817
|
-
setTimeout(function () { mask.remove(); }, 1000);
|
|
1818
|
-
}
|
|
1819
|
-
|
|
1820
|
-
submitBtn.onclick = doSubmit;
|
|
1821
|
-
input.onkeydown = function (e) { if (e.key === "Enter") doSubmit(); };
|
|
1822
|
-
body.appendChild(submitBtn);
|
|
1823
|
-
|
|
1824
|
-
box.appendChild(h);
|
|
1825
|
-
box.appendChild(body);
|
|
1826
|
-
mask.appendChild(box);
|
|
1827
|
-
mask.onclick = function (e) { if (e.target === mask) mask.remove(); };
|
|
1828
|
-
document.body.appendChild(mask);
|
|
1829
|
-
setTimeout(function () { input.focus(); }, 100);
|
|
1830
|
-
}
|
|
1831
|
-
|
|
1832
1802
|
// ── 按钮列表 ──
|
|
1833
1803
|
var btns = [
|
|
1834
1804
|
{ label: "\uD83E\uDD1D \u65B0\u4F19\u4F34", desc: "\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684 AI \u4F19\u4F34", hasInput: true, inputTitle: "\u65B0\u5EFA\u4F19\u4F34", placeholder: "\u8F93\u5165\u65B0\u4F19\u4F34\u540D\u79F0\uFF0C\u5982 my-cat", hint: "\u7ED9\u4F60\u7684\u65B0 AI \u4F19\u4F34\u8D77\u4E2A\u540D\u5B57\uFF08\u4E2D\u6587 / \u82F1\u6587\u5747\u53EF\uFF09\uFF0C\u70B9\u51FB\u540E\u4F1A\u81EA\u52A8\u521B\u5EFA", cmd: "mc new {name}", color: "#3b82f6", allowAnyName: true },
|
|
@@ -2391,18 +2361,14 @@ btn.addEventListener("click", function () {
|
|
|
2391
2361
|
var modal = document.querySelector("#myclaw-command-modal");
|
|
2392
2362
|
if (modal) modal.remove();
|
|
2393
2363
|
commandOpen = false;
|
|
2394
|
-
|
|
2395
|
-
var btn = document.querySelector("#myclaw-command-btn");
|
|
2396
|
-
if (btn) btn.style.background = "rgba(16, 185, 129, 0.85)";
|
|
2397
2364
|
}
|
|
2398
2365
|
|
|
2399
2366
|
// ═══ 启动 ═══
|
|
2400
2367
|
function init() {
|
|
2401
2368
|
createVersionBar();
|
|
2402
|
-
createDocButton();
|
|
2403
2369
|
createCmdButton();
|
|
2404
|
-
createCommandButton();
|
|
2405
2370
|
createNewSessionButton();
|
|
2371
|
+
createNewAgentButton();
|
|
2406
2372
|
injectStyles();
|
|
2407
2373
|
|
|
2408
2374
|
// 初始化 VoiceInput SDK
|
package/create_agent.js
CHANGED
|
@@ -85,33 +85,41 @@ function validateAgentId(agentId) {
|
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
// ── 中文/非法输入时的兜底 key 生成 ──────────────────────────────
|
|
88
|
-
// 格式:
|
|
89
|
-
//
|
|
90
|
-
|
|
91
|
-
'brave', 'lunar', 'otter', 'maple', 'pixel', 'comet', 'river', 'ember',
|
|
92
|
-
'tiger', 'cloud', 'quartz', 'mango', 'panda', 'fox', 'willow', 'cedar',
|
|
93
|
-
'orbit', 'frost', 'sunny', 'cocoa', 'pearl', 'raven', 'lotus', 'noble',
|
|
94
|
-
'jade', 'amber', 'breeze', 'crisp', 'dawn', 'echo', 'flint', 'glow',
|
|
95
|
-
];
|
|
96
|
-
|
|
88
|
+
// 格式:z{NNN}-{MD},如 z999-73(7月3日第一个)、z998-73(第二个)
|
|
89
|
+
// NNN 从 999 开始全局倒计,新的 counter 更小 → 字母升序下排在上面
|
|
90
|
+
// MD 为北京时间月+日(不补零),仅供人类识别,排序靠 NNN
|
|
97
91
|
function pad2(n) { return String(n).padStart(2, '0'); }
|
|
98
92
|
|
|
99
|
-
function generateFallbackKey() {
|
|
100
|
-
const
|
|
101
|
-
|
|
93
|
+
function generateFallbackKey(existingIds) {
|
|
94
|
+
const bj = new Date(Date.now() + 8 * 60 * 60 * 1000);
|
|
95
|
+
const MD = String(bj.getUTCMonth() + 1) + String(bj.getUTCDate());
|
|
96
|
+
|
|
97
|
+
const pattern = /^z(\d{3})-/;
|
|
98
|
+
let minCounter = null;
|
|
99
|
+
if (existingIds) {
|
|
100
|
+
for (const id of existingIds) {
|
|
101
|
+
const m = String(id).match(pattern);
|
|
102
|
+
if (m) {
|
|
103
|
+
const n = parseInt(m[1], 10);
|
|
104
|
+
if (minCounter === null || n < minCounter) minCounter = n;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const counter = minCounter === null ? 999 : minCounter - 1;
|
|
109
|
+
return 'z' + String(counter).padStart(3, '0') + '-' + MD;
|
|
102
110
|
}
|
|
103
111
|
|
|
104
112
|
// ── 命名决策:判断输入是否「天生满足」key 格式 ───────────────────
|
|
105
113
|
// 天生满足(标准化后与原输入完全一致)→ 直接用作 id,不另设显示名。
|
|
106
114
|
// 不满足(含中文/空格/大写等)→ 生成兜底 key,原始输入作为 identity.name(中文显示)。
|
|
107
|
-
function resolveAgentNaming(rawName) {
|
|
115
|
+
function resolveAgentNaming(rawName, existingIds) {
|
|
108
116
|
const trimmed = (rawName == null ? '' : String(rawName)).trim();
|
|
109
117
|
const normalized = normalizeAgentId(trimmed);
|
|
110
118
|
const isNative = !!normalized && normalized === trimmed;
|
|
111
119
|
if (isNative) {
|
|
112
120
|
return { agentId: normalized, displayName: null, isNative: true };
|
|
113
121
|
}
|
|
114
|
-
return { agentId: generateFallbackKey(), displayName: trimmed, isNative: false };
|
|
122
|
+
return { agentId: generateFallbackKey(existingIds), displayName: trimmed, isNative: false };
|
|
115
123
|
}
|
|
116
124
|
|
|
117
125
|
/**
|
package/index.js
CHANGED
|
@@ -349,9 +349,21 @@ function runNew() {
|
|
|
349
349
|
|
|
350
350
|
function doCreate(input) {
|
|
351
351
|
const { resolveAgentNaming } = require('./create_agent');
|
|
352
|
+
const fs = require('fs');
|
|
353
|
+
const path = require('path');
|
|
354
|
+
const os = require('os');
|
|
355
|
+
const configPath = path.join(os.homedir(), '.openclaw', 'openclaw.json');
|
|
352
356
|
|
|
353
|
-
//
|
|
354
|
-
var
|
|
357
|
+
// 先读配置,获取已有 id(generateFallbackKey 需要计算下一个 counter)
|
|
358
|
+
var existingIds = new Set();
|
|
359
|
+
try {
|
|
360
|
+
var configData = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
361
|
+
var list = (configData.agents && configData.agents.list) || [];
|
|
362
|
+
existingIds = new Set(list.filter(function(a) { return a && a.id; }).map(function(a) { return a.id; }));
|
|
363
|
+
} catch (e) {}
|
|
364
|
+
|
|
365
|
+
// 命名决策:天生满足 key 格式 → 直接用作 id;否则生成 z{NNN}-{MD} + 中文显示名
|
|
366
|
+
var naming = resolveAgentNaming(input, existingIds);
|
|
355
367
|
var agentId = naming.agentId;
|
|
356
368
|
var displayName = naming.displayName;
|
|
357
369
|
|
|
@@ -364,29 +376,19 @@ function runNew() {
|
|
|
364
376
|
}
|
|
365
377
|
|
|
366
378
|
// 重名检查(不依赖 createAgent,避免它内部 process.exit)
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
if (naming.isNative) {
|
|
376
|
-
// 用户直接输入的 ascii 名撞了 → 友好提示并重试
|
|
377
|
-
console.log(R + 'Agent "' + agentId + '" 已存在,请换一个名字。' + NC);
|
|
378
|
-
console.log('');
|
|
379
|
-
if (rawName) { process.exit(1); return; }
|
|
380
|
-
askName();
|
|
381
|
-
return;
|
|
382
|
-
}
|
|
383
|
-
// 生成的兜底 key 撞名(极罕见)→ 重新生成一次
|
|
384
|
-
naming = resolveAgentNaming(input);
|
|
385
|
-
agentId = naming.agentId;
|
|
386
|
-
displayName = naming.displayName;
|
|
379
|
+
if (existingIds.has(agentId)) {
|
|
380
|
+
if (naming.isNative) {
|
|
381
|
+
// 用户直接输入的 ascii 名撞了 → 友好提示并重试
|
|
382
|
+
console.log(R + 'Agent "' + agentId + '" 已存在,请换一个名字。' + NC);
|
|
383
|
+
console.log('');
|
|
384
|
+
if (rawName) { process.exit(1); return; }
|
|
385
|
+
askName();
|
|
386
|
+
return;
|
|
387
387
|
}
|
|
388
|
-
|
|
389
|
-
|
|
388
|
+
// 生成的 counter key 不应撞名(counter 已基于现有 id 计算),保险提示
|
|
389
|
+
console.log(R + '生成 ID 冲突,请重试。' + NC);
|
|
390
|
+
process.exit(1);
|
|
391
|
+
return;
|
|
390
392
|
}
|
|
391
393
|
|
|
392
394
|
// 校验通过,开始创建
|
package/package.json
CHANGED
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="zh-CN">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>OpenClaw AI创作课设备测试</title>
|
|
7
|
+
<style>
|
|
8
|
+
* {
|
|
9
|
+
box-sizing: border-box;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
body {
|
|
13
|
+
margin: 0;
|
|
14
|
+
min-height: 100vh;
|
|
15
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
|
|
16
|
+
background: #f5f7ff;
|
|
17
|
+
color: #1f2937;
|
|
18
|
+
padding: 18px;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.card {
|
|
22
|
+
max-width: 520px;
|
|
23
|
+
margin: 0 auto;
|
|
24
|
+
background: #ffffff;
|
|
25
|
+
border-radius: 24px;
|
|
26
|
+
padding: 26px 22px;
|
|
27
|
+
box-shadow: 0 14px 36px rgba(31, 41, 55, 0.10);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
h1 {
|
|
31
|
+
margin: 0 0 8px;
|
|
32
|
+
text-align: center;
|
|
33
|
+
font-size: 30px;
|
|
34
|
+
line-height: 1.2;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.sub {
|
|
38
|
+
margin: 0 0 24px;
|
|
39
|
+
text-align: center;
|
|
40
|
+
color: #6b7280;
|
|
41
|
+
font-size: 16px;
|
|
42
|
+
line-height: 1.6;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.field {
|
|
46
|
+
margin-top: 18px;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
label {
|
|
50
|
+
display: block;
|
|
51
|
+
margin-bottom: 8px;
|
|
52
|
+
font-size: 18px;
|
|
53
|
+
font-weight: 800;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
input, select, textarea {
|
|
57
|
+
width: 100%;
|
|
58
|
+
border: 2px solid #e5e7eb;
|
|
59
|
+
border-radius: 16px;
|
|
60
|
+
padding: 14px;
|
|
61
|
+
font-size: 18px;
|
|
62
|
+
outline: none;
|
|
63
|
+
background: #fff;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
input:focus, select:focus, textarea:focus {
|
|
67
|
+
border-color: #2563eb;
|
|
68
|
+
box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.12);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
textarea {
|
|
72
|
+
min-height: 120px;
|
|
73
|
+
line-height: 1.7;
|
|
74
|
+
resize: vertical;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
textarea.voice-active {
|
|
78
|
+
border-color: #ef4444;
|
|
79
|
+
box-shadow: 0 0 0 4px rgba(239, 68, 68, 0.12);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.sentence {
|
|
83
|
+
margin-top: 10px;
|
|
84
|
+
padding: 16px;
|
|
85
|
+
border-radius: 18px;
|
|
86
|
+
background: #fff7df;
|
|
87
|
+
color: #7c4a00;
|
|
88
|
+
font-size: 19px;
|
|
89
|
+
font-weight: 800;
|
|
90
|
+
line-height: 1.8;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
button {
|
|
94
|
+
width: 100%;
|
|
95
|
+
border: none;
|
|
96
|
+
border-radius: 18px;
|
|
97
|
+
padding: 16px;
|
|
98
|
+
font-size: 18px;
|
|
99
|
+
font-weight: 900;
|
|
100
|
+
cursor: pointer;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
#speakBtn {
|
|
104
|
+
margin-top: 14px;
|
|
105
|
+
background: #111827;
|
|
106
|
+
color: white;
|
|
107
|
+
transition: background 0.15s;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
#speakBtn:disabled {
|
|
111
|
+
background: #6b7280;
|
|
112
|
+
cursor: not-allowed;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
#submitBtn {
|
|
116
|
+
margin-top: 20px;
|
|
117
|
+
background: #2563eb;
|
|
118
|
+
color: white;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
#clearBtn {
|
|
122
|
+
margin-top: 10px;
|
|
123
|
+
background: #f3f4f6;
|
|
124
|
+
color: #374151;
|
|
125
|
+
border: 1px solid #e5e7eb;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.status {
|
|
129
|
+
margin-top: 10px;
|
|
130
|
+
min-height: 24px;
|
|
131
|
+
color: #6b7280;
|
|
132
|
+
font-size: 15px;
|
|
133
|
+
line-height: 1.5;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.ok {
|
|
137
|
+
color: #047857;
|
|
138
|
+
font-weight: 700;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.error {
|
|
142
|
+
color: #dc2626;
|
|
143
|
+
font-weight: 700;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.listening {
|
|
147
|
+
color: #2563eb;
|
|
148
|
+
font-weight: 800;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.success {
|
|
152
|
+
display: none;
|
|
153
|
+
margin-top: 20px;
|
|
154
|
+
padding: 16px;
|
|
155
|
+
border-radius: 18px;
|
|
156
|
+
background: #ecfdf5;
|
|
157
|
+
color: #047857;
|
|
158
|
+
font-size: 18px;
|
|
159
|
+
font-weight: 800;
|
|
160
|
+
line-height: 1.6;
|
|
161
|
+
text-align: center;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
.mic-guide {
|
|
166
|
+
margin-top: 14px;
|
|
167
|
+
}
|
|
168
|
+
.mic-guide-tip {
|
|
169
|
+
margin: 0 0 4px;
|
|
170
|
+
font-size: 14px;
|
|
171
|
+
color: #6b7280;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
@media (max-width: 520px) {
|
|
175
|
+
body {
|
|
176
|
+
padding: 12px;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.card {
|
|
180
|
+
padding: 24px 18px;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
h1 {
|
|
184
|
+
font-size: 28px;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
</style>
|
|
188
|
+
</head>
|
|
189
|
+
<body>
|
|
190
|
+
<main class="card">
|
|
191
|
+
<h1>OpenClaw AI创作课</h1>
|
|
192
|
+
<p class="sub">检测麦克风与语音识别(不用在意准确率)</p>
|
|
193
|
+
|
|
194
|
+
<div class="field">
|
|
195
|
+
<label for="name">1. 你的名字</label>
|
|
196
|
+
<input id="name" placeholder="请输入名字" />
|
|
197
|
+
</div>
|
|
198
|
+
|
|
199
|
+
<div class="field">
|
|
200
|
+
<label for="grade">2. 你的年级</label>
|
|
201
|
+
<select id="grade">
|
|
202
|
+
<option value="">请选择年级</option>
|
|
203
|
+
<option>一年级</option>
|
|
204
|
+
<option>二年级</option>
|
|
205
|
+
<option>三年级</option>
|
|
206
|
+
<option>四年级</option>
|
|
207
|
+
<option>五年级</option>
|
|
208
|
+
<option>六年级</option>
|
|
209
|
+
<option>初一</option>
|
|
210
|
+
</select>
|
|
211
|
+
</div>
|
|
212
|
+
|
|
213
|
+
<div class="field">
|
|
214
|
+
<label>3. 麦克风测试</label>
|
|
215
|
+
<div class="sentence">我喜欢 ______ ,我希望今天可以做一个和它有关的小作品。</div>
|
|
216
|
+
<button id="speakBtn" type="button">🎤 点击说话</button>
|
|
217
|
+
<div id="voiceResult" style="display:none;margin-top:12px;padding:14px;background:#f0fdf4;border:2px solid #86efac;border-radius:16px;font-size:17px;line-height:1.7;color:#166534;word-break:break-all;"></div>
|
|
218
|
+
<div class="mic-guide">
|
|
219
|
+
<p class="mic-guide-tip">👆 如果弹出授权窗口,点「允许」即可</p>
|
|
220
|
+
<img src="data:image/png;base64,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" alt="麦克风授权示意" style="width:100%;border-radius:12px;margin-top:8px;" />
|
|
221
|
+
</div>
|
|
222
|
+
<div id="status" class="status">不用等待完整句子,任何识别内容都可以提交完成测试。</div>
|
|
223
|
+
</div>
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
<button id="submitBtn" type="button">提交</button>
|
|
227
|
+
|
|
228
|
+
<div id="success" class="success">收到啦!可以等待上课了。</div>
|
|
229
|
+
</main>
|
|
230
|
+
|
|
231
|
+
<script src="./voice-input/voice-input.js"></script>
|
|
232
|
+
<script>
|
|
233
|
+
const $ = (id) => document.getElementById(id);
|
|
234
|
+
|
|
235
|
+
const nameEl = $("name");
|
|
236
|
+
const gradeEl = $("grade");
|
|
237
|
+
const speakBtn = $("speakBtn");
|
|
238
|
+
const submitBtn = $("submitBtn");
|
|
239
|
+
const statusEl = $("status");
|
|
240
|
+
const successEl = $("success");
|
|
241
|
+
const voiceResult = $("voiceResult");
|
|
242
|
+
|
|
243
|
+
const STORAGE_KEY = "ai_trial_precheck_records";
|
|
244
|
+
|
|
245
|
+
function setStatus(text, type) {
|
|
246
|
+
statusEl.textContent = text;
|
|
247
|
+
statusEl.className = "status" + (type ? " " + type : "");
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
function getRecords() {
|
|
251
|
+
try { return JSON.parse(localStorage.getItem(STORAGE_KEY) || "[]"); }
|
|
252
|
+
catch { return []; }
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
function saveRecord(record) {
|
|
256
|
+
const records = getRecords();
|
|
257
|
+
records.push(record);
|
|
258
|
+
localStorage.setItem(STORAGE_KEY, JSON.stringify(records));
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// ── 讯飞语音输入 ──────────────────────────────────────────────
|
|
262
|
+
if (typeof window.VoiceInput === "undefined") {
|
|
263
|
+
setStatus("语音不可用,请直接打字。", "error");
|
|
264
|
+
speakBtn.disabled = true;
|
|
265
|
+
} else {
|
|
266
|
+
var voice = null;
|
|
267
|
+
var recording = false;
|
|
268
|
+
var stopping = false;
|
|
269
|
+
var committedText = "";
|
|
270
|
+
var stopTimer = null;
|
|
271
|
+
|
|
272
|
+
function initVoice() {
|
|
273
|
+
voice = new window.VoiceInput({
|
|
274
|
+
onResult: function (text) {
|
|
275
|
+
if (!recording && !stopping) return;
|
|
276
|
+
var txt = committedText + text;
|
|
277
|
+
voiceResult.textContent = txt;
|
|
278
|
+
voiceResult.style.display = txt ? 'block' : 'none';
|
|
279
|
+
},
|
|
280
|
+
onStatusChange: function (oldStatus, newStatus) {
|
|
281
|
+
if (newStatus === "recording") {
|
|
282
|
+
setStatus("正在听,请开始说。", "listening");
|
|
283
|
+
}
|
|
284
|
+
// 讯飞 60s 超时自动重连
|
|
285
|
+
if (newStatus === "idle" && recording && !stopping) {
|
|
286
|
+
committedText = voiceResult.textContent || '';
|
|
287
|
+
setTimeout(function () {
|
|
288
|
+
if (recording && voice) voice.start();
|
|
289
|
+
}, 300);
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
onError: function (err) {
|
|
293
|
+
var msg = String(err).toLowerCase();
|
|
294
|
+
var isPerm = msg.indexOf("permission") !== -1 || msg.indexOf("not allowed") !== -1;
|
|
295
|
+
if (isPerm) {
|
|
296
|
+
setStatus("麦克风权限被拒绝,请允许后刷新重试。", "error");
|
|
297
|
+
recording = false;
|
|
298
|
+
stopping = false;
|
|
299
|
+
updateBtn();
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
if (recording) {
|
|
303
|
+
setTimeout(function () {
|
|
304
|
+
if (recording && voice) voice.start();
|
|
305
|
+
}, 1000);
|
|
306
|
+
}
|
|
307
|
+
},
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
function updateBtn() {
|
|
312
|
+
if (recording) {
|
|
313
|
+
speakBtn.textContent = "⏹ 点击停止";
|
|
314
|
+
speakBtn.disabled = false;
|
|
315
|
+
|
|
316
|
+
} else if (stopping) {
|
|
317
|
+
speakBtn.textContent = "⏳ 处理中…";
|
|
318
|
+
speakBtn.disabled = true;
|
|
319
|
+
|
|
320
|
+
} else {
|
|
321
|
+
speakBtn.textContent = "🎤 点击说话";
|
|
322
|
+
speakBtn.disabled = false;
|
|
323
|
+
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
function startVoice() {
|
|
328
|
+
if (!voice) initVoice();
|
|
329
|
+
committedText = voiceResult.textContent || '';
|
|
330
|
+
recording = true;
|
|
331
|
+
stopping = false;
|
|
332
|
+
updateBtn();
|
|
333
|
+
setStatus("连接中…", "listening");
|
|
334
|
+
voice.start();
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
function stopVoice() {
|
|
338
|
+
if (!recording) return;
|
|
339
|
+
recording = false;
|
|
340
|
+
stopping = true;
|
|
341
|
+
updateBtn();
|
|
342
|
+
setStatus("处理剩余音频(约 2 秒)…");
|
|
343
|
+
if (stopTimer) clearTimeout(stopTimer);
|
|
344
|
+
stopTimer = setTimeout(function () {
|
|
345
|
+
stopTimer = null;
|
|
346
|
+
stopping = false;
|
|
347
|
+
committedText = voiceResult.textContent || '';
|
|
348
|
+
if (voice) voice.stop();
|
|
349
|
+
updateBtn();
|
|
350
|
+
setStatus("完成,可以改一下文字。", "ok");
|
|
351
|
+
}, 2000);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
speakBtn.addEventListener("click", function () {
|
|
355
|
+
if (recording) {
|
|
356
|
+
stopVoice();
|
|
357
|
+
} else {
|
|
358
|
+
successEl.style.display = "none";
|
|
359
|
+
startVoice();
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
// ── 提交 ──────────────────────────────────────────────────────
|
|
365
|
+
submitBtn.addEventListener("click", function () {
|
|
366
|
+
const name = nameEl.value.trim();
|
|
367
|
+
const grade = gradeEl.value;
|
|
368
|
+
|
|
369
|
+
if (!name) { alert("请填写名字。"); nameEl.focus(); return; }
|
|
370
|
+
if (!grade) { alert("请选择年级。"); gradeEl.focus(); return; }
|
|
371
|
+
|
|
372
|
+
const voiceText = voiceResult ? (voiceResult.textContent || '') : '';
|
|
373
|
+
saveRecord({ name, grade, voiceText, createdAt: new Date().toISOString() });
|
|
374
|
+
|
|
375
|
+
successEl.style.display = "block";
|
|
376
|
+
setStatus("提交成功。", "ok");
|
|
377
|
+
submitBtn.textContent = "已提交";
|
|
378
|
+
});
|
|
379
|
+
|
|
380
|
+
// ── 重置 ──────────────────────────────────────────────────────
|
|
381
|
+
clearBtn.addEventListener("click", function () {
|
|
382
|
+
nameEl.value = "";
|
|
383
|
+
gradeEl.value = "";
|
|
384
|
+
ideaEl.value = "";
|
|
385
|
+
successEl.style.display = "none";
|
|
386
|
+
submitBtn.textContent = "提交";
|
|
387
|
+
setStatus("也可以直接打字。");
|
|
388
|
+
nameEl.focus();
|
|
389
|
+
});
|
|
390
|
+
</script>
|
|
391
|
+
</body>
|
|
392
|
+
</html>
|