第 10 课:进阶扩展
学完了,可以做什么?
你已经掌握了一个完整的"AI 桌面应用"的开发模式。这一课讲讲怎么把它改造成你自己的产品。
扩展一:添加预设模板
最简单的改进:让用户点击常用模板,而不是每次都打字。
// 在 ChatInterface 或 MessageInput 里添加快捷按钮
const TEMPLATES = [
{ label: '📊 月度预算表', prompt: '创建一个月度预算表,包含收入、支出分类、结余,有图表' },
{ label: '💪 健身打卡', prompt: '创建一个健身打卡表,包含日期、运动项目、时长、卡路里' },
{ label: '📈 销售报表', prompt: '创建一个季度销售报表,按产品和地区分类,有同比增长' },
{ label: '📋 项目进度', prompt: '创建一个项目进度跟踪表,包含任务、负责人、截止日期、状态' },
];
// 渲染快捷按钮
{TEMPLATES.map(t => (
<button onClick={() => sendMessage(t.prompt)}>
{t.label}
</button>
))}
用户一点就能生成常用的 Excel 模板,体验大幅提升。
扩展二:修改系统提示词
编辑 agent/CLAUDE.MD 来改变 AI 的行为。
添加行业特定规范
# 财务报表规范
当生成财务类 Excel 时,遵守以下额外规范:
- 所有金额单位统一为人民币(¥)
- 数字格式使用千位分隔符:#,##0.00
- 负数用红色显示
- 每个工作表都要有打印区域设置
- 表头行高度设为 25,数据行设为 20
添加公司品牌
# 品牌规范
所有生成的 Excel 应遵守公司品牌规范:
- 标题行使用公司蓝色(#003A70)
- 字体统一使用 Microsoft YaHei(微软雅黑)
- 第一行留空用于公司 Logo
- 最后一行添加"Confidential - Internal Use Only"
扩展三:添加新的技能
添加图表生成技能
在 agent/.claude/skills/ 下创建新技能:
agent/.claude/skills/
├── xlsx/ ← 已有的 Excel 技能
└── charts/ ← 新增的图表技能
└── SKILL.md
---
name: charts
description: "Excel 图表生成规范"
---
# 图表生成规范
## 支持的图表类型
- 柱状图(BarChart)
- 折线图(LineChart)
- 饼图(PieChart)
- 散点图(ScatterChart)
## 使用 openpyxl 创建图表
\`\`\`python
from openpyxl.chart import BarChart, Reference
chart = BarChart()
chart.title = "月度销售"
chart.y_axis.title = "金额(万元)"
chart.x_axis.title = "月份"
chart.style = 10 # 内置样式
data = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=13)
cats = Reference(ws, min_col=1, min_row=2, max_row=13)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
chart.shape = 4
ws.add_chart(chart, "F2")
\`\`\`
## 图表设计原则
- 每个图表都要有标题
- 坐标轴要有标签
- 颜色使用品牌色(蓝色系列)
- 图表大小:宽 15 单位,高 10 单位
扩展四:支持更多文件格式
当前只检测 .xlsx 和 .csv。可以扩展到更多格式:
// main.ts —— 修改文件检测逻辑
const SUPPORTED_OUTPUTS = ['.xlsx', '.csv', '.pdf', '.html', '.png'];
const newFiles = finalFiles.filter(f =>
!initialFiles.has(f) &&
SUPPORTED_OUTPUTS.some(ext => f.endsWith(ext))
);
// MessageInput.tsx —— 修改上传文件类型
const ACCEPTED_TYPES = [
'.xlsx', '.xls', '.csv', // 表格
'.pdf', // PDF
'.docx', '.doc', // Word
'.json', // JSON 数据
'.txt', // 纯文本
];
扩展五:添加对话历史
当前每次对话是独立的。可以加上"记住上下文"的功能:
// 维护对话历史
const conversationHistory: string[] = [];
ipcMain.on('claude-code:query', async (event, { content }) => {
conversationHistory.push(content);
// 把历史上下文也传给 AI
const contextPrompt = conversationHistory.length > 1
? `Previous conversation context:\n${conversationHistory.slice(-5).join('\n')}\n\nCurrent request: ${content}`
: content;
const queryIterator = query({
prompt: contextPrompt,
// ...
});
});
这样用户就可以说"把上次做的表格加一列'备注'"。
扩展六:打包发布
把应用打包成可以分发的安装包:
# 构建生产版本
npm run build
# 打包成安装程序
npm run package
# 输出位置:
# Mac: release/build/ElectronReact-x.x.x.dmg
# Windows: release/build/ElectronReact Setup x.x.x.exe
# Linux: release/build/ElectronReact-x.x.x.AppImage
打包配置在 package.json 的 build 部分:
"build": {
"productName": "Excel AI Assistant",
"appId": "com.yourcompany.excel-ai",
"mac": {
"category": "public.app-category.productivity"
},
"win": {
"target": "nsis"
},
"linux": {
"target": "AppImage"
}
}
扩展七:从 Electron 改为 Web 应用
如果你想把桌面应用改成 Web 应用:
需要改的部分:
1. 去掉 Electron
- 主进程的 IPC 改为 HTTP API(Express/Fastify)
- 文件操作改为服务器端处理
2. 前端基本不变
- React 组件可以直接复用
- IPC 调用改为 fetch() / axios
3. 后端新增
- Express 服务器
- 文件上传 API(multer)
- 文件下载 API
- WebSocket(用于流式消息)
架构变化:
Electron: React ←IPC→ Node.js ← SDK
Web: React ←HTTP/WS→ Express ← SDK
你学到的核心模式
这套教程涵盖了构建 AI 桌面应用的完整知识:
┌────────────────────────────────────────────────┐
│ AI 桌面应用的通用框架 │
│ │
│ 前端层 │
│ ├── 聊天界面(消息列表 + 输入框) │
│ ├── 工具展示(实时显示 AI 在做什么) │
│ ├── 文件管理(上传 + 下载) │
│ └── 任务展示(Todo 列表) │
│ │
│ 桥梁层 │
│ ├── IPC 通信(或 HTTP/WebSocket) │
│ ├── 文件路由(上传保存 + 输出检测) │
│ └── 错误处理 + 任务取消 │
│ │
│ AI 层 │
│ ├── Claude Agent SDK(query()) │
│ ├── 技能系统(SKILL.md) │
│ ├── 工具箱(Bash、Write、Read 等) │
│ └── 代码生成模式(写代码 → 执行 → 产出文件) │
└────────────────────────────────────────────────┘
行动建议
- 先跑通原项目:确保
npm start能正常工作 - 加几个模板按钮:最简单的改进,立竿见影
- 修改系统提示词:适配你自己的业务场景
- 添加新技能:图表、PDF、PPT……
- 打包发布:给同事或客户用
总结
10 课教程,从"这是什么"到"怎么改造成自己的产品",完整闭环:
| 课次 | 学了什么 | 关键词 |
|---|---|---|
| 01 | 项目全貌 | 聊天 → AI 生成 Excel → 下载 |
| 02 | 环境搭建 | Node.js + Python + Claude CLI |
| 03 | 整体架构 | React + Electron + SDK 三层 |
| 04 | SDK 集成 | query() 在桌面应用里的用法 |
| 05 | 前端界面 | 聊天组件、工具展示、文件上传 |
| 06 | 主进程 | IPC、文件管理、消息路由 |
| 07 | xlsx 技能 | 公式优先、零错误、颜色规范 |
| 08 | 生成模式 | Python + openpyxl → .xlsx |
| 09 | 完整实战 | 一个请求的 7 站旅程 |
| 10 | 进阶扩展 | 模板、新技能、打包、Web 化 |
核心公式不变:好的提示词 + 合适的工具 + 专业的技能 + 漂亮的界面 = AI 产品
这次多了"漂亮的界面"——这也是把技术 Demo 变成真正产品的关键一步。
祝你做出自己的 AI 办公助手!