TextAction 是一个轻量、开源的 Windows AI 划词助手。选中文字后按全局快捷键,即可从浮动菜单中选择“总结、翻译、改写、解释、生成 Prompt”等操作;TextAction 会调用你配置的 OpenAI 兼容 API,并在独立窗口中显示结果。
当前阶段:MVP。项目聚焦“选中 → 选择动作 → 查看结果”这一条核心路径,不包含聊天、知识库、Agent 或账号系统。
- Windows 全局快捷键,默认
Ctrl+Alt+Space - 跨应用获取选中文字,并在光标附近显示操作菜单
- 内置总结、翻译、改写、解释、生成 Prompt 五个模板
- 兼容 OpenAI Chat Completions API
- 一个配置文件管理多个 Provider,不同动作可选择不同 Provider
- 纯文本 Prompt 模板,通过
{{text}}插入所选内容 - 结果窗口支持选择和复制文本
- 键盘操作:方向键选择、
Enter执行、Esc关闭 - 系统托盘可打开配置、打开模板目录或退出应用
选中文字
↓
按 Ctrl+Alt+Space
↓
TextAction 模拟 Ctrl+C 获取所选文本
↓
选择一个 AI 动作
↓
渲染 Prompt 并请求对应 Provider
↓
在结果窗口显示响应
Windows 没有适用于所有桌面应用的统一“读取当前选区”接口,因此 MVP 通过模拟 Ctrl+C 读取剪贴板。部分管理员权限窗口、远程桌面、终端或自定义控件可能不支持该方式。
- Windows 10 或 Windows 11
- 一个支持 OpenAI Chat Completions 格式的 API
- .NET 8 SDK(仅从源码运行或构建时需要)
TextAction 是 WPF 应用,目前仅支持 Windows。
项目发布包使用 win-x64 自包含格式,不要求预先安装 .NET:
- 解压
TextAction-win-x64-v0.1.0.zip。 - 双击
TextAction.exe;首次启动会创建用户配置和五个模板。 - 设置配置引用的 API Key 环境变量并重新启动。
- 在任意支持复制的应用中选中文字,按
Ctrl+Alt+Space。
当前 MVP 构建未做代码签名,Windows SmartScreen 可能显示“未知发布者”。请只运行从本仓库 Release 或你自己构建的文件。
dotnet restore
dotnet build TextAction.sln
dotnet run --project src/TextAction.App/TextAction.App.csproj以上命令在克隆后的仓库根目录运行。
首次启动会在以下目录创建默认配置和五个 Prompt 模板:
%APPDATA%\TextAction\
├── config.json
└── prompts\
├── summary.txt
├── translate.txt
├── rewrite.txt
├── explain.txt
└── prompt.txt
先编辑 config.json,并设置配置所引用的环境变量。动作、Provider 和模板会在后续调用时重新读取;修改全局快捷键或用户环境变量后需要重新启动 TextAction。
下面的示例展示了两个 Provider,以及把不同动作路由到不同 Provider 的方法:
{
"schemaVersion": 1,
"hotkey": {
"modifiers": ["Control", "Alt"],
"key": "Space"
},
"providers": [
{
"id": "primary",
"displayName": "Primary API",
"baseUrl": "https://api.openai.com/v1",
"apiKey": "env:OPENAI_API_KEY",
"model": "gpt-4o-mini",
"timeoutSeconds": 60
},
{
"id": "local-gateway",
"displayName": "Local Gateway",
"baseUrl": "http://127.0.0.1:11434/v1",
"apiKey": "env:TEXTACTION_LOCAL_API_KEY",
"model": "your-model",
"timeoutSeconds": 90
}
],
"actions": [
{
"id": "summary",
"name": "总结",
"description": "提炼核心观点和关键信息",
"providerId": "primary",
"templateFile": "prompts/summary.txt"
},
{
"id": "explain",
"name": "解释",
"description": "用清晰的语言解释所选内容",
"providerId": "local-gateway",
"templateFile": "prompts/explain.txt"
}
]
}在 PowerShell 中设置当前用户的 API Key:
[Environment]::SetEnvironmentVariable(
"OPENAI_API_KEY",
"replace-with-your-key",
"User"
)重新启动 TextAction 后环境变量才会生效。apiKey 也支持直接填写密钥,但这会把密钥以明文保存在磁盘上,不推荐这样做。
配置规则和字段说明见 配置文档。
模板是 UTF-8 纯文本文件,必须且只能包含一个 {{text}}:
请用简体中文总结下面的内容。
要求:
- 提炼核心观点
- 保留重要事实和数字
- 用项目符号输出
{{text}}
新增动作只需:
- 在
%APPDATA%\TextAction\prompts\新建模板文件。 - 在
config.json的actions数组中添加动作。 - 用
providerId指定该动作使用的 Provider。 - 保存文件,再次触发 TextAction。
完整约束与示例见 Prompt 模板文档。
TextAction.sln
├── src/
│ ├── TextAction.App/ # WPF 窗口、全局热键与 Windows 集成
│ └── TextAction.Core/ # 配置、模板渲染与 OpenAI 兼容客户端
├── tests/
│ ├── TextAction.Core.Tests/ # 配置、模板和 API 客户端单元测试
│ └── TextAction.App.Tests/ # Windows 进程生命周期测试
├── docs/ # 配置、模板和设计决策
└── DESIGN.md # UI 设计系统
核心逻辑与 WPF 外壳分离,便于测试,也为未来替换 UI 或增加其他调用入口保留空间。
dotnet build TextAction.sln
dotnet test TextAction.sln创建与 Release 相同规格的自包含包:
dotnet publish src/TextAction.App/TextAction.App.csproj `
-c Release -r win-x64 --self-contained true `
-p:PublishSingleFile=true `
-p:IncludeNativeLibrariesForSelfExtract=true `
-p:EnableCompressionInSingleFile=true项目开发约定见 CONTRIBUTING.md。
- 所选文字会发送给动作指定的第三方 API Provider。发送前请确认内容不含密码、令牌、个人隐私或其他敏感信息。
- TextAction MVP 不包含账号、云同步或产品遥测;应用网络请求只发往用户配置并主动选择的 Provider。
- TextAction 不会让第三方 Provider 变成本地服务;数据如何存储和使用取决于该 Provider 的政策。
- 优先使用
env:VARIABLE_NAME引用 API Key,避免把密钥提交到 Git。 - 只配置你信任的
baseUrl,远程服务优先使用 HTTPS。 - MVP 不提供 Windows Credential Manager 集成;直接写入配置的密钥是明文。
发现安全问题时,请不要公开提交包含利用细节的 Issue,参见 SECURITY.md。
- 仅支持 Windows,且只有深色主题。
- 获取选区依赖模拟
Ctrl+C,不是所有应用和权限边界都能可靠工作。 - 在约 350 毫秒的复制轮询窗口内,其他进程若同时改写剪贴板,TextAction 可能捕获到那次改写;执行 AI 动作前请确认当前选区。
- 当前只支持 OpenAI 兼容的 Chat Completions 响应格式。
- MVP 不提供流式输出、对话历史、OCR、图片理解、自动替换原文或 Provider 管理界面。
- 没有设置界面;全局快捷键和用户环境变量变更后需要重启应用。
路线图按真实使用反馈推进,不承诺时间:
- Windows Credential Manager 密钥存储
- UI Automation 选区读取后备方案
- 可编辑的快捷键和设置界面
- 流式响应与取消请求
- 浅色/跟随系统主题
- 可选的“替换原文”和历史记录
关键取舍记录在 设计决策。
Issue、文档改进和小而清晰的 Pull Request 都欢迎。提交前请先阅读 CONTRIBUTING.md。请勿在 Issue、日志、截图或测试配置中包含真实 API Key 或敏感文本。
MIT License © 2026 TextAction contributors