Python 上位机 + Claude Code 实现试剂研发全自动迭代闭环系统

张开发
2026/4/18 14:07:49 15 分钟阅读

分享文章

Python 上位机 + Claude Code 实现试剂研发全自动迭代闭环系统
在试剂研发场景中传统实验依赖人工记录数据、手动调整配方效率低且易出错。本文将基于Python 上位机 串口通信 Claude Code搭建一套带永久记忆、自动迭代优化的智能实验闭环系统实现设备数据自动上传 → AI 分析迭代 → 自动下发配方指令 → 循环优化关闭程序重启后仍可继承历史实验记忆。一、系统整体流程整个系统为全自动闭环逻辑无需人工干预流程如下实验设备通过串口将实时试剂数据浓度、温度、反应结果等上传至 Python 上位机上位机接收数据并格式化发送给常驻运行的 Claude CodeClaude Code 保留上下文记忆基于历史实验数据迭代分析给出试剂用量调整指令上位机接收 AI 调整结果通过串口下发给实验设备执行每轮迭代数据自动保存至history.md关闭程序重启后可恢复记忆继续迭代。二、核心原理说明1. Claude Code 上下文记忆机制进程常驻Claude Code 仅启动一次且不关闭全程保留对话上下文实现连续迭代优化永久记忆方案Claude Code 进程关闭后记忆会丢失因此通过history.md文件持久化所有实验记录重启后自动加载历史实现无缝续跑。2. 串口通信逻辑使用 Pythonpyserial库实现上位机与实验设备的双向通信读取设备上传的实验数据发送 AI 生成的试剂调整指令至设备。3. 自动迭代逻辑上位机通过subprocess启动 Claude Code 子进程通过标准输入输出stdin/stdout持续交互每轮实验数据 调整结果实时写入历史文件保证数据不丢失。三、环境准备1. 安装依赖库bash运行# 串口通信库 pip install pyserial2. 环境要求已安装并配置好Claude Code CLI命令行可直接调用claude code实验设备与电脑正常串口连接知晓串口号如 COM3、波特率如 9600Python 3.8 及以上版本。四、完整实现代码python运行import serial import subprocess from subprocess import PIPE import time # 系统配置项 # 串口配置 SERIAL_PORT COM3 # 实验设备串口号 BAUD_RATE 9600 # 设备波特率 SERIAL_TIMEOUT 2 # 串口超时时间 # 历史记忆文件关闭程序后永久保存 HISTORY_FILE history.md # AI 交互配置 AI_SYSTEM_PROMPT 你是专业试剂研发智能优化助手负责全程迭代优化试剂配方。 严格遵循以下规则 1. 记住所有历史实验数据和调整记录基于历史做精准迭代 2. 仅返回试剂用量调整指令格式示例试剂A5.2ml试剂B3.1ml 3. 不输出多余文字、解释、标点外的符号仅保留最简指令 4. 结合最新实验数据逐步优化试剂配比提升实验效果。 # # 历史记忆管理 def load_experiment_history() - str: 加载历史实验记录重启后恢复AI记忆 try: with open(HISTORY_FILE, r, encodingutf-8) as f: return f.read() except FileNotFoundError: # 文件不存在则创建并返回空历史 with open(HISTORY_FILE, w, encodingutf-8) as f: f.write(# 试剂研发实验历史记录\n) return 暂无历史实验数据 def append_to_history(experiment_data: str, adjust_command: str) - None: 追加每轮迭代数据到历史文件实现永久记忆 record f --- ### 迭代时间{time.strftime(%Y-%m-%d %H:%M:%S)} 实验数据{experiment_data} AI调整指令{adjust_command} with open(HISTORY_FILE, a, encodingutf-8) as f: f.write(record) # Claude Code 启动 def start_claude_code() - subprocess.Popen: 启动常驻 Claude Code 进程保留上下文记忆 claude_process subprocess.Popen( [claude, code], stdinPIPE, stdoutPIPE, stderrPIPE, textTrue, encodingutf-8, bufsize1 # 行缓冲保证实时交互 ) # 加载历史记忆 发送系统提示词 history_content load_experiment_history() init_prompt f{AI_SYSTEM_PROMPT}\n历史实验记录\n{history_content}\n claude_process.stdin.write(init_prompt) claude_process.stdin.flush() print(✅ Claude Code 启动完成历史记忆已加载) return claude_process # 串口通信 def init_serial_port() - serial.Serial: 初始化串口连接实验设备 try: ser serial.Serial( portSERIAL_PORT, baudrateBAUD_RATE, timeoutSERIAL_TIMEOUT ) if ser.is_open: print(f✅ 串口 {SERIAL_PORT} 连接成功) return ser except Exception as e: print(f❌ 串口连接失败{str(e)}) raise SystemExit(1) def read_device_data(ser: serial.Serial) - str: 读取设备上传的实验数据 raw_data ser.readline().decode(utf-8, errorsignore).strip() return raw_data def send_adjust_to_device(ser: serial.Serial, command: str) - None: 向设备发送AI调整后的试剂用量指令 send_data command \n ser.write(send_data.encode(utf-8)) # 全自动迭代主循环 def auto_iteration_loop(): 启动全自动试剂研发迭代闭环 print( * 60) print( 试剂研发全自动迭代系统启动) print( * 60) # 初始化模块 claude start_claude_code() ser init_serial_port() try: while True: # 1. 读取设备实验数据 exp_data read_device_data(ser) if not exp_data: time.sleep(0.5) continue print(f\n 最新实验数据{exp_data}) # 2. 发送数据给 Claude Code 迭代分析 claude.stdin.write(f最新实验数据{exp_data}\n) claude.stdin.flush() # 3. 获取AI调整指令 adjust_cmd claude.stdout.readline().strip() print(f AI 迭代调整{adjust_cmd}) # 4. 保存本轮数据到历史文件 append_to_history(exp_data, adjust_cmd) # 5. 下发指令给实验设备 send_adjust_to_device(ser, adjust_cmd) print( 已下发调整指令至实验设备) # 等待设备执行完成进入下一轮迭代 time.sleep(3) except KeyboardInterrupt: print(\n 系统手动停止所有实验数据已保存至 history.md) finally: ser.close() claude.terminate() print( 串口与 Claude Code 已安全关闭) # 启动系统 if __name__ __main__: auto_iteration_loop()五、代码详细说明1. 配置模块SERIAL_PORT/BAUD_RATE根据实际实验设备修改串口号和波特率HISTORY_FILE历史记录文件重启后自动读取实现永久记忆AI_SYSTEM_PROMPT定义 Claude Code 角色规则约束输出格式保证指令可直接被设备识别。2. 历史记忆管理load_experiment_history()程序启动时读取历史记录恢复 AI 记忆append_to_history()每轮迭代后写入时间、实验数据、AI 指令防止数据丢失。3. Claude Code 常驻进程通过subprocess.Popen启动 Claude Code不主动关闭进程保证上下文记忆启动时自动加载历史记录让 AI 继承之前所有实验数据。4. 串口通信模块init_serial_port()初始化串口处理连接异常read_device_data()读取设备上传的实时数据send_adjust_to_device()将 AI 指令下发给实验设备执行。5. 自动迭代循环无限循环读取设备数据 → 发送 AI 分析 → 下发指令 → 保存记录支持CtrlC安全退出自动关闭串口和 Claude Code 进程。六、系统使用说明修改配置将SERIAL_PORT和BAUD_RATE改为实验设备实际参数运行程序直接执行 Python 脚本系统自动启动 Claude Code 并连接串口自动迭代设备上传数据后AI 自动分析并下发调整指令全程无需人工操作关闭重启关闭程序后所有记录保存在history.md重启后自动恢复记忆继续迭代。七、核心优势上下文保留Claude Code 常驻运行记住所有历史实验实现真正迭代优化永久记忆搭配history.md关机、重启软件均不丢失实验数据全自动闭环从数据采集、AI 分析到指令下发全程无人干预适配试剂研发AI 严格遵循研发规则输出标准化指令直接适配实验设备执行。

更多文章