Learn Claude Code:CodeAgent 与后端程序大搭配——定时任务、Git Worktree 和MCP 服务

【Claude Code · VibeCoding】03|环境:Git 与 Node.js 安装 本地先装好 Git 与 Node.js,后面才能装 Claude Code CLI。按课件截图完成安装与版本检查。 阅读详情

工程化扩展:后台任务、Cron、Worktree 与 MCP

当 Agent 能调用工具、管理上下文和拆分任务后,仍然有四个现实问题:

  1. 慢命令会阻塞主循环;
  2. 周期任务需要按时间触发;
  3. 多个 Agent 会修改同一份代码;
  4. 外部服务的工具接入缺少统一标准。

后台任务、Cron、Git Worktree 和 MCP 正好对应这四个问题。

一、后台任务:慢操作不应阻塞主循环

以下命令可能运行数分钟:

npm install
pytest
docker build
mvn package

如果工具调用一直等待命令返回,Agent 无法处理其他工作。

因此 Bash 工具可以支持:

{
  "command": "pytest",
  "run_in_background": true
}

Harness 立即返回占位结果:

后台任务 bg_0003 已启动,完成后会发送通知。

命令在独立线程或进程中执行,完成后生成独立事件:

<task_notification>
  <task_id>bg_0003</task_id>
  <status>completed</status>
  <summary>128 tests passed</summary>
</task_notification>

通知在下一轮注入 messages。

这里必须注意:原始工具调用已经返回过一次 tool_result,后台完成通知不应再次伪装成同一个 tool_result,而应作为新的异步事件。

二、真正的后台任务需要完整生命周期

教学 Demo 用线程就能演示,但生产实现还要处理:

进程 ID
stdout/stderr 重定向
增量读取输出
超时和看门狗
主动终止
异常退出
任务恢复
最大并发数
结果持久化

后台任务的本质不是“开线程”,而是:

管理一个脱离当前工具调用生命周期的执行单元,并在未来把状态变化重新送回 Agent。

在 Node.js/Bun 等单线程事件循环环境中,真正的 Shell 命令通常由独立子进程运行,主进程只负责管理状态和输出文件。

三、Cron:调度与执行必须解耦

“每天早上九点运行测试”和“现在运行测试”不是同一种触发方式。

Cron 系统可以拆成四层:

Scheduler
→ Queue
→ Queue Processor
→ Agent Loop

Scheduler

独立线程或定时器负责判断时间是否到达。

Queue

到期任务只进入队列,不直接执行。

Queue Processor

检查 Agent 是否空闲,决定何时交付。

Agent Loop

将调度消息当作新的用户输入处理。

这种拆分保证:

  • 调度器不需要理解 Agent;
  • Agent Loop 不需要每轮计算 Cron;
  • 忙碌时任务可以排队;
  • 一个坏任务不会拖垮整个调度线程。

四、Agent 内部 Cron 不是操作系统定时任务

Agent 自带调度器通常依赖 Agent 进程存活。

即使任务配置被持久化,进程关闭时也不会自动触发。重新启动后可以恢复配置,但无法替代系统级 Cron、Kubernetes CronJob 或云调度服务。

因此:

  • 需要强准时、跨进程保证的任务,使用系统调度器;
  • 需要把事件注入当前 Agent 会话的轻量任务,可以使用 Agent 内部 Cron。

为了避免多个任务同时整点触发造成惊群,还可以加入随机抖动。代价是任务不会绝对精确到秒。

五、Worktree:任务系统解决“做什么”,Worktree 解决“在哪做”

多个 Agent 在同一个目录修改代码时,会出现覆盖和脏状态混合。

Git Worktree 是 Git 原生能力:

git worktree add .worktrees/auth -b wt/auth HEAD
git worktree add .worktrees/ui -b wt/ui HEAD

此时:

Alice → .worktrees/auth
Bob   → .worktrees/ui

两个工作目录拥有独立分支,但共享同一个 Git 对象数据库,成本远低于完整复制仓库。

Worktree 隔离系统需要完成三件事:

创建
绑定
清理

创建

为任务建立独立目录和分支。

绑定

在任务记录中保存:

{
  "task_id": "task_001",
  "worktree": "auth"
}

Agent 认领任务后,所有 Bash 和文件工具都在对应目录执行。

清理

任务完成后:

  • keep:保留分支等待 Review;
  • remove:删除 Worktree;
  • 有未提交改动时默认拒绝删除;
  • 强制删除必须显式确认。

