Skip to main content

一个功能强大的个人AI助手,支持语音识别、自动化控制、智能搜索等功能

Project description

MyJARVIS - 您的个人AI助手

一个功能强大的个人AI助手,支持语音识别、自动化控制、智能搜索等功能。专为 macOS 设计,适配 Intel Mac 和 Apple Silicon。

✨ 功能特性

  • 🎤 语音识别:支持 macOS 听写功能和在线语音识别
  • 🤖 AI对话:集成多种AI模型(智谱AI、DeepSeek、Qwen等)
  • 🔍 智能搜索:自动打开浏览器并搜索,支持屏幕分析
  • 🖱️ 自动化控制:鼠标、键盘自动化操作
  • 💬 图形界面:美观的GUI界面和状态栏图标
  • 📝 记忆系统:保存对话历史和用户偏好
  • 🔔 提醒功能:工作提醒、闹钟等

📋 系统要求

  • macOS 12 或更高版本
  • Python 3.10 或更高版本
  • Intel Mac 或 Apple Silicon

🚀 快速开始

1. 安装

从 PyPI 安装(推荐)

pip install myjarvis

从源码安装

git clone https://github.com/yourusername/myjarvis.git
cd myjarvis
pip install -r requirements.txt

2. 配置

复制配置文件模板:

cp config.json.example config.json

编辑 config.json,配置您的API密钥(可选):

{
  "api": {
    "zhipu_api_key": "您的智谱AI密钥",
    "deepseek_api_key": "您的DeepSeek密钥",
    "qwen_api_key": "您的Qwen密钥"
  }
}

注意:如果不配置API密钥,系统会自动使用免费在线API。

3. 运行

python3 main.py

或者使用状态栏模式:

python3 main.py --menubar

🔑 API密钥配置

方法1:配置文件(推荐)

编辑 config.json,添加您的API密钥:

{
  "api": {
    "zhipu_api_key": "您的密钥",
    "deepseek_api_key": "您的密钥",
    "qwen_api_key": "您的密钥"
  }
}

方法2:环境变量

export ZHIPU_API_KEY='您的密钥'
export DEEPSEEK_API_KEY='您的密钥'
export QWEN_API_KEY='您的密钥'

获取API密钥

  1. 智谱AI(推荐)

  2. DeepSeek

  3. Qwen

📖 使用说明

基本命令

  • 打开Safari - 打开应用程序
  • 搜索Python教程 - 智能搜索
  • 定一个十秒后的闹钟 - 设置提醒
  • 几点了 - 查询时间
  • 帮助 - 查看功能说明

语音输入

  1. 点击"🎤 语音输入"按钮
  2. 系统会自动触发听写功能(或手动按 Fn Fn)
  3. 开始说话
  4. 说完后按 Fn 键或点击完成按钮
  5. 识别结果会自动填入并执行

搜索功能

系统会自动:

  1. 打开Safari浏览器
  2. 输入搜索关键词
  3. 执行搜索
  4. 分析搜索结果
  5. 点击第一个搜索结果

🛠️ 开发

项目结构

MyJARVIS/
├── main.py                 # 主入口
├── jarvis_core/           # 核心模块
│   ├── ai_client.py       # AI客户端
│   ├── automation.py       # 自动化控制
│   ├── gui.py             # 图形界面
│   ├── memory.py           # 记忆系统
│   ├── speech.py           # 语音识别
│   └── tools.py            # 系统工具
├── config.json.example     # 配置模板
└── requirements.txt       # 依赖列表

安装开发依赖

pip install -r requirements.txt

🐛 故障排除

语音识别无法使用

  1. 确保系统设置 > 键盘 > 听写 已启用
  2. 确保系统设置 > 安全性与隐私 > 隐私 > 麦克风 已授予权限
  3. 尝试手动按 Fn Fn 触发听写

搜索功能不工作

  1. 确保Safari已安装
  2. 确保系统设置 > 安全性与隐私 > 隐私 > 辅助功能 已授予权限
  3. 检查日志文件:logs/jarvis_*.log

程序崩溃

  1. 确保使用 Python 3.10 或更高版本
  2. 检查系统设置 > 安全性与隐私 > 隐私 > 屏幕录制 权限
  3. 查看崩溃日志

📝 许可证

MIT License

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📧 联系方式

🙏 致谢

感谢所有贡献者和开源社区的支持!


注意:请勿在代码或配置文件中提交您的API密钥。使用 config.json.example 作为模板,并将 config.json 添加到 .gitignore

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

myjarvis-1.0.0.tar.gz (35.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

myjarvis-1.0.0-py3-none-any.whl (38.9 kB view details)

Uploaded Python 3

File details

Details for the file myjarvis-1.0.0.tar.gz.

File metadata

  • Download URL: myjarvis-1.0.0.tar.gz
  • Upload date:
  • Size: 35.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.10

File hashes

Hashes for myjarvis-1.0.0.tar.gz
Algorithm Hash digest
SHA256 4baef1f53b96a3d80bdbe59b74afdfecff7e769fd01eba9a497054249899e96d
MD5 d2d1f29642e3e5031b46db2f8ad84f3a
BLAKE2b-256 3ab5357c16d4bb950494889720798274c0b400fa3530132cb4b93dbb368341ab

See more details on using hashes here.

File details

Details for the file myjarvis-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: myjarvis-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 38.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.10

File hashes

Hashes for myjarvis-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e47c403c4c6b1c0e96f0450de11121cf96a3befa795531e88cef7fbfd523ac33
MD5 af569e6566375cdbe99483cf8be7d4c7
BLAKE2b-256 58a8bf6179a6c62f9ecec3fa0e230b027f896d616b42342271e3a71373d7e489

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page