news 2026/9/26 2:48:39

Codex 三系统实用教程:用文件清单练习路径处理、SHA-256 与只读验收

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Codex 三系统实用教程:用文件清单练习路径处理、SHA-256 与只读验收

同一个文件在两台机器上看起来一样,为什么哈希却不同?让 Codex 帮忙排查时,先把“看起来一样”拆成字节、换行、路径和工具运行位置,才有可验证的目标。

这次用一个只读取指定文件的小工具串起安装、登录、任务描述、代码审阅和结果验证。与此前 CSV、JSONL 教程不同,本例关心文件本身,适合排查下载产物、构建输入和跨系统传输差异。

一、三系统安装、登录与工作目录

本文使用 Codex CLI。以下安装与更新入口于 2026-09-25 对照 OpenAI 官方 CLI 文档 核查;桌面应用和 IDE 扩展不是同一安装流程。

Windows PowerShell:

powershell-ExecutionPolicy ByPass-c"irm https://chatgpt.com/codex/install.ps1 | iex"

macOS、Linux 在各自终端执行:

curl-fsSLhttps://chatgpt.com/codex/install.sh|sh

独立安装器可用同一命令更新;若已有 npm 或 Homebrew 安装,沿原渠道更新。新开终端执行codex --version,Windows 用Get-Command codex、macOS/Linux 用command -v codex核对实际入口。

进入新建练习目录后执行codex,按界面选择适用的登录方式。会话内用/status查看状态、/permissions核对工作范围,确认工具正在处理哪一份项目。

Windows 原生环境可以作为起点。只有依赖 Linux 工具链、项目已经在 WSL2,或原生沙盒不满足需求时,再选择 WSL;不要把所有故障都归为“Windows 不支持”。依据见 Windows 官方说明。

二、把验收要求写给 Codex

本练习额外需要 Python 3,它是示例程序的依赖。Windows 先检查py -3 --version;macOS/Linux 检查python3 --version。安装了其他 Python 入口时,后面的命令跟随已核实的解释器调整。

在一个新的file-lab目录中启动 Codex,可以给出下面的任务:

实现 file_report.py,只用 Python 标准库。 命令行接收一个或多个明确指定的文件路径,不递归扫描目录。 逐个输出路径、原始字节数、SHA-256、独立 LF、CRLF、独立 CR 数量。 必须按原始字节读取,不做解码、换行转换或内容修复。 保留参数顺序;重复路径按重复参数保留。 成功在 stdout 输出一个 JSON 对象并退出 0。 任一输入失败,在 stderr 说明错误,stdout 不输出部分 JSON,退出 2。 输入只读;拒绝末级符号链接和非普通文件。 先说明当前目录与修改计划,完成后运行正常和失败场景,报告实际结果。

这里的“独立 LF”指不属于 CRLF 的 LF 字节,不是文本行数。没有末尾换行的两行文本也可能只有一个 LF。提前把语义写清楚,能避免模型自行选择另一种统计方式。

三、可运行的参考实现

保存为file_report.py。这份程序用于本次离线验证,不是某次 Codex 模型会话的输出记录。

importargparseimporthashlibimportjsonimportsysfrompathlibimportPathdefinspect_file(path):path=Path(path)ifpath.is_symlink()ornotpath.is_file():raiseValueError('expected a regular, non-symlink file')data=path.read_bytes()crlf=data.count(b'\r\n')return{'path':str(path),'bytes':len(data),'sha256':hashlib.sha256(data).hexdigest(),'lf_only':data.count(b'\n')-crlf,'crlf':crlf,'cr_only':data.count(b'\r')-crlf,}defmain(argv=None):parser=argparse.ArgumentParser()parser.add_argument('files',nargs='+',type=Path)args=parser.parse_args(argv)try:rows=[inspect_file(path)forpathinargs.files]except(OSError,ValueError)aserror:print(str(error),file=sys.stderr)return2print(json.dumps({'files':rows},ensure_ascii=True,indent=2))return0if__name__=='__main__':raiseSystemExit(main())

read_bytes()保留文件原始字节;SHA-256 计算也直接使用这些字节,参见 Path.read_bytes 和 hashlib。因此 UTF-8 BOM、不同换行都会计入长度和摘要。

JSON 使用 ASCII 转义输出,中文路径可能显示为\uXXXX;读回 JSON 后仍是原路径,不是路径丢失。程序不把文本编码正确与否当作输入条件,二进制文件也能按字节检查。

四、制造一个可手算的跨系统样本

把下面代码保存为make_sample.py,用 Python 创建样本,可避免编辑器默认换行影响实验:

frompathlibimportPath folder=Path('样本 files')folder.mkdir(exist_ok=True)(folder/'LF.txt').write_bytes(b'a\nb\n')(folder/'CRLF.txt').write_bytes(b'a\r\nb\r\n')

Windows PowerShell 在练习目录执行:

py-3 make_sample.py py-3 file_report.py"样本 files/LF.txt""样本 files/CRLF.txt"$LASTEXITCODE

macOS/Linux 在各自终端执行:

python3 make_sample.py python3 file_report.py"样本 files/LF.txt""样本 files/CRLF.txt"echo$?

路径包含空格时整体加引号。本例路径使用/,交给 Python 的路径处理;不要把C:\...直接当成 Linux 路径使用。WSL 内的解释器和依赖也需要在 WSL 内确认。

预期:LF 文件为 4 字节、独立 LF 为 2;CRLF 文件为 6 字节、CRLF 为 2。两者摘要不同,退出码为 0。长度差来自两个额外的 CR 字节,与模型能力无关。

本轮在 macOS arm64、Python 3.13.13 实际运行得到上述结果;12 个测试方法通过,覆盖已知哈希、空文件、混合换行、无末尾换行、二进制、BOM、中文空格路径、参数顺序、缺失文件、目录、符号链接和无参数。只读检查本机 Codex CLI 为 0.155.1;没有把这个版本称为所有平台的最新版。

五、三系统排障时先定位层次

  • Windows:命令找不到先查安装入口和当前 PowerShell;文件找不到先检查工作目录、引号和盘符,不要改算法掩盖路径错误。
  • macOS:确认正在使用哪一套 Python,尤其不要把不同终端环境中的解释器混为一谈。
  • Linux:核对文件名实际大小写、读权限和挂载位置。相同文件名不代表传输后的字节相同。
  • WSL:先决定项目在哪个环境运行,再统一工具、Python 和样本路径;不要一半命令在 Windows、一半在 WSL,却拿两份文件作比较。

交付审阅时,要求 Codex 展示修改文件、实际命令和测试结果。若使用 Git,还要检查新文件和差异,确认没有悄悄修改样本;“测试通过”不替代对测试含义的理解。

六、这个练习的边界

整文件读取不适合超大文件;符号链接检查只针对末级路径,不是抵御路径竞争或目录链接的安全隔离机制。多个文件依次读取也不构成一致性快照。源码没有写入输入,但读文件可能更新文件系统访问时间。生产场景需要另行设计资源限制和并发变更处理。

SHA-256 可以用于检查字节是否与可信摘要相符,本例没有证明文件来源可信,也没有判断业务内容是否正确。先把这些边界讲清楚,Codex 才能围绕实际需求继续开发。

本文使用 AI 辅助整理与编写。实测仅指有记录的本机 Python 程序;没有运行两款工具的模型会话,也没有 Windows/Linux 实机测试。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 2:46:57

Arduino+ESP32双脑无人机:轻量级自主飞行的确定性架构

1. 项目概述:为什么“双脑”不是噱头,而是轻量级自主飞行的必然选择“Arduino双脑协同无人机:实时飞控端侧AI的轻量级自主飞行架构”——这个标题里,“双脑”两个字最容易被当成营销话术。但在我拆解过二十多套学生团队和初创公司…

作者头像 李华
网站建设 2026/9/26 2:46:32

Flutter与OpenHarmony设置页开发:从Cubit状态管理到通道适配

1. 设置功能在生活助手App里的定位与整体设计1.1 别把设置页当成简单的表单列表生活助手App一般做什么?待办清单、健康打卡、记账、天气提醒,棱角分明的小工具集合。设置页在这些功能背后,其实是整个应用的“状态枢纽”。用户在这里改了主题、…

作者头像 李华
网站建设 2026/9/26 2:46:32

Agent-VibeCoding 实战:用 TaoToken 统一 Key 打通 Cline 与 CC Switch 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 2:45:56

树、森林和二叉树的转换(哈喜老师)

1.树的存储结构 1.1:树的三种存储结构 树的三种存储结构分别是双亲表示法、孩子表示法、孩子兄弟表示法 1.1.1 :双亲表示法// 这里参考了王道书上的代码,哈喜老师课程中的代码不对 #define MAX_SIZE 100 // 结点结构的定义 typedef struct PT…

作者头像 李华
网站建设 2026/9/26 2:45:07

肺结节CT影像YOLOv8实战:数据集格式转换与训练调优全解析

简介:面向CT图像肺结节分割与检测研究的YOLO格式数据集压缩包,专门服务于医学影像分析、深度学习目标检测方向的开发者与研究人员。压缩包共含2000个文件,总大小约206.62MB,其中1191个XML文件保存肺结节边界框与类别标注&#xff…

作者头像 李华