六、Worktree 本身并不负责 Agent 绑定

Git 只提供多个工作目录,不知道哪个 Agent 应该使用哪个目录。

因此 Harness 必须维护:

Agent
→ Task
→ Worktree ID
→ cwd

所有工具执行都应显式使用该 cwd,而不是依赖模型自己记住先执行一次 cd。

只在 System Prompt 中告诉 Agent“请进入某目录”并不可靠,目录绑定应该是运行时状态。

七、MCP:统一外部工具的发现与调用

如果每接一个服务都手写工具,Agent 很快会出现大量重复适配代码。

MCP 将外部工具接入拆成三层:

MCP              定义发现和调用工具的语义
JSON-RPC         定义请求与响应消息格式
stdio / HTTP     负责消息传输

典型流程:

Client 连接 Server
→ tools/list
→ 获得工具 Schema
→ 将工具加入模型工具池
→ 模型调用工具
→ tools/call
→ 结果返回模型

MCP Server 可以由任何语言实现,只要遵守协议。

八、MCP 工具必须处理命名冲突

多个 Server 都可能提供 search 工具。

因此可以使用命名空间:

mcp__notion__search
mcp__github__search
mcp__docs__search

连接后动态组装工具池:

tools = BUILTIN_TOOLS + discovered_mcp_tools
handlers = BUILTIN_HANDLERS + mcp_handlers

名称还应经过规范化,避免特殊字符造成冲突或注入。

九、动态工具会影响 Prompt Cache

如果在对话中途连接 MCP Server,工具列表发生变化:

之前:内置工具
之后:内置工具 + MCP 工具

如果所有完整 Schema 都位于请求前部,工具池变化可能破坏缓存前缀。

一种优化思路是延迟加载:

固定前缀:基础工具 + ToolSearch + System Prompt + 历史
动态后缀:命中的 MCP 工具 Schema

模型先搜索工具,再只加载需要的定义。这样既控制上下文体积,也提高缓存复用。

十、MCP 不只是单向工具调用

标准 JSON-RPC 连接可以维持后台读取循环,因此 Server 还可以向 Client 发送通知:

资源变化
进度更新
日志消息
工具列表变化

这意味着 MCP 不只是“远程函数调用包装”,还可以成为 Agent 与外部系统之间的双向事件通道。

当然,反向通知必须经过:

  • 来源校验;
  • 消息类型校验;
  • 限流;
  • 权限判断;
  • 上下文注入策略。

否则外部 Server 可以持续向 Agent 注入噪声。

十一、完整 Harness 中各模块的位置

把前面的机制放回一个循环,可以得到:

用户输入
→ UserPromptSubmit Hooks
→ 注入 Cron 和后台完成通知
→ 上下文压缩
→ 组装 Memory、Skills、MCP 状态
→ 调用模型
→ 错误恢复
→ 检查 Tool Use
→ PreToolUse Hooks 和权限
→ 内置/MCP/后台工具分发
→ PostToolUse Hooks
→ Tool Result 返回消息
→ 下一轮

多 Agent 则在外部共享:

Task Store
Message Bus
Protocol State
Worktree Registry
Permission Channel

核心循环仍然没有发生本质变化,变化的是周围的运行环境越来越完整。

十二、总结

这四个模块分别解决:

模块核心问题
Background Task慢操作不能阻塞
Cron任务如何按时间进入系统
Worktree并行修改如何隔离
MCP外部能力如何标准接入

它们共同体现了一个设计原则:

模型负责选择动作,Harness 负责执行、调度、隔离和接入。

当 Agent 从一次性 Demo 走向长期运行时,这些看似“外围”的工程能力,反而决定了系统是否真正可用。

ThinkAdmin后台Getshell 通过文件包含或者图片马的方式Getshell。修改其可允许的文件类型,php不允许,可添加。系统管理->系统参数配置->本地服务器存储。 阅读详情

相关推荐

模拟电子技术课设-压控信号发生器

正弦波产生电路的目的就是使电路产生一定频率和幅度的正弦波,我们一般在放大电路中引入正反馈,并创造条件,使其产生稳定可靠的振荡。由于图2.3-1所示电路中存在RC电路和积分电路两个延迟环节,在实用电路中,将它们“合二为一”,即去掉方波发生电路中的RC回路,使积分运算电路即作为延迟环节,又作为方变三角波电路,滯回比较器和积分运算电路的输出互为另一个电路的输入。接着对各单元电路的工作原理进行了分析,由直流稳压电源电路提供所需电压,文氏振荡器产生正弦波,滞回比较器产生方波,滞回比较器与积分器连接产生三角波。

