Docs
CONTEXT.md Source

Runtime

Window, daemon, tray, local API.

On this page
  1. 守护进程(Daemon)
  2. 窗口(App window)
  3. 退出(Quit)
  4. 登录启动(Launch at login)
  5. 托盘(Tray)
  6. 本机接口(Local API)
  7. 本机 token(Local token)
  8. 中断(Interrupted)
  9. 补跑(Catch-up)

守护进程(Daemon)

本机常驻的 TypeScript 进程,自己跑 tool-call 循环。关窗不停;窗口崩了轮次还在。插电时挡住空闲睡眠;合盖、菜单栏睡眠、没电、关机仍会睡,唤醒后续上。只有窗口进程还活着(含藏到托盘)时,被杀的守护进程会被拉起来;窗也没了之后再崩就停,直到你再开 App 或下次登录。

Avoid: 云电脑, 24/7 服务器, 把 UI 进程当运行时, 合盖仍继续, 杀一次就停, 独立 KeepAlive 登录项

窗口(App window)

Tauri 桌面窗,里面是 Svelte 信使。关窗是隐藏到托盘,不是退出;隐藏时仍留在 Dock。登录时只到 Dock 和托盘,窗不弹。点 Dock / Cmd-Tab / Spotlight / 托盘左键 / 再开 App 把窗叫回来。同时只跑一个窗口进程;第二次启动只唤醒已有的那个并连上已有守护进程。窗口崩了不会自己回来。连上守护进程之前:退出可用,Stop 不可用,信使是「连不上运行时」。拖过的宽高和是否最大化,退出后再开还是关前那样;不记位置,免得换显示器落到屏外。

Avoid: 只用浏览器打开, 无托盘, 隐藏即从 Dock 消失, 窗口 KeepAlive, 登录抢屏, 多窗口, 窗崩当退出

退出(Quit)

结束这次会话:窗口进程和守护进程都停,托盘和 Dock 都消失。进行中的轮次标成中断。不是关窗。不动登录启动偏好。关机和注销在轮次上也按退出处理。开发态同一条规则。

Avoid: 关窗当退出, 只关窗留无头守护进程, 退出当关掉开机启动, 开发态 Cmd+Q 只关窗

登录启动(Launch at login)

可选,默认开。登录时只拉窗口进程到 Dock 和托盘,信使窗不弹;窗口进程再确保守护进程在跑。关掉只影响下一次登录,不杀当前这次;下次登录窗和守护进程都不来。退出也不清这个开关。守护进程不是自己的登录项。

Avoid: 登录弹窗, 关掉立刻杀掉当前这次, 守护进程自己当登录项, 退出清掉开机启动, 关掉开机启动却留下会自己起来的作业

托盘(Tray)

窗口进程上的菜单栏图标。左键把窗叫回来。右键:显示窗口、Stop(没开窗则最近活动轮)、退出。没有隐藏、没有暂停守护进程。窗崩了托盘也没了。

Avoid: 托盘角标, 第二套信使, 守护进程自己做托盘

本机接口(Local API)

守护进程在 127.0.0.1 上给窗口用的 HTTP + WebSocket,带本机 token。变更走 HTTP;转录流走一条只收的 WebSocket。窗口经它读写名册、发消息、订阅转录流。

Avoid: 把 UI 进程当运行时, 云 API, 双向命令通道, 工作区文件当 HTTP 资源, 把本机 token 放进 URL

本机 token(Local token)

守护进程每次进程启动新铸的随机秘密,用来认证对本机接口的请求。HTTP 用 Authorization: Bearer;WebSocket 在连上后第一条消息带上,不进 URL。窗崩不换;守护进程退出或崩溃后下一进程再铸。不是端点 API key,不进 SQLite,不进仓库。

Avoid: API key, 安装一次的长活密钥, 写进 .env, 放进 WebSocket query

中断(Interrupted)

守护进程挂了、被杀后拉起、你退出、关机或注销时,进行中的轮次被标成中断。转录里那一行和其他 Bot 消息一样带头像和名字,「继续」贴在「中断」气泡后面:新开一轮、触发条是这条中断行,不重试断掉的那一下;该 Bot 的下一轮(哪个会话都行)能看见「上次断了」,看一次即止。合盖 / 系统睡眠不是中断:冻住,醒来接着跑。窗口崩了不是中断:守护进程继续。补全超时、流挂、端点 4xx/5xx 不是中断。健康检查暂时失败而守护进程进程还在,也不是中断:窗不拉第二份,第二份抢不到端口就不改库。

Avoid: 从断点接着调工具, 睡眠当中断, 关机当睡眠, 窗崩当中断, 把「上次断了」永远挂在人设上, 把补全超时当中断, 把端点错误当中断, 把健康检查超时当中断

补跑(Catch-up)

守护进程回来之后(唤醒、崩溃拉起、退出后再开、开机),每个错过的日程只再执行最近该跑的那一次,不把错过的周期连开。

Avoid: 错过就跳过, 错过几次跑几次, 只补睡眠不补退出