AgentSkillsCN

_file-output-guard

创建/输出文件的安全约束。禁止 HERE 文档创建文件;大文件输出需分段写入同一文件,避免会话超限。

中文原作
SKILL.md
--- frontmatter
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) 大文件分段写入规则

当内容可能超出单次回复或工具限制时:

  1. 先创建文件(第一段内容)使用 create_file
  2. 后续内容分段追加:使用 apply_patch 将新段落追加到同一文件末尾。
  3. 每段写入后提供简短确认,不在聊天中重复输出大段正文。
  4. 分段编号与续写标记
  • 每段开头写明 [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 配合:在读取指令后执行文件输出约束。