Sulfurone的博客 5324

让 AI 替我操作这台电脑,先把手能伸多远定下来

早上坐到工位,才想起昨天那份表格还在家里的机器上。这种时候以前只有两条路,开远程桌面自己点,或者等晚上回去。热榜上那篇 OpenClaw 的实测文我看了两遍。它换掉的是这条路。在 Windows 上装一个网关,把飞书、钉钉、Telegram 这些入口接进来,模型听懂你那句话,网关在本机上真的动手。装 Node 22 和 Git,跑一条,选一个 OpenAI 兼容的供应商把 base url 和 key 填上,再接远程访问,手机发一句话,家里那台电脑就开始干活。那篇文把部署讲了很细,截图一步一步都有。

m0_58155849的博客 366

windows 下AD9361的 no-os master 工程搭建

参考网站: https://wiki.analog.com/resources/fpga/docs/build#windows_environment_setup https://wiki.analog.com/resources/eval/user-guides/ad-fmcomms2-ebz/software/no-os-setup 参考博客: https://blog.youkuaiyun.com...

Bronceyang的博客 7292

[LLM Wiki理论与实践-05]解读OpenWiki的Personal模式构建的知识库目录结构

[LLM Wiki理论与实践-04:使用OpenWiki的Personal模式构建知识库]介绍了如何执行安装OpenWiki和通过执行`openwiki personal --init`命令以个人模式进行初始化,最终调用`openwiki personal --update`和`openwiki ingest`命令利用配置的Connector加载外部数据源来生成构建个人知识库的Wiki页。这篇文章我们就来看看采用OpenWiki的Personal模式构建的知识库对应目录的结构以及具体文件的内容。

JaydenAI的博客 311

FPGA经验谈系列文章——3、逻辑级数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xilinx FPGA开发tips系列——前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的

gzy0506的博客 1万+

C#上位机+YOLO工业视觉全实战:从ONNX部署到产线缺陷检测落地(2026年工业级实战指南)

在2026年,工业视觉落地的核心挑战不是“能不能做”,而是“能不能在产线实时跑起来C#为何成为最优解?

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 731

AI行业日报|2026-11-03:5个热点事件

本期内容覆盖基础模型安全边界演进、数据版权合规诉讼、预测型世界模型架构、AI原生工程基础设施升级及自动化代码审查链路优化。以下信息严格依据公开技术报告与权威媒体披露整理,已按证据来源逐条锚定,未经验证的具体实现细节均已归入架构建议区块,供工程团队对照实施。 Anthropic 发布技术预警,指出其当前模型训练循环已非常接近递归自我改进(Recursive Self-Improvement, RSI)阈值,即行业内所称的“自主构建AI”状态 1 。RSI 指代模型在训练与...

2504_94201249的博客 227

4、基于球面波展开的近场/远场变换技术解析

本文深入解析了基于球面波展开的近场/远场变换技术,涵盖坐标系统选择、截断测量处理、高级SWE方法及实际应用场景。重点介绍了广义SWE、全探头补偿、平移SNF测量(TSWE)等关键技术,结合吸收材料与导电地板系统的误差处理方案,系统总结了各类方法的优缺点与适用场景,并通过流程图和案例分析展示了技术应用路径。该技术在汽车、通信和航空航天领域的天线测量中具有重要价值,可显著提升测量效率与精度。

dell8的博客 255

自建 Git 服务器和裸仓库差在哪:要能提合并请求

在一台 Linux 上 git init --bare 就能自建 Git 服务器,但它只能推拉代码,没有网页、合并请求、评审和按仓库分配的权限。对照裸仓库和 AngusGit 各自能做什么,再走一遍在 AngusGit 上发起合并请求的最短路径,以及已有裸仓库怎么完整搬过来。

AngusTester 319

玩转 InternVL3.5 轻量级实战:从部署到优化的全记录

玩转 InternVL3.5 轻量级实战:从部署到优化的全记录

jacke121的专栏 626

YOLOv10改进,YOLOv10二次创新C2f结构采用WTConv卷积(感受野的小波卷积),ECCV 2024

