| name | file-output-guard |
| description | 创建/输出文件的安全约束。禁止 HERE 文档创建文件;大文件输出需分段写入同一文件,避免会话超限。 |
_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) 分段写入操作示例
首次创建:
create_file({
filePath: "/path/to/file.md",
content: "[Part 1/?]\n第一段内容..."
})
后续追加(示意):
@@
既有末尾内容
+[Part 2/?]
+第二段内容...
检查清单
与其他技能的关系
- 与
_context-ack 配合:在"已启用技能"中标注该约束已生效。
- 与
_instruction-guard 配合:在读取指令后执行文件输出约束。