第 5 章:做一个真实可用的 Bot
目标:把前四章真正串起来,做出一个能在 Telegram 上工作的财务顾问 Bot。
边界先说清楚:这一章是教学示例,不是投资建议模板。凡是涉及汇率、利率、市场价格这类时效性信息,都应该查证并在回复里标注数据来源或查询时间。
阅读顺序提示:第一次跟做时,这一章更适合分两段读。先完成
5.1到5.4和5.6,把本地工作区、人格、规则和 Skill 验收一遍;然后去读 第 4 章:先部署到 Telegram 完成接平台;最后再回到这一章做5.5和最终检查。
5.1 这章要完成什么
前四章分别解决了四件事:
- 第 1 章:让 nanobot 跑起来
- 第 2 章:让 Bot 有人格、规则和用户画像
- 第 3 章:让 Bot 学会一个新技能
- 第 4 章:让 Bot 接入 Telegram
这一章不再新增新概念,而是把这些部分拼成一个完整项目。做完后,你会得到一个真正能用的 FinBot:
- 在 Telegram 上和你聊天
- 用你定义的风格回答问题
- 遵守你写在
AGENTS.md里的分析流程 - 在需要时调用汇率 Skill
5.2 先定清楚:这个 Bot 是干什么的
我们这次做一个个人财务顾问 Bot。它的职责很具体:
- 回答基础财务规划问题
- 根据你的风险偏好调整建议
- 需要汇率时调用
exchange-rateSkill - 不给出激进的投机建议
这里有一个重要原则:先把职责收窄,再谈能力扩展。 一个“什么都能做”的 Bot 往往最难调好;一个边界明确的 Bot 反而更稳定。
如果你不想做财务顾问,也可以这样迁移
这一章用 FinBot 当主线,是因为它足够具体,方便演示“人格 + 规则 + 用户画像 + Skill”的组合效果。它不是唯一答案。
如果你更想做别的类型,可以直接沿用同一套骨架:
| 你想做的 Bot | SOUL.md 重点 |
AGENTS.md 重点 |
Skill 方向 |
|---|---|---|---|
| 本地文件助手 | 简洁、执行导向 | 先读后改、先解释再执行 | 文件整理、格式转换 |
| 团队 FAQ Bot | 稳定、一致、少猜测 | 先查资料再回答,不确定就说明 | 内部文档查询、知识库摘要 |
| 代码助手 | 严谨、偏工程化 | 先复现、再定位、再修改 | Git、测试、代码审查 |
也就是说,这一章真正要学的是组合方式,不是“财务”这个题材本身。
5.3 配好工作区文件
先准备 4 个文件。
SOUL.md
编辑 ~/.nanobot/workspace/SOUL.md:
AGENTS.md
编辑 ~/.nanobot/workspace/AGENTS.md:
USER.md
编辑 ~/.nanobot/workspace/USER.md:
TOOLS.md
编辑 ~/.nanobot/workspace/TOOLS.md:
5.4 给它一个真正有用的 Skill
延续第 3 章,直接复用已经创建好的 exchange-rate Skill。如果你还没做过那一章,先按第 3 章:教 Bot 新技能里的完整示例创建它,这里不再重复贴全文。目录结构仍然是:
这个 Skill 的价值不在于“多一个文件”,而在于它把“汇率怎么查”这件事从 Bot 主体里剥离了出去。Bot 本身不需要硬编码汇率逻辑,只需要在合适的时候读取 Skill 并调用已有工具。
本章只要求它满足两点:
- 能返回明确的汇率或换算结果
- 回复里能说明数据来源,最好顺手带上查询时间
5.5 接到 Telegram
在第 1 章已经跑通、且第 4 章已经接入 Telegram 的 ~/.nanobot/config.json 基础上,至少补齐下面两段;如果 provider 或 model 还没配置好,先回到前两章完成:
这里的 allowFrom 要填的是 Telegram 的数字用户 ID,不是用户名,也不带 @。第一次对外运行前,先把它只设成你自己的 ID,并保持 restrictToWorkspace: true。
然后启动:
如果日志里看到了 Telegram channel 已启用,就去 Telegram 给 Bot 发第一条消息。
如果没有回复,先回到第 4 章:先部署到 Telegram里的排障清单,优先检查 allowFrom、token 和 gateway 日志。
5.6 做一次完整对话
你可以用下面三轮来验证它是不是真的“串起来了”。
第 1 轮:看人格和流程
最低通过标准:
- 回复开头先复述你的问题,而不是直接给结论
- 回复里能看出“已知信息 / 假设 / 建议”这类结构化分段
- 不出现“梭哈”“保证收益”这类激进表述
第 2 轮:看用户画像
最低通过标准:
- 回复里明确提到“稳健型”或等价表述
- 涉及金额时默认用人民币
- 输出形式符合你在
USER.md中写的偏好,比如表格或分点
第 3 轮:看 Skill 是否真的被用到
最低通过标准:
- 回复里有明确的换算结果
- 回复里有数据来源,例如
open.er-api.com或 ExchangeRate API - 回复里出现“按当前查询结果”一类时间性表述,而不是只给一个裸数字
5.7 回头解释:为什么它能工作
这一整套链路可以压缩成一张图:
也就是说:
SOUL.md决定它像谁AGENTS.md决定它怎么做事USER.md决定它如何理解你SKILL.md决定它在特定领域里知道怎么行动gateway决定它能不能出现在真实聊天平台里
5.8 最终检查清单
做完这一章,至少确认下面 7 项:
nanobot gateway能持续运行- Telegram 上能正常收到回复
- 回复风格明显受
SOUL.md影响 - 回答流程明显受
AGENTS.md影响 - 个性化内容明显受
USER.md影响 - 涉及汇率时能触发
exchange-rateSkill - 涉及外部数据时,回复会给出来源或查询时间
如果这 7 项都成立,你就不是“学完四篇文档”而已,而是真的做出了一个自己的 Bot。
如果没通过,优先怀疑哪一层
为了少走弯路,可以这样定位:
- 回复风格没变:优先回看
SOUL.md - 回答流程不稳定:优先回看
AGENTS.md - 没体现你的偏好:优先回看
USER.md - 会聊天,但外部数据没查到:优先回看 Skill 或工具约束
- Telegram 没回复:优先回看第 4 章的
allowFrom、token 和 gateway 日志
先判断是哪一层没生效,再去改文件,会比“所有地方都改一点”高效很多。
最小验收记录模板
建议你真的手动记 3 轮输入输出,不要只凭感觉判断“差不多可以了”。
如果你能把这 3 轮都清楚记录下来,你对这个 Bot 的掌控感会强很多。
如果你现在已经不确定是哪一层没生效,直接查附录:常见坑与排障会比继续盲改更快。
5.9 到这里你已经会了什么
现在你已经能:
- 用配置和 Markdown 文件定制一个 Bot
- 用 Skill 扩展一个 Bot
- 把 Bot 部署到真实聊天平台
- 解释这套行为背后的主干架构
如果你更关心“它为什么能这样工作”,下一步就去读进阶营。那里会从 40 行代码开始,一步一步把教学版 Agent 搭出来。