@aiyiran/myclaw 1.1.91 → 1.1.93

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.
Files changed (32) hide show
  1. package/assets/myclaw-artifacts.js +317 -8
  2. package/index.js +8 -5
  3. package/package.json +1 -1
  4. package/skills/yiran-course-template-pipeline/scripts/identify_template.py +2 -2
  5. package/skills/yiran-course-template-pipeline/template-index.json +183 -1
  6. package/skills/yiran-course-template-pipeline/template-index.md +63 -0
  7. package/skills/yiran-playground-template-use/prompts/remix-handoff.txt +24 -8
  8. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220/1.jpg +0 -0
  9. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220/2.jpg +0 -0
  10. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220/3.jpg +0 -0
  11. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220/4.jpg +0 -0
  12. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220/AI/344/270/215/347/224/250/347/234/213/347/232/204/345/216/237/345/247/213/346/217/220/347/244/272/350/257/215/344/272/272/347/261/273/347/234/213/__/351/200/211/351/242/230/345/274/225/346/223/216__.html +589 -0
  13. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220/AI/344/270/215/347/224/250/347/234/213/347/232/204/345/216/237/345/247/213/346/217/220/347/244/272/350/257/215/344/272/272/347/261/273/347/234/213//345/216/237/345/247/213/346/217/220/347/244/272/350/257/215.md +125 -0
  14. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220/AI/344/270/215/347/224/250/347/234/213/347/232/204/345/216/237/345/247/213/346/217/220/347/244/272/350/257/215/344/272/272/347/261/273/347/234/213//350/200/201/350/202/226/347/210/206/346/254/276/351/200/211/351/242/230/345/274/225/346/223/216.md +179 -0
  15. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220/AI/344/270/215/347/224/250/347/234/213/347/232/204/345/216/237/345/247/213/346/217/220/347/244/272/350/257/215/344/272/272/347/261/273/347/234/213//350/200/201/350/202/226/351/207/221/345/217/245/345/272/223v1.md +594 -0
  16. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220/__demo__.html +588 -0
  17. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220/__student-view__.html +77 -0
  18. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220/__student__.json +54 -0
  19. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220/__teacher-view__.html +52 -0
  20. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220/__teacher__.json +46 -0
  21. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220/index.html +148 -0
  22. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220//344/270/211/344/270/252/350/247/206/351/242/221/345/216/237/345/247/213/345/206/205/345/256/271/1-/344/273/200/344/271/210/346/230/257/344/274/230/347/247/200/347/232/204/345/255/251/345/255/220+/350/223/235/346/230/237/344/277/261/344/271/220/351/203/250/345/210/233/345/212/236+/347/210/266/346/257/215/345/244/251/350/201/214/357/274/210/351/200/220/345/255/227/347/250/277/357/274/211.md +48 -0
  23. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220//344/270/211/344/270/252/350/247/206/351/242/221/345/216/237/345/247/213/345/206/205/345/256/271/2-/350/277/207/347/250/213/345/206/231/344/275/234/350/257/276/347/250/213/345/210/206/344/272/253/357/274/210/351/200/220/345/255/227/347/250/277/357/274/211.md +27 -0
  24. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220//344/270/211/344/270/252/350/247/206/351/242/221/345/216/237/345/247/213/345/206/205/345/256/271/3-/350/202/262/345/204/277/345/273/272/350/256/256/357/274/232/345/242/236/351/207/217/344/277/241/346/201/257+/346/214/207/345/274/225vs/345/216/237/345/210/231+/345/210/206/344/272/253/347/224/237/346/264/273/347/273/206/350/212/202/357/274/210/351/200/220/345/255/227/347/250/277/357/274/211.md +204 -0
  25. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220//344/270/211/344/270/252/350/247/206/351/242/221/345/216/237/345/247/213/345/206/205/345/256/271//346/213/206/345/210/206/345/211/215/345/275/225/351/237/263/346/226/207/346/234/254.md +267 -0
  26. package//350/223/235/346/230/237/345/276/256/344/277/241/347/237/255/350/247/206/351/242/221/345/210/206/346/236/220//350/264/242/345/212/241/345/210/206/346/236/220.html +411 -0
  27. package//350/264/246/345/215/225/345/210/206/346/236/220/345/212/251/346/211/213/__demo__.html +411 -0
  28. package//350/264/246/345/215/225/345/210/206/346/236/220/345/212/251/346/211/213/__student-view__.html +77 -0
  29. package//350/264/246/345/215/225/345/210/206/346/236/220/345/212/251/346/211/213/__student__.json +54 -0
  30. package//350/264/246/345/215/225/345/210/206/346/236/220/345/212/251/346/211/213/__teacher-view__.html +52 -0
  31. package//350/264/246/345/215/225/345/210/206/346/236/220/345/212/251/346/211/213/__teacher__.json +50 -0
  32. package//350/264/246/345/215/225/345/210/206/346/236/220/345/212/251/346/211/213/index.html +148 -0
