_file-output-guard
目标
- •创建文件必须使用
create_file工具,禁止 HERE 文档。 - •大文件输出必须分段写入同一文件,避免会话输出过大导致失败。
适用范围
- •任何创建新文件的操作。
- •任何可能产生超长输出的内容(例如生成长文档、大型配置、长列表等)。
必须遵循的规则
1) 创建文件规则
- •必须使用
create_file创建新文件。 - •禁止使用 HERE 文档(如
cat > file << 'EOF')。 - •禁止用终端命令创建内容文件(除非用户明确要求)。
⚠️ 关键原则:提前识别,不事后补救
- •在创建文件时,立即评估内容大小。若预计内容 > 5KB,直接采用"分段创建"策略
- •禁止等到 API 调用失败或会话超限后才改为分段。应该在生成前就预判并主动分段
- •评估标准:参考
_session-safety中的超长阈值参考表(< 5KB 直接创建,5KB-20KB 建议分段,> 20KB 必须分段) - •若不确定大小,宁可分段,不可赌
2) 大文件分段写入规则
当内容可能超出单次回复或工具限制时:
- •先创建文件(第一段内容)使用
create_file。 - •后续内容分段追加:使用
apply_patch将新段落追加到同一文件末尾。 - •每段写入后提供简短确认,不在聊天中重复输出大段正文。
- •分段编号与续写标记:
- •每段开头写明
[Part X/Y](未知总数可用[Part X/?])。 - •续写时删除上一段的分段标记,并在文件末尾追加新的分段标记与内容。
- •续写时必须带上上一段的“最后一行”作为上下文锚点。
3) 分段写入操作示例
首次创建:
typescript
create_file({
filePath: "/path/to/file.md",
content: "[Part 1/?]\n第一段内容..."
})
后续追加(示意):
diff
*** Update File: /path/to/file.md @@ 既有末尾内容 +[Part 2/?] +第二段内容... +第三段内容... +第三段内容...
检查清单
- • 新文件是否通过
create_file创建? - • 是否避免使用 HERE 文档?
- • 大文件是否分段输出并持续写入同一文件?
- • 是否避免在聊天中重复输出大段内容?
- • 是否包含分段编号与续写标记?
与其他技能的关系
- •与
_context-ack配合:在“已启用技能”中标注该约束已生效。 - •与
_instruction-guard配合:在读取指令后执行文件输出约束。