mirror of
https://github.com/Cola-Echo/memory-manager-concurrent.git
synced 2026-06-06 12:25:53 +00:00
主要更新: - 总结世界书并发拆分功能(自动检测约5万字拆分为Part) - Part调试面板 - Amily表格并发填充模块(src/table-filler/) - 合并去重开关 - 内置默认独立模板 - 多主题支持优化 - 添加.gitignore排除不必要文件 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
27 lines
79 KiB
JSON
27 lines
79 KiB
JSON
{
|
||
"version": "1.0",
|
||
"templates": {
|
||
"角色表": {
|
||
"template": "# Amily-Fanhua dataTable 说明\n\nAmily2 Table preset 1.09 By:繁华\n\n## 1. 用途\n\n`dataTable` 是一个用于存储和管理故事数据的核心系统。它通过 `Amily2TableData` 占位符注入一系列格式化的文本块,作为后续内容的关键参考。你的任务是根据故事发展,通过调用指定的函数来动态更新这些表格。\n\n## 2. 数据结构与格式\n\n注入的数据由多个表格块组成,每个表格块都遵循以下结构:\n【说明】:\n· [表格用途和规则的说明]\n<[tableName]内容>\n| rowIndex | [colIndex]:[colName] | [colIndex]:[colName] | ... |\n| ---------- | -------------------- | -------------------- | --- |\n| [rowIndex] | [单元格数据] | [单元格数据] | ... |\n...\n</[tableName]内容>\n【增加】: · [插入新行的触发条件]\n【删除】: · [删除行的触发条件]\n【修改】: · [更新行的触发条件]\n\n---\n\n### 格式解析\n\n* `* [tableIndex]:[tableName]`: 表格的标题行,包含表格的索引(`tableIndex`)和名称(`tableName`)。\n* `【说明】`: 提供了表格的详细用途和填写规则。\n* `<[tableName]内容>`: 包含了使用 Markdown 格式的实际数据表格。\n * 表头行定义了每一列的索引 (`colIndex`) 和名称 (`colName`)。第一列名为 `rowIndex`,用于标识每行数据的唯一索引。\n * 后续每一行都是一条数据记录,第一列是该行的索引 (`rowIndex`),后面跟着对应列的单元格数据。\n* `【增加】`, `【删除】`, `【修改】`: 分别描述了你应该在何种剧情下对表格进行增、删、改操作。\n\n### 表格引用关系(若无其他表格数据可忽略)\n\n```\n角色表 ←┬─ 关系表(主体/相对角色)\n ├─ 物品表(物品归属)\n ├─ 组织表(组织归属)\n └─ 能力表(能力归属)\n\n组织表 ←── 物品表(物品归属)\n ←── 地点表(地点归属)\n\n角色表/物品表/地点表 ←── 任务表(涉及名称)\n```\n\n---\n\n### 以下为需要更新的表格内容\n\n<需要更新的旧表格>\n{{tableData}}\n</需要更新的旧表格>\n\n---\n\n## 3. 表格操作指南\n\n你需要根据每个表格的【说明】、【增加】、【删除】、【修改】规则来判断是否需要更新表格。如果需要,请在 `<Amily2Edit>` 标签内调用以下 JavaScript 函数。\n\n### 3.1. 操作函数解释\n\n* **插入行**: `insertRow(tableIndex, data)`\n * `tableIndex` (string): 目标表格的索引。\n * `data` (object): 一个对象,键为列索引 (`colIndex`),值为单元格数据。\n * 参考示例: `insertRow(\"3\", {\"0\": \"张三的家\", \"1\": \"偷偷用多年积蓄购买\", \"2\": \"两房一厅一厨一卫\", \"3\": \"张三(知情者:张三)\", \"4\": \"正常\", \"5\": \"LOC_001\"})`\n\n* **删除行**: `deleteRow(tableIndex, rowIndex)`\n * `tableIndex` (string): 目标表格的索引。\n * `rowIndex` (string): 要删除的行的索引。\n * 参考示例: `deleteRow(\"1\", \"0\")`\n\n* **更新对应行的某列**: `updateRow(tableIndex, rowIndex, data)`\n * `tableIndex` (string): 目标表格的索引。\n * `rowIndex` (string): 要更新的行的索引。\n * `data` (object): 一个包含要修改的列数据对象,键为列索引 (`colIndex`)。\n * 参考示例: `updateRow(\"3\", \"0\", {\"4\": \"破败\"})`\n\n### 3.2. 重要规范\n\n* **用户优先**: 当 `<user>` 明确要求修改表格时,其指令拥有最高优先级。\n* **忠于原文**: 所有操作必须基于当前剧情,严禁捏造信息。\n* **信息丰富**: 信息避免过度简洁丢失关键细节。\n* **数据完整**: 使用 `insertRow` 时,`data` 对象应包含所有列的数据。\n* **注释封装**: 所有在 `<Amily2Edit>` 标签内的函数调用都必须被一对 `<!-- -->` 注释完全包裹。\n\n#### 【通用规范】\n\n**空值处理**:所有列不得留空,禁止填入\"无\"、\"未知\"、\"空值\",必须使用\"N\"代替。\n\n**隐私标注规则**:\n- 触发条件:信息属于秘密、隐私、或仅特定角色知晓\n- 标注格式:在对应字段内容后添加\"(知情者:姓名A/姓名B/...)\"\n- 绝对禁止隐私泄露\n\n**ID生成规则**:\n- 新ID = 当前表格中最大ID序号 + 1,格式为[前缀]_XXX(如CHAR_001)\n- ID一旦分配,永久不变,不复用已删除的ID\n- 各表格前缀:CHAR_(角色)、REL_(关系)、ITEM_(物品)、ORG_(组织)、LOC_(地点)、ABIL_(能力)、QUEST_(任务)\n\n**时间格式**:精确时间格式为\"年月日-时分\",如\"2025年01月17日-17:45\",必须精确到分钟\n\n**数据校验**:\n- 空值检查:所有列不得留空\n- 整行完整性:确保每行所有列都有值\n- 名称列异常:禁删表格(角色、组织、地点、能力、任务)尝试从剧情修正;仅物品表可删除无效行\n- 一致性:确保表格间引用的名称相互对应(若无其他表格数据可忽略)\n\n**增量更新原则**:\n- 更新描述性字段(背景、描述、详情、功效、效果、代价等)时,必须保留原有内容并自然融入新信息,禁止覆盖替换\n- 正确示例:原内容\"出生于A城\"→更新后\"出生于A城,曾落水被救\"\n- 错误示例:更新后仅剩\"落水被救\"\n- 禁止输出\"追加:\"\"补充:\"\"核心背景:\"等格式标记\n\n**智能压缩**:\n- 若新信息与原有内容重复,不重复添加\n- 若新信息与原有内容可合并,整合为连贯语句\n- 消除冗余修饰,保持精炼\n- 示例:原\"核心成员:张三、李四\"新增\"李四离开王五加入\"→更新为\"核心成员:张三、王五\"\n\n**背景字段判定规则**(适用于角色背景、组织背景、地点背景):\n- 背景的定义:背景是过往简史,是已经发生且固定不变的历史事实\n- 背景更新的判定条件(必须符合以下至少一项叙事语境):\n * 剧情出现回忆、闪回场景\n * 角色主动讲述自己的过去经历\n * 通过第三方(他人讲述、文献、传闻)了解到的历史\n * 明确使用过去时态描述的往事(如\"三年前\"、\"曾经\"、\"当年\")\n- 时间判定(辅助验证):若任务表存在数据,该信息所述事件应发生在任务接受时间之前\n- 禁止写入背景的内容:\n * 当前剧情中正在发生的事件\n * 角色当前的状态、行为、想法\n * 未来的计划、目标、决心\n * 无法确定是过去还是现在的模糊信息(宁缺勿滥)\n\n### 3.3. 输出示例\n\n【错误示例】:函数的对象参数跨行拆分,且存在冗余换行,导致工具无法完整识别函数调用结构,调用失败。\n<Amily2Edit>\n<!--\n// 获得新物品\ninsertRow(\"1\", {\n \"0\": \"高级润滑剂\", \n \"1\": \"消耗品\", \n \"2\": \"1(瓶)\", \n \"3\": \"进口高档润滑剂,透明液体,香草香味\", \n \"4\": \"用于特殊服务时的身体准备\", \n \"5\": \"进口\", \n \"6\": \"张三\", \n \"7\": \"未使用\"\n})\n-->\n</Amily2Edit>\n\n【正确示例】:函数名与所有参数完整置于同一行,格式简洁无冗余,工具可精准识别并执行,调用成功。\n<Amily2Edit>\n<!--\n// 获得新物品\ninsertRow(\"1\", {\"0\": \"高级润滑剂\", \"1\": \"消耗品\", \"2\": \"1(瓶)\", \"3\": \"进口高档润滑剂,透明液体,香草香味\", \"4\": \"用于特殊服务时的身体准备\", \"5\": \"进口\", \"6\": \"张三\", \"7\": \"正常\", \"8\": \"ITEM_001\"})\n// 高级润滑剂被使用殆尽,从物品表删除\ndeleteRow(\"1\", \"0\")\n// 张三偷偷购买房子,新增地点\"张三的家\",判断属于隐私需要备注\"(知情者:张三)\"\ninsertRow(\"3\", {\"0\": \"张三的家\", \"1\": \"偷偷用多年积蓄购买\", \"2\": \"两房一厅一厨一卫\", \"3\": \"张三(知情者:张三)\", \"4\": \"正常\", \"5\": \"LOC_001\"})\n// 张三的家因年久失修破败了,需要更新\nupdateRow(\"3\", \"0\", {\"4\": \"破败\"})\n-->\n</Amily2Edit>\n\n---\n\n# 通用表格转换思考框架\n\n## 核心原则\n\n1. **表格驱动**: 以表格为单位进行检查,而非以叙事元素为单位\n2. **动态索引**: 通过表格名称识别类型,动态获取对应 tableIndex\n3. **精准匹配**: 严格对照每个表格的【说明】、【增加】、【删除】、【修改】规则\n4. **一次到位**: 每轮思考必须完成所有必要的表格操作,禁止遗漏\n5. **字段限制**: 严格遵守每个字段的字数和内容限制\n\n---\n\n## 思考流程 (<thinking></thinking>)\n\n请严格按此框架思考并在<thinking>标签内输出:\n\n<thinking>\n\n【阶段0:旧表格数据错误检查】\n核心目的:避免错误累积和延续,确保基于正确数据进行操作\n检查步骤:\n1. 读取旧表格数据:查看 <需要更新的旧表格> 中的所有表格数据\n2. 逐表检查(参照【通用规范】):\n - 空值检查、整行完整性、名称列异常、字段格式、一致性\n - ⚠️ 内容完整性检查(对照剧情核实):\n * 列检查:表格有哪些列名\n * 列内容:列内容是否有填错列\n * 内容检查:各列内容是否符合定义、说明、增删改等要求\n3. 错误修正:记录需要执行的修正操作\n\n---\n\n【阶段1:解析表格映射】\n查看 <需要更新的旧表格>,建立\"表格列`colIndex`→列名\"映射:\n- 1 → \"?\"\n- 2 → \"?\"\n...\n(注:列出所有列名)\n\n---\n\n【阶段2:角色表检查】\n⚠️ 关键规则:\n- ❌ 禁止删除(即使死亡)\n- ⚠️ 身体状态:2-6字,禁止解释原因、动作描述\n- ⚠️ 外貌/性器官特征:禁止临时变化(脸红出汗)和场景描述\n- ⚠️ 角色背景:必须通过【背景字段判定规则】验证后才能更新\n\n定位:找到\"角色表\"对应的 tableIndex\n检查清单:\n1. 新角色识别:剧情中是否有明确姓名的非路人角色首次出现?且该角色不在现有表格中?\n → 是:执行 insertRow,填写所有字段\n \n2. 现有角色更新:已有角色的以下信息是否发生变化?\n - 外貌特征(仅固定特征)\n - 着装与配饰变化\n - 身体状态(2-6字)\n - 关联角色\n - 性器官特征(仅客观物理描述)\n - 职业身份/所属组织/拥有能力\n - 角色背景(⚠️ 必须判定是否符合背景更新条件)\n → 是:执行 updateRow,只更新变化字段\n \n3. 背景更新判定:\n - 检查剧情中是否有回忆/闪回/自述过去/第三方讲述历史/过去时态描述\n - 若有,提取历史信息写入背景\n - 若是当前事件/近况/未来计划,禁止写入背景\n\n---\n\n【阶段3:重复检测与最终校验】\n对表格执行以下检查:\n1. ID唯一性:检查是否有重复ID\n2. 名称重复:以 colIndex=0(名称列)为基准检查\n - 若发现重复且约等同:合并信息,删除多余行(仅物品表可删)\n - 若发现重复但不等同:添加备注区分\n\n3. 字段格式校验:\n | 检查项 | 要求 |\n |--------|------|\n | 身体状态 | 2-6字 |\n | 空值 | 用\"N\"替代 |\n | 隐私信息 | 标注\"(知情者:...)\" |\n | 函数格式 | 单行,禁止换行 |\n | insertRow | 包含所有列 |\n\n4. 背景字段复核:\n - 确认所有背景更新都符合【背景字段判定规则】\n - 发现近况/未来目标被误写入背景时,移除该内容\n\n</thinking>\n\n<Amily2Edit>\n<!--\ninsertRow(\"1\", {\"0\": \"示例\", \"1\": \"示例\"})\n-->\n</Amily2Edit>\n<finish>The form filling work has been completed.</finish>"
|
||
},
|
||
"关系表": {
|
||
"template": "\n# Amily-Fanhua dataTable 说明\n\nAmily2 Table preset 1.09 By:繁华\n\n## 1. 用途\n\n`dataTable` 是一个用于存储和管理故事数据的核心系统。它通过 `Amily2TableData` 占位符注入一系列格式化的文本块,作为后续内容的关键参考。你的任务是根据故事发展,通过调用指定的函数来动态更新这些表格。\n\n## 2. 数据结构与格式\n\n注入的数据由多个表格块组成,每个表格块都遵循以下结构:\n【说明】:\n· [表格用途和规则的说明]\n<[tableName]内容>\n| rowIndex | [colIndex]:[colName] | [colIndex]:[colName] | ... |\n| ---------- | -------------------- | -------------------- | --- |\n| [rowIndex] | [单元格数据] | [单元格数据] | ... |\n...\n</[tableName]内容>\n【增加】: · [插入新行的触发条件]\n【删除】: · [删除行的触发条件]\n【修改】: · [更新行的触发条件]\n\n---\n\n### 格式解析\n\n* `* [tableIndex]:[tableName]`: 表格的标题行,包含表格的索引(`tableIndex`)和名称(`tableName`)。\n* `【说明】`: 提供了表格的详细用途和填写规则。\n* `<[tableName]内容>`: 包含了使用 Markdown 格式的实际数据表格。\n * 表头行定义了每一列的索引 (`colIndex`) 和名称 (`colName`)。第一列名为 `rowIndex`,用于标识每行数据的唯一索引。\n * 后续每一行都是一条数据记录,第一列是该行的索引 (`rowIndex`),后面跟着对应列的单元格数据。\n* `【增加】`, `【删除】`, `【修改】`: 分别描述了你应该在何种剧情下对表格进行增、删、改操作。\n\n### 表格引用关系(若无其他表格数据可忽略)\n\n```\n角色表 ←┬─ 关系表(主体/相对角色)\n ├─ 物品表(物品归属)\n ├─ 组织表(组织归属)\n └─ 能力表(能力归属)\n\n组织表 ←── 物品表(物品归属)\n ←── 地点表(地点归属)\n\n角色表/物品表/地点表 ←── 任务表(涉及名称)\n```\n\n---\n\n### 以下为需要更新的表格内容\n\n<需要更新的旧表格>\n{{tableData}}\n</需要更新的旧表格>\n\n---\n\n## 3. 表格操作指南\n\n你需要根据每个表格的【说明】、【增加】、【删除】、【修改】规则来判断是否需要更新表格。如果需要,请在 `<Amily2Edit>` 标签内调用以下 JavaScript 函数。\n\n### 3.1. 操作函数解释\n\n* **插入行**: `insertRow(tableIndex, data)`\n * `tableIndex` (string): 目标表格的索引。\n * `data` (object): 一个对象,键为列索引 (`colIndex`),值为单元格数据。\n * 参考示例: `insertRow(\"3\", {\"0\": \"张三的家\", \"1\": \"偷偷用多年积蓄购买\", \"2\": \"两房一厅一厨一卫\", \"3\": \"张三(知情者:张三)\", \"4\": \"正常\", \"5\": \"LOC_001\"})`\n\n* **删除行**: `deleteRow(tableIndex, rowIndex)`\n * `tableIndex` (string): 目标表格的索引。\n * `rowIndex` (string): 要删除的行的索引。\n * 参考示例: `deleteRow(\"1\", \"0\")`\n\n* **更新对应行的某列**: `updateRow(tableIndex, rowIndex, data)`\n * `tableIndex` (string): 目标表格的索引。\n * `rowIndex` (string): 要更新的行的索引。\n * `data` (object): 一个包含要修改的列数据对象,键为列索引 (`colIndex`)。\n * 参考示例: `updateRow(\"3\", \"0\", {\"4\": \"破败\"})`\n\n### 3.2. 重要规范\n\n* **用户优先**: 当 `<user>` 明确要求修改表格时,其指令拥有最高优先级。\n* **忠于原文**: 所有操作必须基于当前剧情,严禁捏造信息。\n* **信息丰富**: 信息避免过度简洁丢失关键细节。\n* **数据完整**: 使用 `insertRow` 时,`data` 对象应包含所有列的数据。\n* **注释封装**: 所有在 `<Amily2Edit>` 标签内的函数调用都必须被一对 `<!-- -->` 注释完全包裹。\n\n#### 【通用规范】\n\n**空值处理**:所有列不得留空,禁止填入\"无\"、\"未知\"、\"空值\",必须使用\"N\"代替。\n\n**隐私标注规则**:\n- 触发条件:信息属于秘密、隐私、或仅特定角色知晓\n- 标注格式:在对应字段内容后添加\"(知情者:姓名A/姓名B/...)\"\n- 绝对禁止隐私泄露\n\n**ID生成规则**:\n- 新ID = 当前表格中最大ID序号 + 1,格式为[前缀]_XXX(如CHAR_001)\n- ID一旦分配,永久不变,不复用已删除的ID\n- 各表格前缀:CHAR_(角色)、REL_(关系)、ITEM_(物品)、ORG_(组织)、LOC_(地点)、ABIL_(能力)、QUEST_(任务)\n\n**时间格式**:精确时间格式为\"年月日-时分\",如\"2025年01月17日-17:45\",必须精确到分钟\n\n**数据校验**:\n- 空值检查:所有列不得留空\n- 整行完整性:确保每行所有列都有值\n- 名称列异常:禁删表格(角色、组织、地点、能力、任务)尝试从剧情修正;仅物品表可删除无效行\n- 一致性:确保表格间引用的名称相互对应(若无其他表格数据可忽略)\n\n**增量更新原则**:\n- 更新描述性字段(背景、描述、详情、功效、效果、代价等)时,必须保留原有内容并自然融入新信息,禁止覆盖替换\n- 正确示例:原内容\"出生于A城\"→更新后\"出生于A城,曾落水被救\"\n- 错误示例:更新后仅剩\"落水被救\"\n- 禁止输出\"追加:\"\"补充:\"\"核心背景:\"等格式标记\n\n**智能压缩**:\n- 若新信息与原有内容重复,不重复添加\n- 若新信息与原有内容可合并,整合为连贯语句\n- 消除冗余修饰,保持精炼\n- 示例:原\"核心成员:张三、李四\"新增\"李四离开王五加入\"→更新为\"核心成员:张三、王五\"\n\n**背景字段判定规则**(适用于角色背景、组织背景、地点背景):\n- 背景的定义:背景是过往简史,是已经发生且固定不变的历史事实\n- 背景更新的判定条件(必须符合以下至少一项叙事语境):\n * 剧情出现回忆、闪回场景\n * 角色主动讲述自己的过去经历\n * 通过第三方(他人讲述、文献、传闻)了解到的历史\n * 明确使用过去时态描述的往事(如\"三年前\"、\"曾经\"、\"当年\")\n- 时间判定(辅助验证):若任务表存在数据,该信息所述事件应发生在任务接受时间之前\n- 禁止写入背景的内容:\n * 当前剧情中正在发生的事件\n * 角色当前的状态、行为、想法\n * 未来的计划、目标、决心\n * 无法确定是过去还是现在的模糊信息(宁缺勿滥)\n\n### 3.3. 输出示例\n\n【错误示例】:函数的对象参数跨行拆分,且存在冗余换行,导致工具无法完整识别函数调用结构,调用失败。\n<Amily2Edit>\n<!--\n// 获得新物品\ninsertRow(\"1\", {\n \"0\": \"高级润滑剂\", \n \"1\": \"消耗品\", \n \"2\": \"1(瓶)\", \n \"3\": \"进口高档润滑剂,透明液体,香草香味\", \n \"4\": \"用于特殊服务时的身体准备\", \n \"5\": \"进口\", \n \"6\": \"张三\", \n \"7\": \"未使用\"\n})\n-->\n</Amily2Edit>\n\n【正确示例】:函数名与所有参数完整置于同一行,格式简洁无冗余,工具可精准识别并执行,调用成功。\n<Amily2Edit>\n<!--\n// 获得新物品\ninsertRow(\"1\", {\"0\": \"高级润滑剂\", \"1\": \"消耗品\", \"2\": \"1(瓶)\", \"3\": \"进口高档润滑剂,透明液体,香草香味\", \"4\": \"用于特殊服务时的身体准备\", \"5\": \"进口\", \"6\": \"张三\", \"7\": \"正常\", \"8\": \"ITEM_001\"})\n// 高级润滑剂被使用殆尽,从物品表删除\ndeleteRow(\"1\", \"0\")\n// 张三偷偷购买房子,新增地点\"张三的家\",判断属于隐私需要备注\"(知情者:张三)\"\ninsertRow(\"3\", {\"0\": \"张三的家\", \"1\": \"偷偷用多年积蓄购买\", \"2\": \"两房一厅一厨一卫\", \"3\": \"张三(知情者:张三)\", \"4\": \"正常\", \"5\": \"LOC_001\"})\n// 张三的家因年久失修破败了,需要更新\nupdateRow(\"3\", \"0\", {\"4\": \"破败\"})\n-->\n</Amily2Edit>\n\n---\n\n# 通用表格转换思考框架\n\n## 核心原则\n\n1. **表格驱动**: 以表格为单位进行检查,而非以叙事元素为单位\n2. **动态索引**: 通过表格名称识别类型,动态获取对应 tableIndex\n3. **精准匹配**: 严格对照每个表格的【说明】、【增加】、【删除】、【修改】规则\n4. **一次到位**: 每轮思考必须完成所有必要的表格操作,禁止遗漏\n5. **字段限制**: 严格遵守每个字段的字数和内容限制\n\n---\n\n## 思考流程 (<thinking></thinking>)\n\n请严格按此框架思考并在<thinking>标签内输出:\n\n<thinking>\n\n【阶段0:旧表格数据错误检查】\n核心目的:避免错误累积和延续,确保基于正确数据进行操作\n检查步骤:\n1. 读取旧表格数据:查看 <需要更新的旧表格> 中的所有表格数据\n2. 逐表检查(参照【通用规范】):\n - 空值检查、整行完整性、名称列异常、字段格式、一致性\n - ⚠️ 内容完整性检查(对照剧情核实):\n * 列检查:表格有哪些列名\n * 列内容:列内容是否有填错列\n * 内容检查:各列内容是否符合定义、说明、增删改等要求\n3. 错误修正:记录需要执行的修正操作\n\n---\n\n【阶段1:解析表格映射】\n查看 <需要更新的旧表格>,建立\"表格列`colIndex`→列名\"映射:\n- 1 → \"?\"\n- 2 → \"?\"\n...\n(注:列出所有列名)\n\n---\n\n【阶段2:关系表检查】\n⚠️ 关键规则:\n- ❌ 禁止删除(即使关系断绝)\n- ⚠️ 关系评语:严格4-6字\n- ⚠️ 双向记录:新建关系时必须同时创建 A→B 和 B→A 两条记录\n- ⚠️ 填写视角:始终以\"主体角色\"列的角色为第一人称视角\n- ⚠️ 同名角色:若存在同名角色,使用\"角色名称(角色ID)\"格式区分\n\n定位:找到\"关系表\"对应的 tableIndex\n检查清单:\n1. 新关系识别:剧情中是否有两个重要角色建立新关系?\n - 两者在各自内心认为对方与自己是什么关系,两者各自对该关系的理解是否存在差异?\n - 在第三者视角两者是什么关系\n - 评语应该是正向、嫉妒还是内涵的?\n - 评语应该体现好感度、欲望值、堕落程度还是背德关系?\n - 双方给对方的评语是什么?\n → 是:执行两次 insertRow(A→B 和 B→A)\n\n2. 现有关系更新:已有关系是否发生变化?\n → 是:执行 updateRow\n\n---\n\n【阶段3:重复检测与最终校验】\n对每个表格执行以下检查:\n1. ID唯一性:检查是否有重复ID\n2. 名称重复:以 colIndex=0(名称列)为基准检查\n - 若发现重复且约等同:合并信息,删除多余行(仅物品表可删)\n - 若发现重复但不等同:添加备注区分\n\n3. 字段格式校验:\n | 检查项 | 要求 |\n |--------|------|\n | 关系评语 | 严格4-6字 |\n | 空值 | 用\"N\"替代 |\n | 隐私信息 | 标注\"(知情者:...)\" |\n | 函数格式 | 单行,禁止换行 |\n | insertRow | 包含所有列 |\n\n</thinking>\n\n<Amily2Edit>\n<!--\ninsertRow(\"1\", {\"0\": \"示例\", \"1\": \"示例\"})\n-->\n</Amily2Edit>\n<finish>The form filling work has been completed.</finish>\n"
|
||
},
|
||
"物品表": {
|
||
"template": "\n# Amily-Fanhua dataTable 说明\n\nAmily2 Table preset 1.09 By:繁华\n\n## 1. 用途\n\n`dataTable` 是一个用于存储和管理故事数据的核心系统。它通过 `Amily2TableData` 占位符注入一系列格式化的文本块,作为后续内容的关键参考。你的任务是根据故事发展,通过调用指定的函数来动态更新这些表格。\n\n## 2. 数据结构与格式\n\n注入的数据由多个表格块组成,每个表格块都遵循以下结构:\n【说明】:\n· [表格用途和规则的说明]\n<[tableName]内容>\n| rowIndex | [colIndex]:[colName] | [colIndex]:[colName] | ... |\n| ---------- | -------------------- | -------------------- | --- |\n| [rowIndex] | [单元格数据] | [单元格数据] | ... |\n...\n</[tableName]内容>\n【增加】: · [插入新行的触发条件]\n【删除】: · [删除行的触发条件]\n【修改】: · [更新行的触发条件]\n\n---\n\n### 格式解析\n\n* `* [tableIndex]:[tableName]`: 表格的标题行,包含表格的索引(`tableIndex`)和名称(`tableName`)。\n* `【说明】`: 提供了表格的详细用途和填写规则。\n* `<[tableName]内容>`: 包含了使用 Markdown 格式的实际数据表格。\n * 表头行定义了每一列的索引 (`colIndex`) 和名称 (`colName`)。第一列名为 `rowIndex`,用于标识每行数据的唯一索引。\n * 后续每一行都是一条数据记录,第一列是该行的索引 (`rowIndex`),后面跟着对应列的单元格数据。\n* `【增加】`, `【删除】`, `【修改】`: 分别描述了你应该在何种剧情下对表格进行增、删、改操作。\n\n### 表格引用关系(若无其他表格数据可忽略)\n\n```\n角色表 ←┬─ 关系表(主体/相对角色)\n ├─ 物品表(物品归属)\n ├─ 组织表(组织归属)\n └─ 能力表(能力归属)\n\n组织表 ←── 物品表(物品归属)\n ←── 地点表(地点归属)\n\n角色表/物品表/地点表 ←── 任务表(涉及名称)\n```\n\n---\n\n### 以下为需要更新的表格内容\n\n<需要更新的旧表格>\n{{tableData}}\n</需要更新的旧表格>\n\n---\n\n## 3. 表格操作指南\n\n你需要根据每个表格的【说明】、【增加】、【删除】、【修改】规则来判断是否需要更新表格。如果需要,请在 `<Amily2Edit>` 标签内调用以下 JavaScript 函数。\n\n### 3.1. 操作函数解释\n\n* **插入行**: `insertRow(tableIndex, data)`\n * `tableIndex` (string): 目标表格的索引。\n * `data` (object): 一个对象,键为列索引 (`colIndex`),值为单元格数据。\n * 参考示例: `insertRow(\"3\", {\"0\": \"张三的家\", \"1\": \"偷偷用多年积蓄购买\", \"2\": \"两房一厅一厨一卫\", \"3\": \"张三(知情者:张三)\", \"4\": \"正常\", \"5\": \"LOC_001\"})`\n\n* **删除行**: `deleteRow(tableIndex, rowIndex)`\n * `tableIndex` (string): 目标表格的索引。\n * `rowIndex` (string): 要删除的行的索引。\n * 参考示例: `deleteRow(\"1\", \"0\")`\n\n* **更新对应行的某列**: `updateRow(tableIndex, rowIndex, data)`\n * `tableIndex` (string): 目标表格的索引。\n * `rowIndex` (string): 要更新的行的索引。\n * `data` (object): 一个包含要修改的列数据对象,键为列索引 (`colIndex`)。\n * 参考示例: `updateRow(\"3\", \"0\", {\"4\": \"破败\"})`\n\n### 3.2. 重要规范\n\n* **用户优先**: 当 `<user>` 明确要求修改表格时,其指令拥有最高优先级。\n* **忠于原文**: 所有操作必须基于当前剧情,严禁捏造信息。\n* **信息丰富**: 信息避免过度简洁丢失关键细节。\n* **数据完整**: 使用 `insertRow` 时,`data` 对象应包含所有列的数据。\n* **注释封装**: 所有在 `<Amily2Edit>` 标签内的函数调用都必须被一对 `<!-- -->` 注释完全包裹。\n\n#### 【通用规范】\n\n**空值处理**:所有列不得留空,禁止填入\"无\"、\"未知\"、\"空值\",必须使用\"N\"代替。\n\n**隐私标注规则**:\n- 触发条件:信息属于秘密、隐私、或仅特定角色知晓\n- 标注格式:在对应字段内容后添加\"(知情者:姓名A/姓名B/...)\"\n- 绝对禁止隐私泄露\n\n**ID生成规则**:\n- 新ID = 当前表格中最大ID序号 + 1,格式为[前缀]_XXX(如CHAR_001)\n- ID一旦分配,永久不变,不复用已删除的ID\n- 各表格前缀:CHAR_(角色)、REL_(关系)、ITEM_(物品)、ORG_(组织)、LOC_(地点)、ABIL_(能力)、QUEST_(任务)\n\n**时间格式**:精确时间格式为\"年月日-时分\",如\"2025年01月17日-17:45\",必须精确到分钟\n\n**数据校验**:\n- 空值检查:所有列不得留空\n- 整行完整性:确保每行所有列都有值\n- 名称列异常:禁删表格(角色、组织、地点、能力、任务)尝试从剧情修正;仅物品表可删除无效行\n- 一致性:确保表格间引用的名称相互对应(若无其他表格数据可忽略)\n\n**增量更新原则**:\n- 更新描述性字段(背景、描述、详情、功效、效果、代价等)时,必须保留原有内容并自然融入新信息,禁止覆盖替换\n- 正确示例:原内容\"出生于A城\"→更新后\"出生于A城,曾落水被救\"\n- 错误示例:更新后仅剩\"落水被救\"\n- 禁止输出\"追加:\"\"补充:\"\"核心背景:\"等格式标记\n\n**智能压缩**:\n- 若新信息与原有内容重复,不重复添加\n- 若新信息与原有内容可合并,整合为连贯语句\n- 消除冗余修饰,保持精炼\n- 示例:原\"核心成员:张三、李四\"新增\"李四离开王五加入\"→更新为\"核心成员:张三、王五\"\n\n**背景字段判定规则**(适用于角色背景、组织背景、地点背景):\n- 背景的定义:背景是过往简史,是已经发生且固定不变的历史事实\n- 背景更新的判定条件(必须符合以下至少一项叙事语境):\n * 剧情出现回忆、闪回场景\n * 角色主动讲述自己的过去经历\n * 通过第三方(他人讲述、文献、传闻)了解到的历史\n * 明确使用过去时态描述的往事(如\"三年前\"、\"曾经\"、\"当年\")\n- 时间判定(辅助验证):若任务表存在数据,该信息所述事件应发生在任务接受时间之前\n- 禁止写入背景的内容:\n * 当前剧情中正在发生的事件\n * 角色当前的状态、行为、想法\n * 未来的计划、目标、决心\n * 无法确定是过去还是现在的模糊信息(宁缺勿滥)\n\n### 3.3. 输出示例\n\n【错误示例】:函数的对象参数跨行拆分,且存在冗余换行,导致工具无法完整识别函数调用结构,调用失败。\n<Amily2Edit>\n<!--\n// 获得新物品\ninsertRow(\"1\", {\n \"0\": \"高级润滑剂\", \n \"1\": \"消耗品\", \n \"2\": \"1(瓶)\", \n \"3\": \"进口高档润滑剂,透明液体,香草香味\", \n \"4\": \"用于特殊服务时的身体准备\", \n \"5\": \"进口\", \n \"6\": \"张三\", \n \"7\": \"未使用\"\n})\n-->\n</Amily2Edit>\n\n【正确示例】:函数名与所有参数完整置于同一行,格式简洁无冗余,工具可精准识别并执行,调用成功。\n<Amily2Edit>\n<!--\n// 获得新物品\ninsertRow(\"1\", {\"0\": \"高级润滑剂\", \"1\": \"消耗品\", \"2\": \"1(瓶)\", \"3\": \"进口高档润滑剂,透明液体,香草香味\", \"4\": \"用于特殊服务时的身体准备\", \"5\": \"进口\", \"6\": \"张三\", \"7\": \"正常\", \"8\": \"ITEM_001\"})\n// 高级润滑剂被使用殆尽,从物品表删除\ndeleteRow(\"1\", \"0\")\n// 张三偷偷购买房子,新增地点\"张三的家\",判断属于隐私需要备注\"(知情者:张三)\"\ninsertRow(\"3\", {\"0\": \"张三的家\", \"1\": \"偷偷用多年积蓄购买\", \"2\": \"两房一厅一厨一卫\", \"3\": \"张三(知情者:张三)\", \"4\": \"正常\", \"5\": \"LOC_001\"})\n// 张三的家因年久失修破败了,需要更新\nupdateRow(\"3\", \"0\", {\"4\": \"破败\"})\n-->\n</Amily2Edit>\n\n---\n\n# 通用表格转换思考框架\n\n## 核心原则\n\n1. **表格驱动**: 以表格为单位进行检查,而非以叙事元素为单位\n2. **动态索引**: 通过表格名称识别类型,动态获取对应 tableIndex\n3. **精准匹配**: 严格对照每个表格的【说明】、【增加】、【删除】、【修改】规则\n4. **一次到位**: 每轮思考必须完成所有必要的表格操作,禁止遗漏\n5. **字段限制**: 严格遵守每个字段的字数和内容限制\n\n---\n\n## 思考流程 (<thinking></thinking>)\n\n请严格按此框架思考并在<thinking>标签内输出:\n\n<thinking>\n\n【阶段0:旧表格数据错误检查】\n核心目的:避免错误累积和延续,确保基于正确数据进行操作\n检查步骤:\n1. 读取旧表格数据:查看 <需要更新的旧表格> 中的所有表格数据\n2. 逐表检查(参照【通用规范】):\n - 空值检查、整行完整性、名称列异常、字段格式、一致性\n - ⚠️ 内容完整性检查(对照剧情核实):\n * 列检查:表格有哪些列名\n * 列内容:列内容是否有填错列\n * 内容检查:各列内容是否符合定义、说明、增删改等要求\n3. 错误修正:记录需要执行的修正操作\n\n---\n\n【阶段1:解析表格映射】\n查看 <需要更新的旧表格>,建立\"表格列`colIndex`→列名\"映射:\n- 1 → \"?\"\n- 2 → \"?\"\n...\n(注:列出所有列名)\n\n---\n\n【阶段2:物品表检查】\n⚠️ 关键规则:\n- ❌ 禁止删除:任务物品、损坏的非消耗品\n- ✅ 允许删除:消耗品归零、物品完全消失(非损坏)\n- ⚠️ 物品状态:2-6字,禁止场景描述\n\n定位:找到\"物品表\"对应的 tableIndex\n检查清单:\n1. 新物品识别:是否有符合\"重要物品定义\"的新物品出现?\n → 是:执行 insertRow,填写所有字段\n \n2. 物品更新:\n - 物品数量变化识别:当剧情描述角色使用、消耗、给予、丢弃物品时(如\"射出一箭\"、\"喝下药水\"、\"递给某人\"),需更新对应物品数量\n - 物品归属(持有人变更)\n - 物品状态\n → 是:执行 updateRow\n \n3. 物品删除:消耗品数量归零后执行删除操作\n\n---\n\n【阶段3:重复检测与最终校验】\n对每个表格执行以下检查:\n1. ID唯一性:检查是否有重复ID\n2. 名称重复:以 colIndex=0(名称列)为基准检查\n - 若发现重复且约等同:合并信息,删除多余行(仅物品表可删)\n - 若发现重复但不等同:添加备注区分\n\n3. 字段格式校验:\n | 检查项 | 要求 |\n |--------|------|\n | 物品状态 | 2-6字 |\n | 空值 | 用\"N\"替代 |\n | 隐私信息 | 标注\"(知情者:...)\" |\n | 函数格式 | 单行,禁止换行 |\n | insertRow | 包含所有列 |\n\n</thinking>\n\n<Amily2Edit>\n<!--\ninsertRow(\"1\", {\"0\": \"示例\", \"1\": \"示例\"})\n-->\n</Amily2Edit>\n<finish>The form filling work has been completed.</finish>\n"
|
||
},
|
||
"组织表": {
|
||
"template": "\n# Amily-Fanhua dataTable 说明\n\nAmily2 Table preset 1.09 By:繁华\n\n## 1. 用途\n\n`dataTable` 是一个用于存储和管理故事数据的核心系统。它通过 `Amily2TableData` 占位符注入一系列格式化的文本块,作为后续内容的关键参考。你的任务是根据故事发展,通过调用指定的函数来动态更新这些表格。\n\n## 2. 数据结构与格式\n\n注入的数据由多个表格块组成,每个表格块都遵循以下结构:\n【说明】:\n· [表格用途和规则的说明]\n<[tableName]内容>\n| rowIndex | [colIndex]:[colName] | [colIndex]:[colName] | ... |\n| ---------- | -------------------- | -------------------- | --- |\n| [rowIndex] | [单元格数据] | [单元格数据] | ... |\n...\n</[tableName]内容>\n【增加】: · [插入新行的触发条件]\n【删除】: · [删除行的触发条件]\n【修改】: · [更新行的触发条件]\n\n---\n\n### 格式解析\n\n* `* [tableIndex]:[tableName]`: 表格的标题行,包含表格的索引(`tableIndex`)和名称(`tableName`)。\n* `【说明】`: 提供了表格的详细用途和填写规则。\n* `<[tableName]内容>`: 包含了使用 Markdown 格式的实际数据表格。\n * 表头行定义了每一列的索引 (`colIndex`) 和名称 (`colName`)。第一列名为 `rowIndex`,用于标识每行数据的唯一索引。\n * 后续每一行都是一条数据记录,第一列是该行的索引 (`rowIndex`),后面跟着对应列的单元格数据。\n* `【增加】`, `【删除】`, `【修改】`: 分别描述了你应该在何种剧情下对表格进行增、删、改操作。\n\n### 表格引用关系(若无其他表格数据可忽略)\n\n```\n角色表 ←┬─ 关系表(主体/相对角色)\n ├─ 物品表(物品归属)\n ├─ 组织表(组织归属)\n └─ 能力表(能力归属)\n\n组织表 ←── 物品表(物品归属)\n ←── 地点表(地点归属)\n\n角色表/物品表/地点表 ←── 任务表(涉及名称)\n```\n\n---\n\n### 以下为需要更新的表格内容\n\n<需要更新的旧表格>\n{{tableData}}\n</需要更新的旧表格>\n\n---\n\n## 3. 表格操作指南\n\n你需要根据每个表格的【说明】、【增加】、【删除】、【修改】规则来判断是否需要更新表格。如果需要,请在 `<Amily2Edit>` 标签内调用以下 JavaScript 函数。\n\n### 3.1. 操作函数解释\n\n* **插入行**: `insertRow(tableIndex, data)`\n * `tableIndex` (string): 目标表格的索引。\n * `data` (object): 一个对象,键为列索引 (`colIndex`),值为单元格数据。\n * 参考示例: `insertRow(\"3\", {\"0\": \"张三的家\", \"1\": \"偷偷用多年积蓄购买\", \"2\": \"两房一厅一厨一卫\", \"3\": \"张三(知情者:张三)\", \"4\": \"正常\", \"5\": \"LOC_001\"})`\n\n* **删除行**: `deleteRow(tableIndex, rowIndex)`\n * `tableIndex` (string): 目标表格的索引。\n * `rowIndex` (string): 要删除的行的索引。\n * 参考示例: `deleteRow(\"1\", \"0\")`\n\n* **更新对应行的某列**: `updateRow(tableIndex, rowIndex, data)`\n * `tableIndex` (string): 目标表格的索引。\n * `rowIndex` (string): 要更新的行的索引。\n * `data` (object): 一个包含要修改的列数据对象,键为列索引 (`colIndex`)。\n * 参考示例: `updateRow(\"3\", \"0\", {\"4\": \"破败\"})`\n\n### 3.2. 重要规范\n\n* **用户优先**: 当 `<user>` 明确要求修改表格时,其指令拥有最高优先级。\n* **忠于原文**: 所有操作必须基于当前剧情,严禁捏造信息。\n* **信息丰富**: 信息避免过度简洁丢失关键细节。\n* **数据完整**: 使用 `insertRow` 时,`data` 对象应包含所有列的数据。\n* **注释封装**: 所有在 `<Amily2Edit>` 标签内的函数调用都必须被一对 `<!-- -->` 注释完全包裹。\n\n#### 【通用规范】\n\n**空值处理**:所有列不得留空,禁止填入\"无\"、\"未知\"、\"空值\",必须使用\"N\"代替。\n\n**隐私标注规则**:\n- 触发条件:信息属于秘密、隐私、或仅特定角色知晓\n- 标注格式:在对应字段内容后添加\"(知情者:姓名A/姓名B/...)\"\n- 绝对禁止隐私泄露\n\n**ID生成规则**:\n- 新ID = 当前表格中最大ID序号 + 1,格式为[前缀]_XXX(如CHAR_001)\n- ID一旦分配,永久不变,不复用已删除的ID\n- 各表格前缀:CHAR_(角色)、REL_(关系)、ITEM_(物品)、ORG_(组织)、LOC_(地点)、ABIL_(能力)、QUEST_(任务)\n\n**时间格式**:精确时间格式为\"年月日-时分\",如\"2025年01月17日-17:45\",必须精确到分钟\n\n**数据校验**:\n- 空值检查:所有列不得留空\n- 整行完整性:确保每行所有列都有值\n- 名称列异常:禁删表格(角色、组织、地点、能力、任务)尝试从剧情修正;仅物品表可删除无效行\n- 一致性:确保表格间引用的名称相互对应(若无其他表格数据可忽略)\n\n**增量更新原则**:\n- 更新描述性字段(背景、描述、详情、功效、效果、代价等)时,必须保留原有内容并自然融入新信息,禁止覆盖替换\n- 正确示例:原内容\"出生于A城\"→更新后\"出生于A城,曾落水被救\"\n- 错误示例:更新后仅剩\"落水被救\"\n- 禁止输出\"追加:\"\"补充:\"\"核心背景:\"等格式标记\n\n**智能压缩**:\n- 若新信息与原有内容重复,不重复添加\n- 若新信息与原有内容可合并,整合为连贯语句\n- 消除冗余修饰,保持精炼\n- 示例:原\"核心成员:张三、李四\"新增\"李四离开王五加入\"→更新为\"核心成员:张三、王五\"\n\n**背景字段判定规则**(适用于角色背景、组织背景、地点背景):\n- 背景的定义:背景是过往简史,是已经发生且固定不变的历史事实\n- 背景更新的判定条件(必须符合以下至少一项叙事语境):\n * 剧情出现回忆、闪回场景\n * 角色主动讲述自己的过去经历\n * 通过第三方(他人讲述、文献、传闻)了解到的历史\n * 明确使用过去时态描述的往事(如\"三年前\"、\"曾经\"、\"当年\")\n- 时间判定(辅助验证):若任务表存在数据,该信息所述事件应发生在任务接受时间之前\n- 禁止写入背景的内容:\n * 当前剧情中正在发生的事件\n * 角色当前的状态、行为、想法\n * 未来的计划、目标、决心\n * 无法确定是过去还是现在的模糊信息(宁缺勿滥)\n\n### 3.3. 输出示例\n\n【错误示例】:函数的对象参数跨行拆分,且存在冗余换行,导致工具无法完整识别函数调用结构,调用失败。\n<Amily2Edit>\n<!--\n// 获得新物品\ninsertRow(\"1\", {\n \"0\": \"高级润滑剂\", \n \"1\": \"消耗品\", \n \"2\": \"1(瓶)\", \n \"3\": \"进口高档润滑剂,透明液体,香草香味\", \n \"4\": \"用于特殊服务时的身体准备\", \n \"5\": \"进口\", \n \"6\": \"张三\", \n \"7\": \"未使用\"\n})\n-->\n</Amily2Edit>\n\n【正确示例】:函数名与所有参数完整置于同一行,格式简洁无冗余,工具可精准识别并执行,调用成功。\n<Amily2Edit>\n<!--\n// 获得新物品\ninsertRow(\"1\", {\"0\": \"高级润滑剂\", \"1\": \"消耗品\", \"2\": \"1(瓶)\", \"3\": \"进口高档润滑剂,透明液体,香草香味\", \"4\": \"用于特殊服务时的身体准备\", \"5\": \"进口\", \"6\": \"张三\", \"7\": \"正常\", \"8\": \"ITEM_001\"})\n// 高级润滑剂被使用殆尽,从物品表删除\ndeleteRow(\"1\", \"0\")\n// 张三偷偷购买房子,新增地点\"张三的家\",判断属于隐私需要备注\"(知情者:张三)\"\ninsertRow(\"3\", {\"0\": \"张三的家\", \"1\": \"偷偷用多年积蓄购买\", \"2\": \"两房一厅一厨一卫\", \"3\": \"张三(知情者:张三)\", \"4\": \"正常\", \"5\": \"LOC_001\"})\n// 张三的家因年久失修破败了,需要更新\nupdateRow(\"3\", \"0\", {\"4\": \"破败\"})\n-->\n</Amily2Edit>\n\n---\n\n# 通用表格转换思考框架\n\n## 核心原则\n\n1. **表格驱动**: 以表格为单位进行检查,而非以叙事元素为单位\n2. **动态索引**: 通过表格名称识别类型,动态获取对应 tableIndex\n3. **精准匹配**: 严格对照每个表格的【说明】、【增加】、【删除】、【修改】规则\n4. **一次到位**: 每轮思考必须完成所有必要的表格操作,禁止遗漏\n5. **字段限制**: 严格遵守每个字段的字数和内容限制\n\n---\n\n## 思考流程 (<thinking></thinking>)\n\n请严格按此框架思考并在<thinking>标签内输出:\n\n<thinking>\n\n【阶段0:旧表格数据错误检查】\n核心目的:避免错误累积和延续,确保基于正确数据进行操作\n检查步骤:\n1. 读取旧表格数据:查看 <需要更新的旧表格> 中的所有表格数据\n2. 逐表检查(参照【通用规范】):\n - 空值检查、整行完整性、名称列异常、字段格式、一致性\n - ⚠️ 内容完整性检查(对照剧情核实):\n * 列检查:表格有哪些列名\n * 列内容:列内容是否有填错列\n * 内容检查:各列内容是否符合定义、说明、增删改等要求\n3. 错误修正:记录需要执行的修正操作\n\n---\n\n【阶段1:解析表格映射】\n查看 <需要更新的旧表格>,建立\"表格列`colIndex`→列名\"映射:\n- 1 → \"?\"\n- 2 → \"?\"\n...\n(注:列出所有列名)\n\n---\n\n【阶段2:组织表检查】\n⚠️ 关键规则:\n- ❌ 禁止删除(即使消亡)\n- ⚠️ \"组织背景\":必须通过【背景字段判定规则】验证后才能更新\n- ✅ 允许更新\"组织详情\"(动态信息:核心成员变动、近期动态)\n\n定位:找到\"组织表\"对应的 tableIndex\n检查清单:\n1. 新组织识别:是否有符合\"重要组织定义\"的新组织出现?\n → 是:执行 insertRow,填写所有字段\n \n2. 组织更新:\n - 组织详情(核心成员变动、近期动态等)← 可更新\n - 组织归属/组织关系/组织状态 ← 可更新\n - 组织背景 ← ⚠️ 必须判定是否符合背景更新条件\n → 是:执行 updateRow\n\n3. 背景更新判定:\n - 检查是否有回忆/讲述/文献揭示的组织历史\n - 禁止将当前事件写入背景\n\n---\n\n【阶段3:重复检测与最终校验】\n对每个表格执行以下检查:\n1. ID唯一性:检查是否有重复ID\n2. 名称重复:以 colIndex=0(名称列)为基准检查\n - 若发现重复且约等同:合并信息,删除多余行(仅物品表可删)\n - 若发现重复但不等同:添加备注区分\n\n3. 字段格式校验:\n | 检查项 | 要求 |\n |--------|------|\n | 组织状态 | 2-6字 |\n | 空值 | 用\"N\"替代 |\n | 隐私信息 | 标注\"(知情者:...)\" |\n | 函数格式 | 单行,禁止换行 |\n | insertRow | 包含所有列 |\n\n4. 背景字段复核:\n - 确认所有背景更新都符合【背景字段判定规则】\n - 发现近况/未来目标被误写入背景时,移除该内容\n\n</thinking>\n\n<Amily2Edit>\n<!--\ninsertRow(\"1\", {\"0\": \"示例\", \"1\": \"示例\"})\n-->\n</Amily2Edit>\n<finish>The form filling work has been completed.</finish>\n"
|
||
},
|
||
"地点表": {
|
||
"template": "\n# Amily-Fanhua dataTable 说明\n\nAmily2 Table preset 1.09 By:繁华\n\n## 1. 用途\n\n`dataTable` 是一个用于存储和管理故事数据的核心系统。它通过 `Amily2TableData` 占位符注入一系列格式化的文本块,作为后续内容的关键参考。你的任务是根据故事发展,通过调用指定的函数来动态更新这些表格。\n\n## 2. 数据结构与格式\n\n注入的数据由多个表格块组成,每个表格块都遵循以下结构:\n【说明】:\n· [表格用途和规则的说明]\n<[tableName]内容>\n| rowIndex | [colIndex]:[colName] | [colIndex]:[colName] | ... |\n| ---------- | -------------------- | -------------------- | --- |\n| [rowIndex] | [单元格数据] | [单元格数据] | ... |\n...\n</[tableName]内容>\n【增加】: · [插入新行的触发条件]\n【删除】: · [删除行的触发条件]\n【修改】: · [更新行的触发条件]\n\n---\n\n### 格式解析\n\n* `* [tableIndex]:[tableName]`: 表格的标题行,包含表格的索引(`tableIndex`)和名称(`tableName`)。\n* `【说明】`: 提供了表格的详细用途和填写规则。\n* `<[tableName]内容>`: 包含了使用 Markdown 格式的实际数据表格。\n * 表头行定义了每一列的索引 (`colIndex`) 和名称 (`colName`)。第一列名为 `rowIndex`,用于标识每行数据的唯一索引。\n * 后续每一行都是一条数据记录,第一列是该行的索引 (`rowIndex`),后面跟着对应列的单元格数据。\n* `【增加】`, `【删除】`, `【修改】`: 分别描述了你应该在何种剧情下对表格进行增、删、改操作。\n\n### 表格引用关系(若无其他表格数据可忽略)\n\n```\n角色表 ←┬─ 关系表(主体/相对角色)\n ├─ 物品表(物品归属)\n ├─ 组织表(组织归属)\n └─ 能力表(能力归属)\n\n组织表 ←── 物品表(物品归属)\n ←── 地点表(地点归属)\n\n角色表/物品表/地点表 ←── 任务表(涉及名称)\n```\n\n---\n\n### 以下为需要更新的表格内容\n\n<需要更新的旧表格>\n{{tableData}}\n</需要更新的旧表格>\n\n---\n\n## 3. 表格操作指南\n\n你需要根据每个表格的【说明】、【增加】、【删除】、【修改】规则来判断是否需要更新表格。如果需要,请在 `<Amily2Edit>` 标签内调用以下 JavaScript 函数。\n\n### 3.1. 操作函数解释\n\n* **插入行**: `insertRow(tableIndex, data)`\n * `tableIndex` (string): 目标表格的索引。\n * `data` (object): 一个对象,键为列索引 (`colIndex`),值为单元格数据。\n * 参考示例: `insertRow(\"3\", {\"0\": \"张三的家\", \"1\": \"偷偷用多年积蓄购买\", \"2\": \"两房一厅一厨一卫\", \"3\": \"张三(知情者:张三)\", \"4\": \"正常\", \"5\": \"LOC_001\"})`\n\n* **删除行**: `deleteRow(tableIndex, rowIndex)`\n * `tableIndex` (string): 目标表格的索引。\n * `rowIndex` (string): 要删除的行的索引。\n * 参考示例: `deleteRow(\"1\", \"0\")`\n\n* **更新对应行的某列**: `updateRow(tableIndex, rowIndex, data)`\n * `tableIndex` (string): 目标表格的索引。\n * `rowIndex` (string): 要更新的行的索引。\n * `data` (object): 一个包含要修改的列数据对象,键为列索引 (`colIndex`)。\n * 参考示例: `updateRow(\"3\", \"0\", {\"4\": \"破败\"})`\n\n### 3.2. 重要规范\n\n* **用户优先**: 当 `<user>` 明确要求修改表格时,其指令拥有最高优先级。\n* **忠于原文**: 所有操作必须基于当前剧情,严禁捏造信息。\n* **信息丰富**: 信息避免过度简洁丢失关键细节。\n* **数据完整**: 使用 `insertRow` 时,`data` 对象应包含所有列的数据。\n* **注释封装**: 所有在 `<Amily2Edit>` 标签内的函数调用都必须被一对 `<!-- -->` 注释完全包裹。\n\n#### 【通用规范】\n\n**空值处理**:所有列不得留空,禁止填入\"无\"、\"未知\"、\"空值\",必须使用\"N\"代替。\n\n**隐私标注规则**:\n- 触发条件:信息属于秘密、隐私、或仅特定角色知晓\n- 标注格式:在对应字段内容后添加\"(知情者:姓名A/姓名B/...)\"\n- 绝对禁止隐私泄露\n\n**ID生成规则**:\n- 新ID = 当前表格中最大ID序号 + 1,格式为[前缀]_XXX(如CHAR_001)\n- ID一旦分配,永久不变,不复用已删除的ID\n- 各表格前缀:CHAR_(角色)、REL_(关系)、ITEM_(物品)、ORG_(组织)、LOC_(地点)、ABIL_(能力)、QUEST_(任务)\n\n**时间格式**:精确时间格式为\"年月日-时分\",如\"2025年01月17日-17:45\",必须精确到分钟\n\n**数据校验**:\n- 空值检查:所有列不得留空\n- 整行完整性:确保每行所有列都有值\n- 名称列异常:禁删表格(角色、组织、地点、能力、任务)尝试从剧情修正;仅物品表可删除无效行\n- 一致性:确保表格间引用的名称相互对应(若无其他表格数据可忽略)\n\n**增量更新原则**:\n- 更新描述性字段(背景、描述、详情、功效、效果、代价等)时,必须保留原有内容并自然融入新信息,禁止覆盖替换\n- 正确示例:原内容\"出生于A城\"→更新后\"出生于A城,曾落水被救\"\n- 错误示例:更新后仅剩\"落水被救\"\n- 禁止输出\"追加:\"\"补充:\"\"核心背景:\"等格式标记\n\n**智能压缩**:\n- 若新信息与原有内容重复,不重复添加\n- 若新信息与原有内容可合并,整合为连贯语句\n- 消除冗余修饰,保持精炼\n- 示例:原\"核心成员:张三、李四\"新增\"李四离开王五加入\"→更新为\"核心成员:张三、王五\"\n\n**背景字段判定规则**(适用于角色背景、组织背景、地点背景):\n- 背景的定义:背景是过往简史,是已经发生且固定不变的历史事实\n- 背景更新的判定条件(必须符合以下至少一项叙事语境):\n * 剧情出现回忆、闪回场景\n * 角色主动讲述自己的过去经历\n * 通过第三方(他人讲述、文献、传闻)了解到的历史\n * 明确使用过去时态描述的往事(如\"三年前\"、\"曾经\"、\"当年\")\n- 时间判定(辅助验证):若任务表存在数据,该信息所述事件应发生在任务接受时间之前\n- 禁止写入背景的内容:\n * 当前剧情中正在发生的事件\n * 角色当前的状态、行为、想法\n * 未来的计划、目标、决心\n * 无法确定是过去还是现在的模糊信息(宁缺勿滥)\n\n### 3.3. 输出示例\n\n【错误示例】:函数的对象参数跨行拆分,且存在冗余换行,导致工具无法完整识别函数调用结构,调用失败。\n<Amily2Edit>\n<!--\n// 获得新物品\ninsertRow(\"1\", {\n \"0\": \"高级润滑剂\", \n \"1\": \"消耗品\", \n \"2\": \"1(瓶)\", \n \"3\": \"进口高档润滑剂,透明液体,香草香味\", \n \"4\": \"用于特殊服务时的身体准备\", \n \"5\": \"进口\", \n \"6\": \"张三\", \n \"7\": \"未使用\"\n})\n-->\n</Amily2Edit>\n\n【正确示例】:函数名与所有参数完整置于同一行,格式简洁无冗余,工具可精准识别并执行,调用成功。\n<Amily2Edit>\n<!--\n// 获得新物品\ninsertRow(\"1\", {\"0\": \"高级润滑剂\", \"1\": \"消耗品\", \"2\": \"1(瓶)\", \"3\": \"进口高档润滑剂,透明液体,香草香味\", \"4\": \"用于特殊服务时的身体准备\", \"5\": \"进口\", \"6\": \"张三\", \"7\": \"正常\", \"8\": \"ITEM_001\"})\n// 高级润滑剂被使用殆尽,从物品表删除\ndeleteRow(\"1\", \"0\")\n// 张三偷偷购买房子,新增地点\"张三的家\",判断属于隐私需要备注\"(知情者:张三)\"\ninsertRow(\"3\", {\"0\": \"张三的家\", \"1\": \"偷偷用多年积蓄购买\", \"2\": \"两房一厅一厨一卫\", \"3\": \"张三(知情者:张三)\", \"4\": \"正常\", \"5\": \"LOC_001\"})\n// 张三的家因年久失修破败了,需要更新\nupdateRow(\"3\", \"0\", {\"4\": \"破败\"})\n-->\n</Amily2Edit>\n\n---\n\n# 通用表格转换思考框架\n\n## 核心原则\n\n1. **表格驱动**: 以表格为单位进行检查,而非以叙事元素为单位\n2. **动态索引**: 通过表格名称识别类型,动态获取对应 tableIndex\n3. **精准匹配**: 严格对照每个表格的【说明】、【增加】、【删除】、【修改】规则\n4. **一次到位**: 每轮思考必须完成所有必要的表格操作,禁止遗漏\n5. **字段限制**: 严格遵守每个字段的字数和内容限制\n\n---\n\n## 思考流程 (<thinking></thinking>)\n\n请严格按此框架思考并在<thinking>标签内输出:\n\n<thinking>\n\n【阶段0:旧表格数据错误检查】\n核心目的:避免错误累积和延续,确保基于正确数据进行操作\n检查步骤:\n1. 读取旧表格数据:查看 <需要更新的旧表格> 中的所有表格数据\n2. 逐表检查(参照【通用规范】):\n - 空值检查、整行完整性、名称列异常、字段格式、一致性\n - ⚠️ 内容完整性检查(对照剧情核实):\n * 列检查:表格有哪些列名\n * 列内容:列内容是否有填错列\n * 内容检查:各列内容是否符合定义、说明、增删改等要求\n3. 错误修正:记录需要执行的修正操作\n\n---\n\n【阶段1:解析表格映射】\n查看 <需要更新的旧表格>,建立\"表格列`colIndex`→列名\"映射:\n- 1 → \"?\"\n- 2 → \"?\"\n...\n(注:列出所有列名)\n\n---\n\n【阶段2:地点表检查】\n⚠️ 关键规则:\n- ❌ 禁止删除(即使拆除)\n- ⚠️ \"地点背景\":必须通过【背景字段判定规则】验证后才能更新\n- ✅ 允许更新\"地点详情\"(动态信息:内部结构、资源分布变化)\n\n定位:找到\"地点表\"对应的 tableIndex\n检查清单:\n1. 新地点识别:是否有符合\"重要地点定义\"的新地点出现?\n → 是:执行 insertRow,填写所有字段\n \n2. 地点更新:\n - 地点详情 ← 可更新\n - 地点归属/地点状态 ← 可更新\n - 地点背景 ← ⚠️ 必须判定是否符合背景更新条件\n → 是:执行 updateRow\n\n3. 背景更新判定:\n - 检查是否有回忆/传说/文献揭示的地点历史\n - 禁止将当前事件写入背景\n\n---\n\n【阶段3:重复检测与最终校验】\n对每个表格执行以下检查:\n1. ID唯一性:检查是否有重复ID\n2. 名称重复:以 colIndex=0(名称列)为基准检查\n - 若发现重复且约等同:合并信息,删除多余行(仅物品表可删)\n - 若发现重复但不等同:添加备注区分\n\n3. 字段格式校验:\n | 检查项 | 要求 |\n |--------|------|\n | 地点状态 | 2-6字 |\n | 空值 | 用\"N\"替代 |\n | 隐私信息 | 标注\"(知情者:...)\" |\n | 函数格式 | 单行,禁止换行 |\n | insertRow | 包含所有列 |\n\n4. 背景字段复核:\n - 确认所有背景更新都符合【背景字段判定规则】\n - 发现近况/未来目标被误写入背景时,移除该内容\n\n</thinking>\n\n<Amily2Edit>\n<!--\ninsertRow(\"1\", {\"0\": \"示例\", \"1\": \"示例\"})\n-->\n</Amily2Edit>\n<finish>The form filling work has been completed.</finish>\n"
|
||
},
|
||
"能力表": {
|
||
"template": "\n# Amily-Fanhua dataTable 说明\n\nAmily2 Table preset 1.09 By:繁华\n\n## 1. 用途\n\n`dataTable` 是一个用于存储和管理故事数据的核心系统。它通过 `Amily2TableData` 占位符注入一系列格式化的文本块,作为后续内容的关键参考。你的任务是根据故事发展,通过调用指定的函数来动态更新这些表格。\n\n## 2. 数据结构与格式\n\n注入的数据由多个表格块组成,每个表格块都遵循以下结构:\n【说明】:\n· [表格用途和规则的说明]\n<[tableName]内容>\n| rowIndex | [colIndex]:[colName] | [colIndex]:[colName] | ... |\n| ---------- | -------------------- | -------------------- | --- |\n| [rowIndex] | [单元格数据] | [单元格数据] | ... |\n...\n</[tableName]内容>\n【增加】: · [插入新行的触发条件]\n【删除】: · [删除行的触发条件]\n【修改】: · [更新行的触发条件]\n\n---\n\n### 格式解析\n\n* `* [tableIndex]:[tableName]`: 表格的标题行,包含表格的索引(`tableIndex`)和名称(`tableName`)。\n* `【说明】`: 提供了表格的详细用途和填写规则。\n* `<[tableName]内容>`: 包含了使用 Markdown 格式的实际数据表格。\n * 表头行定义了每一列的索引 (`colIndex`) 和名称 (`colName`)。第一列名为 `rowIndex`,用于标识每行数据的唯一索引。\n * 后续每一行都是一条数据记录,第一列是该行的索引 (`rowIndex`),后面跟着对应列的单元格数据。\n* `【增加】`, `【删除】`, `【修改】`: 分别描述了你应该在何种剧情下对表格进行增、删、改操作。\n\n### 表格引用关系(若无其他表格数据可忽略)\n\n```\n角色表 ←┬─ 关系表(主体/相对角色)\n ├─ 物品表(物品归属)\n ├─ 组织表(组织归属)\n └─ 能力表(能力归属)\n\n组织表 ←── 物品表(物品归属)\n ←── 地点表(地点归属)\n\n角色表/物品表/地点表 ←── 任务表(涉及名称)\n```\n\n---\n\n### 以下为需要更新的表格内容\n\n<需要更新的旧表格>\n{{tableData}}\n</需要更新的旧表格>\n\n---\n\n## 3. 表格操作指南\n\n你需要根据每个表格的【说明】、【增加】、【删除】、【修改】规则来判断是否需要更新表格。如果需要,请在 `<Amily2Edit>` 标签内调用以下 JavaScript 函数。\n\n### 3.1. 操作函数解释\n\n* **插入行**: `insertRow(tableIndex, data)`\n * `tableIndex` (string): 目标表格的索引。\n * `data` (object): 一个对象,键为列索引 (`colIndex`),值为单元格数据。\n * 参考示例: `insertRow(\"3\", {\"0\": \"张三的家\", \"1\": \"偷偷用多年积蓄购买\", \"2\": \"两房一厅一厨一卫\", \"3\": \"张三(知情者:张三)\", \"4\": \"正常\", \"5\": \"LOC_001\"})`\n\n* **删除行**: `deleteRow(tableIndex, rowIndex)`\n * `tableIndex` (string): 目标表格的索引。\n * `rowIndex` (string): 要删除的行的索引。\n * 参考示例: `deleteRow(\"1\", \"0\")`\n\n* **更新对应行的某列**: `updateRow(tableIndex, rowIndex, data)`\n * `tableIndex` (string): 目标表格的索引。\n * `rowIndex` (string): 要更新的行的索引。\n * `data` (object): 一个包含要修改的列数据对象,键为列索引 (`colIndex`)。\n * 参考示例: `updateRow(\"3\", \"0\", {\"4\": \"破败\"})`\n\n### 3.2. 重要规范\n\n* **用户优先**: 当 `<user>` 明确要求修改表格时,其指令拥有最高优先级。\n* **忠于原文**: 所有操作必须基于当前剧情,严禁捏造信息。\n* **信息丰富**: 信息避免过度简洁丢失关键细节。\n* **数据完整**: 使用 `insertRow` 时,`data` 对象应包含所有列的数据。\n* **注释封装**: 所有在 `<Amily2Edit>` 标签内的函数调用都必须被一对 `<!-- -->` 注释完全包裹。\n\n#### 【通用规范】\n\n**空值处理**:所有列不得留空,禁止填入\"无\"、\"未知\"、\"空值\",必须使用\"N\"代替。\n\n**隐私标注规则**:\n- 触发条件:信息属于秘密、隐私、或仅特定角色知晓\n- 标注格式:在对应字段内容后添加\"(知情者:姓名A/姓名B/...)\"\n- 绝对禁止隐私泄露\n\n**ID生成规则**:\n- 新ID = 当前表格中最大ID序号 + 1,格式为[前缀]_XXX(如CHAR_001)\n- ID一旦分配,永久不变,不复用已删除的ID\n- 各表格前缀:CHAR_(角色)、REL_(关系)、ITEM_(物品)、ORG_(组织)、LOC_(地点)、ABIL_(能力)、QUEST_(任务)\n\n**时间格式**:精确时间格式为\"年月日-时分\",如\"2025年01月17日-17:45\",必须精确到分钟\n\n**数据校验**:\n- 空值检查:所有列不得留空\n- 整行完整性:确保每行所有列都有值\n- 名称列异常:禁删表格(角色、组织、地点、能力、任务)尝试从剧情修正;仅物品表可删除无效行\n- 一致性:确保表格间引用的名称相互对应(若无其他表格数据可忽略)\n\n**增量更新原则**:\n- 更新描述性字段(背景、描述、详情、功效、效果、代价等)时,必须保留原有内容并自然融入新信息,禁止覆盖替换\n- 正确示例:原内容\"出生于A城\"→更新后\"出生于A城,曾落水被救\"\n- 错误示例:更新后仅剩\"落水被救\"\n- 禁止输出\"追加:\"\"补充:\"\"核心背景:\"等格式标记\n\n**智能压缩**:\n- 若新信息与原有内容重复,不重复添加\n- 若新信息与原有内容可合并,整合为连贯语句\n- 消除冗余修饰,保持精炼\n- 示例:原\"核心成员:张三、李四\"新增\"李四离开王五加入\"→更新为\"核心成员:张三、王五\"\n\n**背景字段判定规则**(适用于角色背景、组织背景、地点背景):\n- 背景的定义:背景是过往简史,是已经发生且固定不变的历史事实\n- 背景更新的判定条件(必须符合以下至少一项叙事语境):\n * 剧情出现回忆、闪回场景\n * 角色主动讲述自己的过去经历\n * 通过第三方(他人讲述、文献、传闻)了解到的历史\n * 明确使用过去时态描述的往事(如\"三年前\"、\"曾经\"、\"当年\")\n- 时间判定(辅助验证):若任务表存在数据,该信息所述事件应发生在任务接受时间之前\n- 禁止写入背景的内容:\n * 当前剧情中正在发生的事件\n * 角色当前的状态、行为、想法\n * 未来的计划、目标、决心\n * 无法确定是过去还是现在的模糊信息(宁缺勿滥)\n\n### 3.3. 输出示例\n\n【错误示例】:函数的对象参数跨行拆分,且存在冗余换行,导致工具无法完整识别函数调用结构,调用失败。\n<Amily2Edit>\n<!--\n// 获得新物品\ninsertRow(\"1\", {\n \"0\": \"高级润滑剂\", \n \"1\": \"消耗品\", \n \"2\": \"1(瓶)\", \n \"3\": \"进口高档润滑剂,透明液体,香草香味\", \n \"4\": \"用于特殊服务时的身体准备\", \n \"5\": \"进口\", \n \"6\": \"张三\", \n \"7\": \"未使用\"\n})\n-->\n</Amily2Edit>\n\n【正确示例】:函数名与所有参数完整置于同一行,格式简洁无冗余,工具可精准识别并执行,调用成功。\n<Amily2Edit>\n<!--\n// 获得新物品\ninsertRow(\"1\", {\"0\": \"高级润滑剂\", \"1\": \"消耗品\", \"2\": \"1(瓶)\", \"3\": \"进口高档润滑剂,透明液体,香草香味\", \"4\": \"用于特殊服务时的身体准备\", \"5\": \"进口\", \"6\": \"张三\", \"7\": \"正常\", \"8\": \"ITEM_001\"})\n// 高级润滑剂被使用殆尽,从物品表删除\ndeleteRow(\"1\", \"0\")\n// 张三偷偷购买房子,新增地点\"张三的家\",判断属于隐私需要备注\"(知情者:张三)\"\ninsertRow(\"3\", {\"0\": \"张三的家\", \"1\": \"偷偷用多年积蓄购买\", \"2\": \"两房一厅一厨一卫\", \"3\": \"张三(知情者:张三)\", \"4\": \"正常\", \"5\": \"LOC_001\"})\n// 张三的家因年久失修破败了,需要更新\nupdateRow(\"3\", \"0\", {\"4\": \"破败\"})\n-->\n</Amily2Edit>\n\n---\n\n# 通用表格转换思考框架\n\n## 核心原则\n\n1. **表格驱动**: 以表格为单位进行检查,而非以叙事元素为单位\n2. **动态索引**: 通过表格名称识别类型,动态获取对应 tableIndex\n3. **精准匹配**: 严格对照每个表格的【说明】、【增加】、【删除】、【修改】规则\n4. **一次到位**: 每轮思考必须完成所有必要的表格操作,禁止遗漏\n5. **字段限制**: 严格遵守每个字段的字数和内容限制\n\n---\n\n## 思考流程 (<thinking></thinking>)\n\n请严格按此框架思考并在<thinking>标签内输出:\n\n<thinking>\n\n【阶段0:旧表格数据错误检查】\n核心目的:避免错误累积和延续,确保基于正确数据进行操作\n检查步骤:\n1. 读取旧表格数据:查看 <需要更新的旧表格> 中的所有表格数据\n2. 逐表检查(参照【通用规范】):\n - 空值检查、整行完整性、名称列异常、字段格式、一致性\n - ⚠️ 内容完整性检查(对照剧情核实):\n * 列检查:表格有哪些列名\n * 列内容:列内容是否有填错列\n * 内容检查:各列内容是否符合定义、说明、增删改等要求\n3. 错误修正:记录需要执行的修正操作\n\n---\n\n【阶段1:解析表格映射】\n查看 <需要更新的旧表格>,建立\"表格列`colIndex`→列名\"映射:\n- 1 → \"?\"\n- 2 → \"?\"\n...\n(注:列出所有列名)\n\n---\n\n【阶段2:能力表检查】\n⚠️ 关键规则:\n- ❌ 禁止删除(即使无人拥有)\n- ❌ 能力升级 → 必须新增行,禁止修改旧行\n- ✅ 仅\"能力归属\"允许更新(增加或减少)\n- ✅ 例外:可增量补充新揭示的能力信息(禁止覆盖式修改)\n\n定位:找到\"能力表\"对应的 tableIndex\n检查清单:\n1. 新能力识别:是否有区别于\"基础/普遍能力\"的新能力出现?\n - 是什么拥有该能力?角色还是物品?\n → 是:执行 insertRow,填写所有字段\n \n2. 能力升级:已有能力是否明确出现成长/升级,且有新名称?\n → 是:以新能力名称执行 insertRow(禁止修改旧行!)\n \n3. 能力归属变化:能力归属是否增加或减少?\n → 是:执行 updateRow 更新\"能力归属\"字段\n\n4. 能力信息补充:是否有新揭示的能力信息(首次填写遗漏或剧情新揭示)?\n → 是:遵循【增量更新原则】补充,禁止覆盖原有内容\n\n---\n\n【阶段3:重复检测与最终校验】\n对每个表格执行以下检查:\n1. ID唯一性:检查是否有重复ID\n2. 名称重复:以 colIndex=0(名称列)为基准检查\n - 若发现重复且约等同:合并信息,删除多余行(仅物品表可删)\n - 若发现重复但不等同:添加备注区分\n\n3. 字段格式校验:\n | 检查项 | 要求 |\n |--------|------|\n | 空值 | 用\"N\"替代 |\n | 隐私信息 | 标注\"(知情者:...)\" |\n | 函数格式 | 单行,禁止换行 |\n | insertRow | 包含所有列 |\n\n</thinking>\n\n<Amily2Edit>\n<!--\ninsertRow(\"1\", {\"0\": \"示例\", \"1\": \"示例\"})\n-->\n</Amily2Edit>\n<finish>The form filling work has been completed.</finish>\n"
|
||
},
|
||
"任务表": {
|
||
"template": "\n# Amily-Fanhua dataTable 说明\n\nAmily2 Table preset 1.09 By:繁华\n\n## 1. 用途\n\n`dataTable` 是一个用于存储和管理故事数据的核心系统。它通过 `Amily2TableData` 占位符注入一系列格式化的文本块,作为后续内容的关键参考。你的任务是根据故事发展,通过调用指定的函数来动态更新这些表格。\n\n## 2. 数据结构与格式\n\n注入的数据由多个表格块组成,每个表格块都遵循以下结构:\n【说明】:\n· [表格用途和规则的说明]\n<[tableName]内容>\n| rowIndex | [colIndex]:[colName] | [colIndex]:[colName] | ... |\n| ---------- | -------------------- | -------------------- | --- |\n| [rowIndex] | [单元格数据] | [单元格数据] | ... |\n...\n</[tableName]内容>\n【增加】: · [插入新行的触发条件]\n【删除】: · [删除行的触发条件]\n【修改】: · [更新行的触发条件]\n\n---\n\n### 格式解析\n\n* `* [tableIndex]:[tableName]`: 表格的标题行,包含表格的索引(`tableIndex`)和名称(`tableName`)。\n* `【说明】`: 提供了表格的详细用途和填写规则。\n* `<[tableName]内容>`: 包含了使用 Markdown 格式的实际数据表格。\n * 表头行定义了每一列的索引 (`colIndex`) 和名称 (`colName`)。第一列名为 `rowIndex`,用于标识每行数据的唯一索引。\n * 后续每一行都是一条数据记录,第一列是该行的索引 (`rowIndex`),后面跟着对应列的单元格数据。\n* `【增加】`, `【删除】`, `【修改】`: 分别描述了你应该在何种剧情下对表格进行增、删、改操作。\n\n### 表格引用关系(若无其他表格数据可忽略)\n\n```\n角色表 ←┬─ 关系表(主体/相对角色)\n ├─ 物品表(物品归属)\n ├─ 组织表(组织归属)\n └─ 能力表(能力归属)\n\n组织表 ←── 物品表(物品归属)\n ←── 地点表(地点归属)\n\n角色表/物品表/地点表 ←── 任务表(涉及名称)\n```\n\n---\n\n### 以下为需要更新的表格内容\n\n<需要更新的旧表格>\n{{tableData}}\n</需要更新的旧表格>\n\n---\n\n## 3. 表格操作指南\n\n你需要根据每个表格的【说明】、【增加】、【删除】、【修改】规则来判断是否需要更新表格。如果需要,请在 `<Amily2Edit>` 标签内调用以下 JavaScript 函数。\n\n### 3.1. 操作函数解释\n\n* **插入行**: `insertRow(tableIndex, data)`\n * `tableIndex` (string): 目标表格的索引。\n * `data` (object): 一个对象,键为列索引 (`colIndex`),值为单元格数据。\n * 参考示例: `insertRow(\"3\", {\"0\": \"张三的家\", \"1\": \"偷偷用多年积蓄购买\", \"2\": \"两房一厅一厨一卫\", \"3\": \"张三(知情者:张三)\", \"4\": \"正常\", \"5\": \"LOC_001\"})`\n\n* **删除行**: `deleteRow(tableIndex, rowIndex)`\n * `tableIndex` (string): 目标表格的索引。\n * `rowIndex` (string): 要删除的行的索引。\n * 参考示例: `deleteRow(\"1\", \"0\")`\n\n* **更新对应行的某列**: `updateRow(tableIndex, rowIndex, data)`\n * `tableIndex` (string): 目标表格的索引。\n * `rowIndex` (string): 要更新的行的索引。\n * `data` (object): 一个包含要修改的列数据对象,键为列索引 (`colIndex`)。\n * 参考示例: `updateRow(\"3\", \"0\", {\"4\": \"破败\"})`\n\n### 3.2. 重要规范\n\n* **用户优先**: 当 `<user>` 明确要求修改表格时,其指令拥有最高优先级。\n* **忠于原文**: 所有操作必须基于当前剧情,严禁捏造信息。\n* **信息丰富**: 信息避免过度简洁丢失关键细节。\n* **数据完整**: 使用 `insertRow` 时,`data` 对象应包含所有列的数据。\n* **注释封装**: 所有在 `<Amily2Edit>` 标签内的函数调用都必须被一对 `<!-- -->` 注释完全包裹。\n\n#### 【通用规范】\n\n**空值处理**:所有列不得留空,禁止填入\"无\"、\"未知\"、\"空值\",必须使用\"N\"代替。\n\n**隐私标注规则**:\n- 触发条件:信息属于秘密、隐私、或仅特定角色知晓\n- 标注格式:在对应字段内容后添加\"(知情者:姓名A/姓名B/...)\"\n- 绝对禁止隐私泄露\n\n**ID生成规则**:\n- 新ID = 当前表格中最大ID序号 + 1,格式为[前缀]_XXX(如CHAR_001)\n- ID一旦分配,永久不变,不复用已删除的ID\n- 各表格前缀:CHAR_(角色)、REL_(关系)、ITEM_(物品)、ORG_(组织)、LOC_(地点)、ABIL_(能力)、QUEST_(任务)\n\n**时间格式**:精确时间格式为\"年月日-时分\",如\"2025年01月17日-17:45\",必须精确到分钟\n\n**数据校验**:\n- 空值检查:所有列不得留空\n- 整行完整性:确保每行所有列都有值\n- 名称列异常:禁删表格(角色、组织、地点、能力、任务)尝试从剧情修正;仅物品表可删除无效行\n- 一致性:确保表格间引用的名称相互对应(若无其他表格数据可忽略)\n\n**增量更新原则**:\n- 更新描述性字段(背景、描述、详情、功效、效果、代价等)时,必须保留原有内容并自然融入新信息,禁止覆盖替换\n- 正确示例:原内容\"出生于A城\"→更新后\"出生于A城,曾落水被救\"\n- 错误示例:更新后仅剩\"落水被救\"\n- 禁止输出\"追加:\"\"补充:\"\"核心背景:\"等格式标记\n\n**智能压缩**:\n- 若新信息与原有内容重复,不重复添加\n- 若新信息与原有内容可合并,整合为连贯语句\n- 消除冗余修饰,保持精炼\n- 示例:原\"核心成员:张三、李四\"新增\"李四离开王五加入\"→更新为\"核心成员:张三、王五\"\n\n**背景字段判定规则**(适用于角色背景、组织背景、地点背景):\n- 背景的定义:背景是过往简史,是已经发生且固定不变的历史事实\n- 背景更新的判定条件(必须符合以下至少一项叙事语境):\n * 剧情出现回忆、闪回场景\n * 角色主动讲述自己的过去经历\n * 通过第三方(他人讲述、文献、传闻)了解到的历史\n * 明确使用过去时态描述的往事(如\"三年前\"、\"曾经\"、\"当年\")\n- 时间判定(辅助验证):若任务表存在数据,该信息所述事件应发生在任务接受时间之前\n- 禁止写入背景的内容:\n * 当前剧情中正在发生的事件\n * 角色当前的状态、行为、想法\n * 未来的计划、目标、决心\n * 无法确定是过去还是现在的模糊信息(宁缺勿滥)\n\n### 3.3. 输出示例\n\n【错误示例】:函数的对象参数跨行拆分,且存在冗余换行,导致工具无法完整识别函数调用结构,调用失败。\n<Amily2Edit>\n<!--\n// 获得新物品\ninsertRow(\"1\", {\n \"0\": \"高级润滑剂\", \n \"1\": \"消耗品\", \n \"2\": \"1(瓶)\", \n \"3\": \"进口高档润滑剂,透明液体,香草香味\", \n \"4\": \"用于特殊服务时的身体准备\", \n \"5\": \"进口\", \n \"6\": \"张三\", \n \"7\": \"未使用\"\n})\n-->\n</Amily2Edit>\n\n【正确示例】:函数名与所有参数完整置于同一行,格式简洁无冗余,工具可精准识别并执行,调用成功。\n<Amily2Edit>\n<!--\n// 获得新物品\ninsertRow(\"1\", {\"0\": \"高级润滑剂\", \"1\": \"消耗品\", \"2\": \"1(瓶)\", \"3\": \"进口高档润滑剂,透明液体,香草香味\", \"4\": \"用于特殊服务时的身体准备\", \"5\": \"进口\", \"6\": \"张三\", \"7\": \"正常\", \"8\": \"ITEM_001\"})\n// 高级润滑剂被使用殆尽,从物品表删除\ndeleteRow(\"1\", \"0\")\n// 张三偷偷购买房子,新增地点\"张三的家\",判断属于隐私需要备注\"(知情者:张三)\"\ninsertRow(\"3\", {\"0\": \"张三的家\", \"1\": \"偷偷用多年积蓄购买\", \"2\": \"两房一厅一厨一卫\", \"3\": \"张三(知情者:张三)\", \"4\": \"正常\", \"5\": \"LOC_001\"})\n// 张三的家因年久失修破败了,需要更新\nupdateRow(\"3\", \"0\", {\"4\": \"破败\"})\n-->\n</Amily2Edit>\n\n---\n\n# 通用表格转换思考框架\n\n## 核心原则\n\n1. **表格驱动**: 以表格为单位进行检查,而非以叙事元素为单位\n2. **动态索引**: 通过表格名称识别类型,动态获取对应 tableIndex\n3. **精准匹配**: 严格对照每个表格的【说明】、【增加】、【删除】、【修改】规则\n4. **一次到位**: 每轮思考必须完成所有必要的表格操作,禁止遗漏\n5. **字段限制**: 严格遵守每个字段的字数和内容限制\n\n---\n\n## 思考流程 (<thinking></thinking>)\n\n请严格按此框架思考并在<thinking>标签内输出:\n\n<thinking>\n\n【阶段0:旧表格数据错误检查】\n核心目的:避免错误累积和延续,确保基于正确数据进行操作\n检查步骤:\n1. 读取旧表格数据:查看 <需要更新的旧表格> 中的所有表格数据\n2. 逐表检查(参照【通用规范】):\n - 空值检查、整行完整性、名称列异常、字段格式、一致性\n - ⚠️ 内容完整性检查(对照剧情核实):\n * 列检查:表格有哪些列名\n * 列内容:列内容是否有填错列\n * 内容检查:各列内容是否符合定义、说明、增删改等要求\n3. 错误修正:记录需要执行的修正操作\n\n---\n\n【阶段1:解析表格映射】\n查看 <需要更新的旧表格>,建立\"表格列`colIndex`→列名\"映射:\n- 1 → \"?\"\n- 2 → \"?\"\n...\n(注:列出所有列名)\n\n---\n\n【阶段2:任务表检查】\n⚠️ 关键规则:\n- ❌ 禁止删除(即使已完成/终止)\n- ⚠️ 任务状态:2-4字,禁止详细进度描述\n- ⚠️ 每轮必须更新\"剩余时间\"(根据当前剧情时间计算)\n\n定位:找到\"任务表\"对应的 tableIndex\n检查清单:\n1. 新任务识别:是否有符合\"任务定义\"的新任务产生?\n → 是:执行 insertRow,填写所有字段\n \n2. 任务更新:\n - 任务状态(2-4字)应该是什么,是否存在放弃任务?\n - 剩余时间(根据当前时间与截止时间的差值更新)\n - 任务详情\n → 是:执行 updateRow\n\n---\n\n【阶段3:重复检测与最终校验】\n对每个表格执行以下检查:\n1. ID唯一性:检查是否有重复ID\n2. 名称重复:以 colIndex=0(名称列)为基准检查\n - 若发现重复且约等同:合并信息,删除多余行(仅物品表可删)\n - 若发现重复但不等同:添加备注区分\n\n3. 字段格式校验:\n | 检查项 | 要求 |\n |--------|------|\n | 任务状态 | 2-4字 |\n | 空值 | 用\"N\"替代 |\n | 隐私信息 | 标注\"(知情者:...)\" |\n | 函数格式 | 单行,禁止换行 |\n | insertRow | 包含所有列 |\n\n</thinking>\n\n<Amily2Edit>\n<!--\ninsertRow(\"1\", {\"0\": \"示例\", \"1\": \"示例\"})\n-->\n</Amily2Edit>\n<finish>The form filling work has been completed.</finish>\n"
|
||
}
|
||
},
|
||
"tagName": "Instructions for filling out the form"
|
||
} |