跳到主要内容

RELEASE HISTORY

变更日志

变更日志

本文件记录项目所有值得注意的变更。

格式基于 Keep a Changelog,项目遵循语义化版本。

[1.6.1] - 2026-11-04

组件版本

组件版本
copilot-shell2.8.0
agent-sec-core1.1.1
agentsight0.15.3
tokenless0.9.0
agent-memory0.2.12
os-skills0.6.3
anolisa0.3.20
skillfs0.5.4
ws-ckpt0.6.0
cosh-ng0.28.0

发布组合: 以上版本固定用于 Agentic OS 1.6.1 组件发布,可能与 main 上的滚动或 Nightly 组件清单不同。

说明: copilot-shell 和 os-skills 自 v1.6 起未更新;版本表保留它们以展示完整组件组合。 本次仅更新组件 RPM,不发布新的 Agentic OS 系统镜像。

重点特性

  • cosh-ng:更新到 v0.28.0,阻止项目配置以及变化后的命令或 Hook 降低审批边界,并限制会话与诊断数据占用,用户可获得磁盘使用可预期的长期安全 Shell 会话(#7244、#6787、#6788、#7157、#7158、#7159)
  • agent-sec-core:更新到 v1.1.1,提高策略收敛和策略存储的恢复能力,将 Python 进程 API 接收的命令字符串纳入扫描,并统一 SkillSec CLI,管理员可获得更一致的安全执行结果和可操作的恢复路径(#6944、#8782、#9128、#8907)
  • agentsight:更新到 v0.15.3,使结构化文件保护正式生效,并扩展本地轨迹、Token、费用、导出、HTTP 与资源分析,运维人员可在支持的运行时中获得更完整、准确的 Agent 可观测数据
  • tokenless:更新到 v0.9.0,完整保留 JSON 结构和数字原文,并在继续压缩前验证 RTK 输出,Agent 可避免工具结果被静默改变,并在兼容时使用 TOON spec v4.4(#8814、#7784、#7752、#8901)
  • anolisa:更新到 v0.3.20,识别容器部署,在禁用具有 Skill 逐文件归属记录的 OpenClaw 和 Hermes 安装时保留用户新增或修改的 Skill 文件,并提供可操作的 Adapter 路径恢复指引,管理员可识别容器部署并按指引恢复失败的 Adapter 生命周期操作(#8206、#6221、#9220)
  • agent-memory:更新到 v0.2.12,重新检查采集授权,按 Agent 隔离新观察记录,原子发布覆盖写入,并在恢复前校验快照,用户可获得更可靠的记忆写入、恢复和检索结果(#8865、#7776、#8982、#7631)
  • skillfs:更新到 v0.5.4,支持托管挂载恢复,隐藏安装暂存状态,并在 Skill 移动后立即刷新发现结果,Agent 在安装和运行期变更中都能看到一致的 Skill 视图(#8883、#7767、#9124)
  • ws-ckpt:更新到 v0.6.0,恢复被中断的回滚,在 btrfs 压力不安全时拒绝新建快照,并为大量快照提供分页,用户可恢复工作区而不进一步扩大存储或索引损坏(#8570、#7888、#3451)

组件更新

  • cosh-ng:更新到 v0.28.0,忽略会降低系统或用户安全性的项目级 approval_mode、allowed_tools 和配置 Hook;将命令审批和项目 Hook 授权绑定到实际内容;为会话设置 100 MiB/7 天预算,为诊断日志设置 20 MiB/3 天预算;对 Access Key 和 PEM 内容脱敏;并修复路由恢复、超时提示、审批卡片、特殊文件名 Diff 及低空间 Checkpoint 处理,用户可在不产生无界本地状态的情况下保持安全、稳定的会话(#7244、#6787、#6788、#7158、#7157、#7159、#7396、#7350、#7489、#7333、#8042)
  • agent-sec-core:更新到 v1.1.1,拒绝过期策略结果,允许较新的 Delete 意图终止已经耗尽的 Apply 重试,确定性恢复 SQLite 状态,并在默认位置不安全时回退到 /var/lib/agent-sec/policy/policy-state.db;Python os.system、os.popen 和 subprocess 的命令字符串复用现有 Shell 规则;skillsec 成为主要命令组且 skill-ledger 保留为别名;包含 YAML 敏感字符的 Skill 名称可保持有效;移除不受支持的 scope create --cgroup-id,管理员可获得行为更可预期的系统安全服务和更明确的迁移方式(#6944、#8782、#9128、#8907、#8948、#9134)
  • agentsight:更新到 v0.15.3,将结构化文件策略转换为可执行的内核规则,覆盖删除、重命名或交换、截断和普通写入;发现 Gemini CLI、Hermes 与 Claude SDK 会话;源会话清空后同步移除已采集轨迹;保留部分批量用量、仅含用量的记录和裸 JSON SSE 用量;只使用最新已回答请求进行准确率分析;在 ATIF 中保留 Developer 指令、工具完成时间和本地会话标识;解码叠加的 HTTP Content-Encoding;报告阈值前校验资源证据;并减少首个 TLS 请求漏采和采集查询内存,运维人员获得与真实采集证据一致的文件保护状态和分析结果
  • tokenless:更新到 v0.9.0,在完整 JSON 候选中保留空字段、null 和数组空位;TOON 无法保持数字值或类型时回退到精确 JSON;将 TOON 编码升级到 spec v4.4;仅在 RTK 实际命令和字节一致性证据匹配时恢复 Tool 后压缩;compress-response 与 compress-schema 不再额外添加换行,Agent 可在不改变结构、数字语义或输出字节的情况下压缩受支持的响应(#8814、#7784、#7752、#8901、#7789、#7796)
  • anolisa:更新到 v0.3.20,将容器部署报告为 container,不再继承宿主机云产品类型;在安装记录包含 Skill 逐文件归属信息时,禁用 OpenClaw 和 Hermes Skill 会保留用户新增或修改的文件;祖先目录被重定向或成为悬空链接时拒绝清理并保留安装记录;Adapter 操作因路径边界被拒绝时说明恢复方法;遥测生命周期命令返回标准 JSON 信封,管理员可识别容器安装并按指引恢复失败的生命周期操作(#8206、#6221、#9220、#8706)
  • agent-memory:更新到 v0.2.12,每次 OpenClaw 自动观察都会重新检查持久化采集授权,将新观察记录立即归属到 MCP_CLIENT_NAME,在发布 mem_edit 或 mem_write 前准备完整替换文件,将 mem_revert 限制为指定文件,在恢复前校验 gzip 快照,启动索引前先监听变化,将带点文件名及类似布尔运算符的词按普通文本搜索,明确报告损坏的索引行,并在随包目录中发布全部 38 个运行时工具,Agent 可在写入、回滚、启动和检索链路中获得最新、隔离且可恢复的记忆结果(#8865、#7776、#8982、#9082、#7631、#8880、#9127、#9089、#8012、#8854、#9148)
  • skillfs:更新到 v0.5.4,允许 skillfs mount --config mount.toml --managed 使用启动配置恢复异常 Worker 并读取当前来源内容,在点号开头的挂载点和慢主机上稳定启动,隐藏 Flat 与 Hermes 暂存目录,Skill 移动后清除旧发现条目,选择 Yarn 时对含义不明确的 npm 命令保持原样,并按字面值处理 --logs-dir,Agent 和运维人员可获得一致的挂载、安装状态、发现结果和统计数据(#8883、#8080、#7767、#7742、#9124、#9003、#9180)
  • ws-ckpt:更新到 v0.6.0,在 Daemon 重启后完成被中断的回滚并恢复正确的回滚头,在 btrfs 数据或元数据达到安全阈值时拒绝新建 Checkpoint,为快照列表提供分页,校验 Cron 锁所有者并拒绝调度值中的换行符,隔离临时 Diff 快照并拒绝异常列表,在创建快照前验证元数据和父链,拒绝从工作区内部更新插件,明确报告初始化失败,并在回滚后重新挂载文件监听,用户可在大型或高压力工作区中获得有界的失败和恢复行为(#8570、#7888、#3451、#8273、#3755、#6774、#6198、#3558、#5695、#6956、#8467、#6216、#6217、#5054)

兼容性

  • agent-sec-core:scope create --cgroup-id 已移除,请改用 --pid、--process-name 或 --executable;升级后请确认系统级 Daemon 正常运行(#9134)。
  • agentsight:Enforcer 协议从 v4 升级到 v5,且不向后兼容;AgentSight 与 Enforcer 必须同步升级。默认 CPU 节流目标为单个逻辑 CPU 的 25%,默认连接容量为 128。
  • tokenless:完整 JSON 压缩不再删除空字段或空值;外部 TOON 消费端必须支持 spec v4.4(#8814、#7752)。
  • anolisa:读取 product_type 的程序需要接受新增的 container 值;容器镜像中的过期 PRODUCT_TYPE 声明应更新或移除。Skill 文件保留机制要求安装记录包含 Skill 逐文件归属信息;缺少此类信息的旧版 OpenClaw 和 Hermes 安装在通过路径校验后仍会清理整个 Skill 目录,禁用前请备份用户新增或修改的 Skill 文件(#8206、#6221)。
  • agent-memory:服务端与 Adapter 需要同步升级到 v0.2.12,旧服务端会拒绝新的 memory_capture Hook;升级前请校验时间衰减参数(#8865、#8701、#8699)。
  • ws-ckpt:存储压力下拒绝创建 Checkpoint 属于预期保护行为;插件更新不能在工作区目录内部执行,并且更新后的协议要求 cosh-ng v0.28.0 或更高版本。

[1.6] - 2026-10-16

组件版本

组件版本
copilot-shell2.8.0
agent-sec-core1.0.1
agentsight0.14.2
tokenless0.8.7
agent-memory0.2.10
os-skills0.6.3
anolisa0.3.18
skillfs0.5.2
ws-ckpt0.5.0
cosh-ng0.27.0

发布组成: 上表版本以 Agentic OS 1.6 稳定正式版实际交付为准, 可能与 main 上滚动更新或 Nightly 的组件 manifest 不同。

说明: copilot-shell、os-skills 和 ws-ckpt 自 v1.5 起未发生版本变化; 此处列出它们以展示完整技术栈组成。

重点特性

  • cosh-ng:更新到 v0.27.0,新增受管理安装的升级提示与适配 IMDSv2 的地域 Telemetry,并提供安全的登录回退,用户可在空闲提示符发现新版本,且 Enhanced 启动失败时仍能进入 Shell(#3465、#3406、#3395)
  • agent-sec-core:更新到 v1.0.1,在 Agentic OS 1.6 的 RPM 和 Raw 正式包中,将 root 管理的 V2 daemon 设为 Policy、扫描、Observability 和 Skill Ledger 的默认 Runtime,并强化 daemon、Storage 与 SkillFS 集成,管理员可通过统一的系统级安全控制面执行策略,同时获得明确的迁移边界(#3257、#6551、#7563、#3295、#6826、#6931、#7122、#7629)
  • agentsight:更新到 v0.14.2,以可热加载的总容量预算统一管理 SQLite Storage,并改进 Provider 解析、Token 统计、Trajectory 分析、Dashboard 与 Enforcement 可靠性,运维人员可在支持的 Runtime 中获得更完整、准确的 Agent 可观测数据(#7478、#7329、#7193、#7398、#6562)
  • tokenless:更新到 v0.8.7,新增 QwenWorkCN 本地模式集成与 OpenClaw 同轮压缩,默认启用完整 HTML 渲染,并确保数值、Schema 与归档对话语义不失真,Agent 可压缩更多实时上下文而不静默改变 Tool Result(#7257、#7124、#3473、#7069、#7048、#7042)
  • anolisa:更新到 v0.3.18,新增 Intel Mac 交付、sec-core Raw Backend 与 QwenWorkCN Tokenless 管理,并强化安装、更新、日志、Telemetry 与回滚记录,管理员可在更多平台上更安全地部署 1.6 技术栈(#3448、#6551、#7368、#7635、#6450、#7197)
  • agent-memory:更新到 v0.2.10,新增经过校验的 Linux x86_64/ARM64 Raw 包、可发现的延迟 Tool 与完整 MCP 子进程清理,用户无需源码构建即可安装,并可在重载 OpenClaw Plugin 时避免残留 Memory 进程(#7648、#7649、#7645、#7482、#7661)
  • skillfs:更新到 v0.5.2,将认证通知与 Live Source 解析接入 Rust sec-core daemon,并强化隐藏 Skill 写入边界、Watcher、Mount 恢复、解析及大通知处理,运维人员在变更和关闭流程中可获得更安全、一致的 Skill View(#3295、#5382、#4530、#6202、#7297、#7189)

组件更新

  • cosh-ng:更新到 v0.27.0,仅对受管理安装在安全的空闲提示符显示可用升级命令,在仅支持 IMDSv2 的实例上发现地域 SLS Endpoint 并兼容旧 Metadata Service,同时仅在 Enhanced 尚未产生副作用就启动失败时回退原生 Login Shell,用户可获得可执行的升级指引,且不会出现重复登录 Session 或干扰未受管理安装(#3465、#3406、#3395)
  • agent-sec-core:更新到 v1.0.1,在 Agentic OS 1.6 的 RPM 和 Raw 正式包中,将 PII、Prompt 与 Code 扫描、Security Events、Observability 查询、Policy/Scope/Binding Reconciliation 和 Skill Ledger Trust 迁移至 root 管理的 V2 daemon;新增按 Owner 隔离的查询、本地模型扫描、系统级签名与默认 Skill 目录、可复现 V2 RPM 构建与 V2 Raw 包、root daemon 校验、连接限额、Retention、SQLite 路径检查和受限 SkillFS 通知响应;从 V2 CLI 中移除旧版本地执行、部分 V1 命令及 SkillSec 密钥轮换,管理员可运行加固后的共享安全服务,并遵循清晰的所有权与吊销规则(#3257、#6551、#7563、#3286、#3384、#6596、#6679、#6745、#6826、#3295、#6931、#7099、#7419、#7188、#7122、#7103、#7295、#7296、#7629)
  • agentsight:更新到 v0.14.2,为全部 SQLite Store 应用默认 2200 MB 的可配置总预算,并优先清理占用最大的 Store;在 Agent 退出时仍记录没有响应体的调用;强化 Anthropic、Gemini、Codex、Responses、Legacy Completion、HTTP/2、SSE、Tool Call、Finish Reason、Tokenizer 与 Token Usage 处理;查询命令支持 --db,并改进 Agent Discovery、Trajectory Filter、Batch Analysis、Reuse Label、Semantic Search、Dashboard 分页与指标、Interruption 聚合、Storage Maintenance、Audit Validation、Enforcement、OOM 检测和旧 Kernel 兼容,用户可查询和分析更长期的 Agent Workload,并减少事件缺失或错误归因(#7478、#7329、#7193、#7398、#6562、#7385、#7451、#7032、#7403、#7413、#6781、#7326、#7467)
  • tokenless:更新到 v0.8.7,在写入时回收过期 Stash 记录,默认启用完整页面 HTML 提取,新增随包交付的 QwenWorkCN 本地模式 Adapter,并在同轮 Model Request 前压缩受支持的 OpenClaw Tool Result;正确保留只读 sed 与 Inline Code,将异常 Tool 参数交回 AgentScope/QwenPaw Host,去重 Selective-Claw Recall,保护 JSON 数值精度和 OpenCode Runtime Validator,支持通过 ANOLISA_DRY_RUN=1 预览 Qwen Code/OpenCode 卸载,并在 Statistics Storage 不可用时继续压缩,Agent 可获得覆盖面更广且更安全的无损压缩(#3565、#3473、#7257、#7124、#4963、#6393、#5288、#5299、#4859、#7040、#7069、#7048、#7348、#7395)
  • anolisa:更新到 v0.3.18,交付 Intel macOS x86_64 CLI 产物并识别兼容的 cosh-ng Release,新增 sec-core Raw Backend、OpenClaw Capability Consent 关闭选项及 Tokenless QwenWorkCN 本地模式 Plugin 管理;校验 RPM Backend、Repository、Kernel Requirement、Archive Path、Raw Conflict、Registration Schema、Adapter State 与 Post-uninstall Hook,修复 npm Launcher,脱敏 Repository Error,改进 RFC3339 日志查询和 Telemetry 重试/关闭行为,并识别 Linux ARM64 SkillFS/ws-ckpt Package,用户可获得更安全的多平台生命周期管理和更易恢复的失败操作(#3448、#3554、#6551、#7368、#7635、#6450、#7197、#7294)
  • agent-memory:更新到 v0.2.10,要求 OpenClaw Adapter Binary 具备可执行属性,发布包含 Memory Server 与内置 Adapter 的 Linux x86_64/ARM64 校验归档,引导 Agent 通过 Tool Search 或直接调用发现延迟加载的 Memory Tool,并在 Plugin 释放时等待 MCP 子进程退出,用户可更早发现配置错误、更轻松地安装、稳定调用 Tool,并干净地关闭或重载(#4855、#7648、#7649、#7645、#7482、#7661)
  • skillfs:更新到 v0.5.2,与 Rust sec-core SkillSec daemon 互操作以完成认证扫描和 Activation,阻止通过已打开 Handle 或嵌套文件系统操作修改隐藏 Skill,在 Flat/Hermes 变更中保持 Listing 与 Inode Identity,限制 Watcher 和 Activation 等待时间,保留既有 View 并报告跳过或冲突的 Skill,强化 Managed Mount 复用与关闭,兼容更多 Skill 文本格式,并在通知接近 64 KiB Frame 限制时回退为 Whole-Skill Rescan,Agent 可读取稳定的 Skill 内容,运维人员也能保留 Source Data 并获得可操作的 Mount 状态(#3295、#5382、#4530、#6202、#7297、#7189)

兼容性

  • agent-sec-core V2 RPM/Raw 迁移:通过 Agentic OS 1.6 V2 RPM 或 Raw 正式包升级时,安全操作要求使用 root 管理的 agent-sec-core.service,默认 Socket 为 /run/agent-sec-core/daemon.sock。请将 AGENT_SEC_DATA_DIR 和 Model Service 配置迁移至 daemon 环境,将 PII Rule 移至 /etc/agent-sec/pii-checker/rules.yaml,更新仍使用 harden、verify 或 log-sandbox 的脚本,并保留 V1 Security Events 与 Observability 数据,因为这些数据不会自动导入。通过 make build-all 和 make install 完成的源码安装目前仍交付 V1 Python CLI 和 User Service(#3257、#6551、#7563、#3217、#7283、#3286、#6605)。
  • agent-sec-core Skill Ledger Trust:V2 使用单一系统签名密钥,不导入 V1 密钥或 Trust History;升级后需要重新扫描 Skill。v1.0.1 会拒绝 rotate-keys 和 init --force-keys。如需吊销已认证 Skill,必须确保其路径不再被已启用的默认目录、其他精确或通配 managedSkillDirs 条目,或已认证 SkillFS mount 覆盖;移除或停用所有适用的授权来源后重启 daemon,并使用 check 或 show 验证该 Skill 已不再受信(#3295、#7629)。
  • Tokenless OpenClaw 要求:OpenClaw Adapter 要求 OpenClaw 2026.6.6 或更新版本,并在同轮 Model Request 前压缩受支持的实时 Tool Result。Host 在 Middleware 执行前截断的文本无法由 Tokenless 恢复;适用时应使用包含上游修复 2f620b970a04 的 Host Build(#7124)。
  • Tokenless HTML 默认行为:CLI、Runtime 与 Python SDK 现在默认启用完整 HTML 页面提取。如需保留原先的显式开启行为,请设置 TOKENLESS_HTML_EXTRACTION_ENABLED=0 或 SDK html_extraction_enabled=False;Git diff 裁剪仍需显式开启(#3473)。
  • QwenWorkCN 本地模式:Tokenless 与 ANOLISA 支持 macOS 本地桌面模式,不支持 Security Workspace 或 Linux VM 执行。由脚本安装的旧版本必须先卸载,才能交由 ANOLISA 接管 Plugin;完成后需重启 QwenWorkCN 并在应用内确认 Activation,因为 CLI Status 无法确认 Runtime 是否已加载(#7257、#7368)。
  • SkillFS 与 sec-core 配套:需同步升级 SkillFS 与 agent-sec-core,才能使用 Rust daemon 的认证扫描与 Activation。通知属于 Best-effort 而非 Exactly-once;过大的 Path List 会在 daemon Frame 限制内转换为 Whole-Skill Rescan(#3295、#7188、#7189)。

[1.5] - 2026-09-24

组件版本

组件版本
copilot-shell2.8.0
agent-sec-core0.13.2
agentsight0.13.1
tokenless0.8.4
agent-memory0.2.8
os-skills0.6.3
anolisa0.3.15
skillfs0.5.0
ws-ckpt0.5.0
cosh-ng0.26.0

说明: copilot-shell 与 os-skills 自 v1.4 起未更新;版本表保留这两个组件以展示完整组件组合。

重点特性

  • cosh-ng:更新到 v0.26.0,新增持久化受管 Task,支持断线后查看进度以及快照预览、对比和切换,用户可持续执行长任务,工作区恢复后无需重启 Gateway 即可让新任务使用恢复后的内容(#2911、#3438)
  • agent-sec-core:更新到 v0.13.2,补齐 V2 Policy、Scope 和 Binding 管理,将代码扫描、安全事件、遥测和 AgentSight 策略下发纳入同一运行链路,管理员可通过统一流程管理和审计安全策略(#3062、#3097、#3103、#3203、#3246、#3300)
  • agentsight:更新到 v0.13.1,新增用户偏好分析、轨迹步骤分类检索和人工标注评审,并加强文件删除防护,用户可从历史 Agent 会话中发现可复用经验
  • tokenless:更新到 v0.8.4,新增 Git diff、HTML 缩减和搜索结果路径合并,Agent 可减少上下文占用,同时保留关键结构、诊断信息和原文恢复能力(#3299、#3306、#3173)
  • anolisa:更新到 v0.3.15,新增 OpenCode 适配与 cosh-ng 诊断包,统一 Yum 3/DNF 4 行为,并强化 RPM 校验和诊断脱敏,管理员可获得更可信的安装与排障结果(#3346、#3317、#3318、#3417、#3431)
  • agent-memory:更新到 v0.2.8,支持非特权会话目录回退,修正 BM25 排序,并分离插件与 OpenClaw 内置记忆工具名称,Agent 可召回更相关的记忆,并同时使用两套记忆系统而不产生命名冲突(#3266、#3296、#3347)
  • skillfs:更新到 v0.5.0,将多个 Skill 来源合并为统一只读视图,新增经过 Skill Ledger 扫描和激活的 Kubernetes 分发方式及 FUSE 自动恢复,运维人员可更灵活地交付 Skill 并控制 Agent 可见访问(#3200、#3182、#2701)
  • ws-ckpt:更新到 v0.5.0,统一工作区路径身份,恢复中断的初始化和注销流程,并为 cosh-ng 受管 Task 提供受保护回滚,用户可在操作中断后安全恢复工作区状态(#2911)

组件更新

  • cosh-ng:更新到 v0.26.0,新增通过 /task 提交持久化 Core/Codex Task、选择 checkpoint 策略,以及受保护的快照预览、对比和切换;支持 /agent 内前缀检索与 Tab 补全、自动生成 Provider 名称、有界且可取消的 ECS RAM Role 探测、原生 Bash 4+ 登录身份和 Intel macOS 11.0+ 安装;默认隐藏所有权状态行,修复只读审批、系统目录路径穿越、/dev/null 分类和 Hook 请求识别,诊断日志默认使用 info 级别,用户可重新连接运行中的任务、使用恢复后的工作区,并获得更可靠的配置与 Shell 交互(#2911、#3438、#3224、#3298、#3358、#3448、#3449、#3345、#3208、#3436、#2708、#2710、#3248、#3331)
  • agent-sec-core:更新到 v0.13.2,新增 root 授权的 V2 Policy/Scope/Binding API 与 CLI、支持有界并发协调的 AgentSight 策略下发、daemon 驱动的 Bash/Python 正则扫描与能力查询,以及关联追踪上下文的兼容 JSONL/SQLite 扫描事件记录;统一 Skill Ledger 输入,跳过未托管的只读 Raw 用户 Skill,内置支持可选脱敏的 pii-checker Skill,并提供加固的 systemd 服务、OpenClaw 2.0 能力授权确认和 SQLite 会话证据,管理员可管理策略并审计安全结果,单个 Binding 失败不会阻塞其他处理(#3062、#3097、#3103、#3194、#3203、#3243、#3246、#3300、#3253、#3183、#3241、#3217、#3440)
  • agentsight:更新到 v0.13.1,分析语言、协作、测试、纠正和工具偏好并提供来源用户输入;新增按消息、推理和工具类别查询上下文 ATIF 步骤、可复用轨迹标签及人工评审与搜索,以及带域隔离、违规事件和启动清理的 Linux 5.10/6.6 文件删除防护;修复 namespace PID 解析、策略执行事件消费、conversation_id 初始化、macOS 轨迹错误静默和日志过滤,并新增 Token Plan Provider 预设,用户可依据更清晰的证据调查和复用历史运行记录,并获得更可靠的可观测能力(#3041、#3378、#3186)
  • tokenless:更新到 v0.8.4,新增需显式开启且保留变更行与文件元数据的 Git diff 裁剪、附带移除元素计数且不改变文件读取结果的可恢复 HTML 转 Markdown,以及保留匹配项、行号和行尾的搜索路径共享;保留 </html> 后的输出、正确处理 SVG 密集页面,并通过 rtk recall 恢复已保留的截断输出;新增独立安装器与 install-tokenless Skill,支持安装失败恢复、按资源归属卸载并默认保留运行数据、OpenCode 适配,以及改进的 Claude Code 激活、QwenPaw 预检和重复卸载,Agent 可压缩更多输出并恢复原文,同时获得更安全的安装管理(#3299、#3306、#3173、#3386、#3396、#3273、#2322、#3324、#3346、#2193、#3289、#3412)
  • anolisa:更新到 v0.3.15,新增支持自定义配置目录、冲突保护和中断重试的 OpenCode Adapter 启用、状态查询与禁用,以及在 Markdown/JSON 报告中附带健康结果且不自动上传的 cosh-ng 本地诊断包;支持精确版本的 Yum 3/DNF 4 操作、遵循系统代理与私有 CA 配置的 RPM 元数据直接校验,以及未配置远程仓库时的本地包查询和 Raw 安装;root 升级预览可检查合并安装集合的 RPM 冲突,区分探测失败与组件缺失,校验声明子包资源,并在保留源站信息的同时脱敏仓库凭据、路径和查询参数,管理员可获得可靠的生命周期检查与可操作的诊断信息(#3346、#3317、#3318、#3353、#3294、#3230、#3240、#3280、#3285、#3292、#3417、#3431)
  • agent-memory:更新到 v0.2.8,回退至用户独享的运行时或临时会话目录并检查所有者、权限和符号链接,修正搜索、混合检索与自动召回的 BM25 排序,并将 OpenClaw 工具更名为 anolisa_memory_search、anolisa_memory_get;为 coding profile 声明全部四个工具,对不支持的 expert profile 给出明确提示,加强 sessionId/sessionDir 校验和旧客户端停止顺序,并补齐源码归档的配置、示例与 Adapter 资源,用户无需特权会话目录配置即可运行,并稳定使用两套记忆系统(#3266、#3296、#3347、#3238、#3213、#3231)
  • skillfs:更新到 v0.5.0,新增有序多来源挂载,同名 Skill 整个目录由更高优先级来源提供,将只读包复制至私有可写来源供 Ledger 扫描与激活,并阻止从 Agent 可见挂载写入;通过真实 FUSE 读取检测故障并在 Sidecar 内执行有界重挂载,已打开的转换后 SKILL.md 句柄保持内容一致,新句柄可读取来源更新,同时限制缓存和句柄预算,Agent 可稳定读取 Skill,运维人员可在减少业务容器影响的同时恢复挂载(#3200、#3182、#2701、#3202)
  • ws-ckpt:更新到 v0.5.0,以规范路径识别工作区、拒绝冲突别名、串行化并发初始化,并在 daemon 重启后恢复中断的 init/unregister 操作;新增受管 Task 的 guarded rollback V2,支持空工作区快照,目录被外部替换时快速失败并提示恢复,正确报告 recover --all 部分失败,在恢复或卸载失败时保护恢复数据并改进空间不足处理;通过 OpenClaw 配置 CLI 管理工具白名单,保留管理员修改的 RPM 配置并修复 Raw Adapter 发现,用户可信任快照结果,并减少工作区恢复中的状态冲突(#2911、#3059、#3069、#3053、#3221、#3070)

兼容性

  • agent-memory OpenClaw 工具更名:将提示词和工具白名单中的 memory_search、memory_get 替换为 anolisa_memory_search、anolisa_memory_get,重启 OpenClaw Gateway 并开启新会话。内部 MCP 名称与已存储记忆不受影响(#3347)。
  • ws-ckpt 与 cosh-ng 版本配套:受管 Task 的 guarded rollback 要求 ws-ckpt daemon 0.5.0 或更新版本;ws-ckpt OpenClaw Adapter 要求 OpenClaw 2026.2.13 或更新版本。应同步升级 cosh-ng 与 ws-ckpt,并在启用 Adapter 前确认 OpenClaw 版本(#2911、#3221)。
  • Tokenless 安装要求:npm 要求 Node.js 16.7 或更新版本。Linux 源码安装仅提供 Tokenless CLI,RTK 和框架 Adapter 由 npm 提供。需要完整 Agent 集成时优先使用 npm,并在切换安装方式前确认资源归属(#2322)。
  • cosh-ng 登录 Shell 行为:Enhanced Bash 在 Bash 4+ 中默认采用真实 login shell 身份,并加载 /etc/profile 与 ~/.bash_profile。如需保留旧行为,可设置 shell.login_identity = false(#3358)。

[1.4] - 2026-09-10

组件版本

组件版本
copilot-shell2.8.0
agent-sec-core0.12.0
agentsight0.12.1
tokenless0.8.1
agent-memory0.2.7
os-skills0.6.3
anolisa0.3.11
skillfs0.4.2
ws-ckpt0.4.5
cosh-ng0.24.1

说明: copilot-shell、os-skills、skillfs 与 ws-ckpt 自 v1.3 起未更新;版本表保留这些组件以展示完整组件组合。

重点特性

  • cosh-ng:更新到 v0.24.1,在 Enhanced Assisted Zsh 中将自然语言和路径类输入交给 Agent,同时保留普通 Shell 行为与用户的终端定制,用户无需重建现有配置即可获得更自然的 Zsh 交互(#3004、#3156)
  • agent-sec-core:更新到 v0.12.0,使 legacy cosh 与 cosh-ng 的 Skill 调用一致接受已配置策略校验,并降低误报,用户可在两种 Shell 中获得一致的 Skill 策略执行与更少的错误安全告警(#2871、#2928)
  • agentsight:更新到 v0.12.1,新增无 eBPF 采集、DashScope 原生支持、Kubernetes 打包和更可靠的长期采集,运维人员可在受限环境与生产环境中持续获得准确的可观测数据(#2954、#2976、#3135、#3147)
  • tokenless:更新到 v0.8.1,新增 QwenPaw 支持,以及大型 JSON、构建日志和 CSV/TSV 的可恢复压缩,Agent 可压缩更多类型的上下文并按需精确取回省略内容(#3047、#3052、#3067、#3075、#3089)
  • anolisa:更新到 v0.3.11,新增 QwenPaw Adapter 管理,并可在已配置仓库提供 ktuner 时发现该组件,同时改进安装、恢复和审计行为,管理员可获得更可信的生命周期状态,并可在无需 root 的情况下预览组件索引(#2084、#3075、#3127、#3141、#3142、#3158)
  • agent-memory:更新到 v0.2.7,改进 OpenClaw 安装、语料检索、配置校验和源码构建准备,Agent 可通过更可靠的安装和召回能力共享持久化记忆(#2560、#3149、#3155、#3177、#3187)

组件更新

  • cosh-ng:更新到 v0.24.1,改进提示词路由、终端重绘、历史召回、自定义 Tab 行为、登录 profile PATH 加载、凭据脱敏和 Hook 信任信息,并移除系统 OpenSSL 依赖,用户可保留现有 Shell 配置并稳定使用 Agent 协助,不会丢失命令、输出或敏感历史保护(#2967、#2983、#2996、#2999、#3004、#3030、#3050、#3058、#3156)
  • agent-sec-core:更新到 v0.12.0,在 legacy cosh 与 cosh-ng 中执行相同的 Skill 策略,降低扫描误报,通过 skill-ledger 与 check 报告全部完整性结果,并加快容器健康检查,用户可获得一致执行、更清晰的校验结论和更快的就绪检查(#2707、#2871、#2879、#2928)
  • agentsight:更新到 v0.12.1,新增无 eBPF 采集、DashScope 原生与 Kubernetes 部署支持、Agent 资源监控和 cosh-ng 流量采集,并改进归因准确性、工具结果保留、策略同步、Token 计量、流式请求收尾、重复记录抑制、启动恢复和采集自动恢复,运维人员可信任时间线与用量统计,并让监控和防护在长期负载及短暂故障后持续运行(#2916、#2954、#2976、#2979、#3005、#3011、#3016、#3081、#3087、#3135、#3147、#3191)
  • tokenless:更新到 v0.8.1,新增 QwenPaw 集成、大型 JSON 集合、构建日志和 CSV/TSV 输出的可恢复缩减、通过现有 Shell 工具取回省略内容以及 Trace 关联,并修复各支持宿主的安装与兼容问题,Agent 可对更多工具结果减少上下文占用,并在需要时恢复精确原文(#2249、#3009、#3047、#3052、#3067、#3068、#3075、#3085、#3089、#3094)
  • anolisa:更新到 v0.3.11,新增 QwenPaw Adapter 生命周期管理和从已配置仓库发现 ktuner,允许已声明 config 文件修改而不产生错误损坏告警,正确记录 Hook 修改后的文件,避免包冲突后产生虚假 pending 操作,支持无需 root 的组件索引预览,并改进清理、日志、dry-run 和审计指引,管理员可依据更贴近系统实际状态的信息检查和恢复安装(#2084、#2618、#2922、#2926、#2994、#3075、#3118、#3127、#3141、#3142、#3158)
  • agent-memory:更新到 v0.2.7,协商 OpenClaw 安装能力,区分权限与配置故障,返回可读取且窗口范围准确的语料结果,在查找二进制前校验配置,并为源码构建准备 Node.js 与 npm 依赖,Agent 与运维人员可获得更可靠的安装、诊断和记忆召回(#2560、#3149、#3155、#3177、#3187)

兼容性

  • Tokenless Protocol v2:tokenless compress 现在仅接受 before_model、pre_tool、post_tool 和 retrieve 生命周期请求;Protocol v1 与 tokenless mcp serve 已移除。应同步升级 Tokenless Core、CLI、SDK 与 Adapter,并显式声明恢复能力,避免协议或检索能力不匹配(#2978、#3068)。
  • Tokenless Rust API:使用 Runtime 生命周期方法替代 TokenlessRuntime::compress。直接调用响应压缩的代码须从已移除的 tokenless-pipeline Crate 和 tokenless_schema::ResponseCompressor 迁移至 Runtime 或 tokenless-compressors API(#2974、#2978)。
  • Tokenless Python 与 AgentScope API:使用类型化的 before_model、pre_tool、post_tool 和 retrieve 生命周期请求,替代已移除的 ModelRequest、ToolCall、ToolResult 和 ToolResponseCompressor 类型。AgentScope 集成须为自定义工具补充 ToolContract 元数据,并暴露一个静态恢复工具(#2986、#3029)。
  • Tokenless 恢复配置:自定义 retrieve_tool_name 必须符合工具名规则。生命周期 Schema 压缩现在要求具备已授权的静态恢复工具和可用 Stash;缺少任一条件时,Hook 会保留原始 Schema。取回省略内容还要求 CLI 或静态工具可访问,且宿主能够替换当前工具结果,其中 Claude Code 要求 2.1.121 或更新版本。已有 <<tokenless:HASH>> 标记仍可读取(#2978、#2995、#3029、#3052、#3068)。
  • Tokenless Adapter 配置:OpenClaw 现在使用 post_tool_enabled 控制 PostTool 优化;原有的响应、TOON、skip-tool 和 shell-tool 策略设置已移除,不再控制压缩行为。升级时应删除这些废弃设置,并按需配置 post_tool_enabled。DeepSeek Harness 用户也须移除 Adapter 专用阈值和工具列表,改用共享压缩策略。OpenClaw 仍仅支持无损 transcript 更新,不支持同轮替换或检索(#3009、#3036)。
  • Tokenless 统计字段:Dashboard 和集成须使用 content_origin、applied_operations 与 recoverability 替代 seam 和 compressor_chain。旧 SQLite 列仍为兼容性保留,但新记录不再写入这些列;升级后继续查询旧字段可能得到空值或错误报表(#2978)。
  • AgentSight 时间戳:内核事件时间戳改为校准至主机墙钟时间,不再基于容器 uptime 计算。若内核事件仍在队列中时 NTP 或管理员跳变主机墙钟,受影响事件的历史墙钟时间将无法重建;已持久化记录不受影响。跨越墙钟调整分析时间线时,应标记每次调整点(#3128)。
  • agent-sec-core Python 依赖:Python 部署和源码构建现在要求 cryptography 50.0.1 或更新版本。自定义安装在升级前应根据导出的 requirements 刷新环境(#3015)。
  • agent-memory 源码构建:从源码构建 OpenClaw Adapter 现在要求 Node.js 20 或更新版本以及 npm。统一用户模式构建会自动准备这些工具;系统模式构建会在预检时报告缺失工具(#3187)。
  • anolisa RPM 预览:在 DNF 4 系统上,RPM 安装的 --dry-run 需要使用 sudo,并可能在检查依赖冲突时刷新仓库元数据。该检查现在会在创建恢复日志前完成(#3158)。
  • anolisa 可编辑 config 与状态格式:允许修改 raw 安装的 type = "config" 文件内容不会改变 update 或 uninstall 语义,因此执行任一操作前都应备份已定制配置。新的 kind = "config" 状态记录无法由旧版 CLI 读取;降级前还应备份状态,并将相关自有文件条目改回 kind = "file",以恢复内容摘要校验(#3142)。

[1.3] - 2026-08-31

组件版本

组件版本
copilot-shell2.8.0
agent-sec-core0.11.1
agentsight0.11.2
tokenless0.7.14
agent-memory0.2.6
os-skills0.6.3
anolisa0.3.8
skillfs0.4.2
ws-ckpt0.4.5
cosh-ng0.22.2

说明: copilot-shell 与 agent-memory 自 v1.1 起未更新;版本表保留这两个组件以展示完整组件组合。

说明: agent-sec-core 采用发布分支流程,main 仍显示 0.11.0;1.3 组件栈的实际发布物取自 sec-core/v0.11.1 tag,下文条目描述的是该 tag 上的行为,而非 main 上的行为。

重点特性

  • cosh-ng:更新到 v0.22.2,新增 Native Shell 集成模式与 Shift+Tab Shell-only 切换,终端输出以卡片前缀区分归属,用户可使用无 Hook 的 Shell,同时一眼看出每行输出来自哪个子系统(#2759、#2832)
  • agent-sec-core:更新到 v0.11.1,用 Rust 重写提示词扫描内核,引入可更新规则包与可选的深度分析后端,同时收窄不可见字符规则,用户获得更快的提示词扫描,合法的 emoji 与多语言提示词不再被误判为严重注入(#2409、#2531、#2699、#2900)
  • agentsight:更新到 v0.11.2,模型流量抓取失效后可自行恢复,并支持识别 Bun 构建的 Claude Code,用户无需重启采集器即可保持连续观测(#2782、#2792)
  • tokenless:更新到 v0.7.14,新增统一的 tokenless compress 入口,stats summary 补齐净节省与 Retrieve 归因,Adapter 最多只发起一次子进程调用,用户可看到估算的净 Token 节省(#2844、#2885)
  • ws-ckpt:更新到 v0.4.5,新增 k8s Sidecar 部署(#2034、#2965)与受保护的 checkpoint 协议(快照按存储身份围栏),用户可在容器化工作区做快照,并在崩溃后校验 checkpoint 状态
  • skillfs:更新到 v0.4.2,新增 Kubernetes Sidecar 部署与可选的双向 HMAC-SHA256 认证保护 control 与 notify socket,非特权工作负载可跨容器 namespace 使用 FUSE Skill View(#2057、#2449)

组件更新

  • cosh-ng:更新到 v0.22.2,新增通过 cosh agent task|doctor|run 暴露的本地 Gateway 控制面、有界的 transcript 内存与 32 MB run_command 输出上限、亚毫秒级交互回显、包管理目录外系统扩展的自动发现,以及 /hooks enable|disable 的层级消歧;修复终端显示与输入路由(已批准命令与斜杠命令执行后终端残留内部标记行、批量粘贴的斜杠输入误路由、含路径的中文提示词、斜杠命令历史召回、中断后终端滞留 raw 模式)、安全与审计缺口(trust 模式下被 Hook 拦截的命令仍被执行、审批批次竞态、Hook 输出畸形时工具调用被静默放行、中断的 precmd 标记退出码被伪造)以及打包问题(RPM 卸载残留悬挂登录 Shell、systemd 255 上 Gateway 启动失败、dnf --dry-run 误报、代码扫描漏检 awk system() 调用),用户获得输出归属可见、内存有界且审批可审计的原生 Shell(#2125、#2400、#2402、#2405、#2529、#2599、#2603、#2605、#2622、#2655、#2667、#2682、#2709、#2843、#2880、#2909、#2914、#2917、#2918、#2938、#2943、#2949、#2955、#2968)
  • agent-sec-core:更新到 v0.11.1,新增 SkillFS HMAC 对端认证、agent-sec-cli capabilities 子命令以及 verify 的 CHECKED/PASSED/FAILED 显式计数;只读系统 Skill 不再让批量扫描失败,占位的 set-policy/rotate-keys 不再虚报成功,daemon 健康检查不再夸大就绪状态,非回环模型服务地址不再被接受,用户可在跨容器部署中审计 Skill 并信任 CLI 的校验结论(#2356、#2493、#2875、#2876、#2892、#2893、#2906)
  • agentsight:更新到 v0.11.2,新增历史 Agent 活动视图、会话语义搜索、双语 Dashboard、LLM 延迟指标与存储大小上限;修复模型流量抓取失效后无法自行恢复、采集器因内存占用被终止后不自动重启、事件突增时内存不受控,以及中断事件分组计数与总数不一致,用户在长时间运行中获得存储有界、抓取可自愈的可观测能力(#2578、#2612、#2644、#2733、#2792、#2796、#2817、#2925)
  • tokenless:更新到 v0.7.14,新增提供框架中立生命周期的 anolisa-tokenless Python Wheel、AgentScope 与 DeepSeek Harness 集成、Gemini functionDeclarations Schema 压缩以及可配置的数组尾部窗口;修复 Codex 集成重复压缩与小负载 TOON 处理不一致,更多框架上的 Agent 可节省 Token,并通过截断标记内嵌的可执行命令恢复被截断内容(#2433、#2507、#2581、#2627、#2663、#2866、#2869、#2885)
  • anolisa:更新到 v0.3.8,新增 Linux x64/arm64 与 macOS arm64 的已验证预编译 CLI 归档、原生 DSH Adapter 驱动、容器运行时 Telemetry 与基于 schema v2 的目标可用性判定;修复 raw 安装误展开渲染内容中的 ${VAR}、--quiet 下 Adapter 输出不干净、--dry-run forget 与 restart 预览失真,以及卸载后 systemd 模板实例仍在运行,用户可按平台安装独立 CLI,并在无副作用的前提下预览操作(#2533、#2580、#2603、#2642、#2752、#2762、#2774、#2883、#2903)
  • os-skills:更新到 v0.6.3,RPM 补充 anolisa-component(os-skills) 声明,仓库侧组件索引不可用时用户仍可执行 anolisa upgrade 升级 OS Skills(#2576)
  • ws-ckpt:更新到 v0.4.5,新增 k8s Sidecar 部署(含中英文指南,#2034、#2965)与受保护的 checkpoint 协议;修复 daemon 内存泄漏最终耗尽内存导致进程被终止(#2554)、并发 IO 下 loop 设备后端 checkpoint 延迟(最多降低至原来的 1/5,#2523)、bootstrap 失败遗留悬空镜像与 loop 设备及启动失败静默退出(#1956)、config --global 写入未被 daemon 实际加载(#2813),以及 loop 设备全部被占用时的间歇性 bootstrap 失败(#2965),用户可在容器中以更低延迟做快照并获得明确的启动诊断
  • skillfs:更新到 v0.4.2,新增 Kubernetes Sidecar 部署、双向 HMAC-SHA256 socket 认证、可选的 Alibaba Cloud Linux 4 Sidecar 镜像,以及启动 reconcile 对晚启动 notify daemon 的有界退避重试;修复 flat normal 模式挂载下分类 Skill 无法被找到,非特权工作负载可使用经认证且在 daemon 重启后自动收敛的 Skill View(#2057、#2449、#2777、#2787、#2790、#2901)

[1.2] - 2026-08-14

组件版本

组件版本
copilot-shell2.8.0
agent-sec-core0.10.1
agentsight0.10.1
tokenless0.7.6
agent-memory0.2.6
os-skills0.6.2
anolisa0.2.19
skillfs0.4.0
ws-ckpt0.4.2
cosh-ng0.16.1

说明: copilot-shell、agent-memory、skillfs 与 ws-ckpt 自 v1.1 起未更新;版本表保留这些组件以展示完整组件组合。

重点特性

  • cosh-ng:更新到 v0.16.1,将一次性 Agent 请求统一到 /agent,并收敛 cosh-core 与 cosh-shell 运行时路径、引入显式协议协商,用户用一个命令即可发起单次 Agent 请求,两条运行时入口行为一致(#2403、#2441)
  • agent-sec-core:更新到 v0.10.1,统一各 Agent 框架的 Hook 策略开关,代码扫描、提示词扫描与可观测性均可独立由环境变量控制,用户无需改动 Hook 脚本即可按部署启用各项防护(#2141、#2199、#2239)
  • agentsight:更新到 v0.10.1,修正回合边界与 cosh 重启后的会话连续性,将暂停事件重新归类为正常结束而非异常中断(#2320),并新增 Codex 轨迹转换与跟随浏览器语言的 Dashboard,用户可获得准确的跨运行时轨迹并以本地语言查看
  • tokenless:更新到 v0.7.6,新增 OpenCode Adapter,并将 Qoder Adapter 迁移到原生插件与 Hook 机制,两种运行时上的 Agent 都能获得命令重写以及就地替换原始工具输出的 Schema/响应压缩
  • anolisa:更新到 v0.2.19,新增 raw 安装的包体系后端映射、更新后的 Adapter 变更提示与 2 GiB 完整性降级判定,管理员可在精简 RPM/DEB 主机上安装,大体积组件不再被误判为损坏(#2018、#2271、#2314)

组件更新

  • cosh-ng:更新到 v0.16.1,新增带跨目标构建校验与可移植 macOS 启动器的 raw 打包接口;修复时钟跳变导致的输入停滞、流式响应解码不严格、敏感文件写入、退出后残留 raw 模式、临时文件路径可预测、斜杠命令只提示首个匹配项与 CJK 折行,用户获得可复现归档,以及能正确折行东亚文本且不残留终端状态的 Shell(#2176、#2209、#2211、#2357、#2361、#2410、#2411、#2446)
  • agent-sec-core:更新到 v0.10.1,新增 OpenClaw 代码扫描拦截模式、更广的提示词扫描入站字段覆盖、只读 Skill 分析、把未打包的 Skill 目录纳入账本检查、加载 Skill 包前先验证清单签名,以及事件查询的会话与运行过滤,用户可拦截风险代码、检查未打包 Skill 并按会话查询安全事件(#2044、#2132、#2185、#2201、#2242、#2277)
  • agentsight:更新到 v0.10.1,新增 Codex 轨迹转换为 ATIF、抓取到的模型流量附带进程归属信息且进程号在观测者命名空间内解析(#2360)与 Dashboard 本地化;修复工具调用结束后回合被提前关闭、暂停事件被误判为异常中断(#2320)、流式响应被截断、QwenCode 轨迹数据不准、cosh 重启后会话丢失,以及 cosh 会话临时文件写入未被映射(#2080),用户可在浏览器语言环境下获得准确的跨运行时轨迹
  • tokenless:更新到 v0.7.6,TOKENLESS_DATA_DIR 支持用户 Home 之外的绝对目录,硬关闭 Tool Ready 调用前检查与阻断;修复 JSON Schema 被重复 Stash、Dry-run 配置被环境变量覆盖与 retrieve 额外添加换行,Agent 一次 Retrieve 即可恢复内容,且不再被错误的就绪判定阻塞(#2380、#2386、#2396、#2399、#2425、#2434、#2487)
  • anolisa:更新到 v0.2.19,新增 anolisa update 后的 Adapter 变更提示、Qoder 原生插件生命周期支持、Codex Hook 信任持久化、OPENCLAW_STATE_DIR 处理与遗留命令的标准 JSON 信封,并将 Telemetry 迁移到 SLS_PROJECT_PREFIX,用户可跨框架管理 Adapter,并以同一方式解析所有 JSON 输出(#2018、#2221、#2260、#2281、#2319、#2337)
  • os-skills:更新到 v0.6.2,新增用于确定性内核诊断、调优与回滚的 ktuner 技能,移除遗留的 OpenClaw 与 Hermes 适配器脚本,并补齐技能账本的认证恢复说明,用户可获得基于规则的调优建议并一键应用与回滚(#1172、#1278、#2185)

[1.1] - 2026-08-08

组件版本

组件版本
copilot-shell2.8.0
agent-sec-core0.9.0
agentsight0.9.1
tokenless0.7.3
agent-memory0.2.6
os-skills0.6.1
anolisa0.2.15
skillfs0.4.0
ws-ckpt0.4.2
cosh-ng0.14.0

说明: os-skills 保持 v0.6.1,本次发布未更新;版本表保留该组件以展示完整组件组合。

重点特性

  • cosh-ng:更新到 v0.14.0,新增可恢复的 Workspace Session、MCP 管理、运行时状态查询和 DashScope Prompt Cache,Agent 可恢复长时间任务、扩展能力并降低重复 Prompt 成本(#1546、#1592、#1778、#1949、#2046)
  • agentsight:更新到 v0.9.1,新增优化与 Trajectory 分析以及 Case Containment、System Audit 和 ActPlane 风险执行,用户可诊断 Agent 质量与成本并调查、遏制风险行为(#1728、#1789、#2051)
  • agent-sec-core:更新到 v0.9.0,将 Prompt、PII、Code 和 Observability Hook 扩展到 Qoder CLI、Qwen Code 和 Codex,用户可在受支持的 Agent Runtime 间应用一致的安全策略(#1473、#1480、#1495、#1501、#1529、#1535)
  • tokenless:更新到 v0.7.3,新增带 MCP 检索的可逆压缩以及 Cosh-NG 响应与命令压缩,Agent 可减少 Model Context 并按需恢复被截断的内容(#1285、#1376、#1669)
  • anolisa:更新到 v0.2.15,新增精确版本 RPM/Raw 安装、文件元数据修复和交互式进度,管理员可选择已发布版本、修复安装漂移并查看操作阶段(#1700、#1740、#1987、#2036)

组件更新

  • copilot-shell:更新到 v2.8.0,新增需用户同意的 /ktuner 命令、导出 COSH_SESSION_ID 并在切换时复用兼容的 cosh-ng 认证,用户可调优主机、关联子进程活动并以更少配置在 Shell 间切换(#1279、#1491、#1951)
  • agent-sec-core:更新到 v0.9.0,新增 Qoder CLI 与 Qwen Code Hook 覆盖、Codex PII 与 Observability Hook、自定义 PII 规则及中文 Prompt Injection 检测,用户在 Prompt、Tool Call、Skill 和 Agent 输出上获得更广泛的保护(#1473、#1495、#1501、#1522、#1554)
  • agentsight:更新到 v0.9.1,新增 ATIF v1.7 Trajectory 分析、准确性/性能/成本 Workspace、Case Containment、System Audit 和风险 Dashboard,用户可追踪多 Agent 行为并处理优化或安全发现(#1728、#1789、#1828、#2051)
  • tokenless:更新到 v0.7.3,新增基于 Stash 的可逆压缩、MCP 检索服务器、Cosh-NG 压缩和 macOS/Qwencode Adapter 支持,Agent 可在更多 Runtime 中节省 Token 而不永久丢失压缩内容(#1285、#1376、#1669、#1894、#1964)
  • agent-memory:更新到 v0.2.6,新增同步索引以及聚焦 Query 和 OR 排序 Recall Fallback,Agent 可从冗长或包含较多停用词的 Prompt 中检索刚捕获的记忆(#1520、#1574、#2047)
  • anolisa:更新到 v0.2.15,新增精确版本 RPM/Raw 安装、Telemetry 控制、macOS arm64 npm 交付、文件元数据修复和分阶段进度,用户可跨 Linux 与 macOS 选择已发布版本、控制上报并修复 Linux 安装漂移(#1619、#1700、#1740、#1962、#1987、#2036)
  • skillfs:更新到 v0.4.0,新增 Hermes 嵌套 Skill 兼容、可配置读取时转换、认证的 Live Source 解析和强化的权限边界,Agent 可使用适配后的 Skill View,同时 Source Mutation 仍受安全控制(#1146、#1484、#1517)
  • ws-ckpt:更新到 v0.4.2,新增 Telemetry Gate 和孤立 Pre-init Backup 自动恢复,用户可在初始化中断后恢复 Workspace 而不受陈旧备份状态影响(#1509、#1601)
  • cosh-ng:更新到 v0.14.0,新增 Session 恢复、MCP Tool、Slash Command 状态查询和 Prompt Cache 可观测,Agent 可恢复复杂任务、扩展能力并诊断 Cache 节省效果(#1530、#1546、#1592、#1778、#1949、#2046、#2075)

[1.0] - 2026-07-06

组件版本

组件版本
copilot-shell2.6.1
agent-sec-core0.7.0
agentsight0.7.1
tokenless0.6.1
agent-memory0.2.1
os-skills0.6.1
anolisa0.1.20
skillfs0.3.2
ws-ckpt0.4.1
cosh-ng0.11.0

重点特性

  • anolisa:更新到 v0.1.20,交付统一 CLI 网关提供组件全生命周期管理与适配器编排,用户可通过一条命令安装/更新/诊断所有组件
  • cosh-ng:更新到 v0.11.0,完成 Core/Shell 分离与 AI 增强终端,Agent 可跨发行版确定性执行结构化系统操作
  • agent-memory:更新到 v0.2.1,新增用户数据主权与 4 类记忆分类,用户可查询/遗忘/控制自动捕获的记忆
  • tokenless:更新到 v0.6.1,新增压缩开关与 A/B 对比及 QwenCode 适配器,用户可量化各策略的 Token 节省效果而不影响任务执行

新增组件

  • anolisa:首次发布 v0.1.16,构建统一 CLI 网关管理组件安装/更新/卸载(RPM + Raw 双后端),用户可通过 anolisa install --all 一键部署全部组件
  • cosh-ng:首次发布 v0.11.0,实现确定性 Agent-OS 接口(5 crate workspace),Agent 可通过稳定 API 跨发行版执行结构化系统操作
  • skillfs:首次发布 v0.3.2,构建 FUSE 虚拟文件系统实现基于视图的 SKILL.md 暴露,Agent 可从挂载目录发现并加载技能

组件更新

  • agent-memory:更新到 v0.2.1,新增主权工具集(about/forget/consent)、AMA 导入导出、4 类分类和抗 SIGKILL 增量聚合,用户可自主控制记忆留存并跨 Agent 迁移
  • tokenless:更新到 v0.6.1,新增压缩开关(dry-run + 按模式统计)、SLS JSONL 遥测默认开启和 QwenCode 适配器,开发者可 A/B 测试压缩策略并在 SLS 大盘监控 Token 节省
  • agentsight:更新到 v0.7.1,新增 Token 节省可视化(策略饼图 + 行级 diff)、安全大盘和容器/K8s 全面支持,用户可直观评估各优化策略的节省贡献
  • copilot-shell:更新到 v2.6.1,新增 /model 多 Provider 切换对话框和 SLS 会话遥测(32 字段 JSONL),用户可自由切换 LLM Provider 而不丢失配置
  • agent-sec-core:更新到 v0.7.0,新增 Skill Ledger 完整性链(GPG 签名工作流)和 Prompt Scanner,用户可审计 Skill 安全状态并在危险操作前收到确认提示
  • os-skills:更新到 v0.6.1,新增 ANOLISA Guide 知识库 skill(13 份官方文档)和 OpenClaw 安装预检引导,Agent 可在回答中引用准确的产品文档
  • ws-ckpt:更新到 v0.4.1,新增自动清理调度和 TOML 配置热重载,用户可设置保留策略并即时生效无需重启 daemon

变更

  • 文档治理规范通过 specs/documentation-standard.md 建立
  • 双语命名约定统一为 _zh.md(从遗留 _CN.md 迁移)

[0.6] - 2026-06-12

组件版本

组件版本
copilot-shell2.4.1
agent-sec-core0.5.0
agentsight0.5.0
tokenless0.4.1
agent-memory0.1.0
os-skills0.5.0
cosh-ng0.1.0 (MVP)

重点特性

  • agent-memory:首次发布 v0.1.0,交付沙箱化文件系统 MCP 记忆服务器,Agent 可跨会话持久化存储并通过 BM25 检索上下文
  • tokenless:更新到 v0.4.1,新增 Hermes Agent 插件和 Tool Ready 4 阶段预检,Agent 工具执行前自动验证环境就绪避免无效重试
  • agentsight:更新到 v0.5.0,新增 Skill 维度 Token 指标和 Hermes 支持,用户可精确定位哪些 Skill 消耗最多 Token

新增组件

  • agent-memory:首次发布 v0.1.0,构建 19 工具 MCP 服务器(命名空间隔离 + BM25 后台索引),Agent 可在沙箱化文件系统中读写/检索持久记忆
  • cosh-ng:首次发布(MVP),完成确定性 OS 操作的生产可用功能,Agent 可获得格式可预测的结构化命令输出

组件更新

  • tokenless:更新到 v0.4.1,新增 Hermes adapter runner 和 Tool Ready 机制(4 阶段环境预检集成为 cosh extension),Agent 工具调用前自动校验环境减少因环境故障浪费的 Token
  • agentsight:更新到 v0.5.0,新增 Skill 维度 Token/调用指标和 Hermes matcher(含 SSL 支持),用户可在 Dashboard 中按 Skill 查看 Token 消耗明细
  • agent-sec-core:更新到 v0.5.0,新增 PIIChecker(输出 PII 检测 + 脱敏引擎)和 Skill Scanner(文本/代码扫描 + 生命周期触发),Agent 输出中的敏感信息被自动拦截
  • copilot-shell:更新到 v2.4.1,新增跨 Session 自动记忆提取和 hook reason UI 可见性,用户可看到安全 hook 拦截操作的具体原因

[0.5] - 2026-05-28

组件版本

组件版本
copilot-shell2.4.0
agent-sec-core0.4.0
agentsight0.4.0
tokenless0.4.0
os-skills0.4.0

重点特性

  • tokenless:更新到 v0.4.0,新增 Hermes 插件和 Tool Ready 环境机制,Agent 工具执行前依赖缺失被提前拦截避免 Token 浪费
  • agent-sec-core:更新到 v0.4.0,交付 PIIChecker 和 Skill Scanner 首版,Agent 输出被扫描防止敏感信息泄露

组件更新

  • tokenless:更新到 v0.4.0,开发 Hermes Agent 插件(Tool Ready 4 阶段环境预检 + History 压缩),Agent 运行时依赖在执行前被自动校验
  • agent-sec-core:更新到 v0.4.0,新增 PIIChecker 输出 PII 检测和 Skill Scanner 基线能力,用户免受 Agent 无意泄露敏感数据的风险
  • agentsight:更新到 v0.4.0,新增 Skill 维度指标展示,用户可按 Skill 查看 Token 消耗分组
  • os-skills:更新到 v0.4.0,纳入 Nightly 自动化测试覆盖,Skill 质量持续验证

[0.4] - 2026-05-13

组件版本

组件版本
copilot-shell2.3.0
agent-sec-core0.4.1
agentsight0.4.0
tokenless0.3.0
os-skills0.3.0
ws-ckpt0.2.0

重点特性

  • agent-sec-core:更新到 v0.4.1,建立 Skill 安全全生命周期管理(含 Prompt Scanner ask 策略),用户在 Agent 执行危险指令前收到确认提示
  • tokenless:更新到 v0.3.0,搭建 4 套 Benchmark 对比基线,开发者可量化评估不同 Skill/OS 环境的 Token 消耗差异
  • ws-ckpt:更新到 v0.2.0,扩展快照管理命令集,用户可按数量或时间维度自动清理历史快照

组件更新

  • agent-sec-core:更新到 v0.4.1,集成 Prompt Scanner 至 cosh hook 和 OpenClaw 插件(ask 策略),用户在危险操作前获得交互式确认
  • tokenless:更新到 v0.3.0,构建批量并发 Benchmark 平台并生成对比报告,开发者可一键跑分横向对比 Token 节省效果
  • agentsight:更新到 v0.4.0,优化常驻进程内存占用,2C2G 小规格实例可稳定运行可观测服务
  • copilot-shell:更新到 v2.3.0,适配 SWEBench 评测框架,开发者可通过 cosh 执行代码修复任务并验证通过率
  • ws-ckpt:更新到 v0.2.0,丰富快照增删查能力,用户可按策略自动保留最近 N 份快照

[0.3] - 2026-04-30

组件版本

组件版本
copilot-shell2.2.1
agent-sec-core0.3.0
agentsight0.3.1
tokenless0.2.0
os-skills0.3.0
ws-ckpt0.1.0

重点特性

  • tokenless:更新到 v0.2.0,交付命令重写和 TOON 上下文压缩,CLI 输出 Token 消耗降低 60–90%
  • agentsight:更新到 v0.3.1,新增 Token 节省 Dashboard 和 Agent 异常诊断,用户可可视化节省趋势并检测 Agent 中断
  • agent-sec-core:更新到 v0.3.0,新增 Skill Ledger 完整性追踪和 Prompt Scanner,每个 Skill 的签名链可端到端审计

新增组件

  • ws-ckpt:首次发布 v0.1.0,构建基于 btrfs 的工作区快照守护进程,Agent 可毫秒级创建检查点并即时回滚文件系统状态

组件更新

  • tokenless:更新到 v0.2.0,新增通过 RTK 的命令重写和 TOON 上下文压缩,Agent CLI 交互 Token 消耗减少 60–90%
  • agentsight:更新到 v0.3.1,新增 Token 节省 Dashboard(Session/时间段统计)和 Agent 中断检测(drain 机制),用户可监控节省趋势并在 Agent 故障时收到告警
  • agent-sec-core:更新到 v0.3.0,新增 Skill Ledger 全生命周期(check/certify/bypass/status/audit)和 Prompt Scanner 越狱检测,用户可追踪并强制执行 Skill 完整性策略
  • copilot-shell:更新到 v2.2.1,新增 Extension 架构(command extension + system Hook + 即时激活)、Skill 市场对接和会话导出(Markdown/HTML/JSON),用户可通过插件扩展 cosh 能力并导出对话历史
  • os-skills:更新到 v0.3.0,新增 Skill 市场上架和实用技能(xlsx/pdf-reader/image-gen/humanizer),用户可从市场发现并安装技能

[0.2] - 2026-04-15

组件版本

组件版本
copilot-shell2.0.4
agent-sec-core0.2.0
agentsight0.2.2
os-skills0.2.2
tokenless0.1.0

组件更新

  • agentsight:更新到 v0.2.2,新增 Token 消耗可观测(精确 Tokenizer 计量),用户可实时查看每条消息的 Token 明细
  • copilot-shell:更新到 v2.0.4,新增独立鉴权(STS/ECS RAM Role)和 Skill 市场浏览,用户无需 AK/SK 即可认证并发现可用技能
  • os-skills:更新到 v0.2.2,新增 SysAdmin 技能(Linux IO/网络/负载诊断),Agent 可独立诊断常见 OS 性能问题
  • tokenless:首次发布 v0.1.0,构建 Skills 级 Benchmark 测试用例,开发者可跨 Skill 量化对比 Token 消耗

[0.1] - 2026-03-30

组件版本

组件版本
copilot-shell2.0.1
agent-sec-core0.1
agentsight0.1
os-skills0.1

新增组件

  • copilot-shell:首次发布 v2.0.1,构建 AI 驱动终端助手(Tab 补全、/bash 模式、sudo、Hook 安全),用户开机即获得 AI 原生 CLI 交互体验
  • agent-sec-core:首次发布 v0.1,交付 Skill 签名校验、安全沙箱和系统加固,Agent 操作在受控最小权限环境中运行
  • agentsight:首次发布 v0.1,构建基于 eBPF 的零侵入可观测探针,用户无需修改 Agent 代码即可监控 LLM API 调用和 Token 消耗
  • os-skills:首次发布 v0.1,整理系统管理、SysOM 运维、DevOps 和云技能库,Agent 可自主执行常见 OS 操作

安全

  • Skill 全链路安全加密与数字签名
  • 硬件级安全沙箱风险隔离
  • Skill 调用身份认证与完整性校验

各组件详细变更日志请参阅:

用户入口

Token 节省

运行时

Agent 可观测

Agent 安全

变更日志

本文件记录 ANOLISA 的所有重要变更。

格式基于 Keep a Changelog, 版本号遵循 语义化版本。

[未发布]

[0.3.21] - 2026-11-02

新增

  • 执行 anolisa adapter enable <component> cosh 时,通过 cosh 原生注册表激活 托管扩展。状态检查验证所选用户来源和启用状态;禁用时只释放匹配的来源选择, 保留系统扩展和用户编辑过的文件。需要使用支持按身份条件清理来源选择的 cosh-ng 构建,并在启用或禁用后重启已有 cosh 会话;常驻会话的加载状态仍为 unknown (#9352)。

变更

  • 由 ANOLISA 的 RPM、预构建归档、npm 平台包和安装器数据包提供组件发现及集成 配置。RPM 安装和接管会保存这些配置供适配器管理使用,并能识别独立核心包。 移动安装目录时需将 CLI 的 bin/ 和 share/ 目录一起保留。通过 RPM 升级时, 需在同一次 DNF/Yum 事务中联合升级 ANOLISA 与所有已安装且仍拥有注册表文件的 旧组件包。已启用的仓库必须同时提供相互兼容的 CLI、组件包及其所需子包。 回滚时需恢复相互匹配的组件包和注册表数据 (#9222)。
  • 按所选安装布局渲染 Agent Memory MCP 的命令路径,支持含引号或反斜杠的路径, 同时保留其他 JSON 字段。Agent Memory 0.2.13 的 Raw 包需要 ANOLISA 0.3.21 或更高版本 (#9222)。
  • 将组件目录更新至 Agent Memory 0.2.13、AgentSight 0.15.1、cosh-ng 0.28.1、 OS Skills 0.6.4、agent-sec-core 1.1.2、SkillFS 0.5.5、Tokenless 0.9.2 和 ws-ckpt 0.6.1。

修复

  • 在 Raw 安装、更新、回滚、修复和卸载过程中保留 ANOLISA 的组件发现文件。 现有归档可在注册表已存在时正常安装;过时的文件归属记录不再将注册表变化 误判为组件损坏,也不会在清理时删除注册表。恢复隔离记录时同样适用。 不再安装注册表文件的新 Raw 包需要 ANOLISA 0.3.21 或更高版本 (#9351)。

[0.3.20] - 2026-10-29

新增

  • 为 Raw 制品的 anolisa install 新增 --no-deps 选项,支持与 --all 一起使用,让自行管理运行时依赖的用户跳过依赖检查与安装。安装成功后向 stderr 输出提醒,--quiet 下不显示;批量安装只要有组件实际安装成功, 就输出一次提醒。RPM 后端拒绝此选项,默认依赖处理行为不变 (#9126)。

变更

  • 将组件目录更新至 Agent Memory 0.2.11、AgentSight 0.15.0、 SkillFS 0.5.4 和 Tokenless 0.9.0。

修复

  • 当适配器状态查询或禁用(包括 dry-run)因路径超出框架允许目录而被拒绝时, 提供恢复指引。人类可读输出和 JSON 错误现在会提示检查框架目录配置与祖先 目录符号链接,并在目录被重定向时恢复原目录后重试。边界检查、安装记录保留 行为和退出码不变 (#9220)。

[0.3.19] - 2026-10-25

变更

  • 遥测和 anolisa register status 将容器部署识别为 container,避免继承宿主机的 云产品类型。读取 product_type 的程序需接受此新增值。/etc/anolisa-release 中 显式声明的 PRODUCT_TYPE 仍优先;构建容器镜像时需更新或移除过期声明 (#8206)。
  • 组件目录更新至 Agent Memory 0.2.10、AgentSight 0.14.3、cosh-ng 0.28.0、 Copilot Shell 2.8.0、OS Skills 0.6.3、SkillFS 0.5.3、Tokenless 0.8.8 和 ws-ckpt 0.6.0。

修复

  • 禁用 OpenClaw 和 Hermes skills 时保留用户新增或修改的文件;启用时拒绝写入 ANOLISA 不拥有的已有目录。祖先目录被重定向或成为悬空链接时停止清理并保留安装 记录,恢复原路径后可重试。没有逐文件归属信息的旧记录在通过相同路径检查后, 仍按整个目录清理 (#6221)。
  • 移动包含平台依赖的完整 npm 安装目录后,启动器仍可运行。已有安装可通过重新 执行 postinstall 获得相对路径启动器 (#8278)。
  • 遥测 enable、disable、link、unlink、upload 和 init 操作成功后遵循 --json, 同时支持 --quiet --json。标准响应包含对应操作的状态,警告仍写入 stderr (#8706)。
  • Raw 安装或更新遇到 CLI 无法执行的 hook 阶段时给出提示:非严格 hook 允许操作 继续,strict = true hook 则在下载或替换文件前拒绝操作。含不受支持 hook 声明 的旧安装仍可执行修复 (#6447)。

[0.3.18] - 2026-10-15

新增

  • 通过 anolisa adapter enable tokenless qwenwork 管理 QwenWorkCN macOS 本地模式的 Tokenless 插件。支持 QwenWorkCN 1.2.5,保留操作中断后的归属记录;已有脚本安装 需先卸载再由 CLI 接管。完成后重启桌面应用并在应用内检查激活状态;CLI 验证文件, 但加载与激活状态均报告为 unknown (#7368)。

变更

  • 组件目录中的 Tokenless 版本更新至 0.8.7。
  • 组件目录中的 Agent Memory 版本更新至 0.2.9。
  • 组件目录中的 SkillFS 版本更新至 0.5.2,可在兼容制品可用时识别 Linux ARM64 发布包。
  • 识别 ws-ckpt 的 Linux ARM64 发布包,并按预构建包布局查找 OpenClaw 和 Hermes 插件。

修复

  • Raw 更新在替换文件前拒绝与已安装组件冲突的新版本,保留原版本及其管理记录 (#7635)。
  • Raw 组件文件移除后仍可执行包内的 post-uninstall hooks;共享 hooks 保持原路径, 成功或失败后均清理临时 hook 副本,且不跟随暂存路径中的符号链接 (#6450)。
  • OpenClaw 安装在修改宿主前被拒绝,或已确认插件不存在时,可正常禁用并重试; 宿主状态无法核实时保留清理记录,重试中断后也能继续恢复 (#7197)。
  • 即使在 umask 077 下,新建安装目录也使用 0755 权限;保留已有目录及符号链接 目标的权限。
  • --repo 覆盖在获取仓库元数据前拒绝未展开的变量引用,并提示传入已解析的 URL。
  • sandbox 安装与 dry-run 预览执行相同的内核要求检查,保留显式 --force 预览, 并在报告计划成功前拒绝无效的要求格式 (#7294)。
  • 拒绝未知的旧版注册记录版本,保留原记录与同意状态,避免执行不受支持的迁移。

[0.3.17] - 2026-10-11

新增

  • OpenClaw 适配器启用新增 --no-accept-capabilities,可在安装和激活两个阶段 跳过自动 capability consent;该选项不撤销已有授权,也不启用 unsafe-install 覆盖权限(#3554)。
  • 组件目录增加 sec-core raw 后端,可在发布索引提供兼容制品时通过 raw 路径安装 (#6551)。

变更

  • 组件目录中的 SkillFS 版本更新至 0.5.1。
  • 项目仓库地址更新为 agentic-os-org/ANOLISA,修正源码构建的克隆目录指引。
  • 修正 Intel Mac 安装说明:官网安装脚本已同时接受 ARM Mac 和 macOS 11 及以上的 Intel Mac;预构建包和 npm 安装需要使用包含 darwin-x64 制品的版本。

修复

  • RPM 安装和预览在 preflight 检查前校验仓库后端配置,缺少配置时提前报错, 并保留显式仓库覆盖的行为。
  • 安装脚本只调整本次安装文件的权限,保留已有共享文件和目录的权限; 在 umask 077 下新建的安装路径也能正常访问。
  • npm 安装修复指向缺失目标的旧启动器,恢复 anolisa 命令可用性。
  • 归档安装准确匹配显式文件路径,避免选中其他同名文件;正确区分本地文件写入错误 与网络错误,避免无效下载重试。
  • 仓库 URL 在变量展开后再次校验,更新仓库配置时使用独立临时文件。
  • raw 仓库与自更新的终端错误不再泄露敏感 URL 信息。
  • 修正升级建议:CLI 自更新使用 anolisa update self,组件升级使用有效的 anolisa update <component> 命令。
  • Codex 各组件使用独立 marketplace 目录,避免相互覆盖;禁用插件时同步撤销 对应的 hook 信任。
  • Hermes 禁用操作失败时先核实宿主状态;插件仍启用时保留安装文件和管理记录, 便于重试。
  • 正确识别适配器父目录的路径别名,保留对最终插件链接的检查;仅采用绝对路径的 XDG_CONFIG_HOME。
  • anolisa logs --since <RFC3339> 按实际时间比较,正确处理时区偏移、小数秒和 包含边界的筛选。
  • 日志查询跳过损坏或截断的记录;追加日志前补齐上一条残缺记录的换行, 保留后续新记录。
  • 遥测续读轮转日志前核实文件身份;HTTP 408/429 上传失败可重试, 失败批次不推进读取偏移。
  • 收到 SIGTERM 后完成退出前的遥测处理,降低末批日志丢失风险;每轮重置可重试的 元数据获取状态,cloud-init 暂时失败可在后续轮次恢复。
  • 正确统计包含多个区间或单个编号的 CPU 列表。
  • hook 执行期间持续读取输出,避免管道堵塞造成误超时;privileged helper 在回复 关闭请求后能及时退出。
  • 修改注册状态时拒绝无法解析的 schema version;已有记录不可读时保留原记录及 同意状态。
  • 拒绝无效或溢出的内核版本要求,避免把错误要求视为已满足。
  • cosh-ng 故障报告指引明确要求在受影响的 cosh 会话内执行诊断。

[0.3.16] - 2026-09-23

新增

  • 为运行 macOS 11 或更高版本的 Intel Mac 新增 CLI 预构建压缩包和 @anolisa/cli-darwin-x64 npm 包。官网安装脚本仍仅支持 ARM Mac, Intel Mac 安装入口将单独开放 (#3448)。

变更

  • 组件目录将 Intel macOS 识别为 cosh-ng 的受支持目标, 使 ANOLISA 能够在兼容版本可用时解析对应发布包 (#3448)。

[0.3.15] - 2026-09-22

修复

  • RPM 安装的适配器现在可以校验并使用分散在已声明子包中的文件,包括适配器文件和共享 skills。缺失的软件包或无法校验的文件仍会阻止启用,避免接受未经验证的输入 (#3417)。
  • RPM 事务和升级预检错误现在会对原生包管理器诊断中的仓库凭据、路径和查询参数进行脱敏, 包括含空白字符的已配置 URL。保留 HTTP(S) 源站信息用于排查问题 (#3431)。

[0.3.14] - 2026-09-20

新增

  • 通过 anolisa adapter enable tokenless opencode、 anolisa adapter status tokenless 和 anolisa adapter disable tokenless opencode 管理 OpenCode 本地插件。可接管指向同一插件的已有链接,保留冲突的用户文件, 并支持重试中断的操作;通过 OPENCODE_CONFIG_DIR 支持自定义配置目录。 启用或禁用后需重启 OpenCode,运行时加载状态仍报告为 unknown (#3346)。
  • anolisa bug --component cosh-ng 现在会导出本地诊断包,并在 Markdown 和 --json 报告中附加健康检查结果与采集摘要。可通过 COSH_SHELL_BIN 覆盖已安装的二进制路径。采集失败时提供原因和手动重试命令; --dry-run 跳过采集,诊断包不会自动上传 (#3317)。

修复

  • anolisa bug --component <name> 现在可在用户模式下找到可见的系统级安装, 并从该安装所属作用域读取近期日志。跨作用域日志无法读取时会给出警告, 不再中断报告生成 (#3317)。

[0.3.13] - 2026-09-20

变更

  • RPM 安装、更新、卸载和依赖预检现在支持 Yum 3 与 DNF 4。 ANOLISA 优先使用 yum,仅在其不存在时使用 dnf;指定版本仍按精确版本处理, 遇到版本锁等系统限制时会报错,不再静默选择其他版本 (#3318)。
  • RPM 候选软件包查询现在直接读取并校验配置仓库的元数据,无需 dnf repoquery。 仓库访问遵循 /etc/yum.conf 中的代理和私有 CA 配置,该文件不存在时使用 /etc/dnf/dnf.conf。未配置 RPM 仓库时,本地软件包查询和 Raw 安装也可正常执行; 已配置仓库的错误仍会报告 (#3318、 #3353)。
  • Raw 安装发现组件没有适用于当前操作系统与架构的可安装产物时,现在会明确显示 请求的平台并列出已发布的其他平台,--json 错误也包含这些信息, 便于区分平台缺失与组件名称不存在 (#3326)。

修复

  • 运行依赖检查、自动安装依赖和 anolisa doctor 现在统一通过 ID 与 ID_LIKE 识别 RPM 和 Debian 衍生发行版。无法识别软件包体系时,会提供手动安装指引, 不再根据 PATH 选择无关的软件包管理器 (#3318)。
  • 云元数据收集遇到单个字段返回 HTTP 错误或空响应时,现在会继续读取其他字段, 保留遥测快照中仍可获取的实例信息。连接或传输失败时,仍会停止向不可达端点 发起后续查询 (#3308)。

[0.3.12] - 2026-09-16

变更

  • 以 root 身份运行 anolisa upgrade --dry-run 时,现在会通过系统依赖求解器 检查合并后的新增 RPM 安装集合,冲突会显示为错误。非 root 用户仍可预览, 但会明确提示尚未检查安装冲突;使用 sudo 重试并保留原有 --target 选项 即可执行检查 (#3294)。
  • 内置 ws-ckpt 适配器元数据现在要求 OpenClaw >=2026.2.13, 阻止在配置写入可能持久化展开后的环境变量值及运行时默认值的旧版宿主上启用适配器 (#3239)。

修复

  • anolisa adapter enable <component> openclaw 现在会在安装后显式激活插件, 恢复被上次卸载保留为禁用状态的插件。激活操作独立探测 capability 授权支持, --dry-run 也会显示激活命令 (#3223)。
  • Sandbox 安装和卸载现在以 DNF 退出状态判断成功与否,即使输出包含 “already installed” 或 “No match” 等文本也不会掩盖失败; 安装失败后不再继续后续配置阶段或记录成功 (#3226)。
  • RPM 软件包及文件归属查询现在区分明确缺失与数据库、命令执行失败, 避免错误地报告“未安装” (#3230)。
  • Raw 组件服务管理现在会报告 systemctl is-active 查询失败, 不再将其视为 unit 缺失;合法的 inactive、failed 等服务状态仍受支持 (#3240)。
  • RPM 查询失败,或系统软件包、语言运行时探测遇到权限、执行及信号终止错误时, 运行依赖检查现在会阻止自动安装依赖。anolisa doctor 会保留诊断信息, 引导检查探测失败,而不是建议安装被误判为缺失的依赖 (#3280、 #3285)。
  • Debian 运行依赖检查现在区分可用、缺失、安装未完成及查询失败状态。 安装未完成时需先手动恢复软件包状态,才能继续自动安装依赖;doctor 会引导检查 软件包状态。Multi-Arch 查询默认选择本机架构,除非依赖明确指定其他架构 (#3292)。

[0.3.11] - 2026-09-09

新增

  • 在两版组件目录中注册 ktuner,配置的仓库提供该软件包时,可在 Linux x86_64 上发现并通过 RPM 安装 (#2084)。

变更

  • 执行 anolisa adapter enable <component> openclaw 时,若宿主声明支持 --accept-capabilities,现在会接受插件声明的能力。 绕过不安全安装检查仍需要单独明确授权 (#3126)。
  • status 和 doctor 现在允许修改 Raw 安装的 type = "config" 文件内容, 包括从目录展开的文件,同时继续检查文件存在性、类型、路径安全、权限及 capabilities。旧状态会在已安装清单能够明确判定时恢复配置文件类型。 更新和卸载行为保持不变,执行这些操作前应备份编辑过的配置。 旧版 CLI 无法读取新的 kind = "config" 状态:降级前应备份状态, 将这些受管文件条目改为 kind = "file",恢复内容摘要检查 (#3142)。

修复

  • OpenClaw 卸载报告没有受跟踪的软件包时,若 plugins list --json 确认插件已不存在且诊断正常,适配器清理现在可以完成; 无法确认时保留清理归属记录,供后续重试 (#3118)。
  • 系统缓存不可写时,组件索引读取现在改用临时私有缓存, 使普通用户能够解析组件并进行预览,同时保留索引校验。 使用 DNF 4 的 RPM 安装预检仍需要 root 权限 (#3127)。
  • 全新 Raw 安装现在会在 post_install 和 post_enable hook 执行后 记录文件摘要,避免将 hook 写入的内容误报为损坏,并继续检测不可变文件的后续修改。 修复和更新仍恢复软件包内容,不会重新执行安装 hook (#3141)。
  • RPM 安装现在会在创建恢复日志前检查 DNF 冲突,覆盖 --dry-run 及合并的 install --all 事务,避免依赖求解被拒绝后留下虚假的待恢复操作。 使用 DNF 4 时,RPM --dry-run 需要加 sudo,检查可能刷新仓库元数据 (#3158)。
  • anolisa list 现在与安装使用相同的权威 RPM 软件包映射, 避免历史别名或过期的 provider 声明导致错误地显示组件已安装 (#3158)。
  • 对于仅留下恢复日志的待处理操作,anolisa forget 现在会引导执行 anolisa repair <component>,而不是报告没有可遗忘的记录,并保留恢复证据 (#3158)。

[0.3.10] - 2026-09-06

新增

  • 现在可通过 anolisa adapter 发现、启用、查看和禁用 QwenPaw 插件适配器。 安装包含 QwenPaw 适配器包的 Tokenless 后,可使用 anolisa adapter enable tokenless qwenpaw 启用。安装和移除均调用 QwenPaw CLI,并校验操作后的插件文件;移除失败时保留插件目录和操作凭据以便重试, 清理时使用启用时记录的工作目录 (#3075)。

修复

  • anolisa logs --limit N 现在按追加顺序选取最近 N 条匹配记录,并在结果中 将较早的记录排在前面,不再返回最早的匹配记录。因此,默认 50 条的限制在日志 增长后仍会显示近期活动;扫描已有日志时也不再阻塞新记录的追加 (#2618)。

[0.3.9] - 2026-09-02

新增

  • 已应用和失败的 anolisa update self 操作现会连同版本与应用模式上下文写入 中央操作日志。管理员可通过 anolisa logs 审计这些操作;生成的 bug report 仅包含失败记录,并会从已处理的更新 URL 中移除 credential;preview 与已是 最新版本的 no-op 仍不会写入日志 (#2994)。

变更

  • 新提供的 Raw repository 配置不再声明未使用的 cache_ttl_secs 和 offline_fallback setting。包含任一字段的现有配置仍保持兼容;Raw resolution 会继续获取当前 distribution index,并在 index 不可用时失败 (#3002)。

修复

  • 全局与命令级 sandbox uninstall dry-run 现都会显示计划中的 package 变更而不 实际应用;system mode 的 Telemetry mutation preview 会在权限检查或产生副作用 前返回 (#2922、 #2926)。
  • 没有 preview 实现的命令现会在 dispatch 前拒绝全局 --dry-run。Sandbox remove、kernel install 和 security install 会以 INVALID_ARGUMENT 拒绝两种 dry-run 写法,并确认没有执行任何操作,不再进入 mutation、权限检查或 not-implemented 路径 (#2952、 #2957、 #2961)。
  • 独立安装器现会检测 PATH 是否仍将 anolisa 解析到另一份安装,报告新旧路径 与版本,并提供可直接执行的 PATH 修复命令或对应的 npm/Homebrew 卸载命令, 不再输出无条件的成功提示 (#2944)。

[0.3.8] - 2026-08-26

新增

  • 带 tag 的 ANOLISA Release 现会提供经过验证的 Linux x64、Linux arm64 和 macOS arm64 CLI 预编译归档。用户可直接从 GitHub Release 下载各受支持 target 的独立 binary 归档 (#2883)。

修复

  • Raw 安装现会在渲染 file content 时保留供 shell 与 systemd 消费的 ${VAR} reference,同时继续展开嵌套的 ANOLISA layout placeholder,并拒绝 destination path 中的 environment reference。anolisa install cosh-ng --backend raw 现可安装 gateway service template,不再将其由 EnvironmentFile= 提供的 workspace reference 误判为 unknown placeholder (#2903)。

[0.3.7] - 2026-08-25

变更

  • 源码构建与 RPM 构建现要求 Rust 1.93,rustup toolchain 固定为 1.93.1, Cargo dependency resolution 同时受声明的 MSRV 约束。构建者可使用 Alibaba Cloud Linux 4 打包的最新 compiler,且 Cargo 不会选择超出受支持 compiler 的 dependency;更早的 Rust toolchain 需要升级 (#2810)。

修复

  • anolisa --dry-run restart <component> 现会列出将要重启的 unit,但不会调用 systemctl daemon-reload 或 systemctl restart。System mode 预览会读取已记录 状态而不获取 exclusive install lock,因此不再要求对 state root 拥有写权限 (#2774)。

[0.3.6] - 2026-08-22

修复

  • anolisa --quiet adapter scan 和 anolisa --quiet adapter status 现会 抑制所有非错误的人类可读输出,包括空状态提示与结果表格;--json 仍会输出 标准响应封装。Agent 可依赖 quiet 模式的 adapter 检查不产生人类可读输出 (#2752)。
  • anolisa --dry-run forget <component> 现会与真实执行一样,以 INVALID_ARGUMENT、退出码 2 和 adapter disable 指引,拒绝仍有已启用 adapter 的 component。预览不再误报无法执行的 forget 会成功,同时仍会忽略 无关 component 的 adapter receipt (#2762)。

[0.3.5] - 2026-08-20

修复

  • 卸载声明 bare systemd service template 的组件时,ANOLISA 现会通过 name@*.service 停止所有已加载实例,再禁用声明的 name@.service template。 基于 template 的 service 不会在 anolisa uninstall 后继续运行;单个实例停止 失败仍会以 warning 呈现,而不会阻止后续清理 (#2603)。

[0.3.4] - 2026-08-19

变更

  • 面向组件的命令现将 repository component index 作为 local state 中不存在的 名称的唯一身份权威。已安装和 recovery identity 在离线时仍可使用;不支持的 名称返回 INVALID_ARGUMENT,index 不可用返回 EXECUTION_FAILED,而 NOT_INSTALLED 现可明确表示受支持的组件尚未安装。--repo override 同时决定 整个 invocation 的 identity 与 package selection,因此 site-local package mapping 和 RPM Provides metadata 不再能创建 index 未识别的组件名称 (#2637)。

修复

  • 本地 Raw repository index 缺失时,错误信息现会指出 active repository 来自 具体的 repo.toml path 还是一次性的 --repo override,并提供对应的 recovery guidance。用户无需再猜测缺失 repository 由哪个配置来源指定 (#2650)。

[0.3.3] - 2026-08-18

新增

  • Telemetry instance snapshot 现会将检测到的 Docker、Podman、containerd、 Kubernetes cgroup 或 LXC runtime 写入 instance.container,bare-metal host 则省略该字段。这为下游 deployment statistics 与 troubleshooting 提供 container-aware signal,同时不会采集 container 或 pod identity (#2642)。

变更

  • anolisa status <component> 现会依据 component index 验证新 target、解析 package alias,并为不支持的名称提示 anolisa list,同时将 telemetry service target 引导至 anolisa telemetry status。Repository metadata 不可用时,仍可 检查已精确记录的 installed identity (#2626)。

修复

  • Raw adapter bundle 安装现会保留 archive 中每个 file 的 mode,并记录 effective mode 供 integrity check 使用。Framework hook 与 script 不再统一按 data file 安装,可继续保留 executable bit (#2619)。

[0.3.2] - 2026-08-17

新增

  • ANOLISA 现为 plugin bundle 提供原生 DSH adapter driver。 anolisa adapter enable <component> dsh --profile <name> 支持重复指定 profile、验证 bundle identity、将 profile 变更委托给 DSH,并记录 enable 时的 DSH home,使 status、disable 和 re-enable 在 DSH_HOME 或 working directory 变化后仍针对相同 profile。降级到更早的 ANOLISA release 前需先 disable DSH adapter (#2580)。
  • anolisa logs --level <LEVEL> 现为已有 --severity option 的可见别名, 使用相同的 validation 和 filtering behavior,同时 severity 仍为 canonical JSON field (#2558)。

变更

  • anolisa list 和 anolisa install --all 现依据 schema v2 components-v2.toml 中精确的 OS 与 architecture target 判断 component availability。JSON output 以 targets 和 target_available 取代 platforms 和 platform_available;repository publisher 必须在保持 v1 index 不变的同时部署 v2 index (#2533)。

修复

  • anolisa --dry-run install 现优先读取 resolved Raw artifact 旁的 meta.toml,仅在该 sibling file 不存在时回退到 version-level metadata。 Preview 现会验证所选 target 的 contract,并拒绝损坏的已发布 metadata, 不再掩盖错误,同时仍不会下载 artifact (#2551)。
  • System-helper status 现会在 systemctl 无法启动时报告 unknown,仅在 unit 的实际状态为 failed 时报告 failed (#2604)。

[0.3.1] - 2026-08-13

修复

  • Adapter discovery 现会忽略未声明的共享 resource directory,除非 contract、 receipt 或内置 framework driver 将其识别为实际 adapter。Tokenless common hook 等共享 asset 不再于 adapter scan 和 status output 中显示为不支持的 framework (#2502)。

[0.3.0] - 2026-08-12

修复

  • Adapter enable、status 和 update 现基于 ANOLISA-owned Raw file 或 native package metadata 派生 adapter revision,不再对整个 resource tree 计算 hash。 Runtime cache 与其他 unowned file 不再造成错误 drift,也不会被复制到 framework; 已变化的 package-owned input 会在 framework mutation 前阻止 enable,metadata 不可用时则报告为 unknown 状态 (#2419)。
  • Re-enable adapter 现仅删除旧 receipt 记录的 stale materialized file,保留 runtime-created file,通过 --dry-run 预览 cleanup,并在 directory-to-file replacement 会丢弃 runtime data 时保留旧 receipt (#2438)。

[0.2.20] - 2026-08-11

变更

  • anolisa list 现显示检测到的 host platform,并在 human-readable output 中以 component availability 取代 backend 和 ownership column。不支持当前 host 的 component 仍会显示其支持的 platform,且不提供 install action;JSON 新增 platforms 和 platform_available,同时保留 backend 与 ownership metadata (#2367)。

修复

  • npm 安装现由 @anolisa/cli 独占公开的 anolisa executable。在 npm 10 下, 本地安装可稳定创建 node_modules/.bin/anolisa,不再因 platform package 参与 链接而丢失该 command (#2345)。

[0.2.19] - 2026-08-10

修复

  • 在 Raw 安装准备系统依赖时,现会将 resolver 提供的 rpm 和 deb package-family hint 直接映射到相应的 package manager backend。在缺少可选 which command 的最小化受支持主机上,不再仅因此报告不支持 package base, 同时保持对 distro-specific hint 的兼容 (#2314)。
  • anolisa --json osbase sandbox list 和 anolisa --json register status 现使用标准 success envelope,包含 ok、 schema_version 和 command metadata,并将业务字段嵌套在 data 下。脚本现可 与其他 JSON surface 一致地解析这些 legacy command (#2319)。
  • OpenClaw adapter 现以 OpenClaw 兼容的 whitespace、tilde 和 absolute-path 处理方式遵循 OPENCLAW_STATE_DIR,使 plugin、skill、receipt、status 和 disable 操作都使用配置的 state。Re-enable 会安全迁移 legacy fallback 下记录的 resource,在 cleanup 需重试时保留旧 receipt,并在 --dry-run 中预览迁移。若旧 receipt 使用的 OPENCLAW_HOME 当前已不在 environment 中,迁移或 cleanup 前需 临时恢复该变量 (#2337)。

[0.2.18] - 2026-08-06

变更

  • Telemetry 上传现将 SLS_PROJECT_PREFIX 视为 SLS project prefix,并附加 检测到的 region,例如 anolisa-cn-hangzhou。设置旧 SLS_PROJECT 的部署 必须迁移至 SLS_PROJECT_PREFIX,以便将数据上传到相应 region 的 project (#2260)。

修复

  • Raw 安装现仅将选中的 archive payload 通过私有、disk-backed staging 流式 处理,不再将解压后的内容保留在内存中。大型 package 可以使用有界的 payload 内存完成安装,同时保留 atomic placement、rollback、cleanup 和 digest verification (#2250)。
  • anolisa status 和 anolisa doctor 现会 hash 最大 2 GiB 的 ANOLISA-owned file,并将更大的 file 视为未检查和 degraded,而不是 failed。包含大型 artifact 的完整组件不再显示为损坏或触发多余的 repair,同时在必须完成 verification 的 recovery 场景中仍会 fail closed (#2271)。
  • Enable 声明了 hook 的 Codex adapter 时,现会发现已安装 plugin 的 hook identity,并以 atomic 方式持久化其 trusted hash,使 non-interactive codex exec session 可以运行这些 hook。缺失 hook 或被覆盖的 trust setting 会以可操作的诊断信息中止 enable (#2281)。

[0.2.17] - 2026-08-05

新增

  • Raw 安装现可在放置声明的文本文件前渲染其中的 {bindir}、{datadir} 等 layout placeholder,使共享的软件包模板遵循所选安装 scope 与 prefix。 完整性检查和 repair 使用渲染后的字节 (#2222)。

变更

  • Raw repository 解析现会在已发布时优先使用第二代 index,并强制检查各组件的 CLI 最低版本。不兼容的条目会给出 anolisa update self 提示并失败,而不会 静默安装较旧或格式错误的结果,同时保持对第一代 repository 的兼容 (#2222)。
  • RPM-backed adapter 的 scan、status 和 enable 操作现使用声明的软件包自有 resource root;root 缺失或无效时会明确报告,而不会回退到过期的 raw 文件。 目标位于外部 RPM root 的 Codex adapter 会记录 trust anchor;降级到 0.2.16 前需先 disable 这些 adapter (#2222)。

修复

  • Qoder native plugin bundle 现使用 Qoder 自身的 plugin lifecycle,不再按 legacy hook bundle 复制或改写。User scope 和 project scope 中已有的同 ID plugin 会受到保护;无法确认的安装或移除会保留可重试的 receipt,而不会认领或 删除用户状态 (#2221)。

[0.2.16] - 2026-08-03

新增

  • 成功执行的 anolisa update <component> 和 anolisa update all 现会报告 resource bundle 已变化的 adapter,并给出准确的 anolisa adapter enable ... 或 anolisa adapter status ... 后续命令。JSON 响应通过稳定的 adapter_actions 数组提供同样的信息 (#2018)。

修复

  • 在同时缺少 RPM 工具和 RPM database 的 Debian 系发行版上,system scope raw 安装不再因 rpm not found on PATH 而失败。如果已有 RPM database, 或安装期间新出现 RPM database,仍会在任何文件变更前停止 raw 安装 (#2061)。

[0.2.15] - 2026-07-30

新增

  • 交互式 anolisa install、anolisa install --all 和 anolisa uninstall 现会在耗时的规划与执行阶段显示分阶段进度。支持 ANSI 的终端会动态显示当前阶段, 能力受限的交互式终端则输出静态阶段提示 (#2036)。

变更

  • 面向用户的失败信息现采用常规的 error: 和 hint: 标签,不再显示机器错误码; --json 仍保留结构化错误码,退出状态保持不变。
  • 更新通知现会为建议运行的 sudo anolisa upgrade 和 anolisa update --check 命令加上引号,使命令边界更加清晰。

[0.2.14] - 2026-07-29

修复

  • anolisa status 和 anolisa doctor 现可检测 raw 托管文件的 Unix mode 与 Linux file capability 漂移(包括由旧版本记录的安装),并建议运行 anolisa repair 进行恢复。
  • anolisa repair 现会在仅文件元数据漂移时重新部署 raw 托管组件,恢复声明的 mode 和已确认的 capability。更新失败后的回滚仅恢复操作前已确认生效的 capability,避免授予原安装中未成功应用的可选 capability (#1987)。

[0.2.13] - 2026-07-28

新增

  • @anolisa/cli npm 软件包现支持 macOS arm64,并在安装时选择匹配的原生二进制。
  • Tokenless adapter 现支持 Qwencode,同时保持 Cosh extension 与共享 hook 资源相互独立。

修复

  • raw 安装现拒绝 provision 被另一个 pending RPM 安装占用的系统软件包,并引导用户运行 anolisa repair,避免组件相互占用或在后续移除对方的依赖。
  • cosh-ng RPM 安装现保留 cosh-ng 组件身份。以 cosh 保存且可明确识别的旧记录和 recovery journal 会被修复,使 lifecycle 命令操作正确的组件。
  • raw 更新和修复失败后的回滚现会恢复文件权限和 capability,确保恢复的二进制仍可执行。
  • 启用 Tokenless Qoder adapter 时,现会解析缓存 plugin 中的共享 hook 路径,避免匹配的 tool call 因 hook 命令路径错误而失败。

[0.2.12] - 2026-07-27

变更

  • 对已安装组件执行操作的命令在目标缺失时现报告 NOT_INSTALLED,不再报告 INVALID_ARGUMENT,调用方无需解析错误消息即可区分“没有可操作的目标”和“调用方式错误”。 该错误码仅表示状态缺失,不表示组件名称是否有效;影响 uninstall、update、repair、 forget、restart 和 adapter,退出码仍为 2 (#1915)。

修复

  • adapter 状态检查现忽略空的或不完整的过期源目录,并将缺失 bundle 报告为 degraded; raw 卸载会清理空目录,避免遮蔽其他安装 scope (#1850)。
  • raw 安装 dry-run 现会在执行前校验组件冲突,使预览结果与实际安装保持一致。仓库缺少 轻量 sidecar 元数据时会提示已跳过冲突校验 (#1898)。

[0.2.11] - 2026-07-24

新增

  • raw anolisa install --version 现可安装指定的已发布组件版本。
  • raw anolisa install --version 输出现显示请求版本、解析版本、制品地址和来源。

变更

  • 请求的 raw 版本不可用时,anolisa install --version 现列出已发布版本。

修复

  • 请求的 raw 版本不可用时,anolisa install --version 不再安装其他版本。
  • 包含大量文件的 raw 组件卸载速度更快,写入量显著降低。
  • 操作恢复数据缺失或损坏时,恢复流程现会保留已安装状态。

[0.2.10] - 2026-07-23

新增

  • anolisa telemetry 现可启用或停用数据收集。
  • anolisa telemetry 现可关联或取消具名上报。
  • anolisa telemetry status 现以文本或 JSON 显示收集和具名上报状态。
  • adapter 启用和停用命令现显示组件提供的后续提示。
  • adapter JSON 输出现包含结构化组件提示。
  • anolisa install --version JSON 输出现包含请求版本、解析版本、来源及精确 RPM。

变更

  • 全新 ANOLISA RPM 安装现默认启用匿名遥测。
  • RPM 安装输出现说明如何停用遥测。
  • 已启用的遥测现会在支持的主机重启后自动恢复。
  • anolisa register 现提示该命令已弃用。
  • anolisa register 现无需确认即可启用遥测。
  • anolisa register status 现引导使用 anolisa telemetry status。
  • anolisa unregister 现停用遥测并保留本地日志。
  • anolisa install --version 现精确选择与请求版本匹配且兼容本机的 RPM。
  • anolisa install --dry-run --version 现验证可用性并显示解析后的 RPM 详情。
  • adapter dry-run 现预览组件提示且不更改主机。
  • adapter quiet 输出现隐藏组件提示。

修复

  • anolisa register 现避免旧遥测配置重复上传。
  • anolisa unregister 不再让旧遥测配置继续上报。
  • anolisa install --version 在请求版本不可用或不兼容本机时不再更改主机。
  • anolisa install --version 安装到其他 RPM 版本时不再记录成功。
  • anolisa repair 现拒绝已装版本偏离原请求的中断 RPM 安装。
  • anolisa repair 现报告中断 RPM 安装的架构无法验证。
  • anolisa adapter disable 现可在组件文件不可用时显示已保存提示。
  • adapter 提示不再能向可读输出注入终端格式。

[0.2.9] - 2026-07-22

新增

  • anolisa update all 现更新全部已跟踪的 raw 与 RPM 组件,不更新 CLI。
  • anolisa repair 现可按记录版本恢复损坏的 raw 安装。
  • anolisa repair 现支持无 root 权限修复 user scope 安装。
  • anolisa repair 现可恢复中断的安装、更新、采纳、卸载和批量操作。
  • anolisa repair 现可重装缺失的托管 RPM 软件包。
  • anolisa status 现将不明旧记录标为需处理,并给出按 scope 修复或遗忘的指引。
  • anolisa status 与 anolisa doctor 现按安装时保存的组件清单执行健康检查。
  • user mode 的 adapter 命令现可作用于可见的 system 安装。
  • anolisa repair 现可根据已安装软件包或完好文件恢复不明旧记录。
  • anolisa forget 现可仅删除不明旧记录,不改动已安装内容。

变更

  • anolisa install 遇到未托管的 system RPM 时现会拒绝,并提示使用 anolisa adopt。
  • 已跟踪组件再次执行 anolisa install 时现直接成功,不再重复安装。
  • anolisa adopt 现允许更新既有 RPM,卸载软件包仍需显式授权。
  • 已采纳软件包再次执行 anolisa adopt 时现直接成功。
  • 仅观察的 RPM 组件现须先执行 anolisa adopt 才能更新。
  • anolisa install --all 现用一次软件包事务安装全部新 RPM。
  • anolisa upgrade 现用一次软件包事务完成全部 RPM 更新。
  • anolisa upgrade 现用一次软件包事务安装全部计划内 RPM。
  • anolisa list 与 anolisa status 现分别显示同名组件的 user 和 system 记录。
  • anolisa list 现将记录标为 owned、managed、adopted 或 observed。
  • anolisa --install-mode user install 现可在 system 安装旁创建独立 user 安装。
  • 生命周期修改现严格限制在所选 scope,软件包别名也不例外。
  • 首次修改旧状态时现自动升级格式,并保留 installed.toml.v4.bak。
  • 遇到新版状态格式时现会报错,不再显示为空状态。
  • install-anolisa.sh 现由 CLI 获取分发索引,以使用镜像最新数据。
  • install-anolisa.sh 现仅部署 OS-base 清单,组件清单改为按需获取。
  • install-anolisa.sh --strict 现仅校验二进制和清单包。
  • ANOLISA_INDEX_URL 与 ANOLISA_INDEX_SHA256 现不再影响安装脚本。
  • 安装、采纳、更新、修复和卸载的 JSON 输出现包含明确执行计划。
  • raw 与 RPM 组件的卸载 JSON 现统一格式,并包含删除方式和计划。
  • anolisa uninstall --dry-run 遇到缺失组件时现会报错,不再返回空成功计划。
  • 组件存在待恢复操作时,anolisa forget 与 anolisa restart 现会停止。
  • anolisa doctor 现会报告没有活动组件记录的未完成操作。

修复

  • RPM 托管组件不再因 raw 安装健康检查被 status 或 doctor 误报失败。
  • RPM 组件更新现会先刷新已保存组件清单,再报告成功。
  • RPM 清单刷新未完成时,anolisa logs --severity warn 现可检索该操作。
  • RPM 更新中断后现保持可修复,不再以过期设置显示成功。
  • anolisa doctor 遇到损坏或不明确的恢复数据时不再建议生命周期命令。
  • 多个组件共用状态目录时,anolisa doctor 不再重复报告恢复问题。
  • anolisa doctor --help 现明确说明 --fix 尚不可用。
  • 批量 RPM 操作失败后,已变更软件包现会保留可修复状态。
  • 组件别名不再将生命周期修改导向其他 scope 的安装。
  • 跨 scope 健康检查现使用正确的 user 服务管理器。
  • 批量 RPM 操作失败后,未受影响组件现会单独重试。

[0.2.8] - 2026-07-21

新增

  • anolisa adapter enable 现支持以 --allow-unsafe-plugin-install 显式授权 OpenClaw 不安全插件安装。
  • OpenClaw 适配器设置现可限定适用的 OpenClaw 版本。

变更

  • anolisa adapter enable 现会在执行任何更改前检查 OpenClaw 兼容性。
  • anolisa adapter enable 现会确认 OpenClaw 插件已加载后再报告成功。
  • OpenClaw 阻止不安全插件时,ANOLISA 现会显示检查结果。
  • OpenClaw 支持显式授权时,安全错误现会提示授权重试。

修复

  • OpenClaw 设置更新失败后,现可保留受影响设置供重试。
  • 重新启用 OpenClaw 适配器时,不再丢失此前已应用的设置记录。
  • anolisa adapter disable 现会提示更新结果不确定且可能残留的 OpenClaw 设置。

[0.2.7] - 2026-07-18

新增

  • anolisa adapter 现可通过 qwen CLI 管理 Qwen Code 0.17 及更高版本的扩展。

变更

  • anolisa upgrade 和 anolisa repair 现会在人类可读和 JSON 输出中说明组件清单同步。

修复

  • anolisa upgrade 现会在 RPM 软件包升级后刷新组件清单。
  • anolisa upgrade 现可同步版本号未变的 RPM 组件清单变更。
  • anolisa repair 现会从已安装的 RPM 刷新过期组件清单。
  • 组件清单刷新失败时,现会保持 RPM 组件可修复并报告受影响组件。

[0.2.6] - 2026-07-16

修复

  • anolisa status 不再误报正常 RPM 组件失败。

[0.2.5] - 2026-07-14

新增

  • anolisa repair 现可恢复软件包安装后中断的首次 RPM 安装。
  • anolisa update --check 现会报告已保存状态需要同步的 RPM 组件。

变更

  • 安装、接管和升级命令现会先要求修复中断的 RPM 安装。

修复

  • 并发 RPM 安装现会安全失败,不再覆盖其他操作的组件状态。
  • 重装缺失的 ANOLISA 托管 RPM 时,现会保留组件设置和历史记录。
  • anolisa uninstall --dry-run --json 现包含 dry_run: true,且未安装组件不再显示删除阶段。
  • anolisa upgrade 现会在升级后刷新已保存的 RPM 版本和软件包信息。
  • anolisa upgrade 现可同步缺少软件包信息的旧版 RPM 记录。

[0.2.4] - 2026-07-13

新增

  • 交互终端中,anolisa update --check 现会在检查更新时显示进度。
  • 交互终端中,anolisa upgrade 现会在规划和执行升级时显示进度。

修复

  • Raw 组件安装和更新现可在同时存在二进制发布包时选中可安装归档包。

[0.2.3] - 2026-07-12

变更

  • 软件包安装和卸载进度现输出至标准错误,避免干扰重定向结果。

修复

  • 下游管道提前关闭标准输出时,ANOLISA 命令现可正常退出。
  • 标准输出写入失败时,ANOLISA 命令现会报错而非静默成功。

[0.2.2] - 2026-07-09

新增

  • anolisa update --check 现可只读报告 RPM 升级机会。
  • anolisa update --check --motd 现可输出简短登录升级提示。
  • anolisa upgrade 现可应用 RPM 工具链升级。
  • anolisa upgrade 现可安装目标配置缺失默认组件。
  • anolisa adapter scan 现将缺失来源的启用记录标为 orphaned。
  • anolisa adapter status 现将缺失适配器来源报告为降级。

变更

  • anolisa list 现显示可见用户和系统记录的 scope。
  • anolisa status 现显示 scope、可变性、遮蔽和状态路径。
  • anolisa doctor 现在用户模式诊断可读系统组件。
  • anolisa doctor 现为只读系统记录建议系统模式命令。
  • anolisa update --check 未指定 --target 时使用最新目标配置。
  • anolisa update --check --motd 现提示用 sudo anolisa upgrade。

修复

  • anolisa uninstall、forget、update 现拒绝只读系统目标。
  • anolisa upgrade 现将未解析默认组件报告为检查错误。
  • anolisa upgrade 刷新 RPM 详情失败时现会提示。

[0.2.1] - 2026-07-08

新增

  • anolisa adapter enable 现支持 cosh、Codex、Claude Code 的 Tokenless 适配器。
  • anolisa adapter enable 现支持 Qoder Tokenless 适配器。

变更

  • Claude Code 适配器现使用组件专属 marketplace。
  • anolisa adapter enable 现先拒绝无效适配器类型。

修复

  • Codex 适配器现可使用已打包数据目录资源。
  • Qoder 启用遇到损坏 settings.json 时不再覆盖。
  • Qoder 禁用现只移除 ANOLISA 添加的 hook。
  • Qoder 适配器现优先使用稳定版 qodercli。

[0.2.0] - 2026-07-07

新增

  • Raw 组件现可声明 conflicts 阻止不兼容安装。

修复

  • anolisa install 现会在变更主机前拒绝 Raw 组件冲突。
  • anolisa install --dry-run 现报告 Raw 组件冲突,不再显示无效计划。

[0.1.20] - 2026-07-03

新增

  • ANOLISA 现可通过 @anolisa/cli 发布 Linux x64 和 arm64 二进制。
  • repo.toml 现启用 npm 后端用于组件分发。

变更

  • anolisa list 现显示本地状态、归属和下一步操作。
  • anolisa list --json 现包含 RPM 包名、版本、架构和来源。

修复

  • RPM 安装和更新现可继续使用系统软件源解析依赖。
  • Adapter 命令现区分缺失清单和无效清单。

[0.1.19] - 2026-07-02

修复

  • anolisa adapter disable --dry-run 现只预览清理。
  • 只读命令保存 repo.toml 失败时仍可使用已下载配置。
  • 组件命令现可一致接受软件包别名。
  • 模糊软件包别名不再误选已安装组件。
  • 未知组件名不再先查询软件包。

[0.1.18] - 2026-07-01

新增

  • anolisa install 系统模式现自动安装缺失系统包。
  • anolisa install --dry-run 现标出依赖处理方式。
  • anolisa install 现显示自动安装的系统包。
  • anolisa status --verbose 现显示组件自动安装包。

变更

  • 需要仓库的命令现首次使用会下载 repo.toml。
  • 仓库配置 dry-run 现只校验不写入。
  • RPM 安装和更新现只使用 repo.toml 源。
  • 用户模式 raw 安装现先提示缺失依赖。
  • raw 安装失败现提示已保留的自动安装包。
  • anolisa update self 不再预先获取仓库配置。

修复

  • anolisa list --installed 现包含已收编 RPM。
  • anolisa list 现显示 adopted、failed、disabled 状态。
  • Adapter 命令现优先使用契约所在数据目录资源。
  • 缺少 [backends.rpm] 时 RPM 安装不再调用 dnf。
  • RPM 更新缺少 [backends.rpm] 时不再使用主机源。

[0.1.17] - 2026-06-30

新增

  • 仓库 components.toml 现可声明组件与包名映射。
  • anolisa list --installed 现过滤已安装组件。

变更

  • anolisa list 和 install --all 现读取 components.toml。
  • anolisa list 现显示 NAME、SUMMARY、BACKENDS、STATUS。
  • anolisa list --enabled 现作为隐藏别名保留。
  • ANOLISA_CATALOG_URL 不再控制列表来源。
  • install、status、adopt、repair 现解析 RPM 包别名。
  • anolisa status 现提示用 sudo anolisa adopt 收编 RPM。

修复

  • status <RPM 包> 现显示规范组件行。
  • repair <RPM 包> 现刷新规范组件行。
  • 非 root osbase 变更命令现可进入系统 helper。
  • root 用户模式现会在写入前被拒绝。
  • 缺少 sudo 的系统模式写入现提前失败。
  • 旧符号链接安装不再误报完整性失败。
  • status 现报告符号链接目标不匹配。

[0.1.16] - 2026-06-29

新增

  • anolisa osbase sandbox install runc 现安装 runc、containerd、Docker 和客户端。
  • anolisa osbase sandbox install 现启用场景声明的服务。
  • anolisa osbase sandbox install 现执行场景安装校验。
  • anolisa osbase sandbox install 现记录沙箱安装状态。
  • anolisa osbase sandbox install 现提示可选场景包。
  • rund、firecracker、gvisor 场景现声明安装校验。
  • anolisa adapter enable 现支持 adapter_type = "skill_bundle"。
  • RPM 包现安装默认 /etc/anolisa/repo.toml。
  • ANOLISA 遥测现为 .jsonl 运维日志配置轮转。

变更

  • anolisa osbase sandbox install --dry-run 现显示五个安装阶段。
  • anolisa osbase sandbox install runc 现要求 Linux 4.18 及以上。
  • anolisa osbase sandbox install 校验失败现作为警告报告。
  • repo.toml 默认 RPM 源现指向 agentic-os 路径。
  • anolisa update self --json 现包含 RPM 包和版本信息。
  • anolisa adapter status 现不要求技能包注册插件。
  • anolisa adapter enable 现拒绝带配置的技能包。

修复

  • RPM 相关命令现默认用组件名作为包名。
  • anolisa update self 现通过 dnf 更新 RPM 安装。
  • 非 root 沙箱安装现显示完整阶段结果。
  • ilogtail 安装脚本需 bash 时现能正常运行。
  • anolisa adapter disable 清理技能包时不再报插件卸载错误。

[0.1.15] - 2026-06-25

新增

  • anolisa doctor 现输出组件健康、依赖和修复建议。
  • raw 组件现可声明运行依赖供安装和更新检查。
  • anolisa install --dry-run 现预览 raw 组件依赖状态。

变更

  • anolisa install 和 update <component> 缺依赖时先停止。
  • anolisa restart <component> 现重启 RPM 组件服务。
  • anolisa restart <component> 遇到 RPM 模板服务时给出指引。

修复

  • anolisa adapter enable 现按包内元数据展开 {datadir}。
  • anolisa uninstall 和 forget 后 adapter 不再见旧元数据。

[0.1.14] - 2026-06-24

新增

  • raw 组件现可用 {unitdir} 放置系统单元。
  • raw 组件现可用 {userunitdir} 放置用户单元。
  • 用户模式 anolisa install 现会激活用户服务。

变更

  • 用户模式 anolisa install 现将 %u 展开为当前用户。
  • 系统模式 anolisa install 现保留 %u 用户模板。
  • anolisa uninstall 删除单元文件后现会重载 systemd。
  • anolisa restart <component> 现会重启用户服务。

修复

  • anolisa install 现无需手动重载即可启动新单元。
  • anolisa uninstall 现会停用用户模式安装的服务。
  • anolisa adapter enable 现从包目录查找 {datadir} 技能。

[0.1.13] - 2026-06-23

新增

  • anolisa adapter enable 现支持 Hermes 插件。
  • anolisa adapter enable 现安装声明的 OpenClaw 技能。
  • anolisa adapter enable 现写入声明的 OpenClaw 配置。
  • anolisa install 现启动 raw 组件声明的服务。
  • anolisa install 现设置 raw 组件声明的文件能力。
  • anolisa install 现执行 raw 组件声明的钩子。
  • anolisa update <component> 现重启 raw 组件声明的服务。
  • anolisa update <component> 现重设 raw 组件声明的文件能力。
  • anolisa uninstall 现执行 raw 组件卸载钩子。
  • anolisa uninstall 现停用已停止的声明服务。

变更

  • anolisa adapter scan 现按声明位置查找资源。
  • anolisa adapter enable 现读取包内适配器资源。
  • anolisa install --dry-run 现预览 raw 文件能力。
  • anolisa register status 现显示最新注册记录。
  • 取消 anolisa register 或 unregister 不再报错。

修复

  • anolisa adapter status 现能识别换行的 OpenClaw 表格。
  • anolisa adapter status 检查 Hermes 时忽略内置插件。
  • anolisa adapter 现能找到 RPM 组件附带的元数据。
  • anolisa register status 现显示 sysom 控制台注册。

[0.1.12] - 2026-06-22

新增

  • anolisa update <component> 可更新 raw 组件。
  • anolisa osbase sandbox list 可显示 sandbox.toml 场景。
  • anolisa osbase sandbox uninstall <scenario> 可移除场景软件包。
  • anolisa system setup 可为非 root osbase 命令安装助手服务。
  • anolisa system status 可显示助手健康状态。
  • anolisa system teardown 可移除助手服务和沙箱配置。
  • anolisa env --json 现包含发行版身份字段。

变更

  • anolisa osbase sandbox install <scenario> 现按 sandbox.toml 安装场景。
  • 未指定 --install-mode 时,root 用 system,普通用户用 user。
  • anolisa update <component> --dry-run 现显示 raw 候选版本。

修复

  • 旧 yum 后端名现会作为 rpm 处理。
  • 用 --package 安装的 raw 组件更新时复用包名。
  • anolisa update <component> 不再允许 raw 降级。
  • anolisa update <component> 无法比较版本时不再替换文件。

[0.1.11] - 2026-06-18

新增

  • anolisa adopt <component> 可接管预装 RPM。
  • anolisa repair <component> 可刷新漂移的 RPM 状态。
  • anolisa forget <component> 可停止跟踪组件。

变更

  • anolisa status <component> 现报告 RPM 状态漂移。
  • anolisa uninstall 默认保留观察到的系统 RPM。
  • anolisa install 接管 RPM 时保留适配器资源。

[0.1.10] - 2026-06-17

新增

  • anolisa install --backend rpm 可通过 dnf 安装缺失 RPM 组件。
  • anolisa install 可接管匹配的预装系统 RPM。
  • anolisa update <component> 可通过 dnf 更新 RPM 组件。
  • anolisa status 现显示 RPM 组件的软件包来源。
  • anolisa status <component> 现显示匹配的未跟踪系统 RPM。

变更

  • anolisa update runtime <component> 改为 anolisa update <component>。
  • repo.toml 现使用 [backends.rpm] 替代 [backends.yum]。
  • anolisa install --all 现在批量摘要列出接管的 RPM。

修复

  • anolisa install --all 现在普通输出显示各组件失败原因。
  • anolisa install 在缺少 rpm 或 dnf 时提示 --backend raw。
  • anolisa install 不再覆盖先完成的 raw 安装。

[0.1.9] - 2026-06-16

新增

  • anolisa install --all 可安装目录中的所有可用组件。
  • anolisa install --all --fail-fast 可在首个失败组件后停止。
  • anolisa install --all --json 现返回按组件汇总的批量结果。
  • anolisa status 现显示已安装组件的适配器摘要。

变更

  • installed.toml 现区分 ANOLISA 管理包和只观察的系统 RPM。

[0.1.8] - 2026-06-15

新增

  • anolisa adapter enable 现可将已安装适配器注册到 OpenClaw。
  • anolisa adapter disable 现可移除 OpenClaw 适配器注册。
  • anolisa adapter status 现可报告 OpenClaw 适配器健康状态。
  • anolisa adapter scan 现可显示已安装适配器资源。

变更

  • anolisa install 现会放置后续启用所需的适配器资源。
  • anolisa uninstall 现会阻止移除仍有启用适配器的组件。

[0.1.7] - 2026-06-13

变更

  • 用户态库路径调整为 ~/.local/lib/anolisa;其余目录继续遵循 XDG_* 环境变量覆盖。

修复

  • anolisa install 不再要求本地已有组件目录条目即可从远程仓库下载安装。
  • anolisa install --dry-run 无需下载完整安装包即可预览文件和服务列表。

[0.1.6] - 2026-06-12

新增

  • anolisa osbase sandbox install gvisor 支持 standalone、containerd 和 substrate 三种部署形态。(#851)
  • anolisa list 可从 repo.toml 配置自动发现组件目录。(#854)

变更

  • 废弃旧版"能力"模型,统一为组件生命周期;旧状态在下次写入时自动迁移。(#876)

修复

  • anolisa list --enabled 现在正确显示已安装组件,而非空列表。(#872)
  • anolisa list 在已配置 repo.toml 时不再要求额外的本地目录文件。(#854)

[0.1.5] - 2026-06-11

新增

  • anolisa list 从远程或本地组件目录读取并返回结构化 JSON。(#850)
  • anolisa install <组件> 从远程仓库下载、校验并安装组件。(#852)
  • anolisa uninstall 支持新组件模型,同时保留旧版回退。(#852)

变更

  • 简化 CLI 帮助输出,围绕 list、install、uninstall、status、doctor、logs、restart、update 重新分组。(#850)

修复

  • 未配置组件目录时,anolisa list 返回空列表并提示配置方法。(#850)
  • 安装中途失败时自动回滚已写入的文件。(#852)

[0.1.4] - 2026-06-10

新增

  • anolisa adapter scan 探测已安装的 Agent 框架集成。(#808)
  • anolisa adapter install 下载校验后的安装包并注册到目标框架。
  • anolisa adapter remove 安全移除 ANOLISA 管理的文件,支持预览和 dry-run。
  • anolisa adapter install tokenless openclaw 通过 OpenClaw CLI 注册 tokenless 适配器。
  • anolisa enable 从远程仓库获取组件元数据,离线时降级到本地缓存。
  • anolisa status 输出中新增组件健康检查结果。

变更

  • 订阅管理命令提升为顶层 anolisa register / unregister。

修复

  • adapter 安装或移除失败时自动回滚或保留状态以便重试。

[0.1.3] - 2026-06-09

新增

  • anolisa --help 按类别分组展示命令(日常操作 vs. 管理命令)。
  • list 命令在帮助中展示 ls 别名。
  • anolisa update self 成功后输出 changelog 链接。

变更

  • 修正包 license 元数据为 Apache-2.0。

[0.1.2] - 2026-06-08

新增

  • anolisa bug 生成本地诊断报告,包含环境信息和近期错误日志。
  • anolisa self update 作为 anolisa update self 的别名。

修复

  • 恢复 bug report issue 模板。

[0.1.1] - 2026-06-07

新增

  • anolisa osbase sandbox install 一键部署沙箱环境(支持 firecracker 和 e2b 后端)。
  • anolisa register / unregister 管理数据上传授权,支持 30 天延后。
  • anolisa enable 可配置日志上传(ilogtail),自动探测地域。
  • anolisa update self 下载并应用 CLI 更新,含完整性校验和失败回滚。
  • 真实的 dnf/apt 包管理器后端,替换占位实现。
  • anolisa 工作区 GitHub Actions CI。

修复

  • 安装脚本改用 bash 参数展开替代 sed,提升可移植性。

[0.1.0] - 2026-06-04

ANOLISA CLI 首个 alpha 版本。

新增

  • CLI 命令:env、list、status、logs、enable、disable、uninstall、restart、update、info、doctor。
  • 环境探测:OS、架构、内核、发行版、容器运行时、用户身份(探测失败时优雅降级)。
  • 组件生命周期引擎:先预览再执行,含完整性校验和操作日志。
  • 配置驱动的上线门控,新能力无需改代码即可发布。
  • 声明式 TOML 组件清单,支持多架构。
  • install-anolisa.sh 安装器:三种模式(本地、checkout、URL),支持校验和 --dry-run。
  • agent-observability 和 token-optimization 端到端冒烟测试。

已交付能力

能力状态
agent-observabilityenable 完整链路(dry-run + 真实执行)
其余 9 个仅清单;enable 返回 NOT_IMPLEMENTED

已知限制

  • 真实执行路径仅限 Linux(darwin 宿主只能 --dry-run)。
  • 尚无签名校验和 rpm/deb 后端。
  • update 命令返回 NOT_IMPLEMENTED。

更新日志

本项目的所有重要变更都会记录在此文件中。

本文档格式基于 Keep a Changelog, 项目遵循语义化版本。

[0.2.13] - 未发布

变更

  • 可通过 core 和 plugins RPM 分别选择安装记忆运行时与 OpenClaw 集成。
  • raw 安装根据所选二进制目录渲染 MCP 命令路径。

修复

  • 当 embedding provider 在 TOML 中选定时,正确应用对应环境变量;切换 embedding 模型可能需要重建向量。
  • 避免已退役的 OpenClaw 插件实例在重载或销毁期间重新启动记忆 worker。
  • 同一次索引中,文本索引失败的文件不再发布新向量;后续成功扫描时重试。
  • mem_edit 在修改内容前拒绝互相重叠的歧义匹配。
  • mem_export 在扫描或读取失败时报告错误,不再静默生成不完整的归档。
  • mem_promote 或仅创建模式的 mem_write 失败后清理不完整目标,以便重试。
  • 恢复非空只读快照目录时保留其权限,并在重试前清理失败的暂存目录。

[0.2.12] - 2026-10-28

修复

  • agent-memory:更新至 v0.2.12,通过 memory_capture 在每次 OpenClaw 自动观察时检查持久化的采集同意设置,包括其他客户端所做的修改;被拒绝或失败的采集仍可重试,成功采集会出现在 memory_auto_created 中。请同步升级服务端与适配器;旧服务端会拒绝新的 Hook 调用,不会回退到手动观察。手动写入仍可使用,已有观察记录不会重新标注(#8865)
  • agent-memory:立即将新观察记录归属到 MCP_CLIENT_NAME,使观察它的 Agent 能在 isolated 范围召回,其他 Agent 的 filter 范围检索会排除这些记录。重启或运行 mem_index_refresh 不会补填已有未标注索引行的归属(#7776)
  • agent-memory:在发布 mem_edit 和 mem_write 覆盖写入前准备完整替换文件,准备阶段失败时保留原内容。替换要求目录可读写且位于同一文件系统、Linux procfs 可用,并有容纳新内容的空间;自定义属主及主机安全标签策略需要验证,其他硬链接保留旧内容。若错误提示替换已发布但同步失败,新内容已可见,重试前应先读取确认(#8982)
  • agent-memory:mem_revert 只恢复指定文件,保留 Git HEAD、暂存内容和其他文件的待提交修改,响应现在标明来源提交。若旧内容仍在暂存区,手动提交前应显式暂存恢复后的文件(#9082)
  • agent-memory:在发布快照恢复结果前验证 gzip 校验和及完整性,损坏或截断的归档会报错,同时保留当前记忆文件(#7631)
  • agent-memory:在启动索引前开始监听记忆变更,即使时间戳未变也会刷新大小发生变化的文件,并在旧文件变为目录时保留新索引的子文件,使这些启动场景下的关键词和向量结果保持最新。时间戳和大小均未变化的重写仍不在扫描指纹的检测保证范围内(#8880、#9127、#9089)
  • agent-memory:将带点文件名以及 AND、NOT、OR 作为普通关键词检索文本,Agent 可召回 config.toml 等词语而不触发检索语法错误;空格分隔的词语保留先匹配全部词语、再回退到部分匹配的行为(#8012)
  • agent-memory:遇到无法读取的检索索引行时报告错误并提供恢复指引,不再返回看似成功的空结果或部分结果,使关键词、向量和混合检索失败可见,同时避免从失败检索生成无意义的兴趣或经验(#8854)
  • agent-memory:缩短 OpenClaw 召回查询时保留完整 Unicode 字符,避免拆断 emoji 或生成损坏的查询前缀(#4730)
  • agent-memory:将会话日志尾部读取限制在 1 MiB 并保留 UTF-8 边界,超大的近期条目不再导致日志读取失败或错误显示为空;超大条目仍可能仅返回部分尾部内容(#7896)
  • agent-memory:将导入 AMA frontmatter 键、值和列表项中的 ASCII 控制字符规范为空格,防止注入元数据行或提前结束 frontmatter;导入时有意不保留这些字符(#4626)
  • agent-memory:在 AMA 导出再导入后保留 memory_summary 的概念和文件排名,并将单行列表项中的逗号、引号和反斜杠保留在原条目内,无需重写已有导入文件即可获得准确汇总(#8862)
  • agent-memory:缩短过长标题或描述时保留完整的 MEMORY.md 链接目标,使 Agent 能沿长路径读取记忆,同时保留索引总大小限制(#3621)
  • agent-memory:mem_diff 返回带有一对文件头的有效 unified patch,并正确转义文件名中的控制字符,使调用方能够解析和应用结果(#3575)
  • agent-memory:仅在有效的文件开头 frontmatter 中写入取代标记,并在保留新事实的同时记录索引更新失败,避免修改普通正文,也便于诊断反复发生的整合冲突(#3517、#3532)
  • agent-memory:整合时保留无法表示的 N days ago 和 N 天前 原文,防止日期溢出失败或误替换为当天日期(#9144)
  • agent-memory:OpenClaw 安装和卸载脚本遵守 ANOLISA_DRY_RUN=1,预览适用操作而不执行安装、删除文件或重写配置;安装仍可能执行只读的 CLI 帮助探测(#7755)
  • agent-memory:在随包发布的 MCP 目录中列出全部 38 个运行时工具,使依赖描述文件的客户端可以发现此前遗漏的会话、汇总、上下文、画像和索引刷新工具(#9148)

[0.2.11] - 2026-10-25

修复

  • agent-memory:更新至 v0.2.11,在关键词检索的结果数量限制之前按事实分类过滤,即使其他分类排名更高,也能找到所需记忆;同时覆盖短中文查询和回退到关键词检索的路径,分类名称保持大小写敏感。配置了 embedding provider 的向量/混合检索仍在截断结果后过滤分类(#8721)
  • agent-memory:在向量排序和结果数量限制之前按配置排除冷记忆,并过滤已被替代的记忆,避免被排除的记忆挤占向量和混合检索中的有效结果(#3805)
  • agent-memory:内容修改后使旧向量失效,并在文件超过索引大小限制或不再是 UTF-8 文本时移除旧搜索条目,避免关键词和向量检索返回过时内容(#3803、#3820)
  • agent-memory:按字面路径仅移除指定路径及其下级索引,保留名称含类似通配符字符或大小写不同的无关记忆(#3801)
  • agent-memory:目录属性更新后跳过未变化文件的重复索引和 embedding 调用,减少 embedding 用量,同时保留缺失向量的补全能力,以及在同一批文件监听事件中删除后恢复的文件(#8477)
  • agent-memory:让并发的自动增量整理串行执行,并在异常展开后释放执行标记,避免重复事实且允许后续自动整理继续运行;在应用数量预算前对保留相同工具调用的情景记忆去重,同时保留独立任务和错误恢复情景(#8303、#8305)
  • agent-memory:生成兴趣和用户画像时跳过脱敏后的搜索长度标记,避免新增 len=N 兴趣,同时保留旧日志中记录的真实查询;历史上已生成的无效事实仍会保留,可通过 memory_forget 删除(#7928)
  • agent-memory:正确读取结束分隔线后没有换行的 frontmatter,导出/导入可保留 ID 和分类,摘要及用户画像也不会再将元数据当作正文(#8687)
  • agent-memory:OpenClaw 接收跨管道分块的响应时保留中文、重音字符和 emoji,并在初始化握手失败后先释放 MCP 子进程再重试,避免工具结果乱码和遗留进程(#8454、#8543)
  • agent-memory:在服务启动前拒绝无效的时间衰减配置,对非有限数值的环境变量覆盖发出警告并忽略,避免破坏新旧记忆的排序。升级前请将文件配置修正为有限的 time_decay_lambda >= 0 和 [0, 1] 范围内的 time_decay_alpha;无效的文件配置现在会阻止启动(#8701、#8699)
  • agent-memory:用户或组映射未完成时,重试仍将命名空间初始化失败视为不可恢复错误,避免服务在隔离设置不完整的状态下启动(#8439)

[0.2.10] - 2026-10-15

新增

  • agent-memory:更新至 v0.2.10,提供包含记忆服务和 OpenClaw 适配器的 Linux x86_64 与 ARM64 原始发布包,用户可直接安装经过校验的归档,无需从源码构建(#7648、#7649)

修复

  • agent-memory:按宿主提供的 Tool Search 或直接工具调用方式引导 Agent,使延迟加载的记忆工具能够被发现并以有效参数调用(#7645)
  • agent-memory:等待 MCP 子进程退出,并在 OpenClaw 插件实例销毁时清理进程,避免关闭和重新加载时遗留记忆进程(#7482、#7661)

[0.2.9] - 2026-10-11

修复

  • agent-memory: 更新至 v0.2.9,定位 OpenClaw adapter 的二进制时要求路径指向可执行文件,用户将目录配置为 binaryPath 时会在启动阶段收到配置错误;即使 PATH 较早的条目中存在名为 agent-memory 的目录,也能继续找到后续有效的可执行文件或指向可执行文件的符号链接(#4855)

[0.2.8] - 2026-09-20

新增

  • agent-memory:配置的会话目录不可用时,回退到当前用户独享的运行时目录或临时目录,非特权安装无需创建 root 所有的目录即可使用会话日志和 mem_promote;回退路径会检查所有者、权限及符号链接重定向(#3266)

变更

  • agent-memory:不兼容变更: OpenClaw 工具更名为 anolisa_memory_search 和 anolisa_memory_get,Agent 可以同时访问 ANOLISA 记忆和 OpenClaw 自带记忆工具,避免名称冲突;升级时需更新提示词及工具 allowlist、重启 gateway 并开启新会话。内部 MCP 名称和已存储记忆保持不变(#3347)
  • agent-memory:在 OpenClaw 的 coding profile 中声明全部四个插件工具,Agent 在该 profile 下无需禁用 memory-core 即可访问插件工具;自定义策略仍需显式添加工具条目,中间版本安装器留下的禁用标记需按用户指南手动恢复(#3347)

修复

  • agent-memory:在 OpenClaw 插件 schema 中接纳 sessionId 和 sessionDir,并在插件启动时按服务端规则检查标识符的 128 字节 UTF-8 上限,用户可在子进程重启后复用会话临时文件,并在无效标识符改变命名空间之前看到配置错误(#3213)
  • agent-memory:让更强的 BM25 匹配排在前面,并统一关键词分数越高越相关的约定,搜索、混合检索和自动召回会优先返回最相关的匹配记忆(#3296)
  • agent-memory:拒绝 OpenClaw 插件不支持的 expert profile,提示改用 basic 或 advanced,并在验证重载配置之前停止旧客户端,用户可获得明确的配置错误,避免旧记忆进程继续持有存储锁(#3238)
  • agent-memory:补齐 make dist 源码归档所需文件,源码包和 RPM 构建可获得编译及安装所需的示例目标、配置和适配器资源(#3231)

[0.2.7] - 2026-09-09

修复

  • agent-memory:根据宿主帮助信息选择 OpenClaw 安装参数并默认授予插件声明的能力,用户可在要求授权的宿主上安装,也可通过 AGENT_MEMORY_ACCEPT_CAPABILITIES=0 拒绝授权;不再传递已弃用且无效的 unsafe-install 参数,并区分授权拒绝与安装目录不可写的问题(#3149)
  • agent-memory:将 corpus 命中标记为 agent-memory 并提供适用于 memory_get corpus=all 的读取路径,Agent 可读取与 OpenClaw 工作区记忆路径重叠的存储记忆,并在分段读取时获得准确的 fromLine / lineCount(#3177)
  • agent-memory:在查找二进制前校验插件配置,即使尚未安装 agent-memory,用户也能看到无效 userId / sessionId 的具体错误(#3155)
  • agent-memory:声明 RPM 组件标识,ANOLISA 可将已安装的软件包识别为 agent-memory 组件(#2560)
  • agent-memory:在统一构建流程中声明 Node.js >= 20 和 npm 为源码构建依赖,用户模式自动准备构建 OpenClaw 适配器所需的工具,系统模式则在构建前提示缺失工具(#3187)

[0.2.6] - 2026-07-30

修复

  • agent-memory:更新到 v0.2.6,在短 token 的 LIKE 严格匹配无结果时改用 OR 匹配,并优先保留匹配更多关键词的结果,Agent 可从包含停用词的 prompt 中召回相关记忆而不再得到空结果(#2040)

[0.2.5] - 2026-07-27

修复

  • agent-memory:更新到 v0.2.5,从较长的英文和 CJK prompt 中生成聚焦的召回查询并合并结果,Agent 可从冗长 prompt 中召回相关记忆且不会静默遗漏主题(#1574)

0.2.4

  • fix(memory):修复 observe 后自动召回返回空结果的问题——memory_observe 后同步重建索引,使 before_prompt_build hook 能找到新内容(#1520)
  • fix(memory):install.sh 为 hook 设置 allowConversationAccess(#1521)

0.2.3

  • fix(memory):在 trigger 匹配和 hash 计算前,将 OpenClaw content block 数组 [{type:"text", text:"..."}] 规范化为字符串,避免自动捕获因内容被转换成 "[object Object]" 而失效
  • fix(memory):增加 BM25 OR fallback——当隐式 AND FTS5 查询返回 0 行且存在多个 token 时,使用 '\"token1\" OR \"token2\" OR ...' 重试,使部分匹配也能返回,而非静默失败
  • fix(memory):将 format!("{:.120}", query) 替换为 format!("bm25:len={}", query.len()),清理 audit_log,避免用户查询内容泄漏到日志路径

0.2.2

  • 修复 memory_observe hint 清理,使 YAML 转义的 hint 能通过不解析 YAML escape 的手写 frontmatter reader 往返读取:用 sanitize_hint() 替换 yaml_escape_hint(),仅将换行符和 ASCII 控制字符替换为空格;增加 8 个单元测试和一个真实 parser 往返测试,覆盖含反斜杠的 Windows 路径
  • 为 MemoryConfig 增加 max_hint_bytes(默认 512)和 MEMORY_MAX_HINT_BYTES 环境变量覆盖;将 &MemoryConfig 贯穿 memory_observe、MemoryService facade 和 MCP server
  • 修复 make install INSTALL_PROFILE=user PREFIX=$HOME/.local 在 install-adapter-resources 阶段因 Permission denied 失败的问题:遵循 INSTALL_PROFILE 并从 $(PREFIX) 推导 DATADIR/SHARE_DIR,使所有可写路径均服从 profile(system 模式不变);与 tokenless/ws-ckpt 安装约定保持一致
  • 增加 safe_fs 安全边界单元测试(path escape、symlink traversal、sandbox root violation),并修复 cargo fmt --all --check 暴露的格式和 import order 问题

0.2.1

  • 修复配置 embedding provider 时 vector/hybrid search panic 和索引为空的问题:index worker 在没有 tokio Handle 的 std::thread 上运行,导致无法生成 embedding,而 memory_search mode=vector|hybrid 从 worker thread 调用 Handle::block_on;现在 spawn 时捕获 runtime handle 并传入 worker,search path 使用 block_in_place
  • 修复 memory_get_context 将 .git 内部文件(如 .git/logs/HEAD)泄漏到 Agent context 的问题:通过 safe_fs 中共享的 is_under_git predicate 扩展 reserved-path filter,覆盖 .git/
  • 修复 full_scan(启动和 inotify overflow 恢复)只构建 BM25 index 而不生成 dense embedding,导致既有文件在修改前对 vector search 不可见的问题;新增 paths_without_vec 查询和 backfill pass,并将 embedding 逻辑集中到与 flush 共用的 embed_sync helper
  • 修复 memory_search 对短 CJK query term(少于 3 个字符,如“花名”/“小云”)返回 0 条结果的问题:trigram tokenizer 不会为少于 3 个字符的 term 生成 token,因此此类查询改用 body LIKE '%term%' substring scan,同时保留 recall、agent-scope filtering 以及 cold/superseded exclusion
  • 根据第一次真实 response 确定 embedding dimensions,不再硬编码 1536(DashScope text-embedding-v3 为 1024):维度存储在以估算值初始化的 AtomicUsize 中,并在首次 embed 时覆盖
  • 通过 .anolisa/component.toml 增加 anolisa-cli adapter contract,使 CLI adapter manager 能通过 [[adapters]] TOML schema 发现 OpenClaw plugin bundle

0.2.0

  • 增加 prompt injection 安全模块(looksLikePromptInjection + escapeMemoryForPrompt),Rust core 和 TS adapter 保持一致
  • 为安全模块增加 secret detection 和 PII redaction
  • 增加 auto-recall before_prompt_build hook,每轮注入相关 memory
  • 增加带 trigger filtering、SHA256 dedup 和 injection rejection 的 auto-capture agent_end hook
  • 通过可插拔 EmbeddingProvider 增加 dense-vector semantic search(OpenAI /v1/embeddings、Ollama /api/embed)
  • 增加 files_vec table(schema v2),与 FTS5 BM25 一起存储 per-file dense embedding
  • 增加通过 reciprocal rank fusion(RRF,k=60)融合 BM25 和 vector score 的 hybrid search
  • 为 memory_search 增加 mode 参数(bm25/vector/hybrid),并支持 graceful fallback 到 BM25
  • 通过 [memory].agent_scope(shared/isolated/filter,schema v5)增加 per-agent memory isolation
  • 增加带 consent.toml preference 的 memory sovereignty tool(memory_about/forget/auto_created/consent)
  • 为 memory_observe 增加 4 类封闭 memory classification(user/feedback/project/reference)
  • 增加 mem_export 和 mem_import,用于跨 Agent memory migration(AMA archive format)
  • 增加用于 memory overview 和 source tracking 的 memory_summary tool
  • 增加 memory_session_context tool
  • 增加 memory_sessions 和 memory_timeline session history query tool
  • 增加 MEMORY.md index file 和 mem_index_refresh tool
  • 增加 user profile synthesis(Dreaming V3 mem_dream)
  • 增加 memory consolidation:shutdown 时从 session audit log 自动提取 L1 atomic fact
  • 从连贯的 tool-call chain 中增加 episodic memory extraction
  • 增加 cross-session task persistence 和 incremental consolidation
  • 增加 consolidation quality filter(mutual exclusion、non-derivable、date normalization)
  • 为 BM25/vector/hybrid score 增加 time-decay ranking(exp(-λ×age_days))
  • 使用 mem_compact tool 对长期从未访问的文件进行 cold archival
  • 写入新 fact 前通过 BM25 similarity 增加 conflict detection
  • 增加 category subdirectory(facts/<category>/)以及 memory_search category filter
  • 增加 token tracking(AuditEntry 中的 tokens 字段)
  • 增加手动触发 consolidation 的 mem_consolidate tool
  • 为 memory_search corpus=all 增加 corpus supplement registration
  • 增加 EmbeddingConfig(None/OpenAI/Ollama),支持 TOML parsing 和 env override
  • 为 memory_search signature 增加可选的 mode 和 category 参数
  • 将 memory_search query 限制为 1024 个字符,防止 FTS5 resource exhaustion
  • 将 embedding error response body 截断到 200 个字符,防止 API key 泄漏
  • 在 ConsolidatedFact 中区分 CJK 与 ASCII token estimation
  • 在 mutex 下持有 FactWriter JSONL file handle,防止 line interleaving
  • 通过 canonicalize + starts_with traversal guard,从 db path 推导 BM25Store mount root
  • 根据 entry timestamp 而非 chain length 计算 Episode duration
  • 将 session_id 传播到提取的 episodic fact
  • 从 consolidate() 返回 fact count,供 mem_consolidate reporting 使用
  • 修复 search response 中的 effectiveMode,使其反映实际使用的 mode
  • 修复 embedding API empty-response handling,返回维度正确的 zero vector

0.1.0

  • 引入面向 AI Agent 的 filesystem memory MCP server(仅 Linux),通过 stdio JSON-RPC 2.0 提供三个 tier 的 21 个 tool(Tier A file op、Tier B BM25 search、Tier C governance)
  • 在 ~/.anolisa/memory/<ns>/ 下增加 per-namespace mount,并支持可选的 user namespace + private tmpfs isolation(auto/userland/userns strategy)
  • 对每次 Tier A file open 使用 openat2(RESOLVE_BENEATH | RESOLVE_NO_SYMLINKS) 强制执行 path sandbox
  • 增加带 transactional upsert、schema migration、trigram CJK tokenizer 和 inotify-driven debounced flush 的 SQLite FTS5 BM25 background index
  • 增加可选的 git versioning,auto-commit 在 per-handle mutex 下串行执行
  • 增加 tar.gz snapshot,使用严格的 id whitelist、restore 时的 atomic rename swap,以及 .anolisa/trash/ 下的 rollback entry
  • 增加可选的 cgroup v2 memory.max self-limit,在 tokio runtime 启动前应用
  • 增加 JSONL audit log(O_NOFOLLOW | O_CLOEXEC、Mutex<File>),并支持可选的 systemd-journald fan-out
  • 在 tools/list 和 tools/call 强制执行 profile gating(basic/advanced/expert),config struct 使用 deny_unknown_fields
  • 在 /run/anolisa/sessions/<sid>/ 下增加 per-session scratch 和 log(0700),并附带 tmpfiles.d snippet
  • 增加经过加固的 systemd user template anolisa-memory@.service(ProtectKernelTunables/Modules/Logs、SystemCallFilter、MemoryDenyWriteExecute、RestrictNamespaces、RestrictAddressFamilies=AF_UNIX)
  • 增加使用 offline vendor tarball 和单个 statically-linked binary(bundled SQLite + vendored libgit2)的 RPM packaging
  • 增加 OpenClaw plugin memory-anolisa,支持 install/detect/uninstall lifecycle,并提供 4 个通过 stdio child 路由到 MCP server 的 memory contract tool
  • 增加从 Cargo.toml 到 manifest/package/openclaw/mcp JSON 和 bundle 的 single-source version sync
  • 增加 mcp-harness example,以及覆盖 12 个 integration suite 的 140 个 automated test

Changelog

1.2.0

Breaking Changes

  • Defaulted source installations to the shared anolisa namespace across the component installers; existing independent layouts are left in place and must be migrated with the original path overrides followed by make uninstall AWPRJ=, or kept on the previous layout by continuing to pass AWPRJ=. (#9462)

Cedar Policy Engine

  • Added a Cedar policy frontend that validates source against the application schema and stores the original source through the policy create and update paths. (#9298)
  • Deployed supported Cedar file-protection policies through the existing Scope, Binding and reconciliation lifecycle, rejecting translations that exceed the supported subset. (#9442)
  • Added agent-sec-cli policy default, printing a restrictive baseline policy for Scopes without a bound policy. (#9522)
  • Added agent-sec-cli intent propose to generate reviewable Cedar candidates from a task description through the optional intent.propose daemon method. (#9450)
  • Added a self-contained policy-authoring skill with intent disambiguation, rule formalization, worked examples and a self-check checklist. (#9463)

Sandbox Authorization

  • Added agent-sec-cli sandbox run to execute a command under an explicit OS permission set without a policy service. (#9311)
  • Routed Cosh sandbox hooks through Cedar authorization, native approval and receipts, and showed only the resource operations that require confirmation. (#9379)
  • Split OS permission, invocation and lifecycle contracts into dedicated sandbox contract crates shared by the standalone sandbox and policy paths. (#9456)

Credential Protection

  • Added an opt-in secret gateway that replaces Scope-specific fake credentials with real values for authorized GitHub REST and HTTPS Git traffic. (#9265)

Scanner & Policy Engine

  • Retained outer Bash findings when an inline interpreter payload is scanned, merging findings per rule and de-duplicating identical evidence. (#9418)
  • Hardened prompt-scan and code-scan verdict parsing against echoed verdict lines and verdict words embedded in larger words. (#9446)
  • Sped up PII boundary matching for near-limit scans while preserving exact spans and redacted output. (#9453)

Codex & OpenClaw Hook Integrations

  • Blocked native OpenClaw plugin disable and uninstall of agent-sec through the Code Scanner hook, including in observe mode. (#9491)

Build & Packaging

  • Preserved service enablement and activity state when rolling back split RPMs to the legacy package layout. (#9472)

Raw Packaging

  • Preserved distribution-owned discovery contracts during ANOLISA raw install, repair, update, rollback and uninstall; new archives now require ANOLISA 0.3.21 or later. (#9351)

Testing & CI

  • Measured the full V2 workspace in the incremental coverage gate instead of a fixed package allowlist. (#9502)
  • Stabilized daemon startup and UDS admission tests across the SecCore E2E, Rust and packaging CI targets. (#9323)

[1.1.2] - Unreleased

Changed

  • Install the security runtime, framework integrations and skills through separate RPMs.

1.1.1

Breaking Changes

  • Removed the unsupported --cgroup-id flag from scope create; cgroup assignment was never accepted by PAP or the AgentSight Adapter, and the flag now fails locally with exit code 2. Select target processes with --pid, --process-name, or --executable instead. (#9134)

Code Scanning

  • Evaluated command strings passed to Python process APIs (os.system, os.popen, subprocess) against the existing Shell rules, with native rule IDs, severity, and evidence retained; dynamically built commands and argv arrays remain uninferred. (#9128)

Skill Ledger Runtime

  • Added skillsec as the primary agent-sec-cli command group name, retaining skill-ledger as a compatible alias with identical arguments, output, and exit codes. (#8907)
  • Escaped the YAML-sensitive characters that JSON quoting leaves literal in a pending Skill placeholder, so accepted Skill names containing control characters or Unicode separators survive publication and frontmatter parsing unchanged. (#8948)

1.1.0

Breaking Changes

  • Switched source builds and installs to the V2 Rust CLI and host-level systemd daemon, replacing the source-build Python runtime, user sandbox, and venv layout; source-install scripts must migrate to the V2 hook-facing command surface. (#3510)

V2 Policy & Daemon Runtime

  • Rejected stale policy reconciliation results atomically, tracked real write-receipt versions, and let newer Delete intents supersede exhausted Apply retries, with deterministic crash-recovery coverage for SQLite persistence. (#6944)

Storage Safety

  • Fell back to /var/lib/agent-sec/policy/policy-state.db for default Policy storage when the primary directory is unsafe, checking both candidates before initialization and rejecting conflicting databases with actionable diagnostics. (#8782)

Skill Ledger Runtime

  • Raised a typed SkillLedgerError instead of a raw NotADirectoryError when skill export --output points to an existing file. (#6105)

Build & Packaging

  • Updated rustls to 0.23.45 to address a Dependabot security advisory. (#7783)

Raw Packaging

  • Added a Linux x86_64 sec-core prebuilt raw-archive release target with SHA-256 and CycloneDX SBOM sidecars. (#8461)

1.0.1

Breaking Changes

  • Removed SkillSec key rotation: rotate-keys and init --force-keys are rejected before any write, and the current signing key is retained. Scanned and certified Skills are remembered as exact paths in the daemon's managedSkillDirs; remove an entry and restart the daemon to revoke it. (#7629)

Skill Ledger Runtime

  • Authorized and scanned standard system and local-user Skill directories by default through enableDefaultSkillDirs, deriving user homes from local account records in the daemon. (#7419)
  • Kept SkillFS notify acceptance within the 64 KiB session response frame so accepted notifies are no longer dropped and retried. (#7188)

V2 Policy & Daemon Runtime

  • Verified that the connected daemon runs as root before V2 clients send requests, and replaced the legacy shell health check with the agent-sec-daemon-health probe. (#7122)
  • Limited daemon connections per user, reserving connections for root so other users cannot starve it. (#7103)
  • Retained CAP_SYS_PTRACE in agent-sec-core.service so Scope discovery can read protected process links. (#7404)
  • Ran observability-store retention while the daemon is active, including startup catch-up. (#7099)
  • Removed the process-local policy engine repository and prevented polling lock starvation. (#7111)

Storage Safety

  • Rejected symlinked and non-regular read-only SQLite database paths instead of following them. (#7295)
  • Rejected symlinked and non-regular writable SQLite database paths before opening them. (#7296)

V2 Security Operations

  • Stripped information-separator characters from capabilities environment values and filters as V1 does. (#7194)

Build & Packaging

  • Changed the default agent-sec-core RPM build target to V2 while keeping an explicit V1 target. (#7563)

Testing & CI

  • Restored the V2 workspace clippy gate for prompt-scan crates. (#6680)

1.0.0

Breaking Changes

  • Security operations require a running root daemon; the CLI does not start it or execute locally. Manage agent-sec-core.service with system systemctl; the default socket is /run/agent-sec-core/daemon.sock. (#3217)
  • AGENT_SEC_DATA_DIR and AGENT_SEC_MODEL_SERVICE_* are now daemon-wide settings; CLI/hook exports no longer apply. Configure the daemon environment and restart. Storage defaults to /var/log/agent-sec, without per-user fallbacks; test isolation requires a separate test daemon, data directory, and socket. (#7283)
  • Shared-store queries isolate by trusted OS UID, not account lifetime; root sees all UIDs. Reusing a UID exposes its retained records to the new account. Keep UIDs stable and have administrators handle old data and permissions before reassignment. (#7277)
  • PII custom rules now use /etc/agent-sec/pii-checker/rules.yaml instead of the per-user default. Move custom rules there and restart the daemon to apply changes. (#3286)
  • Skill Ledger uses a shared system signing key; V1 keys, keyrings and history are not imported. Rescan Skills to establish V2 trust; key rotation requires root. (#3295)
  • Skill operations require administrator-configured managedSkillDirs or authenticated SkillFS mounts. All local users can operate managed Skills; no per-user Skill ACLs are provided. (#3295)
  • V1 per-user Security Events and Observability history is not automatically imported into the V2 system store. No supported cross-store import tool is shipped; preserve V1 data. (#6605)
  • Legacy harden, verify and log-sandbox commands are unavailable in the V2 CLI. Update dependent scripts before switching to V2.

V2 Security Operations

  • Added native V2 PII scanning with V1-compatible CLI and Hook contracts. (#3286)
  • Added V2 prompt scanning through the daemon and CLI, including loopback-only model classification. (#3384)
  • Added local-model LLM mode for V2 code scanning. (#6596)
  • Restored owner-scoped V2 security-event queries and the events CLI command. (#6745)
  • Added V2 observability recording through the CLI and daemon. (#3397)
  • Added V2 observability queries, reports, reviews, and owner-scoped correlation through the daemon. (#6826)
  • Reported the V2 prompt-scan L2 default and unsupported model overrides through agent-sec-cli capabilities. (#6595)
  • Corrected PII card and email detection boundaries to reduce false warnings and preserve sentence punctuation. (#6597)
  • Added CI/CD and cloud token-prefix detection to V2 PII scans. (#6219)
  • Added compound credential field-name detection to V2 PII scans. (#6234)

Skill Ledger Runtime

  • Migrated Skill Ledger scanning, signing, activation, and recovery to the V2 daemon. (#3295)
  • Migrated Agent hooks to V2 daemon-owned Skill Ledger trust and command handling. (#3505)
  • Cleaned failed Skill Ledger export artifacts so callers can retry the same output directory. (#4004)
  • Retained all Skill Ledger rollback backups for later recovery and inspection. (#3989)
  • Reclaimed stale private-key temporary files after interrupted Skill Ledger initialization or rotation. (#4430)
  • Reported signed-but-unscanned directories as Skill Ledger warnings. (#4447)
  • Detected credential material outside hidden directories in Skill Ledger scans. (#6201)
  • Reported FIFOs, sockets, and device nodes in Skill Ledger scans. (#6211)
  • Rejected oversized Skill Ledger worker frames before spawning a worker. (#5671)

V2 Policy & Daemon Runtime

  • Added persisted V2 policy assignments and AgentSight reconciliation. (#6931)
  • Started the V2 daemon automatically after installation. (#6846)
  • Ran V2 security-event retention while the daemon is active, including startup catch-up and failure retries. (#6679)
  • Preserved daemon cancellation behavior during V2 worker shutdown. (#3470)

Build & Packaging

  • Added reproducible offline V2 RPM builds and installed-artifact validation. (#3257)
  • Changed the raw package to install V2 CLI and daemon binaries with the system service. (#6551)

Agent Hook Integrations

  • Updated OpenClaw plugin deployment and runtime compatibility for OpenClaw 2.0. (#3408)
  • Moved OpenClaw PII scanning to the supported model-entry gate while retaining legacy-host compatibility. (#3503)
  • Moved OpenClaw prompt scanning to the supported model-entry gate. (#6571)
  • Kept Codex PII and Code Scanner Hooks fail-open for non-object input payloads. (#6341)
  • Kept the Codex PII Hook fail-open for non-object scan results. (#6654)
  • Aligned V2 Code Scanner contracts across CLI, daemon, and installed RPM behavior. (#6822)
  • Restricted PII scanning to the current model prompt. (#6970)
  • Bounded approval descriptions before they reach the security decision flow. (#6972)
  • Preserved native device identity checks for V2 storage and export operations. (#6955)

0.13.2

Build & Packaging

  • Enabled ANOLISA RPM adapter installation to discover hook and skill payloads split across agent-sec-core subpackages. (#3480)

0.13.1

OpenClaw Hook Integration

  • Updated OpenClaw plugin deployment and runtime compatibility for OpenClaw 2.0, including capability consent and SQLite-backed session evidence. (#3440)

0.13.0

V2 Policy & Daemon Runtime

  • Added V2 daemon Policy, Scope, and Binding CRUD APIs with root-only authorization. (#3062)
  • Added V2 CLI commands for Policy, Scope, and Binding management through the daemon. (#3097)
  • Added AgentSight policy adapters, client integration, and binding reconciliation. (#3103)
  • Added bounded concurrent reconciliation workers so one binding failure cannot block the daemon. (#3194)

V2 Security Operations

  • Added the V2 daemon-backed Bash and Python regex Code Scanner with compatible structured results. (#3203)
  • Added the V2 capabilities command with V1-compatible environment capability reporting. (#3243)
  • Added V1-shaped JSONL and SQLite persistence for accepted V2 code-scan events. (#3246)
  • Added shared scan lifecycle recording and allowlisted telemetry sinks for V2 security operations. (#3300)

Skill Ledger Runtime

  • Skipped unmanaged read-only raw user Skills during default batch initialization and scanning. (#3183)
  • Unified Skill Ledger CLI and configuration inputs around supported names, initialization, and policies. (#3253)

Build & Packaging

  • Delivered the V2 daemon as a hardened systemd system service. (#3217)

Skills

  • Added the bundled pii-checker Skill for PII and credential scans with optional redaction. (#3241)

Testing & CI

  • Added installed V2 RPM end-to-end coverage for CLI, daemon, plugins, and service contracts. (#3162)

Documentation

  • Added AARM registry and OWASP Agentic Top 10 security-control mappings. (#3227)

Maintenance

  • Flattened the V2 crate layout and updated internal references. (#3319)

0.12.0

cosh & Cosh-NG Hook Integration

  • Normalized legacy cosh and Cosh-NG Skill invocation payloads in the cosh Skill Ledger hook so Cosh-NG invocations follow the configured policy instead of bypassing the check. (#2871)

Skill Ledger Runtime

  • Tightened six Skill scanner detector patterns to remove deterministic false positives and bumped the static scanner identifier to cisco-static-only-0.1.1. (#2928)
  • Completed the skill-ledger and check help output with all eight integrity statuses and their production conditions. (#2707)

Daemon Runtime

  • Added a POSIX shell daemon.health probe that avoids Python cold start for container health checks. (#2879)

Rust v2 Framework

  • Added the v2 foundation and policy type crates as the base for the Rust security core migration. (#3007)
  • Added the v2 daemon service framework with UDS server, request dispatch, and shutdown handling. (#3040)
  • Added the v2 PAP service with Policy, Scope, and Binding CRUD over a repository abstraction. (#3027)

Build & Packaging

  • Raised the cryptography runtime floor to 50.0.1 and refreshed the lock and exported requirements. (#3015)

Documentation

  • Added design docs for the current daemon protocols and the v2 framework requirements. (#2881)

0.11.1

Prompt Scanner

  • Restricted the invisible-character injection rule so emoji ZWJ sequences, Persian ZWNJ, and leading BOM no longer score as critical injections. (#2900)
  • Refused non-loopback model service base URLs derived from the environment in both the Rust and Python model service paths. (#2893)
  • Reported daemon.health prompt_scan state as untracked instead of unconditionally ready now that scanning runs in-process. (#2892)
  • Dropped the dead prompt model preload environment flag and the obsolete scan-prompt protocol document. (#2886)

Skill Ledger Runtime

  • Skipped host-backed read-only system Skills in batch scan --all and default init instead of failing them. (#2906)
  • Rejected the placeholder set-policy and rotate-keys commands so they no longer report false success. (#2876)

Asset Verification

  • Reported explicit CHECKED / PASSED / FAILED counters and a distinct zero-candidate outcome for agent-sec-cli verify. (#2875)

Security Events & CLI

  • Enforced owner-only permissions on files created by the CLI. (#2873)

Documentation

  • Documented the five hidden agent-sec-cli integration commands and their contract caveats. (#2887)
  • Documented the rule-only L1 detection boundary and how to read pass together with degraded fields. (#2895)

0.11.0

Prompt Scanner

  • Rewrote prompt scanner core in Rust for native performance. (#2409)
  • Added ATR (Agent Threat Rules) rule packs and reduced compile time. (#2531)
  • Added Warden-Gen L2 backend option for prompt scanning. (#2699)
  • Routed Rust native extension logs to Python logging framework. (#2640)
  • Corrected warmup documentation to describe model availability checks and silenced per-invocation scan mode logging in the Codex, cosh, and Qwen Code prompt scanner hooks. (#2745)

Hermes Hook Integration

  • Dropped Hermes synthetic warning injection; PII and Skill Ledger policies now use native observe/block boundaries. (#2712)

PII Checker

  • Refined PII detection to reduce JWT and Email false positives and aligned user notices across all host adapters. (#2443)

Skill Ledger Runtime

  • Added SkillFS HMAC peer authentication for cross-container Skill Ledger deployments. (#2493)

Security Events & CLI

  • Added agent-sec-cli capabilities subcommand for environment-based hook configuration inspection. (#2356)
  • Set observability hook timeout to 10s and CLI default timeout to 5s. (#2346)
  • Added security observability skill for structured event and session report queries. (#2245)

Documentation

  • Corrected and restructured user docs to align with 0.10.x shipped behavior. (#2456)

0.10.1

OpenClaw & cosh Hook Integrations

  • Piped prompt text through stdin instead of command-line arguments in the OpenClaw and cosh prompt scanner hooks. (#2445)

Security Events & CLI

  • Validated events query parameters in the CLI and the daemon security query handlers. (#2451)

0.10.0

Agent Hook Policy Controls

  • Added code scanner enable flags for agent hooks. (#2001)
  • Unified hook policy controls across agent integrations. (#2141)
  • Added an observability hook environment toggle. (#2199)
  • Restored scanner mode environment variable names. (#2212)
  • Aligned code scanner hook flags across supported agent integrations. (#2229)
  • Added environment-based prompt scanner gating. (#2239)

OpenClaw Hook Integration

  • Added block mode support for the OpenClaw code scanner hook. (#2242)

Prompt Scanner

  • Widened prompt scan inbound text field coverage. (#2277)

Skill Ledger Runtime

  • Added read-only skill analysis. (#2044)
  • Included raw skill directories in skill ledger checks. (#2201)
  • Authenticated manifests before loading skill package contents. (#2185)

Security Events & CLI

  • Added session and run filters to agent-sec-cli events queries. (#2132)

Raw Packaging

  • Added component-owned raw package build targets and archive validation. (#2133)
  • Updated raw hooks to use the bundled Python launcher. (#2255)

0.9.0

Qoder CLI & Qwen Code Hook Capability Expansion

  • Added Qwen plugin and observability hooks. (#1473)
  • Added Qoder CLI hook framework support. (#1480)
  • Added Qoder prompt injection scanner hook integration. (#1529)
  • Added Qwen prompt scanner hook integration. (#1538)
  • Added code scanner hook integration for Qoder CLI and Qwen Code. (#1535)
  • Added Qoder CLI Skill PreToolUse skill ledger checks for user and project skills. (#1552)
  • Added Qwen PII hooks. (#1559)
  • Added Qwen skill ledger hook integration. (#1561)
  • Added Qoder CLI observability hook integration. (#1580)
  • Unified Qwen Code hook trace context handling. (#1738)

Codex & OpenClaw Hook Integrations

  • Added observability capability in the Codex plugin. (#1495)
  • Added Codex PreToolUse PII checker hook integration. (#1501)
  • Showed OpenClaw policy hints in hook responses. (#1525)

Scanner & Policy Engine

  • Skipped prompt model downloads when the model cache already exists. (#1467)
  • Added custom PII regex rules. (#1522)
  • Satisfied L1-L3 telemetry requirements. (#1527)
  • Added Chinese prompt-injection and jailbreak rules covering instruction override, authority escalation, encoding evasion, and role-play framing. (#1554)
  • Unified model resources into handles to make prompt scanning resource lifecycle more consistent. (#1553)
  • Made prompt scan mode configurable through environment variables. (#1620)
  • Hardened audit, PII, and notify hook behavior. (#1649)

Skill Ledger Runtime

  • Isolated the skill ledger worker for more reliable hook execution. (#1492)
  • Resolved canonical skill roots for skill ledger checks. (#1558)
  • Exposed skill ledger verdicts to hook callers. (#1577)

Build & Packaging

  • Moved prompt-scan benchmarks to a standalone repository to keep the CLI package lean. (#1557)
  • Rejected stale CLI wheels during packaging and runtime validation. (#1651)
  • Replaced and restarted the daemon service when upgrading RPM packages. (#1681)

Testing & CI

  • Fixed OpenClaw E2E test dependencies by excluding ML packages. (#1631)
  • Fixed skill-ledger E2E test execution on macOS. (#1643)

Documentation

  • Centralized user guides and added documentation lint CI. (#1586)

0.8.0

Build & Packaging

  • Installed the Codex plugin during source builds so source deployments include the same Codex integration as packaged installs. (#1302)
  • Updated source build scripts for the sec-core install flow. (#1348)
  • Fixed system-mode source builds by placing uv-managed Python under the shared sec-core library directory and adding a system install smoke check. (#1400)

Code Scanner

  • Added sensitive file path rules for common agent credentials to block API key exposure. (#1401)

OpenClaw Plugin

  • Hardened OpenClaw deploy compatibility handling and covered deployment edge cases with unit tests. (#1358)
  • Added an OpenClaw plugin cross-version E2E matrix that validates packaged plugin loading, Gateway flows, policy behavior, and observability across supported OpenClaw hosts. (#1372)

Documentation

  • Added bilingual agent-sec-core user guide documentation and documentation maintenance rules. (#1311)
  • Documented OpenClaw plugin deployment, compatibility, and upgrade guidance. (#1370)

0.7.1

Prompt Scanner

  • Degraded scan-prompt to fast mode when model unready; rewrote DENY to WARN and enriched degraded reason with diagnostics. (#1258)

Skill Ledger

  • Clarified skill ledger fallback warnings and sanitized finding summaries. (#1240)
  • Tamed ledger reconcile noise and typed live-root skip errors. (#1232)

Security Observability

  • Added observability mapping for new pii_scan at before_tool_call & after_tool_call. (#1229)

0.7.0

Codex Plugin — Full security integration for OpenAI Codex

  • Added codex-plugin with code scanning, prompt scanning, skill ledger, and PII checking hooks. (#1074)
  • Supported packaging codex-plugin into RPM. (#1138)
  • Fixed codex-plugin paths in Makefile and CI for correct RPM install verification. (#1165)

Code Scanner

  • Added code-scanner LLM mode for AI-assisted security analysis. (#1108)
  • Added code-scanner static rules for expanded coverage. (#1033)

Prompt Scanner

  • Added L4 multi-turn intent detection with ollama model service. (#1060)
  • Routed prompt scan to daemon and added prompt model preload for reduced latency. (#786)
  • Controlled prompt scan call to use daemon by env variable. (#933)

Skill Ledger — Activation daemon and policy engine

  • Added Skill Ledger activation daemon for background integrity monitoring. (#857)
  • Added runtime activation resolver for skill trust decisions. (#826)
  • Added skill ledger activation policy for configurable enforcement. (#944)
  • Updated skill ledger activation and event contracts. (#983)
  • Updated Skill Ledger hook defaults and reconcile notify behavior. (#1086)
  • Aligned skill ledger hooks across all agent platforms. (#1135)
  • Resolved Skill Ledger FUSE and unmanaged roots handling. (#1141)
  • Fail-open unsupported Hermes skill ledger scenarios. (#1155)

Daemon & Telemetry

  • Added daemon service with systemd integration and RPM build support. (#1090)
  • Exposed SQL query endpoint at daemon for observability queries. (#1042)
  • Enhanced daemon logging including requests and jobs. (#871)
  • Added telemetry schema definition and SLS JSONL writer. (#977, #1008)
  • Passed agent_name to telemetry data for multi-agent identification. (#1032)
  • Added logging system for structured agent-sec-cli output. (#651)
  • Added security daemon socket fallback under /run/user/<uid> for user-scoped deployments. (#1129)

PII Scanner

  • Extended PII scanning coverage with additional pattern detectors. (#925)

Security Observability

  • Added session report command for post-session security summaries. (#703)

Sandbox

  • Converged sandbox trigger rules for consistent enforcement. (#979)

Adapter & Build

  • Added ANOLISA CLI component.toml for adapter manifest integration. (#1067)
  • Added systemd-rpm-macros as RPM build dependency. (#1156)

0.6.0

Self-Protection — Tamper-resistance for agent-sec-core itself

  • Added self-protect code-scan rules that block disabling/uninstalling agent-sec plugins on OpenClaw and Hermes. (#692)
  • Optimized self-protect rules in code-scan to eliminate false positives on prefix-matched plugin names and cover Hermes uninstall/rm patterns. (#710)

Prompt Scanner

  • Unified prompt-scan warning format across cosh-extension, hermes-plugin, and openclaw-plugin with structured fields (threat type, risk level, interception stage, model confidence). (#709)

Agent-Sec-CLI

  • Added daemon process for agent-sec-cli to amortize startup latency across hook invocations. (#677)

Adapter & Manifest

  • Added standalone ANOLISA adapter entry anolisa-for-openclaw to package sec-core OpenClaw adapter scripts and drive install/detect/uninstall via the adapter manifest. (#549)
  • Added Hermes adapter runner: refactored the OpenClaw entry into a target-agnostic anolisa-adapter-runner and added anolisa-for-hermes wrapper, with per-agent adapter directory layout under sec-core. (#617)
  • Centralized sec-core adapter manifest parsing across adapter scripts and moved the manifest under the cli package. (#617)

OpenClaw Integration

  • Normalized OpenClaw state directory handling: use OPENCLAW_STATE_DIR for adapter filesystem state, unset OPENCLAW_HOME when invoking the OpenClaw CLI, and aligned plugin install/list/uninstall handling. (#641)

0.5.0

PII Scanner — Personal information leak detection

  • Added PIIChecker scan CLI with text/file input, regex/validator-based detection, redaction, and security middleware integration. (#525)
  • Added PIIChecker hooks for cosh and OpenClaw with stdin-based input passing. (#539)
  • Added Hermes PII checker hook. (#556)
  • Fixed scan-pii module mode detection via subprocess. (#540)

Security Observability — Agent run metrics & posture insights

  • Added security observability schema, metrics definition, and CLI with jsonl writer for agent runs. (#488)
  • Added openclaw plugin for security observability. (#515)
  • Added cosh hook for security observability. (#528)
  • Persisted observability records to sqldb with CLI review command. (#544)
  • Added observability plugin for hermes. (#553)
  • Correlated security events with observability events and supported batch query. (#578)
  • Respected trace-id filter in count queries. (#595)

Hermes Plugin — AI Agent integration framework

  • Added hermes-plugin framework with abstract hook class and code scan capability. (#536)
  • Added Hermes prompt-scan capability. (#579)
  • Added Hermes PII checker hook. (#556)
  • Added Hermes skill ledger hook. (#565)
  • Added observability plugin for hermes. (#553)
  • Supported correlation context in hermes agent plugin. (#590)
  • Added hermes plugin install for rpmbuild and build from scratch. (#577)
  • Stabilized Hermes skill-ledger warning delivery for non-pass skill checks. (#600)

Correlation & Tracing Context

  • Unified caller tracing context across CLI, OpenClaw, and cosh with --trace-context JSON and SQLite schema v2. (#569)
  • Supported correlation context in hermes agent plugin. (#590)
  • Correlated security events with observability events. (#578)

Skill Ledger

  • Integrated code-scanner with skill-ledger for unified security assessment. (#505)
  • Updated skill ledger security interactions. (#529)
  • Made openclaw skill ledger approval configurable. (#575)
  • Added Hermes skill ledger hook. (#565)
  • Refined skill ledger scan workflow and aligned documentation. (#529)
  • Included skill-ledger e2e in install flows. (#573)
  • Fixed skill-ledger hook scope limitation. (#497)
  • Fixed managed skill dirs for discovery. (#510)
  • Expanded home paths for skill-ledger. (#596)
  • Hardened skill ledger recovery and key UX. (#575)

Code Scanner

  • Added code-scan requireApproval config for openclaw. (#560)
  • Added OpenClaw enableBlock hook policies. (#586)

Security Middleware & Event System

  • Fixed TOCTOU race condition at sqldb read path. (#546)
  • Made SQLAlchemy lazy import for non-DB subcommands. (#581)
  • Lowered frequency for SQL maintenance operations. (#546)

Prompt Scanner

  • Added Hermes prompt-scan capability via hermes plugin. (#579)
  • Fixed warmup detection from error-string matching to file-based check. (#500)
  • Fixed prompt text passing via stdin instead of argv. (#579)

Toolchain & CI

  • Added build-all support with local space install for sec-core. (#527)
  • Added hermes plugin install for rpmbuild and from-scratch build. (#577)
  • Included skill-ledger e2e in install flows. (#573)
  • Added adapter manifest for capability discovery. (#577)

0.4.0

Prompt Scanner

  • Prompt scanner hook now asks user on missing model instead of fail-open. (#463)
  • Added prompt injection detection benchmark dataset and evaluation toolkit. (#464)

Security Middleware & Event System

  • Refactored security_events SQLite storage to SQLAlchemy ORM with multi-table extensibility and typed repositories. (#459)

Skill Ledger

  • Fixed sign-skill auto-register config (exact awk match) and parse openclaw stdout unconditionally. (#445)
  • Unified XDG paths under agent-sec/skill-ledger vendor namespace. (#445)
  • Unified single-skill verify into structured result for consistent output. (#445)
  • Converted integration tests from subprocess to Typer CliRunner. (#445)

OpenClaw Integration

  • Registered plugin at openclaw gateway explicitly to support Gateway startup planning. (#446)

Refactoring

  • Removed deprecated agent-sec-core skill directory; aligned README and spec with agent-sec-cli workflow. (#454)

Toolchain & CI

  • Added coverage report for sec-core CI. (#431)
  • Enabled rpmbuild and e2e test CI for main branch. (#432)

0.3.0

Prompt Scanner — Multi-layer prompt injection & jailbreak detection

  • Added prompt injection/jailbreak detection scanner architecture with L1 rule engine (YAML-based) and L2 ML classifier (Prompt Guard 2). (#253)
  • Integrated prompt scanner into cosh hook and openclaw plugin with security middleware lifecycle. (#261, #294)
  • Added list-scanners command, improved CLI help, and made --scanner-version optional. (#284)
  • Added prompt scan summary and backend tests. (#294)
  • Added prompt-scanner skill definition. (#256)
  • Added model warmup, audit logging, and comprehensive documentation. (#253)
  • Stabilized batch scanning and verdict logic with thread-safe model loading. (#253)
  • Unified prompt scanner response to use "ask" instead of "block". (#341)
  • Added prompt-scanner e2e test suite and Makefile target. (#352)

Code Scanner — Static code security analysis

  • Added code scanner component with rule-based detection for obfuscation, permission abuse, and more. (#234)
  • Integrated code scanner into cosh hook (with ask decision support) and openclaw plugin adapter. (#234)
  • Added code scanner CLI entry, error codes, and unit tests. (#234)
  • Fixed code scan bugs and added e2e test. (#342)

Skill Ledger — Skill integrity tracking and signing

  • Added skill-ledger CLI with middleware integration for skill integrity verification. (#252)
  • Added skill-ledger skill definition. (#266)
  • Added skill-ledger cosh hook for PreToolUse and openclaw-plugin capability. (#292, #281)
  • Improved skill-ledger CLI and cleaned up imports. (#284)
  • Restructured skill-ledger config defaults and documentation. (#296)
  • Aligned skill-ledger tool name and added path validation. (#317)
  • Reworked skill-ledger status, output, and check signing. (#335)
  • Skill-ledger hook hardening, e2e suite, and posture integration. (#339)
  • Known limitation: skill directory resolution assumes dir name matches SKILL.md name field; see #381.

Security Middleware & Event System

  • Added security middleware framework with unified CLI entry point and metrics integration. (#121, #220)
  • Added sqldb writer & reader with query command at CLI interface for security event persistence. (#254)
  • Fixed cross-process event loss in SecurityEventWriter. (#226)
  • Applied corruption whitelist to stop false-positive DB rebuilds. (#338)
  • Added e2e test and fixed bugs revealed during testing. (#330)

Linux Sandbox

  • Added sandbox guard and failure handler hooks. (#362)

OpenClaw Integration

  • Added hook plugin for openclaw with integrated security scanning capabilities. (#242)
  • Added jq requires for openclaw hook package. (#370)

Cosh Extension Integration

  • Integrated with new cosh extension API and added builtin commands. (#302)

Performance

  • Lazy-load ML dependencies to speed up non-ML subcommands. (#318)

Toolchain & CI

  • Migrated Python toolchain to uv package manager and pinned Python 3.11.6. (#227)
  • Added sec-core RPM build CI and adapted nightly build pipeline. (#295)
  • Initialized code format check CI with python-code-pretty. (#229)
  • Added e2e test in RPM build CI. (#369)

Bug Fixes

  • Preserved seharden wrapper defaults. (#236)
  • Removed dynamic import at middleware router. (#277)
  • Improved missing loongshield guidance. (#289)
  • Fixed build errors. (#288)
  • Removed openclaw hook examples and fixed documentation. (#282)

0.2.0

  • Added Hardened skill signing pipeline and added .skill-meta layout. (#129)
  • Added Cargo.lock to version control. (#149)
  • Added make install-sandbox target. (#68)
  • Fixed bubblewrap version compatibility for --argv0 option. (#112)
  • Changed Refactor SKILL.md to executable protocol and align sub-skills. (#130)

更新日志

0.16.0

不兼容变更

  • 解析到同一 tokenizer 的模型别名共享一个缓存槽位,自动别名不再作为独立的底层注册项出现。

新功能

  • 新增密钥文件读取保护:仅拦截模式的模板可阻止选定 Agent 进程树读取显式配置的密钥文件,通过独立 HTTP 路由提供。
  • 观测 Qoder CLI 网关调用,记录提示词、工具、会话 ID 和 token 用量;schema 6 的默认配置为新安装提供 Qoder 发现与网关规则(升级需手动补充,见升级说明)。
  • 轨迹采集新增 Cline 会话解析器。
  • token 节省会话支持按展示指标排序,CSV 导出与页面顺序一致。

修复

  • 保留 Codex 请求、回答和流式输出中的 shell 调用,保留 Codex 结果归属,并纳入仅末尾出现的 Codex 用量。
  • 修复 Gemini 会话列表打开、工具响应隔离、推理 token 计数、生成配置读取、剩余停止原因分类,以及回退快照清理。
  • 正确读取空的 Anthropic 用量、SysOM 响应封装与 tool_use 快照、DeepSeek 资源停止原因,跳过 Responses 子端点用量并标注 Responses 与原生操作。
  • 空的工具输出和结果统一为空值,解析以字符串编码的块数组,保留字符串形式的助手回复、原生停止字符串和未知风险原因文本。
  • 保留未匹配的批量结果、批量工具完成时间、批量导出中的已记录标识以及本地会话用量。
  • 隔离并发存储写入,原子写入 Agent 配置。
  • LLM HTTP 请求按单次尝试限制超时,LLM 偏好查询增加开关,防止优化接口被重定向,非对象轨迹原样返回。
  • 合并重叠的推理窗口,统计结构化排查消息,要求完整的 RSS 证据,修正带符号的 RSS 趋势结论,拒绝非有限的采集耗时,并防止 token 上限比例除零。
  • 上报进程终止状态,重放中断的恢复阶段,规范导出结果 ID,统一工具失败优先级。
  • 提供方已声明成功的工具结果按成功保留,不再根据结果文本重新判定。
  • post-edit 格式化 hook 在载荷的 edits 不是列表时保留已解析的文件路径,不再静默跳过格式化。
  • 降低 x86_64 与 aarch64 enforcer 对象中 recvfrom SCM_RIGHTS 路径的 eBPF 栈占用,使其低于校验器 512 字节上限。
  • 策略编译器中的端点“全不匹配”哨兵值不再可能被命中。
  • 身份切换时重置因果分析面板。
  • 加固 benchmark 评测:容忍部分产物缺失、仅统计可用检查、跳过无法分组的恢复记录、空评估块视为门禁失败、停止 tracer 与 server 进程组,test.sh 失败时返回非零退出码。

文档

  • 在 dashboard 指南中说明 LLM 查询的鉴权方式。

升级说明

  • 配置 schema 从 5 升到 6。升级只按顶层节合并:已存在的节(如 cmdline、https)原样保留,不会补入新的默认条目。因此从 0.15.3 沿用的配置不含 Qoder CLI 规则;如需观测 Qoder CLI,请参照随附默认配置 src/agentsight/agentsight.json,在 cmdline.allow 中添加 agent_name 为 QoderCLI、规则为 qodercli*、*/qodercli*、*qodercli* 的条目,并在 https 规则中加入 *.qoder.sh。
  • 升级前的文件会保存在当前配置旁,命名为 <文件名>.bak.<时间戳>,例如 RPM 安装为 /etc/agentsight/config.json.bak.<时间戳>。
  • enforcer 的 map 布局有变,升级时会重新安装过期的已 pin 引擎,而不是复用不兼容的 pin。

0.15.3

修复

  • 成本分析保留最终 token 用量,最终回答限定到最新轮次。
  • 保留 ATIF 开发者指令和已记录的工具完成时间。
  • 解码多层 HTTP 内容编码,缺失的吞吐量观测保持未知。
  • 保留 Hermes 兜底调用标识,清除空的 Hermes 历史记录。
  • 写入权限预检覆盖旧版防护,修复文件防护的内容丢失问题。
  • 接受 benchmark 结果前校验资源采集质量。

变更

  • ANOLISA 发现契约的文件归属仍由发行包管理。

0.15.2

新功能

  • 结构化文件保护策略正式生效:对策略路径分类、转换为 map 条目并加载执行,覆盖内核级删除、重命名/交换以及普通文件写入的拦截。
  • 对外上报结构化文件保护能力。

变更

  • 可通过 core 和 plugins RPM 分别选择安装运行时和 DSH 集成:agentsight-core 包含程序、配置和服务,agentsight-plugins 包含 DSH 集成,agentsight 保留为兼容包、精确依赖同版本的 core。
  • 程序安装到系统二进制目录;make install 改为直接安装预编译文件,且不启动服务。(破坏性变更)

测试

  • 端到端覆盖结构化策略,并校验命中的文件防护审计规则。

0.15.1

不兼容变更

  • 统一文件安装方式:make install 改为安装预构建文件且不再激活;新增 make install-core 与 make install-plugins,分别安装程序、配置与服务,以及原生宿主集成资源;本地安装默认 PREFIX=/usr/local 且 AWPRJ 为空,DESTDIR 仅作为打包根前缀。make build 仍通过根 Makefile 编译组件。

新功能

  • 结构化文件保护开始生效:已激活的策略会拒绝 unlink、rmdir、跨边界的改名与交换,以及对受保护普通文件的 write/pwrite,拒绝事件会标明具体操作。截断、O_TRUNC、共享可写 mmap 与动态挂载仍不在范围内,也不保证文件内容不可改。
  • ActPlane 在 enforce 模式下接受结构化策略,健康响应上报四项受支持的结构化能力;集成文档改为说明普通写入与 Apply 的稳定性边界,不再是一概拒绝。
  • 支撑上述能力的结构化文件保护策略契约:保护项归一化、静态与动态重解析的保护拓扑、路径解析无竞态、兼容旧的 path_rename hook、策略激活与卸载由自身管理、策略 map 事务化暂存、策略代次写入 pinned map,并定义结构化的策略 map ABI。
  • 新增资源上限检查。

变更

  • 可通过 core 和 plugins RPM 分别选择安装运行时和 DSH 集成。
  • RPM 按文件归属拆分为 agentsight-core 与 agentsight-plugins,core 拥有服务资源并可独立安装。

性能

  • 缓存 GenAI 标识哈希,SSL 可执行文件扫描改为向量化,采集数据库查询改为流式。

修复

  • 说明文件防护的激活条件、上报文件防护能力,并校验文件保护边界。
  • 按架构分发 BPF 产物,enforcer 的 payload 随构建目标选取而非宿主架构。
  • SSL uprobe 提前挂载以捕获首个 TLS 连接;补充已验证的 Codex TLS 偏移;限制未知进程的注册量。
  • 保留 Qoder 的部分批量用量、仅含用量的批量记录、裸 JSON 形式的 SSE 用量,以及最后一份可用的批量用量。
  • 正确处理 Gemini 成功的工具调用、保留 Gemini 函数响应、支持回放 Gemini 会话预览。
  • 保留本地会话标识、将本地回复关联到对应调用、区分被回显的重复工具调用 ID、完整比较重复轮次。
  • schema 迁移时保留用户配置;会话控件支持无障碍访问。
  • 激活失败时上报清理错误,且不丢失原始的编译或内核失败分类。
  • 保留部分完成的 campaign 报告与 worker 结果,资源构建发布加锁,拒绝不可能的 benchmark 指标,保留缺失的丢弃计数,按阶段限定恢复证据,校验已执行的回归命令。

升级说明

  • enforcer 控制协议从 v4 升到 v5,不向后兼容:0.15.0 的客户端连 0.15.1 的 enforcer 时,所有请求(含健康检查)都会被判为 UnsupportedVersion 而拒绝。客户端与 enforcer 必须一同升级。
  • full 与 agent-file-guard 升级会替换过期的 v4 hook 布局,而不是在普通写入策略未生效的情况下静默接受。
  • 上线前核对上述安装目标:make install 不再激活所安装的内容,依赖原单目标行为的部署需显式调用 make install-core 与 make install-plugins。

0.15.0

新功能

  • 轨迹采集器和本地查看器可发现 ~/.gemini/tmp/<project>/chats/ 下的 Gemini CLI JSONL 会话,识别项目名及子 agent 轨迹;查看器也可打开旧版整文件会话。子 agent 的组合 ID 暂不关联父会话记录。
  • 独立 analyze CLI 和批量分析脚本新增 --stats-only,可在无 API 凭证、无 LLM 请求的情况下计算本地 perf/cost 统计;不支持 accuracy --stats-only,不加此参数时保持原有模型分析模式。
  • Rust 库新增无需挂载探针的 PipelineCore API,支持事件解析、关联与分析;并公开导出 agentsight::analyzer::HttpContext,库调用方可直接使用 AnalysisResult::HttpContext 携带的 HTTP 数据类型。现有命令语法和采集行为保持不变。

修复

  • 有时间戳时,Tokenless 节省量按请求时间窗口限定,缩小 Dashboard 范围后排除历史优化记录。本地旧版 stats.db 的表缺少 timestamp 时仍保留全部匹配记录,节省量可能继续包含窗口外的优化。
  • mode 缺失、为 null 或大写的 Tokenless 记录也计入已应用的节省量,仅排除 dry-run 记录。
  • 连接中断后重建流式响应时,保留 Anthropic 服务端工具与 MCP 工具调用及其参数。
  • 工具结果以 JVM 或 SQL 异常开头时,会话评分与中断检测均将其识别为工具失败,与 grounding 分类器保持一致。
  • Token 拆分可保留非流式 Anthropic、Responses、Gemini 及旧 completions 的回答和工具调用,避免输出被计为零。
  • 从已解析消息生成 Gemini 调用时,即使没有原始 HTTP body,也保留提示、回答、工具和停止原因。
  • DeepSeek Harness 的 agentsight_status 工具通过文本内容块渲染结果,使宿主和模型能获取已校验的状态。
  • 在 Python 可执行文件和共享 libpython 中识别 SSL 符号,接入已有 TLS 采集路径;保留镜像读取重试和启动错误原因。
  • 故障请求未完整送达时判定 benchmark campaign 失败,避免错误报告为通过。(#8890)
  • 恢复中断的 benchmark campaign 时校验检查点、归档无效结果并重新执行,检查点改为原子替换。(#8857)
  • 在网络或文件操作前拒绝无效 benchmark 时间参数,防止 PID 复用污染进程存活与资源证据。(#8889, #8856)
  • 正确读取含 URI 标点的实际采集数据库路径,损坏 JSONL 行不影响其他有效记录,并报告丢弃记录的告警。
  • 缺失或无效资源观测会中断恢复窗口,异常最终丢事件计数不再证明改善,并报告无法证实的恢复条件。
  • 正确读取新版 h2load 的请求延迟汇总,保留平均值、中位数、p95 和 p99,不从相邻行拼接字段。
  • 修复 macOS 发布构建,使 0.15.0 发布产物包含 macOS 安装包。
  • benchmark campaign 产物改为原子发布,运行被中断时不会留下写入不完整的清单。

性能

  • benchmark 延迟分位数复用一次排序的快照,并释放未使用的回退样本,降低长期运行的计算与内存开销。(#8888)

文档

  • 用户手册目录结构扁平化。
  • ANOLISA 集成容器镜像源文件从 docker/ 迁移到 distribution/docker/,AgentSight 部署文档中的入口脚本路径同步更新;CLI 语法、镜像 tag 和容器行为保持不变。

0.14.3

本节统一汇总 0.14.2 与 0.14.3 的发布改动。0.14.2 中补记的已发布修复在下方单独标明。

新功能

  • 新增只读采集 Hermes state.db 轨迹和发现 Claude SDK 会话的能力,工具结果按调用 ID 匹配。(#8713)
  • 新增 Gemini CLI 会话文件到 ATIF 的转换,支持旧版 JSON 文件及会话修正记录的回放;本版尚不支持自动发现 ~/.gemini 下的会话文件。(#8801)
  • 为适用的中断查询增加类型、状态和 agent 过滤,汇总总量可限定到单个 agent,中断解决操作支持 JSON 输出。
  • 新增无需分析的批量 ATIF 导出,并支持配置批量分析并发数。
  • 新增 token --db、summary --tokenless-db 和按 agent 输出 JSON 指标的能力,便于离线查询与脚本调用。
  • 新增远端 Tokenless 统计,查询前刷新节省量,仅统计实际应用转换所节省的 Token。
  • 新增按天统计技能热度以及 benchmark 中的 RSS/CPU 指标。

性能

  • 降低采集和数据库处理开销,批量 JSONL 转换改为流式处理,复用 benchmark 指标快照。
  • 通过 runtime_limits.cpu_budget_percent 增加协作式 CPU 节流,默认目标为单个逻辑 CPU 的 25%,0 表示关闭;默认连接容量从 32 提升到 128。

修复

  • 将网关前缀、厂商名称和带日期的模型别名映射到可用 tokenizer,覆盖 Gemini 2.5/latest/preview、GLM 4.5、Qwen 3.6、Kimi K2、GPT-5 及 OpenAI 音频/实时系列。
  • 正确保留 Anthropic、Gemini、Responses、OpenAI 兼容、GLM、Codex 和 DashScope 的回答、推理、拒答、服务端工具块与停止原因,覆盖未完成、过滤和非流式响应。
  • 流式、缓存和回放用量避免重复计数,保留完整 Token 观测;模板渲染失败时回退到原始 Token 计数。
  • 并行工具调用与结果按 choice 和调用 ID 正确关联,保留部分工具输入,准确记录工具执行结果与首次输出时间。
  • 保留待处理 SysOM 记录的元数据和会话归属;批量转换保留主会话、仅含推理的步骤及并行工具结果,单个分析失败不影响其他会话。
  • 避免缓慢 TLS 握手阻塞新连接,隔离已取消的 HTTP/2 流,临时 HTTP 响应之后保留最终响应头,并报告 HTTP/2 首 Token 延迟。
  • 将自定义 serve --db 文件纳入存储预算,支持带 BOM 的存储、优化和 Tokenless 配置。
  • 修改存储设置及调用产生 LLM 费用的接口须提供凭证;使用 Agent Security V2 socket,正确匹配 IPv4 映射地址规则,并限制 Agent Security 响应行长度。
  • 没有 GenAI 记录时也可查看已采集轨迹;刷新审计过滤与轨迹节省量,安全截断 UTF-8 预览,内容变化时清除过期模型标签。
  • 改进会话搜索、偏好计数和因果证据匹配;区分已处理与未解决的工具失败,恢复结论须有连续证据支撑。
  • 记录空闲 agent 的 OOM 中断并避免重复报告,保留截断轮次状态,显式处理异常计数器、缺失 CPU 测量及读取失败。
  • 复用全局 Prometheus recorder 并在 worker 启动前初始化指标;静态 SSL 探测跳过 Python 可执行文件。

0.14.2 中补记的已发布修复

  • agent 退出时保留无响应体的调用;仅含回顾的会话可正常查看,分析器记录分类与会话聚合正确。这些修复已包含在 0.14.1 中,此处用于统一发布汇总,不属于 0.14.3 的新增行为。(#7271)

升级说明

  • 上线前核对 CPU 节流与连接容量;已有配置中显式设置的连接容量保持不变,CPU 节流是协作式目标而非硬配额。
  • 修改存储设置或调用产生 LLM 费用的接口的脚本需要提供凭证。轨迹采集仍须显式启用;采集 Hermes 需要能访问其数据库和 WAL 文件。

0.14.2

修复

  • 补记 agent 退出时保留无响应体调用、仅含回顾的会话可查看、分析器记录分类与会话聚合等已发布修复;代码已包含在 0.14.1 中。(#7271)

0.14.1

新功能

  • 查询类命令支持 --db 参数。(#7478)
  • 对未知可执行文件做内容探测以识别静态 BoringSSL,并缓存未命中结果。
  • 支持显式指定预编译目标,CI 构建 agentsight 预编译产物。

修复

  • 将 OpenAI、Claude、Qwen3、InternLM、Baichuan、phi-3-small、yi-9b-chat 等模型名映射到真实可加载的 tokenizer。
  • 解析 Gemini 流式响应、采用 Anthropic 最终用量、合并整条消息形式的 chat SSE 快照,并支持以 CR 结尾的 SSE 行。(#7329, #7193, #7398)
  • 聚合先于请求结束的 HTTP/2 响应,仅在行边界截断 chunked 结束符,并使此前未生效的 HTTP 配置项生效。(#6562)
  • 无索引与无名称的工具调用分开记录,按工具调用匹配迟到的结果,保留混合工具结果。(#7385)
  • 按地址豁免可信 sink,exec 通配 basename 可匹配任意命令,所有旧版规则动作均映射到对应的管控模式。
  • 保留 JSON 数字键、payload 中的 null 成员、证据中的数值及完整成本签名;报告保留全部 skill,CSV 导出容忍空 agent 名称。(#7451, #7032, #7403, #7413)
  • 将 CJK 标点与管道符视为字面分隔符,系统时钟早于 epoch 时健康检查仍可正常上报。(#7488, #7479, #7239)
  • 在过滤器、token 拆分与模型序列中合并仅大小写不同的 agent 与模型。(#7456, #7184)
  • SQLite 维护任务相互隔离,opt-store 迁移串行化,清理在容量上限内停滞时给出告警。
  • 限制 payload 内存生命周期与防护扫描目录范围。(#6781)
  • 加强审计时间窗、ATIF token 总量与会话 ID、containment 快照及 grounding 证据匹配的校验。(#7326, #7467)
  • 修复 Dashboard 翻页、排名刷新、仅缓存步骤指标、空闲间隔与时间戳精度问题。(#7183, #7093, #7091, #7089, #7095)
  • 允许仅含回顾的会话生成记录,保留已采集的子会话,拆分 analyzer 调用类型。
  • 仅服务端使用的模块改由 server feature 控制编译。

0.14.0

新功能

  • 统一 SQLite 存储总容量上限(默认 2200 MB),优先裁剪最大的数据库;维护任务会重读该上限,无需重启。

修复

  • 修正 Anthropic、Gemini、Codex 与 Responses provider 的流式内容、推理、工具调用、响应 ID、结束原因和 token 用量解析及统计。
  • 提升 Agent 发现、轨迹过滤、复用标签、语义搜索、Dashboard 指标、节省率和中断聚合的准确性与稳定性。
  • 加强 enforcement、凭证发现、IMDSv2、BPF 轮询、进程重启、OOM 检测与审计/事件校验。
  • 使 SQLite 维护、存储预算、UTF-8、SSE/HPACK 解析及时间处理能够应对异常和边界输入。
  • 支持旧内核 enforcement、inode guard 包装标签、旧 function_call 工具请求及更多进程/文件引用格式。

测试

  • 扩展 provider、SLS、轨迹、Dashboard 过滤、存储预算和 enforcement 的回归覆盖。

0.13.1

新功能

  • 新增 JSON 输出与优雅的 CLI 错误提示。

修复

  • 命名空间 PID 解析为宿主 PID,并做 init namespace 自检。(#3041)
  • 主日志器遵循 RUST_LOG 正则。(#3186)
  • 为 5.10/6.6 内核的 file-delete-guard 增加 inode guard 支持。
  • traces 列表中移除 trace_id 别名。(#3261)
  • 修复 enforcer ringbuf 消费者在 mmap 推进后的陈旧文件描述符。
  • 加强凭证发现逻辑。
  • 将 drain 触发条件固定为 membarrier。
  • 新增 token-plan provider 预设。
  • 从请求工具定义中补全空的 tool_call 名称。
  • 记录语义搜索降级原因。(#3443)
  • 加强 SQLite 生命周期管理。
  • 将 qwen3.8-max 映射到对应 tokenizer。(#3409)
  • agentsight-enforcer 升级后自动恢复旧版遗留的 enforcement 布局,文件删除防护与健康检查不再需要人工清理才能恢复。(#3445)
  • 删除并重建 binding 时保留应用的进程树覆盖。(#3370)
  • 拒绝不受支持的 audit case 事件过滤条件,避免静默忽略。

0.13.0

新功能

  • 新增 GET /api/preferences 与 GET /api/preferences/export,从近期会话中识别用户的工作习惯(语言偏好、先出方案再动手、要求补测试、纠正模式、常用工具倾向),并通过 /api/preferences/turns 返回本次分析所依据的用户输入。分析在请求时实时计算,Linux 读取 genai_events,其他平台读取已采集的轨迹,因此不产生需要迁移或会过期的派生数据。
  • 新增 GET /api/trajectories/steps,按派生类别(user_input、system、agent_message、thinking、tool_call、tool_result)检索 ATIF 步骤,并随每个命中返回其上下文步骤。类别是多标签的:同一个 agent 步骤可能同时包含消息、推理、工具调用与观测结果。
  • 新增可复用轨迹标注体系:为轨迹打上可复用分诊标签、支持人工裁定标签、新增复用标签评审页,并将搜索限定为提供已标注的轨迹历史。
  • 为 5.10/6.6 内核的 file-delete-guard 新增 inode guard,含域隔离、违规事件与启动清理。

修复

  • macOS trace 路径初始化日志,使轨迹采集失败能够暴露而非被静默丢弃。
  • 新增 token-plan provider 预设。
  • 修复 enforcer ringbuf 消费者在 mmap 推进后的 fd 失效问题。
  • traces 列表中移除 trace_id 别名。(#3261)
  • 主日志器遵循 RUST_LOG 正则。(#3186)
  • 命名空间 PID 解析为宿主 PID,并做 init-ns 自检。(#3041)
  • 先创建 conversation_id 列再建其索引。(#3378)

0.12.1

破坏性变更

  • 内核事件时间戳对齐:BPF 单调时钟改与实时时钟校准,不再基于容器启动时长。当时处于排队中的事件其历史墙钟时间无法重建;已持久化的记录不受影响。

新功能

  • 支持采集 cosh-ng 的 rustls 明文,并按名称挂载 cosh 明文探针。(#3191)

修复

  • token 总量统计不再重复计入缓存 token。(#3081)
  • 静态 SSL 特征扫描改为流式处理。(#3087)
  • SSL uprobe 重挂载 TTL 缩短至 30 秒。
  • 拼接被分片的 HTTP 响应。
  • 收到 SSE 结束标记时完结 h2 流,并正确统计通过请求头而非消息体开关声明的流式调用。(#3147)
  • 合并长时间空闲后恢复的调用所产生的重复记录。
  • 启动时数据库清理遇锁重试,并识别启动恢复中的结构化 oom-kill 信息。(#3135)
  • 识别带 --max-old-space-size V8 参数启动的 OpenClaw 网关。
  • 补充 agentsight-enforcer 日志。

0.12.0

新功能

  • 新增 --no-ebpf 仅轨迹采集模式,支持 eBPF 不可用的环境。
  • 支持 DashScope/Bailian 原生协议。(#2954)
  • 新增 Kubernetes DaemonSet 打包。(#2976)
  • 监控 Agent 资源使用情况。(#3005)
  • 因果归因基于确定性、可复核的证据进行判断。(#3011)
  • 新增仅依赖 LSM 的 Agent 文件删除防护 profile,并上报其能力。(#2979)
  • 新增 vendored ABI guard、一键审计防护和 Dashboard 联动。(#2775)

修复

  • 数据库清理跳过 VACUUM,避免触发 cgroup OOM。(#2916)
  • 合并跨事件的 Anthropic SSE Token 用量。(#2920)
  • 数据目录位于 overlay 存储时输出告警。(#2977)
  • 通过可配置 procfs 根目录解析 PID。
  • 按 session 统计 conversation 数量。(#3014)
  • 为因果归因保留 tool 结果。
  • 同步 ActPlane policy delta,并防止 enforcement fail-open。(#2979, #3016)
  • 拒绝超长 enforcement 文件路径,避免静默截断。
  • 从 systemd cgroup driver 布局提取容器 ID。(#2997)
  • 识别现代 OOM-kill dmesg 格式。(#3001)
  • 在初始化 BPF cap_task 状态前解析 PID namespace。(#3022)
  • 将 Dockerfile RPM 包选择固定为 TARGETARCH。(#3025)

文档

  • 补充 --no-ebpf trace 模式文档。

0.11.2

新功能

  • 展示 Agent 历史活动记录。(#2817)

修复

  • SSL uprobe 被内核静默注销后按 TTL 自动重挂载,抓包可自愈,无需重启。(#2792)
  • agentsight 被 OOM 杀死后自动重启。(#2925)
  • 探针事件通道按字节数限制容量,避免事件洪峰时内存激增。(#2925)
  • CLI 与 dashboard 与文档对齐,并去除指南侧边栏重复项。(#2899)
  • 数据库超限时按行比例裁剪。(#2872)
  • 中断事件数据库裁剪至容量上限。(#2823)
  • 保持 binding 接口状态一致。(#2794)

文档

  • AgentSight 用户指南扩展为任务导向页面。(#2825)

0.11.1

修复

  • 中断事件按 session/conversation 拆分时保留无 session 的记录,保证分组计数与总数一致。(#2796)
  • 新增 Bun SSL_do_handshake prologue 模式,支持捕获 Claude Code(Bun 构建,>= 2.1.113)的 LLM 流量。(#2782)

0.11.0

变更

  • 为 RPM 打包发布提升版本号,相对 0.10.3 无功能变更。

0.10.3

新功能

  • 会话列表新增语义搜索。(#2733)
  • 新增 DeepSeek Harness 的 dsh 插件。
  • Agent 发现按类型分组。
  • agent-health 新增 filtered_count。
  • 新增 /api/docs 路由清单。
  • Agent 健康卡片展示 LLM latency 指标。(#2586)

修复

  • 移除 savings 上硬编码的负号。(#2754)
  • 将 analyzer 调用归类为 internal。(#2755)
  • savings 比率以分数形式返回。(#2732)
  • 循环检测中匹配 tool 参数。(#2719)
  • 探测伴随组件以提供 dashboard 能力。(#2696)
  • graceful reap 仅作用于 worker agent。
  • dashboard 中将 no_port gateway 计为健康。(#2694)
  • 全新安装时打印 deadloop 提示。
  • SIGHUP 时重新加载配置。
  • 审计事件补齐 provider 与 session_id。
  • 将 decompress fallback 降级为 debug 日志。
  • Agent 发现中排除 sftp-server。
  • 修正 copilot cmdline 规则拼写错误。

0.10.2

新功能

  • 对 sqlite 存储实施大小上限。(#2644)
  • Dashboard UI 支持中英双语。(#2612)
  • 新增 raw 打包,用于不可变发布产物。(#2550)
  • 新增 LLM latency 指标 API。(#2578)

修复

  • latency agent 匹配不区分大小写。(#2590)
  • 处理 latency 指标 CI 后续问题。(#2583)

0.10.1

新功能

  • 初始化 dashboard i18n,按浏览器首选语言匹配。
  • 在 agent 发现规则中新增 agentscope 框架。
  • 精简组件接入文档并澄清服务启动方式。

修复

  • 将 pause_turn 视为正常 SSE 结束。(#2320)
  • 在 SSE continuation delta 之间保持 tool_call 名称。
  • 在 observer namespace 中报告 pid。(#2360)
  • 校验 enforcer RPM payload、保留 RPM staging 目标,并抑制重复的 enforcer 错误。
  • 将 extractor 错误包装为 JSON envelope,并按变体分类 store 错误。(#2417, #2418)
  • 去重 unavailable 状态并优化 dashboard metadata 同步。

0.10.0

新功能

  • 新增 case containment 生命周期,包含策略交接、无空窗替换、专用 API 与 Dashboard 视图。
  • 新增 system audit 协议、事件存储、Dashboard,并将 audit service 提取为独立 crate。
  • 新增 ActPlane 风险执法,包含 enforcer 服务、硬化文件控制、安全生命周期与风险执法 Dashboard。
  • 将 Codex rollout JSONL 转换为 ATIF,并覆盖 Codex routing 与 tool calls 测试。
  • 在 raw HTTPS 事件上报告 process metadata,并在通用 envelope 中携带。

修复

  • tool-call stop 时保持 turn 打开,并将 user_message_count 加入 turn.id bucket key。
  • 流式解码分片 zstd SSE 响应。
  • 提升 QwenCode trace 数据准确性,并在 agentsight config 中新增 QwenCode allow rules。
  • cosh 重启后保持 session。
  • 映射 cosh session 临时文件写入。(#2080)

0.9.1

新功能

  • 重做 optimization Dashboard 视图,新增基于 detour 的成本浪费分析。
  • 将 agent health 与 interruptions 移至专用 Dashboard 页面。

修复

  • 为 OpenAI(prompt_tokens_details.cached_tokens)和 DashScope(顶层 cached_tokens)响应提取 cache token,并从 cosh-ng adapter prompt 模板提取真实 user query。
  • 捕获通过绝对路径或 node wrapper 启动的 Claude Code。
  • 正常退出时跳过 agent_crash 检测,并在 agent 退出时 flush 延迟的 GenAI 事件。
  • 对非 LLM 路径跳过消息解析。
  • 加密 optimization config API key。
  • 展示已知 agent 规则。

CI

  • 将 eBPF 构建固定到 clang 15,并使用专用 runner pool。

0.9.0

新功能

  • 新增 optimization 分析工作区、API、持久化分析历史,以及 accuracy/performance/cost 审查 Dashboard 页面。
  • 新增 Qoder 轨迹采集、ATIF v1.7 导出、批量分析工具,以及带拓扑视图的 subagent 轨迹导航。
  • 新增 CoshNG 命令行发现规则,并通过命令行上下文归一化 LLM 事件归属。
  • 新增六种中断类型,以及对不可解析 LLM HTTPS 流量的回退捕获。

修复

  • 修复 Anthropic SSE 解析、system prompt 注入与 cache token 核算。
  • 修复 ATIF 批量输出以使用共享 ATIF v1.7 schema,并移除过期 v1.6 路径。
  • 修复 optimization 与轨迹采集的边界情况,包括过期 conversation anchor 和 syscall tracepoint probe attach。
  • 修复 Dashboard 空状态、错误提示措辞、auth loopback 处理与 session 导航行为。
  • 将 raw HTTPS FFI 输出改为 opt-in,并对 OpenAI 和 Anthropic 流跳过重复 SSE 消息解析。

变更

  • 将 optimization 维度分析归组到 per-target run root 下,并将并行 LLM 调用表示为 ATIF subagent 轨迹。
  • 精简并门控默认 SLS 输出,除非显式启用否则不上传 trace 内容。

0.8.1

修复

  • 将 lock().unwrap() 替换为 poison-safe unwrap_or_else 以恢复 mutex。
  • 将 SSL 库归属从 aws-lc/BoringSSL 更正为 OpenSSL 3.x。
  • 将 Claude 进程名加入 BoringSSL 分类。
  • schema 迁移时保留用户配置而非覆盖。
  • 不再自动覆盖无效 JSON 配置;在 ns pid helper 中记录进程 pid 而非线程 tid。
  • 将高频事件日志从 debug 降为 trace 以减少噪声。

测试

  • 扩展 handlers、interruption store 和 token store 的单元测试。
  • 为 mutex unwrap_or_else 变更新增 poison-recovery 测试。

0.8.0

新功能

  • 新增基于 Dashboard token 的认证,auth 配置仅限文件。
  • Dashboard 中新增 LAN/公网 IP 地址展示与中文输出。
  • Dashboard 新增 ECS 安全组指南与 metadata 集成。
  • 新增 conversation grader API 与 Dashboard 控制。
  • 新增 COSH_SESSION_ID 导出,用于 per-run session 关联。
  • 通过 schema_version 自动升级过期配置。

修复

  • 修复 Codex SSL 捕获与 SSE token 提取。
  • 修复误报中断信号。
  • 持久化 idle 流与 tool 结果以避免快照丢失。
  • 显式检测 SSE 流错误。
  • 将 /health、/metrics 和 server auth 限制为 localhost/仅文件配置。
  • 从默认构建依赖中移除 hf-hub git fork。
  • 修复 IMDSv2 token 获取、probe deadline 和 ECS metadata 去重。
  • 修复 RPM 构建以将 agentsight.json 复制到 source tarball。
  • 处理 clippy single_match、嵌套 if-let 和架构边界问题。

测试

  • 新增 Dashboard mock HTTP 和单元测试以满足覆盖率门控。
  • 新增 build_output 和 public_address 测试。
  • 将 probe 测试标记为 #[ignore] 以适配 CI ECS runner。

0.7.1

修复

  • 改进严重级别标签与 agent 侧边栏 UX。
  • 在 summary 命令中展示所有 verdict。
  • 同步 component.toml 版本与 package 版本。

0.7.0

新功能

  • 新增 Codex CLI 适配,采用三级 SSL probe attach(符号表 → 字节模式 → offset 表)与跨 chunk SSE 续接 buffer。
  • 新增安全可观测性 Dashboard 与 server proxy,用于 agent 威胁可见性。
  • 新增内存优化,包含有界事件 buffer、feature flag(features.*)和可配置运行时限制(runtime_limits.*)。
  • 在 AgentsightLLMData 中新增 container_id,用于容器级归属。
  • 从进程环境变量和请求 metadata 派生 session_id,而非消息内容。
  • 在 GenAI 语义事件中新增 call_kind 分类(chat / completion / embedding / tool_use)。
  • 为 agentsight audit CLI 新增 --exclude 过滤以降噪,并在 audit 输出中展示非流式 LLM 调用。
  • 新增统一 agentsight summary 命令用于一次性状态概览。
  • 增强 token 节省页面,包含基线对比、策略分解、行级 diff 高亮与优化建议。
  • 通过 SLS Logtail exporter 上传 skill metrics。
  • 改进 agent health UX:角色徽章(P1/P2)、TTL 清理、进程族分组与 Session ID 帮助提示。
  • 从 health API 过滤客户端进程以减少 Dashboard 噪声。
  • 新增 anolisa component contract 用于 RPM 生命周期集成。

修复

  • 修复 kernel 5.15 上 sslsniff BPF verifier 拒绝,并新增 BPF 加载测试。
  • 修复 traced_processes BPF map 泄漏导致的长时间运行后 uprobe attach 失败。
  • 在 detach 时将 inode 保留在 traced_files 中以防止重复 uprobe Link。
  • 解码压缩(zstd/brotli)SSE 流,使 Claude Code 等 agent 被完整捕获。
  • 加固压缩 SSE 解码以处理部分 chunk 边界。
  • 从非流式和 HTTP/2 响应中提取 token 用量。
  • 修复 udpdns 和 tcpsniff probe 中的 namespace PID 使用。
  • 在容器化环境中为 uprobe attach 剥离 /proc/{pid}/root 前缀。
  • 实现分级 SSL 和 tcpsniff ring buffer 预留以减少事件丢失。
  • 在 filewrite/udpdns BPF probe 中先 clamp 再 mask;将 stdout payload 上限设为 MAX-1。
  • 将 cgroup 门控改为 OR 语义,并新增 trace_cgroup FFI 接口。
  • 收紧 SSE 截断检测,并为延迟 GenAI 调用写入 pending 行。
  • 在 SLS exporter 模式选择中尊重动态 sysom 路径;用 logtail_path 过滤器替换已移除的 sysom_logtail_path。
  • 在启动时校验 ring buffer size 为 2 的幂。
  • 将 feature flag 和运行时限制接入实际运行时代码路径。

重构

  • 将 genai/builder.rs 拆分为 4 个聚焦模块,genai.rs 拆分为 5 个子模块。
  • 将共享 BPF map 打包进 SharedMaps 以减少重复。
  • 提取后台线程模块并支持 stop-signal。
  • 用 if-let / ? 模式替换剩余 unwrap() 调用。

CI 与质量

  • 新增 fmt、clippy、单元测试覆盖率和架构边界检查 CI 门控。
  • 新增 clippy.toml + cargo-deny 用于 lint 和供应链审计。
  • 新增架构边界检查脚本(check-arch-boundary.py)。
  • 为 FFI、unified orchestrator 和 storage 模块新增 scoped AGENTS.md。
  • 定义 Footprint Ladder 用于代码表面增长控制。
  • 新增 agentsight-code-review 和 pr-body develop-skills。

0.6.1

  • 在 trace 模式中新增实时 agent_crash 检测。
  • 新增 OOM 崩溃检测。
  • 新增 cgroup 级事件过滤,兼容 v1/v2。
  • 通过 per-user home 扫描支持 QwenCode skill 发现。
  • 通过动态路径支持 SLS Logtail 激活可逆。
  • 支持通过 token-collector 开关将 ilogtail SLS_LOG_PATH 桥接到 config。
  • 默认 traceEnabled 设为 false,以默认从 SLS 中丢弃对话内容。
  • 当 traceEnabled=false 时从 SLS 上传中丢弃 gen_ai.system_instructions。
  • 将 session_id 和 conversation_id 的派生从 message 内容改为 response_id。
  • 修复 CJK deadloop 检测、kill() 错误检查和 SIGKILL 升级。
  • 通过 VACUUM 优化修复 SQLite 读写竞争。
  • 修复 rpm-build.sh agentsight 构建失败。
  • 修复重复 new+start 时的 allow log path 重新初始化。

0.6.0

  • 新增失控 agent 进程的 deadloop 检测与自动 kill 机制。
  • 新增 retry storm 检测和 /metrics 中断计数器。
  • 新增 BPF 层 HTTP 协议过滤和针对未知 IP/port 目标的通配捕获(*)。
  • 新增敏感消息字段的客户端混合加密。
  • 新增 traceEnabled 配置开关,由 SLS 上传层强制执行。
  • 新增通过 DNS 解析到 tcpsniff BPF map 的 HTTP domain 规则。
  • 新增默认 DashScope HTTPS 规则和 anolisa_release 模块。
  • 新增 tcp_targets 和 input_delta 配置的 FFI 接口。
  • 为 kernel 6.0+ 的 UDP DNS probe 新增 CO-RE 兼容性。
  • 通过 config 热加载支持运行时 SLS logtail 路径。
  • 扩展中断类型并新增 logtail 导出。
  • 将 config 重构为 https/http 规则。
  • 重构按 tool_use_id 查询 stats.db 并统一 savings 展示。
  • 重构从 agentsight.json 加载加密公钥。
  • 修复 HPACK Huffman header 解码。
  • 修复 BoringSSL probe attach、FFI 事件投递和 chunked-body panic。
  • 修复在 event-stream 响应中保留初始 SSE chunk。
  • 修复 c_char / BPF comm 可移植性(i8 vs u8)。
  • 移除死代码和已废弃 API。

0.5.0

  • 新增 Claude Code 支持,包含 BoringSSL 的 SSL probe attach、Anthropic SSE thinking/tool_use 内容块,以及基于 message.id 的 session 关联。
  • 新增 tcpsniff probe 用于明文 HTTP 流量捕获,支持可配置 IP/port 过滤(默认禁用,tcp_targets 为空)。
  • 新增基于 User-Agent 的 agent 检测,带 comm 回退以简化 agent 匹配。
  • 新增 UDP DNS probe 用于 agent 发现(替代 TLS SNI probe),QNAME 解析移至用户态。
  • 新增 TLS SNI probe 模块,并将发现重构为 config 驱动规则。
  • 新增用于已建立 LLM API 连接的连接扫描器。
  • 在 AgentsightLLMData FFI 结构中新增 tools 字段,作为原始 JSON 透传。
  • 在 BPF traced 进程过滤和事件发射中新增容器 PID namespace 支持。
  • 新增 agent 匹配规则,并将 BPF ring buffer 降至 32MB。
  • 在 SLS 日志中新增 uid 字段,使用 OnceLock 缓存和启动校验。
  • 支持基于 profile 的安装。
  • 修复 LLM data 中 duration_ns 计算。
  • 修复进程退出时 SSL probe 的过期 inode 清理。
  • 通过移除 udpdns.bpf.c 中的嵌套 #pragma unroll 和在旧内核上 mask payload_len,修复 BPF verifier -E2BIG 问题。
  • 修复 Hermes agent 架构的 skill 提取。
  • 修复 OpenClaw matcher 中 Node.js process.title 变更处理。

0.4.0

  • 新增分片 SSL write 的 HTTP/1.1 请求 body 重组。
  • 新增基于 cosh 文件系统的 skill metrics 分析。
  • 新增 GenAI 事件的 SLS 上传和 Logtail 文件 exporter。
  • 新增 hermes agent matcher 用于 LLM 进程发现。
  • 在 SSL sniffer 中检测 uv Python 静态 OpenSSL。
  • 移除基于 AK/SK 的 SLS 直接上传,保留 Logtail 文件导出。

0.3.1

  • 修复简化 agent_crash 检测和修复多进程去重。(#411)
  • 修复 audit CLI db 路径使用 SqliteConfig。(#399)
  • 修复在 agent health UI 隐藏 Cosh 并移除 keepalive 支持。(#401)
  • 修复 AGENTS.md 中的 API endpoint 表。(#397)

0.3.0

  • 新增中断检测系统,带 drain 机制和 Dashboard 集成。(#315)
  • 新增 token 节省页面和 API endpoint 用于优化可视化。(#310)
  • 新增复合 token 节省和请求计数追踪。(#320)
  • 新增带 cbindgen 头文件生成的 C FFI API。(#306)
  • 新增 filewatch 和 filewrite eBPF probe 用于文件访问监控。(#308, #309)
  • 支持 cosh 的 SysOM AK/SK GenAI 捕获。(#305)
  • 使用 LLM API response_id 作为 trace_id 并新增 conversation_id 字段。(#304)
  • 从 agent 自身 session 通过 ResponseSessionMapper 解析 session_id。(#303)
  • 修复 interruption CLI 并对齐 conversation_id 命名。(#318)
  • 修复通过支持 snake_case response_id 的 cosh session_id 识别。(#307)
  • 修复 token savings 复合中的错误 tool call id。(#316, #317)
  • 修复标准化 call_id,新增 tool_call_ids 列。(#319)
  • 修复 genai builder 和 storage 中的 session_id 和 response_id 映射。(#321)
  • 修复对话列表中的 token savings 展示。(#322)
  • 修复按 pid 缓存 agent name 用于死进程解析。(#358)
  • 修复移除自定义 db 路径并使用默认路径。(#359)
  • 支持 CI 中 nightly docker 镜像构建。(#302)

0.2.2

  • 支持以 AgentSight 服务启动 backend-server 用于 Dashboard。
  • 修复 Dashboard 前端针对多种 display-size 的动态宽度。

0.2.1

  • 为 agent 发现向 CoshMatcher 新增 /usr/lib/copilot-shell 路径。(#190)
  • 为 genai_events.db 新增 200MB 大小限制以防止无限增长。(#211)
  • 移除返回错误数据的 /api/stats endpoint。(#197)
  • 从 HttpRecord 提取 audit 并过滤非 LLM 调用。(#196)
  • 在 token 查询中使用 --compare flag 时始终展示对比数据。(#194)
  • 修复 README 文档中错误的 discover 命令。(#191)
  • 移除 breakdown 命令并保留 token 消耗注释。(#193)
  • 在 systemd service 文件中用 MemoryMax 替换已废弃的 MemoryLimit。(#181)

0.2.0

  • AgentSight Dashboard Web UI,带实时监控界面。(#74)
  • Agent health 监控,带离线告警和卡死进程 Dashboard 重启。(#158)
  • 从 Dashboard 一键导航到 ATIF trace 分析页面。(#116)
  • /metrics endpoint,暴露标准 Prometheus 格式数据。(#134)
  • 支持 HTTP 2.0 协议。(#147)
  • 支持构建 RPM 包。(#166)

更新日志

本文件记录 cosh-ng 项目的所有 notable changes。

格式基于 Keep a Changelog,并遵循 Semantic Versioning。

[未发布]

[0.29.0] - 2026-11-08

新增

  • 阿里云 ECS 实例无需 /auth 即可直接提问:符合条件的请求自动使用 OS 控制台模型访问,默认模型为 qwen3.7-plus,已配置的 provider 保持生效;/auth 新增身份入口,可切回已保存身份或其他 provider;按 n 可对本次或后续会话关闭自动访问,按 Esc 可取消激活等待且不重放问题 (#9449)
  • skills.system_paths 可按 System 优先级登记额外的 Skill 目录,独立于 cosh 安装包提供的 Skill 集合无需自定义安装前缀即可被发现 (#9460)

变更

  • BREAKING:make install 默认安装到共享的 anolisa 命名空间,把 Skill 与扩展放到 /usr/local/share/anolisa,与 RPM 和 ANOLISA 安装器保持一致;使用 AWPRJ= 可保留此前的独立布局,make layout 会打印解析后的目录 (#9462)
  • Cosh 现在能发现安装在自定义前缀或自定义 XDG 数据目录下的 Skill 与扩展;RPM 与 ANOLISA 安装器会记录实际使用的目录,运行时可据此查找 (#9460)
  • 根目录直接包含 SKILL.md 的目录会作为单个 Skill 加载,其参考文档不再被误判为独立 Skill (#9460)
  • COSH_HOME 可重定位用户扩展目录与状态目录,状态目录仍以 COSH_STATES_DIR 优先 (#9352)
  • 通过 ANOLISA 安装器安装时要求 ANOLISA 0.3.21 或更高版本,组件发现数据由该版本提供 (#9351)

修复

  • cosh-cli checkpoint status 会列出变更检测未运行的工作区,并报告共享监听器丢弃的变更事件数量,负载过高导致变更悄悄停止记录的工作区不再无感知 (#7592)

[0.28.1] - 2026-11-03

变更

  • 可通过组件 Makefile 安装已构建的程序与随附工作流 Skill。

[0.28.0] — 2026-10-25

新增

  • 持久化会话数据现在受单用户预算约束(覆盖所有配置根目录,上限 100 MiB / 7 天):最旧的合格会话会被自动清理,活跃会话持有租约不受影响,损坏或不兼容的数据绝不会被删除 (#7157)
  • 新增 /bug <description> 命令,基于运行时快照白名单(版本、provider/模型、会话 ID、操作系统、shell 身份、安装包类型)生成预填好的 ANOLISA GitHub issue,打印 URL 供检查,并在图形化 Linux 或 macOS 上尽力自动打开;打开或点击链接时,预填字段会随表单加载发送到 GitHub,issue 只有在用户提交表单后才会创建 (#7258)
  • 独立 SLS 遥测通过新增的 os.distro 字段上报操作系统发行版(如 alinux 23、ubuntu 24.04),环境维度统计与 anolisa 统一上报器保持一致 (#8565)

修复

  • 检出到本地的工作区项目不再能削弱 agent 安全设置:agent core 会忽略项目级 config hook、approval_mode 与 allowed_tools;系统/用户级设置以及 shell 侧项目 hook(走独立的内容授权流程)保持不变 (#7244)
  • Shell 命令信任现在绑定到审批时命令的精确字节:仅在空白、引号或换行上有差异的命令变体需要各自单独审批,不再静默共享同一信任;执行结果未知的命令(失败、被中断、超时)会失去信任状态,重新执行时再次询问;结构化 {"cmd": ...} 请求也无法再借用已配置纯文本命令的审批键 (#6787, #6788)
  • 项目 Shell hook 授权现在绑定到被审核文件的精确内容:授权记录带有内容摘要,hook 文件内容变更后需重新授权才能再次运行,旧版无版本号格式的授权记录需一次性重新授权;hook 加载设有上限(每项目 64 项 / 4 MiB,超限的 hook 目录整体拒绝加载),provider 拥有的请求字段不再能被覆盖 (#7158)
  • COSH_SHELL_AI=off 现在能阻断所有仍可能发起 agent 请求的路径:提示洞察不再渲染、自动启动或接受确认,hook 咨询审批与 /hint <id> analyze 也不再派发请求;本地 shell 建议保持可用 (#6892, #7256)
  • 带引号的敏感信息片段——包括裸 access key 与 PEM 私钥——现在会从持久化及恢复的对话、以及 shell provider 证据中脱敏,扩展了既有的 Cookie/token 规则 (#7396)
  • checkpoint 命令不再根据不可信的响应长度前缀预分配内存(此前一个恶意 daemon 仅凭长度前缀就能迫使客户端预留 64 MiB);内存改为随实际数据到达逐步增长 (#7102)
  • 手动配置的 AK/SK + security-token 凭据在 token 过期时不再被静默替换为 ECS 实例角色;只有配置为 ECS RAM Role 的 provider 才会从实例元数据刷新凭据 (#6591)
  • 修复存量 aliyun provider 在已存储 base_url 为空时重新认证陷入 invalid base_url 错误循环的问题:空值按未设置处理,回退使用模板内置端点 (#8505)
  • [logging] level 现在对 agent core 与 shell 同时生效(此前 shell 只读取 [ui] log_level);旧键保留为回退选项,用户指南补充了完整的解析顺序说明 (#8529)
  • 诊断日志文件现在严格遵守单用户预算(3 天 / 20 MiB),core 与 shell 并发写入时同样生效;硬链接或外部归档的日志副本绝不会被截断 (#7159)
  • 修复系统 profile 自带 command_not_found_handle 的发行版(如安装了 command-not-found 的 Ubuntu/Debian)上,登录会话中输入的自然语言提示被当作缺失命令执行并报 command not found、而不再路由给 agent 的问题;用户自己登录文件中定义的处理器保持运行并继续被委托 (#6999)
  • 在 enhanced-native 会话中关闭 routing 后,无论直接键入、历史召回还是光标编辑,/mode routing assisted 都能在本地恢复辅助路由,不再漏给 Bash 当作命令执行 (#7350)
  • 延迟到达的超时通知现在以恢复可编辑 shell 行收尾,不再把光标留在空行上;恢复空闲原生提示符也不再吞掉失败命令洞察 (#7489)
  • 审批卡片在替换时不再泄漏状态:每张新卡片的 composer 选择会重置,捕获的命令输出保持同步;审批展示在本版本继续内联渲染在 shell 中 (#7333, #8042)
  • shell 事件缓冲区上游收缩或重建时,审计日志保持 exactly-once 语义:已记录的事件不会重复落盘,并以一个类型化的 audit.truncated 标记记录缺口 (#2408)
  • checkpoint diff 预览正确保留转义及含空格的文件名,不再因被忽略元数据中的非 UTF-8 字节而拒绝合法 diff;不支持的文件名编码现在 fail-closed,返回明确的不可重试错误,而不是破坏 diff 摘要 (#3558)
  • btrfs 文件系统用量超过安全阈值时,checkpoint 创建与回滚会被拒绝并返回明确可重试的提示;删除能力保持可用,仍可清理释放空间 (#7888)
  • 无 openat2 的 Linux 内核(如 4.19 时代服务器)上,旧式 headless 会话现在可以启动:工作区文件工具被禁用并给出警告,模型会被告知在既有审批策略下改用 cat 等 shell 命令,而不是后端在首次回复前直接退出 (#8769)
  • 在 Ctrl-C(SIGINT)处理器注册失败的受限环境中,agent core 不再启动即退出:只警告一次并继续运行,Ctrl-C 仍可通过内核默认行为终止进程 (#2648)
  • RPM 卸载或替换时若事务被中断,不再遗留 /etc/shells 临时文件;/etc/shells 重写操作遇到不安全的符号链接目标时直接拒绝,而不是跟随链接 (#6581)

[0.27.0] — 2026-10-11

新增

  • 受管理安装现在会在安全的空闲提示符显示可用更新通知及匹配的更新命令;未受管理的二进制保持静默 (#3465)
  • SLS telemetry 现在可识别仅支持 IMDSv2 的实例并使用其地域端点,同时保持与旧版 metadata service 的兼容 (#3406)

修复

  • 新登录会话仅在 Enhanced runtime 尚未产生副作用时启动原生 shell 回退,既避免用户无法登录,也不会创建重复的登录会话 (#3395)

[0.26.0] — 2026-09-23

新增

  • Enhanced Bash 宿主启动的登录会话在 Bash 4+ 上具备真实 login 身份:shopt -q login_shell 返回 yes、$0 为 -bash,并读取 /etc/profile 与 ~/.bash_profile,与原生 bash -l 登录一致;设置 shell.login_identity = false 可回退旧行为,Bash 3.2 或能力探测失败时也会自动回退 (#3358)
  • cosh-ng 现可在 Intel Mac 上安装:raw 后端新增 macOS x86_64 预编译产物(最低支持 macOS 11.0),公开安装脚本可识别 Intel Mac,不再直接报错或回退到 ARM 包 (#3448, #3449)
  • cosh-cli checkpoint recover 现在支持在原始工作区路径已不存在的情况下恢复被中断的初始化,恢复提示通过 meta.warning 返回 (#3356)

变更

  • 诊断日志默认级别由 warn 调整为 info:~/.copilot-shell/logs/cosh-{shell,core}.log.<date> 默认记录 shell/core 启动、core 派生与错误收敛点等此前仅在界面中可见的事件;显式设置的 COSH_LOG、RUST_LOG 或 [logging] level 依然优先生效,debug: true 会把有效级别提升到 debug (#3331)

修复

  • 修复 auto 模式下经 rtk 包装的只读命令(如 find /tmp -name '*x*' 2>/dev/null 被包装为 env TOKENLESS_* /usr/bin/rtk …)被误判为需要审批的问题:判定时剥离包装层、执行时仍使用包装形式以保留 RTK 输出压缩,行为出现偏差时回到审批卡片 (#3436)
  • 修复在空工作区创建 checkpoint = on 任务并对接旧版 daemon 时失败却没有任何说明的问题:现在会说明未生成快照的原因,并给出升级 ws-ckpt、添加文件后重新提交或改用 checkpoint = off 的明确指引 (#3437)
  • 修复切换任务快照成功后新启动的 Core 与 Codex 任务仍使用旧工作区视图、需要重启 Gateway 的问题:现在刷新后的工作区立即生效,刷新失败时新启动按 fail-closed 拒绝执行 (#3438)

[0.25.0] — 2026-09-20

新增

  • 托管任务(Managed Tasks)现已贯通端到端流程:通过引导式 /task 表单提交持久化的 Core 或 Codex 任务、选择 checkpoint 策略、断线重连后查看进度,并经由 Gateway 受控的恢复流程安全地预览、对比与切换任务自有快照 (#2911)
  • /agent 内新增 slash 命令发现:在 Composer 中输入 / 可按前缀过滤候选命令、上下浏览并 Tab 补全,提交的命令经由既有处理器执行并保留确认卡片 (#3224)
  • Provider 首次配置现已自动化:根据模板类型与已有配置推导出无冲突的默认名称;ECS RAM Role 凭据通过有界、可取消的探测自动检测并提交,无需人工确认 (#3298)
  • 仅将 stderr 抑制到 /dev/null 的只读命令(如 find /tmp -name '*x*' 2>/dev/null)在 auto 模式下不再需要审批 (#3208)

变更

  • 已声明的 [[hooks.PreToolUse]] 配置 Hook 现在默认生效,不再需要设置 hooks.enabled;显式禁用的 Hook 会给出警告并在扩展注册前移除;Hook 空输出仍默认阻断工具调用 (#3330)
  • Enhanced 会话默认不再在提示符上方打印所有权状态行(◇/◌),保持 shell 原生提示符外观;如需恢复可设置 shell.status_symbols = true 或 COSH_SHELL_STATUS_SYMBOLS=1。开启后符号单独占一行发布,窄终端编辑不再丢失 CJK 字符或光标错位 (#3345, #3254)

修复

  • 修复指向 /proc、/dev、/sys 的字面路径穿越拼写(如 /../proc/version)可绕过 readonly 安全检查的问题:路径先做词法归一化再匹配拦截清单,合法路径不受影响 (#2708)
  • 修复带引号的 /dev/null 重定向目标(如 2>"/dev/null")被误分类为文件写入、导致审批卡片理由显示错误的问题:现在按空重定向分类,与无引号形式行为一致 (#2710)
  • SysOM 端点解析现在优先选择可达的 VPC 内代理,无公网出口的 ECS 实例因此可以访问 SysOM;通过 COSH_SYSOM_ENDPOINT 或 sysom_endpoint 配置的显式覆盖保留系统代理 (#3188)
  • 修复名称中仅包含 HOOK: 子串的中风险工具请求被误分类为 Hook 请求的问题:审批卡片现在提供标准操作而非 Hook 操作集 (#3248)
  • 修复 token-plan 网关在模型查询路由返回 HTTP 400 时,有效凭据无法通过 /auth 保存的问题;仅提供模型列表的 provider 仍按原路径拒绝无法验证的凭据 (#3276)
  • 修复 zh-CN /help 面板两处文案:Registry 分组标题已汉化,/agent 摘要措辞更正;en-US 输出不变 (#3363)
  • 修复 RPM 安装/擦除脚本对 /etc/shells 的管理不安全问题:cosh-ng 与 copilot-shell 互换(yum swap)时不再丢失替代方仍需要的登录 shell 注册行;更新改为原子操作并保留文件元数据;安装期失败不再静默 (#3367)

[0.24.1] — 2026-09-09

修复

  • 修复 TLS 库切换后 agentsight 通过字节码匹配采集 LLM token 在 Rust 编译器升级后静默失效的问题:cosh-core 现导出命名探针符号,agentsight 按符号名挂载,编译器升级不再导致采集中断 (#3156)

[0.24.0] — 2026-09-08

新增

  • 在 Enhanced Assisted Zsh 会话中,含斜杠、空格前缀以及汉字开头的路径提示现在会路由到 Agent,而不再漏给 Zsh 行编辑器;普通 shell 输入在路由判定完成后会原样返回 Zsh (#3004)
  • Tab 键会在处理后续输入之前交还给 Zsh 行编辑器,自定义 Tab 组件因此可以正常工作;保留的输入会自动重放而无需再按一次键,用户的 trap、按键绑定、历史记录与提示符状态都得到保留 (#3004)
  • 默认 Bash Cosh 会话现在会加载登录配置新增的 PATH 目录,因此通过登录配置安装的命令在新终端中即可使用;设置 COSH_SHELL_BOOTSTRAP_PATH=0 可关闭此启动检查 (#3050)

修复

  • 修复使用花括号形式的 shell 参数替换(如 ${parameter#pattern})拼接 Cookie 头时可能绕过敏感信息拦截的问题:这类内容不会写入原生 shell 历史;遇到嵌套语法歧义时,整条命令都会脱敏 (#3004)
  • 修复名称中带斜杠的 Zsh 函数或别名被误判为不存在的文件路径、因而被路由给 Agent 的问题:这类命令现在仍由 shell 原生执行 (#3058)

[0.23.0] — 2026-09-02

新增

  • /hooks 面板现在逐条列出每个 Shell Hook 的 ID、来源与信任状态,与 Agent Hook 的展示方式保持一致 (#2999)

变更

  • cosh-ng 不再依赖系统 OpenSSL 运行时:HTTPS 改用纯 Rust TLS 栈并继续信任宿主机系统证书库,Linux 安装不再需要 openssl-libs / openssl1.1 系统包,macOS 源码构建也不再要求 OpenSSL 头文件 (#3030)

修复

  • 秘密脱敏现在按词边界识别:sk-hynix、npm_package_version 等普通文本在本地证据中保持可见,而紧邻 CJK 文本的短凭据以及结构化的 Cookie/Bearer/JWT 形态,无论经由哪种 shell 或入口路径产生,都会被一致地排除出原生历史并在日志中脱敏 (#2996)

[0.22.3] — 2026-08-31

修复

  • 修复损坏或未闭合的终端控制序列导致后续输出无法显示、命令边界识别中断的问题:超出上限的片段会被丢弃,解析会在下一个有效标记处自动恢复 (#2967)
  • 修复预编译 cosh-ng 包在 Ubuntu 24.04 等较新发行版上安装失败的问题:预编译产物改为内置 OpenSSL,不再依赖这些系统已不再提供的 OpenSSL 1.1 运行时库 (#2982)
  • 因隐私保护而未写入 Bash 历史的自然语言提示词,现在召回并重新提交时原样保留输入内容,不会被误交给 shell 执行,也不会在召回过程中丢失;换行的提示行不再在下一个提示符处留下残留内容 (#2983)
  • 修复成功命令之后紧接着输入未知命令时丢失失败洞察的问题:命令未找到事件现在会正确关联到当前输入,诊断信息照常展示 (#2983)
  • 修复提示符重绘后辅助标记重复或缺失的问题:代理交互、取消操作或终端宽度变化引起的重绘,每个提示符行现在都恰好保留一个辅助标记 (#2983)

[0.22.2] — 2026-08-28

修复

  • 经审批并交接给原生 shell 执行的 Bash 工具命令,现在在终端中显示审批通过的命令本身,而不再显示内部包装行,在 Bash 4.4 的逐段重绘终端上同样如此;命令执行、审批、历史与退出状态保持不变 (#2949)
  • 直接输入、上箭头召回或在窄终端上输入的 slash 命令,现在重新在结果面板前恰好显示一次;内部哨兵行依然不会出现在终端输出、历史与日志中,敏感的 slash 输入也不再被展开进 Bash xtrace 输出 (#2955)
  • 包含文件路径、被路由给 Agent 的自然语言提示词会以请求通知的形式保持可见,即使模型的第一个响应事件是工具调用,原始请求也不会从屏幕上消失;敏感输入将作为整字段脱敏 (#2953)
  • 外部中断信号发送给 shell 进程时,父终端不再停留在 raw 模式:终端设置会被恢复,调用方仍能观察到原有的信号退出状态 (#2968)

[0.22.1] — 2026-08-28

修复

  • 原生 Bash 中执行精确 slash 命令后,终端不再显示内部的 builtin true __cosh_slash_guard__ 哨兵行,开启 set -v 详细回显时同样如此;slash 路由、命令执行与历史召回行为保持不变 (#2943)
  • 与运行中命令同批粘贴或管道输入的内容不再被误路由:此类批次中的 slash 样式行逐字节送达 shell,不再被拦截为 slash 命令,脚本化流水线保持正常 (#2938)
  • 目录名包含控制字符时,命令追踪与工作目录上报依然正常,不再丢失 shell 事件 (#2938)
  • 携带提示词参数的 headless 单次运行在审批请求无人应答时不再挂起数小时:请求 30 秒后超时,进程以明确的超时错误与非零退出码退出 (#2941)

[0.22.0] — 2026-08-27

新功能

  • Enhanced Assisted 模式不再依赖全局 Bash DEBUG trap 和强制追踪选项;用户自定义 trap、shell 选项与 prompt hook 得以保留,slash 命令交接保持正常交互式 shell 语义 (#2832)
  • 自动发现包管理根目录之外(如 /usr/local/share/anolisa/extensions)安装的系统扩展,raw 安装的 sec-core 与 tokenless 扩展无需单独启用即可加载;存在冲突的重复系统安装保持禁用,除非已持久化明确的来源选择 (#2909)

修复

  • 开启 xtrace 时,cosh 内部 hook 活动不再出现在追踪输出中,动态标记、工作目录与环境数据不会外泄;用户命令与用户自定义 hook 的追踪输出保持不变 (#2914)
  • 修复含斜杠的汉字提示词(如 打开./missing/SKILL.md)被当作 shell 路径执行而失败的问题,恢复 AI 路由;Agent 现在收到提示时刻的正确工作目录,cd 之后同样准确 (#2918)
  • 交互 shell 中输入的 slash 命令现在会写入 Bash 历史,上箭头可正确召回最近输入的 slash 命令,而非更早的命令 (#2917)

[0.21.1] — 2026-08-26

修复

  • 修复 /skills list、/hooks、/extensions 等 registry 类 slash 命令在尚未运行任何 Agent 回合、且进程工作目录与 shell 当前目录不一致(如启动后执行 cd 或守护进程式启动)时无法发现项目级资源的问题 (#2686)
  • 修复输出量巨大的 shell 命令耗尽内存的问题:输出上限为 32 MB,超限命令会被自动终止,Agent 收到截断提示与开头输出而非裸错误;hook 输出超限时相关命令保持拦截(安全侧处理),hook 的决策不会被静默忽略 (#2880)
  • 修复 systemd 255 主机上 Gateway 任务无法启动的问题:打包服务的一项安全加固设置与该 systemd 版本不兼容,导致服务在启动阶段即失败;工作区隔离保持不变——任务文件仍限制在工作区内、主机文件保持只读、守护状态仍为服务私有 (#2843)

[0.21.0] — 2026-08-25

新功能

  • 新增 Native shell 集成模式(shell.integration = "native")实现无 Hook 启动,以及可通过 Shift+Tab 切换的 Enhanced Shell-only 模式;Enhanced Assisted 仍为默认,并通过提示符前缀显示输入归属。同时,slash 命令、工具调用、权限请求和系统通知现在使用不同的 /、*、!、· 卡片前缀,输出归属一目了然 (#2759)

[0.20.0] — 2026-08-24

新功能

  • 在未安装 anolisa 统一上报器时,cosh-ng 可直接向 SLS 上报匿名运行遥测,不收集用户输入、代码或对话内容;可通过创建 ~/.copilot-shell/telemetry_disabled(单用户)或 /etc/anolisa/.telemetry_disabled(全系统)随时关闭遥测 (#2715)
  • 将本地 Gateway 任务 profile 绑定到封闭的 task-only-v1 manifest,使 Core/Gateway 版本不匹配在任务输入或副作用产生前即被拒绝 (#2728)

修复

  • 修复 /usr/bin/cosh raw <adapter> 因透明分类器将 raw 子命令误交给 bash 而以 exit 127 退出的问题,恢复 TUI 启动 (#2743)
  • 修复含简单参数引用(如 $HOME)的汉字引导自然语言提示被漏过 NL 拦截落入 shell 的问题,同时保持可执行 shell 结构原生不被拦截 (#2746)
  • 修复 bash 4.2.x 上首条命令后 DEBUG trap 永久丢失导致命令审计标记停止输出的问题 (#2757)

[0.19.0] — 2026-08-21

新功能

  • 新增本地 gateway 控制平面,支持持久化 Task 调度、运行时租约与崩溃恢复,可通过 cosh agent task ... 命令使用 (#2603)
  • 新增直接 ACP 入口命令 cosh agent doctor 与 cosh agent run,可在交互式 Shell 之外验证并驱动本地安装的 ACP adapter;权限流程为 once-only,仅在本地控制终端提示,并将脱敏证据记录到私有本地状态目录 (#2603)

修复

  • awk 程序中 system() 调用前存在空格或行续符时也能被正确检测 (#2655)
  • 缺失的 precmd 状态标记现在映射为 -1,不再伪造为退出码 0,保证中断或伪造标记下的账本完整性 (#2709)

[0.18.0] — 2026-08-20

新功能

  • 长时间交互式会话的 transcript 内存工作窗口现在有界,终端输出仍会完整写入会话 spool 文件,从而抑制内存无限增长 (#2682)
  • 支持需要任务增强的 MCP 长程工具调用,任务失败或超时时返回可操作的错误信息 (#2645)

变更

  • BREAKING:/usr/bin/cosh 现在将非 TUI 调用直接透传给配置的 shell;在交互式终端外执行 cosh --version、cosh --help 或 cosh <脚本> 时行为与 shell 一致,不再进入 cosh TUI (#2625)

修复

  • 在 cosh-core 驱动的 trust 审批模式下,被 hook 拦截的 shell 命令不再通过 staging grace 窗口实际执行 (#2125)
  • 外部组件已预先记录初始审批请求时,cosh-shell 现在能正确记录对应的审批决议 (#2402)
  • 同一批次中某个请求被拒绝后,审批被 hook 重写的 shell 命令不再报错 "could not route this approval" (#2667)
  • 当待处理的 turn extension 被新活动取代时,审计日志现在会补录对应的取消决议,避免留下未配对的请求条目 (#2695)

[0.17.2] — 2026-08-19

修复

  • 将 run_command 输出上限设为 32 MB,防止 dd if=/dev/zero、yes 等失控命令导致进程被 OOM 杀死;超出上限时杀死进程组并返回 OutputTooLarge 错误,而非无限增长 (#2405)
  • 使 RPM %post 的 /etc/shells 注册幂等(先规范化并探测再追加),并新增 %preun 脚本:当用户仍以 /usr/bin/cosh 为登录 shell 时擦除操作失败关闭,防止 rpm -e cosh-ng 后遗留悬空 shell (#2599)

[0.17.1] — 2026-08-18

修复

  • 通过事件驱动改造 raw relay 与 SIGINT 路径,将交互回显延迟从 p50 20 毫秒降至亚毫秒级,并消除长时间会话的高频空闲 CPU 轮询 (#2622)
  • 在 best-effort 审计存储写入失败时,仍保持已允许命令正常执行 (#2631)
  • 允许已审批流水线中的单引号参数包含换行,例如多行 jq 或 awk 脚本 (#2638)

[0.17.0] — 2026-08-17

新功能

  • 当 hook id 同时存在于 shell 层与 agent 层时,/hooks enable|disable <id> 弹出交互式消歧面板,可选择切换 Shell hook、Agent hook 或两者 (#2400)

变更

  • 空闲轮询时跳过冗余的历史事件处理,长时间运行的交互会话不再在空闲时重复执行与历史事件规模相当的工作 (#2546)

修复

  • 修复 hook 输出显式 "decision": null 被当作透传的问题:现视为无效 hook 输出并默认拦截对应工具调用;若 hook 配置 fail_open = true 则放行但记录 hook_failure 通知;输出 {} 仍为合法透传 (#2529)
  • 修复 dnf 系统上 cosh pkg install/remove --dry-run 将可安装/可移除软件包的成功模拟误报为后端错误的问题 (#2605)

[0.16.1] — 2026-08-14

修复

  • 优化 CJK(中日韩)文本换行,充分利用终端行宽并保持标点与相邻文字相连 (#2446)
  • 在保存 /auth 认证配置前先验证凭据、端点和模型,失败时保持认证面板打开并定位到问题字段 (#2458)
  • 允许扩展 hook 在成功但无输出时通过,避免空输出被错误拒绝 (#2506)

[0.16.0] — 2026-08-13

新功能

  • 新增 raw packaging 接口,支持确定性归档构建、跨平台二进制验证和可移植 macOS launcher (#2411)

变更

  • 收敛 cosh-core 与 cosh-shell 运行时路径,统一 Claude 和 Qwen provider driver,新增显式 shell/core protocol v1 协商与旧版回退 (#2403)
  • 移除已废弃的 /draft 斜杠命令别名,统一使用 /agent (#2441)

修复

  • 使用单调时钟计算 input-wait 超时,避免时钟偏移导致卡顿 (#2176)
  • 修复 panel-family hint card 渲染问题 (#2196)
  • 按 SSE 规范解码事件,对格式错误的输入立即报错 (#2209)
  • 在 core 中约束并保护敏感文件写入 (#2211, #2378)
  • 在 core 和 shell 中透传原始 prompt 文本,不做归一化 (#2256)
  • 修复 Enter 键触发 review marker 的问题 (#2274)
  • 收窄交互式取消检测范围,并在关联拦截后配对 ledger 完成 (#2352, #2353)
  • drop 时向 stdout 发送 raw-mode 禁用指令,防止终端状态泄漏 (#2357)
  • 加固 core 和 shell 中的 hooks (#2359)
  • 避免使用可预测的临时文件路径 (#2361)
  • 在行截断分支中强制字节上限 (#2370)
  • 列出所有斜杠提示匹配项,而非仅返回首个 (#2410)
  • 将缺失的失败退出码映射为 -1 哨兵值,保证错误报告一致性 (#2412)
  • 在 core 中暴露 runtime context,确保状态访问一致 (#2428)

[0.15.0] — 2026-08-09

修复

  • 恢复 shell 中 inline hint 之后的提示光标 (#2172)
  • 支持 ID_LIKE 回退用于 OS 发行版检测 (#2200)
  • 在 /help 输出中列出 hook 命令 (#2208)
  • 跳过服务生命周期操作的审计日志 (#2213)
  • 支持 core 中的 macOS 特定文件读取 (#2220)
  • 序列化 handoff 状态以防止竞态条件 (#2226)
  • 归一化 apt search glob 模式 (#2227)
  • 在 core 中恢复 compaction 后的上下文预算 (#2244)
  • 在 shell 中去重 hook 通知 (#2259)

[0.14.0] — 2026-08-04

新功能

  • /status、/about 和 /stats 斜杠命令用于运行时自省 (#1778)
  • /mcp 斜杠命令用于 MCP server 管理 (#1949)
  • /session list --all 枚举跨 workspace 的会话 (#2139)
  • DashScope prompt cache 支持,降低 token 成本 (#2046)
  • cached_tokens 可观测性,用于缓存命中诊断 (#2075)
  • OpenAI provider 中按模型动态设置 max_tokens (#2165)
  • 在 MCP client 初始化时声明 roots 能力 (#2007)
  • core 中的 hook 工具和环境支持 (#1894)
  • 在 core 和 shell 中呈现工具参数状态并限制重试次数 (#1925)
  • shell 中自动执行完全只读的复合命令 (#1959)
  • 在 core 和 shell 中扩展有上限的回合运行 (#2035)
  • 改进 core 和 shell 的认证菜单 (#2062)
  • 在 shell 中限制 agent handoff 的输入等待 (#2168)

变更

  • shell 中终端无关的多行 prompt 输入 (#1947)

修复

  • Shell handoff 和 hooks:保留 LLM 输入、丢弃过期 handoff 文本、在 provider 会话内恢复 handoff 回退、脱敏 handoff 证据、通过一次性 claim token 关闭秘密脱敏的 handoff、收敛 Han NL 输入归属、将敏感 NL 路由到 agent、并为 send-to-shell 运行 project hooks (#1955, #2010, #2055, #2074, #2130, #2137, #2151, #2154)
  • 审批生命周期:通过 lifecycle ledger 和兜底超时保证终态、重置 auth 输入、在 trust 模式下呈现 sandbox-bypass 审批、并拒绝零空闲超时 (#1934, #1939, #1968, #2116)
  • 认证流程:ESC 时回退 /auth、在 /help 中列出 /auth、并在无认证启动时提示 /auth (#1891, #1906, #2166)
  • 斜杠命令和 prompt 输入:防止拦截时斜杠回显重复、Up 键召回斜杠命令、拦截含斜杠的 NL prompt、支持 NL prompt 中的软换行、保持 card submit 的 type-ahead、归一化 CSI-u 退格、并按路由键 ghost 归属 (#1868, #1899, #1911, #1922, #1942, #1993, #2167)
  • Shell 渲染:阻止 extdebug 泄漏到 prompt hooks、高亮代码块语法、用用户语言回复、精简技能列表、并禁用隐式分页 (#1849, #1904, #1910, #1921, #1998)
  • 命令风险和安全:评估所有复合命令段的风险、门控不可恢复的系统控制命令、并分类解释器风险 (#1905, #2081, #2119)
  • 文件 IO 加固:拒绝占位写入、使文件写入原子化、限制并约束读取工具、在 drop-write 前恢复阻塞、并将 fd-dup 重定向视为非写入 (#1918, #2069, #2120, #2121, #2124, #2127)
  • Shell 恢复和漂移:防止恢复风暴并使用 zsh preexec $3 处理漂移 (#2072, #2073)
  • 审计日志:展示 hook 上下文 (#2082)
  • Core 运行时:保留工具参数、对齐 compaction、展示真实 session prompt、emit 错误时 fail closed、并使截断 UTF-8 安全 (#1844, #1847, #2003, #2005, #2118)
  • 类型、wire 和打包:修复 wire 错误、移除跨 workspace dev-dep、对齐 RPM 身份、对齐 bundle 健康检查、并在 skill tool 中添加 base-dir 提示 (#1514, #1933, #1937, #1984, #2140)

[0.13.0] — 2026-07-26

新功能

  • 通过 /session、/resume 和 --resume 启动选项实现交互式会话恢复 (#1546, #1592)
  • 带 schema 版本控制和旧会话迁移的 workspace 级会话持久化 (#1546, #1592)
  • MCP 工具支持,用于扩展 agent 能力 (#1530)
  • 上下文相关的 shell insight 交互 (#1537)
  • 跨 core 和 shell 层的秘密脱敏 (#1555)
  • 通过 cosh doctor 导出诊断 bundle (#1576, #1597)
  • core 和 shell 中的扩展平台 (#1583)
  • 个性化 prompt 推荐 (#1606)
  • 会话压缩以管理持久化增长 (#1668)
  • PostToolUse 响应替换和 hook 适配 (#1669)
  • 启动建议门控 (#1671)
  • 跨 core 和 shell 的审计日志 (#1679)
  • 通过斜杠命令改进和 SysOM /auth 快捷方式改善会话体验 (#1726, #1813)
  • 将未解析的自然语言输入路由到 Agent (#1742)
  • ESC 取消活跃的 agent 运行 (#1761)
  • 回合级批量审批同意 (#1825)

变更

  • 回退持久化的凭据加密 (#1748)
  • 对齐任务 scope 文档 (#1445)
  • 稳定 core 和 shell 测试门控 (#1699)
  • 加速 raw CLI 测试和 fake stream 节奏 (#1797)
  • 将 cosh-shell 测试基线跟踪至 2469 (#1827)

修复

  • 会话命令解析、信号退出、斜杠参数处理和 prompt ghost ESC (#1632, #1634, #1636, #1663, #1724, #1843)
  • Agent 提问交互、建议控制、推荐 scope 和 tab 重绘 (#1725, #1741, #1749, #1758, #1821)
  • 审批 card 布局、阻塞标题对齐和空回车处理 (#1786, #1788, #1838)
  • 认证和信任加固:验证 provider、加固认证、保留 trust 块、加密凭据并扩展路径 (#1627, #1673, #1701, #1722, #1777, #1784, #1791, #1809, #1816, #1841)
  • 审计日志修复:kill 树、拆分复合命令、脱敏秘密、scope claim 并保留导出路径 (#1611, #1613, #1635, #1765, #1772, #1840, #1842)
  • Core 运行时稳定性:JSONL 验证、工具选择错误、流式状态、ai-like 表、修订时钟、free-text 清除、布局门控和 SysOM 终结符 (#1599, #1661, #1689, #1730, #1731, #1799, #1800, #1803, #1839)
  • 平台和 CLI 正确性:遵循 dry-run、处理跳过的 checkpoint、允许搜索模式、修复 package dry-run/搜索结果、遵循 cargo config、同步 Bash HISTFILE、验证 workspace 路径、将 --help 路由到 stdout、添加 skill 参数检查、对脱敏写入发出警告、跳过 DEBUG trap、恢复 utility 工具、阻止 BASHOPTS extdebug 泄漏、处理 null 重定向、保持 provider handoff 存活、更新 DashScope URL、raw action relay 看门狗、恢复启动健康行、隐藏 receipt audit ref 并更新测试基线 (#1426, #1440, #1633, #1637, #1642, #1646, #1672, #1675, #1676, #1710, #1719, #1733, #1783, #1787, #1790, #1795, #1808, #1812, #1818, #1820, #1845)

[0.12.0] — 2026-07-12

新功能

  • 将认证归属移入 cosh-core,采用隔离的配置层 (f028ad90)

变更

  • 在统一运行时模块下整合日志 (db86b3dd)
  • 将组件文档迁移到 user-guide/developer-guide 并添加 cosh-ng 文档 (317d3f26, adf63ac2)
  • 将 *_CN.md 文档重命名为 *_zh.md 并修复交叉引用 (82f8dab4)

修复

  • 在 platform 和 cli 中遵循 svc dry-run (4c593050)
  • 保留手动 aliyun 回退和旧版 STS 认证 (924dd76b, ee1dd179)
  • 保护 auth provider 编辑;优先 aliyun 认证选项 (f0c97efa, 904655fb)
  • 限制 host 执行的 shell 预览 (a6da7301)
  • 路由非交互式 cosh launcher 调用;支持 raw 命令透传 (ecb56739, 1490eb3c)
  • 绑定启动 prompt 和 agent 请求上下文 (14d6336f, 25d9d28f)
  • 在 shell 中拥有 prompt 边界 (#1310)
  • 避免循环检测中的 UTF-8 分割 (ef7f5147)
  • 移除 provider 可见的 skill 提示;引导诊断 skill 使用 (a6024873, 7f695178)
  • 丢弃冗余的 format 借用;满足 clippy 诊断 (5e14a686, 063217f1)
  • 稳定 CI、raw-cli、PTY 和服务测试 (d573796d, 3563a5ab, 0fb34ea6, fc28da5f, ad138d45, 65421d25, 5b17b892, 3e43ba6e, 707bc3c0)

[0.11.0] — 2026-06-28

新功能

  • 阿里云认证 provider,支持 ECS 自动检测、STS 凭据和二维码流程
  • SysOM 阿里云 provider,使用 ACS3 签名进行 LLM API 访问
  • 每回合 SLS JSONL 日志用于可观测性
  • SysOM 请求来源标识头
  • 跨所有 crate 的结构化 tracing 日志系统
  • PostToolUseFailure hook 事件上的 sandbox bypass 审批流程
  • 启动健康扫描用于环境诊断
  • 扩展/hook/skill 启用/禁用命令(/extensions、/hooks、/skills)
  • 统一组件状态管理模块
  • 专用 HOOK 审批面板,简化 UI
  • UserPromptSubmit hook,带 Ask 审批强制
  • cosh-core 中的 shell evidence 读取准入控制
  • cosh-shell 中的工具活动渲染
  • 启动横幅中的 cosh-switch 提示,用于在 cosh-ng 和 copilot-shell 之间切换

变更

  • BREAKING:CLI 二进制从 cosh 重命名为 cosh-cli;移除 dispatch_core
  • RPM spec:安装 cosh-cli 二进制、/usr/bin/cosh launcher、cosh-switch 脚本、Conflicts: copilot-shell
  • 用结构化 tracing 宏替换 eprintln
  • 用 fold_decision 统一 hook 决策聚合
  • 将 workspace 仓库 URL 更新为 github.com/alibaba/anolisa

修复

  • 认证 ECS 流程和阶段转换时的面板重叠
  • 认证二维码渲染不含 ANSI 转义码
  • 认证成功后使用 SysomProvider 处理 aliyun
  • 对齐 hook 输入字段和 AfterModel/wrap_tool_response 与 copilot-shell 协议
  • tool_result 去重守卫和可见性
  • 在 shell handoff 前恢复 prompt
  • 抑制重复的 evidence 读取
  • 减少失败命令自动分析噪声
  • Skill 存在性检查和加固审批匹配
  • 解决 cosh-core 和 cosh-shell 中的 clippy 警告

[0.10.0] — 2026-06-23

新功能

  • Shell evidence 协议,用于捕获和重放命令执行上下文
  • cosh-core 中的 shell evidence 控制工具,用于 evidence 生命周期管理
  • 与 copilot-shell 对齐的 hook 协议,实现零变更扩展支持
  • 通过通知协议传播每 hook 决策
  • cosh-shell 中按 hook 决策着色渲染 hook 警告

变更

  • 跨 cosh-shell 模块共享 agent 错误显示文本

测试

  • 覆盖 shell evidence raw CLI 流程

[0.9.0] — 2026-06-22

新功能

  • Hook 通知集成到审批面板,带 ⚠ 警告显示
  • Hook ask 决策即使在 Trust/Auto 模式下也强制用户审批
  • 扩展 hook 系统,带 tool_use_id 关联和新事件类型
  • 用于 /extensions /skills /hooks 斜杠命令的注册表协议

修复

  • 在 /help 输出中显示 Registry 组

变更

  • 移除无用的 skill 管理代码

[0.8.0] — 2026-06-18

变更

  • 将 cosh-tui crate 和二进制重命名为 cosh-core,覆盖整个 workspace
  • 更新 adapter 系统:CoshTuiAdapter → CoshCoreAdapter、AdapterKind::CoshTui → CoshCore
  • 更新环境变量 COSH_TUI_PATH → COSH_CORE_PATH
  • 更新 RPM spec、文档和所有测试 fixture

修复

  • 在流式 card 中中和 agent 状态文本
  • 对齐 cosh-shell 中的流式 card 宽度

[0.7.0] — 2026-06-17

新功能

  • 扩展发现和加载模块,支持 cosh-extension.json manifest
  • 扩展 hooks 集成到启动生命周期
  • Skill 模块,支持多级加载(内置、用户、项目)和热重载
  • SkillManager 集成到工具注册表和启动流程
  • 可用技能注入系统 prompt 供 LLM 发现

修复

  • expand_env_vars 在环境变量未定义时的无限循环
  • 对不支持的扩展 hook 事件(PostToolUseFailure、BeforeModel、AfterModel)发出警告而非静默丢弃
  • 对齐扩展 hooks 格式与 copilot-shell 的嵌套组结构
  • 从 skill tool schema 中移除未使用的 args 参数,避免误导 LLM
  • 在 cosh-shell 中展示 question free text 答案
  • 加固前台 shell handoff
  • 共享 copilot shell 配置路径并保留旧版配置回退

变更

  • 归一化 cosh-shell 配置键
  • 标准化 cosh-shell 代码和测试组织
  • 将用户状态移至 copilot shell scope 下

[0.6.0] — 2026-06-16

新功能

  • cosh-tui 中的 P0 hook 系统,含 5 个生命周期事件(on_session_start、on_turn_start、on_turn_end、on_tool_call、on_session_end)
  • cosh-shell 中的 shell 审批分类和 hook 来源跟踪
  • 将当前 cosh shell 迁移到 monorepo workspace

修复

  • 解决 cosh-shell 中的审批 review 发现
  • 加固 shell evidence 连续性以防止上下文丢失
  • 在 cosh-tui 中归一化工具调用流式协议
  • 修复 cosh-shell 中子命令的透传

[0.5.0] — 2026-06-16

新功能

  • CoshTuiAdapter 持久进程模式(spawn 一次,跨 agent 运行复用,死亡时自动重启)
  • ask_user 通过控制协议往返(agent 可以提问内联问题路由到 TUI)

变更

  • 将 cosh-tui main 拆分为 cli/headless/interactive 模块
  • 将二进制从 cosh-tui-core 重命名回 cosh-tui

[0.4.1] — 2026-06-15

新功能

  • settings.json → config.toml 自动迁移,含 AES-256-GCM 加密 API key 解密
  • JSONL 协议和工具审批集成测试

修复

  • 在 PROMPT_COMMAND 前置 precmd 以捕获真实退出码(Alibaba Cloud Linux /etc/bashrc 问题)

[0.4.0] — 2026-06-15

新功能

  • JSONL wire 协议(InputMessage / OutputMessage),用于 cosh-shell ↔ cosh-tui 通信
  • Provider 抽象,支持 OpenAI 兼容流式(DashScope、OpenAI、DeepSeek、Generic profiles)
  • 工具执行框架,含 7 个内置工具(shell、read_file、write_file、edit、grep、todo、skill)和审批控制
  • 上下文窗口管理、消息截断、循环检测、对话压缩
  • 生命周期 hooks 框架
  • CoshCore agent 循环引擎
  • 基于 TOML 的多 provider 配置,支持环境变量展开

变更

  • BREAKING:二进制接口从 ratatui 交互式 TUI 改为 JSONL stdin/stdout 后端
  • BREAKING:配置格式从 settings.json 改为 config.toml
  • 用单文件 JSON 持久化重写 session store

移除

  • 旧版基于 ratatui 的 TUI 代码(app、commands、llm、logger、theme、tools、ui 模块)

[0.3.0] — 2026-06-15

新功能

  • cosh-shell crate — 基于 PTY 的 AI 增强 shell host,含 OSC marker 协议
  • Claude、Qwen、Fake AI adapter,支持流式
  • 内联渲染引擎(审批、提问、推荐、活动面板)
  • 带审批模式的治理层
  • 通过信号处理器(SIGTERM/SIGHUP/SIGHUP/SIGQUIT)和 panic hook 实现终端恢复
  • 退出码分类,含 8 个类别(Smart/Auto/Manual 分析模式)
  • 工具显示引擎,按工具类型解析和 ANSI 颜色分类
  • Hook 引擎,含内置 hooks(FailedCommandHook、TestFailureHook)和 skill 路由
  • 从 ~/.config/cosh/hooks/ 加载外部 hook,支持子进程执行
  • 原生 shell 兼容性(rcfile 加载、PS1、history、login shell 检测)
  • 上下文窗口,带滑动窗口(最大命令数、最大年龄、token 预算)
  • Prompt 意图优化(do → Bash 工具、know → 散文)
  • 自然语言拦截,带视觉反馈
  • InputClassifier 保守模式用于原生模式
  • 分析节流(30s 冷却,最多 3 次连续)
  • 咨询 card 渲染,带键盘捕获
  • 用于工具审批往返的控制协议
  • 启动横幅,带渐变 ASCII art logo
  • /mode 和 /hooks 斜杠命令
  • 架构文档

修复

  • 原生模式中 powerlevel10k 双行 prompt 的输入渲染
  • 原生模式中通过 buffered-then-judge 策略的斜杠/NL 拦截
  • command_not_found 的 zsh preexec 拦截
  • CJK 输入和退格的 CandidateRedraw 行清除
  • 原生模式中抑制 cosh-osc$ prompt 泄漏
  • bash 工具执行器中的工具显示标签匹配
  • buffer 提取中的宽字符占位单元格处理

变更

  • 统一 workspace 版本(0.3.0)适用于所有 crate(cosh-types、cosh-platform、cosh-cli、cosh-shell、cosh-tui)

[0.2.0] — 2026-05-16

加固 + 审计子系统发布。Workspace 版本与发布配置和 lockfile 提交一起升级到 0.2.0。

新功能

  • audit 子系统,含 PEP/PDP/log 分离:cosh audit check / cosh audit log 用于命令安全门控和每会话检索。
  • Workspace 发布配置(opt-level = 3、lto = true、strip = true、codegen-units = 1),提交 Cargo.lock,workspace 级依赖锁定,以及原生 CA 证书支持。
  • 命令超时、输入验证和 panic 安全的 JSON 输出,覆盖 cosh-cli 和 cosh-platform,使 panic 仍在 stderr 发出 CoshResponse 信封而非空退出。
  • forbid(unsafe_code) 作用于 cosh-cli / cosh-platform,以及 svc list --state 过滤验证使用 allow-list。
  • pkg search 交叉引用安装状态,使结果显示哪些匹配已安装。
  • ResponseMeta.warning 字段用于非致命警告;audit 响应通过此字段显式标记为 stub。
  • cosh-tui 中的 LLM 工具面扩展:pkg / svc / checkpoint 包装工具,以及 svc enable / svc disable --dry-run。
  • cosh-tui 中 LLM 和外部命令工具的超时 + 指数退避重试;60s shell 工具超时。

变更

  • TUI /help 与完整命令集对齐;标题栏版本和 markdown 前缀剥离修正。
  • 跨 workspace 解决 clippy 警告;移除 dead-code allow;测试代码与生产 lint 级别对齐。
  • 消除构建警告并改进 cosh-tui / cosh-platform 的版本检测。

修复

  • Shell 安全检查标记化,关闭 tab/换行/重定向/链绕过;对原始命令字符串的子串匹配替换为空白字符(含 \t/\n/\r)标记化和元字符拒绝(; | & > < $ ` ( ) { })— is_safe_command in crates/cosh-tui/src/tools/shell.rs。
  • 即使在 Yolo 审批模式下也禁止工具调用。
  • cosh-cli 包装工具输出有界,防止嘈杂子命令撑爆 LLM 上下文窗口。
  • 通过进程级计数器合成 tool-call ID 以保证跨 agentic loop 唯一。
  • settings.json 和 session 文件以 0600 权限原子写入。
  • 对 agentic loop、history、config 和 tool messages 强制运行时边界;scrollback 有界且截断 UTF-8 安全。
  • TUI 中安装 panic hook;panic 后恢复 history 导航。
  • ws-ckpt IPC 响应大小限制为 64 MiB。
  • 通过 LoadState=not-found 检测不存在的 systemd 服务,而非错误归类为 "inactive"。

安全

  • Audit-stub recoverable / hint 语义通过标准 CoshError 信封清晰呈现给 agent。
  • 凭据文件的原子重命名 + 0600 权限。

[0.1.0] — 2026-05-10

将 workspace 从 agos-core 重命名为 cosh-ng 并添加交互式 TUI crate 后的初始公开形态发布。

新功能

  • 4-crate workspace:cosh-types、cosh-platform、cosh-cli、cosh-tui,严格依赖方向 cosh-cli / cosh-tui → cosh-platform → cosh-types。
  • cosh CLI 二进制,双模式分发:cosh(无参数)exec 进入 cosh-tui,cosh <subsystem> <action> 返回结构化 JSON。
  • 跨发行版 pkg 子系统:install / remove / search / list,基于 Distro::detect() 读取 /etc/os-release 在 dnf / apt-get(apt-cache 用于 search)/ zypper 之间路由。
  • svc 子系统,基于 systemctl:status / start / stop / restart / enable / disable / list,含运行时间和 list 中正确的列映射。
  • checkpoint 子系统,通过 Unix-socket IPC 与 ws-ckpt daemon 通信;bincode wire 格式带 4 字节 LE 长度前缀和显式协议版本控制 + 错误处理。命令:init / create / list / restore / recover / delete / diff / cleanup / status。
  • cosh-tui 基于 ratatui + crossterm 的交互式 TUI:斜杠命令系统含自动补全、会话管理、主题、自定义边框集、echo-on-submit。
  • Agentic loop 含 cosh-cli 包装工具,在 cosh-tui 中将 pkg / svc / checkpoint 工具带到 LLM(初始发布为 cosh-tui v0.4.0)。
  • LLM 聊天集成,含配置驱动的 provider 和 UI 呈现。
  • 统一 settings.json V2 配置,整合先前分散的配置文件。
  • AES-256-GCM 解密,用于加密凭据。
  • macOS 检测 + Homebrew 后端,在 cosh-platform 中,含单元测试。
  • 统一 JSON 信封 CoshResponse<T>,含 ok / data / error / meta,分类的 CoshError 携带 recoverable 和 hint 用于 agent 重试决策。
  • pkg 和 checkpoint CLI 命令的集成测试。

变更

  • Workspace 从 agos-core(含 agos-types / agos-platform / agos-cli)重命名为 cosh-ng(含 cosh-* crate);agos-cli 和 agos-platform 在同一 commit 中移除。
  • cosh-tui checkpoint 工具适配新 daemon 协议。

修复

  • cosh-cli stdout 验证为 JSON 后再转发给 LLM,防止格式错误字节导致解析器混乱。

[pre-0.1.0] — 2026-05-03 → 2026-05-08

重命名前 agos-core 基础。

新功能

  • 初始 2-crate workspace agos-types + agos-platform。
  • agos-cli 跨发行版 CLI 原型,含 pkg、svc、checkpoint、audit 命令形态。
  • MVP v2 CLI Gateway 架构文档和双语(英文/中文)使用指南。

更新日志

本文档记录 ktuner 的所有重要变更。

格式基于 Keep a Changelog, 项目遵循 Semantic Versioning。

[未发布]

新增

  • 初始内核调优引擎:check/tune/fix/why/rollback 命令评估 内置规则集,并输出结构化 JSON 调优建议。

更新日志

本文档记录 OS Skills 的所有重要变更。

格式基于 Keep a Changelog, 项目遵循 Semantic Versioning。

[未发布]

[0.6.4] - 未发布

修复

  • 修正本地兜底文档中的 ws-ckpt skill 和 adapter 脚本路径。

[0.6.3] - 2026-08-21

修复

  • RPM 现在提供 anolisa-component(os-skills),当仓库侧组件索引不可用时, anolisa upgrade 可通过 RPM metadata 为已有 OS Skills 组件解析软件包 (#2576)。

[0.6.2] - 2026-08-07

  • 新增 ktuner Skill,支持确定性的内核诊断、调优和回滚。(#1278)
  • 从源码和 RPM 安装内容中移除旧版 OpenClaw 与 Hermes adapter 脚本。(#1172)
  • 更新 anolisa-guide,补充带认证的 Skill Ledger 恢复与篡改检测说明。(#2185)

[0.6.1] - 2026-07-03

  • 重写 sysom-diagnosis Skill,并移除旧版 CLI。(#1241)
  • 修复 install-openclaw Skill 对 OpenClaw gateway 写入范围的验证。(#1205)

[0.6.0] - 2026-06-29

  • 新增 anolisa 组件契约,包括 component.toml、Makefile 和 RPM spec。(#1159)
  • 为 install-openclaw Skill 新增 OpenClaw bootstrap 指引。(#1051)
  • 在启动 gateway 前为 install-openclaw Skill 新增模型 endpoint 预检。(#1031)
  • 为 anolisa-guide Skill 新增静态知识库更新脚本。(#1010)
  • 新增 anolisa-guide Skill。(#849)
  • 修复 uv 和 qwenpaw 安装过程中的阿里云镜像 fallback。(#968)
  • 将 install-claude-code Skill 的 DashScope proxy URL 更新为新的 Anthropic endpoint。(#858)
  • 在 OS Skills 中将 copaw 重命名为 qwenpaw。(#968)

[0.5.0] - 2026-06-11

  • 新增 anolisa-register Skill。(#829)

[0.4.0] - 2026-06-08

  • 新增 Agent 安装 Skill 自动安装 Tokenless plugin 的能力。(#731)
  • 新增 OpenClaw 依赖项预检。(#719)
  • 改进 OpenClaw 非交互式配置流程。(#687)
  • 新增 Hermes adapter runner。(#617)
  • 新增独立的 ANOLISA adapter 入口。(#549)
  • 修复 OpenClaw state dir 路径规范化。(#641)
  • 改进 Makefile 安装路径与组件契约。(#541)

[0.3.0] - 2026-04-26

  • 新增 hermes-agent-install Skill。(#353)
  • 新增 clawhub-skill-mng Skill,支持 npm 安装和 YAML 描述匹配。(#315)
  • 修复 AgentSight 自定义数据库路径问题,改用默认路径。(#366)
  • 修复 AgentSight Token 节省量查询支持。(#355)
  • 修复 AgentSight 中断 CLI,并统一使用 conversation_id 命名。(#334)

[0.2.2] - 2026-04-15

  • 支持通过 agentsight Skill 启用 AgentSight dashboard。(#222)

[0.2.1] - 2026-04-14

  • 使用 MiniMax 开源实现升级 xlsx Skill。(#218)
  • 将 Skill 描述中的“适用于 alinux4”更新为“适用于 RPM-based Linux”。(#182)

[0.2] - 2026-04-12

  • 新增 humanizer、image-gen、pdf-reader 和 xlsx Skill。(#178)
  • 新增 cosh-guide Skill。(#23)
  • 为 sysom-diagnosis Skill 新增网络、I/O 和系统负载诊断能力。(#163)

更新日志

本文档记录 SkillFS 的所有重要变更。

格式基于 Keep a Changelog, 项目遵循 Semantic Versioning。

[未发布]

[0.5.6] - 2026-11-06

变更

  • RPM 拆分为 skillfs-core 和 skillfs-skills,由 skillfs 入口包统一安装。 CLI 迁至 /usr/bin/skillfs,内置 Skill 迁至 /usr/share/anolisa/skills/skillfs-mount/ (#9222)。
  • 组件发现契约改由 ANOLISA 持有。升级时一起更新已安装的 SkillFS RPM 子包; 已安装 ANOLISA 的机器及 raw 安装要求 ANOLISA 0.3.21 或更高版本 (#9351)。
  • make install 默认使用 ANOLISA 共享技能目录,独立布局使用 AWPRJ= (#9462)。

修复

  • managed stop 和孤儿清理在 PID 复用后保留无关进程;异常挂载表转义不再造成 目标路径误匹配 (#9242)。
  • 拒绝将文件、符号链接和特殊文件重命名到虚拟目录槽位,保留已支持的目录移动 (#5375)。
  • pip 用户安装命令保留原样,缺少 which 时仍可检测可用命令 (#9300、 #9276)。
  • Skill 解析识别缩进和制表符分隔的章节标题;仅列出已启用技能且结果为空时, 输出空结果提示并省略空来源标题。
  • 会话日志用量区分名称前缀相同的 Skill,并识别紧邻 shell 操作符的路径 (#8694)。

[0.5.5] - 未发布

变更

  • 可通过独立 RPM 安装运行时和随附 Skill。
  • 随附 Skill 迁至 ANOLISA 的共享 skills 目录。

[0.5.4] - 2026-10-28

修复

  • Skill 移入另一个 Skill 目录后,及时移除 /skills 和 skill-discover 中残留的 顶层条目,使实时发现结果与重新扫描一致 (#9124)。
  • 选择 Yarn 时,带包名、选项或不明确 shell 语法的 npm install 命令保留原样, 避免转换为无效命令 (#9003)。
  • chat 使用统计将 --logs-dir 按字面路径处理,支持方括号等字符, 避免误统计相似名称的同级目录 (#9180)。

[0.5.3] - 2026-10-23

新增

  • skillfs mount --config mount.toml --managed 支持自动恢复,保留启动时的配置, 同时读取来源的当前内容。配置变更在成功停止并重新启动后生效 (#8883)。

修复

  • Managed mount 在点号开头的挂载点和慢主机上稳定启动,worker 启动失败时及时报错 (#8080)。
  • Flat 和 Hermes 安装时隐藏暂存目录,发布后保持元数据读取和目录列表一致 (#7767)。
  • 创建、重命名和嵌套 manifest 修改后,同名 Skill 归属和 discovery 保持一致; 安装和重命名遵守配置的大小上限 (#7742)。
  • Skill 解析和 CLI 输出正确处理空白 frontmatter、按字符计算的名称长度诊断及控制字符转义。

[0.5.2] - 2026-10-15

修复

  • managed stop、supervisor 关停及孤儿 worker 替换时,若 FUSE 挂载仍被占用, 会保留有效的 Ledger backing 别名及其目录。若挂载在共用的 10 秒关停期限内 解除占用,则释放两处挂载并删除 SkillFS 创建的 backing 目录,保留来源内容 (#7297)。
  • 过大的认证变更通知改为请求重扫整个 Skill,避免超过 daemon 的 64 KiB 帧上限。 上限内的请求保留路径提示,原始事件日志保持不变 (#7189)。

[0.5.1] - 2026-10-10

本次补丁版本集中整理 0.5.0 之后合入的文件系统边界修复和易用性改进。

变更

  • 认证通知和实时来源解析已接通 Rust sec-core SkillSec daemon。配合兼容的 daemon, 启动及 Skill 修改可触发扫描和激活状态更新;通知仍为 best-effort,不承诺恰好一次投递 (#3295)。

修复

  • 隐藏 Skill 会拒绝通过已打开句柄写入,也会拒绝嵌套文件创建、链接、元数据及 xattr 修改。快照中的符号链接目标和 xattr 按当前激活视图读取,修改来源元数据时不再跟随 符号链接 (#5382)。
  • Flat 和 Hermes 目录在移动、替换及 unlink 后保持 Skill 列表和 inode 身份一致。 保留路径、暂存目录和隐藏点目录不会出现在普通列表中,Hermes 顶层文件仍可读取。
  • watcher 保留与读取事件相邻的修改事件,并跟踪分类目录中的 manifest、目录移动和 删除。pending-install 检查和激活决策等待均有明确上限 (#4530)。
  • 挂载时保留已有 views 配置,包括无法解析的配置;生成 views 和管理状态时使用独立 暂存文件。视图和发现结果不再重复列出 Skill,分类及列表会报告跳过的 Skill、名称 冲突和加载错误 (#6202)。
  • 复用 managed mount 时拒绝更换来源,卸载失败时保留 backing root,并正确处理转义 路径和非 UTF-8 路径。使用前检查 control socket 父目录和激活日志路径;daemon endpoint 暂时不可用时,reconcile 会重试。
  • Skill 解析正确处理 UTF-8 BOM、CRLF、围栏代码块、空 frontmatter、重复章节及参数名, 避免丢失内容。Skill 文件和分类元数据读取有大小上限,不配对的指令保留原文。
  • OS 命令适配只改写真正执行的命令,不再误改普通文本或 Python pip 模块调用,也可 处理 timeout、nice 和 run 标签后的命令。CLI 状态名称与文档一致,列表转义 控制字符,文件系统路径保留原始字节。

[0.5.0] - 2026-09-20

新增

  • skillfs mount --config mount.toml 现在可按顺序将多个 Skill 来源合并到同一挂载。 同名 Skill 整个目录以靠前的来源为准;多来源挂载为只读,修改配置或新增、删除 Skill 后需重新挂载 (#3200)。
  • 新增可选的 Kubernetes 部署方案,将只读技能包复制到私有可写来源,再由 Ledger 扫描和激活。新增的 --read-only 选项禁止通过 Agent 可见的挂载写入; 缺少有效激活状态的 Skill 保持隐藏 (#3182)。

变更

  • Debian 和 Alibaba Cloud Linux 4 Sidecar 镜像现在会检查实际 FUSE 读取, 连续失败后尝试重新挂载,并限制重试次数。恢复后,工作负载需要重新打开失败的句柄 (#2701)。
  • 以只读方式打开的转换后 SKILL.md 现在会保留打开时的内容,来源修改后, 新打开的句柄可读到更新。容量受限的缓存可在属性查询和多次打开之间复用转换结果。 这类句柄另有独立的挂载级额度;新句柄若会超出 64 MiB 或 1,024 个句柄的上限, 打开操作会返回 ENOMEM,关闭已有的这类句柄可释放额度 (#3202)。

[0.4.2] - 2026-08-27

新增

  • 新增可选的 Alibaba Cloud Linux 4 Sidecar 镜像,为现有 Debian 镜像提供可复现的 替代方案,并通过中英文文档说明两个镜像版本的构建和运行方式 (#2777, #2787)。

修复

  • 启动 reconcile 现在会通过有界退避重试 notify daemon endpoint 的临时故障, 当 daemon 延迟启动或重启时,隐藏 Skill 可自动恢复到正确状态 (#2790)。
  • Flat normal-mode mount 现在会通过已记录的物理目录解析 categorized Skill, write、truncate、rename 和同步操作不再因 ENOENT 失败 (#2901)。

[0.4.1] - 2026-08-21

新增

  • 新增 Kubernetes Sidecar 部署方式,由特权 SkillFS 容器向非特权工作负载提供 FUSE view,工作负载也可读取 skill-discover 提供的路径 (#2057)。
  • 新增可选的双向 HMAC-SHA256 认证,通过 --trusted-peer-key-file 和 --notify-auth-key-file 保护跨容器 namespace 的 control socket 与 notify socket,同时保持既有宿主机认证方式不变 (#2449)。

变更

  • Kubernetes 参考部署现在会在一次 FUSE read 失败后将 Pod 标记为 NotReady, 在连续两次 liveness 失败后仅重启 SkillFS Sidecar,使工作负载无需重启即可恢复 (#2705)。

修复

  • Hermes 嵌套 Skill 现在可通过 control socket 使用 category/skill 这类 layout-relative 标识更新 activation 状态 (#2407)。
  • Activation metadata 权限、in-place backing alias 和 control listener 启动过程 现在会 fail closed,避免暴露 metadata、接受不安全 source 或遗留不可用 endpoint (#2407)。
  • 随包分发的 skillfs-mount Skill 现在使用实际存在的分析脚本名称,并准确说明 managed mount 与可写 source 行为 (#1798)。

[0.4.0] - 2026-07-24

新增

  • 可配置的 read-time transform 现在默认保持 directive compilation 启用, 并新增可选 OS adapter,内置 Ubuntu/Alinux 规则且支持外部 catalog 覆盖 (#1484)。
  • 新增 authenticated live-source resolver 和 notify v2 protocol,使 Skill Ledger 可获得规范的 flat 或 Hermes Skill identity、event kind 和 changed path, 同时不暴露 backing-root 细节 (#1517)。

变更

  • Agent 可见访问检查现在遵循 activated snapshot 权限,live-source 权限继续控制写入 (#1517)。

修复

  • SLS telemetry writer 现在会动态遵循 /etc/anolisa/.telemetry_disabled, 且无法检查该 gate 时会 fail closed (#1584)。
  • Hermes symlink boundary、resolver path、socket ownership 和 peer authentication 现在会在 discovery、read 和 mutation 过程中 fail closed (#1517)。
  • Control socket 前置条件诊断现在会统一显示公开参数名 --control-socket (#1739)。

[0.3.4] - 2026-07-16

修复

  • CLI output pipe 提前关闭并触发 panic unwind 时,SLS ops logging 现在仍会准确保留 一条 command record。

[0.3.3] - 2026-07-10

新增

  • 新增 Hermes workspace layout 兼容能力。SkillFS 现在可以识别 Hermes hub marker、 保留 management path,并同时暴露嵌套的 category/skill/SKILL.md Skill 与顶层 Skill。
  • Hermes 嵌套 Skill 现在支持 activation state、installer lifecycle write、 notification、audit attribution、fallback snapshot 和 hidden visibility。

修复

  • skillfs validate --json 现在会在 warning 和 error 中包含 source path, 便于自动化流程定位无效 Skill。
  • FUSE teardown 现在会限制 unmount 失败后的 cleanup,避免泄漏的测试 mount 影响后续 session。

[0.3.2] - 2026-07-03

修复

  • CLI SLS ops logging 现在会记录 SkillFS mount 和 runtime operation。
  • Runtime metric 现在会向 SLS consumer 发送实时 delta。

[0.3.1] - 2026-07-03

新增

  • Managed mount supervision 现在可以恢复 stale FUSE mount,并限制重复启动时的 recovery retry。

变更

  • 中英文 README 现在包含 managed mount、in-place operation、security boundary 和 troubleshooting 指南。

修复

  • Installer 完成后,post-publish grace read 会从 source path 读取 fallback Skill file。
  • skillfs validate 现在会在 status summary 中报告 parse failure。
  • In-place authoring 现在支持新 Skill 和 pending-install ownership change。
  • Managed stop 和 runtime-dir 处理现在可避免 stale ownership 与无限 recovery retry。
  • PrivateTmp 下 daemon-facing backing root 会在 mount 启动前被拒绝。
  • FUSE smoke cleanup 现在能更可靠地处理残留 mount 和临时 path。

[0.3.0] - 2026-06-26

新增

  • 新增 agent Skill directory 的 runtime security integration。SkillFS 现在可从 .skill-meta/activation.json 或 user.agent_sec.skill_ledger.activation xattr 读取 activation decision,并将每个 Skill 显示为 current、hidden 或可信 fallback snapshot。
  • 新增面向外部 security daemon 的 file-change notification。通过 --activation-mode file、--notify-socket、--activation-events-log 和 --activation-reload-mode poll,SkillFS 可报告 Skill mutation、重新加载 activation decision,并让已打开的 file handle 保持指向原 target。
  • 新增用于写入 activation 的 trusted control socket。通过 SO_PEERCRED、 executable identity 和 start-time check 验证的 daemon,可通过受限 request API 更新 activation JSON 或 activation xattr,无需通过 agent-visible mount path 写入 .skill-meta。
  • 新增对常见 Skill 安装流程的 installer compatibility。Staging directory、 direct write、quiet-timeout completion 和 post-publish grace window 允许 installer 完成 Skill 写入后,再由 SkillFS 请求 security provider 扫描并激活。
  • 新增面向 security daemon 的 in-place mount 支持。Ledger backing root 会以 private bind 方式挂载并在启动时校验,使 scanner 读取真实 source tree, 不经过 agent-facing FUSE view。
  • Skill 的 canonical identity 现在基于 directory basename。Frontmatter name: 继续作为 display metadata,不再改变 SkillFS store key 或 daemon-facing Skill ID。

变更

  • .skill-meta/** 对普通 agent 隐藏,只能通过 trusted metadata path 或 control socket 访问。
  • Skill mutation notify 现在使用普通 filesystem event kind,包括 create、 write、rename、unlink、rmdir 和 truncate event,不再使用单独的 install-complete protocol event。
  • POSIX passthrough 扩展了 symlink、hardlink、FIFO、path-length fallback、 open-after-unlink、xattr 和 inode consistency 行为。

修复

  • 结合 notify-triggered reload、polling 和 activation watcher convergence, 避免 stale activation view。
  • 通过 start-time 与 file-identity validation 加固 trusted-writer 和 trusted-peer check,防止 process reuse 与 executable replacement。
  • 修复 hidden Skill、fallback snapshot、staging path 和 backing-root propagation 周边的 installer 与 daemon visibility 问题。

[0.2.0] - 2026-05-09

新增

  • 新增 Skill directory 上 write、create、mkdir、rename、unlink、 rmdir 和 setattr(size) operation 的 FUSE write passthrough。
  • 新增 background sync worker,在写入后重新解析 SKILL.md,并将 entry upsert 回 SharedSkillStore。
  • 新建 Skill directory 现在会立即可见。mkdir 会先插入 ParseStatus::Degraded placeholder,写入 SKILL.md 后由 sync worker 替换为真实 entry。
  • 新增通过 /proc/self/fd/{n} 访问底层 source 的 in-place mount mode, 避免 over-mount self-loop。
  • 新增 integration suite crates/skillfs-fuse/tests/write_guard_tests.rs, 覆盖 normal 与 in-place write path。

变更

  • Directory name 现在是权威 store key。rename 后,stale frontmatter name: 不会再恢复旧 key。
  • 读取 SKILL.md 时仍返回 compiled result,raw file 只用于 write 和 parse。
  • Architecture doc 重构到 docs/specs/skillfs-spec.md、 docs/specs/core-spec.md 和 docs/specs/fuse-spec.md。

移除

  • 移除 skillfs-core 中 workspace 相关 code path 和未使用的 workspace config support(commit 6d604c7)。
  • 移除旧的临时 test script,仅保留 scripts/build.sh 和 scripts/test.sh。

修复

  • CLI tracing timestamp 现在使用本地 timezone,不再使用 UTC。

[0.1.2] - 2026-04-29

新增

  • 新增 read-only mount write protection,mknod、symlink、link 和 write callback 都会返回 EROFS。

修复

  • Parser summary 截断现在遵循 multi-byte character boundary。

[0.1.1] - 2026-04-29

新增

  • 新增 docs/skills/ 下的 skillfs-mount agent Skill,帮助用户设置、挂载和 卸载 SkillFS instance。

[0.1.0] - 2026-04-25

新增

  • 首次发布 SkillFS workspace。
  • skillfs-core 提供 SKILL.md parser、带 flat 与 categorized directory layout 的 in-memory SkillStore、skillfs-views.toml configuration、条件式 compiler::compile 和 environment probing。Parser status 包括 Ok、 Degraded 与 Error。
  • skillfs-fuse 提供 read-only FUSE filesystem,在 /skills 暴露配置的 default view、始终可用的 virtual skill-discover,并在读取时编译 SKILL.md。 Skill directory 中的其他 file 会透传到 physical source。
  • skillfs CLI 提供 mount、classify、validate 和 list subcommand。

更新日志

Tokenless 的所有重要变更都会记录在此文件中。

从 0.7.2 版本开始,发布记录遵循 Keep a Changelog 格式。

[未发布]

[0.9.4] - 2026-11-06

变更

  • 源码安装的不兼容变更: make install、框架注册和卸载现在默认使用 AWPRJ=anolisa,将适配器和扩展放入 ANOLISA 共享命名空间。要保留或卸载已有的独立安装,请显式传入 AWPRJ=,并沿用安装时的 profile 和路径覆盖。安装会拒绝覆盖其他安装拥有的资源;卸载会保留这些资源并发出警告。RPM/raw 布局和运行时配置路径保持不变(#9462)。

修复

  • JSON 深度限制现在保留数字、布尔值和 null 叶子的原始类型,不再将其替换为字符串标记。这些叶子不再写入 Stash,也不再计入截断次数;对象、数组和字符串沿用原有的深度限制行为(#7743)。
  • 可识别的原生 grep 和 rg 调用现在绕过 RTK 改写,PostTool 仅使用无损搜索压缩,包括受支持的包装命令和包含这些调用的复合命令。每条收到的匹配记录均会保留;搜索压缩被禁用、格式不受支持或无法节省时,即使启用 force_json 也保留原始输出。无法识别搜索边界的混合命令输出同样保持原样,因此结果可能更大(#9615)。
  • Qoder 原生 Bash 压缩现在仅替换字符串 stdout,包括较短或为空的值,保留 stderr、退出状态及所有其他结果字段(#9615)。
  • macOS 上的 QwenWork 即使在模型 Shell 中没有全局 tokenless 命令,也能通过插件私有可执行文件取回 Stash 原文。独立的 tokenless retrieve <HASH> 调用沿用 Hook 的数据目录和会话标识,恢复后的输出不会再次压缩。恢复能力要求私有可执行文件、有效状态目录和已注册的改写 Hook;Windows 和其他宿主保持原有行为(#9622)。
  • AgentScope 1.x 和 2.x 在可选的 PostTool 压缩失败时保留完整工具结果,包括协议错误和 SDK Wheel 签名不兼容。适配器会记录失败,不向调用方暴露部分替换文本或恢复提示;取消信号仍会向上传播(#8928)。

[0.9.3] - 2026-11-05

新增

  • tokenless rtk 在 tokenless 可执行文件内运行带 Tokenless 补丁的 RTK v0.49.0;tokenless rtk --version 输出内置的版本(#9324)。

变更

  • 不兼容变更: npm、RPM(tokenless-core)、ANOLISA raw、Windows ZIP 和 Python Wheel 软件包只提供 tokenless,不再安装单独的 rtk。PreTool 将命令改写为 tokenless rtk <命令>,并以绝对路径指向正在运行的 tokenless,因此改写和执行使用同一个 RTK 构建;它不再在 PATH 中查找 rtk。直接调用 rtk 的脚本需改为调用 tokenless rtk。升级会删除早期 Tokenless 版本安装的 rtk 辅助程序及其链接,保留单独安装的 RTK(#9324)。
  • Rust 调用方的不兼容变更: 移除 TokenlessRuntime::pre_tool。短生命周期进程继续使用 dispatch_with_store;长期运行的宿主改为运行 tokenless compress,因为 RTK 假定每条命令对应一个进程(#9324)。
  • Python SDK 的 pre_tool() 改为运行内置的 tokenless compress,不再运行 rtk rewrite。超时或子进程失败时,现在记录一条警告并原样返回参数,不再抛出 TokenlessError,工具调用仍会执行(#9324)。
  • PreTool 改写的时限仍为 5 秒。超时时,RTK 启动的进程(例如卡住的 git)现在随改写一起结束(#9324)。
  • 所有框架集成都通过单一的 tokenless 可执行文件运行 RTK。Claude Code、Qwen Code、Qoder CLI、QwenWork、OpenCode、Cosh-NG、OpenClaw 和 Hermes 原本就通过 tokenless compress 改写,现在得到的是 tokenless rtk 命令。Codex PreToolUse Hook 原先直接运行 rtk rewrite,现在同样通过 tokenless compress 改写;QwenPaw 和 AgentScope 则经 Python SDK 完成改写。Claude Code 和 Qwen Code 的检测以及 QwenWork 的安装不再要求 rtk。Hermes 将 tokenless rtk 包装视为 RTK 产生的输出,不再识别单独的 rtk 包装。DeepSeek Harness 只压缩工具结果,不受影响(#9324)。
  • 从源码构建(包括 curl 安装器的源码构建路径)需要 Rust 1.91 或更高版本,还需要 git 和 patch 来获取固定版本的 RTK 源码并打补丁。已有的 third_party/rtk 检出若来自其他补丁集会被拒绝,执行一次 just clean-rtk 即可重新创建(#9279、#9281、#9324)。
  • ANOLISA raw 软件包要求 ANOLISA 0.3.21 或更高版本,由它提供 Tokenless 的发现注册表(#9351)。

修复

  • HTML 渲染处理代码块中较长的反引号序列时,不再为每种可能的围栏长度重复扫描,避免耗尽 PostTool 的时间预算。渲染内容和恢复行为不变(#9396)。
  • PreTool 和 PostTool 识别 QwenWork 的限定工作区 Shell 名称 mcp__qw-builtin__mcp__workspace__bash,其纯文本结果可进入现有压缩路径,JSON 正文也可使用 TOON(#9459)。

[0.9.2] - 2026-11-05

变更

  • 可通过 core 和 plugins RPM 分别选择安装命令行程序与框架集成。
  • adapter 的注册和卸载使用所选的安装路径。

[0.9.1] - 2026-10-29

修复

  • Qoder 压缩 stdout 时保留原生 Bash 结果封装,保留退出状态和遥测字段,不再将它们序列化到模型文本中。其他结果形态保持原有替换行为(#9226)。
  • 可识别的 head 和 tail 命令现在保持原生执行,包括受支持的包装命令和包含它们的复合命令,从而保留请求的行范围。显式 RTK 调用和自定义 RTK 包装前缀保持原有行为(#9226)。
  • QwenWork 工作区 Hook 默认使用系统用户的 ~/.tokenless 目录,并遵循绝对路径的 TOKENLESS_DATA_DIR,在工作目录变化时仍将状态保存在同一位置。已有工作区历史不会自动迁移。安装和检测命令会报告解析后的目录,并说明 Shell 沙箱权限可能导致 RTK 统计和执行凭据无法保存(#9215)。
  • unittest 和 Django 的详细测试日志现在可以压缩重复的成功测试记录,同时保留汇总、非通过结果、异常堆栈和数据库初始化输出。原文仍可恢复,多行描述和未知输出保持原样(#9083)。
  • HTML 表格中的 rowspan="0" 现在延伸到当前行组末尾,并使单元格保持在正确的列标题下。原始页面仍可逐字节恢复(#9012)。
  • Windows 构建现在从 Cargo 解析出的目标目录收集本次构建的 Tokenless 和 RTK 可执行文件,避免环境变量或配置重定向构建输出后出现产物缺失或误用旧文件(#9018)。

[0.9.0] - 2026-10-25

新增

  • Windows x64 支持包括原生 CLI、内置 RTK、npm 启动器、Python ABI3 Wheel,以及用于本地会话的 QwenWork 适配器。发布构建生成 Windows ZIP 和 Wheel 产物;npm 安装仍需等待单独的 registry 发布。暂不支持 Windows ARM 和 QwenWork VM 会话(#8853、#9011、#9015)。
  • Intel Mac(macOS x86_64)现已纳入 raw 归档、npm 二进制和 Python Wheel 的发布构建目标。npm 安装仍需等待单独的 registry 发布(#8770)。

变更

  • Rust 调用方的不兼容变更: 从 JsonCompressionConfig 初始化代码中移除 drop_nulls 和 drop_empty_fields,从 JsonCompressionContext 初始化代码中移除 preserve_top_level_shape。完整 JSON 候选现在保留全部字段和空值,包括数组位置;部分输入的 Token 节省会减少或保持原样。显式截断和记录缩减保留原有恢复策略,CLI 参数不变(#8814)。
  • TOON 编码采用 spec v4.4,更紧凑地表示嵌套记录数组和按 ID 索引的对象。消费新的嵌套与键索引头部前,需将解码器使用的 toon-format 从 0.5.0 升级到 0.7.0。此前保存的无效空对象数组文档仍需从原始 JSON 恢复,codec 更新不会修复这些文档(#7752)。

修复

  • JSON 压缩和 Stash 恢复保留原始数字字面量,避免精度损失。TOON 候选必须保留留下的数值和数字类型,否则压缩保留精确 JSON,直接调用 compress-toon 则逐字节返回原始输入(#7784、#7752)。
  • 所有被跟踪的 RTK 调用都明确报告输出逐字节未变,且实际执行命令匹配时,PostTool 可继续压缩。输出已变或证据缺失、过期、不匹配时仍跳过 RTK 结果;不支持恢复的适配器仍只使用无损候选(#8901)。
  • compress-response 和 compress-schema 现在逐字节输出载荷,不再追加换行。实际压缩模式的统计与输出字节一致;dry-run 仍输出原始输入并记录预测节省(#7789)。
  • stderr 不可写时,提示消息不再使已成功的压缩、原样输出或统计操作发生 panic(#7796、#7752)。
  • Codex 适配器安装与卸载命令在 ANOLISA_DRY_RUN=1 下按真实生命周期分支预览操作,不修改文件或注册。二进制和源码目录均缺失时会提前失败,不再预览实际安装无法到达的步骤(#7723)。

[0.8.8] - 2026-10-21

新增

  • 可选择启用的统计服务通过 Bearer 凭据提供只读记录,支持按会话和工具筛选、分页及按需读取内容,供 AgentSight 等集成使用。远程监听需使用私有网络或 TLS 代理(#7303)。
  • 原生 find 路径列表现在可在可逆视图中共享重复目录前缀,同时保留每条路径及换行细节;有歧义或无收益的输出保持原样(#7953)。
  • macOS 插件在新对话中加载后,QwenWorkCN 1.3.2 的 workspace Shell 调用可使用 Tokenless;原生 Bash 继续受支持,Linux VM 执行仍不支持(#8725)。

变更

  • CSV 和 TSV 压缩现在保留全部行与单元格,不再抽样,也不再为表格写入 Stash。部分输出的 Token 节省会减少;此前存储的缩减视图仍可恢复(#8584)。

修复

  • CLI 在 stdout 或 stderr 不可写时不再 panic。已完成的操作遇到关闭的输出管道会正常退出,其他输出失败会报告错误;统计清空提示未送达时也不会确认删除(#7777、#7773)。
  • Qoder、Claude Code 和 QwenWork 的安装与卸载脚本在 ANOLISA_DRY_RUN=1 下只预览操作,不修改注册或文件;OpenCode 预览也会列出有条件创建的插件目录(#7715、#7731、#7747、#7750)。
  • Qoder 现在会更早展开较短的 Shell 结果再压缩。QwenPaw 在任一 PostTool 内容块失败时保留完整原始响应,并遵守绝对路径的 TOKENLESS_DATA_DIR(#8290)。
  • QwenPaw 会在插件执行工具调用前拒绝缺少必需 SDK 构造参数的 Runtime Wheel(#7744)。
  • 直接替换工具响应的宿主现在会把完整原始响应字段交给 Core,不再在 Cosh 包装提取时丢失字段(#7633)。
  • Codex 适配器现在能识别正确的限定插件标识;解码后的 tool_input 不是对象时,PreToolUse 事件会原样通过(#7565、#6984)。
  • Pipeline Worker 遇到无效请求类型时会返回错误,并继续处理后续请求(#7569)。
  • Git Diff 和 HTML 压缩在 Stash 写入失败时会保留原始工具结果并一致地报告 Stash 错误,不再将整次 PostTool 调用判为 Pipeline 错误(#6619)。
  • stats show 现在能区分压缩后内容为空、未存储压缩后内容,以及未发生压缩(#7809)。
  • QwenPaw 预发布 Wheel URL 现在使用符合 PEP 440、可被 pip 安装的文件名,同时保留 Release Tag 的原始拼写(#7662)。

[0.8.7] - 2026-10-15

修复

  • 当 JSON 响应包含解析时无法保持精确数值的数字时,保留完整原文;仅在解码能恢复相同数值和类型时使用 TOON 转换,避免静默丢失数值精度(#7069)。
  • OpenCode Schema 压缩保留可执行的参数校验器,仅修改发送给模型的 JSON Schema;只提供运行时 codec 的旧版宿主会跳过 Schema 压缩(#7048)。
  • Qwen Code 和 OpenCode 卸载脚本遵守 ANOLISA_DRY_RUN=1,仅预览移除操作,不删除插件注册或修改启用设置(#7348)。
  • 压缩与检索在统计数据库无法打开时发出告警,同时继续返回正常结果;遗漏的统计不会重试或重放(#7395)。
  • Selective-Claw 将归档摘要与当前对话窗口的召回 ID 正确对应,不再用不完整或被改写轮次的摘要覆盖无关归档摘要(#7042)。
  • 发布校验接受规范化的 Python 预发布 wheel 文件名,同时独立校验原始 release tag 拼写,并拒绝 pip 无法安装的文件名(#5271)。

[0.8.6] - 2026-10-14

新增

  • 新增 QwenWorkCN 本地模式适配器,支持命令改写、响应压缩和显式侧载桌面插件。适配器随 raw、npm 和 RPM 包分发;不支持安全工作区或 VM 会话(#7257)。

变更

  • 不兼容变更: OpenClaw 适配器现在要求 OpenClaw 2026.6.6 或更新版本,并在同一轮模型请求前对支持的实时工具结果进行无损压缩。持久化时不再重复压缩结果。2026.8.2 等旧宿主可能在中间件执行前截断文本,Tokenless 无法恢复已丢失的内容,建议使用包含上游修复 2f620b970a04 的构建(#7124)。

修复

  • 使用长选项、组合短选项或多个表达式的静默、仅打印 sed 命令现在能正确保留 HTML 源码。修改内容或从文件读取脚本的命令不再被视为普通文件读取(#4963)。
  • HTML 行内代码包含连续反引号时,现在会使用足够长的 Markdown 分隔符,保持代码片段完整(#6393)。
  • 在 macOS 上,RTK 命令改写清理仅包含已退出组长的进程组时,不再拒绝原本成功的结果(#7257)。
  • 通用及 Codex stdin hook 现在会忽略非对象 JSON 载荷,Codex 响应诊断也会忽略结构无效的载荷,避免不支持的输入触发异常堆栈(#6691、#6663)。
  • AgentScope 2.x 和 QwenPaw 现在会将格式错误的工具参数原样交给宿主处理,不再中止整次 Agent 回复;这些调用的响应处理仍保持无损(#5288、#5299)。
  • stderr 不可写时,Stats 和 Stash 库的警告不再中断原本成功的压缩、统计读取或检索(#6911)。
  • Selective-Claw 对每个请求轮次只返回一次,并保留首次请求的顺序,避免重复召回输出和 Token 开销(#4859)。
  • Selective-Claw 历史对齐现在会区分工具结果的调用 ID、工具标识及错误状态,即使文本相同也能保留不同结果(#7040)。

[0.8.5] - 2026-10-11

新增

  • 现在会在成功写入 SQLite Stash 时回收过期的载荷,只有压缩写入的工作负载无需先执行检索即可清理旧载荷。这不会立即缩小数据库文件,也不代表安全擦除已删除的数据(#3565)。

变更

  • CLI、Runtime 和 Python SDK 现在默认开启完整 HTML 页面的渲染。可通过 TOKENLESS_HTML_EXTRACTION_ENABLED=0 或 SDK html_extraction_enabled=False 关闭;环境变量为空时保留默认值。Git diff 上下文裁剪仍需显式开启(#3473)。

修复

  • 对于提供命令行的适配器,包括 OpenClaw、DSH、QwenPaw 和 AgentScope,cat page.html 等普通 Shell 文件读取现在会保持 HTML 源码原样。JSON、表格及其他支持的文件数据仍可压缩(#3481)。
  • 单个起始字节顺序标记不再阻止 HTML、JSON、表格或堆栈跟踪进入对应的内容处理器;支持恢复的转换会保留原始字节(#3486、#4888)。
  • 首尾带括号但并非单个有效 JSON 文档的工具输出,包括拼接的文档和 NDJSON,现在保持原样,不再导致 PostTool 调用失败(#4159)。
  • 带有 env -i、env -u 或 Cargo +toolchain 的构建、测试命令现在会保留原生日志供构建日志压缩使用,不再交给 RTK(#4270)。
  • 即使父进程退出后子孙进程仍持有 stdout,RTK 命令改写也会遵守超时限制,并清理所属进程组(#3552)。
  • 并发 hook 初始化或迁移统计数据库时不再竞争添加相同的列,失败的迁移会整体回滚(#3607)。
  • 统计历史和会话差异报告现在按实际时间排序,包括混合 UTC 偏移及亚毫秒差异,使最新记录的数量限制和压缩链保持正确(#3848)。
  • 统计记录和检索事件写入失败时现在会输出 [tokenless-stats] 警告,同时继续完成压缩和检索;stderr 本身不可写时也不会中断(#3587)。
  • AgentScope 1.x 的全新安装现在包含较新 SQLAlchemy 所需的 greenlet 依赖。以位置参数传入的应用 postprocessor 也会正确衔接,并先于 Tokenless 处理执行(#3496、#3706)。
  • Hermes 现在会为失败或已停止的 Shell 调用保留完整错误封装,避免丢失只存在于 output 字段之外的诊断信息(#3815)。
  • OpenCode 现在会转发非零 Bash 退出码供诊断,清理超时 hook 及其子孙进程,并按 UTF-8 字节执行 1 MiB 的 hook 输出限制。超限的 hook 响应会使工具输出保持原样(#4398、#3818、#4757)。
  • OpenCode 宿主对已返回工具 Schema 的修改不再影响后续调用使用的缓存 Schema(#4731)。
  • Qwen Code 适配器安装使用 --dry-run 时不再调用宿主 CLI、写入清单或改变当前扩展链接(#4397)。
  • npm rebuild 现在可替换失效的 tokenless 和 rtk 启动器符号链接,并支持重复执行(#4711)。
  • OpenClaw 查找二进制时现在会跳过 PATH 中的同名目录,继续找到后面的可执行文件或可执行符号链接(#4855)。
  • Selective-Claw 轮次召回现在按请求顺序合并实时与归档轮次,并绑定宿主会话,避免交错处理的会话将 expand_turn 重定向到另一段对话(#4670、#4782)。
  • Selective-Claw 现在会区分开头的 system 或隐式轮次与后续 user 轮次,并将旧归档迁移为一致的序数轮次 ID(#4673、#4693)。
  • Selective-Claw 首次创建全文索引时,现在会使已有归档消息也能被搜索到(#4689)。
  • Selective-Claw 重复执行生命周期调用时不再重复导入已替换的对话历史,重启引擎后也保持一致(#4700)。
  • Selective-Claw 从归档恢复结构化宿主消息,在组装存储上下文时保留工具标识、内容块、角色别名和元数据(#4699)。
  • Selective-Claw 现在会持久化不含 user 消息的轮次摘要,并将摘要与回退预览计入上下文 Token 估算(#4698、#4662)。
  • Selective-Claw 现在遵循 OpenClaw 的 pluginConfig 选项并展开 ~/ 归档路径,包括禁用注册的设置(#4822)。

[0.8.4] - 2026-09-22

新增

  • 在 npm 安装之外新增独立安装脚本及 install-tokenless OS Skill 入口。安装脚本在开始安装前选择 npm 或仅限 Linux 的源码构建,记录安装路径归属以供卸载,并在替换失败时恢复原有安装。源码构建仅安装 CLI;npm 还提供 RTK 和适配器(#2322)。

变更

  • npm 安装现在要求 Node.js 16.7 或更新版本,并保留属于其他安装的共享适配器资源。用户可通过 ANOLISA_TOKENLESS_FORCE_ADAPTERS=1 显式替换;否则安装程序会报告包内适配器的位置(#2322)。
  • 独立卸载仅移除安装记录中仍归本次安装所有的资源,除非指定 --purge,否则保留运行数据;无法确认框架注册已移除时保留适配器资源。Codex 插件显示为 not installed 时视为已成功移除,使重复卸载可以正常完成(#2322、#3412)。

修复

  • HTML 提取现在将页面 </html> 结束标签后的命令输出(如构建日志和 HTTP 状态码)保留在渲染后的页面之后,避免内容丢失。模仿页面边界标记的文本会被转义,并继续支持恢复原文(#3386)。
  • HTML 提取不再将包含大量自闭合 SVG 元素的浅层页面误判为嵌套过深。深度限制现在依据解析后的页面结构,异常标记和宽表格也不会再触发可能拖慢工具结果返回的重复扫描(#3396)。

[0.8.3] - 2026-09-20

新增

  • Git diff 上下文裁剪可在保留全部变更行和文件元数据的同时缩减周边上下文,并支持恢复收到的原始内容。通过 TOKENLESS_DIFF_COMPRESSION_ENABLED=1 或 SDK diff_compression_enabled=True 启用;默认关闭,要求宿主支持文本替换和原文恢复(#3299)。
  • 命令或 API 返回的完整 HTML 页面可渲染为 Markdown,提供原文恢复及被移除页面元素的计数。通过 TOKENLESS_HTML_EXTRACTION_ENABLED=1 或 SDK html_extraction_enabled=True 启用;默认关闭,要求宿主支持文本替换和原文恢复,文件读取保持原样,包括通过 Shell 文件读取命令输出的 HTML(#3306)。

变更

  • npm 安装在 Claude CLI 可用时自动启用 Claude Code 适配器,注册未完成时给出重试指引(#2193)。
  • QwenPaw 安装在交付插件包前检查对应 SDK wheel,确认资源缺失时报告版本和 URL。离线或镜像环境可通过 ANOLISA_SKIP_WHEEL_PREFLIGHT=1 跳过探测(#3289)。

修复

  • Claude Code 检测在有界等待窗口内退避重试已部署插件,减少宿主注册表尚未更新时误报“未安装”的情况(#3272)。
  • Raw 包现在声明并包含 OpenCode 适配器和适配器清单,使 ANOLISA 能发现并管理随包提供的插件。启用或禁用后需重启 OpenCode(#3324、#3346)。

[0.8.2] - 2026-09-15

新增

  • 支持的搜索结果列表(包括不带上下文行的 Claude Code 原生 Grep 结果)现在会共享连续重复的文件路径,同时保留每条已接收的匹配、行号和行尾。这项无损优化默认开启,要求宿主支持文本替换;可通过 TOKENLESS_SEARCH_PATH_SHARING_ENABLED=0 或 SDK search_path_sharing_enabled=False 关闭(#3173)。

变更

  • 内置 RTK 升级至 0.49.0,采用保守的管道改写规则,并保持 sudo 命令不变。直接使用 rtk grep 时,须改用 --max-len 和 --max 设置 RTK 显示限制:-l 和 -m 现在保留原生 grep 含义,文件类型过滤改用 rtk rg -t(#3273)。
  • 支持的 RTK 过滤器现在会通过 rtk recall HASH 提示恢复已保留的失败或截断输出。恢复存储以宿主 OS 用户为范围,受容量和过期限制;共用该用户的会话可以访问同一存储。RTK recall 与 Tokenless Stash 检索仍相互独立(#3273)。

修复

  • Cosh-NG 和 copilot-shell 在 Protocol v2 下现在能正确归因 JSON 编码的 shell 结果中的失败,保留原始失败输出,并将错误详情送交诊断(#2238)。
  • 内置 RTK 保留 pytest 启动和回退诊断,即使关闭恢复存储也不会丢失这些信息,并在 stderr 旁保留未发现测试的摘要(#3273)。

[0.8.1] - 2026-09-09

新增

  • CSV/TSV 工具输出现在可以通过精简引号和行结束符保留全部单元格;具备恢复能力时,较大的表格可以保留首尾行、诊断行及代表性采样。缩减视图会标明省略情况,并提供逐字节恢复原文的入口;完整枚举或计算必须使用原始表格。文件读取和缺少文本替换能力的宿主保持原样 (#3089)。
  • SLS 记录现在可以从 TOKENLESS_TRACEPARENT 或 TRACEPARENT 携带 tokenless.trace_id 和 tokenless.span_id,让可观测后端将 Token 节省关联到宿主 trace。上下文必须由启动 Tokenless 的宿主或适配器注入;没有有效值时记录保持未关联状态,本地 stats.db 数据不变 (#3094)。

修复

  • Claude Code 检测现在会在首次成功查询注册表却未列出已准备好的插件时进行短暂重试,避免刚安装后误报“未安装” (#3085)。
  • Hermes 现在会跳过 API 或调用签名与适配器不兼容的可信共享 hook 模块,继续寻找兼容候选;全部失败时会列出拒绝原因,避免旧安装或缓存模块破坏生命周期 hook (#2249)。
  • OpenClaw 安装现在会在宿主支持相应选项时接受声明的能力,并且仅在宿主声明 unsafe-install 标志仍有效时传入该标志。将其标记为 no-op 的宿主不会收到绕过标志,安装被拒绝时会提示检查 security.installPolicy (#3126, #3152)。

[0.8.0] - 2026-09-06

新增

  • 大型 JSON 记录数组现在可以按 32 条记录的基础预算保留代表性记录、错误、异常结构和数值离群点,并通过 Stash 恢复完整集合。若紧凑 JSON 或 TOON 候选可节省至少 15%,则优先采用,避免进一步缩减记录 (#3047)。
  • 现在可以压缩识别出的 Cargo、pytest、npm/Jest、Go、Make/C 和通用构建/测试日志,省略重复的常规进度,同时保留诊断、摘要、阶段信息和堆栈。支持的构建/测试命令会保留原生日志供此路径压缩,具备恢复能力时可取回省略的区间 (#3067)。
  • Cosh-NG、Claude Code、Qoder CLI、OpenCode、Hermes 和 DeepSeek Harness 现在可以通过已有 Shell 工具恢复省略内容。成功执行的独立 tokenless retrieve HASH 命令结果不会再次压缩;恢复要求 CLI 可用,且宿主能够替换当前工具结果,其中 Claude Code 要求 2.1.121 或更新版本 (#3052)。
  • 新增 QwenPaw 插件,在进程内提供 Schema 压缩、RTK 命令改写、响应/TOON 压缩和静态 tokenless_retrieve 工具。安装时选择匹配版本的 SDK Wheel,支持的内置工具表之外的工具保持原样 (#3075)。

变更

  • 不兼容变更: tokenless compress 现在仅接受 Protocol v2 的 before_model、pre_tool、post_tool 和 retrieve 请求,移除 Protocol v1 和 tokenless mcp serve。Core、适配器和自定义调用方必须同步升级,并提供必需的显式恢复能力声明 (#2978, #3068)。
  • 不兼容变更: Rust 调用方现在使用 Runtime 生命周期方法替代 TokenlessRuntime::compress。直接调用响应压缩的代码需要从已移除的 tokenless-pipeline Crate 和 tokenless_schema::ResponseCompressor 迁移至 Runtime 或 tokenless-compressors API (#2974, #2978)。
  • 不兼容变更: Python SDK 现在通过类型化生命周期请求调用 before_model、pre_tool、post_tool 和 retrieve,移除旧的 ModelRequest、ToolCall、ToolResult 和 ToolResponseCompressor API。AgentScope 集成要求为自定义工具提供 ToolContract 元数据,并暴露一个静态恢复工具 (#2986, #3029)。
  • 恢复提示现在直接给出可用的 Shell 命令或配置的静态工具名,并使用裸 Hash,便于 Agent 选择正确的恢复动作。历史 <<tokenless:HASH>> 标记仍可读取;自定义 retrieve_tool_name 必须符合工具名规则 (#3068)。
  • 生命周期 Schema 压缩现在要求提供授权静态恢复工具,并具备可用的 Stash。缺少该能力的 Common BeforeModel Hook 会保留原始 Schema (#2978, #2995, #3029)。
  • 生命周期压缩现在保留声明为文件内容的结果,以及已经由 RTK 优化的结果。Common Hook 会传递每次调用的优化状态,缺少稳定工具调用 ID 时保持命令参数不变 (#2974, #2978, #2995)。
  • 不兼容变更: OpenClaw 现在使用 post_tool_enabled 控制 PostTool 优化,移除原有的响应、TOON、跳过工具和 Shell 工具策略配置。DeepSeek Harness 也改用共享压缩策略,替代适配器专用阈值和工具列表。OpenClaw 仍仅支持持久化记录的无损更新,不支持当前轮结果替换或恢复 (#3009, #3036)。
  • Hermes 现在将 PreTool 改写和 PostTool 结果处理交给 Core,使用共享响应与 TOON 策略替代适配器本地决策;旧版 Hermes 仍保留阻止原命令并建议改写命令的兼容方式 (#3018)。
  • 压缩统计现在通过 content_origin、applied_operations 和 recoverability 替代 seam 与 compressor_chain;授权恢复事件也会记录 Agent、Session 和工具调用归属 (#2978)。

修复

  • OpenClaw 现在读取插件自身配置,即使全局配置存在冲突值,显式启用和禁用设置也能生效 (#3009)。
  • npm 包现在将共享 Hook 分发脚本作为可执行普通文件打包,避免 npm pack 忽略源码符号链接后,已安装插件无法调用 Tokenless (#3068)。

[0.7.14] - 2026-08-26

新增

  • 协议 v1 的 tokenless compress 命令与 TokenlessRuntime::compress 现在为 Schema、Response 和 TOON 压缩提供统一入口,使 Adapter 最多调用一次子进程、只执行一次最终大小判定,并且只记录胜出的操作(#2844)。
  • tokenless stats summary 现在会从活跃汇总中排除 Dry-run Row 并报告排除数量,同时新增总节省、Retrieve Token、净节省、Retrieve 命中/未命中/错误计数和不可恢复截断归因;JSON 输出使用 Schema 版本 1.1,Python TokenlessStats API 也开放相同的类型化字段(#2885)。

变更

  • 截断 Marker 现在包含可直接运行的 tokenless retrieve 命令,通过 CLI、MCP 和内嵌 Runtime 执行的 Retrieve 都会计入归因,并且 MCP Retrieve 与 CLI 一样接受大写 Hash(#2885)。

修复

  • Codex 集成不再在 Tool 使用后追加第二份压缩副本;它会保留环境诊断与 RTK 源头压缩能力,同时避免增加 Model 可见 Prompt(#2866)。
  • tokenless compress-toon 与 Runtime/Python SDK 现在会一致地保持少于 500 字符的有效 Payload 不变,同时可用 --min-toon-chars 0 强制编码;格式错误的 JSON 仍会失败,CLI 输出也会精确保留输入末尾换行符的原有形式(#2869)。

[0.7.13] - 2026-08-25

新增

  • Rust 调用方现在可以使用 tokenless-protocol 与 tokenless-pipeline Crate,获得带版本的压缩 Request/Response、受限成本的内容探测、Registry 路由、分阶段执行和 fail-open 仲裁能力(#2783、#2788、#2799)。

变更

  • CLI compress-response 命令、TokenlessRuntime::compress_response 与 Python Binding 现在通过共享 Pipeline 处理 Record 结构的 JSON;标量 JSON 根节点会保持原样透传,超时或被拒绝的候选结果会返回原始内容并回滚其 Stash 写入(#2816)。
  • Runtime 与 Python 的 disposition 值现在使用协议定义的 snake_case 形式(如 dry_run 和 no_savings),并可能返回 passthrough、timeout 或 error;当未发生截断时,纯清理节省现在无需 Stash 也可在 require_reversible 下生效(#2816)。

[0.7.12] - 2026-08-22

变更

  • Response 压缩现在会在保留数组头部后继续保留可配置的尾部窗口(默认 8 项,可通过 --array-tail-preserve 和 Runtime API 控制),使最终状态与错误细节继续内联,而 Stash 只存储被省略的中间段(#2433)。
  • 当 BeforeModel Payload 格式错误或未携带工具声明时,Schema Hook 现在会每个 Session 警告一次,使 Hook 被跳过与正常执行但未产生节省可以区分;显式空工具数组仍会静默透传(#2606)。
  • L2 Benchmark 的 JSON、Markdown 与 Semantic Gate Finding 现在会列出保真失败时缺失的 Ground Truth 项,不再只报告计数(#2433)。

修复

  • tokenless stats enable 与 stats disable 现在只基于磁盘配置持久化 Stats 开关,因此临时的压缩与 SLS 环境变量覆盖不会被写入 config.json(#2592)。
  • 当任一 Session 没有记录时,tokenless stats summary --compare 现在会失败,并且 --limit 0 会被拒绝,避免拼写错误或空样本显示为成功的 0% 对比(#2674)。
  • Schema 压缩现在支持包含顶层 tools 数组的完整请求对象,在保留非 Function 工具与数组外字段的同时压缩 Function Calling 条目(#2758)。
  • 无 Stash 的数组截断 Marker 现在可以完整通过 TOON 往返,极大的尾部保留值也会保留完整数组而不再溢出(#2433)。

[0.7.11] - 2026-08-20

修复

  • tokenless compress-toon 现在用与 stats summary 以及 Python/SDK 路径相同的 CJK 感知字符估算器计算 TOON 节省,因此 dry-run 的 stderr 预测计数与记录的 before_tokens/after_tokens 一致。JSON 解析、超限输入和 TOON 编码失败仍以退出码 2 结束(#2681)。

[0.7.10] - 2026-08-19

新增

  • Gemini 原生 functionDeclarations 工具 Schema 现在可在 copilot-shell 等 BeforeModel 集成中压缩,包括使用 parametersJsonSchema 的声明,同时保留无关的 Gemini Tool 字段(#2663)。
  • anolisa-tokenless Python SDK 现在通过 TokenlessStats 开放类型化的只读 Status、Summary、List、Show、Diff 和 Comparison 查询,复用同一个 Runtime 数据目录,并且只在显式 Show 和 Diff 调用中返回已存储的 Tool 内容(#2666)。

变更

  • Raw、RPM、npm 和源码安装不再构建或提供未使用的独立 toon 可执行文件;TOON 编码仍可通过 tokenless compress-toon 与 tokenless decompress-toon 使用,升级时只清理 Tokenless 所属的旧版残留文件(#2657)。

修复

  • AgentScope 集成 Wheel 现在声明 tqdm 依赖,因此使用受支持 AgentScope 1.x 范围的全新安装在搭配 OpenAI 3.3.0 及更高版本时可以直接导入,无需手动补装依赖(#2665)。

[0.7.9] - 2026-08-18

新增

  • anolisa-tokenless Python Wheel 现在开放框架无关的 before_model、before_tool_call、after_tool_call 和 retrieve 生命周期,内置 RTK,并提供原生 Schema 与 Response 压缩、TOON、受 Marker 授权的 Retrieve 和逐调用归属(#2627)。

变更

  • AgentScope 1.0.11 至 1.x 以及 AgentScope 2.0.x 集成现在挂载相同的完整 SDK 契约,在已有 Response 压缩与 Retrieve 支持上增加 Schema 压缩、命令改写、TOON、环境错误提示和逐调用归属(#2627)。

修复

  • Cosh-NG Extension 的 RTK 重写 Hook 现在直接匹配小写 shell 工具名,因此无需依赖宿主侧工具名别名也能重写 Shell 命令(#2611)。

[0.7.8] - 2026-08-18

变更

  • 当载荷少于 500 字符时跳过 TOON 编码;低于该阈值时 token 节省几乎为零,而每次事件的编码开销保持不变(#2613)。

修复

  • npm 平台包(@anolisa/tokenless-*)不再声明 tokenless/rtk/toon bin 入口。与根包的同名冲突会导致 npm 在安装时删除所有冲突的 .bin 链接,使安装后没有可用的 tokenless 可执行文件(#2613)。

[0.7.7] - 2026-08-17

新增

  • 现在可从源码构建 anolisa-tokenless ABI3 Wheel,为 CPython 3.11+ 提供有状态的进程内 JSON Response 压缩和基于 Marker 的 Stash Retrieve,且无需启动 CLI 子进程(#2501)。
  • AgentScope 1.0.11 至 1.x 以及 AgentScope 2.0.x 应用现在可以安装独立的同版本集成 Wheel,压缩成功的最终 Tool Response,并且只允许 Retrieve 当前 Agent 可见 Marker 对应的内容(#2507、#2528、#2553)。
  • DeepSeek Harness Profile 现在可以启用随包提供的原生 Plugin,在保持环境错误归因与 fail-open 行为的同时,压缩成功的单 Block JSON Tool Result(#2581)。

变更

  • Claude Code Adapter 探测现在会重试首次运行时暂时性的二进制文件与 Plugin Registry 初始化失败,减少预置完成后立即出现的错误未就绪结果(#2519)。
  • Tokenless RPM 现在提供虚拟能力 anolisa-component(tokenless),使 ANOLISA 在仓库组件索引不可用时仍可解析该 Package(#2576)。

修复

  • Cosh-NG Extension 执行现在会把硬关闭的 Tool Ready Hook 所返回的空结果视为成功 no-op,而不再 fail closed(#2506)。
  • 无节省的 Response 压缩现在只删除已丢弃候选结果所创建的 Stash Row,既避免孤立数据,也不会删除被其他进程刷新过的条目(#2480)。

0.7.6 - 2026-08-13

变更

  • TOKENLESS_DATA_DIR 现在接受真实用户 home 之外的绝对非根目录;显式目录无效时会停用 SQLite 状态,不再静默回退到 home(#2434)。
  • 所有 Adapter 的 Tool Ready 调用前检查、修复和阻断现已硬关闭,避免错误的就绪结果阻止有效工作;工具执行后的失败归因和其他 Tokenless 功能保持启用(#2487)。

修复

  • 直接 JSON Schema 的 Description 现在只会 Stash 一次,因此一次 Retrieve 即可返回不含嵌套 Marker 的原始内容(#2399)。
  • 通过环境变量设置 Stats 与 SLS 开关时,config.json 中的 Dry-run 压缩配置现在仍会生效(#2380)。
  • tokenless retrieve 现在会逐字节写出已存储的 Payload,不再追加换行符(#2396)。
  • Stash Retrieve 现在会跳过格式错误的 Marker 以查找后续有效 Key,并在对抗性输入下保持线性扫描(#2386)。
  • RPM 安装现在包含 Codex Adapter 安装脚本所需的共享生命周期 Helper(#2425)。

0.7.5 - 2026-08-10

新增

  • OpenCode 用户现在可以通过无冲突的本地 Plugin 启用 Tokenless,并复用现有的就绪检查、命令重写、Schema 压缩和响应压缩 Hook(1233cfcf)。

变更

  • Qoder Adapter 现在使用原生 Plugin 和 Hook 约定,在保持 fail-open 行为的同时原位替换压缩后的 Tool Output(13817938)。

修复

  • 重写后的 Shell 命令现在使用解析出的 rtk 绝对路径,因此在 PATH 受限的 Agent 环境中仍可正常执行(ae83f7d3)。
  • Qoder 和 OpenClaw Hook 现在会跨命令重写与 Proxy 边界保留 Agent、Session 和 Tool 归因信息(#2158、2f330656)。
  • Adapter 安装现在可识别旧版 /usr/local 布局、推荐使用 RPM 升级模式,并在升级时删除过期的已打包用户手册文件(f7ce3878、ec25d516、917f151e)。

0.7.4 - 2026-07-31

新增

  • Tokenless 现在可通过 npm 安装到 Linux 和 macOS x64/arm64,并包含 tokenless、rtk、toon 二进制文件以及 Framework Adapter(#1929)。
  • tokenless stats diff 现在可通过文本或 JSON 报告以及有界 Unified Diff,说明 Record、Session 和 Tool Use 的预计节省量(#1991)。
  • TOKENLESS_DATA_DIR 现在可为统计数据库和可逆压缩数据库设置一个可信目录,同时保留各数据库的独立覆盖项(#2038)。

修复

  • Qwencode Adapter 现在声明其提供的 compress-toon Capability,使 Adapter 发现结果与其压缩行为保持一致(#1945)。
  • Hermes 副本安装现在可从可信的系统、XDG 和用户数据路径解析共享 Hook 资源,并在找不到安全候选路径时提供可操作的诊断信息(#2058)。

0.7.3 - 2026-07-28

新增

  • ANOLISA 现在可在 macOS 上安装 Tokenless,并将 Qwencode 作为独立 Adapter 启用(#1964)。

变更

  • Adapter Hook 现在可在用户、/usr/local、RPM 和旧版安装布局中发现 tokenless、rtk 和 toon(#1957)。
  • Hook Launcher 现在优先使用当前安装中的资源,避免多个 Tokenless 安装共存时混用不同版本(#1964)。

修复

  • Tool Schema 压缩现在读取 Cosh 和 Cosh-NG 的规范请求字段,因此 Schema 会被压缩,而不再静默原样通过(#1894)。
  • 存在 Hook 环境变量时,Cosh-NG 压缩统计现在归因到 cosh-ng(#1894)。
  • Qoder Plugin 安装现在展开缓存的 Hook 路径,避免无效的 /rewrite_hook.py 命令阻塞 Tool Call;用户手册也包含受影响升级的恢复步骤(#1924)。
  • ANOLISA Package 现在包含 Tokenless Adapter 所需的共享 Hook 资源(#1964)。

0.7.2 - 2026-07-27

新增

  • Tokenless 现在通过替换原有 Model 可见内容来压缩 Cosh-NG Tool Response(#1669)。
  • Tokenless 现在可重写受支持的 Cosh-NG Shell 命令,以生成更紧凑的输出(#1669)。

变更

  • Shell 环境检查现在只报告当前命令引用的推荐工具(#1598)。
  • tokenless env-check --fix 现在只安装必需依赖,不会修改可选推荐项(#1598)。
  • 自动依赖修复现在会针对认证、网络或权限问题快速失败并提供可操作信息,而不再提示输入 sudo(#1598)。
  • Cosh-NG 压缩统计现在记录在 cosh-ng Agent 下(#1669)。
  • Cosh-NG 压缩现在从 Model Context 中排除仅供显示的内容(#1669)。
  • 无法检测版本的 Cosh-NG 运行现在会保持原始 Tool Response 不变(#1669)。
  • 压缩结果不够小时,Tokenless 现在会保持 Tool Result 不变(#1674)。
  • Tokenless 用户手册现在位于 ANOLISA 中央指南中,而不再随 RPM Package 提供(#1586)。

修复

  • Claude Code 2.1.121 及更高版本现在会用压缩结果替换原始 Tool Result,避免 Context 重复(#1674、#1686)。
  • 较旧或无法检测版本的 Claude Code 现在会原样传递 Tool Result,不再复制压缩后的 Context(#1674、#1686)。
  • Claude Code 替换现在会保留内置 Tool Result 格式,包括空字段(#1674、#1686)。
  • ANOLISA 现在可以正确识别已打包的 Tokenless 版本(#1587)。

0.7.1

  • 修复 RPM Tarball,使其排除生成的 .anolisa/component.toml,确保 rpmbuild 始终从权威 .toml.in Template 重新生成 Adapter Contract;此前签入的过期副本会缺少 claude-code、codex 和 cosh Adapter 声明(关闭 #1470)
  • 同步 Adapter Contract:在 component.toml.in 中声明所有已交付 Driver(qoder、claude-code、codex、cosh、qwencode),并增加 CI 检查 check-component-contract 以保持同步
  • 将测试覆盖率从 75% 提高到 90%:为四个 Crate 增加约 170 个单元测试,覆盖压缩边界情况、Stash 往返、Schema Migration、SLS Writer 和 CLI Dispatch
  • 强化测试隔离:使用 RAII TempDbGuard / EnvGuard 替换不安全的环境变量修改,避免测试接触真实的 ~/.tokenless 状态;在 Makefile 中强制使用 --test-threads=1(Rust 2024 的 set_var 是 unsafe)

0.7.0

  • 增加 MCP tokenless_retrieve stdio Server(tokenless mcp serve),使连接 MCP 的 Agent 可按需恢复截断 Payload;这是 tokenless retrieve CLI 的 MCP 对应实现,补齐与 Headroom CCR headroom_retrieve 的 Stash MCP 差距
  • 完成其余有损路径的可逆压缩(Stash / CCR)覆盖:ResponseCompressor 字符串截断、ResponseCompressor 深度截断和 SchemaCompressor 描述截断现在都由 Stash 支持并使用 <<tokenless:KEY>> Marker;写入 Stash 前进行容量检查以避免孤立条目,共享的 stash_suffix() Helper 保持 Marker 预算一致
  • 为 compress-schema 增加 --no-stash / --stash-db Flag(与 compress-response 一致);Dry Run(compression_on=false)会跳过 Stash,确保没有可检索条目时 Marker 不会进入 LLM
  • 为 SqliteStore 增加惰性 TTL 清理:在 Retrieve 查询前物理删除过期行,避免 Stash DB 无限增长
  • 增加实际节省率展示:StatsSummary::actual_savings_percent(session_total_tokens);format_summary() / format_summary_json() 接受可选的 Session 总量,并输出“Overall Savings vs Total Consumption”区段及新的 JSON 字段(session_total_tokens、actual_savings_tokens、actual_savings_percent);未提供时保持向后兼容
  • 为压缩统计增加 Stash 写入与大小计数器(扩展 record_compression_stats);Retrieve 端的命中/未命中统计延后到出现明确使用场景时实现
  • 增加 Qoder Framework Driver(qodercli 安装、settings.json Merge/Prune、AdapterOps::read_file、Symlink-safe 原子 write_file);仅允许 Qoder 使用 adapter_type=plugin;对伪造 Receipt fail closed,并要求所有受管 Hook 存在
  • 将测试覆盖率从 59% 提高到 75%:四个 Crate 新增 100 多个单元测试和 18 个 CLI 集成测试;测试代码通过 include!() 移至 src/tests/,使代码结构更清晰
  • 增加可逆压缩用户手册(docs/stash-reversible-compression.md)并更新 README:为 tokenless-ccr 增加架构树条目,增加说明 Hash/Marker 输入和 --no-stash / --stash-db 的 Retrieve 小节,并按场景映射重写“适用场景与预期效果”章节
  • 将 Tokenless 文档从 *_CN.md 重命名为 *_zh.md,增加双向双语链接,并创建 README.md 与 README_zh.md
  • 处理 Adapter Review 发现:信任 Codex Symlink Target 的已打包数据目录 Root;按组件限定 Claude Code Marketplace 并 fail closed;启用前拒绝 Framework/Adapter Type 不匹配
  • 消除 rustc 1.94 stable 在现有测试中发现的 Clippy Warning(tokenless-cli 中的 field_reassign_with_default,tokenless-stats 中的 bool_assert_comparison 和 default_constructed_unit_structs)

0.6.1

  • 将 tool_categories.json 打包进 dist,用于 npm 安装
  • 使用 node: Prefix,并在 OpenClaw Plugin 中移除 Shell Subprocess

0.6.0

  • 在 JSON 输出中增加绝对保存值和 Schema Version
  • 在 OpenClaw Plugin 中使用 import.meta.dirname 替代 __dirname
  • 为 Qwen Code Extension 增加 Qwencode Adapter
  • 修复 RTK pytest 的“No tests collected”回归
  • 为 Codex Script 中的 hook_utils Import 增加可信 FHS Fallback Path
  • 增加带配置开关的 SLS JSONL 数据收集
  • 增加 Tokenless RPM Component Contract(发布元数据)
  • 增加带 Dry-run 比较模式的压缩开关(TOKENLESS_COMPRESSION_ENABLED、stats summary --compare)
  • 默认启用 SLS 记录并补充使用文档
  • 对齐压缩模式的 Serde/DB 形式并去重配置加载
  • 扩展 RPM Component Contract(bundle.entry + hermes)
  • 将 SLS Writer 改为仅追加,并在日志文件不存在时跳过
  • Qwencode Hook 优先使用 tool_call_id,而不是内部 tool_use_id
  • 将 Vendored RTK 升级至 v0.43.0;针对重构后的 Runner 重做 pytest stderr 输出 Patch;删除 grep-fallback-fix(上游已修复根因)和 preflight-skip-python(上游已撤销)
  • 将 Makefile 和 Spec 中的 toon-format 同步到 0.5.0(此前仍为 0.4.6)

0.5.1

  • 为 stats summary 增加 --json 输出
  • 实现统一 Tool 分类和三层压缩策略
  • 增加 RTK grep Fallback Pattern 修复 Patch
  • 增加 RTK pytest Error Report Patch

0.5.0

  • 增加 Hermes Adapter Runner
  • 移除 TOON Wrapper Prefix 并精简诊断 Tag
  • 在各 Adapter 中统一 RTK Rewrite Exit Code 3 的处理
  • 保护 env-fix 和 Hook 中的 Shell 变量插值
  • 增加 Subprocess Return Code 检查,并提取共享 Hook Utility
  • 保护 resolveBinaryPath 并改进 Binary Cache 失效逻辑
  • 在测试中使用 mktemp 和安全的 Home 展开
  • 限制 SchemaCompressor 递归深度,防止 Stack Overflow
  • 传播 env-fix Subprocess Failure,不再只返回 stdout
  • 基于 getpwuid_r 进行 Home 查询,并对候选 Binary 执行 Trust Check
  • 使用 UID Trust Check 强化 env-fix 安装路径,并将 stderr 转存到日志
  • Stats Recorder 从 Poisoned Mutex 恢复,不再直接失败
  • 增加输入大小限制并校验 DB Path
  • 在 Response Compressor 中预留 Truncation Marker 长度
  • 将 OpenClaw Plugin Name 重命名为 Tokenless,ID 重命名为 tokenless
  • 增加 Qoder CLI Adapter
  • 支持对 Array Input 执行 compress-schema
  • 压缩被跳过时发出警告
  • 增加 Stats Command Syntax
  • 增加 Claude Code Adapter Plugin
  • TTY stdin 输入时返回错误,不再挂起
  • 增加 Codex Adapter Plugin
  • 修复压缩 Pipeline 的输出膨胀、截断和 Hook Timeout
  • 强化 env-fix、版本提取、文件信任、Schema 和权限
  • 处理 Review 发现:Trailing Newline、chmod Guard、Rate-limited Log 和 Comment
  • 使 skip-tools 条目可进行环境归因
  • 增加 selective-claw Context Engine Plugin
  • 处理 selective-claw Plugin Review 发现
  • 从 selective-claw 中移除无效的 2 依赖
  • 恢复 compress_response_hook.py 中的缩进
  • 强化 Hook Exit Code 处理和 Trust Model 一致性
  • 只对真正异常的 RTK Exit Code 发出警告
  • 去重 rewrite_hook,并从 hook_utils 导入

0.4.1

  • 修复 env_check.rs 中 version_ge 的三段版本截断问题(比较所有分段)
  • 增加 Qoder、Claude Code、Codex Adapter Plugin 和文档
  • 将 manifest.json 与 Template 同步,以包含全部六个 Agent
  • 更新 README 和用户手册,记录新的 Agent Integration
  • 将 pycache 加入根 .gitignore
  • 更新 response-compression.md,记录全部 Agent Integration Path
  • 从 Cargo.toml 派生 Makefile 版本,并修复 Spec Changelog 的星期
  • 将 Adapter 版本号统一为 0.4.0
  • 从 Cargo.toml 派生 Adapter Plugin 版本,不再硬编码

0.4.0

  • 修复 Stats、命名、SQL、路径和权限中的 5 个 Bug
  • 对齐 FHS 路径、重构 Adapter 目录并移除 install.sh
  • 处理 Schema、env-check、Hook 和 Plugin 中的 Code Review 发现
  • 增加 Hermes Agent Plugin
  • 强化安全性并修复关键算法正确性
  • 修复行为正确性和逻辑问题
  • 去重、删除 Dead Code 并进行表面清理
  • 支持 Staged Install
  • 支持 Debian/Ubuntu FHS 路径并强化 Binary Resolution
  • 将 OpenClaw Plugin 构建到 dist/index.js

0.3.2

  • 使用 libc::getuid() Syscall 替换可伪造的 Home Directory UID 推导,保证 Trust Chain 完整性
  • 使用进程内 toon_format::encode_default() Library Call 替换 Subprocess toon -e 调用
  • 使用 crates.io Dependency 和内联 toon-format Source 替换 RTK/TOON Git Submodule
  • justfile 的 setup-rtk Recipe 在 RTK Stats Patch 失败时 Hard Fail
  • 统一 compress-toon、compress-schema 和 compress-response 的 Error Exit Code(均为 2)
  • 从 Makefile 的 toon 安装中移除 2>/dev/null || true(Binary 缺失时 Hard Fail)
  • 删除已具有 #[from] 的 thiserror Variant 上多余的 #[source] Attribute
  • 将 Python Hook 的 FHS Path Constant 去重到共享 hook_utils Module
  • 将 libc 加入 Workspace Dependency,用于 UID Syscall
  • 在 spec.in 中增加 rust >= 1.89 的详细注释,说明 CI Pin 的原因

0.3.0

  • 增加与 Cosh Extension 集成的 Tool-ready 四阶段环境预检查
  • 无 Token 节省时跳过压缩和统计
  • 通过 .rewrite-context 文件向 RTK Stats 传递 Caller Context
  • 从 install.sh 中移除多余的 Cosh Extension 安装/卸载
  • 按 Cosh 开发指南将 Cosh Hook 转换为 Extension 格式
  • 跳过零压缩和统计记录
  • 在 OpenClaw Plugin 中使用 isExecutable() 和解析后的路径
  • 为 RPM 安装的 Plugin 解析 RTK/TOON Binary Path
  • 修正 RPM 安装路径,使其符合 install.sh 预期
  • 在 TOON Encoding 中保留 Tool Result Message 结构
  • 将安装路径与 FHS 对齐
  • 使用 Hook Payload 中真实的 tool_use_id 自动记录 Stats
  • 重构 RPM 目录并移除自动 Plugin/Hook 安装

0.2.0

  • 增加基于真实数据自动记录的压缩统计
  • 增加 TOON Context 压缩支持
  • 对 Skill 和内容检索 Tool 跳过压缩

0.1.0

  • 将 Tokenless 引入 ANOLISA(#199)

更新日志

0.7.0

Added

  • Hermes ws-ckpt-list 新增 limit 和 cursor 分页参数 (#8874)
  • 健康提示采用缓存采样;health-check-interval=0 关闭周期诊断,但保留提示采样;采样未完成或过期时省略提示 (#8774)
  • Skill 支持无需宿主插件的每回合快照、cron 定时快照与保留策略;由模型编排,不保证生命周期 Hook 必然执行 (#9465)

Changed

  • BREAKING make install 改为安装预构建文件,不再构建或激活;新增 install-core、install-plugins 和 install-skills 选择性安装目标 (#9222)
  • BREAKING make install 默认使用 AWPRJ=anolisa;传入 AWPRJ= 可保留独立布局 (#9462)
  • RPM 可执行文件从 /usr/local/bin 迁至 /usr/bin (#9222)
  • 独立包不再携带 ANOLISA 组件发现契约;新 raw 包要求 ANOLISA ≥ 0.3.21 (#9222, #9351)
  • 提升长快照历史的游标分页性能 (#8881)

Fixed

  • 多工作区共享单个 inotify 实例;ws-ckpt 和 cosh checkpoint 状态新增监听覆盖缺失与队列溢出信息 (#7592)
  • RPM 回退到拆包前版本时保留服务启用与运行状态 (#9472)
  • legacy IPC 边界拒绝不安全的快照 ID (#7593)
  • 重新挂载前清理空闲 loop 关联,对短暂设备持有执行有界重试 (#9385, #9471)
  • btrfs-loop img_size 最低为 5 GiB;配置无效时启动失败,不再回退到默认配置;旧值可通过 ws-ckpt config -g --img-size <GiB> 修正 (#9400)
  • 修复超出可表示范围的 auto_cleanup_keep 时间导致周期清理停止的问题;此类策略保留所有快照 (#9399)
  • 正确使用 btrfs-base.btrfs_mount,并在重启后复用持久化原生存储根目录;挂载变更需重启,不迁移数据 (#8943)
  • 正确解析 Hermes rollback 的字符串 preview,避免误执行真实回滚 (#9527)
  • 回滚后的自动快照抑制限定到目标工作区与会话 (#8866)
  • Hermes 插件激活和停用命令增加超时边界;失败或超时不再阻塞本地安装或清理 (#8998)
  • Hermes 工作区及 cron 配置保存成功后才生效 (#3618)
  • OpenClaw cwd 检查解析工作区软链接路径 (#4768)
  • 修正 Skill 的 rollback 父链说明:-n 1 选择 HEAD,-n 2 选择其父节点;撤销已完成回合应选择该回合快照的父节点 (#9465)
  • 修正 cosh-ng 参考文档中的 ws-ckpt IPC 枚举索引、payload 字段与客户端镜像兼容说明,协议编码不变 (#9466)

[0.6.1] - 未发布

变更

  • 可通过独立 RPM 安装运行时、宿主集成与 Skill。
  • Skill 和宿主插件迁至 ANOLISA 的共享资源目录。

0.6.0

Added

  • 新增 ws-ckpt 的 CI 预构建包 (#7106)
  • 快照列表支持分页 (#3451)
  • 新增中断清理操作的协调恢复 (#3450)

Changed

  • 恢复英文版 ws-ckpt README 缺失章节 (#6157)
  • 补充 ops-log 记录写入器的测试覆盖 (#3738)

Fixed

  • 完善启动期回滚恢复:恢复回滚 head、完成中断的回滚、限制 daemon 重复重启 (#8570)
  • 修复父代链存在环时不终止的问题 (#8467)
  • 清理遗留的配置临时文件 (#3764)
  • 将 openclaw CLI 捕获上限提升至 1 MiB 以上 (#4040)
  • 存储压力下阻止 btrfs 创建 (#7888)
  • 加固 cron 锁:写入前要求持锁、锁移除归属持有者 (#8273, #3755)
  • 记录恢复索引保存失败日志 (#3605)
  • 复用已生成的 checkpoint 标识符 (#4780)
  • 将确认提示翻译为英文 (#3930)
  • 隔离返回的 schedule 数组 (#4674)
  • 拒绝 cron 插值值中的换行符 (#6774)
  • 快照前先解析元数据 (#6956)
  • 双插件拒绝 cwd 位于工作区内的更新并暴露 init 失败 (#6216, #6217)
  • 加固 diff 快照处理:隔离临时快照、保留转义路径、拒绝畸形快照列表 (#6198, #3558, #5695)
  • 回滚后重新挂载写 watcher (#5054)
  • 保留工作区元数据 (#6930)
  • 将清理计数限制在 u32 范围内 (#3808)

0.5.0

Added

  • 统一 workspace 路径身份,init 时拒绝冲突的别名注册
  • init/unregister 被中断的 workspace 在 daemon 重启后自动恢复
  • 新增 cosh-ng 受管任务使用的 guarded rollback V2 协议与 evidence wire variants,cosh-ng 需要 ws-ckpt daemon 0.5.0 及以上

Changed

  • OpenClaw 工具白名单改由 OpenClaw config CLI 管理,要求 OpenClaw 2026.2.13 及以上 (#3221)
  • /etc/ws-ckpt/config.toml 以 RPM %config(noreplace) 打包:升级保留管理员修改、新默认值落为 .rpmnew;卸载时修改过的配置保留为 .rpmsave,重装后需手动恢复 (#3070)

Fixed

  • 修复空 workspace 不生成快照的问题
  • 修复 workspace 目录被外部替换后操作仍静默成功的问题,现在快速失败并提示 recover (#3059)
  • 修复 recover --all 部分失败时仍返回成功的问题 (#3069)
  • 修复 recover 失败时 rpm -e 连带清掉最后一份快照的问题 (#3069)
  • 修复磁盘空间紧张时 checkpoint 失败的问题,自动回收已删除子卷 (#3053)
  • 修复并发 init 同一 workspace 的竞态问题
  • 修复 raw 安装布局下的 adapter 发现问题
  • 修复 OpenClaw 插件安装时未校验 CLI 能力支持的问题 (#3116)

0.4.5

Added

  • 新增中英双语的 sidecar 部署指南 (#2965)

Fixed

  • 修复所有 loop 设备被占用时的间歇性 bootstrap 失败 (#2965)
  • sidecar preStop 的 loop 清理改为仅处理 ws-ckpt 自身的设备 (#2965)

0.4.4

Added

  • 新增受保护的 checkpoint 协议,快照创建按存储身份围栏,崩溃后状态仍可校验

Fixed

  • 修复回滚被中断后重启丢失状态,无法判定的候选文件予以保留而非删除
  • 修复 config --global 校验 daemon 是否实际加载所写配置 (#2813)
  • 修复 sidecar 部署指南遗漏全局配置所需的 /etc/ws-ckpt 共享卷 (#2813)
  • 修复错误提示覆盖容器化部署与 daemon 挂载命名空间场景 (#2807, #2814)

0.4.3

Added

  • 新增 k8s sidecar 容器化部署支持 (#2034)

Fixed

  • 修复 daemon 在持续 checkpoint 负载下内存无限增长,最终导致 OOM (#2554)
  • 修复 loop device 后端在并发 IO 下 checkpoint 延迟,至多降低至原来的 1/5 (#2523)
  • 修复 bootstrap 失败后遗留孤儿镜像和 loop device,并在启动失败时输出明确的错误信息而非静默退出 (#1956)
  • 修复 workspace 路径已被挂载时 init 返回 EBUSY 无提示,改为拒绝并给出清晰的错误信息 (#1798)
  • 补充 RPM 组件身份声明,使 anolisa-cli 可自动发现 ws-ckpt 适配器 (#2568)

0.4.2

Added

  • 新增 ops 日志写入的遥测门控 (#1509)

Fixed

  • 修复中断 init 后遗留的 .pre-init-bak 自动恢复 (#1601)

0.4.1

Added

  • 新增 rollback 后跳过自动 checkpoint (#1263)

Fixed

  • 修复 config 更新后的工作区同步 (#1263)
  • 修复 crontab 条目中 ws-ckpt 的绝对路径处理 (#1263)
  • 变更 rollback -n 偏移量,直接传递 numAncestors (#1263)

0.4.0

Changed

  • 不兼容 checkpoint -i/--id 参数更名为 -s/--snapshot 作为主参数;-i 保留为隐藏别名,未来版本可能移除 (#1064)

Added

  • 新增插件安装/卸载子命令 (#1005)
  • 新增 component.toml 用于 anolisa-cli 适配器发现 (#1005)
  • 新增 rollback 预览功能,支持 --preview 参数 (#1103)
  • 新增每次 CLI 操作后的耗时显示 (#1075)
  • 新增省略 --snapshot 时自动生成快照 ID (#1064)
  • 新增 SLS 运维日志输出用于仪表盘指标 (#1059)
  • 新增 diff 的可选 -t 参数,用于将快照与当前工作区对比 (#848)
  • 新增按祖先数量 rollback 和快照 DAG 追踪 (#877)
  • 新增基于 cron 的定时 checkpoint 快照 (#819)

Fixed

  • 修复 --snapshot/-s 作为主参数的处理及插件参数对齐 (#1103, #1064)
  • 修复 SKILL.md 与实际 CLI/插件实现的同步 (#847)
  • 修复 init 和 recover 对被替换的 workspace 符号链接的防护 (#860)
  • 修复 init rsync 去除 --copy-unsafe-links (#873)

0.3.3

Added

  • 新增每工作区策略覆盖,支持 hermes/openclaw 插件 (#721)
  • 新增 /proc cwd 占用者检测,用于 init 和 rollback (#684)
  • 新增 Hermes 适配器运行脚本 (#617)

Fixed

  • 修复 rollback 中的写锁竞争和 cwd 检测死锁 (#721, #684)
  • 修复非 UTF-8 路径和路径穿越快照 ID 的输入验证 (#695, #678)
  • 修复 seccomp 架构选择、工作区注册并发和 RPM 打包问题 (#695, #684)

0.3.2

  • 修复 openclaw 卸载时未从配置中移除工具白名单
  • 修复父路径拒绝规则作为工作区级别规则应用于 skill 和 openclaw 插件

0.3.1

  • 修复插件工作区配置注册和自动加载
  • 拒绝将 hermes cwd 本身或其父路径作为工作区路径
  • 修复插件工具优先使用显式 workspace 参数而非配置
  • 修复 skill 删除需要 --force 参数
  • 修复 daemon 工作区路径验证和 fswatch 文件描述符泄漏
  • 移除未使用的 btrfs_ops.rs 模块

0.3.0

  • 新增 openclaw 插件脚手架
  • 新增 hermes 插件脚手架
  • 将 ws-ckpt skill 改为 agent 无关,在调用时提示输入工作区
  • 遵循 make install 契约用于 build-all 集成
  • 修复 list 和 diff 子命令的缺陷
  • 将 daemon 改为有状态

0.2.0

  • 新增 auto_cleanup 功能及开关
  • 统一通过 TOML 文件修改配置
  • 新增全局 CLI 警告:当任意工作区快照数 >1000 或文件系统使用率 >90%
  • 修复后端检测和 daemon 状态恢复逻辑
  • 修复 daemon 重启后镜像大小配置不生效
  • 移除过时的 fs_warn_threshold_percent 参数
  • 修复 config.toml 作为示例文件分发

0.1.0

  • 带 Unix Socket IPC 和 Bincode 二进制协议的 Daemon
  • init / checkpoint / rollback / delete / list / diff / cleanup / status / config 命令
  • 后台调度器:自动清理、健康检查、孤立恢复
  • 多后端:btrfs-base / btrfs-loop / overlayfs 自动检测
  • TOML 配置持久化及运行时热重载
  • systemd 服务及 Alinux 4 RPM 打包