工具大全
Claude 指南2026年8月6日8 次阅读约 2 分钟阅读

Claude Code 报 No conversation found to continue:你的 -p 会话被交互模式过滤掉了

官方文档怎么说

CLI 参考里 --continue 的语义非常简单:继续当前目录下最近的一次会话。没有任何附加条件——不区分这个会话是交互模式开的,还是 claude -p "..." 无头模式跑出来的。

这正是很多自动化工作流的基础假设:脚本里用 -p 批量干活,出问题了人再用 --continue 进交互模式接手排查。

实测发生了什么

macOS + Claude Code v2.1.220,一个干净的空目录,四步实验(终端为真实 TTY):

$ claude --max-turns 1 -p 'The answer is 42. Reply only with: OK'
OK

$ claude --continue
No conversation found to continue        # ← BUG:会话明明存在

$ claude -p --continue "What did I ask earlier?"
42                                        # ← 无头续聊完全正常

$ CLAUDE_CODE_ENTRYPOINT=sdk-cli claude --continue
# ← 交互界面正常打开,且完整加载了 -p 会话的历史

第 2 步和第 3 步的对比是关键:同一份会话数据,无头模式续得上,交互模式说找不到。会话文件好端端躺在 ~/.claude/projects/<项目路径>/ 下的 .jsonl 里——我们检查过,-p 创建的会话和交互会话存储在同一个位置、同一种格式。

坑在哪:一次过滤逻辑的误伤

这是 v2.1.90 引入的回归。那个版本的变更说明写着:"Changed --resume picker to no longer show sessions created by claude -p or SDK invocations"——--resume 的会话选择器不再展示 -p/SDK 创建的会话,这本身是合理的产品决策(选择器里全是脚本跑的一次性会话确实很吵)。

问题是这层过滤被同时应用到了 --continue。而 --continue 的语义是"继续最近的会话",压根不该关心会话怎么创建的。于是:

  • 目录里最近(或仅有)的会话是 -p 创建的 → 交互 --continue 把它过滤掉 → 报 No conversation found to continue
  • 无头路径 -p --continue 在早期 issue(#43013)后被修过 → 一直正常
  • 数据层无损:会话元数据里的 entrypoint 字段、jsonl 内容全部完好

GitHub 上的 issue(#82536,报告环境 Fedora + tmux)与我们在 macOS 上的复现相互印证——这是跨平台的逻辑层 bug,不是环境问题。从 v2.1.90 到 v2.1.220+ 持续存在。

两条实测可用的绕行

1. 只需要续着问一句 → 用无头续聊(最简单)

claude -p --continue "接着刚才的结果,帮我看下 X"

2. 需要进交互模式接手 → 加环境变量前缀

CLAUDE_CODE_ENTRYPOINT=sdk-cli claude --continue

这个变量让 CLI 以 SDK 入口的身份启动,绕过交互模式的会话过滤。实测交互界面正常打开、历史完整加载,后续操作与普通会话无异。发现此绕行的是 issue 作者,我们在 macOS 上验证有效。

另外注意一个排查陷阱:如果你通过管道或重定向运行 claude --continue(stdout 非 TTY),报错文案会变成 No deferred tool marker found in the resumed session——同一个 bug 的另一张面孔,别被它带偏去查什么 "tool marker"。

适用边界

  • 影响 v2.1.90 起的所有版本(本文实测 v2.1.220,issue 报告同版本,截稿时官方未修复、无关联 PR)
  • 只影响交互模式--continue/--resume-p/SDK 会话的发现;无头 -p --continue 不受影响
  • macOS 与 Fedora 双平台复现,与模型无关
  • 按过滤机制推断(此条未单独实测):目录里同时存在交互会话和更新的 -p 会话时,交互 --continue 会跳过 -p 会话接上较旧的交互会话——不报错,但接的不是真正的"最近一次",比直接报错更隐蔽

相关文章

Claude Code 到底在用哪个模型?settings.json、环境变量、--model 的优先级实测

多智能体、CI、批量脚本都依赖一个前提:会话真的跑在你配置的模型上。但模型可以在四个地方指定——settings.json、ANTHROPIC_MODEL 环境变量、--model 参数、会话内 /model——文档没有一张表告诉你谁覆盖谁,GitHub 上还有 Windows 用户报告 settings.json 配置被静默忽略、一整天的任务跑错模型全部作废。本文用 modelUsage 铁证逐层实测出优先级链:--model > ANTHROPIC_MODEL > 项目 settings.json > 内置默认,[1m] 后缀写法同样生效;并给出一个比任何 UI 提示都可靠的验证手段。

claude-codeclaude-code-lab+4
claude2026年8月6日3 min
8

Claude Code Hooks 的 stdin 陷阱:python heredoc 会吃掉你的 hook JSON

官方文档说 hook 通过 stdin 接收 JSON 输入,这没错。但如果你在 hook 脚本里用 python heredoc(python3 - <<'EOF')来解析这份 JSON,会掉进一个静默失败的坑:heredoc 把 python 的 stdin 重定向成了脚本本身,json.load(sys.stdin) 读到的永远是空。更糟的是,按最佳实践写的 hook 会吞掉一切异常静默退出——你不会看到任何报错,只会发现 hook '好像没生效'。这篇记录真实踩坑过程、两行代码的修复方案,和一个通用教训:静默容错的代码,调试时是你自己的敌人。

claude-codehooks+5
claude2026年8月6日3 min
27

我按「删掉这 5 类提示词」清了 Opus 5 配置,然后跑了 18 次 A/B:省了 21%,但「更好」我拿不出证据

「Opus 5 自带验证,把兜底提示词全删掉」——这个说法很流行,我照做了,然后用 CLAUDE_CONFIG_DIR 隔离出新旧两份全局配置,同任务同模型跑了 18 次 headless 对照。省 token 是真的:输出 token -21%,耗时 -20% 到 -29%,全部 9 组三次运行无一例外。但被删掉的规则里有两条根本没测出效果,还有一个反例:旧配置最认真的那一次,覆盖面是新配置所有运行的严格超集。这篇写实验怎么搭、数据长什么样,以及为什么「省」和「好」必须分开问。

claude-code提示词工程+4
claude2026年8月5日6 min
31

openclaw 一半命令能跑一半不能——这不是权限在拦,是网关根本没起来

同一台机器、同一个用户、同一份全局配置,两个 Claude Code 窗口里跑同一个 CLI,一个通一个不通。最像的解释是权限分类器把其中一个拦了——毕竟它确实会拦。但真相在另一层:守护进程的 plist 装好了却没被 launchd 加载,于是所有要连网关的子命令全挂,纯本地的子命令照常输出。这种「一半能跑一半不能」的形状,正是把人骗向权限假设的东西。本文记录完整排查:三个假设怎么被逐个推翻,包括我自己误读日志的那一次。

权限管理故障排查+4
developer2026年8月4日7 min
85