Go to file
JOJO 94b05c28b3 feat: Agent 模式重大更新 — 稳定多轮对话、流式刘海、模型管理、交互优化
## Agent 核心功能
- **流式输出刘海弹窗**:实时展示模型思考内容,支持自动滚动
- **工具调用进度**:最多可见3条 + 可滚动查看全部历史 + 防抖并行滚动
- **打字/语音双输入**:Agent 模式可选手动打字或语音输入
- **快速/思考模式切换**:支持 thinking mode 开关
- **多轮对话连续性**:同一会话内持续对话,新建对话按钮 ⊕ 开启新会话
- **工作时间显示**:工作完成状态栏显示耗时,如「工作完成 · 00:42」

## Bug 修复
- **SIGTERM 优雅退出**:bridge.js 处理 SIGTERM,避免 code 15 误报异常
- **弹窗复用不重建**:输入内容继续对话时弹窗内部刷新,不再闪出闪进
- **关闭按钮立刻生效**:ignoreMouse=true 绕过 DynamicNotchKit 延迟
- **设置窗口 Agent UI 构建时机**:从延迟构建改为 init 中直接构建
- **模型编辑器**:修复 grid column nil 崩溃 + 改为独立 KeyEquivalentPanel 窗口支持 Cmd+A/C/V/X
- **双击 Control 三向轮换**:语音输入 ↔ AI助手 ↔ 智能体
- **Fn 长按冲突处理**:非 Agent 模式下自动关闭 Agent 刘海弹窗
- **Save 后刷新下拉**:保存配置后默认模型下拉框即时同步

## UI 交互优化
- **工具列表无灰色背景**:工具执行期间不再有底色变化
- **工作时隐藏新建对话按钮**:thinking/running 期间 ⊕ 自动隐藏
- **工具调用去 timeout 显示**:运行指令行不再显示 (timeout=30s)

## 文件拆分(单文件≤500行)
- AgentNotchView → AgentProgressTracker + AppKitTextField + AgentNotchView
- SettingsWindow → AgentModelEditor + KeyEquivalentSecureTextField + KeyEquivalentPanel + SettingsWindow

## 底层改动
- DynamicNotchKit: 新增 contentVersion + notifyContentChanged 机制
- NotchView: 动画绑定 contentVersion 支持弹窗内容变化弹性动画
2026-04-29 16:42:46 +08:00
Agent/src feat: Agent 模式重大更新 — 稳定多轮对话、流式刘海、模型管理、交互优化 2026-04-29 16:42:46 +08:00
Dependencies/DynamicNotchKit feat: Agent 模式重大更新 — 稳定多轮对话、流式刘海、模型管理、交互优化 2026-04-29 16:42:46 +08:00
scripts feat: Agent 模式重大更新 — 稳定多轮对话、流式刘海、模型管理、交互优化 2026-04-29 16:42:46 +08:00
skills feat: RecordingPanel 宽度自适应 + 打包 DMG 2026-04-25 16:34:33 +08:00
Sources feat: Agent 模式重大更新 — 稳定多轮对话、流式刘海、模型管理、交互优化 2026-04-29 16:42:46 +08:00
.gitignore chore: ignore .DS_Store 2026-04-25 16:39:54 +08:00
agents-md-writer.skill feat: RecordingPanel 宽度自适应 + 打包 DMG 2026-04-25 16:34:33 +08:00
AGENTS.md feat: RecordingPanel 宽度自适应 + 打包 DMG 2026-04-25 16:34:33 +08:00
Makefile feat: 添加 App 图标 2026-04-24 16:58:00 +08:00
Package.swift feat: Ask AI 刘海弹窗输出模式 2026-04-28 23:18:13 +08:00
README.md docs: 添加 README.md 2026-04-24 16:19:12 +08:00
VoiceInput-20260425.dmg feat: RecordingPanel 宽度自适应 + 打包 DMG 2026-04-25 16:34:33 +08:00

VoiceInput

macOS 菜单栏语音输入应用 —— 按住 Fn 键录音,松开自动注入文本。

功能

  • 🎤 按住 Fn 说话:全局监听 Fn/Globe 键,按下录音,松开注入
  • 📝 流式识别Apple Speech Recognition 实时转录,默认简体中文
  • 🌐 多语言:简中 / 繁中 / English / 日本語 / 한국어
  • 🎚 实时波形5 条 RMS 驱动的球形波动画,说话时随音量跳动
  • 🪟 胶囊浮动窗:屏幕底部居中,无边框,入场弹簧动画
  • 📋 智能注入:剪贴板 + Cmd+V自动检测并切换 CJK 输入法
  • 🤖 LLM 纠错DeepSeek 优化识别结果,修正同音字 / 拼写 / 术语

系统要求

  • macOS 14+
  • 辅助功能权限(监听 Fn 键)
  • 麦克风权限
  • 语音识别权限

快速开始

make build   # 编译 + 生成 .app
make run     # 构建并启动

首次运行需在 系统设置 → 隐私与安全性 → 辅助功能 中授权 VoiceInput.app

使用

  1. 点击任意文本输入框
  2. 按住键盘左下角 Fn / 🌐
  3. 说话,胶囊窗口显示实时转录
  4. 松开 Fn → 文本自动粘贴到光标位置

点击菜单栏 🎤 图标可切换语言或配置 LLM。

构建

make build      # Debug 构建
make release    # Release 构建
make install    # 安装到 /Applications
make clean      # 清理

LLM 纠错

LLM 默认使用 DeepSeek在菜单栏 LLM Refinement → Enable 开启。

配置项 默认值
API Base URL https://api.deepseek.com
Model deepseek-v4-flash

设置窗口可修改 API Key 等配置,点击 Test 验证连通性。

项目结构

Sources/
├── App/          # AppDelegate + 菜单栏控制器
├── Core/         # 按键监听、语音识别、音频电平、文本注入、输入法、LLM
├── UI/           # 浮动窗口、波形动画、设置窗口
└── Utils/        # 配置持久化

许可

MIT