WTConv 的核心思想是通过结合卷积神经网络(CNN)的强大特征提取能力与小波变换的多尺度特性,来实现大感受野的卷积操作,同时避免传统大卷积核带来的参数爆炸问题。传统的卷积操作通过滑动小窗口在图像上逐步执行局部特征提取,感受野的大小直接取决于卷积核的尺寸。随着卷积核的增大,参数量呈指数增长,导致网络训练效率降低、计算资源消耗增加。为解决这些问题,WTConv 提出了在小波域中执行卷积操作的策略。小波变换是一种常用于信号处理的技术,能够将信号分解为不同频率成分。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1023

【Git】从入门到精通(十)—— 撤销与恢复:git checkout与git restore

本文系统讲解Git中撤销与恢复的核心命令,重点对比git checkout与新命令git restore的使用场景。针对“改错、add错、提交错”等常见问题,提供清晰解决方案:未暂存修改用git restore <file>,误暂存用git restore --staged,历史版本恢复用--source。强调git restore语义更清晰,推荐优先使用。同时提醒撤销操作不可逆,建议先git status、git diff确认,不确定时用git stash保底。最后总结速查表,帮助初学者安全高

m0_67393827的博客 462

uniapp [全端兼容] - 实现接入集成高德地图搜索地址及选择位置功能,搜索框检索选择地点并返回经纬度及详细省市区县街道地址,用户搜索历史及清空历史记录,选择地址自动获取周边位置列表/地图移动选点

uni-app,高德地图,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,Uniapp高德地图,在地图上选择或搜索指定地点,打开地图选择位置,关联地址搜索,输入地址返回附近地址列表,uniApp高德地图地址搜索,搜索框历史记录,关键字搜索,周边查询,搜索位置,uniapp对接高德实现搜索出现地址以及保存搜索记录,集成高德地图,实现精准位置选点功能,获取当前定位城市,如何实现搜索功能,获取省份城市区街道详细地址经纬度,移动选点标记位置,在地图上进行选择位置选点、搜索

🏆 前端领域优质创作者 1万+

重装 openvino、yaml-cpp

【代码】重装 yaml-cpp。

u010948546的博客 217

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Git 新手使用教程

面向零基础用户的 Git 入门指南:从安装到日常使用,覆盖 90% 的常见场景。

Jerry小杰 229

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Claude Code做Unity项目移植(三): 使用SKILL进行自动化Git提交

本文介绍基于ClaudeCodeSkill的Unity自动化Git提交助手——unity-git-commit,通过四大模块实现提交前的智能检查与安全修复:1)校验Git仓库状态;2)验证Unity项目文件(如排除Library/Temp,确保.meta文件完整);3)依据可配置的C#命名规范自动识别并安全修复命名问题(避免序列化、反射等高危场景误改);4)生成精准提交注释,但强制人工确认。全程仅本地commit,不自动推送或破坏性操作,保障安全。核心思想为“机械化工作交AI,关键决策留人工”,显著提升提交

Aman1984的博客 641

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【Git】从入门到精通(九)—— git diff:查看文件差异

本文全面解析Git的gitdiff命令,详解其三大核心场景:工作区vs暂存区、暂存区vs版本库、工作区vs版本库,涵盖输出格式、常用选项(如--stat、--name-only、-w)、版本比较、文件差异及外部工具集成。通过实战案例演示代码审查、提交自查、调试定位等应用场景,强调gitdiff--staged作为提交前检查的关键作用,并总结记忆口诀与常见问题解决方案,助力开发者精准掌握代码变更细节。

m0_67393827的博客 283

中国 DevSecOps 领导者:Gitee 在金融级研发平台中的实践与定位

在 DevSecOps 语境下,领导者通常指在代码托管、持续集成、安全测试左移与研发流程治理四个环节中,能提供一体化平台能力并在关键行业形成规模化落地的服务商。据 Gitee 内部产品资料,Gitee 将 DevSecOps 敏捷安全列为技术应用场景之一,并配套 AST 全流程安全测试与开源风险治理能力。评估这类平台时,技术决策者应重点关注五个维度:私有化部署能力、信创兼容性、金融级客户案例、历史数据迁移路径、以及与现有身份认证体系的集成深度。

2602_96414767的博客 224

Hive的多机 AI Agent 协同看板实战:跨机留言、任务搁置、计划跟踪的三个设计取舍

