refactor(提示词): 批次2身份与术语统一——身份句唯一归角色层,JF-03销项

- 删除4份登记模板身份句(生成正文/生成作品规划/细化章节计划/创作质量审阅);
  装配后身份句只来自角色层,消除双自我介绍
- 正典名统一规划员:角色合同 displayName 与章节标题两处文字(红线收窄豁免,
  .agent/角色/规划员.md 不动);生成规划.py 错误文案与受控规划测试断言同步
- A3(JF-03,用户已授权):删除未登记孤儿模板 核对实体歧义.md;研究命令与
  「检查与维护拆书结果」技能话术改为"歧义只登记,由作者人工判定",人工核对
  步骤与合同承接进技能;实体归并.py 话术核实已合规无需改
- C4:创作质量审阅英文状态词首现处补中文对照(insufficient_evidence/ask/
  uncalibrated/reviewed/repair/retain/judgment);continuity/craft/voice 已有对照
- D2:生成正文.md"戏剧化叙述"并入可操作判据(用动作、对白与细节呈现事件,
  不复述或概括事件),写手模板净增0行
- docs:B03-资料研究.md 同步(拆书分析改资源模板加载、新增模板行、删孤儿行、
  备注更新);专项检查台账收口节记录 JF-03 处置;历史目标文档按先例保留原时点

证据:全仓 grep 规划师/核对实体歧义 活跃区零残留;离线全量1153项通过;
受影响数据库集成45项通过(受控规划/完整文学审校/两阶段写手/写手声音/章后/拆书);
资源包已重建,索引检查通过。
This commit is contained in:
zizi 2026-09-19 22:08:16 +08:00
parent 18343b9464
commit faef454ac7
12 changed files with 29 additions and 35 deletions

View File

@ -16,10 +16,20 @@ description: 检查拆书台账、歧义与失败窗口,按窗口重算或以
## 操作步骤
1. `python -m muse 研究 进度 <来源ID>` 或「拆书工作区」台账查看状态。
2. `python -m muse 研究 检查 <任务ID>` 查看完成窗、失败窗与歧义清单;歧义条目待「核对实体歧义」澄清,同名异型默认不合并。
2. `python -m muse 研究 检查 <任务ID>` 查看完成窗、失败窗与歧义清单;歧义条目只登记、由作者人工判定(核对步骤见下),同名异型默认不合并。
3. 失败窗重算:经恢复入口带 `retry_windows` 指定窗口;已完成窗不重跑,成本包络含重试余量。
4. 来源新版本重建:直接重新发起拆解;旧版本分析保留可回查,版本身份不冲突。
## 歧义人工核对
对歧义条目(同名不同类型的实体候选)逐项人工核对:
1. 列出各候选的出现窗与证据引文。
2. 依据上下文判断各候选是否同一实体;判断必须给出引文级依据。
3. 结论只能是三态之一:同一实体(合并并说明)、不同实体(分别命名区分)、证据不足(维持歧义)。
不因为同名就直接合并;类型冲突的同名默认不同实体;只处理参考作品内部身份判定,不跨作品合并、不改写本书事实;证据不足时维持歧义,不做倾向性猜测。
## 边界
- 只撤销本任务可证明归属的中间产物;不触碰外部确认与来源版本。

View File

@ -9,7 +9,7 @@ roles:
explicitModelRequired: true
toolPolicy: readonly_tools
planner:
displayName: 规划师
displayName: 规划员
promptFile: .agent/角色/规划员.md
modelPolicy: fixed
modelPolicyVersion: role-policy-r2-v2
@ -116,7 +116,7 @@ roles:
<!-- /role-contract:judge -->
<!-- role-contract:planner -->
## planner:规划师
## planner:规划员
**责任**:承接设定初始化、作品规划和单章细纲等规划任务;一次调用只执行任务包指定的一个功能合同,产出可比较或可校验的 Shadow 草稿。

View File

@ -25,6 +25,7 @@
- **位置时效**:条目位置为 2026-09-16 检查时快照。优化执行重组了提示词、模块与测试文件结构,**路径一律以当前仓库为准**;本台账不逐条追改路径。
- **对象退场**:`数据库/旧库迁移/` 工具链及其用例已于 2026-09-18 整体退场(提交 `9712589`),`LM-01`~`LM-07` 与位置引用 `tests/迁移/test_PG作品正文迁移.py`、`test_作品资产迁移.py`、`test_混合知识分流.py`、`test_隔离目标台账.py` 等已删文件的条目(`TS-20`、`TS-50`、`TS-55`、`TS-61`、`TS-62`)失去核查对象,保留为历史发现。
- **过程材料留存口径**:14 份模块报告(`专项检查-报告-*.md`)与 `/tmp` 探针日志均为过程材料,受 `.gitignore` 忽略、不入版本库;台账中指向它们的路径仅在本地可读时有效。
- **JF-03 处置(2026-09-19)**:经用户授权采纳删除方案——`src/muse/资料研究/提示词/核对实体歧义.md` 已删除(未登记、运行时不加载、承诺不存在的任务);研究命令与「检查与维护拆书结果」技能话术改为“歧义只登记,由作者人工判定”,人工核对步骤承接进该技能;`实体归并.py` 话术检查时已合规。原行保留为历史快照。
## 0. 汇总