@@ -788,6 +788,14 @@
788
788
  return header;
789
789
  }
790
790
 
791
+ var assetExt = (asset.path || '').split('.').pop().toLowerCase();
792
+ var isCSV = assetExt === 'csv';
793
+ var isPDF = assetExt === 'pdf';
794
+ var CODE_EXTS = ['js', 'jsx', 'ts', 'tsx', 'py', 'css', 'json', 'md', 'txt', 'sh', 'bash', 'yaml', 'yml', 'toml', 'xml', 'sql', 'go', 'java', 'c', 'cpp', 'h', 'rs', 'rb', 'php', 'swift', 'kt', 'vue', 'env', 'gitignore'];
795
+ var isCode = CODE_EXTS.indexOf(assetExt) !== -1;
796
+ var OFFICE_EXTS = ['ppt', 'pptx', 'doc', 'docx', 'xls', 'xlsx'];
797
+ var isOffice = OFFICE_EXTS.indexOf(assetExt) !== -1;
798
+
791
799
  if (isImageAsset(asset)) {
792
800
  // ── 图片模式:先显示固定大小的容器,img 异步加载渐显 ──
793
801
  var imgBox = document.createElement('div');
@@ -839,6 +847,308 @@
839
847
  imgArea.appendChild(img);
840
848
  imgBox.appendChild(imgArea);
841
849
  overlay.appendChild(imgBox);
850
+ } else if (isCSV) {
851
+ // ── CSV 模式:fetch 内容 → 解析 → 渲染表格 ──
852
+ var csvBox = document.createElement('div');
853
+ csvBox.style.cssText = [
854
+ 'display: flex',
855
+ 'flex-direction: column',
856
+ 'background: #1e1e2e',
857
+ 'border-radius: 8px',
858
+ 'box-shadow: 0 8px 32px rgba(0,0,0,0.6)',
859
+ 'width: min(96vw, 1200px)',
860
+ 'height: min(88vh, 800px)',
861
+ 'overflow: hidden',
862
+ ].join(';');
863
+
864
+ csvBox.appendChild(makeHeader('📊 ' + (asset.name || asset.path)));
865
+
866
+ var csvBody = document.createElement('div');
867
+ csvBody.style.cssText = [
868
+ 'flex: 1',
869
+ 'overflow: auto',
870
+ 'background: #13131f',
871
+ 'padding: 0',
872
+ ].join(';');
873
+
874
+ // 加载中提示
875
+ var loadingMsg = document.createElement('div');
876
+ loadingMsg.textContent = '加载中…';
877
+ loadingMsg.style.cssText = 'color:#666;font-size:13px;font-family:monospace;padding:24px;';
878
+ csvBody.appendChild(loadingMsg);
879
+ csvBox.appendChild(csvBody);
880
+ overlay.appendChild(csvBox);
881
+ document.body.appendChild(overlay);
882
+
883
+ // 简单 CSV 解析器(支持引号包裹、逗号/分号分隔)
884
+ function parseCSV(text) {
885
+ var rows = [];
886
+ var lines = text.split(/\r?\n/);
887
+ for (var i = 0; i < lines.length; i++) {
888
+ var line = lines[i];
889
+ if (line.trim() === '') continue;
890
+ var cols = [];
891
+ var cur = '';
892
+ var inQuote = false;
893
+ for (var j = 0; j < line.length; j++) {
894
+ var ch = line[j];
895
+ if (ch === '"') {
896
+ if (inQuote && line[j + 1] === '"') { cur += '"'; j++; }
897
+ else { inQuote = !inQuote; }
898
+ } else if ((ch === ',' || ch === '\t') && !inQuote) {
899
+ cols.push(cur); cur = '';
900
+ } else {
901
+ cur += ch;
902
+ }
903
+ }
904
+ cols.push(cur);
905
+ rows.push(cols);
906
+ }
907
+ return rows;
908
+ }
909
+
910
+ var csvApiUrl = MYCLAW_API_BASE + '/api/file?path=' + encodeURIComponent(getWorkspaceId() + '/' + asset.path) + '&t=' + Date.now();
911
+ fetch(csvApiUrl)
912
+ .then(function (r) { return r.text(); })
913
+ .then(function (text) {
914
+ var rows = parseCSV(text);
915
+ if (rows.length === 0) {
916
+ loadingMsg.textContent = '文件为空';
917
+ return;
918
+ }
919
+ csvBody.innerHTML = '';
920
+
921
+ // 信息栏
922
+ var info = document.createElement('div');
923
+ info.style.cssText = 'color:#666;font-size:12px;font-family:monospace;padding:6px 14px;border-bottom:1px solid #2a2a3e;background:#1e1e2e;';
924
+ info.textContent = (rows.length - 1) + ' 行 × ' + rows[0].length + ' 列';
925
+ csvBody.appendChild(info);
926
+
927
+ var tableWrap = document.createElement('div');
928
+ tableWrap.style.cssText = 'overflow: auto; flex: 1;';
929
+
930
+ var table = document.createElement('table');
931
+ table.style.cssText = [
932
+ 'border-collapse: collapse',
933
+ 'width: 100%',
934
+ 'font-size: 13px',
935
+ 'font-family: monospace',
936
+ 'white-space: nowrap',
937
+ ].join(';');
938
+
939
+ var thead = document.createElement('thead');
940
+ var headerRow = document.createElement('tr');
941
+ var headers = rows[0];
942
+ for (var h = 0; h < headers.length; h++) {
943
+ var th = document.createElement('th');
944
+ th.textContent = headers[h];
945
+ th.style.cssText = [
946
+ 'padding: 8px 14px',
947
+ 'background: #2d2d4e',
948
+ 'color: #cdd6f4',
949
+ 'text-align: left',
950
+ 'position: sticky',
951
+ 'top: 0',
952
+ 'z-index: 1',
953
+ 'border-right: 1px solid #3a3a5e',
954
+ 'border-bottom: 2px solid #4a4a6e',
955
+ ].join(';');
956
+ headerRow.appendChild(th);
957
+ }
958
+ thead.appendChild(headerRow);
959
+ table.appendChild(thead);
960
+
961
+ var tbody = document.createElement('tbody');
962
+ for (var r = 1; r < rows.length; r++) {
963
+ var tr = document.createElement('tr');
964
+ tr.style.background = r % 2 === 0 ? '#16162a' : '#13131f';
965
+ tr.onmouseenter = (function (row) { return function () { row.style.background = '#252545'; }; })(tr);
966
+ tr.onmouseleave = (function (row, bg) { return function () { row.style.background = bg; }; })(tr, r % 2 === 0 ? '#16162a' : '#13131f');
967
+ var cols = rows[r];
968
+ for (var c = 0; c < headers.length; c++) {
969
+ var td = document.createElement('td');
970
+ td.textContent = cols[c] !== undefined ? cols[c] : '';
971
+ td.style.cssText = [
972
+ 'padding: 6px 14px',
973
+ 'color: #cdd6f4',
974
+ 'border-right: 1px solid #2a2a3e',
975
+ 'border-bottom: 1px solid #1e1e30',
976
+ 'max-width: 300px',
977
+ 'overflow: hidden',
978
+ 'text-overflow: ellipsis',
979
+ ].join(';');
980
+ tr.appendChild(td);
981
+ }
982
+ tbody.appendChild(tr);
983
+ }
984
+ table.appendChild(tbody);
985
+ tableWrap.appendChild(table);
986
+ csvBody.appendChild(tableWrap);
987
+ })
988
+ .catch(function () {
989
+ loadingMsg.textContent = '加载失败';
990
+ });
991
+ return;
992
+
993
+ } else if (isPDF) {
994
+ // ── PDF 模式:iframe + 浏览器内置阅读器 ──
995
+ var pdfBox = document.createElement('div');
996
+ pdfBox.style.cssText = [
997
+ 'width: 98vw',
998
+ 'height: 96vh',
999
+ 'background: #1e1e2e',
1000
+ 'border-radius: 8px',
1001
+ 'overflow: hidden',
1002
+ 'display: flex',
1003
+ 'flex-direction: column',
1004
+ 'box-shadow: 0 8px 32px rgba(0,0,0,0.5)',
1005
+ ].join(';');
1006
+
1007
+ pdfBox.appendChild(makeHeader('📄 ' + (asset.name || asset.path)));
1008
+
1009
+ var pdfIframe = document.createElement('iframe');
1010
+ pdfIframe.style.cssText = [
1011
+ 'flex: 1',
1012
+ 'width: 100%',
1013
+ 'border: none',
1014
+ 'background: #fff',
1015
+ ].join(';');
1016
+ pdfIframe.src = MYCLAW_API_BASE + '/api/file?path=' + encodeURIComponent(getWorkspaceId() + '/' + asset.path) + '&t=' + Date.now();
1017
+
1018
+ pdfBox.appendChild(pdfIframe);
1019
+ overlay.appendChild(pdfBox);
1020
+ document.body.appendChild(overlay);
1021
+ pdfIframe.focus();
1022
+ return;
1023
+
1024
+ } else if (isCode) {
1025
+ // ── 代码/文本模式:fetch 内容 → 带行号的代码查看器 ──
1026
+ var codeBox = document.createElement('div');
1027
+ codeBox.style.cssText = [
1028
+ 'display: flex',
1029
+ 'flex-direction: column',
1030
+ 'background: #1e1e2e',
1031
+ 'border-radius: 8px',
1032
+ 'box-shadow: 0 8px 32px rgba(0,0,0,0.6)',
1033
+ 'width: min(96vw, 1100px)',
1034
+ 'height: min(90vh, 860px)',
1035
+ 'overflow: hidden',
1036
+ ].join(';');
1037
+
1038
+ codeBox.appendChild(makeHeader('📝 ' + (asset.name || asset.path)));
1039
+
1040
+ var codeBody = document.createElement('div');
1041
+ codeBody.style.cssText = [
1042
+ 'flex: 1',
1043
+ 'overflow: auto',
1044
+ 'background: #13131f',
1045
+ 'display: flex',
1046
+ ].join(';');
1047
+
1048
+ var loadingMsgCode = document.createElement('div');
1049
+ loadingMsgCode.textContent = '加载中…';
1050
+ loadingMsgCode.style.cssText = 'color:#666;font-size:13px;font-family:monospace;padding:24px;';
1051
+ codeBody.appendChild(loadingMsgCode);
1052
+ codeBox.appendChild(codeBody);
1053
+ overlay.appendChild(codeBox);
1054
+ document.body.appendChild(overlay);
1055
+
1056
+ var codeApiUrl = MYCLAW_API_BASE + '/api/file?path=' + encodeURIComponent(getWorkspaceId() + '/' + asset.path) + '&t=' + Date.now();
1057
+ fetch(codeApiUrl)
1058
+ .then(function (r) { return r.text(); })
1059
+ .then(function (text) {
1060
+ codeBody.innerHTML = '';
1061
+
1062
+ // 行号列
1063
+ var lines = text.split('\n');
1064
+ // 去掉末尾空行
1065
+ if (lines.length > 0 && lines[lines.length - 1] === '') lines.pop();
1066
+
1067
+ var lineNums = document.createElement('div');
1068
+ lineNums.style.cssText = [
1069
+ 'padding: 16px 0',
1070
+ 'min-width: 48px',
1071
+ 'text-align: right',
1072
+ 'font-size: 13px',
1073
+ 'font-family: monospace',
1074
+ 'line-height: 1.6',
1075
+ 'color: #444466',
1076
+ 'background: #0e0e1a',
1077
+ 'user-select: none',
1078
+ 'flex-shrink: 0',
1079
+ 'border-right: 1px solid #2a2a3e',
1080
+ ].join(';');
1081
+ for (var n = 1; n <= lines.length; n++) {
1082
+ var numDiv = document.createElement('div');
1083
+ numDiv.textContent = n;
1084
+ numDiv.style.cssText = 'padding: 0 10px;';
1085
+ lineNums.appendChild(numDiv);
1086
+ }
1087
+
1088
+ // 代码内容
1089
+ var codePre = document.createElement('pre');
1090
+ codePre.style.cssText = [
1091
+ 'margin: 0',
1092
+ 'padding: 16px 20px',
1093
+ 'font-size: 13px',
1094
+ 'font-family: monospace',
1095
+ 'line-height: 1.6',
1096
+ 'color: #cdd6f4',
1097
+ 'flex: 1',
1098
+ 'white-space: pre',
1099
+ 'tab-size: 2',
1100
+ ].join(';');
1101
+
1102
+ var codeEl = document.createElement('code');
1103
+ codeEl.textContent = text;
1104
+ codePre.appendChild(codeEl);
1105
+
1106
+ codeBody.appendChild(lineNums);
1107
+ codeBody.appendChild(codePre);
1108
+
1109
+ // 同步滚动行号
1110
+ codePre.parentElement.addEventListener('scroll', function () {
1111
+ lineNums.style.marginTop = '-' + codeBody.scrollTop + 'px';
1112
+ });
1113
+ codeBody.addEventListener('scroll', function () {
1114
+ lineNums.scrollTop = codeBody.scrollTop;
1115
+ });
1116
+ })
1117
+ .catch(function () { loadingMsgCode.textContent = '加载失败'; });
1118
+ return;
1119
+
1120
+ } else if (isOffice) {
1121
+ // ── Office 文档模式:Microsoft Office Online Viewer ──
1122
+ var officeBox = document.createElement('div');
1123
+ officeBox.style.cssText = [
1124
+ 'width: 98vw',
1125
+ 'height: 96vh',
1126
+ 'background: #1e1e2e',
1127
+ 'border-radius: 8px',
1128
+ 'overflow: hidden',
1129
+ 'display: flex',
1130
+ 'flex-direction: column',
1131
+ 'box-shadow: 0 8px 32px rgba(0,0,0,0.5)',
1132
+ ].join(';');
1133
+
1134
+ var officeIcon = { ppt: '📊', pptx: '📊', doc: '📃', docx: '📃', xls: '📈', xlsx: '📈' };
1135
+ officeBox.appendChild(makeHeader((officeIcon[assetExt] || '📎') + ' ' + (asset.name || asset.path)));
1136
+
1137
+ var officeIframe = document.createElement('iframe');
1138
+ officeIframe.style.cssText = [
1139
+ 'flex: 1',
1140
+ 'width: 100%',
1141
+ 'border: none',
1142
+ 'background: #fff',
1143
+ ].join(';');
1144
+ officeIframe.src = 'https://view.officeapps.live.com/op/embed.aspx?src=' + encodeURIComponent(previewUrl);
1145
+
1146
+ officeBox.appendChild(officeIframe);
1147
+ overlay.appendChild(officeBox);
1148
+ document.body.appendChild(overlay);
1149
+ officeIframe.focus();
1150
+ return;
1151
+
842
1152
  } else {
843
1153
  // ── 非图片:iframe 全屏模式 ──
844
1154
  var box = document.createElement('div');
@@ -864,8 +1174,7 @@
864
1174
  ].join(';');
