v0.16.8: Agent Loop P0-P3 修复 + 死代码清理 + 版本号升级
- P0: executeToolWithTimeout 重写为 Promise.race,实现真正超时中断 - P1 #2: R8 紧急压缩限制最多 2 次,防止溢出→压缩→重试无限循环 - P1 #3: 新增 snapshotSafetyState/restoreSafetyState,Sub-Agent 在隔离环境中运行 - P1 #4: persistLoopContext 中止时持久化 TERMINATED 状态 - P1 #5: Completion Gate 失败时注入纠正提示并重试(最多 1 次) - P2 #6: executeSingleTool 重试逻辑兜底返回完善 - P2 #7: 压缩阈值提高(0.3→0.5, 0.8→0.85)+ compressedThisCycle 防同轮重复压缩 - P2 #8: 路径依赖检查优先于 ALWAYS_PARALLEL,防止读写同路径被错误并行 - P2 #9: R105 消息年龄追踪改为内容哈希 key(后被确认为死代码并清理) - P3 #11: ctx_tokens 统一语义为 prompt_eval_count - P3 #12: 自动记忆提取捕获 signal 引用,避免竞态 - P3 #13: verifyToolResult 返回警告字符串供 Completion Gate 使用 - 注入消毒增强:零宽字符移除、全角→半角、新增覆盖模式 - 死代码清理:R105 上下文年龄追踪系列函数(无任何调用点) - 版本号 0.16.7 → 0.16.8(package.json/lock, menu.ts, index.html, README.md)
This commit is contained in:
@@ -217,16 +217,20 @@ export function getTokenCalibration(): { ratio: number; samples: number } {
|
||||
return { ratio: _tokenCalibrationRatio, samples: _calibrationSamples };
|
||||
}
|
||||
|
||||
/** 自动压缩阈值:当消息 token 占 context window 比例超过此值时触发自动压缩 */
|
||||
export const AUTO_COMPRESS_THRESHOLD = 0.3;
|
||||
/** 自动压缩阈值:当消息 token 占 context window 比例超过此值时触发自动压缩
|
||||
* P2 #7 修复:从 0.3 提高到 0.5,避免过于频繁的压缩导致信息丢失
|
||||
*/
|
||||
export const AUTO_COMPRESS_THRESHOLD = 0.5;
|
||||
|
||||
/** R14: 自适应压缩阈值 — 根据模型上下文长度动态调整 */
|
||||
/** R14: 自适应压缩阈值 — 根据模型上下文长度动态调整
|
||||
* P2 #7 修复:提高各档位阈值,减少不必要的压缩
|
||||
*/
|
||||
export function getAdaptiveCompressThreshold(numCtx: number): number {
|
||||
// 小上下文模型(<8K):更早触发压缩(40%),留更多余量
|
||||
// 中等上下文(8K-32K):标准阈值(30%)
|
||||
// 大上下文(>32K):稍晚触发(25%),避免过于频繁压缩
|
||||
if (numCtx < 8192) return 0.4;
|
||||
if (numCtx > 32768) return 0.25;
|
||||
// 小上下文模型(<8K):更早触发压缩(55%),留余量
|
||||
// 中等上下文(8K-32K):标准阈值(50%)
|
||||
// 大上下文(>32K):稍晚触发(45%),避免过于频繁压缩
|
||||
if (numCtx < 8192) return 0.55;
|
||||
if (numCtx > 32768) return 0.45;
|
||||
return AUTO_COMPRESS_THRESHOLD;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user