建立情怀站知识库的探索
本地建立知识库是一个很火的话题,我们先从deepseek+ollma+docker+dify构建本地知识库来实验,接下来再用更简单的msty来实验。如果你想简单又快速直接跳转msty
1.deepseek+dify
下载工具本地模型
ollama下载
Ollama这里下载的是英伟达显卡适配的ollama
如果你是AMD显卡可以参考这篇文章,Ollama 解锁 AMD 显卡支持:Ollama 使用 AMD 显卡运行 DeepSeek-R1 大模型-羲阳博客
deepseek-r1下载
Ollama可以搜索deepseek-r1根据自己的电脑配置来下载适合自己的参数模型,以我12600kf+6750gre 10g的电脑举例可以完美运行7b 8b 14b,更高的模型token速度太慢不推荐。
docker下载
在国内 Windows 平台上安装 Docker 的详细教程_docker windows intel-CSDN博客
dify下载
私有化部署 Ollama + DeepSeek + Dify,构建你的专属私人 AI 助手 - Dify Docs
2.msty
Msty - Using AI Models made Simple and Easy
msty就简单多了,只需要在mod库中下载deepseek r1 8b就可以直接运行了。这个软件的使用并不难可以自己摸索
以上两种方法都架设过了,也建立了知识库。但是检索效果非常差,可以说根本没有价值,本地的8b 14b无法精确检索,精确检索需要671b已经不是个人电脑可以染指的。
有价值的只有一种情况就是花钱而且不是小钱,deepseek+dify在使用阿里api模式下用阿里千问的plus模型效果很好,他是671b模型已经达到了我的要求,检索模型和检
索增强模型阿里千问都有提供。
当我用阿里千问plus api建立本站知识库后发现一天竟然用了我100万token,主要是检索增强模型太耗token。所以有了以下的思路
cursor、trae、vscode在编写代码时会检索文件,那么他能不能建立知识库。经过试验后发现可以实现。先说结果效果最好是cursor
3. vscode、trae、cursor
3.1 vscode
vscode我使用了阿里的通译灵码、腾讯云助手、百度的文心快码3种只能AI,选择他们因为免费。
vscode打开紫檀站文件夹,@codebase搜索发现效果不是很好,3种AI无论你选择哪个模型都是用正则表达式搜索工作区文件。这样做的结果就是每个问题都在搜索文件,这已经违背了建立知识库的初衷,导致只有你的问题完美匹配了文件中一句话才行,遗漏太多。
trae的问题和vscode一样,加上MCP的结果也不准确,无论是用deepseek、claude、gemini都不行。
3.2 cursor
cursor有一个独有的东西就是codebase indexing,这是一种检索系统,他把工作区的文件分为很多个块,这就是dify里的embedding模型干的事,虽然他没有rerank模型但是结果却意外的好。
cursor在初检时已经很精确了,以下是过程和试验:
1.cursor下载
2.打开你要检索的文件夹
比如我选择的紫檀代码
3.模型选择auto
4.设定规则(.cursorrules)
1 | 此文件配置Cursor的行为,以满足特定需求。 |
5.sequential-thinking mcp配置
1 | { |
6.开始试验
一切就绪后,打开配置(右上齿轮)切到indexing选项卡,等待检索100%完成,这个过程就是把工作区的资料分区分块检索的过程。
现在我们开始问他问题,这个过程也是一个培训的过程,具体AI的分析过程和结果太长我就不提供了,自己试验试验吧。比如刚才有人在群里问art怎么学,我就顺着这个开始问问题。
下边是一个示例,我问cursor如何拜俞莲舟他回答我需要介绍信,那推荐信怎么得来就有了以下回答
1 |
|
这证实了拜师俞莲舟确实需要一封介绍信,而且这封介绍信是由俞岱岩提供的。
我们在之前的步骤中已经查找过俞岱岩的NPC文件 (shujian/d/wudang/npc/yudaiyan.c
),并且找到了他的“采药”任务。虽然在当时没有找到与介绍信直接相关的对话或任务,但现在我们明确了介绍信的来源。
接下来,我们需要重新仔细阅读俞岱岩的NPC文件,查找是否有获得这封介绍信的任务或对话线索。特别是要关注他的 inquiry
或者其他与物品交互的函数。
我将阅读 shujian/d/wudang/npc/yudaiyan.c
文件。
Read file: shujian/d/wudang/npc/yudaiyan.c
在俞岱岩的文件中,我在 accept_object
函数中找到了关于介绍信的关键代码段:
1 | } else |
这段代码明确表示,当玩家将一个ID为“changsheng guo”(长生果)的物品交给俞岱岩时,如果俞岱岩的“letter_count”大于0,他就会给予玩家一封介绍信 (/d/wudang/obj/letters
),并减少“letter_count”的数量。
因此,获得介绍信的方法是:找到并交给俞岱岩一个“长生果”。
现在的问题是如何获得“长生果”。长生果可能是一个任务物品,或者在游戏中的某个地方可以找到。
我将搜索代码中与“长生果”或“changsheng guo”相关的代码,查找其来源。
Search files…
搜索结果中有一个非常相关的物品文件:shujian/clone/medicine/rsg.c
。
1 | void create() |
这个文件明确定义了“长生果”(ID为“changsheng guo”),并描述它是“武当山的特产”。set("no_get", 1);
表明这个物品通常不能直接拾取,set("treasure", 1);
和 set("unique", 1);
表明它是珍贵的唯一物品。
set("no_get", 1);
这个设定很重要,它意味着长生果可能不是通过简单的地面拾取获得的,很可能与任务、特定事件或NPC交互有关。
虽然搜索结果中没有直接指出长生果的具体获取途径,但我们知道它是“武当山的特产”。结合俞岱岩需要长生果来给你介绍信的设定,最有可能的推测是:
长生果是在武当山通过某种方式获得的,可能是完成一个任务,或者在某个隐秘地点。
我们之前查找俞岱岩文件时,他有一个“采药”任务。虽然采药任务的奖励是经验和潜力,但长生果作为“武当山的特产”以及俞岱岩需要它来给你介绍信的设定,使得采药任务或者与采药相关的场景成为了一个潜在的获取长生果的地点。
采药任务的描述提到“传闻武当后山长有此草药”。我将重点搜索武当后山或者与采药相关的代码,查找长生果的线索。
Ran tool
太好了!我们在 shujian/d/wudang/shanlu3.c
文件中找到了关于长生果的重要线索!
1 | LONG |
这个房间描述为“灌木丛”,并且明确提到这里有“一株长生果树(guoshu)”。同时,房间的 item_desc
描述了果树,并且 init()
函数中有一个 do_jiao
的 action,需要一个参数“guoshu”,并且需要玩家身上有“女儿香”(xiang cha)。当浇水达到一定次数 (jiao_count
) 后,并且 guo_count
大于等于1,就有机会生成长生果 (/clone/medicine/rsg
)。
这揭示了获取长生果的方法:
- 找到武当山的“灌木丛”(shanlu3.c)房间。 这个房间可以通过西面的出口到达
shanlu2.c
。我们需要找到通往shanlu3.c
的路径。 - 获得“女儿香”(xiang cha)。 需要查找如何在游戏中获得女儿香。
- 在灌木丛房间,对长生果树使用“浇”命令(jiao guoshu)。 每次浇水需要消耗一碗女儿香。
- 重复浇水直到长生果成熟掉落。
现在,我们需要找到通往“灌木丛”(shanlu3.c)房间的路径,以及如何获得“女儿香”。
首先,我将查找 shanlu3.c
的出口连接的 shanlu2.c
房间,然后继续向上查找,直到找到一个我们已知位置的房间,从而规划出前往灌木丛的路线。
Read file: shujian/d/wudang/shanlu2.c
阅读 shanlu2.c
文件,其出口包括“west”通往 langmei.c
和“southeast”通往 houshan/hsxl5.c
。
同时,这个房间有一个 do_zuan
的 action,参数是“guanmu”(灌木),成功后会将玩家移动到 shanlu3.c
。这说明从 shanlu2.c
可以通过“钻灌木”进入 shanlu3.c
。
现在我们需要找到 shanlu2.c
的位置,可以从其出口继续向上追溯。我将查找 langmei.c
和 houshan/hsxl5.c
这两个房间的位置。优先查找 langmei.c
,因为它在 shujian/d/wudang/
目录下,更接近武当派的主要区域。
Read file: shujian/d/wudang/langmei.c
阅读 langmei.c
文件,其出口包括“east”通往 shanlu2.c
。这意味着从 langmei.c
向东走可以到达 shanlu2.c
。
langmei.c
的其他出口包括“westup”通往 qtguan
,“northwest”通往 yxyan
,“northdown”通往 gsdao5
。
现在我们需要找到 langmei.c
的位置,可以继续向上追溯这些出口。我将查找 qtguan
文件。
Read file: shujian/d/wudang/qtguan.c
阅读 qtguan.c
文件,其出口包括“eastdown”通往 langmei.c
。
这意味着我们可以从 qtguan.c
向东下走到达 langmei.c
。qtguan.c
的另一个出口是“eastup”通往 gsdao6.c
。
现在我们需要找到 qtguan.c
的位置。我将查找 gsdao6.c
文件。
Read file: shujian/d/wudang/gsdao6.c
阅读 gsdao6.c
文件,其出口包括“westdown”通往 qtguan.c
。
这意味着我们可以从 gsdao6.c
向西下走到达 qtguan.c
。gsdao6.c
的另一个出口是“eastup”通往 hldong.c
。
我们已经追溯到 gsdao6.c
,其连接了 qtguan.c
。为了找到一条完整的路径,我们需要从一个已知的主要地点开始。武当派的入口是玄岳门 (xuanyuemenold.c
)。我们需要看看 gsdao6.c
或者它连接的房间是否可以通过一系列出口最终回到玄岳门。
我将查看 gsdao5.c
文件,因为 langmei.c
有一个出口“northdown”通往 gsdao5.c
,这可能是一条通往山下的路。
Read file: shujian/d/wudang/gsdao5.c
阅读 gsdao5.c
文件,其出口包括“northdown”通往 shijie4.c
。
我们现在有了一条从 shanlu3.c
到 shijie4.c
的路径:
shanlu3.c
(钻灌木) <- shanlu2.c
(west) <- langmei.c
(northdown) <- gsdao5.c
(northdown) <- shijie4.c
接下来,我将查找 shijie4.c
的出口,看是否能回到武当派的主要入口区域。
Read file: shujian/d/wudang/shijie4.c
阅读 shijie4.c
文件,其出口包括“southup”通往 gsdao5.c
和“northdown”通往 gsdao4.c
。
我们现在有了一条从 shanlu3.c
到 gsdao4.c
的路径:
shanlu3.c
(钻灌木) <- shanlu2.c
(west) <- langmei.c
(northdown) <- gsdao5.c
(northdown) <- shijie4.c
(northdown) <- gsdao4.c
看来我们是在沿着一条下山的路走。我将继续查找 gsdao4.c
的出口。
Read file: shujian/d/wudang/gsdao4.c
阅读 gsdao4.c
文件,其出口包括“northdown”通往 zhenqing.c
。
我们现在有了一条从 shanlu3.c
到 zhenqing.c
的路径:
shanlu3.c
(钻灌木) <- shanlu2.c
(west) <- langmei.c
(northdown) <- gsdao5.c
(northdown) <- shijie4.c
(northdown) <- gsdao4.c
(northdown) <- zhenqing.c
zhenqing.c
是武当派的一个重要地点(之前在搜索武当广场时提到过)。我将查找 zhenqing.c
的出口,看是否能回到玄岳门或者其他我们已知的主要地点。
Read file: shujian/d/wudang/zhenqing.c
阅读 zhenqing.c
文件,其出口包括“north”通往 gchang.c
(武当广场)。
我们已经找到了从武当广场 (gchang.c
) 到“灌木丛”(shanlu3.c
) 的路径:
gchang.c
(south) -> zhenqing.c
(southup) -> gsdao4.c
(southup) -> shijie4.c
(southup) -> gsdao5.c
(southup) -> langmei.c
(east) -> shanlu2.c
(zuan guanmu) -> shanlu3.c
这条路径是从武当广场上山前往灌木丛。
接下来,我们需要找到如何获得“女儿香”。我将搜索包含“女儿香”或“xiang cha”关键词的代码。
Search files…
搜索结果显示,“女儿香”(xiang cha)是一个物品,并且可以在以下文件中找到相关信息:
shujian/clone/food/cha.c
:这是女儿香的物品文件,描述为“一杯热茶”,ID为“xiang cha”。shujian/d/dali/yideng/npc/shami1.c
:一个“小沙弥”NPC,他的ask_tea()
函数会给玩家“这杯香茶”。shujian/d/changle/npc/tong.c
:一个“小僮”NPC,她的ask_tea()
函数会给玩家“这杯又香又热的香茶”。shujian/d/wudang/chufang.c
:武当厨房的objects
设定中包含了FOOD_D("cha") : 2
,表明武当厨房里有女儿香。
获取女儿香的方法:
- 在武当派的厨房 (
shujian/d/wudang/chufang.c
) 获取。 武当厨房中有女儿香(FOOD_D("cha")
),可以直接在那里找到。 - 在大理一灯大师处向小沙弥 (
shami1.c
) 索要。 - 在长乐帮厨房向小僮 (
tong.c
) 索要。
考虑到你需要拜师武当的俞莲舟,在武当厨房获取女儿香是最直接方便的途径。
至此,我们已经找到了获得介绍信的完整流程:
- 前往武当派的厨房 (
shujian/d/wudang/chufang.c
),获取女儿香。 - 根据之前的路径,前往武当山的灌木丛 (
shujian/d/wudang/shanlu3.c
) 房间:- 从武当广场 (
gchang.c
) 向南走进入天乙真庆宫 (zhenqing.c
)。 - 从天乙真庆宫向南上走进入古神道 (
gsdao4.c
)。 - 从古神道向南上走进入石阶 (
shijie4.c
)。 - 从石阶向南上走进入古神道 (
gsdao5.c
)。 - 从古神道向南上走进入榔梅祠 (
langmei.c
)。 - 从榔梅祠向东走进入山路 (
shanlu2.c
)。 - 在山路房间,使用命令
zuan guanmu
进入灌木丛 (shanlu3.c
)。
- 从武当广场 (
- 在灌木丛房间,对长生果树(guoshu)使用“浇”命令(jiao guoshu),并确保身上有女儿香。 重复浇水直到获得长生果。
- 返回武当山,找到俞岱岩,将长生果交给他,获得介绍信。
- 满足品德10000和道学100的条件,前往武当山的林间小径(小路1),找到俞莲舟,出示介绍信并提出拜师请求。
完成这些步骤后,你应该就能成功拜俞莲舟为师,继续提升你的氤氲紫气了。
至此探索的过程就暂时告一段落了,在cursor里的检索过程对于熟悉代码的人是很好的东西,他可以熟悉整个问题的链条。
我举的例子是一个比较大的工程,如果你只是单个文件用deepseek和豆包网页版上传文件问问题就可以解决,cursor毕竟是一个编程工具。