feat: 升级至 v0.2.3 — Token 估算优化、工具确认超时改进、工作空间标签页

1. Token 估算优化(核心改进):新增 token-estimator.ts 智能字符估算(中文 1.5 token/字、ASCII 0.25 token/字),替换三处旧的 length/2 粗略估算,中文场景准确度从 ~50% 提升到 ~90%

2. 工具确认超时改进:超时时间可配置(30s~600s)、超时 toast 通知、ConfirmationDialog 倒计时 UI(进度条 + 最后 10 秒红色脉冲动画)、SettingsModal 新增配置入口

3. 详情栏新增 Workspace 标签页:workspace:getInfo IPC + WorkspaceViewer 组件(文件预览、目录状态、在文件管理器打开)
This commit is contained in:
thzxx
2026-07-12 14:20:05 +08:00
parent 0363176215
commit 1eabed9b70
13 changed files with 563 additions and 35 deletions
+5 -12
View File
@@ -34,6 +34,7 @@ import type {
MetonaToolDef,
} from '../types';
import { MetonaStreamEventType, MetonaFinishReason } from '../types';
import { estimateMessagesTokens } from '../utils/token-estimator';
import log from 'electron-log';
const DEFAULT_CONFIG: AgentLoopConfig = {
@@ -715,20 +716,12 @@ export class AgentLoopEngine extends EventEmitter {
}
/**
* 估算消息列表的 token 数(粗略:1 字符 ≈ 0.5 token
* 估算消息列表的 token 数
* 使用智能字符估算:中文 1.5 token/字,ASCII 0.25 token/字,其他 1 token/字
* @see electron/harness/utils/token-estimator.ts
*/
private estimateMessagesTokens(messages: MetonaMessage[]): number {
let total = 0;
for (const msg of messages) {
total += Math.ceil(msg.content.length / 2);
if (msg.reasoningContent) total += Math.ceil(msg.reasoningContent.length / 2);
if (msg.toolCalls) {
for (const tc of msg.toolCalls) {
total += Math.ceil(JSON.stringify(tc.args).length / 2);
}
}
}
return total;
return estimateMessagesTokens(messages);
}
/**