资讯动态

如何跑崩溃不丢进度的长任务Agent:Code Puppy + DBOS持久化执行实战指南

发布时间:2026/10/25 1:35:11 来源:尧图企业网站定制
【免费下载链接】code_puppyAgentic AI for writing code项目地址https://gitcode.com/gh_mirrors/co/code_puppy点击查看免费下载Code Puppy 是一款运行在终端里的 Agentic AI 编程 AgentAgentic AI for writing code它内置了基于 DBOS 的持久化执行Durable Execution能力把长任务 Agent 的每一步关键交互都写入数据库检查点进程崩溃、断电或被强杀后重启任务可以从断点恢复而不是从零重跑。对于批量重构、全量测试、跨文件迁移这类跑几十分钟甚至几小时的长任务这是一次崩溃、全部白干和原地续跑的分水岭。为什么长任务 Agent 会跑一半归零普通 Agent 的运行状态对话历史、工具调用结果、模型响应都保存在内存中。一旦进程崩溃或终端被关闭已完成的 LLM 请求结果丢失Token 费用打水漂已执行一半的文件修改状态需要重新对齐子 Agentsubagent正在跑的任务直接中断DBOS 的思路是Workflow as Code Checkpointing把整个 Agent 运行包装成一个持久化工作流每一步执行完就落盘检查点。恢复时从最近的检查点重放而不是重新执行已完成的步骤。上图展示了 Code Puppy 在终端中恢复已有会话Restored session并继续运行的场景——这正是持久化机制在会话层面的体现而 DBOS 则把同样的思路下沉到了每一步 LLM 请求与工具调用。快速启用 DBOS 持久化5 步完成第 1 步安装 durable 依赖DBOS 不在默认依赖树中需要通过durable可选依赖显式开启见 pyproject.tomlpip install code-puppy[durable] # 或使用 uv uv pip install code-puppy[durable]第 2 步启动 Code Puppyuvx code-puppy -i第 3 步打开 DBOS 开关在交互界面内使用斜杠命令/dbos on # 开启需要重启生效 /dbos status # 查看当前状态 /dbos off # 关闭也可以用配置项持久化/set enable_dbos false关闭。注意enable_dbos属于需要重启才生效的设置修改后 Code Puppy 会明确提示逻辑见 code_puppy/command_line/config_apply.py。第 4 步可选配置环境变量以下环境变量控制 DBOS 行为全部有合理的默认值环境变量作用默认值DBOS_SYSTEM_DATABASE_URL检查点数据库支持本地 SQLite 或 Postgres配置目录下的dbos_store.sqliteDBOS_LOG_LEVEL日志级别CRITICAL/ERROR/WARNING/INFO/DEBUGERRORDBOS_APP_VERSION应用版本设置后会自动尝试恢复该版本下未完成的工作流Code Puppy 版本 毫秒时间戳即不自动恢复DBOS_CONDUCTOR_KEY设置后连接 DBOS 管理控制台None长任务建议把DBOS_APP_VERSION固定为一个值。默认值包含毫秒时间戳每次启动都不同自动恢复不会命中固定版本后重启时 DBOS 会自动尝试恢复待处理pending的工作流。第 5 步重启并验证重启 Code Puppy执行/dbos status确认已启用然后放心把重活丢给它。内部机制DBOSAgent 检查点到底存了什么开启后每个 Agent 都会被包装为DBOSAgent自动检查点以下关键交互并写入数据库Agent 输入用户 promptLLM 响应模型返回内容MCP 调用外部工具服务器交互工具调用文件读写、shell 命令等这一包装通过 Code Puppy 的插件钩子实现无需改动 Agent 本体构建 Agent 时插件可通过wrap_pydantic_agent钩子把 pydantic Agent 替换为持久化执行包装器构建逻辑见 code_puppy/agents/_builder.py钩子定义见 code_puppy/callbacks.py每次模型尝试含重试运行时on_agent_run_context钩子提供异步上下文管理器包裹run()调用DBOS 插件借此绑定 workflow ID、管理 MCP 工具集见 code_puppy/agents/_runtime.py 与 code_puppy/callbacks.py子 Agent 同样受保护不只是主 Agent——通过invoke_agent派生的子 Agent 也会走同样的包装与上下文钩子见 code_puppy/tools/subagent_invocation.py。这意味着多 Agent 协作的长流程中子任务的进度同样可被检查点和恢复。常见场景与实用技巧 本地 SQLite 就够用默认检查点落在dbos_store.sqlite零运维。团队协作或需要高可用时把DBOS_SYSTEM_DATABASE_URL指向 Postgres 实例即可。 恢复排障看日志默认日志级别是ERROR调试恢复流程时把DBOS_LOG_LEVEL调成INFO可以清楚看到检查点写入与 workflow 恢复过程。⏱️ 恢复语义DBOS 是至少一次执行 幂等重放模型——崩溃后恢复会跳过已完成并检查点的步骤从断点继续因此工具副作用写文件、跑命令在重放时需注意其幂等性。常见问题Q不装code-puppy[durable]会影响正常使用吗不会。DBOS 是可选能力不安装时 Code Puppy 照常运行只是没有崩溃恢复。Q切换开关为什么要重启enable_dbos在 Agent 构建阶段决定包装方式运行中切换无法安全生效因此系统会提示重启见 config_apply.py 中的requires_restart标记。Q长任务跨天跑配置要注意什么固定DBOS_APP_VERSION是最关键的一步它决定了重启后能否自动恢复未完成的工作流其次确认DBOS_SYSTEM_DATABASE_URL指向的数据库跨重启仍可访问。小结Code Puppy 的 DBOS 持久化执行把终端 Agent 只能活在一次进程里的默认假设打破了安装durable依赖 →/dbos on→ 固定DBOS_APP_VERSION三步之后你的长任务 Agent 就有了崩溃续跑能力。对于动辄跑一小时的批量重构和全量验证这套机制省下的不只是时间还有 Token 费用和重新对齐上下文的精力。赞分享【免费下载链接】code_puppyAgentic AI for writing code项目地址https://gitcode.com/gh_mirrors/co/code_puppy点击查看免费下载相关推荐Pydantic AI Harness持久化执行教程让AI Agent运行跨崩溃存活Temporal/DBOS实战Pydantic AI Harness持久化执行教程让AI Agent运行跨崩溃存活Temporal/DBOS实战 Pydantic AI HarnessAgent Swarm 心跳与崩溃恢复AI 代理掉线后任务如何自动续跑不丢进度Agent Swarm 心跳与崩溃恢复AI 代理掉线后任务如何自动续跑不丢进度 Agent Swarm 是一套企业级 AI 代理协作平台Agentic Odothething会话恢复教程--resume如何续跑中断的长任务不丢进度dothething会话恢复教程 resume如何续跑中断的长任务不丢进度 dothething 是一款本地自主 AI 智能体你描述任务它替你完成。可长任上一篇Zotero Style3 步搭建专属 PDF 阅读配色下一篇华硕笔记本终极性能优化指南开源工具G-Helper完整实战手册创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