dsh-llm-verifier 0.6.0 → 0.6.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/README.md +2 -0
- package/lib/{auto-DAMeKRkK.js → auto-caXDU2pw.js} +19 -1
- package/lib/{auto-DAMeKRkK.js.map → auto-caXDU2pw.js.map} +1 -1
- package/lib/client.js +374 -249
- package/lib/client.js.map +1 -1
- package/lib/index.js +201 -52
- package/lib/index.js.map +1 -1
- package/lib/replay.js +1 -1
- package/lib/types/client-i18n.d.ts +36 -11
- package/lib/types/client-i18n.d.ts.map +1 -1
- package/lib/types/client-i18n.js +50 -9
- package/lib/types/client-i18n.js.map +1 -1
- package/lib/types/client.d.ts +17 -7
- package/lib/types/client.d.ts.map +1 -1
- package/lib/types/client.js +97 -27
- package/lib/types/client.js.map +1 -1
- package/lib/types/decisions.d.ts +8 -0
- package/lib/types/decisions.d.ts.map +1 -1
- package/lib/types/decisions.js +13 -1
- package/lib/types/decisions.js.map +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +47 -31
- package/lib/types/index.js.map +1 -1
- package/lib/types/process-selection.d.ts +27 -5
- package/lib/types/process-selection.d.ts.map +1 -1
- package/lib/types/process-selection.js +17 -8
- package/lib/types/process-selection.js.map +1 -1
- package/lib/types/router.d.ts +22 -0
- package/lib/types/router.d.ts.map +1 -1
- package/lib/types/router.js +20 -0
- package/lib/types/router.js.map +1 -1
- package/lib/types/statistics.d.ts +8 -0
- package/lib/types/statistics.d.ts.map +1 -1
- package/lib/types/statistics.js +1 -1
- package/lib/types/statistics.js.map +1 -1
- package/lib/types/verifier-activity.d.ts +189 -0
- package/lib/types/verifier-activity.d.ts.map +1 -0
- package/lib/types/verifier-activity.js +223 -0
- package/lib/types/verifier-activity.js.map +1 -0
- package/package.json +1 -1
- package/src/client-i18n.ts +55 -16
- package/src/client.test.ts +35 -16
- package/src/client.tsx +127 -48
- package/src/decisions.test.ts +16 -0
- package/src/decisions.ts +22 -1
- package/src/index.test.ts +32 -0
- package/src/index.ts +48 -33
- package/src/process-selection.test.ts +13 -0
- package/src/process-selection.ts +39 -14
- package/src/router.test.ts +46 -0
- package/src/router.ts +31 -0
- package/src/statistics.test.ts +16 -0
- package/src/statistics.ts +9 -1
- package/src/verifier-activity.test.ts +164 -0
- package/src/verifier-activity.ts +321 -0
- package/lib/types/process-activity.d.ts +0 -109
- package/lib/types/process-activity.d.ts.map +0 -1
- package/lib/types/process-activity.js +0 -135
- package/lib/types/process-activity.js.map +0 -1
- package/src/process-activity.test.ts +0 -91
- package/src/process-activity.ts +0 -177
package/README.md
CHANGED
|
@@ -540,6 +540,8 @@ Workflow 候选在被记录后的**下一步主模型请求之前**就会评审
|
|
|
540
540
|
|
|
541
541
|
**聊天提示(这段时间里界面为什么静止)**:周期在跑的时候主回复被整条缓冲,聊天界面**不会有任何流式文字**,看板上也还没落行。宿主那种行内提示(「正在压缩上下文…」)走的是**会话事件 + 客户端节点**,这条路对外部插件是关闭的:持久化读路径(`@deepseek-ai/dsh-session-persistence` 的 `validateStoredEvents`)会拒绝解释含 `KNOWN_SESSION_EVENT_TYPES`(仓库内生成)之外事件类型的日志,除非该记录带 `ignorable: true`,而 `Session.append()` 无法写入这个标记——只有 seed/restore 的持久化信封能带。**所以本插件一条会话事件都不写**,改用内存态回答:选择器按会话登记「本次周期在哪个阶段(生成 / 比较)、几份候选」,插件既有的 RPC 增加一个只读的 `{ kind: 'process', sessionId }`(纯内存查询:不读侧车、不调模型、不改任何判定),聊天输入框上方的 dock 只在**回合运行中、或刚结束的 20 秒内**轮询它,依次显示「正在过程选优:生成 N 份候选…」→「裁判比较 N 份候选…」→「已改用更优的回复 / 保留原回复 / 备选与原回复相同 / 未完成」。它**不进模型历史、不写会话日志、不参与任何判定**;重载后什么都不显示(那个周期确实已经不存在)。长期记录仍然只有统计看板。
|
|
542
542
|
|
|
543
|
+
同一块指示器也覆盖**自动路由与最终验收**:它们跑在 `agent/turn-stopping` 里,回复已经在屏幕上,但回合会一直开着等裁判(`compare` / `select` / `track` 各 6 次调用起,`select` 随候选数与对数上升;最终验收是判据数 × 轮次 × 裁判数)。发布点是**路由器的预约状态机**——那是唯一知道「一个周期被批准了、什么时候结算」的地方(`RouterCycleObserver`,可选且异常安全:一个坏掉的观察者绝不能改变预约、预算或判决),P06 自己的周期则由选择器发布更细的相位。于是这些窗口会显示「正在识别需要独立复核的对象…」→「正在比较候选方案 / 为多个候选排名 / 复核任务进度(约 N 次调用)…」,最终验收结束时给一次「最终验收通过 / 未通过」——**通过时宿主本来一句话都不说,这一行是唯一能看见它的地方**。计划预审与 Team 任务闸**不进**这块指示器:前者本来就有宿主的挂起工具行,后者窗口极短,加进去只是噪音。
|
|
544
|
+
|
|
543
545
|
### 定位诊断(Findings)与 smart 调度(P04)
|
|
544
546
|
|
|
545
547
|
判官在**同一次调用**里可以额外给出**至多 3 条**定位诊断(不额外购买「解释模型」):
|
|
@@ -1475,12 +1475,26 @@ function boundDecision(decision, policy) {
|
|
|
1475
1475
|
return decision;
|
|
1476
1476
|
}
|
|
1477
1477
|
var AutoVerifierRouter = class {
|
|
1478
|
+
observer;
|
|
1478
1479
|
states = /* @__PURE__ */ new Map();
|
|
1479
1480
|
/** Agent ids that already received this task's budget-exhaustion notice. */
|
|
1480
1481
|
exhaustedNotices = /* @__PURE__ */ new Set();
|
|
1481
1482
|
serial = 0;
|
|
1482
1483
|
/** Namespace for this router's cycle ids; unique per router and per process incarnation. */
|
|
1483
1484
|
instance = ROUTER_EPOCH + "-" + ++routerInstanceSerial;
|
|
1485
|
+
/**
|
|
1486
|
+
* @param observer - optional reporting channel for the chat indicator.
|
|
1487
|
+
*/
|
|
1488
|
+
constructor(observer) {
|
|
1489
|
+
this.observer = observer;
|
|
1490
|
+
}
|
|
1491
|
+
/** Report one lifecycle edge, swallowing anything the observer throws. */
|
|
1492
|
+
observe(report) {
|
|
1493
|
+
if (this.observer === void 0) return;
|
|
1494
|
+
try {
|
|
1495
|
+
report(this.observer);
|
|
1496
|
+
} catch {}
|
|
1497
|
+
}
|
|
1484
1498
|
state(agent) {
|
|
1485
1499
|
const taskStartSeq = latestDirectUserSeq(sessionEvents(agent.session));
|
|
1486
1500
|
if (taskStartSeq === void 0) return void 0;
|
|
@@ -1551,6 +1565,7 @@ var AutoVerifierRouter = class {
|
|
|
1551
1565
|
}
|
|
1552
1566
|
state.taskModelCalls += expectedCalls;
|
|
1553
1567
|
state.sessionModelCalls += expectedCalls;
|
|
1568
|
+
this.observe((observer) => observer.begin?.(agent, reservation));
|
|
1554
1569
|
return reservation;
|
|
1555
1570
|
}
|
|
1556
1571
|
/**
|
|
@@ -1592,6 +1607,7 @@ var AutoVerifierRouter = class {
|
|
|
1592
1607
|
reservation.expectedCalls += expectedCalls;
|
|
1593
1608
|
state.taskModelCalls += expectedCalls;
|
|
1594
1609
|
state.sessionModelCalls += expectedCalls;
|
|
1610
|
+
this.observe((observer) => observer.promoted?.(agent, reservation));
|
|
1595
1611
|
return true;
|
|
1596
1612
|
}
|
|
1597
1613
|
commit(agent, reservation, evidenceSeq) {
|
|
@@ -1605,6 +1621,7 @@ var AutoVerifierRouter = class {
|
|
|
1605
1621
|
state.finalRequiredFromSeq = void 0;
|
|
1606
1622
|
state.finalPreferred = false;
|
|
1607
1623
|
}
|
|
1624
|
+
this.observe((observer) => observer.settled?.(agent, reservation, "committed"));
|
|
1608
1625
|
return true;
|
|
1609
1626
|
}
|
|
1610
1627
|
fail(agent, reservation, strict) {
|
|
@@ -1614,6 +1631,7 @@ var AutoVerifierRouter = class {
|
|
|
1614
1631
|
state.failed.add(reservation.fingerprint);
|
|
1615
1632
|
if (strict) state.strictBlocked = true;
|
|
1616
1633
|
if (reservation.phase === "final") state.finalPreferred = false;
|
|
1634
|
+
this.observe((observer) => observer.settled?.(agent, reservation, "failed"));
|
|
1617
1635
|
}
|
|
1618
1636
|
/**
|
|
1619
1637
|
* Claim this task's single budget-exhaustion notice.
|
|
@@ -2119,4 +2137,4 @@ function selectRouteFeedbackDetail(candidates, result, maxChars = MAX_ROUTE_FEED
|
|
|
2119
2137
|
//#endregion
|
|
2120
2138
|
export { verificationFailed as A, latestDirectUserSeq as C, semanticDecision as D, routedRepeats as E, ScoreCache as F, SingleFlight as I, resolveCacheFile as L, extractSession as M, sanitizeVerifierText as N, semanticReferencesVisible as O, sessionEvents as P, stableHash as R, itemBudget as S, parseSemanticRoute as T, buildSemanticRoutePrompt as _, compareRouteFeedbackDetail as a, inspectDeliveryPhase as b, selectRouteFeedbackDetail as c, AutoVerifierRouter as d, MAX_ROUTED_CHECKPOINTS as f, buildEvidenceIndex as g, boundDecision as h, automaticFeedback as i, verificationVerdict as j, semanticRouteHint as k, sessionAccepted as l, analyzeStructuredRoute as m, PROPOSAL_FEEDBACK_NOTE as n, failedAcceptanceCriteria as o, RECOVERY_FAILURE_CONTEXT_CHARS as p, analyzeAutoTask as r, isSubagentSession as s, MAX_ROUTE_FEEDBACK_CHARS as t, topScoreIndices as u, buildSemanticRouteView as v, nextDiagnosticCycleId as w, inspectRecoverySignal as x, estimateRoutedCalls as y };
|
|
2121
2139
|
|
|
2122
|
-
//# sourceMappingURL=auto-
|
|
2140
|
+
//# sourceMappingURL=auto-caXDU2pw.js.map
|