1183 字
6 分钟
一字心解:当 AI 遇上千年测字术

缘起#

汉字是中华文明的基因密码。每一个字都是一幅画、一个故事、一种能量。《测字秘牒》云:“盖一字之来必各有体,因其体之隐现不同,故其测之变化不定。”

一字心解试图回答一个问题:如果古人拥有现代 AI,测字术会变成什么样?

答案就是这个项目——用户手写一个汉字,DeepSeek 大模型从字源学、文化学、字相学三个维度解析,结合《测字秘牒》《心易六法》等古籍,给出”测字取格”与个性化建议。


技术架构#

┌──────────────────────────────────────┐
│ Cloudflare Pages │
│ Vue 3 SPA (前端) │
│ 现代东方极简 UI · Vant 4 组件库 │
└──────────┬───────────────────────────┘
│ HTTPS POST /analyze
▼
┌──────────────────────────────────────┐
│ 腾讯云 SCF (广州) │
│ Node.js 18 Serverless │
│ │
│ ├─ /analyze → DeepSeek API │
│ ├─ /key → SHA-256 密钥验证 │
│ ├─ /admin → 后台管理 │
│ └─ /history → Supabase 查询 │
└──────────┬───────────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ Supabase (PostgreSQL) │
│ 测字历史 · 用户记录 · 统计 │
└──────────────────────────────────────┘

为什么选 Serverless#

  • 零运维: 无需管理服务器,腾讯云 SCF 按调用计费
  • 弹性伸缩: 从 0 到 1000 QPS 无需人工干预
  • 冷启动优化: Node.js 18 运行时冷启动 < 200ms,对用户体验影响极小

API 层的职责边界#

/api/analyze:
1. 接收汉字 + 可选用户问题
2. 构造 prompt(融入测字古籍的 system message)
3. 调用 DeepSeek API(temperature=0.7,保证创意又不失稳定性)
4. 结果持久化到 Supabase
5. 返回结构化 JSON(字源/文化/字相/取格/建议)
/api/key:
1. 基于日期 + 密钥种子 → SHA-256 → 取前 12 位
2. 每日自动轮换,过期失效
3. 无需数据库 — 纯算法验证

前端设计哲学#

不是”套模板”的 UI#

一字心解的设计没有使用现成的 UI 框架主题,而是从中文古籍排版中提取视觉语言:

元素灵感来源CSS 实现
宣纸白底色古籍善本background: #faf6f0
墨灰文字松烟墨color: #3d3d3d
鎏金点缀金粉题签--accent-gold: #c9a96e
朱砂强调朱批圈点--accent-vermilion: #c23e2e
呼吸感排版明清刻本line-height: 2; letter-spacing: 0.05em

Vue 3 Composition API#

composables/useDivination.ts
export function useDivination() {
const result = ref<DivinationResult | null>(null);
const loading = ref(false);
async function analyze(char: string, question?: string) {
loading.value = true;
try {
const { data } = await api.post('/analyze', { char, question });
result.value = data;
// 保存到本地历史
saveToHistory(data);
} catch (e) {
// 降级策略:API 不可用时展示通用解读
result.value = fallbackAnalysis(char);
} finally {
loading.value = false;
}
}
return { result, loading, analyze };
}

海报生成#

分享功能使用 html2canvas 将分析结果渲染为 PNG,支持一键保存到相册。不是简单地截图,而是用 Canvas 重新排版——移除了导航栏、按社交分享比例 (3:4) 重新排版。


古籍与现代 Prompt Engineering#

最有趣的部分是 prompt 设计。如何让 AI 扮演一个精通古籍的测字先生?

System: 你是一位精通《测字秘牒》《心易六法》的测字先生。
你需要从以下三个维度分析用户输入的汉字:
1. 字源学 — 追溯甲骨文、金文、小篆中的字形演变
2. 文化学 — 该字在古典文献、诗词中的意象与内涵
3. 字相学 — 运用装头、接脚、穿心、破解、对关五法取格
最后结合用户的困惑,给出 3-5 条具体建议。
用词典雅但不晦涩,让现代读者能感受到古人的智慧。

关键技巧:

  • 角色锚定 (persona anchoring): 明确 AI 的身份
  • 结构化输出: 分维度要求,防止 AI 泛泛而谈
  • 约束与自由并存: 古籍引用要准确,但解读可以灵活

密钥系统设计#

为避免滥用,项目设计了轻量级密钥验证:

日用量:
免费: 2 次/天
日密钥: 10 次/天 (每日自动轮换)
隐藏密钥: 无限次
密钥生成:
SHA-256(date + MASTER_SECRET) → 前 12 位 hex
验证:
无数据库查询 — 服务端根据当前日期 + 密钥字符串反算

这个设计巧妙地避免了为简单鉴权引入 Redis 或数据库——Serverless 函数的无状态特性决定了方案必须零外部依赖。


踩坑笔记#

  1. DeepSeek API 的繁体字敏感度: 有些简体字在古籍中没有对应字形,需要 prompt 中明确指示”使用现代标准字形”
  2. 页面白屏闪现 (FOUC): Vitepress 构建的 SPA 在 Cloudflare CDN 上偶现白屏 → 用 v-cloak + 内联 critical CSS 解决
  3. Serverless 超时: DeepSeek 分析耗时 8-15s,腾讯云 SCF 默认超时 3s → 调整为 30s + 前端增加骨架屏

在线体验: yizixinjie.pages.dev · 源码: github.com/CHN-DST/yizixinjie

一字心解:当 AI 遇上千年测字术
https://dst-blog.pages.dev/posts/2026-06-02-yizixinjie/
作者
DST
发布于
2026-06-02
许可协议
CC BY-NC-SA 4.0