Repository navigation
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 模式、元编程引擎、权限系统、配置系统、测试