zhujue-characters

Other

按人物检索并导入长篇小说《主角》(陈彦 著,茅盾文学奖)的相关章节,作为后续任务的背景资料。当用户提到《主角》里的人物——主角忆秦娥(本名易招弟、易青娥),或胡三元、胡彩香、米兰、廖耀辉、封潇潇、楚嘉禾、刘红兵、秦八娃、石怀玉、苟存忠/古存孝/周存仁/裘存义(存字辈老艺人)、单仰平、薛桂生、朱继儒、黄正大、宋雨、刘忆 等,并要求分析人物、梳理关系/情节、找原文、问答、写评论等——先用本 skill 把"包含这些人物的章节"定位并导入正文,再据此完成具体任务。同一人物有多个名字(如易招弟→易青娥→忆秦娥),本 skill 会自动归并。也可按戏曲剧目/角色(李慧娘、白娘子、胡九妹/狐仙劫 等)检索。

Install

openclaw skills install zhujue-characters

《主角》人物 → 章节 导入器

小说全文已内置于本 skill 的 txt/ 目录(part0000.html~part0151.html,Calibre 导出),共 151 章正文:上部 55、中部 50、下部 45、后记,外加 part0000.html 目录页。skill 自包含、可整体迁移。本 skill 把"按人物找章节"做成查表 + 取文,只导入相关章节,避免整本塞进上下文。

何时使用 / 不使用

  • 使用:用户提到《主角》中的具体人物,并要对人物/关系/情节做分析、问答、找原文、写作等——本 skill 负责定位并导入背景章节,导入后再完成用户真正的任务。
  • 不使用:用户只泛泛说"主角""男主"等普通词、与本小说无关;或用户已自行给出原文。注意"主角"是普通词,仅当语境指向陈彦这部小说(出现上述人名/书名)时才触发。

数据与脚本

  • txt/内置的小说全文(151 章 HTML,脚本读取时自动去标签)。
  • data/characters.json — 37 条人物/角色:规范名、别名(aka)、类别、简介、出现章节列表(已建好索引)。
  • data/chapters.json — 每个 partXXXX.html → 部/章标签(如 上部·二十四)、字数。
  • scripts/query.py — 运行时查询/导入工具(主要入口)。
  • scripts/build_index.py — 一次性重建索引(人物表已人工校准;仅当文本变动或要增改人物时重跑)。
  • references/characters.md — 人类可读的人物名册(含别名与简介),需要总览时读它。

工作流(每次按需)

第 1 步 · 定位章节。 从用户问题里提取人名(任意叫法皆可,别名会自动归并),调用:

python3 scripts/query.py 人物A 人物B ...

输出会给出:解析到谁、并集/交集章节数、采用的集合及章节清单(带 部·章 标签和文件路径)。

第 2 步 · 选对集合(交集 vs 并集)。 按问题性质选:

  • 两人/多人之间的关系、对手戏、互动、冲突 → 交集(同时出现):--all(默认在交集非空时就用交集)。
  • 任一人各自的经历、或要尽量全的素材 → 并集--any
  • 单个人物 → 其全部出现章节。
  • 想聚焦某阶段 → 加 --part 上部|中部|下部|后记

第 3 步 · 导入正文作背景。 章节不多(≈≤15)时,直接生成干净正文再读入:

python3 scripts/query.py 人物A 人物B --part 中部 --text --out /tmp/zhujue_bg.txt

然后用 Read 读 /tmp/zhujue_bg.txt(已去 HTML 标签、带章节分隔)。也可直接对清单里少数关键章节partXXXX.html 逐个 Read。

第 4 步 · 基于导入的原文完成用户的真正任务(分析/问答/找引文/写作等)。回答须依据导入正文,不臆造;正文未覆盖处如实说明,可建议扩大检索(换 --any、去掉 --part、或加共现人物)。

护栏:集合过大怎么办

  • 主角忆秦娥出现在全部 151 章。绝不要因为问题涉及她就导入整本。务必收窄:
    • 与另一人物取交集忆秦娥 楚嘉禾 --all → 只看二人对手戏章节);
    • 限定 --part
    • 或只挑清单里最相关的几章读。
  • query.py 命中超过 25 章会打印提醒。--text 默认最多导出 15 章(--max N 可调),先收窄优于硬调大。

别名(同一人多名)

索引已归并常见别名,用户用任一名字都能命中,例如:

  • 忆秦娥 = 易招弟 = 招弟 = 易青娥 = 青娥 = 秦娥(改名贯穿全书:易招弟→易青娥→忆秦娥)
  • 楚嘉禾=嘉禾;苟存忠=老苟;古存孝=老古;薛桂生=薛团;石怀玉=怀玉;宋光祖=宋师;胡三元=三元
  • 易辨混的两组(已分开,勿混):导演"封子/封导" ≠ 小生"封潇潇";省城名演员"李青娥" ≠ 主角"易青娥"。
  • 不确定某名字指谁:python3 scripts/query.py --resolve 名字;看全部人物:python3 scripts/query.py --list 或读 references/characters.md

文本来源与重建索引

脚本读取顺序:环境变量 ZHUJUE_TXT > skill 自带 txt/ > /home/jjw/zj/txt。默认即用自带 txt/,无需任何配置。

要增删/修正人物与别名时,编辑 scripts/build_index.py 里的 CHARACTERS,然后

python3 scripts/build_index.py                 # 用自带 txt/
ZHUJUE_TXT=/path/to/other/txt python3 scripts/build_index.py   # 指向别处的文本