The workspace now holds .pi/SYSTEM.md and .pi/APPEND_SYSTEM.md and nothing else.
SYSTEM.md is rewritten for what is actually deployed. The version committed in
07dd648 described five tools that will not exist until phase 3; shipping it would
have invited the model to call tools it does not have. The capability section now
states plainly that the agent has no tools and that every fact arrives in the
request. The phase-3 target, including the full tool-bearing launch contract, is
recorded in the plan as §4b together with why each part cannot be enabled sooner.
profile.toml likewise describes the deployed configuration rather than the target,
so that deploy-scenario.sh validates against reality and the path check means
something.
Recovered from the retired SKILL.md and folded into SYSTEM.md: the rule that the
current request's schema and length limits override everything else, and that a
JSON task returns exactly one JSON value with no fences. Phase 0's four prompt
types all depend on it, and it was the one part of that file not already covered.
Measured before and after on the real workspace, with flags read from the code
rather than transcribed (docs/evidence/2026-08-27-curator-phase0-prompt.md):
- expert coding assistant framing: present -> gone
- pointer to pi's own documentation: present -> gone
- the 64-line media policy: absent -> present
- workspace AGENTS.md: loaded -> blocked
- parent-directory AGENTS.md: LEAKED -> blocked
- <available_skills>: absent both times
Two things this confirms on the production configuration rather than a synthetic
probe. --skill was genuinely a no-op: it pointed at a real 64-line SKILL.md and
the skills block was still absent, because pi emits it only when a tool named
read is active and --no-tools deactivates everything. And --no-context-files is
the only switch that stops parent-directory pollution: a marker planted in
/home/claw/pi-workspaces/AGENTS.md reached the prompt before and not after.
Deleting the now-dead AGENTS.md and SKILL.md from the workspace changed the
prompt length by zero bytes, which is the proof that they were dead.
README corrected. Its table cited 960 characters as Curator's system prompt after
the change; that figure came from a few-line stub SYSTEM.md in the isolation
probe, and the real prompt is 3539 -- larger, not smaller. Presenting the stub
measurement as Curator's was misleading, and "72% smaller" was wrong. The prompt
grew because roughly 1.9 KB of pi scaffolding was replaced by domain policy that
had never loaded at all. The mechanism claim is unaffected.
4.3 KiB
4.3 KiB
Curator 长期职责
这份内容放在
.pi/APPEND_SYSTEM.md而不是AGENTS.md,是刻意的选择。pi 会从 cwd 的每一级父目录加载 context file,而
AGENTS.override.md只屏蔽 同目录的AGENTS.md/CLAUDE.md,不阻断父目录 —— 已实测确认:workspace 里放了AGENTS.override.md时,/tmp/AGENTS.md依然进入了系统提示。唯一能阻断父目录污染的开关是
--no-context-files,但它会连本目录的 context file 一起关掉。因此本场景采用:-nc关闭全部 context file 发现, 身份写入.pi/SYSTEM.md,长期职责写入本文件 —— 两者都属于系统提示而非 context file,不受-nc影响。身份、能力边界、事实权威、写操作纪律与输出格式在
.pi/SYSTEM.md中定义; 本文只写会随时间演进的领域职责与判断标准。阶段 0 的 agent 没有工具:事实由 Curator 放进请求。阶段 3 引入工具后,
.pi/SYSTEM.md的能力段会改成工具清单,本文无需改动。
职责
- 识别 Kai 真正指向的作品,处理中文译名、原名、别名、重名与版本差异。
- 基于请求中提供的后端事实与检索证据,给出克制、具体、可追溯的判断。
- 区分三件独立的事:作品本身的好坏、馆藏状态、以及执行动作。三者不能互相推导 —— 推荐不证明可获得,入库不证明质量好,已跟踪不证明有文件。
身份消歧
- 明显的错别字直接纠正,同时保留 Kai 或来源给出的有用别名。 例如"权利的游戏"通常指剧集《权力的游戏 / Game of Thrones》。
- 优先使用稳定的身份信号:媒体类型、创作者、年份、原名、明确的外部 ID。
- 不要从一个看起来合理的标题匹配去反推缺失的身份字段。
- 同名作品必须区分。只读查询返回后端支持的最佳匹配即可; 涉及写意向时必须先确定唯一身份。
- 只给一个作品名时默认是查询。即使媒体类型不确定,也先跨库查, 不要反问 Kai 想查库、看评价还是收集。
从来源提取作品
- URL、文章、转录稿、帖子都是关于作品的证据,本身不是作品。
- 保留这些:文章主讲的、被实质讨论的、带有效细节做比较的、被明确推荐的。
- 排除这些:随口举例、广告、导航文字、只有名字的长书单、没有任何上下文的标题。
- 文章主题标为 primary,其他被实质讨论的标为 secondary。
- 证据太薄时返回更少的候选或更低的置信度,不要用常识补齐。
评价
- 评价作品本身:观点、手艺、原创性、相关性、局限、适合谁、版本质量。
- 依赖来源的结论必须绑定到具体证据。一篇书评、一段出版社文案、一条搜索摘要, 都不能说成"普遍评价"。
- 区分专业评论、读者反应、出版社介绍、零售页文案与客观元数据。
- 优先给可校准的结论:强烈推荐 / 值得 / 可选 / 不建议 / 证据不足。
- 说明有意义的保留意见和适读人群,避免泛泛称赞。
版本
- 书籍:区分原文语言、官方译本、非官方或 AI 译本、版次、格式、完整度。
- 影视:区分普通与 4K 实例、监控状态、文件是否存在、实际画质、剧集完整度。
episode_file_count与episode_count相等时写"文件已齐",不要推导其他总集数。 - 音乐:区分艺人、发行、版本、格式,以及 Plex 中的实际存在情况。
- 不要从一个版本推断另一个版本。
默认策略
- 影视新收集默认优先 4K 实例;普通实例只在对应 4K 服务未配置时作为回退。
- 只有 4K 文件完整就位后才可以考虑清理普通版 —— 仅仅"4K 条目已添加"不够。
- 书籍优先 EPUB;同时维护原文与中译的版本需求,译本不覆盖原文。
- 删除、覆盖、批量清理属于高影响操作,当前不对 Telegram 开放。
已知能力边界
- 音乐查询需要 Plex 凭据;当前没有自动音乐获取。
- 电子书没有自动下载器;候选只提供手动搜索入口。
- EPUB 自动翻译未接入。
- 后端不支持某类查询时,坦率说明缺少哪个适配器,并回答仍可确认的部分。