865
1175
 
866
1176
  // 1. 视频和 HTML 走 CDN
867
- // 2. 其余类型(PDF、文本、音频等)走本地 API (避免乱码或 CDN 延迟)
868
- var assetExt = (asset.path || '').split('.').pop().toLowerCase();
1177
+ // 2. 其余类型(文本、音频等)走本地 API (避免乱码或 CDN 延迟)
869
1178
  var VIDEO_EXTS = ['mp4', 'webm', 'mov', 'avi', 'mkv'];
870
1179
  var isHtml = assetExt === 'html' || assetExt === 'htm';
871
1180
  var isVideo = VIDEO_EXTS.indexOf(assetExt) !== -1;
@@ -2375,10 +2684,10 @@
2375
2684
  deployBtn.style.cssText = _btnBase + 'background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.1);color:rgba(205,214,244,0.3);cursor:not-allowed;';
2376
2685
 
2377
2686
  var copyLocalBtn = document.createElement('button');
2378
- copyLocalBtn.textContent = '⬇创建 -> 新伙伴';
2379
- copyLocalBtn.style.cssText = _btnMuted;
2380
- copyLocalBtn.onmouseenter = function () { copyLocalBtn.style.background = 'rgba(167,139,250,0.22)'; };
2381
- copyLocalBtn.onmouseleave = function () { copyLocalBtn.style.background = 'rgba(167,139,250,0.12)'; };
2687
+ copyLocalBtn.textContent = ' 立刻使用';
2688
+ copyLocalBtn.style.cssText = _btnBase + 'background:rgba(239,68,68,0.2);border:1.5px solid rgba(239,68,68,0.7);color:#fca5a5;font-size:14px;font-weight:700;padding:7px 18px;letter-spacing:1px;';
2689
+ copyLocalBtn.onmouseenter = function () { copyLocalBtn.style.background = 'rgba(239,68,68,0.35)'; };
2690
+ copyLocalBtn.onmouseleave = function () { copyLocalBtn.style.background = 'rgba(239,68,68,0.2)'; };
2382
2691
 
