Releases: peterfei/ifai
IfAI v0.4.4 - CLI 全面升级:工业级终端 AI 助手
IfAI v0.4.4 发布说明
CLI 全面升级 — 工业级终端 AI 助手
元数据驱动架构 + ratatui 全屏 TUI + 元编程引擎
2026-04-26
概述
v0.4.4 是 IfAI CLI 的里程碑版本,从零开始构建了工业级终端 AI 助手体验。基于元编程架构和配置驱动设计,实现了 Provider 自动注册、权限引擎、Token 追踪、TOML 配置、Pipeline 可视化、循环检测等核心能力,并通过 ratatui + crossterm 实现了全屏 TUI 模式。
40 个提交 | 6 个阶段 | 49 个 TUI 测试
架构设计
本版本遵循 OpenSpec optimize-ifai-cli 提案,核心理念:
- 配置驱动一切:不写一个 if/match 来区分 provider,YAML 即配置,零 Rust 代码改动
- 元编程优先:
#[derive(StatusRender)]派生宏、声明式布局 spec、事件路由表 - DRY 极限化:复用 GUI 端 provider_metadata、prompt_manager、定价数据
- 零手写渲染逻辑:数据结构即规格,单一渲染管线
Phase 1: 元数据驱动核心
Provider Dispatch Table
build.rs编译时扫描providers/registry/*.yaml自动生成注册表代码- 消除所有
match provider.as_str()硬编码分支 - 新增 provider 只需放一个 YAML 文件,零 Rust 代码改动
System Prompt 模板引擎
- 单一模板 +
{provider_display}/{provider_original}占位符 - 删除 4 个 provider 各自手写的 90% 相同 system prompt
- 支持
--system-prompt文件覆盖
声明式命令注册
CommandSpec静态数组驱动 REPL 命令发现、帮助生成、权限检查- spec 与 handler 合一,12 个命令单点变更
/help//clear//compact//cost//provider//model//permissions//resume//export//undo//config//exit
事件语义统一
ToolStart= 参数(本地执行),ToolResult= 结果(回传)- 消除
ToolDone.result被当 JSON 参数解析的歧义
元编程权限引擎
- 从 GUI 端
toolApprovalConfig.ts自动生成 Rust 权限引擎 - O(1) 工具分类(Safe / Dangerous / Destructive)
- 配置驱动续播限制(Safe=5, Destructive=3)
Phase 2: 交互体验
元编程 Token 系统
- 零重复定价定义:复用 GUI 端
provider_metadata.rs定价数据 - 实时 Token 追踪:SSE usage 数据流追踪,累计 input/output tokens
- 上下文预警:四级阈值(<50% Low / <75% Medium / <90% High / >=90% Critical)
- 进度条:
[████░░░░]ANSI 彩色可视化 - 成本统计:
/cost命令显示 TokenMetrics 与费用分解
流式状态栏
- 紧凑式设计,
\r覆盖同行显示 - 状态机驱动(Idle -> Streaming -> ExecutingTool -> Idle)
- 中英文智能 Token 估算(中文 2 字符/token,英文 4 字符/token)
会话压缩
/compact命令手动触发压缩- 保留 system prompt + 最近 20 条消息
- 75% / 90% 自动预警建议
流式渲染增强
- 代码块流式渲染:实时语法高亮,代码折叠
- ASCII 回退模式:无 256 色终端自动降级
- 一键复制提示:交互式使用体验
- IfAI Brand Cursor Spinner:
▊字符动画
Phase 3: 配置系统
TOML 配置文件
~/.ifai/config.toml标准配置- 四层优先级链:CLI 参数 > 环境变量 > 配置文件 > YAML 默认值
ConfigSource追踪每个值的来源/config init生成带注释的模板/config show可视化优先级链
输入模式
- REPL 交互模式(rustyline 命令历史 + Ctrl+R 反向搜索)
- stdin 管道输入(非 TTY 自动检测)
--json标志输出 JSON 格式--no-tool标志禁用工具调用--resume <name>恢复会话
会话持久化
/save <name>保存至~/.ifai/sessions//resume list列出所有会话/resume <name>恢复指定会话/export <file>导出为 Markdown
Phase 5: Pipeline 元编程可视化
派生宏 #[derive(StatusRender)]
ifai-render-macroproc-macro crate- 属性驱动:
#[status(symbol = "✓", zh = "成功", en = "Success", theme = "success")] - 编译期生成渲染逻辑,零手写代码
- 13 个宏测试全部通过
Pipeline 跟踪器
PipelineStepStatus枚举:InProgress / Success / Failed / Skipped / WarningPipelineTracker管理工具执行全生命周期- 智能输出截断(10 行预览)
Phase 6: 循环检测引擎
配置驱动的通用引擎
LoopDetector— JSON 配置驱动,零硬编码- 规则 1:完全相同调用检测(
max_identical_calls: 3) - 规则 2:连续相同工具检测(
max_consecutive_same_tool: 10) - 规则 3:50% 警告阈值
- 声明式 API:
LoopDetectionStatus(Normal / Warning / Blocked)
智能 Glob 搜索
- 防止上下文爆炸的智能文件搜索
- 支持
src/**/*等 glob 模式匹配 - 路径匹配优化与调试信息
ratatui 全屏 TUI 模式
架构(元编程 v3)
- 基于 ratatui + crossterm 的完整 TUI 框架
- 事件路由表
KEY_BINDINGS替代巨型 match - 声明式布局
LAYOUT_SPEC消除魔法索引 RenderBackendtrait 统一 TTY / non-TTY
功能
- 固定底部输入框和状态栏
- 工具审批 Overlay(Y/N 确认)
- 非交互模式自动降级
测试
- 49 个 TUI 模块单元测试
- 覆盖状态转换、Token 估算、渲染输出等核心逻辑
Homebrew 发布
- Homebrew Cask 发布指南文档
- 自动化发布脚本
- 版本管理与 CI 集成
技术亮点
| 维度 | 实现方式 |
|---|---|
| 架构 | 元数据驱动 + 配置驱动,零硬编码 |
| 渲染 | #[derive(StatusRender)] 派生宏,零手写 |
| 布局 | LAYOUT_SPEC 声明式 + KEY_BINDINGS 路由表 |
| 权限 | GUI 配置自动生成 Rust 引擎 |
| 定价 | 100% 复用 GUI 端 provider_metadata |
| 检测 | JSON 配置驱动的通用循环检测引擎 |
| TUI | ratatui + crossterm 元编程架构 v3 |
| 测试 | 49 个单元测试,TDD 红绿开发 |
修复项
- 修复配置文件
api_key/base_url查找失败 - 修复 glob 模式匹配优先级
- 修复智能 Glob 搜索的路径匹配问题
- 修复 CLI 测试编译错误和测试失败
- 修复 Pipeline 工具参数为空问题
- 移除流式阶段的重复状态显示
- 适配 StreamEvent 类型变更
- 修复加载动画显示和调试日志控制
安装与更新
macOS
brew upgrade --cask ifaiWindows
运行应用,在设置面板点击"检查更新"。
CLI(独立使用)
# 从源码构建
git clone https://github.com/peterfei/ifai.git
cd ifai
cargo build --release --bin ifai
# 或使用 Homebrew
brew install ifai提交统计
- v0.4.3 ... HEAD: 40 个提交
- 主要贡献领域: CLI 架构、TUI 模式、元编程引擎、权限系统、配置系统、测试
IfAI v0.4.3
IfAI v0.4.3 - 元数据驱动架构与多模态支持
发布日期: 2026-04-23
概述
v0.4.3 是一个架构重构与功能增强版本,主要亮点包括:
核心架构升级
- 元数据驱动的提供商架构:从硬编码实现转向 YAML 配置驱动,代码量减少 70%
- SSE 流解析关键 Bug 修复:修复影响所有 OpenAI 兼容提供商的
finish_reason: null误判问题
多模态支持
- 完整的多模态输入支持:图片、PDF、代码文件、混合模态
- 统一内容抽象:
MultimodalContent格式跨提供商统一 - 智能文件处理:自动类型识别、压缩优化、可视化预览
提供商生态
- 5 家主流提供商:OpenAI、DeepSeek、Zhipu AI、Kimi、Gemini
- 80+ 个模型:覆盖从轻量到旗舰的全系列模型
- 协议统一:OpenAI Standard + Gemini Custom 双协议支持
国际化
- 新增俄语支持:2,749 键 100% 翻译覆盖
- 3 种语言:中文、英文、俄语
- 智能语言检测:localStorage → navigator 自动回退
- 硬编码提取:15 个组件完成 i18n 改造,采用率从 60.7% 提升至 66.2%
- CI 质量门禁:GitHub Actions CI、husky pre-commit hook 自动校验语言包一致性
🌟 核心新特性
1. 元数据驱动的提供商架构 🏗️
设计理念:从硬编码的提供商实现转向 YAML 配置驱动的自动化代码生成。
核心组件
| 组件 | 说明 |
|---|---|
| ProviderSpec | YAML 配置格式,定义提供商的 API、请求/响应格式、模型列表 |
| FormatAdapter Trait | 统一的格式适配器接口,支持 OpenAI、Gemini 等多种协议 |
| generate_provider_client! 宏 | 自动生成客户端代码,消除重复代码约 76% |
| MetadataDrivenClient | 通用客户端,支持所有符合规范的提供商 |
架构优势
# 示例:Kimi provider 配置
metadata:
id: kimi-official
name: Kimi 官方
provider_type: ai
api_spec:
base_url: https://api.moonshot.cn/v1
endpoint: /chat/completions
auth:
type: bearer_header
header_name: Authorization
format: "Bearer {key}"
models:
- id: kimi-k2.6
name: Kimi K2.6
context_tokens: 256000
capabilities: [tools, streaming, vision, thinking, json_output]一行配置即可支持新的 provider,无需编写任何 Rust 代码!
2. 完整的多模态支持 🖼️
技术实现
多模态支持采用统一内容抽象设计,所有输入内容(文本、图片、文档、代码)都被抽象为统一的 MultimodalContent 格式:
interface MultimodalContent {
type: 'text' | 'image' | 'pdf' | 'code';
content: string;
metadata?: {
filename?: string;
language?: string;
mimeType?: string;
size?: number;
};
}前端实时检测与转换
// 自动检测消息中的多模态内容
const multimodal = detectMultimodalContent([
"请分析这个截图",
{ type: "image", content: "data:image/png;base64,..." },
{ type: "text", content: "同时参考 src/utils/helper.ts" }
]);
// 自动文件类型识别
const fileHandler = new MultimodalFileHandler();
fileHandler.registerDetector(
(file) => file.type.startsWith('image/'),
async (file) => ({
type: 'image',
content: await fileToBase64(file),
metadata: { mimeType: file.type, size: file.size }
})
);后端协议适配
不同提供商采用不同的多模态传输格式:
| 提供商 | 协议 | 图片传输格式 |
|---|---|---|
| OpenAI | OpenAI Standard | content: [{type: "image_url", image_url: {url: "base64..."}}] |
| Gemini | Gemini Custom | inline_data: {mime_type: "image/png", data: "base64..."} |
| Kimi | OpenAI Compatible | content: [{type: "image_url", ...}] |
| Zhipu | OpenAI Compatible | content: [{type: "image_url", ...}] |
FormatAdapter trait 自动处理格式转换,用户无需关心底层差异。
支持的内容类型
| 类型 | 支持的提供商 | 技术细节 | 应用场景 |
|---|---|---|---|
| 图片 | OpenAI GPT-4o/o1/o3 Gemini 2.5/3.1 Kimi K2 系列 Zhipu GLM-4.5V |
Base64 编码 自动压缩优化 格式自动识别 |
截图分析、图表理解、UI 审查 |
| PDF/文档 | OpenAI GPT-4o Gemini 2.5 Pro |
文本提取 表格解析 OCR 集成 |
文档解析、表格提取、合同审查 |
| 代码文件 | OpenAI GPT-4o DeepSeek V3 Gemini 2.5 |
语法高亮保留 语言自动检测 AST 解析 |
代码审查、重构建议、文档生成 |
| 混合模态 | 所有提供商 | 多内容块组合 顺序保持 类型标注 |
文本 + 图片 + 代码混合输入 |
UI 增强
- 📸 智能粘贴:自动识别粘贴内容类型(文本、图片、文件路径)
- 📄 拖拽支持:拖拽文件到输入框自动解析类型
- 🎨 可视化预览:多模态内容块可视化展示,支持删除和重新排序
- 🔍 实时提示:输入时实时显示检测到的内容类型统计
- 📏 大小限制:自动提示文件大小限制,超大文件自动压缩或拒绝
性能优化
| 优化项 | 实现方式 | 效果 |
|---|---|---|
| 图片压缩 | 自动压缩 >5MB 图片至 2MB 以下 | 上传速度 +60% |
| Base64 缓存 | 相同图片只编码一次 | 内存使用 -40% |
| 懒加载 | 大文件按需读取 | 启动速度 +25% |
| 并行处理 | 多文件并发解析 | 处理速度 +80% |
3. Kimi AI Provider 适配 🌙
支持的模型
| 模型 | 上下文 | 特性 |
|---|---|---|
| kimi-k2.6 | 256K | 最新 K2 系列,thinking 模式 |
| kimi-k2.5 | 256K | 稳定版本 |
| moonshot-v1-128k | 128K | 经典 V1 系列 |
K2 Thinking 模式支持
Kimi K2 系列的独特功能:双重内容流
{
"choices": [{
"delta": {
"reasoning_content": "用户要求解释量子计算...", // 思考过程
"content": "量子计算是利用量子力学原理..." // 实际响应
},
"finish_reason": null
}]
}✅ 自动识别:优先提取 reasoning_content,提取失败后回退到 content
✅ 双重收益:既可查看模型思考过程,又获得清晰响应
4. 支持的 AI 提供商 🤖
v0.4.3 版本支持 5 家主流 AI 提供商,涵盖 80+ 个模型:
| 提供商 | 模型数量 | 协议 | 核心模型 | 特色功能 |
|---|---|---|---|---|
| OpenAI | 20 | OpenAI Standard | GPT-5.4, GPT-4o, O1, O3 | 最强推理能力、视觉理解、工具调用 |
| DeepSeek | 1 | OpenAI Compatible | DeepSeek Chat (V3.2) | 高性价比、函数调用、JSON 输出 |
| Zhipu AI | 10 | OpenAI Compatible | GLM-5.1, GLM-4.7 | 中文优化、视觉模型、Flash 高速版 |
| Kimi | 13 | OpenAI Compatible | K2.6, K2.5 | Thinking 模式、长文本、多模态 |
| Gemini | 19 | Gemini Custom | Gemini 2.5/3.1 | 超长上下文(2.8M)、多模态、免费 API |
模型能力对比
| 能力 | OpenAI | DeepSeek | Zhipu | Kimi | Gemini |
|---|---|---|---|---|---|
| 文本生成 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 视觉理解 | ✅ | ❌ | ✅ (4.5V) | ✅ (K2) | ✅ |
| 工具调用 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 流式输出 | ✅ | ✅ | ✅ | ✅ | ✅ |
| JSON 模式 | ✅ | ✅ | ❌ | ✅ (K2) | ❌ |
| Thinking 模式 | ✅ (O1/O3) | ❌ | ❌ | ✅ (K2) | ✅ (2.0) |
| 超长上下文 | 200K | 128K | 128K | 256K | 2.8M |
协议兼容性
所有提供商通过 FormatAdapter trait 实现统一接口,支持:
- OpenAI Standard: OpenAI, DeepSeek, Zhipu, Kimi
- Gemini Custom: Gemini 系列
// 统一的 API 调用接口
let client = MetadataDrivenClient::new(api_key, adapter);
let stream = client.stream(request).await?;5. 国际化支持 🌍
支持的语言
v0.4.3 版本新增 俄语 支持,现已支持 3 种语言:
| 语言 | 代码 | 覆盖率 | 翻译文件 |
|---|---|---|---|
| 中文 | zh-CN | 100% | src/i18n/locales/zh-CN.json |
| 英文 | en-US | 100% | src/i18n/locales/en-US.json |
| 俄语 | ru-RU | 100% | src/i18n/locales/ru-RU.json |
语言检测与切换
// 自动语言检测(优先级:localStorage > navigator)
i18n.use(LanguageDetector)
.use(initReactI18next)
.init({
detection: {
order: ['localStorage', 'navigator'],
caches: ['localStorage']
}
});
// 手动切换语言
i18n.changeLanguage('ru-RU');翻译覆盖范围
俄语翻译覆盖所有 UI 模块:
- ✅ 标题栏:菜单、工作区操作
- ✅ 错误处理:错误边界、错误提示
- ✅ 审批工具栏:接受/拒绝/预览
- ✅ 聊天界面:消息、输入框、设置
- ✅ 设置面板:提供商配置、模型选择
- ✅ 快捷键:所有键盘快捷键说明
- ✅ 通知系统:成功、错误、警告消息
技术实现
- 使用 i18next 框架
- 支持 插值:
{{name}}动态替换 - 支持 复数:
count自动处理单复数 - 语言回退:
ru→ru-RU,zh→zh-CN - 项目级配置:支持项目默认语言设置
扩展计划
- 🇯🇵 日语 (ja-JP) - v0.4.4 计划
- 🇰🇷 韩语 (ko-KR) - v0.4.5 计划
- 🇩🇪 德语 (de-DE) - v0.4.6 计划
- 🇫🇷 法语 (fr-FR) - v0.4.7 计划
6. CI 集成与质量门禁 🔒
GitHub Actions CI
新增 .github/workflows/ci.yml,在每次 push 和 PR 时自动运行:
jobs:
check: # ESLint + TypeScript 类型检查 + i18n 一致性校验
test: # 单元测试(依赖 check 通过)Pre-commit Hook
使用 husky + lint-staged 配置本地 Git hooks:
- 语言包变更:修改
src/i18n/locales/*.json时自动运行check-i18n-parity.mjs --quiet - 提交拦截:i18n 一致性检查失败时阻止提交
npm scripts
npm run i18n:check # 语言包键一致性校验(退出码 0=通过)
npm run i18n:scan # 硬编码中文字符串扫描
npm run i18n:report # 综合覆盖率报告
npm run i18n:report:md # Markdown 格式报告i18n 验证工具链
| 脚本 | 用途 | 退出码 |
|---|---|---|
check-i18n-parity.mjs |
语言包键一致性校验 | 0=一致, 1=差异 |
scan-hardcoded-strings.mjs |
硬编码字符串扫描 | 0=无问题, 1=发现硬编码 |
i18n-coverage-report.mjs |
综合覆盖率报告 | 始终 0 |
7. UI 精简 🧹
- 移除 Settings 技能中心:从 SettingsModal 中移除 Skills tab(SkillsSettings),技能功能将在后续版本以新架构重构
- 修复 useTranslation 导入路径:6 个文件从错误的
@/i18n/config修正为react-i18next
🐛 关键 Bug 修复:SSE finish_reason 检测
问题
所有 OpenAI 兼容提供商的 SSE 流解析错误:finish_reason: null 被识别为 finish 事件,导致所有内容事件被跳过,用户收到空响应。
根因
// ❌ 错误代码
let is_finish_event = json.get("finish_reason").is_some();
// finish_reason: null 也会返回 true!修复
// ✅ 正确代码
let is_finish_event = json.get("finish_reason")
.and_then(|v| v.as_str()) // null 不会通过
.is_some();影响范围
✅ 修复了所有 OpenAI 兼容提供商:
- Kimi
- DeepSeek
- Zhipu (智谱)
- OpenAI
- 以及所有使用
OpenAIFormatAdapter的提供商
📦 架构改进
代码简化
| 组件 | 修复前 | 修复后 | 减少 |
|---|---|---|---|
| 单个 Provider | ~500 行 | ~150 行 | 70% |
| 5 个 Provider | ~2500 行 | ~750 行 | 70% |
| 重复代码 | 大量 | 几乎为 0 | ~95% |
扩展性提升
添加新 Provider 的流程:
| 步骤 | 修复前 | 修复后 |
|---|---|---|
| 1. 定义模型列表 | 硬编码 Rust | ✅ YAML 配置 |
| 2. 实现 API 客户端 | 手写 500+ 行 | ✅ 自动生成 |
| 3. 实现 FormatAdapter | 手写 200+ 行 | ✅ 复用现有 |
| 4. 集成到系统 | 修改多处 | ✅ 一行配置 |
| 总耗时 | 数天 | 数分钟 |
🧪 测试覆盖
E2E 测试:Kimi Provider
| 测试用例 | 状态 |
|---|---|
| KIMI-E2E-01: 基础 SSE 流解析 | ✅ 112 chunks, 203 字符 |
| KIMI-E2E-02: Reasoning Content 支持 | ✅ 850 chunks, 1567 字符 |
| KIMI-E2E-03: 代码生成和工具调用 | ✅ Pass |
| KIMI-E2E-04: 多轮对话 | ✅ Pass |
| KIMI-E2E-05: 长文本处理 | ✅ Pass |
测试配置
# 复制配置文件
cp tests/e2e/kimi-e2e.example tests/e2e/kimi-e2e.local
# 编辑配置
E2E_AI_API_KEY=sk-xxx
E2E_AI_BASE_URL=https://api.moonshot.cn/v1
E2E_AI_MODEL=kimi-k2.5
# 运行测试
npm run test:e2e -- tests/e2e/providers/kimi-provider-e2e.spec.ts🔄 迁移指南
版本升级:v13 → v14
自动迁移:
- ✅ 旧版本 Kimi 模型名称自动修正(
moonshot-v1-k2.6→kimi-k2.6) - ✅ 设置自动更新(persist 版本号自动升级)
手动操作:
- 无需手动操作,升级后自动生效
多模态功能使用
- 粘贴图片:直接粘贴截图或复制图片文件
- 拖拽文件:拖拽 PDF、代码文件到输入框
- 混合输入:文本 + 图片 + 代码文件混合输入
- 自动识别:系统自动识别内容类型并正确处理
🚀 性能优化
| 优化项 | 效果 |
|---|---|
| 元数据驱动的代码生成 | 编译时间 -15%,二进制大小 -8% |
| SSE 批量处理 | CPU 使用率 -20% |
| 重复代码消除 | 代码可维护性 +50% |
| 多模态内容缓存 | 重复内容处理 +80% |
-...
IfAI v0.4.2
IfAI v0.4.2 - 技能系统重构与流式性能优化
发布日期: 2026-04-21
概述
v0.4.2 涵盖技能系统 Phase 7 UI 全面重构(全屏布局、搜索筛选、批量操作)、流式输出性能优化(批量事件处理、高频日志清理)、工具调用竞态修复、E2E 性能测试框架 v2.0、对话归档引擎,以及大规模测试修复(Vitest 132/0 failed, E2E 409+/0 failed)。
亮点:技能系统 Phase 7 UI 重构
核心改进
| 功能 | 说明 |
|---|---|
| 全屏布局 | 从侧边栏移至主编辑区,左侧技能列表(288px)+ 右侧详情面板(flex-1) |
| 搜索与筛选 | 技能市场:搜索框 + 分类标签(精选/开发/测试/文档/PIVO);技能面板:状态过滤(全部/已激活/已安装/未激活) |
| 网格/列表视图 | 支持两种布局模式切换 |
| 批量操作 | 复选框多选 + 批量激活/取消 |
| 技能编辑器 | 创建/编辑/查看/预览四种模式,含表单验证 |
| 统计信息 | 技能(3/12) 格式显示已激活/总计 |
| 技能安装/卸载 | 安装进度反馈、卸载确认 |
测试覆盖
| 测试套件 | 通过 |
|---|---|
| 技能市场搜索筛选 | 7/7 |
| 技能面板搜索筛选 | 6/6 |
| 技能真实 AI 验证 | 7/7 |
| 单元测试 | 5/5 |
新功能(5 项)
1. 流式输出性能优化
- BatchEventStream 批量处理:事件队列 + 批量解析,减少 SSE 解析开销
- 高频日志清理:Rust 后端 DeepSeek Frame 日志从每 10 帧降至仅前 3 帧;Tool call delta / TextDelta 日志完全移除
- WorkflowInlineMonitor 日志清理:移除所有高频日志
- 效果:日志 I/O 从 ~15% 降至 <1%,长文本生成流畅度明显改善
2. E2E 性能测试框架 v2.0
- 元编程驱动的测试框架(ScenarioBuilder DSL)
- 支持声明式场景定义:
withHistory(10000, 'realistic'),withStreaming('continuous', 'fast', 50) - 性能指标自动采集:渲染时间、滚动 FPS、内存变化
- 长历史 + 真实 AI 流式响应测试(200 条消息基线)
3. 多格式对话归档引擎
- 支持对话压缩为归档(compactConversation)
- 归档浏览、详情查看、恢复功能
- E2E 测试覆盖完整归档生命周期(空归档、无效 ID 错误处理)
4. Agent Prompt 统一加载器
- SmartScanner 极简元编程框架
- AgentType 提示词文件统一管理
- 探索工作流使用完整 Explore Agent 提示词
5. Schema-Driven 前端工具识别
- Monaco diff 视图优化
- 工具类型自动识别与渲染优化
Bug 修复(10 项)
流式与渲染(4 项)
| # | 问题 | 修复 |
|---|---|---|
| 1 | 多个"生成中..."脉冲动画:流式输出时多个 text segment 都显示脉冲指示器 | 仅最后一个 text segment 传递 isStreaming=true |
| 2 | 工具调用竞态条件:后端 tool_call 已发送但前端 finish 状态 toolCallsCount=0,审批组件不显示 | finish 事件处理前强制同步 buffer |
| 3 | MonacoDiffView TypeScript 错误:overviewRulerWidth 和 hideMarginInOverviewRuler 无效 |
移除两个无效属性,通过 CSS 覆盖 |
| 4 | MonacoEditor 刷屏日志:渲染路径中每次 re-render 触发 console.log |
移除 2 处调试日志 |
技能系统(2 项)
| # | 问题 | 修复 |
|---|---|---|
| 5 | 技能安装后列表为空:安装完成后技能列表不更新 | 修复安装流程和列表刷新逻辑 |
| 6 | 技能面板统计显示错误:初始化时统计数据不准确 | 修复统计计算和状态同步 |
持久化与状态(2 项)
| # | 问题 | 修复 |
|---|---|---|
| 7 | VirtualMessageList 缓存导致 UI 不更新:缓存阻止了合法的 UI 更新 | 修复缓存失效条件 |
| 8 | 骨架屏在新对话时一直显示:shouldShowSkeleton 条件判断错误 | 修复骨架屏显示逻辑 |
其他修复(2 项)
| # | 问题 | 修复 |
|---|---|---|
| 9 | 社区版 AIProtocol 不兼容:社区版与商业版类型不匹配 | 修复类型兼容性 |
| 10 | "No user message to process" 错误:发送消息后 AI 无法处理 | 三层防御修复(ContextSelector / sendMessage / generateResponse) |
性能优化(4 项)
| 优化项 | 方案 | 效果 |
|---|---|---|
| BatchEventStream | 事件队列 + 批量解析,替代逐条 callback | 减少 SSE 解析开销 |
| 高频日志移除 | Rust 后端日志频率从每 10 帧降至仅前 3 帧;前端 WorkflowInlineMonitor 日志全移除 | 日志 I/O 从 ~15% 降至 <1% |
| VirtualMessageList | 缓存策略优化,减少万条消息场景下的卡顿 | 解决万条消息滚动卡顿 |
| 流式输出 UI 卡顿 | 减少不必要的 setState 调用 + requestAnimationFrame 节流 | 长文本生成流畅度改善 |
测试
Vitest
- 修复前: 130 passed, 2 failed, 15 skipped
- 修复后: 132 passed, 0 failed, 15 skipped
- 重写
SkillsIntegration.test.tsx(zustand selector mock、30+ store 方法补全)
E2E
- 修复前: 415 passed, 9 failed, 228 skipped
- 修复后: 409+ passed, 0 failed, 243 skipped
- 新增
setup-utils.tsconversationStore 等待
下版本规划(v0.4.3)
技能系统 Phase 8:远程技能市场
- 远程技能注册中心(Registry API)
- 技能安装、更新、卸载全生命周期管理
- 技能分享与发布
- 技能评价与反馈
- 统一技能格式
SKILL.md(Markdown + YAML frontmatter),兼容 Claude Code 标准 - 元编程架构:ifainew-macros crate(SkillFormat derive 宏、Tauri 命令生成宏),预计代码量 -76%
- 分库策略:开源社区版(本地技能)+ 商业版(远程市场)
流式输出架构重构
- 参考 claw-code 的
next_event风格,替代 callback 模式 - 完全零日志,批量处理优化
- 预计 1230 行 → 300 行(-76%)
工具调用稳定性
- 工具调用 E2E 渲染问题深入调查(DOM 为空但 Store 状态正确)
- 智谱 GLM 工具调用风暴修复(串行工具处理 + eventBus 节流 + 渐进式渲染)
代码统计
| 指标 | 数值 |
|---|---|
| Vitest | 132 passed, 0 failed |
| E2E | 409+ passed, 0 failed |
| Bug 修复 | 10 项 |
| 新功能 | 5 项 |
| 性能优化 | 4 项 |
| Git 提交 | 50+ commits |
IfAI v0.4.1
IfAI v0.4.1 - 多智能体协作系统与消息稳定性
发布日期: 2026-04-14
概述
v0.4.1 是一个重要里程碑版本,核心亮点是多智能体协作系统(P0-P4)全面完成,同时解决了消息持久化、线程切换消息隔离、工作流执行可靠性等核心问题,并引入了消息队列系统和多项工作流增强功能。
亮点:多智能体协作系统(P0-P4 核心完成)
基于 OpenSpec P4 提案,完成了从数据模型到前端集成的完整多智能体协作系统(~7,130 行代码,79 个测试用例)。
执行进度
| 阶段 | 名称 | 状态 | 代码行数 | 测试数 |
|---|---|---|---|---|
| P0 | 数据模型 | 完成 | ~1,200 行 | 20 |
| P1 | 工作流引擎 | 完成 | ~2,700 行 | 29 |
| P2 | 通信系统 | 完成 | ~1,720 行 | 21 |
| P3 | 前端集成 | 完成 | ~1,310 行 | 5 |
| P4 | 标签页隔离 | 完成 | ~200 行 | 4 |
核心成果
- 工作流引擎:完整的 Rust 后端 DAG 工作流引擎,支持拓扑排序调度、并行执行、条件分支
- 智能体通信协议:支持点对点、广播、发布/订阅三种通信模式,数据消息/控制消息/状态消息三类消息类型
- 协作可视化:DAG 图展示智能体协作流程,支持 SVG 模式渲染、专业节点样式(Search/Read/Write/Agent)、流动动画
- 工作流内嵌监控器 (WorkflowInlineMonitor):内嵌在聊天消息流中,实时显示工作流节点执行过程
- 标签页隔离:每个标签页只显示属于自己的工作流监控器,通过 Session ID 标识实现完全隔离
- 消息队列系统:双队列 + 优先级调度,支持普通消息和工作流消息的优先级调度
Bug 修复(12 项)
消息持久化(5 项)
| # | 问题 | 修复 |
|---|---|---|
| 1 | Tab 切换消息隔离失效:所有 tab 在切换后消息没有隔离,不同线程的消息互相串扰 | 重写 switchThread 逻辑,添加 isSameThread 检查,不同线程切换时正确清空/加载消息 |
| 2 | IndexedDB 版本冲突:VersionError: An attempt was made to open a database using a lower version than the existing version |
移除硬编码 DB_VERSION,改为 indexedDB.open(name) 自动使用现有版本,添加 upgradeAndReopen() 方法 |
| 3 | threadPersistence 静默失败:loadThreadMessages 在 threadPersistence 未初始化时返回空数组,不抛出任何错误 |
在 switchThread 中添加 threadPersistence.init() 确保初始化,同时修复 restoreFromStorage 在 IndexedDB 为空但 threadStore 有数据时的同步逻辑 |
| 4 | Zustand persist 覆盖内存消息:persist rehydrate 时空 localStorage 数据覆盖了内存中已有的消息 | 添加自定义 merge 函数,当 localStorage messages 为空但内存 messages 非空时保留内存消息 |
| 5 | Store 实例不一致:Vite 开发模式下 CoreStoreProxy 和 useChatStore.ts 产生不同的 Zustand store 实例,导致 switchThread 更新的状态无法触发 React 组件重渲染 |
在 switchThread 中同步更新 CoreStoreProxy 实例的状态 |
工作流可靠性(4 项)
| # | 问题 | 修复 |
|---|---|---|
| 6 | 工作流处理期间消息阻塞:一条消息进入工作流处理后,后续消息无法被处理 | 实现消息队列机制,支持优先级调度 |
| 7 | 聊天内容乱序:工作流执行过程中的消息顺序错乱 | 优化消息排序和事件时序 |
| 8 | 工具执行结果不显示:工作流中工具执行完成后的结果摘要不显示 | 修复工具结果摘要渲染逻辑 |
| 9 | /explore 历史消息丢失:执行 explore 命令后,对话历史消息被清空 |
修复 switchThread 中的消息保留逻辑 |
其他修复(3 项)
| # | 问题 | 修复 |
|---|---|---|
| 10 | 流式空事件:流式处理过程中发送大量空事件,浪费性能 | 移除空事件,只保留执行完成后的完整事件 |
| 11 | WorkflowInlineMonitor 错误:require is not defined 和 getChatEventBus is not a function |
改用 async/await import(),修正导出名称 |
| 12 | 工具 explore 流式输出异常:explore 工具在总结阶段流式输出错误 | 修复流式输出逻辑 |
新功能(8 项)
1. 消息队列系统
- 实现消息排队机制,支持普通消息(
normal)和工作流消息(high)的优先级调度 - 高优先级消息优先处理,低优先级消息自动排队等待
- 支持消息入队、出队、中止等完整生命周期管理
2. 消息队列 UI (QueueIndicator)
- 实时显示队列状态:处理中 / 等待中
- 显示排队消息数量(如 "2 条等待")
- 显示消息内容预览标签(截断显示前 120 字符)
- 高优先级消息显示紫色主题和闪电图标
3. 消息队列预览
- 队列中等待的消息显示内容预览标签
- 区分普通消息和工作流消息
4. 工作流 DAG SVG 模式
- DAG 可视化默认使用 SVG 渲染模式
- 移除 emoji 节点标识,改用字母标识(S/R/W/A)
- 更清晰的节点状态展示
5. 工作流内嵌监控器 (WorkflowInlineMonitor)
- 专业级节点可视化(Search/Read/Write/Agent)
- 监控器内嵌在聊天消息流中
- 完成后 3 秒自动移除
6. 工作流总结优化
- 工作流执行期间不显示空白气泡
- 完成后一次性显示完整总结
- 避免中间状态的 UI 闪烁
7. 重复探索命令检测
- 检测重复的
/explore命令 - 自动合并重复探索的结果
8. Doc Agent 流式输出
- 后端实现 Doc agent 流式输出支持
- 改善文档生成类任务的响应体验
性能优化(1 项)
虚拟列表优化
- 对聊天虚拟列表(VirtualMessageList)进行渲染性能优化
- 减少不必要的重渲染和 DOM 操作
测试
E2E 测试
- 新增
tab-message-isolation.spec.ts:6 个场景覆盖 Tab 消息隔离(全部通过) - 新增
message-queue-indicator.spec.ts:5 个场景覆盖消息队列 UI(4 通过,1 跳过) - 更新
chat-history-reload-persist.spec.ts:4 个场景适配新的消息隔离行为(全部通过) - Chat E2E 测试通过率:44/44(100%)
测试场景覆盖
- 基础消息隔离:两个线程各有不同消息
- 切换到空线程时消息清空
- DOM 验证:消息内容与 store 一致
- DOM 验证:切换后旧消息消失
- 快速连续切换无串扰
- 往返切换稳定性(5 次循环)
技术债务
CoreStoreProxy与useChatStore的模块实例分裂问题通过switchThread中的同步机制临时解决,长期应考虑统一模块导入路径- 真实 AI 响应测试(
message-queue-indicator.spec.ts场景 2)因依赖真实 API 不稳定已标记为 skip
代码统计
| 指标 | 数值 |
|---|---|
| 变更文件数 | 166 |
| 新增代码行 | ~48,000 |
| 删除代码行 | ~260 |
| Bug 修复 | 12 项 |
| 新功能 | 8 项 |
| 性能优化 | 1 项 |
v0.4.0
IfAI V0.4.0: 提示词生态系统、多智能体架构与对话管理
🏆 版本概述
V0.4.0 是 IfAI Editor 史上最重大的架构升级版本,标志着 IfAI 已成为成熟的 AI Native Harness。本版本构建了完整的多智能体协作系统、分层提示词管理体系和对话管理系统。社区版用户现在可以享受此前仅商业版可用的智能体功能,实现真正的 AI 原生开发体验。
🌟 核心特性
1. 提示词管理系统 (Prompt Manager) ✅ 100% 完成
分层透明策略
基于业界最佳实践,实现三层提示词管理架构:
- 🟢 公开层(80%):用户自定义提示词、官方智能体模板、工具描述
- 用户权限:查看、编辑、导出、版本控制
- 🟡 半透明层(15%):系统主提示词、安全和权限规则、对话管理提示词
- 用户权限:查看完整内容、复制、专家模式可覆盖
- 🔴 隐藏层(5%):ifainew-core 内部提示词、专有算法、反滥用规则
- 用户权限:完全不可见
版本控制与 Git 集成
- Git 版本历史追踪(基于 git2-rs)
- 版本对比和回滚
- 修改状态检测
- 分支友好的提示词管理
Monaco Editor 集成
- Handlebars + Markdown 混合语法高亮
- 智能变量自动补全(从 metadata 动态生成)
- 13+ Helper 函数补全(eq, if, each, gt, lt, and, or 等)
- 实时验证(防抖 500ms)
导入导出功能
- ZIP 包创建和解析
- 多选提示词打包
- 覆盖逻辑检查
- 包信息验证和展示
安全增强
- 提示词注入检测(18 种危险模式)
- 花括号平衡检查
- YAML Front Matter 验证
- 未定义变量和未闭合块检测
技术亮点:
- 新增代码:~3384 行(后端 5 文件 + 前端 7 文件)
- E2E 测试通过率:93.6% (44/47)
- Rust 单元测试:10/10 通过
2. 工具系统 (Tool Registry) ✅ P0-P3 完成
核心工具集(10+ 工具)
文件操作工具:
read_file- 读取文件内容(只读权限)write_file- 写入文件(自动创建目录,工作区写入权限)edit_file- 替换文件中的文本(工作区写入权限)
搜索工具:
glob_search- 使用 glob 模式搜索文件(只读权限)grep_search- 使用正则表达式搜索文件内容(只读权限)- 支持相对路径和绝对路径
- 自动过滤常见忽略目录(node_modules, target, dist)
- 显示匹配行号
Shell 命令工具:
bash- 执行 Bash 命令(完全访问权限)PowerShell- 执行 PowerShell 命令(完全访问权限)- 跨平台支持(Windows 使用 PowerShell,其他使用 bash)
- 捕获 stdout 和 stderr
- 可配置超时时间
项目管理工具:
TodoWrite- 任务列表管理(支持 pending/in_progress/completed 三态)- 三态面板自动折叠(full/collapsed/hidden)
- 所有任务完成后 800ms 自动折叠
工具权限分级
pub enum PermissionMode {
ReadOnly, // 只读:read_file, glob_search, grep_search
WorkspaceWrite, // 写入:+ write_file, edit_file
DangerFullAccess, // 完全:+ bash, PowerShell
}AI 服务集成
- 自动注入
working_dir参数给 bash/PowerShell 工具 - 自动解析相对路径为绝对路径(文件操作工具)
- 自动解析搜索路径(搜索工具)
- 修复多工作区兼容性
技术亮点:
- 新增执行器:4 个(FileTools, SearchTools, ShellTools, TodoUtil)
- 单元测试:~500 行
- E2E 测试:13/13 通过(P3-前端)
3. 多智能体系统 (Agent System) ✅ P4 核心完成
里程碑:移除 commercial 限制
重要变更:社区版用户现在可以使用完整的智能体系统!
- 移除
agent_system模块的#[cfg(feature = "commercial")]限制 - 移除
agent_commands的 commercial 限制 - 本地实现替代 ifainew_core 依赖
核心智能体(5 种)
Explore Agent - 只读代码探索
- 支持 Glob、Grep、Read 工具
- 多层次搜索策略(文件名 → 内容 → 深度分析)
- 快速定位相关代码
Review Agent - 代码审查
- 支持 Read、Grep 工具
- 审查清单(安全、性能、最佳实践)
- 发现潜在问题和改进点
TaskBreakdown Agent - 任务分解
- 自动将复杂任务拆解为可执行的子任务
- 支持 TodoWrite 工具集成
- E2E 测试:5/5 通过
ProposalGenerator Agent - 提案生成
- 遵循 OpenSpec 协议格式
- 自动生成变更提案
- E2E 测试:6/6 通过
Refactor Agent - 重构建议
- 支持 Read、Edit 工具
- 提供重构方案和自动执行
- E2E 测试:6/6 通过
智能体协作机制
- 智能体间消息协议定义
- 协作管理器实现(CollaborationManager)
- 用户确认 UI(AgentCollaborationApprovalDialog)
- 工作流可视化 DAG(AgentWorkflowDAG)
- E2E 测试:10/10 通过
技术亮点:
- 新增模块:9 个文件(supervisor, runner, persistence, collaboration 等)
- 智能体提示词:5 个核心模板
- 协作机制:500+ 行实现
4. CLI 交互式工具 ✅ 完成
功能特性
-
交互式对话模式(rustyline 支持)
- 命令历史(上下箭头)
- 会话状态持久化(.ifai-history)
- 优雅退出(Ctrl+C)
-
多 Provider 支持
- DeepSeek (默认)
- OpenAI (GPT-4o, GPT-4o-mini)
- Anthropic (Claude 系列)
-
System Prompt 集成
- AI 正确识别为 "IfAI"
- Provider 身份定制化
- messages[0] 格式修复
-
清洁输出体验
- 移除所有调试日志
- 流式文本显示
- 工具调用可视化
技术亮点:
- 新增代码:~600 行
- 文档资源:5 个 CLI 文档
- 二进制大小:~8MB (release)
5. 流式响应架构重构 ✅ 完成
- 支持 OpenAI 兼容格式的工具调用
- 事件顺序优化确保工具执行正确(ToolDone → MessageDone)
- 参数累积机制处理分片数据
- 完成事件优先级控制
- isActivelyStreaming 生命周期管理
6. UI 体验优化 ✅ P6 完成
TodoWrite 面板三态自动折叠
问题:原有两态(展开/隐藏)在任务完成后仍占 384px 宽度
解决方案:引入三态面板模型
full(384px):TodoWrite 工具调用时自动展开,显示完整任务列表collapsed(~40px):所有任务完成后自动折叠,显示图标 + 完成摘要hidden(0px):用户手动关闭,面板不渲染
技术亮点:
- CSS transition 平滑过渡(300ms ease-in-out)
- 折叠延迟 800ms,给用户视觉缓冲
- 自动检测完成状态并触发折叠
7. 对话管理系统 (Conversation Management) ✅ P5 完成
会话笔记自动提取
- 60+ 技术关键词智能识别:
- 前端框架:React, Vue, useState, useEffect 等
- 编程语言:TypeScript, Rust, Go, Python 等
- Tauri 相关:Tauri, Vite, Webpack 等
- 工具和库:37+ 常用工具关键词
- 20+ 触发条件:智能识别技术概念、文件变更、错误和修复
- 自动追踪:
- 技术概念:自动分类和提取
- 文件变更:追踪修改的文件和操作
- 错误和修复:记录错误信息和解决方案
- 待办任务:识别未完成的任务
Token 统计功能
- 精确计数:使用 cl100k_base encoder
- 实时更新:消息变化时自动重新计算
- 分类统计:系统、用户、助手消息分别统计
- 阈值检测:100k tokens 或 100 条消息触发总结
自动对话总结
- 触发阈值:100 条消息或 100k tokens
- 结构化总结:
- 主要请求和意图
- 关键技术概念列表
- 文件和代码变更
- 错误和修复记录
- 问题解决过程
- 待办任务列表
- 建议的下一步
自动对话压缩
- 触发条件:
- 有总结且消息 ≥100 条
- 无总结且消息 ≥150 条
- 压缩算法:系统提示词 + 总结 + 最后 10 条消息
- 压缩效果:Token 减少 88.6%(105条 → 12条消息)
- 安全余量:100k 阈值,128k 模型窗口留出 22% 余量
E2E 测试覆盖
- 6/6 场景通过:
- 场景1: 100条消息自动压缩触发
- 场景2: Token统计和压缩阈值验证
- 场景3: 真实对话流程测试
- 场景4: 压缩命令直接调用测试
- 场景5: 边界条件测试(10条消息不触发)
- 场景6: 验证压缩后Token确实减少(88.6%)
- Mock 管线:无需真实后端即可验证功能
技术亮点:
- 新增代码:~1500 行
- 新增文件:5 个(后端模块 + 前端组件)
- 测试通过率:100% (6/6)
- Token 减少:88.6%
- 折叠延迟 800ms,给用户视觉缓冲
- 自动检测完成状态并触发折叠
🛠️ 技术改进
后端架构升级
- prompt_manager 模块:8 个文件(版本、存储、模板、变量、导出、验证)
- agent_system 模块:9 个文件(supervisor, runner, persistence, collaboration)
- harness/tool 模块:4 个执行器(TodoUtil, FileTools, SearchTools, ShellTools)
- conversation 模块:5 个文件(summarizer, token_counter, notes, mod, tests)
前端架构升级
- 新增 Zustand stores:promptStore, agentStore, todoWriteStore, conversationStore
- 新增组件:PromptManager(7 个组件)、AgentCollaboration(2 个组件)、ToolExplorer、Conversation(3 个组件)
- Monaco Editor 集成:自定义 Handlebars 语言支持
数据结构定义
- Rust:PromptTemplate, PromptMetadata, AgentStatus, AgentContext, ToolDescriptor
- TypeScript:prompt.ts, agent.ts, tool.ts, conversation.ts
- Serde 序列化:所有结构体支持 JSON 序列化
🧪 测试覆盖
E2E 测试
-
Section 2(提示词管理):44/47 通过(93.6%)
- 版本管理:10/10 Rust 测试
- 访问控制:5/5 E2E 测试
- 安全验证:18/18 E2E 测试
- 导入导出:11/14 E2E 测试
-
P3(工具系统 UI):13/13 通过(100%)
- 工具列表、详情、搜索、分类、权限过滤
-
P4(智能体协作):10/10 通过(100%)
- 协作请求、DAG 可视化、用户确认
-
P5(对话管理):6/6 通过(100%)
- 100条消息自动压缩触发
- Token统计和压缩阈值验证
- 真实对话流程测试
- 压缩命令直接调用测试
- 边界条件测试(10条消息不触发)
- 验证压缩后Token确实减少(88.6%)
-
P6(TodoWrite 面板):102 回归测试通过
单元测试
- Rust 后端:10/10 通过(版本管理模块)
- 工具执行器:~500 行测试代码
📦 发布清单
版本信息
- 版本号: v0.4.0
- 发布日期: 2026-04-08
- Tauri: 2.9.5
- Rust: 1.90.0
- Node: 22.14.0
代码统计
| 模块 | 新增代码 | 新增文件 | 测试通过率 |
|---|---|---|---|
| 提示词管理 | ~3384 行 | 15 | 93.6% |
| 工具系统 | ~1300 行 | 8 | 100% |
| 智能体系统 | ~1200 行 | 9 | 100% |
| 对话管理 | ~1500 行 | 5 | 100% |
| CLI 工具 | ~600 行 | 1 + 5 文档 | - |
| UI 优化 | ~150 行 | 3 | 100% |
| 总计 | ~8134 行 | 46 | ~98% |
关键文件修改
M package.json (version: 0.3.12 → 0.4.0)
M src-tauri/tauri.conf.json (version: 0.3.12 → 0.4.0)
M src-tauri/Cargo.toml (version: 0.3.12 → 0.4.0)
# 新增模块
A src-tauri/src/prompt_manager/ (8 files)
A src-tauri/src/agent_system/ (9 files)
A src-tauri/src/harness/tool/executor/ (4 files)
A src-tauri/src/conversation/ (5 files)
A src-tauri/src/bin/ifai.rs (CLI tool)
# 前端组件
A src/components/PromptManager/ (7 components)
A src/components/AgentCollaboration/ (2 components)
A src/components/ToolExplorer/
A src/components/Conversation/ (3 components)
# 测试文件
A tests/e2e/section2/ (5 test files)
A tests/e2e/section3/ (3 test files)
A tests/e2e/section4/ (2 test files)
A tests/e2e/section5/ (2 test files)
🚀 升级指南
从 v0.3.12 升级到 v0.4.0
数据迁移
- 无需额外配置:提示词系统会自动初始化
.ifai/目录 - 对话历史兼容:完全向后兼容,所有对话历史和设置都会保留
- 配置迁移:
- 旧版配置自动迁移到新格式
.ifai/config.toml自动创建(如果不存在)
新功能使用
1. 提示词管理
- 打开侧边栏"提示词"标签页
- 查看系统提示词、智能体提示词、工具描述
- 支持编辑(公开层)、版本对比、导入导出
2. 智能体系统
- 在对话中直接调用智能体功能
- Explore Agent:搜索代码("查找所有处理文件上传的代码")
- Review Agent:审查代码("审查这个文件的安全性")
- TaskBreakdown:分解任务("分解这个任务为步骤")
3. 工具浏览器
- 点击侧边栏扳手图标
- 查看所有可用工具、分类、权限
- 工具详情和用法示例
4. CLI 工具
# 编译 CLI 工具
cargo build --release --bin ifai
# 启动交互模式
./target/release/ifai
# 切换 provider
>>> /provider openai5. 对话管理系统
- 查看实时 Token 统计(消息列表上方)
- 自动生成对话总结(100条消息或100k tokens)
- 自动压缩对话(保留系统提示词+总结+最后10条消息)
- 查看会话笔记(自动提取技术概念、文件变更、错误修复)
验证功能
- ✅ 启动应用,检查
.ifai/目录是否创建 - ✅ 打开提示词管理器,查看提示词列表
- ✅ 在对话中尝试调用 Explore Agent
- ✅ 点击工具浏览器,查看工具列表
- ✅ 使用 CLI 工具进行对话测试
- ✅ 查看会话笔记自动提取
- ✅ 验证 Token 统计和自动压缩
📝 下一步计划
功能增强
- 更多智能体类型(Test Gen, Doc Gen)
- LSP 集成
- 工具沙箱和权限细化
功能增强
- 更多智能体类型(Test Gen, Doc Gen)
- LSP 集成
- 对话总结和会话笔记
- 工具沙箱和权限细化
性能优化
- 前端性能优化(组件懒加载、虚拟滚动)
- 后端性能优化(缓存、并发、内存)
- 提示词内容优化(去重、压缩、截断)
🔄 版本更新
v0.4.0 阈值优化(2026-04-08)
压缩阈值调整:为确保对话压缩在模型上下文窗口限制之前触发,将压缩阈值从 150k 降至 100k。
修改原因
- 原配置:压缩阈值 150k > 模型上下文窗口 128k(冲突)
- 新配置:压缩阈值 100k,留出 28k (22%) 安全余量
- 适用模型:GPT-4o、GLM-4、DeepSeek、O1/O3 等 128k 上下文模型
修改范围
- 后端:
src-tauri/src/conversation/mod.rs(阈值 150_000 → 100_000) - 前端类型:
src/types/conversation.ts(注释更新) - 测试 Mock:
tests/e2e/setup-utils.ts(阈值同步更新) - 文档:README.md、README_EN.md(说明更新)
安全验证
模型上下文窗口:128k
压缩触发阈值:100k
安全余量:28k (22%) ✅
🐛 已知问题
- 部分导入导出测试存在 UI 交互细节问题(不影响核心功能)
- E2E 测试需要 Tauri 环境才能运行
- 某些测试文件的类型定义缺失(不影响应用运行)
🙏 致谢
特别感谢:
- 开源社区 - 提供了优秀的提示词系统设计参考
- Tauri 团队 - 优秀的跨平台桌面框架
- Rust 社区 - 强大的类型系统和生态
感谢所有贡献者和用户的支持! 🎉
从 v0.3.12 升级到 v0.4.0,享受完整的 AI 原生开发体验!
IfAI V0.3.12: 事件驱动架构革命与流式秩序重建
🏆 版本概述
V0.3.12 是 IfAI Editor 架构演进的重要里程碑。我们引入了 ChatEventBus 事件总线系统,实现了完全解耦的消息传递架构;创建了 ContentSegmentManager 从根本上解决了 LLM 流式响应中内容与工具调用乱序的行业难题;同时建立了 IndexedDB 事务级持久化 体系,实现数据存储的工业化升级。
🌟 核心特性
1. ChatEventBus 事件总线系统(架构革命)
- 完全解耦:消息发送、流式响应、工具调用等模块通过 EventBus 通信,消除直接依赖
- 类型安全:完整的事件类型定义,编译时保证数据结构正确性
- 调试友好:所有事件自动记录,支持事件流追踪与回放
// 事件流示例
chat:message:sent → PersistenceManager.saveThread
chat:stream:chunk → ContentSegmentManager.accumulate
chat:tool:approved → ToolCallManager.execute2. ContentSegmentManager 有序段管理器(行业首创)
- Phase 感知:将流式响应分为
pre-tool/in-tool/post-tool三个阶段 - Order 保证:每个内容段携带
order序号,确保渲染时严格按序显示 - 物理隔离:文本内容与工具调用完全分离存储,消除混乱
技术突破:这是业界首个完美解决 LLM 流式响应中"内容与工具调用交织乱序"问题的方案。
解决的问题:
❌ 修复前:工具结果插入到文本中间,导致内容错乱
✅ 修复后:内容与工具调用严格按序,渲染完美
3. IndexedDB 事务级持久化(存储升级)
- 容量解放:从 LocalStorage 的 5MB 限制升级到 IndexedDB 的 GB 级容量
- 事务安全:基于 EventBus 的细粒度持久化策略
- 发送消息:立即落盘
- 流式响应:200ms 节流持久化
- 响应结束:强制同步最终状态
- 自愈机制:启动时自动修复中断状态(sending/streaming → interrupted)
// 持久化流程
PersistenceManager {
chat:message:sent → 立即落盘
chat:stream:chunk → 节流 200ms
chat:stream:finished → 强制同步
}4. StreamingResponseController 重构
- 多版本兼容:统一商业版(ifainew-core)与社区版(BasicAIService)的流式接口
- Finish 事件修复:商业版添加
_finish事件监听,解决流结束后输入框禁用问题 - 工具调用累积:支持流式传输中 tool_call arguments 的增量接收与 JSON 完整性检测
5. SendMessageOrchestrator 发送编排器
- 生命周期管理:统一管理消息发送、流式接收、工具执行、持久化的完整流程
- 错误隔离:每个环节的错误独立处理,不会影响整体流程
- 可测试性:模块化设计便于单元测试与集成测试
🛠️ 技术架构图
┌─────────────────────────────────────────────────────────────┐
│ 用户界面层 │
│ (ChatInputArea, MessageItem, ToolApproval) │
└──────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ ChatEventBus (事件总线) │
│ ┌───────────┬──────────────┬──────────────┬─────────────┐ │
│ │ message │ stream │ tool │ persist │ │
│ │ :sent │ :chunk │ :approved │ :save │ │
│ └───────────┴──────────────┴──────────────┴─────────────┘ │
└──────────────────────┬──────────────────────────────────────┘
│
┌──────────────┼──────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Orchestrator│ │ Segment │ │ Persistence │
│ │ │ Manager │ │ Manager │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Stream │ │ Message │ │ IndexedDB │
│ Controller │ │ Store │ │ │
└─────────────┘ └─────────────┘ └─────────────┘
🧪 测试覆盖
E2E 测试(流式排序)
tests/e2e/stream-ordering/目录下新增 7 个专项测试- 验证单工具、多工具、嵌套工具的各种流式场景
- 确保内容与工具调用的严格顺序
单元测试
- EventBus 集成测试(
EventBusIntegration.test.ts) - ContentSegmentManager 完整测试(
ContentSegmentManager.test.ts) - 覆盖正常流、异常流、边界情况
🔧 修复列表
关键修复
-
后端 UTF-8 字符边界 Panic:
- 根因:流式响应在处理多字节 UTF-8 字符(如中文)时,由于物理切片正好落在字符中间导致 Rust
panic - 修复:引入字符边界感知切片逻辑,确保物理块不破坏 UTF-8 完整性
- 根因:流式响应在处理多字节 UTF-8 字符(如中文)时,由于物理切片正好落在字符中间导致 Rust
-
多 Tab 切换消息乱序与丢失:
- 修复:物理级消息段落 (Segments) 持久化,实现全量 Session 事务隔离,彻底根治 Tab 切换导致的持久化竞态
-
工具聚合与
agent_write_file异常:- 修复:补全缺失的
batchId逻辑,确保并发工具调用下的自动审批与写入操作顺序正确
- 修复:补全缺失的
-
输入框禁用问题:商业版流结束后无法输入
- 根因:缺少
{eventId}_finish事件监听 - 修复:添加 Finish 事件处理逻辑
- 根因:缺少
-
社区版 Finish 事件:社区版流响应不发送结束信号
- 根因:
fetch_ai_completion使用非流式 API - 修复:手动构造
finish_reason事件
- 根因:
-
工具调用参数累积:流式传输中 JSON 被截断
- 根因:增量 chunks 直接拼接,未验证 JSON 完整性
- 修复:使用 Index 映射 + JSON 解析验证
-
新手引导黑屏:OnboardingTour 的 Markdown 渲染错误
- 修复:优化动态面板联动与布局定位逻辑,增强渲染稳定性
-
Tab 自动命名:恢复了基于 AI 对话内容的 Tab 自动重命名功能
📊 架构先进性评估
| 维度 | 评分 | 说明 |
|---|---|---|
| 设计模式 | ⭐⭐⭐⭐⭐ | EventBus + 事务级持久化,2025 最佳实践 |
| 性能优化 | ⭐⭐⭐⭐ | 节流 + IndexedDB,平衡性能与安全 |
| 可维护性 | ⭐⭐⭐⭐⭐ | 完全解耦,测试覆盖完整 |
| 创新性 | ⭐⭐⭐⭐⭐ | ContentSegmentManager 行业首创 |
| 稳定性 | ⭐⭐⭐⭐ | 自愈机制完善 |
| 扩展性 | ⭐⭐⭐⭐ | 模块化设计,便于功能扩展 |
与业界对比
| 特性 | IfAI Editor | VS Code Web | ChatGPT Web | Claude Web |
|---|---|---|---|---|
| 解耦架构 | ⭐⭐⭐⭐⭐ EventBus | ⭐⭐⭐⭐ DI | ⭐⭐⭐ 直接耦合 | ⭐⭐⭐⭐ React Context |
| 流式乱序处理 | ⭐⭐⭐⭐⭐ Segments | ⭐⭐⭐⭐ 队列 | ⭐⭐⭐ 简单追加 | ⭐⭐⭐⭐ 队列 |
| 持久化 | ⭐⭐⭐⭐ IndexedDB | ⭐⭐⭐⭐⭐ IndexedDB | ⭐⭐⭐ 内存为主 | ⭐⭐⭐⭐ IndexedDB |
| 容错机制 | ⭐⭐⭐⭐⭐ 自愈 | ⭐⭐⭐⭐ 重试 | ⭐⭐⭐ 基础 | ⭐⭐⭐⭐ 重试 |
定位:这是一流的前端架构,在流式 LLM 应用领域属于世界领先水平。特别是 ContentSegmentManager 的设计,在业界是创新性突破。
🚀 升级建议
短期(1-2 周)
- 添加 Web Worker 后台持久化
- 实现数据压缩(LZMA/Brotli)
- 添加性能监控 Metrics
中期(1-2 月)
- 引入 Background Sync API
- 实现 Service Worker 缓存
- 添加数据版本迁移机制
长期(3-6 月)
- 支持 CRDT 多端同步
- 实现增量同步协议
- 添加端到端加密
📝 迁移指南
对开发者的影响
- 无破坏性变更:所有公开 API 保持兼容
- 新增能力:可订阅 EventBus 进行自定义扩展
- 持久化透明:数据自动迁移至 IndexedDB,无需手动操作
对用户的影响
- 容量提升:不再有 5MB 存储限制
- 响应更快:输入框不会卡在加载状态
- 顺序正确:工具调用不再打断文本内容
🔗 相关提交
05af4fb- 修复 agent_write_file 缺失 batchId 导致的工具聚合失效be30e7d- 修复 UTF-8 字符边界切片导致的后端崩溃 (Panic)2977567- 实现全量消息段落 (Segments) 的物理级持久化fba43aa- 引入有序段管理器3ea6197- 修复流式传输下的工具调用参数累积与 OpenAI API 格式兼容性97ebf77- 实现 EventBus + Session 持久化5d41105- ChatEventBus 基础设施fc6a9d5- 引入 IndexedDB 存储
发布日期:2026-03-25
核心架构:PIVO 3.0 + EventBus + ContentSegmentManager
IfAI v0.3.11
Release Notes v0.3.11 - 物理级稳定性与性能终极加固
本版本聚焦于彻底解决长代码生成过程中的 UI 抖动、闪屏、死循环以及大规模文件生成后的系统卡顿问题,实现了工业级的流式渲染稳定性。
🚀 核心改进
1. 物理级“零抖动”渲染引擎 (PIVO 3.4.11)
- 双模驱动同步:引入
EventBus主动同步与ResizeObserver被动补偿闭环,确保滚动对齐能完美捕捉代码高亮引发的异步高度变化。 - 双相位对齐:实施
scrollToIndex逻辑对齐与物理scrollTop强制锁存,彻底根除 SyntaxHighlighter 导致的视觉回弹。 - Mirror Guard (物理镜像锁定):利用 Ref 闭包锁定技术隔离 React 渲染周期,确保事件订阅在流式生成期间绝对静止,彻底消除了闪屏现象。
2. 物理熔断与自愈增强
- Sentinel (哨兵) 宽容度升级:将卡死判定阈值提升至 15s,并优化了心跳检测时序,彻底解决了复杂渲染压力下误触发 Auto-Continue 导致的“空气泡生成”死循环。
- 布局反馈环熔断:引入
isSyncingRef物理锁,切断了 ResizeObserver 导致的无限递归重绘。
3. 极限性能优化 (PIVO 3.4.13)
- 持久化性能飞跃:将
fileStore持久化开销从 O(N) 递归 优化为 O(1) 扁平访问,解决了大项目/长文件生成后鼠标转圈卡顿的顽疾。 - 物理降噪手术:移除了生成期间冗余的工具参数预览流,物理截断巨量 DOM 属性,显著降低了浏览器重排(Reflow)压力。
- 任务计划(Mission Plan)优化:物理移除了入场动画与昂贵的毛玻璃效果,锁定骨架屏高度,实现生成过程的静默稳定性。
4. 健壮性与兼容性
- 全链路空值防护:对
AIChat、MessageItem及TokenUsageIndicator进行了地毯式安全加固,确保流式输出首帧 0 崩溃风险。 - 跨模型适配:优化了 E2E 金标准测试脚本,完美支持智谱 GLM-4.7、DeepSeek 等具备多轮工具调用能力的真实模型。
🛠️ 修复列表
- [修复] 修正了
contextFilter.ts中因 Promise 异步计算错误导致的 Token 裁剪逻辑失效问题。 - [修复] 解决了
MessageItem在处理多模态内容时可能触发的 TS 类型推断错误。 - [优化] 提升了
generateResponse的物理缓冲间隔至 600ms,为磁盘写入和 Monaco 渲染留出充足时间。
IFA Editor - 物理驱动,极致稳定。
IfAI v0.3.10
Release Notes v0.3.10 - 🛡️ 极致稳定性加固与物理状态隔离
概述
v0.3.10 是一个专注于工程健壮性与极致交互体验的关键版本。我们针对长对话下的参数丢失、多项目切换的状态残留以及流式生成的视觉跳变进行了物理级加固。
核心改进
1. UI 极致稳定性 (Smart UI)
- 智能粘性滚动:引入 50px 物理阈值检测。只有当用户处于底部附近时,新的消息才会触发自动滚动。这允许用户在 AI 生成长代码时自由向上回溯查阅,彻底解决了“滚动条锁死”的交互痛点。
- 物理防闪屏:重构了
VirtualMessageList的渲染路径,确保isLoading状态切换时组件实例保持稳定,长对话加载现在平滑如镜。
2. 物理级工作区隔离 (Workspace Isolation)
- 状态彻底重置:实现了
clearProjectState核心逻辑。当用户切换项目根目录时,系统会自动物理清理:- 所有打开的文件标签页。
- 当前的 PIVO 任务树缓存。
- 全局搜索索引与节点选中状态。
- 杜绝交叉污染:确保用户在 A 项目生成的 AI 逻辑不会误写进 B 项目的文件中。
3. DebuggerAgent v0.5.0 链路加固
- 强同步激活:修复了 Tauri 事件监听器在全局初始化时可能丢失的问题。现在监听器会在指令发出的瞬间物理激活,确保 100% 成功。
- 预览路径纠偏:解决了内联预览无法打开绝对路径文件的 Bug,现在系统能自动对齐 Rust 后端与前端的物理路径坐标。
4. ToolCall 协议安全哨兵
- 意图锁定机制:针对超过 500 行的长内容生成,引入了物理级参数补全。如果 AI 漏传路径,系统会优先匹配 PIVO 任务目标,确保写入永不落空。
- UI 级纠偏:如果物理回收失败,UI 将提供红色输入框由用户手动补全,跳过 LLM 昂贵的重试流程。
物理保真度
该版本代码已通过物理链路验证,重点加固了 Store 层与 Rust 后端的通讯一致性。建议所有用户立即更新以获得最稳定的自动化重构体验。
IfAI v0.3.9
IfAI V0.3.9: 物理链路保真与认知升级
🏆 版本概述
V0.3.9 是 PIVO 3.0 架构走向成熟的里程碑版本。我们彻底重构了数据存储与可视化管线,引入了革命性的 Symbol-First 物理探测引擎,并打通了 NVIDIA NIM 工业级推理链路。
🌟 核心特性
1. Symbol-First 物理探测引擎 (亮点)
- 物理骨架感知:面对超过 10KB 的文件,AI 会自动先探测文件结构(类、函数分布),避免上下文溢出。
- 可视化管线:新增
ProbeSymbolView组件,实时展示后端 Rust 指令的探测进度与物理行号。
2. PIVO 3.0 物理链路加固
- 存储搬家:强制将核心聊天历史与线程存储从 LocalStorage (5MB) 迁移至 IndexedDB (无上限),彻底根治
QuotaExceededError。 - 读取保真:修复了大型 JSON 文件(如
package-lock.json)在渲染时的误解析漏洞,确保 100KB+ 内容保真呈现。 - 影子参数注入:当 AI 忘记传参时,系统通过影子逻辑自动注入当前活跃文件路径,实现无感自愈。
3. 深度集成 NVIDIA NIM
- 自动校准:Rust 后端引入 URL 原子校准器,自动补全 NVIDIA/Ollama 的残缺 API 路径,消除 404 错误。
- 交互重构:自定义提供商表单现在支持“可用模型”直接配置,并提供动态预设填充。
4. 精确 Token 物理统计
- 动态度量:废除硬编码占位符,引入基于实际字符长度的 Token 估算公式(1 Token ≈ 4 字符),统计数据具备真实的物理参考价值。
🛠️ 修复与优化
- 私有库加固:根治了
ifainew-core流式拼接中的undefined拼接漏洞。 - 扫描逻辑:修正了
agent_scan_project的空路径熔断逻辑,支持自动对齐根目录。 - 存储警告:同步了
DataMigrator白名单,自动回收 LocalStorage 残留空间,消除存储满载提示。
发布日期:2026-03-06
核心架构:PIVO 3.0 Standard
IfAI v0.3.8
版本号: v0.3.8
核心亮点: 任务执行计划 (Mission Plan) | 双屏协同交互 | 物理级高保真同步
【写在前面:你还在跟 AI “瞎聊”代码吗?】
市面上大多数 AI 编程工具,要么只能在侧边栏“纸上谈兵”,要么只能在行内做简单的“单词补全”。当你面对几百行复杂的重构逻辑时,你是否感到无助:你不知道 AI 下一步要改哪里,更无法打断或修正它的错误。
今天,IfAI v0.3.8 正式发布。我们带来了自 PIVO 引擎诞生以来最重要的一次升级:将“任务规划”与“跨端协同”深度植入代码编辑器的骨髓。
一、 PIVO 3.0 任务规划引擎:像首席架构师一样思考
在 v0.3.8 中,当你按下 Cmd+K 输入重构指令时,IfAI 不再直接盲目写代码,而是首先启动 Mission Execution Plan(任务执行计划):
- 意图自动拆解:PIVO 引擎会根据你的指令(如“重构 README 增加安装指南”),自动在界面顶部生成任务流。
- 可视化进度条:从“规划中”到“实施中”,再到“验证中”,每一个物理动作都清晰可见。
- 状态实时打勾:当 AI 物理写入文件成功后,任务列表会自动同步状态。这种“所见即所得”的掌控感,让复杂的代码重构变成了标准化的工业流水线。
二、 双屏联动:行内编辑与对话区的“量子纠缠”
这是 v0.3.8 最令开发者兴奋的特性。以往行内编辑(Inline)和侧边栏(Chat)是割裂的,但在新版本中,它们达成了物理级的同步:
- 指令透传:你在编辑器中间(Inline)输入的每一条指令,都会同步出现在右侧对话区。
- 交互闭环:侧边栏不再只是文字记录,它会实时显示 Inline 正在调用的工具(如
agent_read_file)及其物理执行结果。 - 上下文延续:你可以先在行内发起重构,如果 AI 遇到困难,直接在侧边栏进行追问或补充上下文,AI 会无缝承接之前的编辑进度。
三、 极致保真:告别文字闪现与滚轮失效
为了支撑上述复杂的交互,我们在底层进行了“手术刀式”的加固:
- 80ms 渲染削峰:解决了 AI 高频输出时导致编辑器滚轮假死的顽疾。现在,即便 AI 正在生成万行代码,你依然可以自由滚动页面查看上下文。
- 首片解锁策略:骨架屏会在收到 AI 第一个字符的 50ms 内立即解锁。AI 刚开口,内容就显现,反馈速度提升 300%。
- 权威心跳监测:由 Sentinel(哨兵)实时监测流式心跳。即使物理 IO 发生 8 秒以内的微小波动,系统也能稳健闭环,绝不让流状态“僵死”。
四、 为什么要从 v0.3.6 立即升级到 v0.3.8?
- v0.3.6 解决了大体积图片导致的内存崩溃。
- v0.3.7 引入了浮动的小部件布局。
- v0.3.8 则交付了**“完全体”的重构体验**。
对于开发者来说,这意味着你不再需要在侧边栏和代码区之间来回拷贝。你只需要给出意图,IfAI 规划任务、执行修改、同步反馈,一气呵成。