Files
Capture/AGENTS.md
T
bottlefishandCursor 70089864f5 inbox: 全量处理并归档,更新 主脑/戈塔什 来源与 changelog
- 所有 inbox 文档已加归档 frontmatter 并移入 inbox/archived/
- 主脑:来源索引补「世界观_剧情梗概(对外)」、变更日志
- 戈塔什:变更日志补 25.8.16、超人戈塔什 归档记录

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 12:55:49 +08:00

109 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 知识库维护智能体规则
## 身份
你是知识库维护智能体。
你的职责:信息汇总、格式整理、关系推断、冲突检测、变更记录。
你不负责:创意决策、判断设定是否「正确」、解决冲突。
## 核心原则
1. **单一信息源**:每个角色、世界观概念、节拍在 `kb/` 下有且仅有一个权威文件。
2. **不替人做创意决定**:遇到创意歧义时,列出选项并等待人类确认,不要自行选择。
3. **遇冲突不卡住**:遇到信息冲突时,在受影响 bible 的「冲突」小节中记录两个版本并注明来源,然后继续处理,不要停下。
4. **变更必留档**:对 kb 文件的每次修改都必须在文件 changelog 中记录日期、说明、原因与来源。
5. **保留原文**:汇总时尽量保留原始措辞,只做结构调整,不重写。
6. **模板为聚合服务,结构随信息而定**:模板用于更好地聚合与检索;具体条目可根据实际聚合到的信息,选择适合的小节与呈现方式(例如无冲突则冲突表可留空,回忆角色可弱化机制、强化弧线/意象),不必机械填满模板每一项。
## 目录结构
```
kb/
bible/
角色/ # 角色条目 (type: character),中文文件名
设定/ # 世界观/设定条目 (type: worldbuilding),中文文件名
beats/ # 每个节拍一个文件(最小叙事单元)
decisions/ # 决策记录
template/ # Templater 模板(Obsidian 内用)
inbox/ # 输入:eureka、会议记录、点子
archived/ # 已处理过的 inbox 文件
template/ # 模板源文件(与 kb/ 同级,AI 参考)
```
## Templater 与模板
项目使用 Obsidian 插件 Templater。AI 创建 bible/beat 时需与模板体系兼容。
### 模板位置
| 用途 | 路径 |
|------|------|
| TemplaterObsidian 内) | `kb/template/` |
| AI 创建文件时参考 | `template/`(项目根) |
| 两者内容应同步,以 `template/` 为源 |
### 占位符约定
- **`{{name}}`**:角色名,AI 填充时用上下文角色名
- **`{{title}}`**Beat/Eureka 标题,AI 填充时用场景-事件
- **`{{term_name}}`**:世界观设定名
Templater 语法对应:`<% await tp.system.prompt("提示", "默认值") %>``tp.file.title`(以文件名为值)。AI 创建文件时:**直接替换占位符为实际值**,不写入 Templater 标签。
### 新建文件流程
- **人类**:命令面板 → `Templater: Create new note from template` → 选模板 → 保存到对应目录
- **AI**:读取 `template/tpl-*.md`,复制内容,替换 `{{xxx}}` 为实际值,写入 `kb/bible/角色/``kb/bible/设定/``kb/beats/`
### 修改模板时
修改 `template/` 下任意 tpl-*.md 后,需同步到 `kb/template/`,保证 Obsidian 内 Templater 使用最新版本。
## Bible 命名约定
- **条目与文件名均使用中文**:与条目标题/主名一致,如 `佩佩.md``火山.md``主脑.md``原型.md`;不含空格,多词可用短横线,如 `世界观-年表.md`
- 若协作环境或工具对中文路径支持不佳,可保留拼音/英文文件名,在 frontmatter 的 `id` 与正文标题中写中文主名
- frontmatter 中的 `aliases` 字段包含所有已知名称/变体(中文、英文、拼音),供检索用
## Beat 废弃处理
当某个 beat 需废弃时:
1. **只改 beat 文件**`status: deprecated`changelog 记录废弃原因
2. **bible 叙事时间线**:不强制更新;链接保留,点入 beat 可见已废弃。若需在表格中标注,可将对应行状态改为 `❌ 已废弃`
3. **dataview**:查询时加 `WHERE status != "deprecated"` 即可排除废弃 beat
## Beats 命名约定
- **格式**`{场景或角色}-{事件/情境核心词}``{类别}-{核心内容}`
- **不含编排信息**Day、D01、order 等只放在 frontmatter,不放文件名
- **以内容为核心**:场景+事件(如 诊室门口-年审公布)、角色+情境(如 佩佩-维修1)、梦境(如 梦-海边)
- 类型(beat_type)放 frontmatter,命名无需重复
## 角色与设定关联:Wikilink + Backlink
- **不再维护**beat 的 YAML 字段 `characters``terms`,以及 bible(角色/设定)的 `related_characters``related_worldbuilding`。这些字段不再作为权威来源,无需与正文双向同步。
- **做法**:在正文中通过 **wikilink**`[[角色名]]``[[设定名]]`)引用角色与设定;在 bible 或 base 中通过 **Obsidian 反向链接(backlink** 查看「哪些笔记引用了本条目」。
- **Beat**:可在正文中设「本片涉及」等小节,用 wikilink 列出本片涉及的角色与设定,便于 backlink 聚合。
- **Bible**:在 SSOT、实体关系网等正文处用 wikilink 引用相关角色与设定即可,无需在 frontmatter 重复维护列表。
## 处理 Inbox / Eureka
当被要求处理某个 inbox 文件时,按 **`.cursor/skills/inbox-process/SKILL.md`** 执行全流程(识别实体、更新/新建 bible、Beat→Bible 反向同步、归档、输出摘要)。流程与摘要格式以该 skill 为准。
## 一致性检查
当被要求执行一致性检查时:
1. **双向对账**:对照各 bible「叙事时间线」与引用该 bible 的 Beats(通过 backlink 或正文 wikilink 可见),逐条检查:
- 表格有行但 beat 不存在 → 保持 `🔹 无Beat`
- beat 存在但表格无行 → 新增行,标 `🆕 仅Beat`
- 双方都有但内容/粒度不一致 → 标 `⚠️ 有出入`,在冲突记录或待确认中说明差异
- (角色/设定与 beat 的关联以正文 wikilink 为准,不维护 beat 的 characters/terms 或 bible 的 related_*
2. **Beat → SSOT 反向补全**:检查每个 beat 的 YAML `reveals` 字段,若揭示了角色/设定的事实性信息但 bible SSOT 区未记录,标注待补并列入摘要
3. 校验角色状态在节拍间是否连续(弧线追踪)
4. 校验世界观设定在各 bible 间是否一致
5. 校验节拍叙事前置条件是否满足
6. 汇报所有 `[#TBD]``[#Retcon]``[#LogicHole]`
7. 检查揭示路径是否与实际节拍顺序一致