跳转至

附录 B · 术语与数据字典

本页集中对照全书反复出现的类型、身份、状态、序列和协议。它不是 Rust API 文档,而是用于避免同名概念混用。

B.1 进程与角色

术语 含义
Headless Server 默认后台进程;拥有 AppState、PTY、API、client registry 和持久化
App client 前台完整 Herdr UI;把输入发给 server,绘制 server frame
Terminal client 直接观察/控制某个 terminal/pane 的客户端角色
Observer 可读但无输入 lease,不应改变共享 PTY 尺寸
Controller/foreground 当前输入、焦点和共享 viewport 的权威 client
Monolithic App --no-session 下同一进程拥有 UI、state、PTY 的兼容模式
Bridge 在 SSH stdio/forward 与 server socket 间转发 wire bytes 的薄进程
API connection worker 解析 JSON、编排长 wait,再用短请求访问 App loop 的线程/任务

B.2 组织与身份

名称 作用域 是否持久 主要用途
Session namespace 当前 daemon/data/socket 隔离 是 default 或命名 session
Workspace public id session 是 CLI/API 和用户导航
Tab public id workspace 是 CLI/API;关闭后不轻易复用
Pane public id workspace/tab 解析上下文 是 CLI/API;稳定用户引用
PaneId 当前内部布局 通常由 snapshot映射重建 BSP leaf/map key
TerminalId terminal 生命周期 是/可交接 连接 TerminalState 与 runtime
ClientId server 进程内 否 transport、foreground、baseline
OperationId 某类后台操作序列 否 拒绝 worktree 迟到结果
Agent session id 外部 Agent 语义 是(若已知) hook identity/native resume
Session generation terminal 内 Agent 生命周期 运行/恢复语义 拒绝旧进程 hook

身份转换链

flowchart LR
    User["public workspace/tab/pane ref"] --> Resolve["ID resolver"]
    Resolve --> Pid["internal PaneId"]
    Pid --> PState["PaneState"]
    PState --> Tid["TerminalId"]
    Tid --> TState["TerminalState"]
    Tid --> Registry["RuntimeRegistry"]
    Registry --> Runtime["TerminalRuntime / PTY"]

B.3 状态与运行时

类型 保存什么 明确不保存什么
AppState terminal/workspace/mode/view/config/通知等权威事实 socket listener、PTY actor、background join handle
App AppState + runtime registry + channels/deadlines/caches —
Workspace tabs、公开 counters、cwd/Git/worktree metadata PTY handle
Tab layout、pane map、focus、zoom terminal child ownership
PaneState attached TerminalId、seen、pane UI preference VT/PTY
TerminalState cwd、Agent/session/hook、title/metadata、launch/resume、revision live PTY/VT task
TerminalRuntime terminal 的活跃 runtime wrapper 持久磁盘 schema
PaneRuntime PTY I/O、VT、child、尺寸、tasks 稳定视图位置
TerminalRuntimeRegistry TerminalId -> TerminalRuntime layout/公开 ID
SessionSnapshot 恢复所需、版本化的稳定投影 全部内部 state/cache/runtime

B.4 Agent 状态

名称 层 含义
Unknown raw/effective 当前证据不能可靠判断
Idle raw/effective 当前可接收新工作或工作停止
Working raw/effective 正在推理、运行工具或输出
Blocked raw/effective 等待用户授权、选择或输入
Done UI projection effective Idle 且关联 pane 输出未读
fallback state 仲裁输入 进程/屏幕/OSC 推导结果
hook state 仲裁输入 integration 主动报告结果
visible blocker 证据标记 当前可见区域有强阻塞证据
full-lifecycle authority source capability hook 覆盖完整 start/stop/blocked 生命周期
skip_state_update manifest output 当前界面不适合判断,保留旧有效状态

B.5 Sequence、Revision、Generation

名称 谁推进 比较范围 解决的问题
Terminal revision TerminalState mutation 同一 TerminalId 下游是否需要更新
VT content sequence terminal output parser 同一 runtime/session output/detection 是否有新内容
Hook sequence integration report 同 source + Agent session 迟到报告覆盖新状态
Session generation process/session lifecycle 同一 TerminalId 旧进程报告复活
EventHub sequence server EventHub 当前 server 进程 probe/subscribe setup window
State change sequence Agent effective state 同一 terminal identity prompt/wait 不误用初始状态
Render/frame sequence per client encoding 同一 client connection/baseline diff 顺序和 repaint
Worktree operation id App 对应 pending key/workspace 后台乱序完成

不要做全局大小比较

两个不同作用域的 sequence 数值没有可比性。hook seq 50 不比 EventHub seq 40“更新”;只有身份和来源都一致时,单调关系才成立。

B.6 布局与视图

