Terminal 统一封装串口、SSH 和本地 Shell 的双向交互会话,用于需要在保持登录状态、菜单状态、REPL 状态或设备 CLI 上下文时进行的交互操作。相对 serial 的监控/发送分离命令、ssh 的偏一次性远程命令,它保持一个可持续读写的交互式会话,通过 send/read 驱动下一步判断。
主要能力与用法:会话运行时状态保存到工作区的 .embeddedskills/state.json,使用 terminal_sessions 字段记录会话名、后端、PID、TCP 控制端口和日志路径;后台进程日志保存在 .embeddedskills/logs/terminal/。脚本位于 skill 目录的 scripts/ 下,用 python 调用。示例: python scripts/terminal_session.py start serial --port COM11 --baudrate 115200 --name board python scripts/terminal_session.py start ssh --host 1380-P904 --name devboard python scripts/terminal_session.py start local --name local-shell python scripts/terminal_session.py send board "help" --crlf python scripts/terminal_session.py read board --timeout 1 python scripts/terminal_session.py attach board python scripts/terminal_session.py list python scripts/terminal_session.py status board python scripts/terminal_session.py stop board
后端与依赖:serial 适用于 MCU UART 控制台、AT 命令、Bootloader 菜单、板卡 CLI,依赖 pyserial;ssh 适用于 Linux 开发板交互 Shell、登录后持续操作,依赖 OpenSSH 客户端;local 适用于本机临时 Shell、REPL、CLI 程序交互,依赖 Python 标准库。
限制与规则:不自动猜测串口端口、波特率、SSH Host 或登录凭据;未明确用途时不主动发送改变设备状态的命令;多个会话须用不同 --name;read 会清空当前输出缓冲,重要输出需及时记录;attach 为行模式,不等同完整 TTY/raw 模式,全屏程序、vim、top、交互式密码输入建议使用真实终端工具;串口会话独占真实串口,需共享端口时先用 serial skill 的 mux 能力;SSH 后端使用 ~/.ssh/config 的 Host 别名,主机配置、跳板机、文件传输交给 ssh skill。环境级配置 config.json 目前为空对象 {},关键参数建议通过 start 命令显式传入。