GitLab 内置变量实战(二):流水线的“编排信号”——触发源、父子流水线、Runner 与环境
上一篇聊了“识别类”变量——流水线怎么知道自己“是谁、在哪、从哪次提交来”。这一篇聊“编排类”变量,它们回答的是另一类问题:谁触发了我、我属于哪条更大的流水线、我在哪台机器上跑、跑到了哪个环境。 如果说识别类变量让配置“活”了起来(一套配置适配多分支多项目),那编排类变量让流水线真正“会协作”——多项目联动、父子拆分、按触发方式差异化执行,都靠它们。
一个开发出身的DevOps工程师
上一篇聊了“识别类”变量——流水线怎么知道自己“是谁、在哪、从哪次提交来”。这一篇聊“编排类”变量,它们回答的是另一类问题:谁触发了我、我属于哪条更大的流水线、我在哪台机器上跑、跑到了哪个环境。 如果说识别类变量让配置“活”了起来(一套配置适配多分支多项目),那编排类变量让流水线真正“会协作”——多项目联动、父子拆分、按触发方式差异化执行,都靠它们。
GitLab 在每次流水线运行时,会自动注入一大堆“内置变量”(官方叫 Predefined Variables)。它们不需要你配置,开箱即用,是流水线感知“当前处于什么上下文”的唯一窗口。 很多人写 .gitlab-ci.yml 只用过一个 $CI_COMMIT_BRANCH,然后就靠一堆硬编码的 if 去区分环境。但其实这套内置变量能支撑起非常精...
Agent 调用外部工具,大方向上有两条路:MCP 和 CLI。MCP(Model Context Protocol)是 Anthropic 在 2024 年底推出的标准化协议,目标是给 Agent 提供一套统一的方式来接入各种第三方服务。CLI 就是命令行——kubectl get pods、git diff、docker ps,Agent 直接执行...
上篇聊了 Tool——Agent 用来操作外部世界的“手脚”。有了手脚之后,下一个问题就来了:Agent 应该怎么用这些手脚?什么时候该做什么、做到什么程度算是“完成”、遇到模棱两可的情况怎么判断?这就是 Skill 解决的问题。它不是告诉 Agent “你怎么用 kubectl”——那是 Tool 的事。Skill 告诉 Agent 的是“做一件事的...
大模型再聪明,不能和外部世界交互,也只是一个会说话的脑袋。聊聊天、写写诗、帮你改个函数——这些都还在“输出文本”的范畴里。但一旦你要让 Agent 做点实际的事——部署一个服务、查一下数据库、打开浏览器帮你填个表单——它就必须有“手”。在 Agent 的术语里,这只“手”就叫 Tool。从最早期的文件读写,到今天的 Computer Use 和 Bro...
如果你在用 Hermes Agent,你大概率只用到了它的文件记忆——MEMORY.md、USER.md、SKILL.md。这本身已经很实用了:告诉它你的偏好,它记住;和它协作多了,它越来越懂你。但很多人不知道的是,Hermes 还藏着一个被严重低估的能力:Memory Provider 机制。它把“记忆存储”做成了可插拔的抽象层,让你的 Agent ...
你在 Hermes 里调教好了一个 Agent——它记住了你的代码风格、项目结构、常用命令。现在你有了第二个需求:需要一个专门管部署的 Agent,再要一个专门做运维巡检的 Agent。它们是三个完全不同的角色,需要不同的记忆、不同的技能、甚至不同的模型偏好。你总不能每次都重装 Hermes 吧?Hermes 的 Profile 机制就是为这个设计的。
当你开始用大模型做正经事——不是偶尔调一下 API 玩,而是把它当成团队基础设施来用——你会很快撞上一面墙。不是“模型不够强”那面,而是“管不住”这面:API Key 满天飞、不知道谁花了多少钱、某个模型挂了全部业务瘫掉、数据出没出内网完全不可审计。这时候你需要的不是一个更强的模型,而是一个能管理模型的网关。LiteLLM 就是这个网关。
上一篇聊 OpenClaw 时提到,它最大的短板是记忆系统——Agent 每次都要重新教,记不住你的偏好和项目背景。这不是 OpenClaw 一个工具的问题,而是当前大多数 AI Agent 的通病:模型能力越来越强,但 Agent 每次聊天都像第一次见你。Hermes Agent 就是冲着这个问题来的。它的核心卖点不是“更强的 AI”,而是“越用越懂...
前三篇文章聊的都是编程场景的 Agent——OpenCode 写代码、Cline 在 IDE 里执行任务、OpenHands 自主完成开发全流程。但大模型的能力不止于编程。如果你想让一个大模型帮你管理文件、操作浏览器、定时巡检服务、甚至在你常用的聊天软件(微信/飞书/钉钉)里随时响应你的指令——你需要的是一个 Agent 网关,而不是一个编程工具。这就...