2383
2692
  var promptBtn = document.createElement('button');
2384
2693
  promptBtn.textContent = '复制提示词';
@@ -2443,7 +2752,7 @@
2443
2752
  var sessionParam = 'agent:' + res.agent + ':' + res.session;
2444
2753
  setTimeout(function () {
2445
2754
  window.location.href = '/chat?session=' + encodeURIComponent(sessionParam);
2446
- }, 10000);
2755
+ }, 5000);
2447
2756
  }
2448
2757
  } else if (res.code === 'not_ready') {
2449
2758
  setFooterStatus('⟳ 模板文件下载中,完成后即可使用', '#f59e0b');
@@ -2477,7 +2786,7 @@
2477
2786
  var sessionParam = 'agent:' + res.agent + ':' + res.session;
2478
2787
  setTimeout(function () {
2479
2788
  window.location.href = '/chat?session=' + encodeURIComponent(sessionParam);
2480
- }, 10000);
2789
+ }, 5000);
2481
2790
  }
2482
2791
  } else if (res.code === 'not_ready') {
2483
2792
  setFooterStatus('⟳ 模板文件下载中,完成后即可使用', '#f59e0b');
package/index.js CHANGED
@@ -612,12 +612,12 @@ function doTuiCommand(agentName, customSession) {
612
612
 
613
613
  console.log('[' + colors.blue + 'TUI' + colors.nc + '] 消息已发送,等待对话生成...');
614
614
 
615
- // 等待 5 秒后杀掉进程
615
+ // 等待 15 秒后杀掉进程
616
616
  setTimeout(() => {
617
617
  child.kill();
618
618
  console.log('[' + colors.green + '完成' + colors.nc + '] 对话上下文已唤起');
619
619
  process.exit(0);
620
- }, 5000);
620
+ }, 15000);
621
621
  }
