forked from hack-ink/AiR
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
90a970e
commit 613e943
Showing
13 changed files
with
500 additions
and
30 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,224 @@ | ||
<div align="center"> | ||
|
||
# AiR | ||
<h3>AI with Rust | <img align="center" height="110" src="asset/icon.png"></h3> | ||
|
||
[![License](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) | ||
[![Checks](https://github.com/hack-ink/air/actions/workflows/checks.yml/badge.svg?branch=main)](https://github.com/hack-ink/air/actions/workflows/checks.yml) | ||
[![Release](https://github.com/hack-ink/air/actions/workflows/release.yml/badge.svg)](https://github.com/hack-ink/air/actions/workflows/release.yml) | ||
[![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/hack-ink/air)](https://github.com/hack-ink/air/tags) | ||
[![GitHub last commit](https://img.shields.io/github/last-commit/hack-ink/air?color=red&style=plastic)](https://github.com/hack-ink/air) | ||
|
||
这款完全用 Rust 构建的 AiR 提供了惊人的速度和效率! | ||
|
||
AiR 拥有两个主要功能:准确的翻译和无缝的文本重写,旨在极大地提升您的生产力。 | ||
|
||
AiR 是非母语者的绝佳助手,能够自动修正错误并润色语言,使其听起来像母语使用者。 | ||
|
||
更多精彩功能即将推出! | ||
|
||
[English](README.md) | [中文](README-zh-CN.md) | ||
|
||
本章节完全由 AiR 翻译生成,如有错误请提交 issue 或 PR 进行修正。 | ||
</div> | ||
|
||
|
||
## 功能亮点 | ||
### 直接重写 | ||
![rewrite-directly](demo/rewrite-directly.gif) | ||
|
||
### 直接翻译 | ||
![translate-directly](demo/translate-directly.gif) | ||
|
||
|
||
## 状态 | ||
- **操作系统** | ||
- [x] **macOS** | ||
- [ ] **Windows** (即将推出) | ||
- [ ] **Unix** | ||
- **功能** | ||
- [x] **重写** | ||
- [x] **直接重写** | ||
- [x] **翻译** | ||
- [x] **直接翻译** | ||
- [ ] **重构代码** (即将推出) | ||
- [ ] **光学字符识别**(计划中) | ||
- [ ] **文字转语音**(已计划) | ||
|
||
|
||
## 用法 | ||
### 安装 | ||
#### 从源代码构建 | ||
```sh | ||
# 安装 Rust。 | ||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain stable | ||
|
||
# 克隆代码库。 | ||
git clone https://github.com/hack-ink/air | ||
cd air | ||
|
||
# 构建项目后,二进制文件将位于 `target/release/air`。 | ||
cargo build --release | ||
|
||
# 如果您是 macOS 用户并且想拥有一个 `AiR.app`,请运行以下命令。 | ||
# 安装 `cargo-bundle` 将二进制文件打包成应用程序。 | ||
cargo install cargo-bundle | ||
# 构建应用程序后,它将位于 `target/release/bundle/osx/AiR.app`。 | ||
cargo bundle --release | ||
``` | ||
|
||
#### 下载预构建二进制文件 | ||
- **macOS** | ||
- 从 [GitHub Releases](https://github.com/hack-ink/air/releases/latest) 下载最新的预构建二进制文件。 | ||
- **Windows** | ||
- 即将推出 | ||
- **Unix** | ||
- 已计划 | ||
|
||
### 配置 | ||
#### 打开来自未识别开发者的 Mac 应用程序(仅限 macOS) | ||
当您第一次打开应用时,您会看到以下消息: | ||
|
||
`“AiR” 无法打开,因为无法验证开发者。` | ||
|
||
由于我不是认证开发者,您需要允许该应用在您的 Mac 上运行。 | ||
|
||
请请我喝杯咖啡,以便我能获得一个 Apple 开发者证书。 😄 | ||
|
||
1. `打开“系统偏好设置” -> “隐私与安全性”。` | ||
2. `请向下滚动到 ‘“AiR” 因不是来自已识别的开发者而被阻止使用’ 部分。` | ||
3. `点击 “仍然打开”。` | ||
|
||
相关资源: | ||
- [打开来自未识别开发者的 Mac 应用程序 (support.apple.com)](https://support.apple.com/en-hk/guide/mac-help/mh40616/mac) | ||
- [如何打开来自未识别开发者的 Mac 应用程序 (macworld.com)](https://www.macworld.com/article/672947/how-to-open-a-mac-app-from-an-unidentified-developer.html) | ||
|
||
#### 获取系统辅助功能权限(仅限 macOS) | ||
要控制键盘并使用系统剪贴板进行数据读写, | ||
AiR 必须获得系统辅助功能权限。 | ||
|
||
1. `打开 “系统设置” -> “隐私与安全” -> “辅助功能”。` | ||
2. `点击 “+” 按钮,然后添加 “AiR.app” 或 “air” 二进制文件。` | ||
|
||
#### 设置 | ||
你可以通过导航到 “设置” 面板来配置设置。 | ||
|
||
- 通用 | ||
- 字体大小 | ||
- 失去焦点时隐藏:当应用程序失去焦点时隐藏它。 | ||
- 激活的功能:使用非直接功能时启用的功能。 | ||
- AI | ||
- API 基础:AI API 的基本 URL。确保不要忘记 `v1` 部分。(例如:https://api.openai.com/v1)。 | ||
- API 密钥:AI API 密钥。 | ||
- 模型:AI 模型。 | ||
- 温度:人工智能的不可预测性。 | ||
- 翻译 | ||
- 语言 A:您希望从/向 B 翻译的语言。 | ||
- 语言 B:您希望从/向 A 翻译的语言。 | ||
- 快捷键 | ||
- 重写 | ||
- 直接重写 | ||
- 翻译 | ||
- 直接翻译 | ||
- 开发 | ||
- 日志级别 | ||
|
||
AiR目前正在进行大量开发,并非所有设置都会在用户界面中始终可用。 | ||
|
||
然而,所有设置始终可以在设置文件中找到。 | ||
|
||
设置文件的位置因操作系统而异。 | ||
- `~/Library/Application\ Support/AiR/setting.toml` (macOS) | ||
- `C:\Users\<username>\AppData\Roaming\AiR\setting.toml` (Windows) | ||
- `~/.config/AiR/setting.toml` (Unix) | ||
|
||
#### 交互 | ||
在输入区域中键入文本,然后在 macOS 上按 `META+ENTER` 或在其他操作系统上按 `CTRL+ENTER` 以触发相应的功能。 | ||
|
||
您还可以选择文本并使用快捷键直接对选定的文本应用相应的功能。 | ||
|
||
### 更新 | ||
正在开发自动更新功能。 | ||
|
||
目前,您可以通过重复安装步骤手动更新应用程序。 | ||
|
||
#### 重新获得系统访问权限(仅适用于macOS) | ||
1. `按照 “获取系统访问权限” 部分找到 “AiR.app” 或 “air” 二进制文件。` | ||
2. `点击 “-” 按钮以移除现有权限,然后点击 “+” 按钮重新添加权限。` | ||
|
||
|
||
## 开发 | ||
### 架构 | ||
<div align="center"> | ||
|
||
```mermaid | ||
graph TD | ||
A[AiR] | ||
A --> B[组件] | ||
A --> C[操作系统] | ||
A --> D[服务] | ||
A --> E[状态] | ||
A --> F[用户界面] | ||
B --> B1[数据结构] | ||
C --> C1[macOS/Unix/Windows] | ||
D --> D1[后台进程] | ||
E --> E1[同步] | ||
F --> F1[交互] | ||
``` | ||
|
||
**基于 [egui](https://github.com/emilk/egui),这是一个用纯 Rust 编写的快速跨平台 GUI 工具包。** | ||
</div> | ||
|
||
- **组件** | ||
- 提供程序其他部分使用的基本数据结构和函数。 | ||
- 组件应该是静态的,不要包含任何可变状态。 | ||
- **操作系统** | ||
- 提供与操作系统交互的封装API。 | ||
- 需要在此处理操作系统之间的差异,并以总结、抽象的方式呈现。 | ||
- **服务** | ||
- 提供后台任务能力,使其可以独立于 UI 运行。 | ||
- 服务有一个或多个对缓存组件的要求,以节省系统资源、执行频繁的检查或更新,以及处理时间敏感的任务。 | ||
- 与 UI 设置相关的服务应提供热重载功能,以便在 UI 上更改设置时,立即应用这些更改。 | ||
- 服务应包含中止功能,以停止服务,并且在程序退出时应调用此功能,以防止其停滞。 | ||
- **状态** | ||
- 提供可变性,可以在整个程序中同步和共享。 | ||
- 状态应该是 `Arc<parking_lot::Mutex/RwLock<_>>` 或 `Arc<std::sync::atomic::Atomic*>`。 | ||
- **用户界面** | ||
- 为用户提供与其他部分互动的能力。 | ||
|
||
|
||
## 支持我 | ||
如果您觉得这个项目有帮助,并且希望支持其开发,可以请我喝杯咖啡! | ||
|
||
您的支持非常感谢,并激励我不断改进这个项目。 | ||
|
||
- **法币** | ||
- [Ko-fi](https://ko-fi.com/aurevoirxavier) | ||
- [爱发电](https://afdian.net/a/AurevoirXavier) | ||
- **加密货币** | ||
- **Bitcoin** | ||
- `bc1pedlrf67ss52md29qqkzr2avma6ghyrt4jx9ecp9457qsl75x247sqcp43c` | ||
- **Ethereum** | ||
- `0x3e25247CfF03F99a7D83b28F207112234feE73a6` | ||
- **Polkadot** | ||
- `156HGo9setPcU2qhFMVWLkcmtCEGySLwNqa3DaEiYSWtte4Y` | ||
|
||
感谢您的支持! | ||
|
||
|
||
## 感谢 | ||
我们要向以下项目和贡献者表达由衷的感谢: | ||
- [egui](https://github.com/emilk/egui) 为我们的 GUI 提供了基础。 | ||
- Rust 社区对 Rust 生态系统的持续支持和开发。 | ||
|
||
|
||
## 其他鸣谢 | ||
- 感谢 [OpenAI Translator](https://github.com/openai-translator/openai-translator) 为本工作提供灵感。 | ||
- 通过 [recraft.ai](https://app.recraft.ai) 创建的精彩图标。 | ||
|
||
|
||
<div align="right"> | ||
|
||
#### 许可证 | ||
<sup>根据 [GPL-3.0](LICENSE) 许可进行授权。</sup> | ||
</div> |
Oops, something went wrong.