通用MCP客户端
下载
从 发布页面 下载 Witsy。
在 macOS 上,您也可以使用 brew install --cask witsy 进行安装。
Witsy 是什么?
Witsy 是一款 BYOK(自带密钥)AI 应用:这意味着您需要为想要使用的 LLM 提供商准备 API 密钥。或者, 您可以使用 Ollama 在您的机器上免费运行模型,并在 Witsy 中使用它们。
它是极少数(仅此一个?)通用 MCP 客户端之一:
Witsy 允许您使用几乎任何 LLM 运行 MCP 服务器!
支持的 AI 提供商
| 功能 | 提供商 |
|---|---|
| 聊天 | OpenAI, Anthropic, Google (Gemini), xAI (Grok), Meta (Llama), Ollama, LM Studio, MistralAI, DeepSeek, OpenRouter, Groq, Cerebras, Azure OpenAI, 任何支持 OpenAI API 标准的提供商(例如 together.ai) |
| 图像创建 | OpenAI, Google, xAI, Replicate, fal.ai, HuggingFace, Stable Diffusion WebUI |
| 视频创建 | OpenAI, Google, Replicate, fal.ai |
| 文本转语音 | OpenAI, ElevenLabs, Groq, fal.ai |
| 语音转文本 | OpenAI (Whisper), fal.ai, Fireworks.ai, Gladia, Groq, nVidia, Speechmatics, Local Whisper, Soniox (实时和异步) 任何支持 OpenAI API 标准的提供商 |
| 搜索引擎 | Perplexity, Tavily, Brave, Exa, Local Google Search |
| MCP 仓库 | Smithery.ai |
| 嵌入 | OpenAI, Ollama |
非详尽功能列表:
- 支持视觉模型的聊天完成(描述图像)
- 文本转图像和文本转视频
- 图像转图像(图像编辑)和图像转视频
- LLM 插件增强 LLM:执行 Python 代码,搜索互联网...
- Anthropic MCP 服务器支持
- 交互式创建最佳内容的草稿板,使用任何模型!
- 任何应用程序中的提示功能,允许直接生成内容
- 在几乎任何应用程序中可运行的 AI 命令
- 专家提示,使您的机器人专注于特定主题
- 长期记忆插件,提高 LLM 回答的相关性
- 助手消息朗读
- 其他应用程序中任何文本的朗读
- 与您的本地文件和文档聊天(RAG)
- 转录/听写(语音转文本)
- 实时聊天(语音模式)
- Anthropic 计算机使用支持
- 对话历史记录(自动生成标题)
- 生成的代码格式化和复制到剪贴板
- 对话 PDF 导出
- 图像复制和下载
设置
您可以从 发布页面 下载二进制文件或自行构建:
npm ci
npm start
前置条件
要使用 OpenAI、Anthropic、Google 或 Mistral AI 模型,您需要输入您的 API 密钥:
要使用 Ollama 模型,您需要安装 Ollama 并下载一些 模型。
要使用文本转语音,您需要一个
要使用互联网搜索,您需要一个 Tavily API 密钥。
任何地方的提示
在任何应用程序中生成内容:
- 从任何应用程序中的可编辑内容
- 按下 Prompt Anywhere 快捷键(Shift+Control+Space / ^⇧Space)
- 在弹出的窗口中输入您的提示
- 观察 Witsy 直接在您的应用程序中输入文本!
在 Mac 上,您可以定义一个专家,它将根据当前前景应用程序自动触发。例如,如果您有一个用于生成 Linux 命令的专家,当您从终端应用程序触发 Prompt Anywhere 时,它将被选中!
AI 命令
AI 命令是可通过快捷键访问的快速助手,利用 LLM 提高您的生产力:
- 在任何应用程序中选择任何文本
- 按下 AI 命令快捷键(Alt+Control+Space / ⌃⌥Space)
- 选择一个命令,让 LLM 献出魔法!
您还可以使用您喜欢的提示创建自定义命令!
灵感来自 https://the.fibery.io/@public/Public_Roadmap/Roadmap_Item/AI-Assistant-via-ChatGPT-API-170。
专家
https://github.com/f/awesome-chatgpt-prompts。
草稿板
https://www.youtube.com/watch?v=czcSbG2H-wg
与您的文档聊天(RAG)
您可以将每个聊天连接到一个文档仓库:Witsy 将首先在您的本地文件中搜索相关文档,并将这些信息提供给 LLM。为此:
- 点击提示左侧的数据库图标
- 点击管理,然后创建文档仓库
- OpenAI 嵌入需要 API 密钥,Ollama 需要嵌入模型
- 点击窗口右侧的 + 按钮添加文档
- 创建文档仓库后,再次点击数据库图标并选择您要使用的文档仓库。图标应变为蓝色
转录/听写(语音转文本)
您可以将麦克风录制的音频转录为文本。转录可以使用各种最先进的语音转文本模型完成(这些模型需要 API 密钥),或者使用本地 Whisper 模型(需要下载大文件)。
目前 Witsy 支持以下语音转文本模型:
- GPT4o-Transcribe
- Gladia
- Speechmatics (标准 + 增强)
- Groq Whisper V3
- Fireworks.ai 实时转录
- fal.ai Wizper V3
- fal.ai ElevenLabs
- nVidia Microsoft Phi-4 多模态
Witsy 支持快速快捷键,因此您的转录始终只需一键即可完成。
转录完成后,您可以:
- 复制到您的剪贴板
- 总结它
- 翻译成任何语言
- 插入您之前正在运行的应用程序中
Anthropic 计算机使用
https://www.youtube.com/watch?v=vixl7I07hBk
HTTP API
Witsy 提供了一个本地 HTTP API,允许外部应用程序触发各种命令和功能。API 服务器默认在 localhost 上运行在端口 8090(如果 8090 正在使用,则使用下一个可用端口)。
安全提示: HTTP 服务器默认仅在本地运行。如果您需要外部访问,请考虑使用具有适当身份验证的反向代理。
查找服务器端口
当前 HTTP 服务器端口显示在设置选项下方的托盘菜单中:
- macOS/Linux: 检查菜单栏中的钢笔图标
- Windows: 检查系统托盘中的钢笔图标
可用端点
所有端点都支持 GET(带查询参数)和 POST(带 JSON 或表单编码正文)请求。
| 端点 | 描述 | 可选参数 |
|---|---|---|
GET /api/health | 服务器健康检查 | - |
GET/POST /api/chat | 在聊天视图打开主窗口 | text - 预填聊天输入 |
GET/POST /api/scratchpad | 打开草稿板 | - |
GET/POST /api/settings | 打开设置窗口 | - |
GET/POST /api/studio | 打开设计工作室 | - |
GET/POST /api/forge | 打开代理锻造 | - |
GET/POST /api/realtime | 打开实时聊天(语音模式) | - |
GET/POST /api/prompt | 触发 Prompt Anywhere | text - 预填提示 |
GET/POST /api/command | 触发 AI 命令选择器 | text - 预填命令文本 |
GET/POST /api/transcribe | 开始转录/听写 | - |
GET/POST /api/readaloud | 开始朗读 | - |
GET /api/engines | 列出可用的 AI 引擎 | 返回配置的聊天引擎 |
GET /api/models/:engine | 列出某个引擎的模型 | 返回指定引擎的可用模型 |
POST /api/complete | 运行聊天完成 | stream (默认: true), engine, model, thread (Message[]) |
GET/POST /api/agent/run/:token | 通过 webhook 触发代理执行 | 查询参数作为提示输入传递 |
GET /api/agent/status/:token/:runId | 检查代理执行状态 | 返回状态、输出和错误 |
示例用法
# 健康检查
curl http://localhost:8090/api/health
# 带预填文本打开聊天(GET 带查询参数)
curl "http://localhost:8090/api/chat?text=Hello%20World"
# 带预填文本打开聊天(POST 带 JSON)
curl -X POST http://localhost:8090/api/chat \
-H "Content-Type: application/json" \
-d '{"text":"Hello World"}'
# 触发 Prompt Anywhere 带文本
curl "http://localhost:8090/api/prompt?text=Write%20a%20poem"
# 在选中文本上触发 AI 命令
curl -X POST http://localhost:8090/api/command \
-H "Content-Type: application/json" \
-d '{"text":"selected text to process"}'
# 通过 webhook 触发代理带参数
curl "http://localhost:8090/api/agent/run/abc12345?input1=value1&input2=value2"
# 使用 POST JSON 触发代理
curl -X POST http://localhost:8090/api/agent/run/abc12345 \
-H "Content-Type: application/json" \
-d '{"input1":"value1","input2":"value2"}'
# 检查代理执行状态
curl "http://localhost:8090/api/agent/status/abc12345/run-uuid-here"
# 列出可用引擎
curl http://localhost:8090/api/engines
# 列出特定引擎的模型
curl http://localhost:8090/api/models/openai
# 运行非流式聊天完成
curl -X POST http://localhost:8090/api/complete \
-H "Content-Type: application/json" \
-d '{
"stream": "false",
"engine": "openai",
"model": "gpt-4",
"thread": [
{"role": "user", "content": "Hello, how are you?"}
]
}'
# 运行流式聊天完成(SSE)
curl -X POST http://localhost:8090/api/complete \
-H "Content-Type: application/json" \
-d '{
"stream": "true",
"thread": [
{"role": "user", "content": "Write a short poem"}
]
}'
命令行界面
Witsy 包含一个命令行界面,允许您直接从终端与 AI 助手交互。
安装
当您第一次启动 Witsy 时,CLI 会自动安装:
- macOS: 在
/usr/local/bin/witsy创建一个链接(需要管理员密码) - Windows: 将 CLI 添加到您的用户路径(重启终端以使更改生效)
- Linux: 在
/usr/local/bin/witsy创建一个链接(如果需要,使用 pkexec)
使用
安装后,您可以从任何终端使用 witsy 命令:
witsy
CLI 将连接到您的正在运行的 Witsy 应用程序并提供交互式聊天界面。它使用与您的桌面应用程序相同的配置(引擎、模型、API 密钥)。
可用命令
/help- 显示可用命令/model- 选择引擎和模型/port- 更改服务器端口(默认: 4321)/clear- 清除对话历史记录/history- 显示对话历史记录/exit- 退出 CLI
要求
- Witsy 桌面应用程序必须正在运行(用于 HTTP API 服务器)
- HTTP API 服务器已启用(默认端口: 4321)
CLI 聊天完成 API
/api/complete 端点提供程序访问 Witsy 的聊天完成功能,使命令行工具和脚本能够与任何配置的 LLM 交互。
端点: POST /api/complete
请求正文:
{
"stream": "true", // 可选: "true" (默认) 用于 SSE 流式传输, "false" 用于 JSON 响应
"engine": "openai", // 可选: 默认为设置中的配置引擎
"model": "gpt-4", // 可选: 默认为引擎的配置模型
"thread": [ // 必需: 消息数组
{"role": "user", "content": "您的提示"}
]
}
响应(非流式,stream: "false"):
{
"success": true,
"response": {
"content": "助手回复的文本",
"usage": {
"promptTokens": 10,
"completionTokens": 20,
"totalTokens": 30
}
}
}
响应(流式,stream: "true"):
服务器发送事件 (SSE) 格式,包含块:
data: {"type":"content","text":"Hello","done":false}
data: {"type":"content","text":" world","done":false}
data: [DONE]
列出引擎:
curl http://localhost:8090/api/engines
响应:
{
"engines": [
{"id": "openai", "name": "OpenAI"},
{"id": "anthropic", "name": "Anthropic"},
{"id": "google", "name": "Google"}
]
}
列出引擎的模型:
curl http://localhost:8090/api/models/openai
响应:
{
"engine": "openai",
"models": [
{"id": "gpt-4", "name": "GPT-4"},
{"id": "gpt-3.5-turbo", "name": "GPT-3.5 Turbo"}
]
}
命令行界面 (CLI)
Witsy 包含一个命令行界面,用于直接从终端与 AI 模型交互。
要求:
- Witsy 应用程序必须正在运行(用于 HTTP API 服务器)
启动 CLI:
npm run cli
输入 /help 显示命令列表
代理 webhook
代理 webhook 允许您通过 HTTP 请求触发代理执行,从而实现与外部系统、自动化工具或自定义工作流的集成。
工作原理
设置 webhook:
- 打开 Agent Forge 并选择或创建代理
- 导航到“调用”选项卡(向导的最后一个步骤)
- 勾选“🌐 Webhook”复选框
- 系统会自动为您的代理生成一个唯一的 8 字符令牌
- 复制显示的 webhook URL(格式:
http://localhost:{port}/api/agent/run/{token}) - 您可以使用刷新按钮随时重新生成令牌
使用 webhook:
- 向 webhook URL 发送 GET 或 POST 请求
- 将参数作为查询字符串(GET)或 JSON 正文(POST)包含
- 参数将自动传递给代理的提示作为输入变量
- 代理必须定义提示变量(例如,
{task},{name})才能接收参数 - webhook 会立即返回,并提供
runId和statusUrl以检查执行状态
示例代理提示:
请处理以下任务: {task}
用户: {user}
优先级: {priority}
触发代理:
# 使用 GET 带查询参数
curl "http://localhost:8090/api/agent/run/abc12345?task=backup&user=john&priority=high"
# 使用 POST 带 JSON
curl -X POST http://localhost:8090/api/agent/run/abc12345 \
-H "Content-Type: application/json" \
-d '{"task":"backup","user":"john","priority":"high"}'
运行响应:
{
"success": true,
"runId": "550e8400-e29b-41d4-a716-446655440000",
"statusUrl": "/api/agent/status/abc12345/550e8400-e29b-41d4-a716-446655440000"
}
检查执行状态:
# 使用 webhook 响应中的 statusUrl(相对路径)
curl "http://localhost:8090/api/agent/status/abc12345/550e8400-e29b-41d4-a716-446655440000"
状态响应(运行中):
{
"success": true,
"runId": "550e8400-e29b-41d4-a716-446655440000",
"agentId": "agent-uuid",
"status": "running",
"createdAt": 1234567890000,
"updatedAt": 1234567900000,
"trigger": "webhook"
}
状态响应(成功):
{
"success": true,
"runId": "550e8400-e29b-41d4-a716-446655440000",
"agentId": "agent-uuid",
"status": "success",
"createdAt": 1234567890000,
"updatedAt": 1234567950000,
"trigger": "webhook",
"output": "成功为用户 john 备份,优先级为 high"
}
状态响应(错误):
{
"success": true,
"runId": "550e8400-e29b-41d4-a716-446655440000",
"agentId": "agent-uuid",
"status": "error",
"createdAt": 1234567890000,
"updatedAt": 1234567999000,
"trigger": "webhook",
"error": "无法连接到备份服务器"
}
TODO
- 工作区 / 项目(无论名称是什么)
- 正确的数据库(SQLite3)存储(??)
WIP
已完成
- [x]
- OpenAI Sora 支持
- Google Nano Banana 支持
- 命令行界面
- 用于命令 Witsy 的 HTTP 服务器,触发代理
- 表格渲染为工件,下载为 CSV 和 XSLX
- 菜单栏中的 Web 应用
- Perplexity 搜索 API 支持
- 设计工作室绘图
- MCP 授权支持
- 实现 Soniox 用于 STT
- OpenAI GPT-5 支持
- 代理(多步骤、调度...)
- 文档仓库文件更改监控
- OpenAI API 响应(o3-pro)
- ChatGPT 历史记录导入
- 欢迎体验
- 添加、编辑和删除系统提示
- 数据和设置备份/恢复
- 转录本地音频文件
- DeepResearch
- 本地文件系统访问插件
- 流式传输时关闭 markdown
- 多个附件
- 自定义 OpenAI STT 支持
- AI 命令复制/插入/替换快捷键
- 文件夹级别的默认设置
- 聊天工具选择
- 使用 Speechmatics 的实时 STT
- Meta/Llama AI 支持
- 使用 Fireworks 的实时 STT
- OpenAI 图像生成
- Azure AI 支持
- Brave 搜索插件
- 允许用户输入模型用于嵌入
- 自定义引擎的用户定义参数
- 直接语音转文本复选框
- 主页上的快速访问按钮
- fal.ai 支持(语音转文本、文本转图像和文本转视频)
- 调试控制台
- 设计工作室
- i18n
- Mermaid 图表渲染
- Smithery.ai MCP 集成
- 模型上下文协议
- 本地 Web 搜索
- 模型默认值
- 语音转文本语言
- 模型参数(温度...)
- 喜爱的模型
- ElevenLabs 文本转语音
- 自定义引擎(OpenAI 兼容)
- 长期记忆插件
- OpenRouter 支持
- DeepSeek 支持
- 文件夹模式
- 所有指令自定义
- 分叉聊天(可选 LLM 切换)
- 实时聊天
- Replicate 视频生成
- Together.ai 兼容性
- Gemini 2.0 Flash 支持
- Groq LLama 3.3 支持
- xAI Grok 视觉模型支持
- Ollama 函数调用
- Replicate 图像生成
- AI 命令重新设计
- 令牌使用报告
- OpenAI o1 模型支持
- Groq 视觉支持
- 图像调整选项
- Llama 3.2 视觉支持
- YouTube 插件
- Scratchpad 中的 RAG
- Hugging face 图像生成
- 显示用于图像生成的提示
- 重新设计的提示窗口
- Anthropic 计算机使用
- 自动更新重构(仍然没有 Windows)
- 深色模式
- 对话模式
- Google 函数调用
- Anthropic 函数调用
- Scratchpad
- 听写:OpenAI Whisper + Whisper WebGPU
- 根据最前应用程序自动选择专家(仅限 Mac)
- Cerebras 支持
- 本地文件 RAG
- Groq 模型更新(2024年9月8日)
- 聊天 PDF 导出
- 提示重命名为专家。现在可编辑。
- 朗读
- 导入/导出命令
- Anthropic Sonnet 3.5
- Ollama 基址作为设置
- OpenAI 基址作为设置
- DALL-E 作为工具
- Google Gemini API
- 任何地方的提示
- 取消命令
- GPT-4o 支持
- 命令的默认引擎/模型不同
- 文本附件(TXT、PDF、DOCX、PPTX、XLSX)
- MistralAI 函数调用
- 自动更新
- 历史记录日期部分
- 多选删除
- 搜索
- Groq API
- 自定义提示
- 沙盒和上下文隔离
- 应用程序菜单
- 提示历史记录导航
- Ollama 模型拉取
- macOS 签名
- 长文本高亮时修复
- AI 命令快捷键
- 使用 Shift 切换 AI 命令行为
- 运行工具时显示用户反馈
- 下载互联网内容插件
- Tavily 互联网搜索插件
- Python 代码执行插件
- LLM 工具支持(仅限 OpenAI)
- Mistral AI API 集成
- LaTeX 渲染
- Anthropic API 集成
- 图像生成作为 b64_json
- 文本转语音
- 日志文件 (electron-log)
- 对话语言设置
- 在提示中粘贴图像
- 使用默认模型运行命令
- 模型刷新
- 编辑命令
- 自定义命令
- 对话菜单(信息、保存...)
- 对话深度设置
- 将附件保存到磁盘
- 在系统托盘中保持运行
- 更好的图标(仍然临时)
- 重命名对话
- 复制/编辑消息
- 为 AI 命令创建新的聊天窗口
- 带快捷键的 AI 命令
- 自动切换到视觉模型
- 登录时运行
- 快捷键编辑器
- 聊天字体大小设置
- 视觉图像附件
- 停止响应流式传输
- 保存/恢复窗口位置
- Ollama 支持
- 查看图像全屏
- 状态/托盘栏图标 + 全局快捷键以调用
- 聊天主题
- 设置中的默认指令
- 将 DALL-E 图像保存在本地(并正确删除)
- 设置中的 OpenAI 链接
- 复制代码按钮
- 聊天列表排序
- OpenAI 模型选择
- CSS 变量
通用MCP客户端
下载
从 发布页面 下载 Witsy。
在 macOS 上,您也可以使用 brew install --cask witsy 进行安装。
Witsy 是什么?
Witsy 是一款 BYOK(自带密钥)AI 应用:这意味着您需要为想要使用的 LLM 提供商准备 API 密钥。或者, 您可以使用 Ollama 在您的机器上免费运行模型,并在 Witsy 中使用它们。
它是极少数(仅此一个?)通用 MCP 客户端:
Witsy 允许您使用几乎任何 LLM 运行 MCP 服务器!
支持的 AI 提供商
| 功能 | 提供商 |
|---|---|
| 聊天 | OpenAI, Anthropic, Google (Gemini), xAI (Grok), Meta (Llama), Ollama, LM Studio, MistralAI, DeepSeek, OpenRouter, Groq, |