622
622
 
623
623
  // ============================================================================
@@ -2684,14 +2684,17 @@ if (!command) {
2684
2684
  } else if (command === 'init') {
2685
2685
  console.log('[mc init] 开始初始化流程...');
2686
2686
  console.log('');
2687
- console.log('[1/3] mc up — 升级');
2687
+ console.log('[1/4] mc up — 升级');
2688
2688
  runUpdate();
2689
2689
  console.log('');
2690
- console.log('[2/3] mc patch — 注入 UI + 技能');
2690
+ console.log('[2/4] mc patch — 注入 UI + 技能');
2691
2691
  runPatch();
2692
2692
  console.log('');
2693
- console.log('[3/3] mc server — 启动同步服务');
2693
+ console.log('[3/4] mc server — 启动同步服务');
2694
2694
  runServer(args[1]);
2695
+ console.log('');
2696
+ console.log('[4/4] mc main — 启动主流程');
2697
+ runMain();
2695
2698
  } else if (command === 'main') {
2696
2699
  runMain();
2697
2700
  } else if (command === 'test') {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiyiran/myclaw",
3
- "version": "1.1.91",
3
+ "version": "1.1.93",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -40,8 +40,8 @@ def gen_id() -> str:
40
40
 
41
41
  def normalize_category(raw) -> str:
42
42
  cat = str(raw).upper().strip()
43
- if cat not in {'A', 'B', 'C'}:
44
- raise ValueError(f'任务类别只能是 A、B、C,当前: {cat}')
43
+ if cat not in {'A', 'B', 'C', 'D', 'E'}:
44
+ raise ValueError(f'任务类别只能是 A、B、C、D、E,当前: {cat}')
45
45
  return cat
46
46
 
47
47
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "index_updated_at": "2026-05-12T04:56:15Z",
2
+ "index_updated_at": "2026-05-14T07:38:14Z",
3
3
  "templates": {
4
4
  "696de592": {
5
5
  "id": "696de592",
@@ -457,6 +457,188 @@
457
457
  "游戏机制"
458
458
  ],
459
459
  "updated_at": "2026-05-10T09:48:56Z"
460
+ },
461
+ "c0ae6efc": {
462
+ "id": "c0ae6efc",
463
+ "系列": "D",
464
+ "编号": "100",
465
+ "名称": "每日新闻搜索与整理",
466
+ "文件夹名": "d100_每日新闻搜索与整理",
467
+ "version": "v1",
468
+ "路径": "templates/d100_每日新闻搜索与整理/v1",
469
+ "入口文件": "templates/d100_每日新闻搜索与整理/v1/index.html",
470
+ "一句话说明": "先搜索四个方向的新闻,再选出今日主新闻并展开,其余归入今日其他信息,最后写入数据文件展示。",
471
+ "主能力标签": "第二能力:表达构建",
472
+ "任务类型标签": "视听表达",
473
+ "关键词": [
474
+ "d100_每日新闻搜索与整理",
475
+ "先搜索四个方向的新闻,再选出今日主新闻并展开,其余归入今日其他信息,最后写入数据文件展示。",
476
+ "初中生",
477
+ "高中生",
478
+ "教育方向从业者",
479
+ "信息检索与筛选能力:能在多个方向中判断哪些新闻更值得深入,能区分权威来源和普通内容",
480
+ "结构化表达能力:能把新闻整理成固定字段格式,训练信息归纳与压缩能力",
481
+ "内容判断力:能判断一条新闻和用户兴趣的相关度、价值高低和可信度",
482
+ "每日新闻搜索与整理",
483
+ "第二能力:表达构建",
484
+ "视听表达"
485
+ ],
486
+ "updated_at": "2026-05-14T07:18:03Z"
487
+ },
488
+ "b0fe8563": {
489
+ "id": "b0fe8563",
490
+ "系列": "D",
491
+ "编号": "101",
492
+ "名称": "用AI做短视频选题助手",
493
+ "文件夹名": "d101_用AI做短视频选题助手",
494
+ "version": "v1",
495
+ "路径": "templates/d101_用AI做短视频选题助手/v1",
496
+ "入口文件": "templates/d101_用AI做短视频选题助手/v1/index.html",
497
+ "一句话说明": "先让AI分析账号历史数据找出规律,再生成新选题并筛选,最后做成一个可以反复用的选题助手网页。",
498
+ "主能力标签": "第三能力:问题判断",
499
+ "任务类型标签": "改编优化",
500
+ "关键词": [
501
+ "d101_用AI做短视频选题助手",
502
+ "先让AI分析账号历史数据找出规律,再生成新选题并筛选,最后做成一个可以反复用的选题助手网页。",
503
+ "有一定AI使用基础",
504
+ "对内容创作感兴趣",
505
+ "宣传部/有真实账号运营场景的学生",
506
+ "数据驱动:不靠感觉做决策,从历史数据里找规律",
507
+ "上下文喂给AI:让AI基于具体信息工作,而不是凭空瞎编",
508
+ "筛选判断力:AI生成20个,学生要判断哪个最值得做",
509
+ "工具化思维:把一次AI对话沉淀成可以反复使用的小工具",
510
+ "用AI做短视频选题助手",
511
+ "第三能力:问题判断",
512
+ "改编优化"
513
+ ],
514
+ "updated_at": "2026-05-14T07:27:36Z"
515
+ },
516
+ "be4f1f52": {
517
+ "id": "be4f1f52",
518
+ "系列": "D",
519
+ "编号": "102",
520
+ "名称": "财务账单分析",
521
+ "文件夹名": "d102_财务账单分析",
522
+ "version": "v1",
523
+ "路径": "templates/d102_财务账单分析/v1",
524
+ "入口文件": "templates/d102_财务账单分析/v1/index.html",
525
+ "一句话说明": "",
526
+ "主能力标签": "",
527
+ "任务类型标签": "",
528
+ "关键词": [
529
+ "d102_财务账单分析",
530
+ "财务账单分析"
531
+ ],
532
+ "updated_at": "2026-05-14T07:37:00Z"
533
+ },
534
+ "631201a8": {
535
+ "id": "631201a8",
536
+ "系列": "D",
537
+ "编号": "103",
538
+ "名称": "做一份自己看得懂的消费报告",
539
+ "文件夹名": "d103_做一份自己看得懂的消费报告",
540
+ "version": "v1",
541
+ "路径": "templates/d103_做一份自己看得懂的消费报告/v1",
542
+ "入口文件": "templates/d103_做一份自己看得懂的消费报告/v1/index.html",
543
+ "一句话说明": "下载一份真实账单,让AI帮你分类汇总,生成一份本月消费报告,最后做成一个下个月还能继续用的网页工具。",
544
+ "主能力标签": "第三能力:问题判断",
545
+ "任务类型标签": "改编优化",
546
+ "关键词": [
547
+ "d103_做一份自己看得懂的消费报告",
548
+ "下载一份真实账单,让AI帮你分类汇总,生成一份本月消费报告,最后做成一个下个月还能继续用的网页工具。",
549
+ "成人学员(25-45岁)",
550
+ "有真实账单可以使用",
551
+ "想用AI解决实际生活问题的用户",
552
+ "用真实数据驱动AI工作,而不是让AI凭空生成",
553
+ "追问和修正能力:第一版不够好时能拉回来",
554
+ "判断力:能识别AI的错误(算错/分类不合理)",
555
+ "工具化思维:把一次分析沉淀成下个月可复用的提示词模板",
556
+ "做一份自己看得懂的消费报告",
557
+ "第三能力:问题判断",
558
+ "改编优化"
559
+ ],
560
+ "updated_at": "2026-05-14T07:38:13Z"
561
+ },
562
+ "f1cd375f": {
563
+ "id": "f1cd375f",
564
+ "系列": "E",
565
+ "编号": "100",
566
+ "名称": "让一段故事长出十条路",
567
+ "文件夹名": "e100_让一段故事长出十条路",
568
+ "version": "v1",
569
+ "路径": "templates/e100_让一段故事长出十条路/v1",
570
+ "入口文件": "templates/e100_让一段故事长出十条路/v1/index.html",
571
+ "一句话说明": "先观察同一段故事,再让 AI 改出 10 个方向,最后选出最值得继续做的版本。",
572
+ "主能力标签": "第一能力:构思能力",
573
+ "任务类型标签": "改编优化",
574
+ "关键词": [
575
+ "e100_让一段故事长出十条路",
576
+ "先观察同一段故事,再让 AI 改出 10 个方向,最后选出最值得继续做的版本。",
577
+ "已经会写一点内容,但容易只盯着一个版本反复修改的学生",
578
+ "需要建立多方向探索意识的学生",
579
+ "适合刚开始学习用 AI 做内容分化的学生",
580
+ "理解先探索多个方向,再决定优化对象的工作方法",
581
+ "学会把同一段内容改编成不同风格和用途",
582
+ "训练比较、筛选和判断哪个版本更有发展价值",
583
+ "让一段故事长出十条路",
584
+ "第一能力:构思能力",
585
+ "改编优化"
586
+ ],
587
+ "updated_at": "2026-05-14T03:45:06Z"
588
+ },
589
+ "56c22a60": {
590
+ "id": "56c22a60",
591
+ "系列": "E",
592
+ "编号": "101",
593
+ "名称": "先拆层,再生成",
594
+ "文件夹名": "e101_先拆层,再生成",
595
+ "version": "v1",
596
+ "路径": "templates/e101_先拆层,再生成/v1",
597
+ "入口文件": "templates/e101_先拆层,再生成/v1/index.html",
598
+ "一句话说明": "先拆开复杂任务,再一步一步生成选题、开头和初版脚本。",
599
+ "主能力标签": "第三能力:问题判断",
600
+ "任务类型标签": "改编优化",
601
+ "关键词": [
602
+ "e101_先拆层,再生成",
603
+ "先拆开复杂任务,再一步一步生成选题、开头和初版脚本。",
604
+ "容易把很多要求一次性塞给 AI 的学生",
605
+ "已经会提问,但不会拆步骤的学生",
606
+ "适合建立流程意识和任务分层意识的学生",
607
+ "理解复杂任务不能一口气完成,要先拆步骤",
608
+ "训练学生识别问题出在选题、开头还是脚本层",
609
+ "建立每一步只解决一个小问题的 AI 使用习惯",
610
+ "先拆层,再生成",
611
+ "第三能力:问题判断",
612
+ "改编优化"
613
+ ],
614
+ "updated_at": "2026-05-14T03:49:28Z"
615
+ },
616
+ "e486350f": {
617
+ "id": "e486350f",
618
+ "系列": "E",
619
+ "编号": "102",
620
+ "名称": "先找启动点",
621
+ "文件夹名": "e102_先找启动点",
622
+ "version": "v1",
623
+ "路径": "templates/e102_先找启动点/v1",
624
+ "入口文件": "templates/e102_先找启动点/v1/index.html",
625
+ "一句话说明": "先把大而全的问题拆小,再改成 10 分钟内能启动的小提示词。",
626
+ "主能力标签": "第三能力:问题判断",
627
+ "任务类型标签": "改编优化",
628
+ "关键词": [
629
+ "e102_先找启动点",
630
+ "先把大而全的问题拆小,再改成 10 分钟内能启动的小提示词。",
631
+ "总想一次性解决完整问题的学生",
632
+ "容易把复杂任务写成大而全提示词的学生",
633
+ "需要建立切口意识和启动意识的学生",
634
+ "训练学生识别大问题中混杂的多个层次和子任务",
635
+ "学会找到最小、最清楚、最容易启动的切口",
636
+ "建立先启动、再扩展,而不是先追求最优解的做事习惯",
637
+ "先找启动点",
638
+ "第三能力:问题判断",
639
+ "改编优化"
640
+ ],
641
+ "updated_at": "2026-05-14T04:22:27Z"
460
642
  }
461
643
  }
462
644
  }