Community研究与数据分析github.com

colin4k/benben-kingdom-skill

奔奔王国(Benben Kingdom)游戏玩家专用攻略助手。读取本地 markdown 文件目录,构建 JSON 索引文件,基于关键词/BM25 检索回答关于奔奔王国的问题。**只要用户消息里出现"奔奔"或"奔奔王国"就必须触发本 skill**,不论是问攻略、问英雄搭配、问兑换建议、问活动玩法,还是想把一篇新的公众号文章/网页/本地 md 加入知识库。

兼容平台Claude Code~Codex CLI~Cursor
npx add-skill colin4k/benben-kingdom-skill

name: benben-kingdom description: 奔奔王国(Benben Kingdom)游戏玩家专用攻略助手。读取本地 markdown 文件目录,构建 JSON 索引文件,基于关键词/BM25 检索回答关于奔奔王国的问题。只要用户消息里出现"奔奔"或"奔奔王国"就必须触发本 skill,不论是问攻略、问英雄搭配、问兑换建议、问活动玩法,还是想把一篇新的公众号文章/网页/本地 md 加入知识库。

Benben Kingdom Helper(奔奔王国攻略助手)

把本地 markdown 格式的奔奔王国攻略笔记按 ## 标题切分为 section,存入 JSON 索引文件,所有查询都通过 BM25 关键词检索完成。

核心能力

  1. 构建/重建索引 — 把配置目录下所有 md 文件按 ## 标题切分为 section,写入 JSON 索引文件
  2. 语义查询 — 对玩家问题做 BM25 关键词检索,返回最相关的片段,由 Claude 结合上下文用游戏术语组织回答
  3. 增量更新 — 可以新增/更新一篇本地 md、网页文章或微信公众号文章到知识库

触发判断

当用户消息包含 "奔奔""奔奔王国" 时触发。

以下情形分别走对应流程:

  • 问攻略/问问题 → 【查询流程】
  • 提供 md 路径或 URL 要求加入 → 【增量更新流程】
  • 首次使用 / 要求重建索引 / 索引为空 → 【初始化流程】

查询流程(所有问题都走这里)

纯关键词/BM25搜索,无需embedding模型或向量数据库。

  1. 运行:python -m scripts.query --question "<用户问题>" --top-k 8
  2. 解析返回的 JSON(结构见 references/schemas.md),取其中的 _footer 字段备用:
    • chunks:最相关的原文片段(含来源文件、标题、heading、content、tags、得分)
    • concepts:空数组(已移除概念抽取)
    • sources:命中的文件清单(去重)
    • max_score:最高BM25得分
    • _footer:固定 footer 文本
  3. 用检索结果组织回答,末尾附上步骤2取到的 _footer 值:
    • 用奔奔王国自己的术语("传说""集结""驻防""夯""白嫖""体力""号角""试炼""秘境""四代""三代"……不要翻译成通用语言)
    • 像个打过这游戏的老玩家,直接给结论和理由,不套模板
    • 检索结果里有"坑"提示("千万别""注意")一定要带
  4. max_score 为 0 或结果为空时不要硬编,如实告知"笔记库里没有相关内容,要不要把新攻略加进来?"

初始化流程(首次使用)

第一步 — 配置知识库路径

python -m scripts.setup --set-vault /path/to/your/vault

/path/to/your/vault 是你存放奔奔王国攻略 markdown 文件的目录。

第二步 — 构建索引

python -m scripts.index_vault

扫描 vault 目录所有 .md 文件,按 ## 标题切分 section,生成 ~/.benben-kingdom/index.json

后续使用只需直接提问,索引已预建好。

增量更新流程

A. 本地 markdown 文件

python -m scripts.add_source --path <绝对路径>

B. 网页 / 微信公众号 URL

  1. wechat-article-pdf skill(或其他工具)把 URL 转成 markdown,保存到临时文件
  2. 运行:
python -m scripts.add_source --path /tmp/benben-xxx.md \
  --origin-url <原URL> --title "<文章标题>"

C. 直接粘贴的文本

写入临时 md 后走 A 路径,用 --title 指定标题。

每次增量更新后自动重建索引,无需额外操作。

脚本速查

所有脚本从 skill 目录运行 python -m scripts.<name>

脚本用途关键参数
setup.py检查依赖、初始化--check, --reset
index_vault.py构建 JSON 索引--vault <路径>
add_source.py新增/更新单篇 md 并重建索引--path, --origin-url, --title
query.py关键词/BM25 检索,返回 JSON--question, --top-k

设计原则

  • 关键词检索是唯一入口:所有问题都必须走 query.py,绝不直接读 md 文件回答。
  • 确定性操作归脚本,语言理解归模型:索引构建、检索逻辑清晰可靠;如何组织回答由 Claude 判断。
  • 不捏造:检索不到就说没有。游戏版本更新快,错答比没答更坑人。
  • 用玩家黑话:玩家说"夯""白嫖""卡点""上号子""进队伍",直接用才有老哥指点的味道。

参考文档

  • references/schemas.md — 脚本 JSON schema / 数据库表结构
  • references/configuration.md — 配置项说明
  • references/troubleshooting.md — 常见报错(索引文件缺失、Vault 路径错误等)

相关技能