View File

@ -42,13 +42,13 @@
| 分章切窗.py | 分章、窗口划分及输入漂移 |
| 榜单快照.py | 来源、时间、质量、排名及观察差异 |
| 样本选题.py | 样本比较、选题依据及选书交接 |
| 拆书分析.py | 当前逐窗分析的内联系统提示、输出合同与执行;提取章节、阶段、实体及写法 |
| 拆书分析.py | 逐窗分析的任务模板(发布包登记)、输出合同与执行;提取章节、阶段、实体及写法 |
| 提示词/拆书分析.md | 逐窗拆书分析任务模板;随发布包登记加载,不含身份句 |
| 实体归并.py | 参考作品内专名、别名及歧义 |
| 分析版本.py | 完整模型成果登记、旧检查点承接及运行摘要 |
| 分析保存.py | 分析不可变存储合同、S04校验与S01未决旧卡写入 |
| 提示词/核对实体歧义.md | 作者人工核对歧义的参考说明;未接入自动核对任务 |
当前文件以[资料研究源码](../../../../src/muse/资料研究/)为准;原[目标文件清单](../项目目录与文件职责.md)及[文件合同](../文件设计/后端-B03-资料研究.md)保留历史设计目标,未消费的分析模板已退出。
当前文件以[资料研究源码](../../../../src/muse/资料研究/)为准;原[目标文件清单](../项目目录与文件职责.md)及[文件合同](../文件设计/后端-B03-资料研究.md)保留历史设计目标,未消费的分析模板与人工歧义核对说明(核对实体歧义.md)已退出,歧义只登记、由作者人工判定。
## 实现约束

View File

@ -1,6 +1,6 @@
# 生成作品规划
你是规划师。本次只生成输入指定的一个规划对象,输出必须满足任务给定的 JSON Schema。
本次只生成输入指定的一个规划对象,输出必须满足任务给定的 JSON Schema。
- 使用冻结材料中的目录、作者要求和允许模型读取的规划基线。方法材料是写作参考,不是本书事实。
- 保留作者已经确定的方向;引用只能使用材料中可核对的本书身份与版本。材料不足时不得虚构实体、来源身份或确认决定。

View File

@ -1,6 +1,6 @@
# 章级细纲
你是规划师。本次只细化输入指定的一章的章级细纲,输出满足任务给定的 JSON Schema。
本次只细化输入指定的一章的章级细纲,输出满足任务给定的 JSON Schema。
- 目标章号以冻结目录为准,不改章节身份。已确认的上层方向和作者要求优先。
- 将冲突、出场、事件方向和章末承接组织成可执行的章级细纲,不输出正文。

View File

@ -1,13 +1,13 @@
# 本书文学片审阅
你是受控审阅角色。输入包含固定背景、已确认声音(可能没有)、完整片段语境与核心区间;不使用工具,不改写正文。
输入包含固定背景、已确认声音(可能没有)、完整片段语境与核心区间;不使用工具,不改写正文。
- 对continuity(连续性)、craft(创作质量)、voice(声音)分别给出判断,不合并成一个文学通过分。
- continuity依据本次允许的时点事实核对因果、视角和已知条件。没有确切外部依据时不能断言事实冲突,返回insufficient_evidence或ask。
- continuity依据本次允许的时点事实核对因果、视角和已知条件。没有确切外部依据时不能断言事实冲突,返回insufficient_evidence(依据不足)或ask(追问)。
- craft关注人物行动、冲突、节奏、情绪与场景作用,解释具体阅读效果。不要仅凭禁词、比喻或句型命中要求修改。
- voice只比较已确认指导;没有已确认声音则状态为uncalibrated,不给reviewed或repair。
- voice只比较已确认指导;没有已确认声音则状态为uncalibrated(未标定),不给reviewed(已审阅)或repair(修订)。
- 每个问题只从本片核心区起点定位,可延伸到本片语境结尾。start/end使用全文Unicode码点左闭右开区间,quote必须逐字来自该位置。重复文字不默认选择第一次出现。
- judgment为repair、retain或ask。有意表达可retain,未知信号可ask,零问题是合法结果。缺依据或未标定不得输出repair。
- judgment(判定)为repair、retain(保留)或ask。有意表达可retain,未知信号可ask,零问题是合法结果。缺依据或未标定不得输出repair。
- basis_ids只能引用输入允许的依据ID。不要创造参考资料、人物事实或来源身份。
- reviewed表示本维给出了一次判断,不代表文学收益经过实验验证。禁止输出作者身份概率、检测器规避分数、自动采纳或伪造运行完成声明。

