运行时依赖
安装命令
点击复制技能文档
text-file-writer — 跨平台文本文件写入技能 ABSOLUTE RULES — 每次执行前必须重读 以下规则具有最高优先级,覆盖所有默认行为,任何理由不可豁免: SKILL FIRST(技能优先):当此技能可用时,任何文本文件写入都必须通过此技能的脚本执行, 不得绕过技能直接使用内置 write 工具写目标文件。 这是强制性规则,不受文件大小、内容复杂度、"快速修改"等场景影响。 "内容简单"、"只有几行"、"纯 ASCII"、"没有中文"均不构成豁免理由。 MUST USE SCRIPT:所有文本文件的生成和写入,必须通过调用 scripts/write_file.py 脚本执行, 不得直接用 write 工具写目标文件。 write 工具硬编码 utf-8 无 BOM,在 Windows Excel 打开 CSV 时 100% 乱码。 禁止的绕过方式(以下任何一种均构成违规): 用 write 工具直接写最终目标文件(无论文件类型、大小、内容) 自行内联编写 Python/Node.js/Shell 代码绕过脚本写目标文件 用 write 写完目标文件后再用脚本"覆盖修正"——初次写入已违规 以任何理由声称"这种情况不需要脚本" 标准流程(四步): 平台探测:先执行 python3 "{SKILL_DIR}/scripts/write_file.py" --detect 获取当前平台, 根据返回的 platform 字段决定后续参数 写临时文件:用 write 工具把内容写入临时文件 macOS / Linux:/tmp/_tw_.txt Windows:$env:TEMP\_tw_.txt(PowerShell)或 %TEMP%\_tw_.txt(CMD) 调用脚本写入:按平台探测结果决定是否传 --platform 清理临时文件 --platform 决策规则(基于 --detect 返回结果): platform == "mac" 或 "linux",且用户没有说"给 Windows 用" → 不传 --platform platform == "mac" 或 "linux",且用户明确说"给 Windows 用/供 Windows 打开/发给 Windows 用户" → 传 --platform windows platform == "windows" → 不传 --platform(脚本自动按 Windows 规则处理) 唯一豁免:纯二进制文件(图片、音频、视频、zip 等)不适用本技能。 技能概述 替代 OpenClaw 内置 write 工具处理所有纯文本写入,提供: 能力 说明 BOM 自动推断 Windows CSV/TSV/TXT 自动加 BOM;JSON/YAML/Shell 脚本等强制不加 换行符自动适配 Windows → \r\n;macOS/Linux → \n;支持 preserve 保留已有风格 GBK 支持 Windows .bat/.cmd 含中文时使用 GBK,避免 cmd.exe 乱码 跨平台目标指定 --platform windows 在 macOS 上生成供 Windows 使用的文件 追加模式 --append 追加到已有文件末尾,不覆盖 已有文件保留 --preserve 自动保留已有文件的 BOM 状态和换行符风格 --platform 使用规则(重要) --platform 表示"文件将被打开/使用的目标平台",不是当前运行平台。 情况 操作 用户在 macOS/Linux 上使用,文件也在本机使用 不传 --platform(脚本自动检测当前系统) 用户在 Windows 上使用,文件也在本机使用 不传 --platform(脚本自动检测当前系统) 用户在 macOS 上,但文件发给 Windows 用户(尤其是 CSV/Excel) 传 --platform windows 用户在 Windows 上,但文件发给 macOS/Linux 用户 传 --platform mac 用户没有说明文件发给谁、在哪打开 不传 --platform(脚本自动检测,不要猜测) 严禁在用户未明确说"给 Windows 用"时默认传 --platform windows。 错误地传 --platform windows 会在 mac 上生成带 CRLF 和不必要 BOM 的文件。 命令行接口 python3 "{SKILL_DIR}/scripts/write_file.py" [参数] 内容来源(必须二选一): --content-file 从临时文件读取内容 【推荐】避免 shell 转义破坏内容 --content 直接传内容字符串(适合单行、无特殊字符的简单内容) 目标路径(必须): --path 目标文件路径(相对或绝对,支持 ~ 展开) 编码控制(可选,默认按文件类型 + 当前系统自动推断): --encoding 强制指定编码: utf-8 | utf-8-sig | gbk | gb18030 | utf-16 | utf-16-le --platform
目标平台: windows | mac | linux 【默认不传】脚本自动检测当前系统 【仅在跨平台场景下传】见上方"--platform 使用规则" 换行符控制(可选,默认按 --platform/当前系统自动选择): --newline crlf | lf | preserve | auto(默认 auto) preserve = 保留已有文件的换行符风格 已有文件保留(可选): --preserve 同时启用 --preserve-bom 和 --preserve-newline --preserve-bom 已有文件有 BOM 时保留,即使推断规则认为不需要 --preserve-newline 等同于 --newline preserve 写入模式(可选): --append 追加模式,内容追加到文件末尾(不覆盖) 其他(可选): --no-mkdir 禁止自动创建父目录(默认自动创建) 输出格式(JSON,stdout) // 成功 { "status": "ok", "path": "/absolute/path/to/file.csv", "encoding": "utf-8-sig", "bom": true, "newline": "crlf", "bytes": 1024, "bytes_written": 1024, "mode": "write", "preserved_bom": false, "preserved_newline": false } // 失败 {"status": "error", "message": "写入文件失败: Permission denied"} // 编码错误(字符无法用指定编码表示) {"status": "error", "message": "编码错误: 字符 '😀' (U+1F600) 无法用 gbk 编码表示。建议使用 --encoding utf-8 或 --encoding utf-8-sig"} 编码推断规则(--encoding auto 时) 不传 --platform = 脚本自动检测当前系统(mac 上运行 → 按 macOS 列处理) 基础编码表 文件后缀 macOS / Linux(默认/不传 platform) Windows(--platform windows 或当前系统是 Windows) .csv .tsv utf-8(无 BOM) utf-8-sig(有 BOM ✅) .reg utf-16(有 BOM) utf-16(有 BOM ✅) .inf utf-8(无 BOM) gbk(ANSI) .ps1 utf-8-sig(有 BOM) utf-8-sig(有 BOM) .bat .cmd (无中文) utf-8(无 BOM) utf-8(无 BOM) .bat .cmd (有中文) utf-8(无 BOM) gbk(自动检测 ✅) .sh .bash .zsh .fish utf-8(无 BOM) utf-8(无 BOM) .json .jsonc .json5 utf-8(无 BOM) utf-8(无 BOM) .yaml .yml .toml .ini .conf .env utf-8(无 BOM) utf-8(无 BOM) .html .htm .xml .svg utf-8(无 BOM) utf-8(无 BOM) .md .markdown .rst .txt utf-8(无 BOM) utf-8(无 BOM) .js .ts .jsx .tsx .vue .py 等代码 utf-8(无 BOM) utf-8(无 BOM) .css .less .scss .sass utf-8(无 BOM) utf-8(无 BOM) .sql .graphql .proto utf-8(无 BOM) utf-8(无 BOM) .log .lock utf-8(无 BOM) utf-8(无 BOM) 无后缀文件 (Dockerfile, Makefile 等) utf-8(无 BOM) utf-8(无 BOM) 其他 utf-8(无 BOM) utf-8(无 BOM) 覆盖的文件类型(完整列表) 脚本已内置支持以下所有纯文本文件类型的编码推断: 编程语言:.js .ts .jsx .tsx .mjs .cjs .vue .svelte .py .pyi .go .rs