SuperAPI AI 工具集

ctx-serve

部署与运维

查看项目

更新于 10-16 01:19

技能介绍

用途:托管项目所需的长期运行进程(开发服务器、文件监视器、构建守护进程),以 tmux 分离方式运行,使单个运行实例在会话退出后存活,并被仓库上的每个并行会话共享。

主要能力:确保 tmux 宿主;启动前先检测端口是否被占用;用命名空间化会话启动并轮询就绪;记录持久拓扑;重新连接或重启。

使用方式(流程): STEP 0 确保 tmux:command -v tmux,缺失则安装(macOS brew install tmux;Debian/Ubuntu apt-get install tmux),验证 tmux -V;无法安装且进程无需 stdin 时退化为 setsid 无头方式(分离启动、tee 日志、按端口 kill 重启,不能 send-keys)。 STEP 1 启动前检测:up = lsof -ti:PORT(或 curl 端点);已启动则直接使用,避免重复启动。 STEP 2 分离、命名空间化、就绪轮询启动:name="-",先 tmux has-session -t name,存在则复用、否则创建;tmux new-session -d -s name '<cmd, teed to a logfile>';argv 用数组或临时启动脚本,不要 shell 插值;轮询端口或日志就绪行直至就绪或超时。 STEP 3 交互与读取:tmux send-keys -t name '' Enter;tmux capture-pane -t name -p -S - 仅作调试快照。 STEP 4 记录持久拓扑:写 ctx/services.md,每服务五个字段(name、endpoint、start、log、check/restart),并提交;拓扑变化时将活跃 progress 叶指向 ctx/services.md。 STEP 5 停止或重启:tmux kill-session -t name 或 kill $(lsof -ti:PORT)。 提交前应用 ../ctx/references/consistency.md 的横切约束(同一变更门禁)。

适用场景:并行 agent 会话共享同一仓库上的开发服务器等项目进程。

限制:tmux 需要学习;setsid 无法输入 stdin,无 tmux 机器上的交互式进程不可行;capture-pane 是快照而非流,日志文件才是真正记录;实时状态只检测不存储;不用于监管会话式 agent。