Codex 也能调串口?我做了一个支持 Agent API 的 AI 通讯调试助手

Codex 也能调串口?我做了一个支持 Agent API 的 AI 通讯调试助手 Codex 也能调串口我做了一个支持 Agent API 的 AI 通讯调试助手本文介绍一个面向工业通讯调试场景的小工具AI通讯调试助手 V1.0.0。它既可以作为普通串口/网口调试助手使用也提供了本地 Agent API让 Codex 或其他自动化 Agent 能在后台控制界面完成连接、发送、切换 HEX 显示、追加 CRC 等操作。文章摘要本文介绍一款支持 Agent API 的 AI通讯调试助手。它不仅具备串口、网口、HEX 收发、Modbus RTU CRC 自动追加和日志显示等常规调试功能还可以被 Codex 等 AI Agent 通过本地 HTTP 接口调用实现自动连接串口、扫描通讯参数、发送 Modbus 报文、切换 HEX 显示并观察收发日志。文章重点讲解工具的功能定位、使用场景以及 Agent API 的接口设计和调用示例。下载与源码GitHub 仓库https://github.com/lidecong133/AICommToolV1.0.0 Release 地址https://github.com/lidecong133/AICommTool/releases/tag/v1.0.0CSDN 下载地址https://download.csdn.net/download/lidecong133/92977976框架依赖版下载AICommTool-v1.0.0-win-x64.zip自包含版下载AICommTool-v1.0.0-win-x64-self-contained.zipSHA256 校验文件SHA256SUMS.txtAgent API 文档仓库内docs/agent-api.md如果目标电脑已经安装 .NET 8 Desktop Runtime可以下载体积较小的框架依赖版如果不确定运行环境建议直接下载自包含版。为什么做这个工具传统串口调试助手通常是“人点按钮、人输入报文、人看日志”。这在普通调试时够用但当我们希望 AI Agent 参与调试流程时就会遇到几个问题AI 不能稳定地直接操作复杂桌面控件连接参数、发送内容、日志状态需要结构化读取Modbus RTU 报文需要自动追加 CRC既要让 Agent 后台操作又要让用户在界面上看到每一步变化调试过程需要保留真实 TX/RX 日志方便人工复核。所以这个工具的设计目标不是简单地“再做一个串口助手”而是把桌面调试助手变成一个可以被 AI 调用的本地工具。工具定位AI通讯调试助手是一个 Windows WinForms 桌面工具当前 V1.0.0 主要包含串口调试TCP Client / TCP Server 调试HEX 和文本发送HEX 和文本日志显示追加 CRLF串口 HEX 报文自动追加 Modbus RTU CRCModbus RTU CRC 校验摘要Modbus TCP MBAP 摘要定时发送日志复制、清空、导出、过滤、搜索本地虚拟串口回环本地 Agent HTTP API。界面上仍然保留了普通调试助手的操作方式。也就是说即使不使用 AI它也可以作为一个常规通讯调试助手使用。功能场景下面以 Codex 通过 Agent API 调用通讯调试助手完成 Modbus RTU 调试为例说明这个工具可以覆盖的典型流程启动 AI通讯调试助手Codex 连接本地 Agent API在不知道通讯参数的情况下从9600波特率开始扫描识别到可用参数COM5 115200,8,N,1切换收发日志为 HEX 显示自动发送 Modbus RTU 读取保持寄存器报文工具自动追加 CRC界面中显示 TX/RX 日志和 CRC 校验结果Codex 根据回包解析保持寄存器值。关键点在于Agent 的调用不是“后台偷偷发数据”而是会同步到真实 WinForms 界面。用户能看到发送框内容变化也能看到收发日志变化。Agent API 设计思路Agent API 默认监听本机http://127.0.0.1:8765它只绑定本地回环地址默认不对局域网开放。设计上优先满足本机 Codex、脚本、自动化程序调用。如果配置了 Token请在请求头中携带X-CommTool-Agent-Token: your-token通用响应结构如下{ ok: true, message: 已发送 8 B, txBytes: 8, status: {} }其中status与GET /api/status返回结构一致方便调用方每次操作后同步界面状态。Agent API 总览方法路径作用GET/api/status查询当前串口、网口、发送框、复选框和计数状态POST/api/serial/connect设置串口参数并打开串口POST/api/serial/disconnect关闭串口POST/api/serial/send写入串口发送框并按选项发送POST/api/serial/options设置串口页复选框POST/api/network/connect设置网口参数并连接 TCP Client 或启动 TCP ServerPOST/api/network/disconnect关闭网口连接或监听POST/api/network/send写入网口发送框并按选项发送POST/api/network/options设置网口页复选框下面分别展开说明。1. 查询状态接口GET /api/statusPowerShell 示例Invoke-RestMethod -Method Get -Uri http://127.0.0.1:8765/api/status典型返回{ selectedTab: serial, serialOpen: true, serialEndpoint: COM5 115200,8,N,1, serialSendText: 01 03 00 01 00 0A, serialTimestamp: true, serialHexLog: true, serialAutoScroll: true, serialHexSend: true, serialAppendCrlf: false, serialAppendRtuCrc: true, serialRepeatSend: false, serialDtrEnable: false, serialRtsEnable: false, serialTxBytes: 8, serialRxBytes: 25, networkOpen: false, networkEndpoint: TCP 客户端空闲, networkSendText: , networkTimestamp: true, networkHexLog: false, networkAutoScroll: true, networkHexSend: false, networkAppendCrlf: false, networkRepeatSend: false, networkTxBytes: 0, networkRxBytes: 0 }这个接口是所有 Agent 自动化流程的入口。比如 Codex 可以先判断工具是否在线、当前是否已经打开串口、HEX 显示是否已勾选、TX/RX 计数是否增长。2. 串口连接接口POST /api/serial/connect请求体{ portName: COM5, baudRate: 115200, dataBits: 8, parity: None, stopBits: 1, encodingName: UTF-8, readTimeout: 1000, writeTimeout: 1000, dtrEnable: false, rtsEnable: false, closeExisting: true, open: true }字段说明字段类型说明portNamestring串口名例如COM5baudRatenumber波特率例如9600、115200dataBitsnumber数据位常用8paritystring校验位None、Even、Odd、Mark、SpacestopBitsstring停止位1、1.5、2也支持One、OnePointFive、TwoencodingNamestring文本收发编码例如UTF-8、ASCII、GBKreadTimeoutnumber读超时单位 mswriteTimeoutnumber写超时单位 msdtrEnablebool是否启用 DTRrtsEnablebool是否启用 RTScloseExistingbool打开前是否先关闭已有串口openbool是否立即打开串口PowerShell 示例$body { portName COM5 baudRate 115200 dataBits 8 parity None stopBits 1 encodingName UTF-8 readTimeout 1000 writeTimeout 1000 closeExisting $true open $true } | ConvertTo-Json -Compress Invoke-RestMethod -Method Post -Uri http://127.0.0.1:8765/api/serial/connect -ContentType application/json; charsetutf-8 -Body $body调用后界面左侧串口参数区会同步更新按钮状态也会变成已连接状态。3. 串口断开接口POST /api/serial/disconnect示例Invoke-RestMethod -Method Post -Uri http://127.0.0.1:8765/api/serial/disconnect这个接口用于关闭当前串口连接。关闭后状态区会显示未连接。4. 串口发送接口POST /api/serial/send请求体{ text: 01 03 00 01 00 0A, hexSend: true, appendCrlf: false, appendRtuCrc: true, send: true }字段说明字段类型说明textstring要写入发送框的内容hexSendbool是否按 HEX 发送appendCrlfbool是否追加 CRLFappendRtuCrcbool是否自动追加 Modbus RTU CRCsendbooltrue表示写入发送框后立即发送false表示只更新发送框读取 1 号从站保持寄存器 1-10 示例$body { text 01 03 00 01 00 0A hexSend $true appendRtuCrc $true send $true } | ConvertTo-Json -Compress Invoke-RestMethod -Method Post -Uri http://127.0.0.1:8765/api/serial/send -ContentType application/json; charsetutf-8 -Body $body这里的text不需要手动写 CRC。工具会根据appendRtuCrctrue自动追加 CRC16界面日志里会显示完整发送帧。5. 串口复选框选项接口POST /api/serial/options请求体{ timestamp: true, hexLog: true, autoScroll: true, hexSend: true, appendCrlf: false, appendRtuCrc: true, repeatSend: false, dtrEnable: false, rtsEnable: false }字段说明字段对应界面选项timestamp时间戳hexLogHEX 显示autoScroll自动滚动hexSendHEX 发送appendCrlf追加 CRLFappendRtuCrc追加 CRCrepeatSend周期发送dtrEnableDTR 使能rtsEnableRTS 使能只想打开 HEX 日志、HEX 发送和追加 CRC可以这样调用$body { hexLog $true hexSend $true appendRtuCrc $true timestamp $true autoScroll $true } | ConvertTo-Json -Compress Invoke-RestMethod -Method Post -Uri http://127.0.0.1:8765/api/serial/options -ContentType application/json; charsetutf-8 -Body $body没有传入的字段会保持原状态这样 Agent 可以只改自己关心的选项。6. 网口连接接口POST /api/network/connectTCP Client 请求体{ mode: TCP Client, remoteHost: 127.0.0.1, remotePort: 502, encodingName: UTF-8, closeExisting: true, open: true }TCP Server 请求体{ mode: TCP Server, localPort: 502, encodingName: UTF-8, closeExisting: true, open: true }字段说明字段说明modeTCP Client或TCP ServerremoteHostTCP Client 远程地址remotePortTCP Client 远程端口localPortTCP Server 本地监听端口encodingName文本编码closeExisting是否先关闭已有连接open是否立即连接或监听7. 网口断开接口POST /api/network/disconnect示例Invoke-RestMethod -Method Post -Uri http://127.0.0.1:8765/api/network/disconnect8. 网口发送接口POST /api/network/send请求体{ text: 00 01 00 00 00 06 01 03 00 01 00 0A, hexSend: true, appendCrlf: false, send: true }Modbus TCP 示例$body { text 00 01 00 00 00 06 01 03 00 01 00 0A hexSend $true send $true } | ConvertTo-Json -Compress Invoke-RestMethod -Method Post -Uri http://127.0.0.1:8765/api/network/send -ContentType application/json; charsetutf-8 -Body $body9. 网口复选框选项接口POST /api/network/options请求体{ timestamp: true, hexLog: true, autoScroll: true, hexSend: true, appendCrlf: false, repeatSend: false }示例$body { hexLog $true hexSend $true timestamp $true autoScroll $true } | ConvertTo-Json -Compress Invoke-RestMethod -Method Post -Uri http://127.0.0.1:8765/api/network/options -ContentType application/json; charsetutf-8 -Body $bodyCodex 调用流程示例未知 Modbus 参数扫描如果连接了一个 Modbus RTU 从站但不知道通讯参数可以让 Agent 按候选参数逐个尝试。典型流程调用GET /api/status判断工具是否在线枚举系统串口例如COM5从9600开始尝试常见波特率尝试8N1、8E1、8O1、8N2每组参数调用/api/serial/connect设置/api/serial/optionshexLogtrue、hexSendtrue、appendRtuCrctrue调用/api/serial/send发送探测报文再查/api/status通过serialRxBytes增量判断是否收到响应根据响应长度判断是否符合 Modbus RTU 格式。建议探测报文01 03 00 00 00 01 01 03 00 01 00 05 01 03 00 01 00 0A典型响应长度请求含义正常响应长度01 03 00 00 00 01读 1 个保持寄存器7 字节01 03 00 01 00 05读 5 个保持寄存器15 字节01 03 00 01 00 0A读 10 个保持寄存器25 字节在这个使用示例中Codex 从9600开始扫描最终识别到COM5 115200,8,N,1随后发送读取保持寄存器 10-20 的报文01 03 00 0A 00 0B工具自动追加 CRC界面中显示TX 8B 01 03 00 0A 00 0B 24 0F [RTU Unit1 FC0x03 CRC OK] RX 27B 01 03 16 00 00 42 48 00 00 3F 00 00 00 00 03 00 03 00 00 00 00 3F 00 00 01 A7 60 [RTU Unit1 FC0x03 CRC OK]这就形成了一个很清晰的人机协作链路Agent 负责尝试、发送、判断工具负责真实通讯和日志呈现人可以随时看界面复核。适合哪些场景这个工具比较适合上位机开发过程中的串口调试Modbus RTU 设备现场参数确认TCP Client / TCP Server 简单收发测试自动化脚本批量发送测试报文AI Agent 辅助排查通讯参数教学或培训场景中讲解“AI 如何调用本地工业软件工具”。它不适合替代完整 SCADA、PLC 编程软件或复杂协议主站。它更像是一个轻量、开放、可被 Agent 调用的通讯调试工作台。当前限制V1.0.0 中 Agent API 主要返回状态、发送字节数和 TX/RX 计数。历史日志文本和最新 RX 原始字节暂时没有通过 API 直接返回。也就是说如果 Agent 要自动解析寄存器值目前可以通过界面日志或后续扩展接口实现。后续计划增加类似接口GET /api/serial/logs、GET /api/serial/last-rx。这样 Agent 就可以直接读取最新回包并完成寄存器解析。小结AI通讯调试助手 V1.0.0 的核心价值不只是“能发串口数据”而是让桌面通讯调试工具具备了可被 Agent 调用的能力。普通用户可以继续用按钮和文本框调试串口、网口Codex 或其他 Agent 可以通过 HTTP API 在后台执行连接、发送、切换选项、扫描参数等动作所有关键变化又会同步显示到界面上方便人随时接管和确认。对工业自动化调试来说这是一种很实用的组合AI 负责重复尝试和流程编排人负责判断目标和确认结果。项目地址https://github.com/lidecong133/AICommToolV1.0.0 下载https://github.com/lidecong133/AICommTool/releases/tag/v1.0.0推荐标签#C##WinForms#串口调试#Modbus#工业自动化#Codex#AI Agent#上位机开发