View File

@ -150,7 +150,7 @@ def 运行研究命令(装配: 应用装配, 动作: str, 目标: str | None) ->
if 结果
else ("history_not_imported" if 快照.状态.value == "completed" else "in_progress")
)
状态["说明"] = "歧义条目待核对实体歧义任务澄清;失败窗可经重跑窗恢复。"
状态["说明"] = "歧义条目只登记,由作者人工判定;失败窗可经重跑窗恢复。"
return 状态
raise 配置错误(f"未知研究命令动作:{动作}")

View File

@ -1,6 +1,6 @@
# 生成正文(正文写作 · 无工具写作模板)
你是本作品的写手。你收到的是一次冻结装配的写作材料:
你收到的是一次冻结装配的写作材料:
- 目标章细纲投影(目标、硬约束、关键事件、必出场对象、章末钩子);
- 截止时点的历史正文投影与事实投影(如装配入选);
@ -11,7 +11,7 @@
1. 只使用装配材料中的设定与事实;不得虚构与材料冲突的事实。
2. 严格覆盖细纲关键事件的顺序与结果方向;必出场对象必须实际出场。
3. 用戏剧化叙述展开,禁止把细纲措辞原样搬进正文。
3. 用戏剧化叙述展开(用动作、对白与细节呈现事件,不复述或概括事件),禁止把细纲措辞原样搬进正文。
4. 按当前场景和人物选择适用的已确认声音指导,保持作者认可的表达;口癖只在合适语境使用,不强塞到每句。
5. 依据当前文本判断声音偏移;保护表达用于保真,不要求新造或照抄剧情。人物事实与细纲仍约束声音指导的使用。
6. 词表命中只作观察线索,判断是否偏移须给出文本依据,不能直接判为缺陷。

View File

@ -316,5 +316,5 @@ def 发起生成规划(装配, 身份, 命令ID: str, 请求: 规划保存, 要
任务ID = 装配.任务运行.创建任务于(连, 任务, 流程身份, 流程版本)
配置 = 配置版本管理(库).冻结到任务于(连, 任务ID, 配置ID)
if "planner" not in 配置.内容.角色配置:
raise 作品错误("CONFIG_INVALID", "选定配置没有规划师角色")
raise 作品错误("CONFIG_INVALID", "选定配置没有规划员角色")
return {"task_id": 任务ID}

View File

@ -1,17 +0,0 @@
# 核对实体歧义 · 人工核对说明
歧义只登记,由作者人工判定。以下是人工查看证据时的参考步骤,尚无自动语义核对任务或自动合并入口。
## 核对步骤
对拆书归并中登记的歧义条目(同名不同类型的实体候选)逐项核对:
1. 列出各候选的出现窗与证据引文。
2. 依据上下文判断各候选是否同一实体;判断必须给出引文级依据。
3. 结论只能是三态之一:同一实体(合并并说明)、不同实体(分别命名区分)、证据不足(维持歧义)。
## 合同
- 不因为同名就直接合并;类型冲突的同名默认不同实体。
- 只处理参考作品内部身份判定;不跨作品合并,不改写本书事实。
- 证据不足时维持歧义,不得输出倾向性猜测。

View File

@ -112,7 +112,7 @@ def test_规划真实方法消费且只产出候选__20c01a(规划环境):
task_id, 终态 = _运行(环境)
assert 终态.状态 == 任务状态.已完成
assert len(环境["收到"]) == 1 and not 环境["收到"][0].get("tools")
assert "规划师" in 环境["收到"][0]["instructions"]
assert "规划员" in 环境["收到"][0]["instructions"]
输入 = json.loads(环境["收到"][0]["input"])
assert "用动作表现角色的迟疑" in 输入["装配材料"]
assert "方法字段仅供规划定位,不应发给写手。" in 输入["装配材料"]
@ -190,7 +190,7 @@ def test_错误角色配置不留孤儿规划任务__20c02b(规划环境):
环境 = 规划环境
with 环境["库"].连接(只读=True) as 连:
前 = 连.execute("SELECT COUNT(*) FROM muse_task").fetchone()[0]
with pytest.raises(作品错误, match="规划师角色"):
with pytest.raises(作品错误, match="规划员角色"):
发起生成规划(
环境["装配"],
环境["作者"],