根本原因

claude-mem 官方安装器生成的 OpenCode 插件代码,和你本机 OpenCode 1.14.48 的插件 API 不匹配。

旧插件大致是这样监听的:

js



{
  hooks: { tool: { execute: { after: ... } } },
  event: (eventName, payload) => { ... }
}



但当前 OpenCode 实际要求的是顶层 hook 名:

js



{
  "chat.message": async (input, output) => {},
  "tool.execute.after": async (input, output) => {},
  event: async ({ event }) => {}
}



所以现象是:插件文件存在、OpenCode 也能加载它,但用户发消息和工具调用不会命中旧监听函数,最终 claude-mem worker 没收到 /api/sessions/init 或 /api/sessions/observations 请求。数据库里 sdk_sessions/user_prompts/observations 都是 0,也验证了不是 viewer 展示问题。

怎么修的

我把 claude-mem.js 替换成了兼容 OpenCode 1.14.48 的实现:


用 "chat.message" 捕获用户输入,调用 POST /api/sessions/init

用 "tool.execute.after" 捕获工具输出,调用 POST /api/sessions/observations

用 event: async ({ event }) 兼容当前事件总线,处理 assistant 文本、文件编辑、会话压缩

保留 claude_mem_search 工具

代码里的函数注释已按你的要求写成中文


我还做了验证:


node --check 语法通过

opencode mcp list 能触发插件加载日志

mock 了一次 OpenCode hook 调用,确认它会请求:

http://127.0.0.1:37701/api/sessions/init

http://127.0.0.1:37701/api/sessions/observations





需要重启 OpenCode TUI 后,新插件才会被当前会话加载。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