Go to file
JOJO 9f3ea09b06 feat(agent): Better Siri 改造 — 个人助手 + 记忆系统 + 统一弹窗 + 多项优化
=== 记忆系统 ===
- 新增 remember(记录)和 recall(搜索)工具,持久化到 ~/Library/Application Support/VoiceInput/memory/memory.json
- 新增 set_identity 工具,独立管理助手名字/用户称呼/语气
- prompt 重写为个人助手身份,注入 macOS 能力 + 记忆规则
- prompt 中积极调用记忆工具,按需搜索、自然融入回答
- 禁止相对时间,待办必须绝对日期

=== 对话持久化 ===
- 集成 conversation_store,done 前自动写入对话文件
- token 记录:prompt/completion 累加,total 覆盖为最新上下文长度
- 启动时加载最新对话继续(使用 eagent /resume 逻辑)
- 去重:末尾连续 assistant 消息自动合并
- 修复消息加载顺序 bug(旧对话覆盖用户新消息)

=== 新建对话 ===
- 手动/自动两种模式(设置窗口可切换)
- 自动模式:total > 阈值时隐藏按钮,下次输入自动新建
- 自动阈值在设置窗口可配置(默认 40000)

=== 弹窗 UI 统一 ===
- 语音输入按 Fn 即显示刘海弹窗(和打字输入统一)
- 语音识别内容自动填入并发送(可关闭自动发送)
- 工作期间(thinking/running)隐藏输入框,idle/done 时显示
- 工具显示三种模式:全部显示/最后隐藏/一直不显示

=== 设置窗口增强 ===
- 助手名字 / 用户称呼 / 语气可配置
- 工具显示模式 / 新建对话模式 / 自动阈值
- 语音输入后自动发送开关(默认开)
- 记忆管理窗口可视化编辑(Dock 可访问)
- 窗口高度 840→860

=== 菜单增强 ===
- Agent LLM 二级菜单切换语音/打字输入
- 助手设置和记忆管理入口(Dock 可访问)

=== 修复 ===
- Fn 按下时停止正在进行的朗读
- 弹窗已存在时不再覆盖 isTextInputMode
- voiceInputText 加 @Published 以触发 UI 更新
2026-04-30 18:16:58 +08:00
Agent feat(agent): Better Siri 改造 — 个人助手 + 记忆系统 + 统一弹窗 + 多项优化 2026-04-30 18:16:58 +08:00
Dependencies/DynamicNotchKit feat: Agent 模式重大更新 — 稳定多轮对话、流式刘海、模型管理、交互优化 2026-04-29 16:42:46 +08:00
scripts feat: 朗读功能、弹窗优化、Node.js 打包、Prompt 更新 2026-04-29 18:22:14 +08:00
skills feat: RecordingPanel 宽度自适应 + 打包 DMG 2026-04-25 16:34:33 +08:00
Sources feat(agent): Better Siri 改造 — 个人助手 + 记忆系统 + 统一弹窗 + 多项优化 2026-04-30 18:16:58 +08:00
.gitignore fix: Agent 配置路径统一到用户目录,修复工具异常和权限错误 2026-04-29 20:16:20 +08:00
agents-md-writer.skill feat: RecordingPanel 宽度自适应 + 打包 DMG 2026-04-25 16:34:33 +08:00
AGENTS.md feat: 朗读功能、弹窗优化、Node.js 打包、Prompt 更新 2026-04-29 18:22:14 +08:00
Makefile feat: 朗读功能、弹窗优化、Node.js 打包、Prompt 更新 2026-04-29 18:22:14 +08:00
Package.swift feat: Ask AI 刘海弹窗输出模式 2026-04-28 23:18:13 +08:00
README.md docs: 更新 README,补全三种模式和 Agent 文档 2026-04-29 20:21:19 +08:00
VoiceInput-20260425.dmg feat: RecordingPanel 宽度自适应 + 打包 DMG 2026-04-25 16:34:33 +08:00

VoiceInput

macOS 菜单栏语音输入应用 —— 按住 Fn 键录音AI 帮你处理。

功能

三种模式(双击 Control 切换)

模式 图标 功能
Input 语音输入 🎤 语音转文字 + LLM 纠错 → 注入光标
Assist AI 助手 💬 语音提问 → AI 回复(弹窗 + 可选朗读)
Agent 智能体 🤖 多轮对话 + 工具调用(文件读写/命令执行/搜索)

其他亮点

  • 🎤 按住 Fn 说话:全局监听,长按录音松开注入
  • 📝 流式识别Apple Speech Recognition 实时转录
  • 🌐 多语言:简中 / 繁中 / English / 日本語 / 한국어
  • 🪟 刘海弹窗AI 回复在 DynamicNotch 弹窗展示,支持复制
  • 🔊 语音朗读macOS 原生 TTS 朗读 AI 回复Assist/Agent 可独立开关)
  • 🎚 实时波形5 条 RMS 驱动的球形波动画
  • 📋 智能注入:自动检测并切换 CJK 输入法
  • 🔧 Agent 工具:读写文件、执行命令、搜索文件、网络搜索等

系统要求

  • macOS 14+
  • 辅助功能权限(监听 Fn 键)
  • 输入监控权限Fn 键长按检测)
  • 麦克风权限
  • 语音识别权限

快速开始

make build   # 编译 + 生成 .app
make run     # 构建并启动
make dmg     # 生成分发包(自动清空 API Key

首次运行需授权辅助功能输入监控两个系统权限。

使用

  1. 点击任意文本输入框
  2. 双击 Control 切换到想要模式
  3. 按住键盘左下角 Fn / 🌐
  4. 说话,胶囊窗口显示实时转录
  5. 松开 Fn → 文本注入Input/ AI 回复弹窗Assist/Agent

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

三种模式详解

Input语音输入

语音转文字 → LLM 纠错(可选)→ 注入光标。适合日常输入。

AssistAI 助手)

语音提问 → LLM 回复。可选择直接注入刘海弹窗展示。 弹窗模式下可开启朗读AI 回复自动语音播报。

Agent智能体

语音/文字 → 多轮对话 → 工具调用(文件读写、命令执行、搜索等)→ 流式输出。 任务完成后可选朗读最终结果。内置 Node.js 运行时,无需额外安装。

配置

模块 配置方式 存储位置
Input LLM 菜单栏 🎤 Input LLM → Settings UserDefaults
Assist LLM 菜单栏 💬 Assist LLM → Settings UserDefaults
Agent LLM 菜单栏 🤖 Agent LLM → Settings ~/Library/Application Support/VoiceInput/models.json

Agent 支持多模型配置,在 Settings 中添加/编辑/删除。覆盖安装不会丢失配置。

构建

make build      # Debug 构建
make release    # Release 构建
make run        # 构建并启动
make install    # 安装到 /Applications
make dmg        # 签名 + 创建 DMG自动清空 API Key
make clean      # 清理

项目结构

Sources/
├── App/           # AppDelegate + 菜单栏控制器
├── Core/          # 按键监听、语音识别、LLM、Agent 桥接、弹窗管理
├── UI/            # 浮动窗口、波形、设置面板、Agent 弹窗
└── Utils/         # 配置持久化

Agent/              # Node.js CLI智能体运行时
├── bin/node        # 内置 Node.jsarm64
├── prompts/        # System prompt
├── src/            # bridge.js + 工具实现
└── node_modules/   # npm 依赖

许可

MIT