你已经掌握了一个完整的"AI 桌面应用"的开发模式。这一课讲讲怎么把它改造成你自己的产品。

第 10 课:进阶扩展


学完了,可以做什么?

你已经掌握了一个完整的"AI 桌面应用"的开发模式。这一课讲讲怎么把它改造成你自己的产品。

扩展一:添加预设模板

最简单的改进:让用户点击常用模板,而不是每次都打字。

code
// 在 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 的行为。

添加行业特定规范

code
# 财务报表规范

当生成财务类 Excel 时,遵守以下额外规范:
- 所有金额单位统一为人民币(¥)
- 数字格式使用千位分隔符:#,##0.00
- 负数用红色显示
- 每个工作表都要有打印区域设置
- 表头行高度设为 25,数据行设为 20

添加公司品牌

code
# 品牌规范

所有生成的 Excel 应遵守公司品牌规范:
- 标题行使用公司蓝色(#003A70)
- 字体统一使用 Microsoft YaHei(微软雅黑)
- 第一行留空用于公司 Logo
- 最后一行添加"Confidential - Internal Use Only"

扩展三:添加新的技能

添加图表生成技能

agent/.claude/skills/ 下创建新技能:

code
agent/.claude/skills/
├── xlsx/           ← 已有的 Excel 技能
└── charts/         ← 新增的图表技能
    └── SKILL.md
python
---
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。可以扩展到更多格式:

code
// 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))
);
code
// MessageInput.tsx —— 修改上传文件类型
const ACCEPTED_TYPES = [
  '.xlsx', '.xls', '.csv',  // 表格
  '.pdf',                    // PDF
  '.docx', '.doc',           // Word
  '.json',                   // JSON 数据
  '.txt',                    // 纯文本
];

扩展五:添加对话历史

当前每次对话是独立的。可以加上"记住上下文"的功能:

code
// 维护对话历史
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,
    // ...
  });
});

这样用户就可以说"把上次做的表格加一列'备注'"。

扩展六:打包发布

把应用打包成可以分发的安装包:

code
# 构建生产版本
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.jsonbuild 部分:

code
"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 应用:

code
需要改的部分:

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 桌面应用的完整知识:

bash
┌────────────────────────────────────────────────┐
│          AI 桌面应用的通用框架                   │
│                                                │
│  前端层                                        │
│  ├── 聊天界面(消息列表 + 输入框)              │
│  ├── 工具展示(实时显示 AI 在做什么)            │
│  ├── 文件管理(上传 + 下载)                    │
│  └── 任务展示(Todo 列表)                      │
│                                                │
│  桥梁层                                        │
│  ├── IPC 通信(或 HTTP/WebSocket)              │
│  ├── 文件路由(上传保存 + 输出检测)             │
│  └── 错误处理 + 任务取消                        │
│                                                │
│  AI 层                                         │
│  ├── Claude Agent SDK(query())                │
│  ├── 技能系统(SKILL.md)                       │
│  ├── 工具箱(Bash、Write、Read 等)             │
│  └── 代码生成模式(写代码 → 执行 → 产出文件)    │
└────────────────────────────────────────────────┘

行动建议

  1. 先跑通原项目:确保 npm start 能正常工作
  2. 加几个模板按钮:最简单的改进,立竿见影
  3. 修改系统提示词:适配你自己的业务场景
  4. 添加新技能:图表、PDF、PPT……
  5. 打包发布:给同事或客户用

总结

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 办公助手!


沿着当前专题继续,或返回课程目录重新整理阅读顺序。

返回课程目录