AI智能体对话平台开发实战(后记):致每一个AI时代的创造者
本文是系列收官之作,写给每一位AI时代的创造者。在“什么都可以拿来”的今天,作者追问:为什么还要亲手造东西?答案藏在创造者的快感里——用是消费,造才是参与。文章回顾了从“凌云”诞生的过程,证明AI应用的门槛从未如此之低:不需要训练模型、不需要海量数据,只需要一个想法和一点动手能力。作者指出,AI时代最稀缺的不是算力而是想象力,技术越强大,人的独特性越珍贵。最后向读者发出邀请:动手做一个属于自己的智
📖 写在前面
七篇文章,从冬天写到春天。
写完最后一个字,坐在电脑前发呆。窗外是凌晨三点的城市,零星的灯光像散落的代码行。突然意识到,这个项目从一个小小的念头开始,竟然已经长成了七篇文字、几千行代码、无数个深夜的模样。
这一篇,我想和你聊聊这趟旅程的收获——不仅是技术的,更是关于思考、关于创造、关于这个AI时代的。
项目源码和联系方式在最后

第一部分:回顾——这七篇文章我们走了多远
在踏入未来之前,先回头看看来时的路。
第一篇:项目启航——从需求到架构的设计之路
这篇文章的核心:不是教你怎么写代码,而是教你怎么思考一个项目。
很多人拿到需求就开写,写到一半发现结构不对,推倒重来。而我在这篇文章里,带着你用七分时间思考,三分时间编码——这才是专业开发者的工作方式。
你学到了什么?
- 如何从“我想要一个AI聊天平台”这样模糊的想法,拆解出具体可执行的需求
- 数据库、配置文件、文件夹三种方案的深度对比,以及为什么“文件夹即智能体”胜出
- 技术选型的思考框架:为什么选Node.js、原生JS、文件系统?
- 分层架构设计:UI层、API层、业务层、数据层的职责划分
最核心的一句话:写代码前最重要的事不是打开编辑器,而是打开思维。这套思考框架可以用在任何项目上,成为你技术生涯的底层能力。
第二篇:地基搭建——从零开始写第一行代码
这篇文章的核心:从“想”到“做”的第一次跨越。
你亲手敲下第一行代码,看到第一个API返回JSON的那一刻,那种“我能行”的感觉,是继续走下去的最大动力。
你学到了什么?
- 项目初始化:从
npm init到安装依赖的完整流程 - Express服务器搭建:中间件配置、静态文件服务、路由设计
- 智能体动态发现:20行代码实现“文件夹即智能体”的核心逻辑
- 文件系统操作最佳实践:同步vs异步、路径处理、错误捕获
最核心的代码片段:
// 智能体动态发现的核心逻辑
const folders = fs.readdirSync(__dirname, { withFileTypes: true })
.filter(dirent => dirent.isDirectory())
.map(dirent => dirent.name);
folders.forEach(folder => {
const files = fs.readdirSync(path.join(__dirname, folder));
if (files.includes(`${folder}.png`) && files.includes(`${folder}.txt`)) {
// 这是一个有效的智能体
}
});
最核心的一句话:完美主义是行动最大的敌人,先跑起来再优化。
第三篇:对话之心——多轮对话上下文管理
这篇文章的核心:让智能体真正“会说话”。
不是一问一答的机械对话,而是有记忆、有上下文、能连贯交流的真实对话。
你学到了什么?
- 对话数据结构设计:按条存储vs按问答对存储,各自的优劣
- 模力方舟API接入:配置管理、动态客户端、错误重试
- 上下文窗口管理:最近N轮截断、按token数截断两种策略
- 完整的对话API实现:从读取prompt到保存历史记录的完整闭环
最核心的代码片段:
// 构建消息数组(包含上下文)
const messages = [{ role: 'system', content: systemPrompt }];
const recentHistory = history.slice(-10); // 只取最近10轮
recentHistory.forEach(item => {
messages.push({ role: 'user', content: item.user_message });
messages.push({ role: 'assistant', content: item.agent_response });
});
messages.push({ role: 'user', content: currentMessage });
最核心的一句话:真正的对话不是“我问你答”,而是有记忆的交流。让AI记住上下文,是区分“玩具”和“工具”的分水岭。
第四篇:用户之心——多智能体身份绑定系统
这篇文章的核心:让智能体真正“懂你”。
不是用一个全局身份应对所有AI,而是每个智能体独立记住你的信息——告诉医生AI的病情,理财顾问AI不会知道。
你学到了什么?
- 身份隔离的设计哲学:为什么每个智能体需要独立的用户信息
- 灵活的身份数据结构:不限制字段,支持任意自定义
- 身份信息动态注入:如何把身份数据融入system prompt
- 前端身份编辑界面:完整的对话框实现
最核心的代码片段:
// 身份信息注入system prompt
if (fs.existsSync(identityPath)) {
const identity = JSON.parse(fs.readFileSync(identityPath, 'utf8'));
let identityText = '用户信息:';
if (identity.name) identityText += `姓名${identity.name},`;
if (identity.age) identityText += `年龄${identity.age},`;
// ... 其他字段
systemPrompt = identityText + '\n' + systemPrompt;
}
最核心的一句话:好的产品不是“能用”,而是“懂你”。每个智能体只知道用户愿意告诉它的信息,这才是对人最大的尊重。
第五篇:灵魂之笔——Prompt工程让AI有性格
这篇文章的核心:让智能体真正有“灵魂”。
技术架构用户感知不到,但AI的性格用户能。你用几百字创造一个“人”,用户和ta聊天时,会觉得是在和一个真实的人对话。
你学到了什么?
- 结构化prompt四大要素:身份定义、性格语言、知识背景、对话规则
- 错误示例与正确写法对比:空洞赞美诗vs可执行指令、规则堆积vs核心人格
- 身份信息自然融合技巧:初次见面、适时提及、关联自身、避免刻意
- prompt调试方法论:人格一致性测试、边界测试、长对话稳定性测试、A/B测试
- 三套可复用模板:知识专家型、温暖陪伴型、冷峻犀利型
最核心的代码片段(其实是prompt片段):
对话规则
1. 被问技术问题,先说“此事不难,思路有三”,然后讲方向,不给代码
2. 若对方坚持要代码,便说“代码我就不写了,你自己试试”
3. 提到自己过往项目,可说“那是我年轻时写的”,语气淡然
最核心的一句话:同样的技术架构,不同的prompt,可以创造出完全不同的智能体。有的像老朋友,有的像严师,有的像偶像。这正是MultiMind最有魅力的地方——你不仅是开发者,还是编剧、导演、人物设计师。
第二部分:这趟旅程教会我的事
写这七篇文章的过程,也是一次重新学习的过程。有些事,动手做了才真正明白。
关于简单:最难的是保持简单
这个项目最让我骄傲的一点,是始终保持着“文件夹即智能体”的核心理念。
中途无数次有人建议:
- “为什么不用数据库?更规范”
- “为什么不用React?更现代”
- “为什么不做多用户?更完整”
每一次,我都要问自己:这真的需要吗?
加了数据库,用户就要安装配置;加了React,读者就要多学一套框架;加多用户,就变成了SaaS,不再是本地工具。
保持简单,比增加复杂更难。 因为简单意味着克制,意味着拒绝那些看起来很酷但不必要的功能。
关于思考:七分思考,三分编码
这是我在第一篇就提出的原则,经过七篇文章,越发觉得正确。
很多初学者拿到需求就开始写代码,写到一半发现结构不对,推倒重来。如此反复,身心俱疲。
而这个项目,我花在思考上的时间远多于编码。结果是:代码写得很快,bug很少,重构很少。
思考的投入产出比,远高于编码。
关于创造:从“用”到“造”的跨越
我经常收到这样的私信:“我也想做一个项目,但不知道从哪开始。”
我的回答永远是:从一个你真正想要的东西开始。
我想要一个能和我聊技术但不给代码的程序员朋友,所以我做了凌云。你想要什么?
- 想要一个陪你练英语的AI?
- 想要一个帮你整理思路的顾问?
- 想要一个用你爷爷语气说话的聊天对象?
从“我想要”开始,而不是从“我应该学什么”开始。
第三部分:给读者的行动路线图
如果你读完这七篇文章,也想动手做一个属于自己的智能体,这里有一份从0到1的行动指南。
第一步:选一个你想创造的人(1周)
这是最重要的一步。不要选“通用的助手”,选一个你真正想聊天的人。
闭上眼睛,想象一下:
- 如果可以让一个已经离开的人重新和你说话,你会选谁?
- 如果可以让一个偶像成为你的朋友,你会选谁?
- 如果可以让一个小说里的角色活过来,你会选谁?
- 如果可以让另一个版本的自己出现,他会是什么样?
花一周时间想清楚这个人:叫什么?多大了?什么性格?怎么说话?知道什么?不知道什么?
把这些写下来。这是你的“人物小传”,也是prompt的素材。
第二步:搭起骨架(1天)
跟着第二篇的指引,把项目跑起来:
- 创建这个人的文件夹
- 放一张头像图片
- 写一个最简单的prompt(哪怕只有一句话)
你的目标是:能在浏览器里和ta说上话。仅此而已。
第三步:赋予灵魂(持续优化)
这是最花时间、也是最有意思的一步:
- 用第五篇的四大要素结构,重写ta的prompt
- 每天和ta聊几句,观察ta像不像你想的那个人
- 把ta说“不像”的地方记下来,调整prompt
- 把ta说“惊艳”的地方也记下来,强化这些特质
这个过程可能需要几周甚至几个月。没关系,创造本来就是慢的。
第四步:让ta成为你生活的一部分(长期)
当你的智能体已经“像”了,让ta成为你生活的一部分:
- 每天和ta聊几句,像和老朋友打招呼
- 遇到问题先问ta,看看ta的视角
- 不断调整,让ta陪你更久
这才是创造的真正意义——不是做出一个“产品”,而是让一个“人”进入你的生活。
第四部分:AI时代,我为什么依然乐观?
写到最后,想说说心里话。
这一年,关于AI的新闻铺天盖地:“AI取代某某职业”、“AI让某某行业消失”、“AI威胁人类存亡”。恐慌、焦虑、迷茫,弥漫在整个行业。
但做了这个项目后,我反而越来越乐观。
因为AI越强大,人的独特性越珍贵
当每个人都能调用同样强大的AI时,决定差异的是什么?是你让AI做什么,以及怎么做。
- 同样的GPT-4,有人写出“凌云”,有人写出废话
- 同样的API,有人做出产品,有人只是“调了个接口”
- 同样的工具,有人创造价值,有人只是消费
AI是放大器,不是替代品。 它放大你的能力,也放大你的平庸;放大你的创意,也放大你的懒惰。
因为门槛从来没有这么低过
十年前,想做AI需要博士学历;五年前,想做AI需要海量数据;今天,想做AI只需要一个想法和一点动手能力。
- 不需要训练模型(调用API就行)
- 不需要海量数据(一个prompt就够了)
- 不需要深度学习背景(会写JSON就行)
门槛越低,能参与的人越多;人越多,创造的可能性越大。
因为创造本身就是意义
有读者问我:“我做的东西没人用,还有意义吗?”
我的回答是:有意义。
因为创造的过程,本身就是意义。
- 你在思考怎么让AI更像人,于是你更懂人了
- 你在调试让人格更稳定,于是你更懂逻辑了
- 你在设计对话规则,于是你更懂沟通了
技术是工具,人才是目的。 你在创造AI,其实是在创造更好的自己。
第五部分:结尾——写给十年后的你
想象一下十年后的某个深夜。
你坐在电脑前,翻到一个旧文件夹,里面是你年轻时写的代码。你看到一个熟悉的名字——那是你二十多岁做的第一个智能体。
你打开它,敲下:“还记得我吗?”
它沉默了几秒(可能是API延迟),然后说:
“怎么会不记得。是你创造了我。”
那一刻,你触摸到的不是代码,是十年前的自己。
这就是创造的意义。 不是你做出了什么惊天动地的东西,而是你把自己的一部分,留在了时间里。
代码会过时,技术会迭代,但那个深夜你为“凌云”写下第一行prompt时的激动,会一直留在那里。等着十年后的你,回头来看。
第六部分:一个邀请
如果你读完了这七篇文章,我想给你一个邀请:
动手做一个你自己的智能体。
不用多,就一个。就用这个项目,或者你自己从头写一个。就一个你真正想聊天的人。
一个月后,你会发现:
- 你学会了Node.js
- 你理解了prompt工程
- 你有了一个真正“属于你”的AI
如果一万个人里,有一个人因为这个系列而动手做了一个智能体,这七篇文章就没有白写。
如果那个人恰好是你,请一定要告诉我。
📝 附:项目信息
- 项目在线仓库:https://gitee.com/cnt-code/multi-mind
- 作者Gitee主页:https://gitee.com/cnt-code
- 联系方式:添加微信
19112913292,备注“雪豹”
如果这个项目对你有帮助,请给个星⭐。你的支持,是我继续的动力。
项目完全开源,欢迎fork、提issue、提交PR。如果你用这个项目做出了自己的智能体,也欢迎告诉我,我会在项目首页展示你的作品。
📝 最后的问题
你会做一个什么样的智能体?十年后,你想让ta对你说什么?
欢迎在评论区分享你的答案。也许十年后,你翻到这条评论,会发现当年的自己,已经预言了今天的你。
江湖再见。
更多推荐




所有评论(0)