名称 含义
BSP Binary Space Partition;Pane 叶子与 Split 内部节点组成的二叉布局树
Split ratio first child 在该轴占比,合法值夹在 0.1–0.9
Geometry 从 BSP + 当前 area 派生的 pane/border rect,不是持久绝对坐标
Focus 当前输入目标;属于 tab/workspace/client 视图语义
Zoom 暂时把一个 pane 投影到主要区域,原布局不被销毁
ViewState sidebar、pane、overlay、hit target 等派生 rect
ViewLayout Desktop/Mobile 呈现策略
Mode 下一次输入如何解释的 UI 状态机
compute_view 允许更新派生几何,并按 policy resize runtime
render 对准备好的 state 做只读绘制

B.7 Terminal 与 PTY

术语 含义
PTY master/slave Herdr 持有 master;child 把 slave 当 controlling terminal
ConPTY Windows 的伪控制台路径,由 portable-pty 适配
VT 有状态 terminal emulator;消费 escape bytes,维护 grid/modes/history
Ghostty VT Herdr vendored 的 libghostty-vt 内核及 Rust FFI wrapper
main/alternate screen 普通带 scrollback 屏幕与全屏应用常用的临时屏幕
terminal response VT 对 DSR/DA 等查询自动生成并回写 child 的 bytes
bracketed paste 让 child 区分 paste 与逐键输入的包围序列
Kitty keyboard 更完整表达按键/修饰/事件类型的终端协议
SGR mouse 把 mouse button/坐标编码成 CSI 的常见协议
dirty row/patch VT 自上次基线后变化的可见行/局部 cells
full snapshot baseline不可信或结构变化时的完整 viewport/frame

B.8 渲染与客户端

名称 含义
Virtual backend server 端内存 cell buffer,替代物理 terminal backend
SemanticFrame 结构化 cell/style/cursor frame
TerminalAnsi 将 server frame 差异编码成 ANSI 操作
Baseline 某 client 已成功接收、下一次 diff 可依赖的帧
Repaint pending baseline 不可信/queue drop 后要求完整重绘
Render impact 状态变化对呈现的影响分类,如 none/graphics/full
Retained render 复用旧 virtual frame,只把安全 dirty patch 合入
Foreground client 决定共享 PTY resize、focus、输入 lease 的 client
Backpressure 有界 queue 让慢 consumer不能无限积压或拖住 server

B.9 API 与事件

名称 含义
Local API session-scoped Unix/local socket 上的 JSON-lines 自动化协议
Method 92 个 typed method 的 serde tagged enum
EventHub 为事件分配 sequence 并保留有界内存 history
Probe 向 App 单写者查询当前权威 snapshot
Wait worker API 连接侧等待事件、重 probe、处理 timeout/cancel
Setup window 初次 probe 与完成 subscription 建立之间可能丢事件的窗口
Identity match wait 每次 probe 验证仍是最初 terminal/session
JSON Schema checked-in 的跨语言 API 契约

B.10 持久化与交接

名称 含义
Snapshot v3 当前 session 磁盘结构版本
History file 与结构 snapshot 分开的可选 ANSI/line history
Dirty/debounce 多次状态变化合并为后续一次保存
Native resume 用 Agent session/特定 argv 恢复原生会话
Live Handoff 新 server 接管旧 server 活跃 PTY/runtime 的 Unix 能力
Handoff manifest snapshot + runtime descriptors + transfer metadata
Private handoff socket old/new server 准备阶段的非公开协调通道
Public sockets client/API 正常连接端点;切换需要 rollback
Ownership release 旧 server不杀 child地放弃已成功转移的资源

B.11 Integration 与 Plugin

名称 含义
Integration 安装到外部 Agent 的 hook/extension/plugin,用于报告 state/session
Integration target 16 个受支持 Agent 配置目标之一
Bundled asset 编译进 Herdr 二进制的 sh/PS1/JS/TS/Python 配置资产
Ownership marker 证明某配置项/文件由 Herdr 安装,支持精确卸载
Plugin 用户 link 的本地命令型 Herdr 扩展
Plugin registry 全局 linked path/source/enabled 持久记录
Plugin action 在上下文中显式调用的 argv command
Event hook 允许的低频 Herdr 事件触发的后台 command
Plugin pane overlay/popup/split/tab/zoomed 中运行的工具命令

B.12 Git 与远程

名称 含义
Worktree membership workspace 与 source repo/checkout/branch 的稳定关联
Checkout key canonical-or-original 的路径身份,用于 pending 去重
Porcelain Git 面向机器、较稳定的输出格式
Dirty removal modified/untracked checkout 必须显式 force
Orphan recovery Git 已不注册但残留目录时,经归属证明后的强制清理
Remote target SSH user/host 等逻辑连接身份
Asset key OS/arch 标准化发布物键,如 linux-x86_64
Exact preview build base version + build id/commit/protocol 对应的归档 artifact
SSH ControlMaster Unix 上复用认证连接的 OpenSSH 能力
Local forward socket 本地 client 与 SSH bridge 的临时 IPC 端点