v0.16.10: 最小必要性清理 — 删除非必要校验和注入提示
按"让 AI 自己判断"原则,删除所有"工程师判断"性质的校验代码和注入提示, 只保留安全防护(路径沙箱/命令安全/参数消毒)和必要的上下文管理(压缩/截断)。 删除项: - completion-gate.ts 整个文件(notThinking/toolResultReview/contextEfficiency/planModeCompletion) - verifyToolResult 工具结果核验函数 + TOOLS_NEED_VERIFY 常量 - 跨轮次死循环检测器(recordLoopSignature/detectLoopDeadlock/resetLoopDeadlockDetector) - R77 checkRateLimit 速率限制 + R87 isToolCircuitBroken 熔断器 + R104 isDuplicateToolResult 去重 - R56 目标对齐验证 + R63 速率限制 + R87 熔断器 + R104 去重检测 + R119 优先级排序 - agent-metrics recordCompletionGate + completionGatePassed + avgCompletionScore 相关代码 - context-manager 低价值关键词黑名单 + 快速摘要改用 user role - LoopContext 的 completionGateFailCount/verifyWarnings 字段 修复项: - R76 路径沙箱 replace bug:用 startsWith 前缀锚定替代 replace,避免子串误判 - R28 命令注入检测:缩小匹配范围,仅拦截命令替换中包含危险命令的情况 总计 13 文件变更,+46/-1124 行
This commit is contained in:
@@ -295,19 +295,12 @@ export function scoreMessageImportance(msg: OllamaMessage): number {
|
||||
/完成|done|✓|success|成功|结果|result/i,
|
||||
/项目|project|工作空间|workspace|git|repo|仓库/i,
|
||||
];
|
||||
// R10: 修复低价值模式误报 — 移除单字“好”(匹配几乎所有中文文本)
|
||||
// 仅匹配明确的短语回复,且仅对短消息(<100字)生效
|
||||
const lowValuePatterns = [/^(好的|明白|ok|知道了|嗯|哦|好[的呀吧]|收到)$/i,
|
||||
/^(继续|请继续|帮帮我|可以吗|行吗|好的谢谢)$/i,
|
||||
/^(谢谢|感谢|不客气|多谢|thanks?)$/i,
|
||||
];
|
||||
// 低价值关键词黑名单已删除 — 误伤边界情况(如"好的,我发现了一个 bug")
|
||||
// AI 应自行判断消息价值,长度加分机制已足够区分短回复
|
||||
|
||||
for (const p of highValuePatterns) {
|
||||
if (p.test(content)) { score += 1; break; }
|
||||
}
|
||||
for (const p of lowValuePatterns) {
|
||||
if (p.test(content) && content.length < 100) { score -= 2; break; }
|
||||
}
|
||||
|
||||
// 工具调用 → 高价值
|
||||
if (msg.tool_calls?.length) score += 2;
|
||||
@@ -850,8 +843,9 @@ function summarizeOlderMessages(messages: OllamaMessage[], batchSize: number): O
|
||||
for (let i = 0; i < messages.length; i += batchSize) {
|
||||
const batch = messages.slice(i, i + batchSize);
|
||||
const summary = createQuickSummary(batch);
|
||||
// 使用 user role 而非 system role — 摘要是对话历史的延续,用 system 会与系统指令语义混淆
|
||||
summaries.push({
|
||||
role: 'system',
|
||||
role: 'user',
|
||||
content: `【更早的对话摘要(第 ${Math.floor(i / batchSize) + 1} 部分)】\n${summary}`,
|
||||
compressed: true
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user