先上图
二、摸鱼间隙
作为一个信奉代码逻辑的程序员,我做梦也没想到有一天会让AI帮我开发算命网站。
事情是这样的:在某个厕所的隔间,我兴奋的刷着手机,直到看到六爻卜卦小红书的贴子,可能我之前在上面搜过什么命理的知识,可怕的大数据,这勾起了我的好奇心,还挺有意思的,于是想法我的小程序能做什么功能拓展,要不研究一下对应的卜卦流程,用AI结合具体的事件做一个功能实现出现,感觉有点意思,于是开始了我的小小的卜卦实现之旅...
AI能理解2000年前的玄学智慧吗?
于是我开始了这个"用最现代的技术实现最古老的智慧"的实验。
神奇的是,AI对传统文化的理解程度和补充让我这个中国人都自愧不如。
本次AI占卜功能的开发,源于对现有优质案例的借鉴与功能创新,具体需求推导如下:
-
运势占卜功能推导:参考开源项目 “一饭封神” 中的 “运势食谱” 功能,结合业务场景需求,规划在小程序中实现类似的运势分析模块,并基于 Trae 的 Builder 设计模式完成功能的快速落地。
-
六爻占卜功能推导:通过 GitHub 平台发现开发者基于 ChatGPT-API 与周易六十四卦映射文件开发的网页端六爻占卜工具,具有较高参考价值。后续通过检索算命网六爻占卜的标准流程,结合 DeepSeek-API 实现 “疑问占卜 - 卦象解读” 的完整功能闭环。
三、技术栈选型
为保障功能开发效率与跨端兼容性,本次项目选用以下技术栈组合:
-
开发框架:uni-app(支持多端适配,降低小程序开发成本)
-
编程语言:TypeScript(提升代码类型安全性与可维护性)
-
UI 组件库:uView(提供丰富的小程序适配组件,优化界面开发效率)
-
样式预处理器:Sass(支持样式模块化开发,提升样式代码复用性)
-
网络请求库:Axios(封装统一请求逻辑,保障接口交互稳定性)
-
DeepSeek API:中文传统文化,还是国产模型理解得更地道。
四、核心功能实现方案
4.1 小程序环境下 Axios 的适配配置
由于 uni-app 原生网络请求 API 与 Axios 存在适配差异,需通过自定义适配器实现 Axios 在小程序环境的兼容,具体代码实现如下:
const instance = axios.create({
// Web 侧可以通过 vite.config.js 中的 proxy 配置,指定代理
// 小程序APP里需写完整路径,如 https://service-rbji0bev-1256505457.cd.apigw.tencentcs.com/release
// 可使用条件编译,详见 https://uniapp.dcloud.io/tutorial/platform.html#preprocessor
// #ifdef H5
baseURL: import.meta.env.VITE_APP_AXIOS_BASE_URL,
// #endif
// #ifndef H5
// @ts-ignore
baseURL: 'https://service-rbji0bev-1256505457.cd.apigw.tencentcs.com/release',
// #endif
adapter(config) {
console.log('request adapter ↓↓')
console.log(config)
const { url, method, data, params, headers, baseURL, paramsSerializer } =
config
return new Promise((resolve, reject) => {
uni.request({
method: method!.toUpperCase() as any,
url: getFullURL(baseURL || '', url!, params, paramsSerializer),
header: headers,
data,
dataType: 'json',
responseType: config.responseType,
success: (res: any) => {
console.log('request success ↓↓')
console.log(res)
resolve(res)
},
fail: (err: any) => {
reject(err)
}
})
})
}
})
/**
* 请求拦截
*/
instance.interceptors.request.use((config) => {
const { method, params } = config
// 附带鉴权的token
const headers: any = {
token: uni.getStorageSync('token')
}
// 不缓存get请求
if (method === 'get') {
headers['Cache-Control'] = 'no-cache'
}
// delete请求参数放入body中
if (method === 'delete') {
headers['Content-type'] = 'application/json;'
Object.assign(config, {
data: params,
params: {}
})
}
return {
...config,
headers
}
})
/**
* 响应拦截
*/
instance.interceptors.response.use((v) => {
if (v.data?.code === 401) {
uni.removeStorageSync('token')
// alert('即将跳转登录页。。。', '登录过期')
// setTimeout(redirectHome, 1500)
return v.data
}
// @ts-ignore
if ((v.status || v.statusCode) === 200) {
return v.data
}
// alert(v.statusText, '网络错误')
return Promise.reject(v)
})
4.2 AI 接口调用的核心提示词设计
本次功能通过 AI 接口实现占卜逻辑与结果生成,需针对 “星座占卜” 与 “六爻占卜” 两种场景设计专业化提示词,确保 AI 返回结果的准确性与场景适配性,具体实现如下:
4.2.1 星座占卜功能提示词
// 星座占卜功能:构建东西方命理融合的提示词
const prompt = `你是一位深耕东西方命理交汇领域的资深占卜师,兼具东方生肖命理的深邃积淀与西方星座占星的精准洞察,更通晓五行生克、天干地支与黄道十二宫的呼应关系。请根据以下信息为用户推算运势:
星座:${params.zodiac}
生肖:${params.animal}
日期:${params.date}
请基于用户提供的星座、生肖及当前日期,构建多维度运势分析框架,实现东西方命理逻辑的自然融合。解读需紧扣 “星座 + 生肖 + 当前日期” 的核心要素,避免生硬拼接,确保解读逻辑自洽。
请按照以下JSON格式返回占卜结果:
{
"luckyNumber": "根据推算得到的幸运数",
"luckyColor": "根据推算得到的幸运颜色",
"conclusion":"根据推算得到简短的运势小结",
"should":"根据用户的幸运指数,推荐今天适宜做的事情",
"shouldNot":"根据用户的幸运指数,推荐今天不适宜做的事情",
"careerScore":"根据用户的幸运指数,1-5之间推荐一个用户可能的事业运势分数",
"loveScore":"根据用户的幸运指数,1-5之间推荐一个用户可能的爱情运势分数",
"healthScore":"根据用户的幸运指数,1-5之间推荐一个用户可能的健康运势分数",
"wealthScore":"根据用户的幸运指数,1-5之间推荐一个用户可能的财富运势分数",
"score":"根据用户的综合幸运指数,1-5之间推荐一个用户可能的综合运势分数",
"description":"根据推算得到的综合运势分析",
"careerDescription": "根据推算得到的事业运势分析",
"loveDescription": "根据推算得到的爱情运势分析",
"healthDescription": "根据推算得到的健康运势分析",
"wealthDescription": "根据推算得到的财富运势分析",
"loveLocation": "根据用户的幸运指数,推荐一个用户可能的爱情方向",
"healthLocation": "根据用户的幸运指数,推荐一个用户可能的健康方向",
"wealthLocation": "根据用户的幸运指数,推荐一个用户可能的财富方向"
}`;
4.2.2 六爻占卜功能提示词
// 六爻占卜功能:调用AI接口实现卦象解读
const response = await aiClient.post("/chat/completions", {
model: apiConfig.model,
messages: [
{
role: "system",
content:
"你是一位传承中华六爻术数世家的资深卜卦专家,深耕卦理数十年,精通《周易》象、数、理,擅长结合现实场景解析卦象玄机。你的核心任务的是:根据卜卦者明确提出的具体问题(如事业抉择、人际调和、学业规划等),以及其提供的完整卦象(含本卦、变卦、动爻信息),提供兼具卦理依据与实践价值的指导建议。",
},
{
role: "user",
content: prompt,
},
],
temperature: 0.8,
stream: false,
});
五、关于AI和玄学的一点感悟
-
AI不是工具,而是合作伙伴。它有自己的"想法",会给你意想不到的建议,会从你没想到的角度解决问题。与其说是我在使用AI,不如说是我们在一起探索未知。
-
用户需求比技术实现更重要。算命网站的核心不是算法有多精确,而是能不能给用户带来心理上的满足。技术是手段,解决人的问题才是目的。
-
传统文化需要新的表达方式。不是要用技术颠覆传统,而是要用技术让传统在新时代重新焕发生机。
-
不要把AI当成万能的代码生成器,要把它当成一个有智慧的合作伙伴。它能给你灵感,能帮你思考,但最终的判断和决策还是要靠你自己。
-
现代人总把占卜当 “百度问答”,遇事就问 “何时发财”“能否成功”,却忘了占卜的前提是 敬慎:所求之事需正当,发问之心需纯粹。那些为损人利己而卜、为投机取巧而占的行为,看似求卦,实则是对规律的轻慢,卦象自然失真。占卜是自我认知的镜子,而非宿命论的拐杖。
-
占卜的意义从不是预知未来,而是觉醒当下。当你能做到审时度势、修德改过、活在当下,便无需铜钱卦象的指引 —— 你的内心早已与天地同频,每一步选择都契合天道,这便是 不占而占 的终极奥义。正如倪海厦先生所言:“《易经》不是用来算命的,是用来觉醒的” ,占卜的玄学,终究是人生的哲学。
一物其来有一身,一身还有一乾坤。天人焉有两般义,道不虚行只在人。
小程序的下一个功能,还不知道做啥,有想法的朋友可以在评论区说一声,多谢~