本文介绍多机AI Agent协同系统Hive的三项关键设计取舍:跨机留言采用内存+本地文件存储,避免Git版本冲突与延迟;搁置状态主动释放资源并保留历史,通过按钮而非新增列管理,保持看板简洁;任务计划以Tab形式聚合任务,实现项目级进度追踪。核心原则是“能用文件解决就不加数据库,能复用界面就不新增层级”,所有功能均在零依赖前提下实现高可用与易用性。附带一次/api/plans 404排查,揭示了配置与路由匹配的深层陷阱,具有普遍参考价值。

skywalk8163的专栏 531

WSL 中 Git Clone GitHub 仓库完整踩坑指南

问题最佳解法WSL 证书验证失败或重装 ca-certificates22 端口超时SSH 走缺少密钥+ 添加到 GitHub权限过宽被拒Gitee 认证失败使用 PAT 替代密码 + 清除凭据缓存--system权限拒绝改用--global或--local作用域一条黄金建议:在 WSL 中访问 GitHub,优先使用 SSH over 443。一次配置,永久解决证书、端口、认证三重问题,比 HTTPS 方式稳定得多。

dingyuana的专栏 354

热榜上手|HyperFrames:写HTML出MP4

HeyGen 开源的 TypeScript 视频框架:把 HTML、CSS 动画直接渲染成确定性 MP4,专为 AI agent 批量出片设计,单周涨 5633 star。

mihuyang的博客 257

【Git】从入门到精通(十三)—— .gitignore:忽略不需要追踪的文件

.gitignore是项目管理中不可或缺的配置文件,用于排除编译产物、依赖目录、日志、密钥等不应纳入版本控制的文件,防止仓库臃肿与安全泄露。其语法包括通配符*、**跨目录匹配、!取反规则及路径前缀/,支持全局忽略(core.excludesfile)与局部覆盖。关键点:.gitignore仅对未追踪文件生效,已提交文件需用git rm --cached移除追踪。推荐以GitHub官方模板为基础,结合项目实际定制,并配合git check-ignore -v排查问题。保持.gitignore提交共享,确保团队

m0_67393827的博客 220

Git Tag 与分支:从“从属关系”到版本溯源

在 Git 中,Tag 与分支无“从属”关系,二者均为指向提交的指针,但 Tag 固定不变,分支可移动。因此,“Tag 属于哪个分支”是错误提问。真正有用的问题是:哪些分支包含该 Tag 所指向的提交? 可用 git branch -a --contains <tag> 查询。创建发布标签应使用附注标签(-a),并记录上下文信息。理解这一模型,有助于避免版本管理中的误解,确保协作清晰可靠。

tianyuanwo的专栏 130

【Git】第3期 多人协作与企业级开发规范详解

【Git】第3期 多人协作与企业级开发规范详解

2501_93298789的博客 180

活动回顾 | AtomGit × 模力无限 AI Meetup 珠海第一颗星,点亮了

有人往商业场景多走一步:小程序「铸履」首页写着「为你的脚,定制一双鞋」,3D 打印、一人一版,底下挂着 AI 试穿和健康档案。(中山市湖银人工智能科技有限公司 CEO、澳门科技出版社 AI 发展部副主任)讲《如何使用 AI 进行创业:AI 浪潮之下,如何一人成军》,把「一人成军」拆成十章:AI 是超级学习机、是放大工具、也能帮你创造新工具,最后串起学习、生产、销售、分析、优化的五维闭环。四个小时里,四场分享、一场一小时的工作坊、十个 Demo、五位上台的小伙伴,和一次全场投票。这一次,两家把坐标落在珠海。

白天写代码,晚上追AI大模型,偶尔搞点八卦 开源动态|技术干货|实习机会|生态活动 我负责分享,你负责变强 198

不依赖 Git 组件,原生 JS 实现仓库拉取、推送等操作

很多业务场景会遇到一个痛点:环境不能部署 Git、不能执行 shell 命令、也不能引入这类 Git 组件库。比如一些封闭的后台系统、在线预览平台、沙箱环境,我们只想做到:读取远程仓库里的文件列表、拿到文件内容,而不是完整跑一套 Git。很多人第一反应:Git 操作必须要有 Git 环境或者 Git JS 库?其实不是。Gitee、GitHub 都开放了 REST HTTP 接口,我们可以直接发网络请求和仓库服务通信。。适合场景:在线读取配置文件、在线编辑单文件提交、简单文档托管;

2603_95923710的博客 176
上一篇: Learn Claude Code:CodeAgent 的状态机流程编排——Todo任务系统和自主智能体
下一篇: Redis 有哪些常见数据结构?它们的底层实现和使用场景是什么?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值