@noobdemon/noob-cli 1.7.0 → 1.7.1
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/package.json +1 -1
- package/src/repl.js +35 -17
package/package.json
CHANGED
package/src/repl.js
CHANGED
|
@@ -383,24 +383,39 @@ Tự đánh giá: còn THIẾU gì để đạt mục tiêu? Chọn 1 nhiệm v
|
|
|
383
383
|
state.mode = "chat"; // tự hành chỉ chạy ở chế độ agent
|
|
384
384
|
state.ultra = true;
|
|
385
385
|
console.log(c.accent(" 🚀 " + t.ultraOn));
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
// "tiếp tục" có cổng kiểm chứng; chỉ dừng khi token nằm ở CUỐI câu trả lời.
|
|
391
|
-
while (state.ultra && i < MAX_QUESTS) {
|
|
392
|
-
if (!answer) break; // lượt bị ngắt/ lỗi → dừng tự hành, đừng quay vô ích
|
|
393
|
-
i++;
|
|
394
|
-
console.log(c.accent(" ↻ " + t.ultraQuest(i)));
|
|
395
|
-
answer = await handle(ultraContinue(goal));
|
|
386
|
+
// Mốc history TRƯỚC khi ULTRA bơm prompt — kết thúc thì cắt về để các lượt sau không bị "dính" mục tiêu cũ.
|
|
387
|
+
const baseLen = state.history.length;
|
|
388
|
+
try {
|
|
389
|
+
let answer = await handle(ultraStart(goal));
|
|
396
390
|
persist();
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
391
|
+
let i = 0;
|
|
392
|
+
// Lượt đầu = lập kế hoạch → KHÔNG xét hoàn thành. Mỗi vòng sau là một lượt
|
|
393
|
+
// "tiếp tục" có cổng kiểm chứng; chỉ dừng khi token nằm ở CUỐI câu trả lời.
|
|
394
|
+
while (state.ultra && i < MAX_QUESTS) {
|
|
395
|
+
if (!answer) break; // lượt bị ngắt/ lỗi → dừng tự hành, đừng quay vô ích
|
|
396
|
+
i++;
|
|
397
|
+
console.log(c.accent(" ↻ " + t.ultraQuest(i)));
|
|
398
|
+
answer = await handle(ultraContinue(goal));
|
|
399
|
+
persist();
|
|
400
|
+
if (answer && ultraIsDone(answer)) {
|
|
401
|
+
console.log(c.ok(" ✓ " + t.ultraDone));
|
|
402
|
+
break;
|
|
403
|
+
}
|
|
400
404
|
}
|
|
405
|
+
if (state.ultra && i >= MAX_QUESTS) console.log(c.tool(" " + t.ultraMax));
|
|
406
|
+
} finally {
|
|
407
|
+
// Dọn dấu vết ULTRA khỏi history (prompt khởi động, các lượt "tiếp tục",
|
|
408
|
+
// token <<ULTRA_DONE>>…) để các yêu cầu SAU đó không bị model coi như vẫn
|
|
409
|
+
// đang tự hành / vẫn theo đuổi mục tiêu cũ.
|
|
410
|
+
state.ultra = false;
|
|
411
|
+
if (state.history.length > baseLen) state.history.length = baseLen;
|
|
412
|
+
state.history.push({
|
|
413
|
+
role: "user",
|
|
414
|
+
content: "[Phiên ULTRA đã KẾT THÚC — mục tiêu cũ: " + goal + ". Bỏ qua mọi chỉ dẫn ULTRA trước đó, KHÔNG tự hành tiếp, KHÔNG phát token " + ULTRA_DONE + ". Chờ yêu cầu mới.]",
|
|
415
|
+
});
|
|
416
|
+
state.history.push({ role: "assistant", content: "OK, đã thoát chế độ ULTRA." });
|
|
417
|
+
persist();
|
|
401
418
|
}
|
|
402
|
-
if (state.ultra && i >= MAX_QUESTS) console.log(c.tool(" " + t.ultraMax));
|
|
403
|
-
state.ultra = false;
|
|
404
419
|
}
|
|
405
420
|
|
|
406
421
|
// /init — quét dự án & sinh noob.md tổng quan (giống `/init` của Claude Code).
|
|
@@ -588,7 +603,9 @@ NGUYÊN TẮC:
|
|
|
588
603
|
let timer = null;
|
|
589
604
|
const tick = (label) => {
|
|
590
605
|
const elapsed = ((Date.now() - t0) / 1000).toFixed(0);
|
|
591
|
-
|
|
606
|
+
// Chèn token usage realtime (↑input ↓output) ngay cạnh spinner để người
|
|
607
|
+
// dùng thấy được số token đang cộng dồn trong khi model stream.
|
|
608
|
+
tui.status(c.dim(`${label}… ${elapsed}s · ${tokenMeter.format()}`));
|
|
592
609
|
};
|
|
593
610
|
const stopSpin = () => {
|
|
594
611
|
if (timer) {
|
|
@@ -613,7 +630,8 @@ NGUYÊN TẮC:
|
|
|
613
630
|
message: text,
|
|
614
631
|
signal: abort.signal,
|
|
615
632
|
onStatus: (s) => {
|
|
616
|
-
|
|
633
|
+
// Kèm token meter để nhánh merge/search cũng thấy ↑input ↓output realtime.
|
|
634
|
+
if (!printer.started) tui.status(c.dim(` ${s} · ${tokenMeter.format()}`));
|
|
617
635
|
},
|
|
618
636
|
onDelta: (d) => {
|
|
619
637
|
stopSpin();
|