Repository navigation
v0.5.3 — Hook 系统、事件总线、visp-fs 迁移与 TUI 强化
v0.5.3 — Hook 系统、事件总线、visp-fs 迁移与 TUI 强化
距 v0.5.1 共 186 个提交,主要变更:
Hook 生命周期钩子系统(新)
- visp-hooks 契约 crate:13 个冻结事件(PascalCase)+ 载荷 + env 约定,
产出 JSON Schema + golden fixtures;取值域收紧为枚举 - [hooks] 配置与规则模型(id/event/matcher/command/args/env/cwd/timeout_ms/
enabled/on_full/parallel/cooldown_ms/include) - 异步执行器:同事件按 id 排序、per-rule 默认保序、on_full(drop_new/
drop_old/coalesce_latest)、cooldown;子进程执行(argv 直执、白名单 env、
stdin JSON、超时杀进程树、失败隔离) - 项目级信任:canonical 路径 + .visp/hooks/ 递归快照 + 规则全集哈希 +
符号链接防逃逸;禁止项目级 sh -c - 只读 GetHookStats RPC +
visp hooks list/doctor/test/logs(--dry-run) - 非法 [hooks] 规则降级(告警跳过,不阻断启动)
事件总线与生命周期(新/重构)
- 显示面通道由单消费者 mpsc 改为 broadcast 事件总线
(BusEvent: Frame/Hook),每连接 subscribe;修复重连 “receiver already taken” - 总线 seq 单调发放 + sentinel receiver;Lagged → daemon 侧增量 replay
- 优雅关停:Shutdown RPC → SessionEnd → 有界 drain(≤2s) → cancel →
Notify → main select{ctrl_c,RPC,SIGTERM};launcher 等待而非强杀 - 完成事件分层:执行级 AgentRunEnd/SubagentStop(帧派生)与会话级
Stop/StopFailure(orchestrator Hook);消除根回合重复 Done 帧 - ToolCallResult 增 outcome;新增 PreToolUse 发射点;UserQuery 增 PermissionKind
herdr 集成(新,外置零侵入)
- 随包脚本 assets/hooks/herdr.hook.sh:状态上报(working/blocked/idle)、
回合完成显式通知、退出释放(SessionEnd → release-agent) - visp 内不保留任何 herdr 专有 Rust
install.sh(新)
- 从 GitHub Releases 安装 visp/visp-daemon/visp-tui;--bin-dir/--tag 可配
- 配置初始化(daemon.toml 骨架;--model/--api-key 非交互,不覆盖已存在)
- 顺带安装 herdr hook;--uninstall/--purge-config/--yes/--dry-run
文件监听迁移与热重载
- 新增 visp-fs crate:watch 目标规格、include/exclude、三后端事件归一化、
缺目录降级链、幂等 remount + 2a 恢复、生命周期 stop/收敛 - daemon/codegraph 监听统一迁移到 visp-fs;AGENTS.md 发现以 git 根为界
(共享祖先链解析);文件监听开关与生命周期接线;降级上报到 TUI - /reload 热重载:ReloadConfig RPC(逐项结果)、共享 reload core、按域
no-change 守卫、RuleEngine build-then-swap、AgentRegistry ArcSwap、
agent 工具重组;TUI /reload 逐项渲染
TUI / CLI
- 重连状态机 + 空闲看门狗(45s + health probe);重连恢复会话、清理子 tab
- 多 tab 清理、可拖拽滚动条、鼠标命中修正
- 状态栏双行 + token 速率/用量展示、移除成本统计
- 终端通知:OSC 9/777/99(未识别回退 BEL)、[notification] 配置、会话过滤
- crate 重命名 visp-cli → visp-tui
LLM / Provider
- 新增 opencode-go 协议与 opencode provider、bigmodel(智谱)、
aliyun 协议 + DashScope 文生图 - 发送 x-opencode-session 头;reasoning_content 一致性策略 + 400 降级重试;
enable_thinking 透传;5xx 重试
工具与核心修复
- bash:超时/取消杀整棵进程组、路径引号提示、命令黑名单词边界、
默认超时 60s;ssh/scp/rsync 需审批 - read_file 图片返回明确错误引导 vision;WebFetch 默认 60s + per-call 覆盖
- doom-loop:空工具调用不误判、参数损坏不再误终止;[USER_QUERY] 容忍未闭合
与单一问题约束;AgentTool 响应 1800s 超时防挂起 - 子 agent 并发限制/排队、继承父 approved_tools;工具结果错误标志持久化
- MCP:Streamable HTTP / GET 传输,rmcp 升级 3.x
- 配置:visp-config crate 落地(类型/规则/技能/prompt/路径)、--config-dir、
启动初始化全局配置
质量
- 与 CI 对齐 clippy 1.98 全量 lint;工作区 test/clippy/fmt 全绿
Commit range: v0.5.1..ad498f0(186 commits)