16|长任务与后台任务:保持会话可恢复
管理后台任务、会话恢复和长时间运行命令。
管理后台任务、会话恢复和长时间运行命令。
长任务像夜间列车:你需要站点、时刻表和紧急制动,而不是只知道终点。阶段产物、定时状态与资源上限让偏航能被早发现。
本课交付物
把一次全站扫描拆成发现、分类、修复、验证四阶段;为每阶段设退出条件、最大耗时和可交付摘要,模拟中断后从检查点恢复。
消息通道(Channels)
消息通道允许 MCP servers 向正在运行的会话推送消息。
订阅 channels
# 启动时订阅 channel 插件
支持的集成
- Discord
- Telegram
- 其他 channel 型集成
配置
通过 MCP 配置或 settings 订阅相应 channel。
工作方式
外部系统可以把消息推送进 Claude 的当前会话里,让你在一个会话中接收通知或事件。
Chrome 集成
Chrome 集成让 Claude 可以协助浏览器自动化和站点级操作。
启用 Chrome 集成
开启相关开关后,Claude 就可以与浏览器协作。
能力
- 浏览器自动化
- 页面操作
- 网站级交互
站点级权限
你可以对站点设置更细粒度的访问权限。
工作方式
Claude 通过浏览器连接与页面交互。
已知限制
- 某些站点会限制自动化
- 复杂页面可能需要更多权限
远程控制
Remote Control 可以让你从 Claude.ai 或 Claude app 远程控制本地 Claude Code 会话。
启动 Remote Control
# 使用默认会话名启动
claude --remote-control
# 使用自定义名称
claude --remote-control --name my-session
连接到会话
你可以在远程端连接到已经启动的本地会话,继续同一个上下文。
安全性
远程控制会牵涉到会话和权限,因此建议只在可信环境中使用。
Remote Control vs Claude Code on the web
Remote Control 是控制本地会话;web 版则是在浏览器中直接运行。
局限
- 网络可用性依赖更高
- 某些本地资源可能不可远程访问
使用场景
- 在手机上查看并接管会话
- 远程继续长期任务
网页会话
Web Sessions 允许你直接在浏览器里创建和恢复 Claude Code 会话。
创建 Web Session
# 从 CLI 创建新的 web session
claude --remote "implement API"
在本地恢复 Web Session
# 在本地终端恢复 web session
claude --teleport
使用场景
- 浏览器里快速开始任务
- 在本地和网页之间切换
- 远程继续工作
桌面应用
桌面应用提供独立界面,适合视觉化 diff 审查和多会话管理。
安装
按照桌面应用的安装说明安装即可。
从 CLI 接力
你可以把 CLI 会话交给桌面应用继续处理。
核心功能
- 可视化 diff
- 多会话
- 更直观的审查体验
App 预览配置
可以调整预览、布局和视觉呈现方式。
Connectors
桌面应用可以连接到不同的工作环境。
远程和 SSH 会话
桌面应用也支持远程或 SSH 场景下的接力。
Desktop 中的权限模式
Desktop 里同样可以使用不同的权限模式。
企业功能
企业部署下可使用更多受管和合规相关能力。
任务列表
Task List 用于跨 context compaction 持久保存任务进度。
切换任务列表
在设置里打开或关闭任务列表显示。
持久任务
任务会保留,即使上下文被压缩,也能继续跟踪。
命名任务目录
你可以给任务分组或目录命名,方便管理。
提示词建议
Prompt suggestions 会根据当前上下文智能推荐下一步命令或提示词。
工作方式
系统会结合你的历史、当前任务和上下文给出建议。
禁用建议
如果你不想看到建议,可以在设置里关闭。
Git 工作树(Git Worktrees)
Git worktrees 让你在隔离的目录里并行工作,非常适合实验和分支开发。
从 worktree 启动
# 在隔离 worktree 中启动 Claude Code
claude -w
Worktree 位置
你可以控制 worktree 的放置位置,保持主工作区整洁。
Monorepo 的 sparse checkout
在大型 monorepo 中,可配合 sparse checkout 只加载需要的部分。
Worktree 工具和 Hooks
worktree 场景下依然可以配合工具和 hooks 自动化流程。
自动清理
不需要的 worktree 可以自动清理。
使用场景
- 并行尝试多个方案
- 隔离高风险重构
- 保持主分支整洁
沙盒
沙盒提供文件系统和网络层面的隔离,能显著降低自动化操作的风险。
启用沙盒
开启后,Claude 的很多操作都会在受控环境里执行。
配置项
你可以配置允许访问的目录、网络行为和例外列表。
示例配置
{
"sandbox": {
"enabled": true
}
}
工作方式
沙盒会限制 Claude 可触达的文件和网络边界。
使用场景
- 低风险自动化
- 在不完全信任的输入上执行任务
- 受控环境中的批处理
企业受管设置
企业可以通过受管设置统一分发 Claude Code 配置。
部署方式
- plist
- Registry
- 受管文件
受管配置片段
通过受管配置片段,可以给团队统一推送策略。
可用的受管设置
- 权限模式
- 功能开关
- MCP / hooks / 插件约束
macOS plist 示例
<!-- 示例略 -->
配置与设置
配置文件位置
~/.claude/settings.json.claude/settings.json.claude/settings.local.json
完整配置示例
{
"permissions": {
"defaultMode": "plan"
},
"thinking": {
"enabled": true,
"effort": "high"
},
"autoCheckpoint": true
}
环境变量
模型选择
ANTHROPIC_API_KEYCLAUDE_MODEL
API 配置
ANTHROPIC_API_KEY
Thinking 配置
CLAUDE_EFFORT
功能开关
CLAUDE_ENABLE_AUTO_MODE
MCP 配置
CLAUDE_MCP_CONFIG
任务管理
CLAUDE_TASK_LIST
Agent team(实验性)
CLAUDE_TEAM_MODE
Subagent 和 plugin 配置
CLAUDE_PLUGIN_DATA
子进程和流式处理
CLAUDE_OUTPUT_FORMAT
配置管理命令
你可以用命令查看或更新当前配置,并把它们落到 settings 中。
每个项目的配置
推荐把项目专用设置放进项目内的 .claude/settings.json,这样能跟代码一起版本化。
最佳实践
Planning Mode
- 复杂任务先规划,再实现
- 计划要可审阅
Extended Thinking
- 留给复杂问题
- 不要在简单任务上过度使用
Background Tasks
- 用于长时间、可并行的任务
- 记得设置超时和可见性
Permissions
- 默认最小权限
- 只在必要时放宽
Sessions
- 为重要会话命名
- 必要时分叉,而不是硬改
更多资源
- 根目录中文指南
- Slash Commands 中文参考
- Checkpoints 中文指南
- Plugins 中文指南
- CLI 中文参考
本站实战工作台
长任务为什么会“看起来还在跑”
时间一长,目标、现场和外部状态都会变化。没有阶段产物时,你只知道进程没结束,不知道它正在调查、修复还是死循环。长任务需要站点、预算与心跳:每一阶段交付什么,最多花多久,何时停下让人决策。
把全站扫描拆成四站
发现阶段只收集清单,不改文件;分类阶段按影响与根因分组;修复阶段每批限定范围;验证阶段运行全量检查和浏览器抽样。每站都有输入、输出、退出条件与恢复点。
发现(清单) → 分类(批次) → 修复(diff) → 验证(证据)
20min 15min 每批30min 45min
预算不仅是时间,还包括文件数、模型调用、网络请求和允许失败次数。达到上限时应总结已完成与剩余,而不是偷偷降低质量。
心跳必须提供新信息
“仍在处理中”没有价值。有效更新包含当前阶段、已完成数量、最后一条证据、下一检查点和新风险。不要频繁打断执行,但也不能让用户长时间不知道外部命令是否卡死。
中断恢复实验
在第二阶段主动停止。保存 task-state.md:目标版本、已完成批次、未提交差异、最后通过的测试和恢复命令。开新会话只提供项目规则与状态文件,验证能否从下一检查点继续,而不是重做发现。
对后台进程记录 PID、端口、日志位置与停止方式。会话结束不代表进程停止;恢复前先检查现场,避免启动第二个重复任务。
漂移检测
每个阶段结束重新对照原始验收。若用户增加需求,把它登记为范围变化并评估计划,而不是悄悄塞进当前批次。长任务最危险的不是慢,而是一直忙却逐渐交付另一个目标。
最终报告包含完成比例、证据、未完成原因、当前可安全发布范围和恢复点。能够中断并继续,才说明任务真正受控。