注册 memU 的 Claude Code bridging 任务前,如何为 claude -p 准备好 headless 认证
注册 memU 的 Claude Code bridging 任务前,如何为 claude -p 准备好 headless 认证
【免费下载链接】memU Personal memory across agents 项目地址: https://gitcode.com/GitHub_Trending/mem/memU
memU 的 Claude Code bridging 任务是一个定时作业,它从裸的、非交互的环境里调用 claude -p 来挖掘最近的 Claude Code 会话并写入记忆。这意味着在注册这个定时任务之前,必须先有一个能独立解析、能 headless 认证的 claude CLI——BRIDGING_TASK.md 的 Prerequisites 把这一条列为硬前提:Desktop 应用无法代替它,因为它自带的二进制不在 PATH 上,且它的登录对独立 CLI 不可见(文档标注为 memU#538)。本文只讲这一个前置环节,对应 INSTALL.md Part 2.0 的内容:做两个检查、选定一种认证方式、跑一个探针确认通过。探针变绿之前不要注册任何 schedule。
为什么必须"先探测,后选择"
文档要求在任何环境下都先运行认证门禁(gate)再询问用户:已有的凭据(此前的 CLI 登录、已持久化的变量)本身就足以服务 headless 运行,门禁的结果是唯一需要关注的事实。探测通过就说明这一步已经完成了。只有门禁失败,才需要按下面两种方式之一配置凭据。
文档明确只有两种选项,没有第三种,也不提供"跳过":
- Web auth(浏览器登录,推荐):
claude setup-token,要求有 Claude 订阅,没有订阅会被直接拒绝; - Anthropic API key(平台账户,按 token 付费):持久化
ANTHROPIC_API_KEY。
不要走"custom endpoint"这条路:CLI 走的是 Anthropic Messages 协议,OpenAI 格式的中继不服务这个协议,文档把这称为 protocol trap。
检查一:claude 是否在 PATH 上可解析
先确认 claude 能解析。如果解析不到,文档要求直接运行官方安装脚本,不需要征求用户用哪种安装方式,也不需要提权或 node:
# Windows
irm https://claude.ai/install.ps1 | iex
# macOS / Linux
curl -fsSL https://claude.ai/install.sh | bash
脚本会把 claude 放进 ~/.local/bin。winget install Anthropic.ClaudeCode 和 npm install -g @anthropic-ai/claude-code 只是回退方案,用于脚本失败或用户已明确偏好时。
有一个文档特别指出的假阴性:刚装完的旧 shell 里 claude 可能仍报 not found。Windows 安装器把 claude 注册到用户级 PATH 注册表,macOS/Linux 追加到 shell rc——而安装前启动的所有进程(包括当前 shell)保留的是启动时的环境。此时应以落盘目录 ~/.local/bin 或新开的终端为准,而不是以安装前的 shell 判断。
方式 A:Web auth(claude setup-token)
claude setup-token 是浏览器登录流程,成功后凭据直接落在用户 profile 里——没有要复制的东西,也没有要设置的变量。但它是交互式的,文档给出了明确的执行要求:
- 在用户桌面上的真实终端窗口里启动并保持运行(Windows 可用
Start-Process claude -ArgumentList 'setup-token';macOS/Linux 在用户可见的终端里跑)。绝不要在后台或被捕获的 shell 里跑:它在本终端进程内监听一个 localhost 回调端口,进程一死,浏览器就落到一个不可达的localhost:…/callback页面,那个 code 绑死在已死的进程上,无法使用。 - 浏览器打开 → 登录 → 点 Authorize → 浏览器显示成功页("Build something great — You're all set up for Claude Code…"),终端窗口会自行结束,Claude Code 即直接完成登录。
- 成功信号不是浏览器页面:文档强调 只有门禁说了算。凭据文件在流程真正成功时出现在 profile 里,可以把它当作登录完成的旁证。
如果浏览器显示了成功页,但下面第 3 节的门禁仍报未登录,是 split-proxy 陷阱:用户的浏览器经过代理访问 Anthropic,而终端进程没有代理,OAuth 交换的 CLI 一半失败了。不要翻文件系统或凭据管理器去找一个从未写入的 token。修法是回到那个终端窗口设置 HTTPS_PROXY=http://127.0.0.1:<port>(HTTP_PROXY 同理),再跑一次 claude setup-token。定时运行同样需要这条出站路径,所以要像凭据一样把代理变量持久化(Windows 用 setx;Unix 写进 crontab 头部),并注意 Part 1 中 loopback embedding 服务需要 NO_PROXY 的说明。
方式 B:Anthropic API key(必须持久化)
Web auth 不需要任何持久化步骤,但 API key 必须落到持久层,否则定时任务会卡在 "Not logged in":
- Windows:用
setx持久化用户级环境变量(S4U 任务读取的是持久用户环境,会话内$env:导出无效)。 - macOS/Linux:shell profile 里的
export到不了 cron,变量要写进 crontab 头部,和PATH行并列。只在当前 shell 导出的 key 能通过你手头的检查,却让定时任务卡死——这是文档点名的"门禁自身抓不到的假阳性"。
两种方式都不可用时,文档的要求是停下来明示:Part 2 被未满足的前置条件阻塞,Part 1 和 Part 3 仍然有效,用户清楚该带什么回来。
用裸环境探针验证 headless 认证
探针必须恰好携带调度器会携带的环境,不多不少,而携带内容因方式而异。文档给的是 macOS/Linux 探针(env -i 会剥掉所有变量):
Web auth——凭据在 HOME 下的文件里,保留 HOME 就够(真实调度器会设置它):
env -i HOME="$HOME" PATH="$HOME/.local/bin:/opt/homebrew/bin:/usr/bin:/bin" claude -p 'ping'
Anthropic API key——凭据是环境变量,env -i 会把它剥掉,直接裸探针会误杀一台配置正确的机器,所以要在探针里按 crontab 头部将来的写法带上这个变量(把 <the key> 替换为你的 key 值):
env -i HOME="$HOME" PATH="$HOME/.local/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin" ANTHROPIC_API_KEY="<the key>" claude -p 'ping'
这里面的 PATH 只是对常见安装位置的探测;cron 条目注册时仍会从 command -v memu-claude-code / command -v claude 推导自己的 PATH 行,探针通过不能替代那一步(这一步属于注册环节,见 memu-claude-code docs task)。
Windows 不需要手写等价探针:memu-claude-code schedule install(注册入口)会替你运行这道门禁,两个检查任一项失败就带着安装指引拒绝执行。
探针失败时的判断依据:
- 报 not found / 路径问题 → 回到检查一,用落盘目录或新终端确认;
- 报未登录 → 回到方式 A 或方式 B:确认凭据是否持久化到位,或是否命中 split-proxy 陷阱;
- 注意门禁变绿前不要执行注册,文档原话是"never register a schedule that cannot authenticate"。
通过后进入注册
门禁通过、确认凭据持久化到位之后,bridging 任务的注册就回到 INSTALL.md Part 2 的主路径:运行 memu-claude-code docs task,按它给出的程序确定 schedule(默认每小时)并注册定时运行。注册后的验证(cron 条目存在、手动跑一次 memu-claude-code prepare 看会话准备数量)属于注册环节,不在本文范围内。
另外两个边界值得记住:注册时如果机器上已存在一条 memU bridging 条目,要先记录其频率、只删除那一条再按当前打包程序重建;而定时运行能跑通 pipeline 还需要 ~/.claude/settings.json 里 Bash(memu-claude-code *) 和 Edit(~/.memu/**) 两条权限规则,这与认证无关,属于 BRIDGING_TASK.md 列出的第三个前提,留给注册阶段处理。
【免费下载链接】memU Personal memory across agents 项目地址: https://gitcode.com/GitHub_Trending/mem/memU
更多推荐
所有评论(0)