大模型安全写文件
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_15292d5a/yjkj-llm-safe-write。
技能介绍
问题:Write 不是总能一次写完整
在使用支持工具调用的编程 Agent 时,Write 会把文件内容放进一次 JSON 工具调用。文件超过 50 行,或包含 CJK 字符、特殊转义序列时,字符串体积膨胀或缓冲边界变化,可能出现 Unterminated string、JSON truncation,甚至 Write 显示成功但后续 Read 发现末尾内容被截掉。重试同一份内容通常不会解决根因。
核心策略:ASCII 骨架 + 分段 Edit
llm-safe-write 的核心不是换工具,而是换写入方式:
- 先用
Write写骨架:只写 ASCII,控制在 50 行以内,所有 CJK 文本替换为PLACEHOLDER_xxx,函数签名保留正确缩进。 - 再用
Edit逐段填充:每次 Edit 修改控制在 30 行以内,把占位符替换成实际内容。 - 已有文件只改不重写:修改大文件或含 CJK 的文件时始终使用
Edit,不整文件覆盖。 - 追加用末行锚点:例如以
if __name__ == "__main__":作为锚点,将新函数插到它之前;没有稳定锚点时可先插入临时标记,但要注意中断后残留。 - 非代码文件同样拆步:JSON 先写有效结构并用同类型占位符;YAML 用注释占位;Markdown 先写标题再补正文。
使用边界
- 文件短且纯 ASCII 时可直接
Write,但 CJK 内容在任意长度都属于高风险。 - 传输层截断与文件语法是否合法无关,重试
Write不是正确处理。 Read和短Edit不受该问题影响,但修改已有文件前仍应先Read。- 不要通过 Bash/PowerShell 传多行代码,先写入
.py/.js文件再执行。 Edit遇到oldString not found时重新读取文件并核对空白;遇到多个匹配时增加上下文或使用replaceAll。
写完后的检查
完成后用 Read 抽查前 10 行和后 5 行,确认关键结构完整,再简洁报告文件行数和验证结果,不输出完整内容或内部工具细节。
使用场景
- 用Agent写200行Python脚本,避免Write因超长截断,先写骨架再分段填函数
- 在TS文件嵌入中文提示词,防止CJK导致Write失败,用占位符替换后Edit填充
- 修复Write成功但内容被截的文件,用Edit补全末尾缺失部分
- 修改含中文注释的YAML配置文件,不整文件覆盖而是Edit替换锚点
适合人员
- 用Agent辅助编写后端代码的开发者,需写超长Python/JS文件时避免截断
- 在项目中嵌入中文提示词或注释的前端工程师,担心CJK字符导致Write失败
- 遇到Write截断问题的Agent用户,需要快速修复文件完整性
- 维护含中文配置文件的运维人员,修改时不破坏文件结构