feat(ckpt): init openclaw and hermes plugin#599
Merged
Conversation
5c221e8 to
6dcef88
Compare
kongche-jbw
reviewed
May 22, 2026
kongche-jbw
reviewed
May 22, 2026
kongche-jbw
reviewed
May 22, 2026
kongche-jbw
reviewed
May 22, 2026
yummypeng
requested changes
May 22, 2026
Collaborator
yummypeng
left a comment
There was a problem hiding this comment.
为什么没有src/plugins/hermes?
29fa999 to
cc6158f
Compare
Signed-off-by: Ziqi Huang <[email protected]>
Signed-off-by: Ziqi002 <[email protected]>
- add install scripts dir - add openclaw plugins build - opt script file Signed-off-by: Ziqi Huang <[email protected]>
Signed-off-by: Ziqi Huang <[email protected]>
3123173 to
0c1204b
Compare
Signed-off-by: Ziqi Huang <[email protected]>
0c1204b to
f5cf7c6
Compare
Collaborator
|
@Ziqi002 判断下这个问题 |
yummypeng
requested changes
May 22, 2026
yummypeng
reviewed
May 22, 2026
f5cf7c6 to
14f06da
Compare
- fix docs /usr/bin to /usr/local/bin - change whitelist.ts import style to EMS - fix env check error omission - hasChanges fail return true - ensureWorkspace fail make env-check fail Signed-off-by: Ziqi Huang <[email protected]>
14f06da to
e94f19a
Compare
Collaborator
Author
|
已补充hermes代码 |
kongche-jbw
reviewed
May 22, 2026
kongche-jbw
reviewed
May 22, 2026
kongche-jbw
reviewed
May 22, 2026
Collaborator
|
@kongche-jbw review 没问题之后合并掉吧 |
934f787 to
5948f50
Compare
- derive RUNTIME_DIR/COSH_SKILLS_DIR from DATADIR - rename TARGET_DIR to ANOLISA_TARGET_DIR in lib-discover - openclaw cmd add env OPENCLAW_HOME "$OPENCLAW_BIN" Signed-off-by: Ziqi002 <[email protected]>
Signed-off-by: Ziqi002 <[email protected]>
5948f50 to
e986609
Compare
Collaborator
|
@yummypeng 可以合了 |
kongche-jbw
approved these changes
May 22, 2026
yummypeng
approved these changes
May 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Description
1. 新增 OpenClaw 插件实现 (
src/ws-ckpt/src/plugins/openclaw/)ws-ckpt OpenClaw 插件能力一览
一、对外能力:7 个 Tool(仅 Tool Calling,不注册 Slash Command)
源码来自 registerTools():
ws-ckpt-checkpointid(必填)、messagews-ckpt-rollbacktarget(必填,快照 hash)ws-ckpt-listws-ckpt-difffrom、to(均必填)ws-ckpt-deletesnapshot(必填)、workspacews-ckpt-statusws-ckpt-configaction(view/update)、key、value注:所有 Tool 直接与 ws-ckpt daemon 通信,不再依赖 CLI 二次校验。
二、生命周期钩子(自动快照)
源码来自 registerHooks():
message_received:记录最近一条用户消息(前 80 字符),作为后续快照的上下文 message。session_start:若autoCheckpoint=true,会话开始时对 workspace 做初始化并创建一个 "initial" 自动快照。agent_end:若autoCheckpoint=true,每个 agent 任务结束时创建一个 "turn_end" 自动快照(用户消息作为 message,UUID 前 8 位作为 id)。agent_end,因此不会自动快照。三、可配置项
来自 openclaw.plugin.json 的 configSchema 与
ws-ckpt-configTool:autoCheckpoint(boolean):插件私有配置,开关 session_start / agent_end 自动快照;通过ws-ckpt-config更新后持久化至~/.openclaw/ws-ckpt/plugin-state.json,不进入 OpenClaw 通用配置,变更不触发 gateway reload。maxSnapshotsNum/maxSnapshotsDuration:通过ws-ckpt-config透传给 daemon 持久化(写入/etc/ws-ckpt/config.toml),两者均unset时自动禁用 auto-cleanup。2. 新增 Hermes 插件实现 (
src/ws-ckpt/src/plugins/hermes/)ws-ckpt Hermes 插件能力一览
一、对外能力:7 个 Tool(与 OpenClaw 插件 Tool 表完全对齐)
源码来自 tools.py,通过
register(ctx)在 hermes/init.py 一次性注入:ws-ckpt-checkpointid(必填)、messagews-ckpt-rollbacktarget(必填,快照 hash)ws-ckpt-listws-ckpt-difffrom、to(均必填)ws-ckpt-deletesnapshot(必填)、workspacews-ckpt-statusws-ckpt-configaction(view/update)、key、value二、生命周期钩子(自动快照,每轮对话粒度)
源码来自 hermes/init.py:
on_session_start:若autoCheckpoint=true,先幂等执行ws-ckpt init(已注册的 workspace 是 no-op),再创建event=session_start、turn=0的基线快照;init 失败会打印诊断日志并跳过本次基线。pre_llm_call:线程安全(threading.Lock)地缓存本轮user_message,作为后续on_session_end的 commit message。on_session_end:若autoCheckpoint=true,每轮对话结束(注:Hermes 在每次run_conversation()收尾触发on_session_end,语义上是 per-turn 而非 per-session)创建event=turn_end快照,id 用secrets.token_hex(6),message 取缓存的用户消息前 80 字符(超长追加...);成功/失败均输出[ws-ckpt] Turn N snapshot ...日志。三、可配置项
来自 config.py 与
ws-ckpt-configTool,优先级 env > yaml > 默认值:autoCheckpoint(bool)与workspace(path):插件私有配置,ws-ckpt-config update时同时写入~/.hermes/config.yaml的plugins.ws-ckpt节点,并就地刷新单例CheckpointManager的内存配置(无需重启 Hermes 即生效)。maxSnapshotsNum/maxSnapshotsDuration:透传ws-ckpt config --enable-auto-cleanup --auto-cleanup-keep <v>持久化到 daemon;传unset时执行--disable-auto-cleanup。WS_CKPT_WORKSPACE、WS_CKPT_AUTO_CHECKPOINT、TERMINAL_CWD(workspace fallback 链)。is_managed()=true,拒绝写入config.yaml并返回明确错误,避免破坏受管理副本的不可变性。3. 构建 / 打包 / 安装链路改造
Makefile新增install-plugins目标,按 system/user 模式分别落到/usr/lib/openclaw/extensions/...或~/.openclaw/extensions/...adapter-manifest.json增加 plugin 声明build-rpm.sh把plugins/和adapter-manifest.json一并打入 tarballws-ckpt.spec.in同步插件路径与文件清单scripts/{install,uninstall}-openclaw.sh:完成插件目录拷贝、依赖安装、openclaw plugins install/enable调用Related Issue
no-issue: new feature
Type of Change
Scope
cosh(copilot-shell)sec-core(agent-sec-core)skill(os-skills)sight(agentsight)tokenless(tokenless)ckpt(ws-ckpt)Checklist
cosh: Lint passes, type check passes, and tests passsec-core(Rust):cargo clippy -- -D warningsandcargo fmt --checkpasssec-core(Python): Ruff format and pytest passskill: Skill directory structure is valid and shell scripts pass syntax checksight:cargo clippy -- -D warningsandcargo fmt --checkpasstokenless:cargo clippy -- -D warningsandcargo fmt --checkpasspackage-lock.json/Cargo.lock)Testing
场景 9:Openclaw Plugin
验证目标:自动快照+tools可以正常使用(checkpoint/rollback/delete/diff/status/list/config)
安装:
# 执行脚本安装 openclaw 插件 /usr/share/anolisa/adapters/ws-ckpt/scripts/install-openclaw.sh自然语言交互
场景 10:Hermes Plugin
验证目标:自动快照+tools可以正常使用(checkpoint/rollback/delete/diff/status/list/config)
安装:
# 执行脚本安装 hermes 插件 /usr/share/anolisa/adapters/ws-ckpt/scripts/install-hermes.sh自然语言交互
Additional Notes