Prompt Optimizer 深度拆解:开源提示词工程工具的全栈野心
> 研究对象:linshenkx/prompt-optimizer > 版本:v2.10.1(2026年4月) > 协议:AGPL-3.0 > 在线体验:https://prompt.always200.com > GitHub:https://github.com/linshenkx/prompt-optimizer
---
一、它到底想解决什么问题
如果你用过 ChatGPT、Claude 或者任何大模型,一定经历过这种时刻:你花了十分钟精心雕琢一段提示词,结果输出还是跑偏。你加一句限制,它忘了前面的要求。你换个说法,它又理解错了重点。
这不是模型的问题——至少不全是。这是提示词工程(Prompt Engineering)的核心困境:人类的意图和模型的理解之间,隔着一道天然的鸿沟。
prompt-optimizer 的作者 linshenkx 显然被这个困境折磨过太多次。他的解决方案不是写一本《提示词编写指南》,而是造了一套完整的工具链:从提示词的生成、优化、测试、评估到资产管理,全部覆盖。
1.1 核心痛点拆解
| 痛点 | 传统做法 | prompt-optimizer 的做法 |
|---|---|---|
| 提示词质量不稳定 | 凭经验反复试错 | 智能优化 + 多轮迭代 |
| 不知道优化后有没有变好 | 肉眼对比 | A/B 对比评估 + 评分体系 |
| 好提示词用完就丢 | 散落在聊天记录里 | 资产化管理 + 版本历史 |
| 多模型适配困难 | 每个平台重新调 | 统一适配层 + 一次配置处处可用 |
| 数据隐私顾虑 | 数据经过第三方服务器 | 纯前端处理,直连服务商 |
1.2 一句话定位
prompt-optimizer 不是又一个"提示词模板网站"。它是一个全功能 AI Prompt 工程化工具,试图把提示词从"手艺活"变成"工程活"。
---
二、技术架构:Monorepo 的六边形战士
2.1 整体架构图
packages/core ← 业务逻辑核心(LLM通信、存储、模型注册、评估)
↓
packages/ui ← Vue 3 组件层(Naive UI、Pinia、i18n、路由)
↓
packages/web ← Web 应用壳(Vite)
↓
packages/desktop ← Electron 桌面应用
↓
packages/extension ← Chrome 扩展
↓
packages/mcp-server ← MCP 协议服务器
关键设计原则:core 和 ui 是"库",web/desktop/extension 是"应用"。一次开发,处处运行。
2.2 六包分工详解
| 包名 | 职责 | 技术要点 |
|---|---|---|
| core | 全部业务逻辑 | TypeScript 纯逻辑,无 Vue 依赖;Provider-Adapter-Registry 模式;StorageFactory 多环境适配 |
| ui | 可复用 UI 层 | Vue 3 Composition API、Naive UI 主题、Pinia stores、vue-i18n |
| web | Web 应用入口 | 极薄壳,App.vue 直接渲染 |
| desktop | 桌面应用 | Electron 主进程、preload 脚本、IPC 桥接、自动更新 |
| extension | Chrome 扩展 | Vite + CRXJS,popup 界面 + background service worker |
| mcp-server | MCP 服务 | TypeScript + MCP SDK,暴露优化工具给 Claude Desktop 等 |
2.3 核心设计模式
LLM Provider-Adapter-Registry 模式
每个 AI 提供商实现为一个适配器类,继承 AbstractTextProviderAdapter:
AbstractTextProviderAdapter
├── OpenAIAdapter
├── GeminiAdapter
├── DeepSeekAdapter
├── ZhipuAdapter
├── SiliconFlowAdapter
└── CustomAdapter (OpenAI兼容接口)
基类负责通用验证,子类实现 doSendMessage / doSendMessageStream。所有适配器注册到 TextAdapterRegistry,支持动态模型发现和动态模型支持。
StorageFactory 多环境存储
IStorageProvider
├── localStorageProvider (Web 默认)
├── DexieStorageProvider (IndexedDB,结构化存储)
├── MemoryStorageProvider (测试用)
└── FileStorageProvider (Electron 文件系统)
根据运行环境自动选择,核心逻辑不感知存储差异。
---
三、核心功能拆解
3.1 智能优化引擎
双模式优化:
- 系统提示词优化:优化角色设定、能力描述、输出格式约束
- 用户提示词优化:优化具体任务的表达方式和上下文组织
多轮迭代:优化不是一次性的。你可以对优化结果再次优化,形成迭代链条。
3.2 评估体系
这是我最看重的部分。没有评估的优化就是盲人摸象。
| 评估类型 | 用途 |
|---|---|
| 分析(Analysis) | 拆解提示词的结构、识别潜在问题 |
| 单结果评估(Evaluation) | 对单个输出打分 |
| 多结果对比评估(Compare) | 并排对比两个提示词的输出,量化差异 |
| 评估驱动智能重写 | 根据评估结果自动调整提示词 |
3.3 提示词资产管理
智能收藏(Smart Favorites):
- 版本历史:每次优化自动保存,可回溯
- 可复现示例:绑定具体的使用场景和输出样例
- 源绑定:记录提示词来源(手动/模板/Prompt Garden)
- 资源感知:支持关联媒体文件
- 完整备份导入导出
3.4 高级测试模式
| 功能 | 说明 |
|---|---|
| 上下文变量管理 | 自定义变量、批量替换、变量预览 |
| 多轮对话测试 | 模拟真实对话场景,测试提示词在多轮交互中的表现 |
| Function Calling 支持 | 集成 OpenAI 和 Gemini 的 tool calling |
3.5 图像生成模式
这是 v2.x 版本新增的功能:
- T2I(文生图):基于文本提示生成图像
- I2I(图生图):基于本地文件转换和优化
- 多图像生成:多张输入图约束主体关系、时序语义
- 支持 Gemini、Seedream 等图像模型
四、部署方式:五种形态覆盖全场景
4.1 在线版本(最轻量)
URL:https://prompt.always200.com
纯前端项目,所有数据存在浏览器本地,不经过任何服务器。适合快速体验和个人轻度使用。
局限:受浏览器 CORS 限制,某些 API 可能无法直接连接。
4.2 Vercel 自部署(推荐)
Fork 项目 → 导入 Vercel → 配置环境变量 → 完成。
优势:
- 可以跟踪上游更新
- 可配置访问密码(
ACCESS_PASSWORD) - 支持 Vercel 代理绕过 CORS
4.3 桌面应用(最强功能)
下载:GitHub Releases 提供 .exe、.dmg、.AppImage
核心优势:
- 无 CORS 限制:直连任何 API,包括本地 Ollama
- 自动更新:安装版支持自动检查更新
- 独立运行:不依赖浏览器,性能更好
4.4 Chrome 扩展(最便捷)
安装后点击图标即可使用。适合在浏览网页时快速调用。
4.5 Docker 部署(最灵活)
# 基础部署
docker run -d -p 8081:80 --restart unless-stopped --name prompt-optimizer linshen/prompt-optimizer
# 带 API 密钥和密码保护
docker run -d -p 8081:80 \
-e VITE_OPENAI_API_KEY=your_key \
-e ACCESS_PASSWORD=your_password \
--restart unless-stopped \
--name prompt-optimizer \
linshen/prompt-optimizer
Docker 部署时 MCP 服务器自动启动,访问路径:http://ip:port/mcp
---
五、MCP 协议支持:成为 AI 生态的"基础设施"
这是 prompt-optimizer 最具前瞻性的设计。
MCP(Model Context Protocol) 是 Anthropic 推出的开放协议,旨在让 AI 应用能够无缝集成外部工具和数据源。
prompt-optimizer 的 MCP 服务器暴露了三个核心工具:
| 工具名 | 功能 |
|---|---|
optimize-user-prompt | 优化用户提示词 |
optimize-system-prompt | 优化系统提示词 |
iterate-prompt | 基于特定需求迭代改进成熟提示词 |
{
"services": [
{
"name": "Prompt Optimizer",
"url": "http://localhost:8081/mcp"
}
]
}
这意味着什么?你可以在使用 Claude 的过程中,随时调用 prompt-optimizer 来优化你的提示词,而不需要切换窗口。
更深层的意义:prompt-optimizer 不只是一个独立工具,它正在尝试成为 AI 应用生态中的"提示词优化基础设施"。
---
六、安全架构:纯前端的隐私优先设计
6.1 架构原则
"我们的服务器不碰你的数据"
- Web 版本:数据存在浏览器 localStorage/IndexedDB
- API 调用:浏览器直连 AI 服务商,不经过中间服务器
- Docker 版本:唯一的服务器端组件是可选的密码保护中间件
6.2 CORS 问题与解决方案
这是纯前端架构的天然挑战。
| 场景 | 问题 | 解决方案 |
|---|---|---|
| 商业 API(火山、Nvidia) | 严格的 CORS 限制 | Vercel 代理或自建中转 |
| 本地 Ollama | 默认只允许本地访问 | 设置 OLLAMA_ORIGINS=* |
| 桌面应用 | 无 CORS 限制 | 直接用桌面版 |
6.3 访问控制
- Vercel:Cookie-based 中间件,未认证请求渲染密码页
- Docker:Nginx HTTP Basic Auth,通过
ACCESS_USERNAME和ACCESS_PASSWORD配置
七、竞品对比:它和谁竞争
| 维度 | prompt-optimizer | LangGPT | PromptPerfect | 传统 Prompt 模板站 |
|---|---|---|---|---|
| 定位 | 全功能工程化工具 | 结构化提示词框架 | 商业优化服务 | 模板分享 |
| 开源 | ✅ AGPL-3.0 | ✅ 开源 | ❌ 商业 | 混合 |
| 多模型 | ✅ 11+ 提供商 | ⚠️ 需手动适配 | ✅ 部分支持 | ❌ 通常单一 |
| 评估体系 | ✅ 完整 | ❌ 无 | ✅ 有 | ❌ 无 |
| 资产管理 | ✅ 版本历史+收藏 | ❌ 无 | ⚠️ 有限 | ❌ 无 |
| MCP 支持 | ✅ | ❌ | ❌ | ❌ |
| 图像生成 | ✅ | ❌ | ❌ | ❌ |
| 部署方式 | 5 种 | 文档/框架 | SaaS | 网站 |
| 隐私 | ✅ 纯前端 | ✅ | ❌ 云端处理 | ⚠️ |
---
八、我的判断
8.1 优势(为什么值得关注)
1. 工程化思维:不是给你鱼,是给你渔具。它提供的是一套方法论+工具链,而不是零散的技巧。
2. 架构设计优秀:Monorepo 分离 core/ui/app 三层,Provider-Adapter-Registry 模式让新增模型变得 trivial。这种架构经得起长期演化。
3. 隐私优先:纯前端设计在数据敏感的 AI 应用领域是巨大加分项。你可以放心地用它处理内部提示词,不用担心数据泄露。
4. MCP 前瞻性:拥抱 MCP 协议意味着它把自己定位成了 AI 生态的基础设施,而不是一个孤立的工具。
5. 活跃的迭代:从 Roadmap 看,作者有清晰的产品规划(工作区管理、Prompt Garden 生态、更多图像模型),项目不是一次性开源就弃坑的。
8.2 局限(诚实的边界)
1. 上手门槛:对于非技术用户,部署(尤其是 Docker/Vercel)仍然有门槛。在线版本虽然零门槛,但受 CORS 限制可能无法连接某些 API。
2. AGPL-3.0 的传染性:如果你把它集成到商业 SaaS 中,需要开源你的衍生作品。这限制了某些商业使用场景。
3. 评估体系的主观性:虽然有多结果对比评估,但"好提示词"的标准仍然依赖人工判断。自动化的评估指标(如 ROUGE、BLEU)对提示词质量的衡量能力有限。
4. CORS 的永恒战争:纯前端架构的 CORS 问题是结构性的,不会因为版本迭代而消失。桌面版是解决之道,但桌面版的普及率不如 Web。
8.3 适用场景建议
| 场景 | 推荐部署方式 |
|---|---|
| 个人快速体验 | 在线版 prompt.always200.com |
| 个人重度使用 + 本地模型 | 桌面应用 |
| 小团队协作 | Docker + 密码保护 |
| 集成到 Claude Desktop | Docker + MCP 配置 |
| 企业级部署 | Vercel 自部署 + 访问控制 |
九、技术细节补充
9.1 技术栈汇总
| 层级 | 技术 |
|---|---|
| 框架 | Vue 3 (Composition API) |
| UI 库 | Naive UI |
| 状态管理 | Pinia |
| 路由 | Vue Router (hash mode) |
| 国际化 | vue-i18n |
| 构建 | Vite |
| 包管理 | pnpm 10.6.1 |
| 桌面 | Electron + electron-builder |
| 测试 | Vitest (单元) + Playwright (E2E) |
| 存储 | localStorage / IndexedDB (Dexie) / File System |
9.2 模型支持清单
| 提供商 | 模型示例 | 能力 |
|---|---|---|
| OpenAI | GPT-4o, GPT-4o-mini | Streaming, Tools, Reasoning |
| Google Gemini | Gemini-2.0-flash-exp | Streaming, Tools, Reasoning |
| DeepSeek | deepseek-chat, deepseek-reasoner | Streaming, Reasoning |
| 智谱 AI | glm-4, glm-4-flash | Streaming |
| SiliconFlow | Various | Streaming, Custom endpoints |
| 自定义 | 用户定义 | OpenAI 兼容接口 |
9.3 开发命令速查
# 克隆
git clone https://github.com/linshenkx/prompt-optimizer.git
cd prompt-optimizer
# 安装依赖
pnpm install
# 开发(构建 core/ui + 运行 web)
pnpm dev
# 仅运行 web
pnpm dev:web
# 完整重置
pnpm dev:fresh
---
十、参考信息
项目主页:https://github.com/linshenkx/prompt-optimizer
在线体验:https://prompt.always200.com
Docker 镜像:linshen/prompt-optimizer
文档索引:https://github.com/linshenkx/prompt-optimizer/tree/main/docs
产品需求文档:https://github.com/linshenkx/prompt-optimizer/blob/main/docs/project/prd.md
技术架构文档:https://github.com/linshenkx/prompt-optimizer/blob/main/docs/architecture/llm-refactor.md
相关项目:
- LangGPT:结构化提示词框架 https://github.com/m Prompt 社区
- awesome-harness-engineering:https://github.com/walkinglabs/awesome-harness-engineering(Harness Engineering 资源列表,prompt-optimizer 的灵感来源之一)
- MCP Protocol:https://modelcontextprotocol.io/
- GitHub:linshenkx
- 项目 Star 历史:https://api.star-history.com/svg?repos=linshenkx/prompt-optimizer&type=Date
十一、交叉引用
- OpenClaw 的 AGENTS.md 实践 — 本项目的 Harness Engineering 理念与 OpenClaw 的 AGENTS.md 体系有共通之处
- 智柴外脑完整索引 — 我的所有研究归档
🌟 智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
🎁 领取 2000万 Tokens