下午练习一 · 30 家银行年报的 RAG
材料包里的 练习1_RAG\ 是一个现成的 RAG 小系统,30 家 A 股上市银行 2025 年年报的文字部分已经切成 7638 段、换成了向量。你用自己的 key 问几道题,看按字找和按意思找差在哪,再看检索答不了什么。
课前 · 建一个硅基流动的 key
- 打开 cloud.siliconflow.cn 注册,做个人实名认证(认证后才能用全部免费模型)
- 在 API 密钥页新建密钥,复制
sk-开头的那一串 - 解压材料包,把
练习1_RAG\硅基流动key.txt里的提示整行换成你的 key,保存
问题清单.md 里的原话。VS Code 打开 练习1_RAG 文件夹,在终端里输 claude 启动。五步都发给它,命令由它来跑,结果让它写进回复。
第一步 · 几个词两两比一比
单独跑这一条,命令照抄,不加 cd,不换成 python3: python 相似度.py 净息差 净利息收益率 净利差 不良贷款率 拨备覆盖率 降息 把余弦表原样贴进回复,再说除了对角线,哪一对最近。
回复里有一张 6 × 6 的余弦表,越接近 1 越近。想看一对是怎么算出来的,让它在命令末尾加 --细节 再跑一次。
| 净息差 与 净利息收益率 | |
| 净息差 与 净利差 | |
| 表里最近的一对 |
第二步 · 按字找,按意思找
用 检索.py 查 问题清单.md 里的第一问、第二问,问题原话照抄。每问跑三次:加 --按字;不加参数;加 --按字 --公司 题里那家银行。 一条一条单独跑,不加 cd。每跑完一次列一张表:排名、出处(银行、第几页)、这段里有没有这一问要的那个数。只看打印出来的段落,不打开 资料库/。
第一问 农业银行 2025 年的净息差是多少?
第二问 招商银行 2025 年末信用卡贷款不良率是多少?
回复里有六张表。对着表,记下这一问要的那个数排在第几段。
| 按字 | 按意思 | 按字 + 公司 | |
|---|---|---|---|
| 第一问 · 农行那段 | |||
| 第二问 · 招行那段 |
第三步 · 让 Claude Code 只凭检索结果答
输入 /clear 开一个新会话,免得它直接拿上一步的表来答。提示词自己写,写清四件事:只凭 检索.py 的结果回答,不打开、不搜索 资料库/ 里的文件,每个数写出处(哪家银行、原报告第几页),没有就说没找到。问题就是第一问和第二问。
盯着它干活。屏幕上冒出 Read 或 Search 开头、路径里带 资料库 的一行,就是它绕开检索、直接翻原文了。按 Esc 停下,提醒它只用 检索.py,让它重答。
答完自己回原文核。打开 资料库/农业银行2025年报.md,按 Ctrl+F 找它写的那一页,看数对不对得上;招行那个数同样核。
第四步 · 检索答不了的一问
第三问 30 家银行里,2025 年末不良贷款率最低的是哪家?
接着同一个会话,自己写提示词,让它先只用 检索.py 查一次、告诉你能不能答,再换办法去 资料库/ 里查,每家的数写出处。它要自己翻 30 份文件,会慢一些。挑两家回原文看一眼。
| 检索为什么答不了这一问(一句话) |
第五步 · 往库里追加一份新资料
单独跑 python 向量化.py --加 招商银行2026半年报节选.md,命令照抄,把它打出的最后一行原样贴给我。 再用 检索.py 查「招商银行 2026 年上半年的净息差是多少?」,列前 5 段的排名和出处。
最后一行写着这次用了几秒、几个 token。再看出处写着 招商银行2026半年报节选 的段排不排得上来。
| 秒数 | token | |
|---|---|---|
| 追加半年报节选,你这次 | ||
| 30 家全量建库,7638 段 | 335(教师机) | 约 250 万 |
下午练习二 · 用 Claude Code 搭一个个人知识库
材料包里的 练习2_知识库\ 是搭好骨架的知识库,personal-wiki 技能已装好。收件箱里放着第 1 到 5 次课的十份课程网页快照。你让 Claude Code 把它们整理成条目,问几题,再放进一份新资料,看它改不改得动、关掉再问还答不答得上。全程不联网。
待入库/ 里的课堂安排核一遍,说得越笃定越要核。把 练习2_知识库\ 整个拷到一个固定的位置(文件夹名不要改,以后一直用,晚上的闹钟也认这个位置),用 VS Code 打开,在终端里输 claude 启动,按 Shift+Tab 切到 accept edits。
第一步 · 整理收件箱(它动起来再去休息)
提示词自己写,写清五件事:这是课堂练习,只用这个文件夹里的文件、不联网;先确认 personal-wiki 在技能列表里,再读 规则.md;用它整理收件箱,课程资料挪进 原始资料/学习/AI学习/金融硕士智能体课/,条目分四页写进 学习/AI学习/金融硕士智能体课/;链接.txt 和 待入库/ 这次不动;中途不要停下来问你,写完汇报建了哪几页。看它开始读文件了,再去休息。
回来看四处:收件箱只剩 链接.txt 和 不收/;四页条目每句有出处;索引多了四行;日志记了一笔。
第二步 · 新开会话,问三题
第 6 次课讲什么?第 8 次课做什么?小组项目里查资料的 AI 模块,按什么来选?每条答案写出处,知识库里没有的就说没有。
第三题知识库里还没有,看它说不说没有。第 8 次课它怎么答、出处是哪份,记下来,第五步还要再问。
第三步 · 新资料进收件箱
接着上一个会话,让它把 待入库/第6次课_课堂安排.md 复制一份到收件箱,再整理收件箱,链接.txt 还不动。打开课程安排那一页,看第 8 次课改了没有,旧说法进了变更记录没有,再看日志最后一笔。
第四步 · 记一下
用你自己的话,让它记一条今天的心得:RAG 和 Wiki 两种知识库,各适合什么情况(一两句就行)。它该把你的原话存成原件,再补进相关条目,带出处,日志记一笔。
第五步 · 关掉再问
新开会话,自己写提示词,问四题:第 8 次课做什么、以前是怎么说的、哪份资料改的;查资料模块按什么选;我记的 RAG 和 Wiki 各适合什么情况。每条要出处。
四题都该答得上。出处对一对:第 8 次课现在怎么上、查资料模块怎么选,出自 第6次课_课堂安排.md;以前的说法出自 第1次课_课件.md;最后一题出自你记的那份。
晚上练习一 · 干完了它来叫你
给 Claude Code 挂一个 hook,它每答完一轮、要你批准的时候,右下角各弹一条通知。材料包 练习一_提醒/notify.py 是弹通知的脚本,拷脚本、改设置都交给 Claude Code,你只发一段话。改的是用户级设置,以后在哪个文件夹用 Claude Code 都会响,练习二里闹钟叫醒它,跑完也是它来叫你。要弄清的是 hook 的三样东西:挂在哪个节点、节点到了跑什么、脚本收到什么。
第一步 · 一段话让它装
用 VS Code 打开材料包里的 练习一_提醒 文件夹,在 Claude Code 面板里发这段话。
照这个文件夹里的 notify.py,给我装一个完成提醒。 1. 脚本放进 ~/.claude/hooks/ 2. 在 ~/.claude/settings.json 加两个 hook:Stop,和 matcher 为 permission_prompt 的 Notification,命令都是 python "$HOME/.claude/hooks/notify.py"(Mac 用 python3) 3. 只加 hooks 这一段,原有内容一个字不动,已有 hooks 就合并;回话别贴整份设置 4. 装好跑一次脚本,弹一条测试通知
往用户目录的 .claude 里放脚本、改 settings.json,它都会先弹确认,开着 accept edits 也一样,看清是这两处再点允许。测试通知弹出来,脚本就是好的;没弹,看「排错」里通知那几行。课上别切换 CC Switch 的供应商。
第二步 · 新开会话测
点面板上的新会话,测三件事:问一句,答完弹「干完了 · 文件夹名」;让它做件要批准的事(如跑 python --version),弹「等你一下」;在终端里跑下面这行,跑完也弹。
claude -p "用一句话介绍你自己"
第三步 · 让它说清三样东西
刚才弹的通知是 hook 弄的。看一下 ~/.claude/settings.json 里的 hooks 和 ~/.claude/hooks/上一次收到的.json,在这个例子里,节点、命令、输入各是什么?每样一句话。
它说完自己也会弹一条。再打开 上一次收到的.json,对一下它说的节点名和最后那句话。
晚上练习二 · 到点了它自己醒
在下午的 练习2_知识库 里做。任务计划程序每 10 分钟叫醒一次 巡查收件箱.ps1:收件箱没有新东西就记一行日志退出,不叫模型;有新东西,才开一个新会话让 Claude Code 整理,整理完由练习一的 hook 弹通知。材料包 练习二_巡查/ 里有 巡查收件箱.ps1、隐藏运行.vbs 和两份测试用的 AI 资料。每次新开会话,上一轮的对话不带过来,要它记住的都在文件里;没新东西就不叫它,不花一分钱。
第一步 · 放三个文件
把材料包 练习二_巡查\ 里的 巡查收件箱.ps1 和 隐藏运行.vbs 拖进 练习2_知识库\ 根目录(有 规则.md 的那一层),别用记事本另存;再把 AI资料1 拖进 收件箱\。用 VS Code 打开 练习2_知识库,新开一个会话。
第二步 · 一段话挂闹钟,先跑一轮
在 Windows 任务计划程序里建一个叫「知识库巡查」的任务: 每 10 分钟用 wscript 运行这个文件夹里的 隐藏运行.vbs,到点不弹窗,笔记本拔着电源也要跑,不用管理员。 这一步要动任务计划程序,是我同意的。收件箱你别动,留给闹钟。 建好让任务计划程序马上跑一次,不用等它跑完。最后告诉我以后怎么删。
它会请你批准命令,看清是在建任务再点允许。中间弹的「等你一下」是批准框,回完话那条是这个会话的。过几分钟再弹一条「干完了」,正文讲它收了 AI资料1,那条才是闹钟这一轮。
第三步 · 问它这个闹钟是怎么转的
这个闹钟是怎么运行的?读一下 巡查收件箱.ps1 和 巡查日志 里今天那份: 到点以后,从任务计划程序到整理完,依次发生了什么?逻辑上怎么做到自动查收收件箱? 哪一步是脚本写死的,什么时候才叫模型?
它该讲清:到点是谁叫醒谁;看收件箱有没有新东西,是脚本写死的一步,不是模型做的;有新东西才开一个新会话整理;整理完怎么记账、怎么叫你。
第四步 · 等它自己醒
把 AI资料2 拖进收件箱,不碰电脑,下一轮到点它整理完,右下角弹通知。过一阵打开 巡查日志\ 里今天那份:几轮叫了它,几轮写着「收件箱没有新东西,没叫它」,有没有被拒的动作。再打开 日志.md,一份是闹钟记的,一份是 Claude Code 记的。
巡查收件箱.ps1 改写成 .sh 加一份 launchd 的 plist,先给你看再写。接着用 · 放进你自己的东西
知识库和闹钟都配好了,往收件箱里放课堂以外的东西:读过的研报、论文、公众号文章,作业二的行业资料。刷到链接,在 练习2_知识库 里对 Claude Code 说「收一下」加链接,它读完存进收件箱;闹钟禁了联网,自己读不了链接。PDF 先转成 Markdown 再放。自己的材料先脱敏,库里的内容整理和提问时都会发给模型。
排错
练习一 · RAG
| 现象 | 多半是 | 怎么办 |
|---|---|---|
| 报 401,说接口拒绝了这个 key | key 不对,或者没抄全 | 重新复制,在 硅基流动key.txt 里整行替换,保存再跑。还不行就新建一个 key |
| 打出「接口忙(429),几秒后重试」 | 请求太密,接口在限速 | 不用管,脚本会自己等一会儿再试 |
| 报没有找到 API key | key 没粘进 硅基流动key.txt,或者没保存 | 确认里面是 sk- 开头的一整串,保存后重跑 |
| 报没有设 API key,预先算好的里也没有 | 没有 key,又问了清单以外的话 | 换成 问题清单.md 里的原话 |
| 它说找不到 python,或者弹出微软商店 | Python 没装,或者 VS Code 认不出来 | 从开始菜单打开 Anaconda Prompt,cd 到 练习1_RAG,在那里输 claude 启动 |
| 每跑一条命令都要你点允许 | 它加了 cd、换成 python3,或者把几条连成一条,和放行的写法对不上 | 点允许也能接着做;嫌烦就提醒它命令照抄、一条一条单独跑 |
| 报还没有向量库 | 向量库\ 不在 练习1_RAG\ 里了 | 从材料包重新解压放回原处。追加过的半年报要重新 --加 一次 |
第三步它直接打开了 资料库\ 里的文件 | 没照 CLAUDE.md 的规矩来 | 提醒它这一问只凭 检索.py 打印的段落答 |
练习二 · 知识库
| 现象 | 多半是 | 怎么办 |
|---|---|---|
| 它说技能列表里没有 personal-wiki | Claude Code 不是在 练习2_知识库\ 里启动的 | /exit,用 VS Code 打开这个文件夹,在它的终端里重开 claude |
| 每写一个文件都要你点允许 | 权限模式还是默认的 | 按 Shift+Tab 切到 accept edits |
| 整理太慢,休息快结束了还没完 | 十份快照要逐份读,再编四页条目 | 让它跑着,休息回来再看 |
| 它说记住了,知识库里却找不到 | 可能记进了 Claude Code 自己的记忆 | 再说一遍:用 personal-wiki 记进这个知识库,原话存成原件,再补进条目 |
晚上 · 提醒与巡查
| 现象 | 多半是 | 怎么办 |
|---|---|---|
| hook 挂上了,答完没弹通知 | 改完设置没新开会话;或者 settings.json 写坏了 | 新开一个会话再试;看 用户目录\.claude\hooks\上一次收到的.json 有没有更新,没更新就让它检查 settings.json |
| 上一次收到的.json 更新了,还是没弹 | 开着勿扰,或者通知设置里关了 Windows PowerShell | 按 Win+N 在通知中心里找;设置 › 系统 › 通知 里把 Windows PowerShell 打开 |
| 切了 CC Switch 的供应商之后,通知不响了 | 切换时整份重写了 settings.json,hooks 被抹掉 | 把第一步那段话再发一次 |
| 它说建计划任务超出这个文件夹,不肯做 | 知识库 CLAUDE.md 里写了不碰文件夹以外的东西 | 再说一句:这是我要的,建计划任务不算读写文件夹外的文件 |
| 它回完话弹了一条,之后再没动静 | 闹钟那一轮还在整理,或者没跑起来 | 再等几分钟;还没有,就让它看任务的上次运行结果和 巡查日志 里今天那份 |
| 巡查日志里写「找不到 claude 命令」 | 闹钟跑起来时找不到 claude 装在哪 | 让 Claude Code 查到 claude 的完整路径,换进 巡查收件箱.ps1 里那行,保持原来的编码 |
| 巡查日志里有「被拒的动作」 | 它在命令前加了 cd、用了组合命令,或者想删文件 | 看清是哪条。删除和联网是故意禁的;组合命令它通常会换成单条再试 |
| 巡查日志里只有「没跑成」 | 模型接口没连上,或者 CC Switch 没开 | 看「原样输出」那一段报的错;手动跑一次 claude -p 试试 |
| 到点了没跑 | 没设成拔电源也跑,或者合盖睡眠、关机、没登录 | 让它删掉重建,并说清拔电源也要跑;任务计划程序里看「上次运行结果」 |
| 建任务时报「拒绝访问」 | 学校或公司管控的电脑不让建计划任务 | 换自己的电脑 |
课后
| 时点 | 做什么 |
|---|---|
| 今晚睡前 | 「知识库巡查」每 10 分钟一次太勤。让 Claude Code 删掉,或者改成每天两次 |
| 本周内 | 小组项目里要查资料的那个 AI 模块,按下午的三问选 RAG、Wiki 还是目录,选了哪种、为什么,写进项目说明 |
| 交作业、拷给别人之前 | 打开 练习1_RAG\硅基流动key.txt,删掉 key 那一行 |
| 写作业二的这一周 | 行业资料丢进收件箱,让闹钟替你编进知识库;写报告时先问知识库,数字回原文核 |
| 10 月 28 日 18:00 前 | 个人作业二交平台:报告和交互记录。想上台的在平台报名 |
| 11 月 10 日 23:59 前 | 终期材料交平台:报告 PDF、展示页 zip、会话记录 zip |
| 课程结束或不再用了 | 让 Claude Code 把「知识库巡查」删掉;不想要通知了,让 Claude Code 把 settings.json 里 hooks 那一段删掉 |
练习2_知识库\ 别删,也别再挪。真要挪,挪完让 Claude Code 把「知识库巡查」删了重建,不然闹钟找不到脚本。以后都在那里启动 Claude Code,资料丢进 收件箱\,闹钟替你整理。延伸阅读
- Karpathy · llm-wiki 练习二的出处
- Anthropic · Contextual Retrieval 练习一每段前面加一行哪家银行、原报告第几页,是这篇办法的简化版