ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

用 AI 整理代码片段:让模型提建议,把文件操作留给可复核的计划

用 AI 整理代码片段:让模型提建议,把文件操作留给可复核的计划 桌面上有十几个叫 test、demo、final 的脚本时模型很适合建议分类和文件名。但如果把它返回的目录和名字直接交给文件系统便利就可能变成覆盖、越界写入或误删。2026 年 10 月 13 日Ollama 与 Fly.io 的集成说明把凭据保管和可用实例范围放到网关层。这种分工对本地整理工具同样有启发让模型理解内容让程序决定它可以做什么。官方说明一份整理计划必须回答什么每条建议至少包含源文件、目标分类、目标名字、理由。源文件由扫描器选定模型只能从固定分类中选择并提供一个不含路径分隔符的文件名。执行前展示差异检查同名目标保留原文件。“先写新文件再删除源文件”仍可能在部分失败时丢失工作。第一版工具宁可只做复制等使用者确认归档可用再通过单独流程处理旧文件。也不要自动执行整理后的代码。可复核复制的最小实现示例只操作临时教学目录。保存为 organize.py 运行它会保留一个输出临时目录便于查看结果没有扫描你的桌面。from pathlib import Path import hashlib import tempfile ALLOWED {python, notes, other} def digest(path): return hashlib.sha256(path.read_bytes()).hexdigest() def planned_copy(src, out, category, name, applyFalse): if category not in ALLOWED: raise ValueError(未知分类) if (not name or name in {., ..} or any(c in name for c in /\\:\0) or Path(name).name ! name): raise ValueError(文件名包含路径或特殊字符) if src.is_symlink() or not src.is_file(): raise ValueError(源文件不是普通文件) target out / category / name if target.exists() or target.is_symlink(): raise FileExistsError(target) before digest(src) if apply: target.parent.mkdir(parentsTrue, exist_okTrue) with target.open(xb) as dest: dest.write(src.read_bytes()) if digest(target) ! before: raise OSError(复制校验失败) return target root Path(tempfile.mkdtemp(prefixorganize-demo-)) src root / demo.py src.write_text(print(hello)\n, encodingutf-8) out root / organized target planned_copy(src, out, python, hello.py) assert not target.exists() # 默认只预览 planned_copy(src, out, python, hello.py, applyTrue) assert src.exists() and digest(src) digest(target) try: planned_copy(src, out, python, ../escape.py) except ValueError: pass else: raise AssertionError(越界文件名未拒绝) print(源文件保留复制校验通过, root)这个例子刻意不让模型指定源路径也不删除任何文件。目标目录由程序控制若扩展为多用户服务还要处理目录符号链接、并发改名和检查后被替换的竞争条件。不能把单用户临时目录中的测试当成安全沙箱验证。pathlib 官方说明索引在复制成功后更新真正的归档索引应记录源哈希、目标路径、执行时间与状态。复制失败的项目保留为失败不要先给 README 写一句“已归档”。撤销也应引用这份清单而不是凭文件名猜测哪个是旧版本。本文实跑了预览、复制、哈希一致和越界文件名拒绝模型分类效果、并发文件系统和真实桌面集成未测。整理工具最贴心的地方是能让人放心点开“预览”而不是让人担心下一次启动。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表