ABB GoFa 教程总结:软件工程师如何理解协作机器人系统

本文内容总结自 ABB 官方培训教程《Getting started with GoFa™ Tutorial》 1. 引言 如果从一般产品介绍的角度描述机械臂,常见写法通常会集中在负载、速度、臂展和应用行业上。但从软件工程师和系统集成工程师的视角来看,这样的介绍远远不够。因为在实际项目里,机械臂并不是一个孤立设备,而是一个需要接入控制系统、配置安全策略、定义工具模型、完成示教调试、接入上位系统并持续维护的工程对象。 机械臂的价值,不只在于它是一台协作机器人,更在于它围绕“机器人如何真正进入生产系统”提供了一整套较完整的工程链路。官方教程材料已经覆盖了这一链路的关键环节:从开箱、接线、控制器接口,到安全配置、手动引导、可视化编程,再到虚拟仿真和后续支持。把这些材料重新组织后,可以更清楚地看出机械臂在工程实施中的真实定位。 本文将不再沿用传统“产品亮点罗列”的方式,而是按照软件工程更熟悉的分析框架来介绍机械臂:先明确系统边界,再分析组成结构、接口与安全,再看开发方式、交互机制以及它在完整自动化系统中的职责分工。 产品 GoFa SWIFTI YuMi(单臂) Dual-arm YuMi(双臂) 型号代表 ABB GoFa CRB 15000 ABB SWIFTI CRB 1300 ABB YuMi IRB 14050 ABB YuMi IRB 14000 定位 通用协作机器人 高速工业协作机器人 小型精密单臂协作机器人 双臂精密协作机器人 轴数 6 轴 6 轴 7 轴 14 轴(每臂 7 轴) 最大负载 5–12 kg 7–11 kg 0.5 kg 0.5 kg/臂 最大臂展 0.95–1.62 m 0.9–1.4 m 559 mm 559 mm/臂 重复定位精度 ±0.

Read more

抓包逆向分析智能体运行时-OpenClaw

这篇文章只做一件事:在 macOS 上用 mitmproxy 抓 OpenClaw 在 onboard 引导流程中发送的请求包,拆开它的提示工程、Tool Loop 和长期记忆设计。 装包工具的使用可以参考 使用 mitmproxy 抓取 codex 数据包,这里不赘述。 因为每一步的 tools 内容都一样,所以除 Step 1 以外的步骤我就省略了这部分。 可以看到整个引导过程完全通过提示工程驱动工具完成。 Step 1. 系统启动后主动给大模型发送消息 Sender (untrusted metadata):\njson\n{\n \"label\": \"openclaw-tui (gateway-client)\",\n \"id\": \"gateway-client\",\n \"name\": \"openclaw-tui\",\n \"username\": \"openclaw-tui\"\n}\n\n\n[Mon 2026-03-16 22:15 GMT+8] Wake up, my friend! { "model": "coder-model", "messages": [ { "role": "system", "content": "You are a personal assistant running inside OpenClaw.\n## Tooling\nTool availability (filtered by policy):\nTool names are case-sensitive.

Read more

在本地 GitLab 中通过 Docker 安装 Qodo PR-Agent 并集成代码 Review

Qodo 的开源 PR-Agent 可以直接接入 GitLab Merge Request,在 MR 页面里生成描述、Review 结论和改进建议。对于内网自建 GitLab,最稳妥的方式是把 PR-Agent 作为一个本地 webhook 服务跑在 Docker 中,再通过 GitLab Webhook 把 MR 事件转给它。 本文记录一套在本地 GitLab 中落地的最小可用方案,目标是: 使用 Docker 部署 PR-Agent 接入本地 GitLab 在 Merge Request 中通过评论触发 /review、/describe、/improve 说明:本文使用 webhook 模式,适合自建 GitLab 和内网环境。对应镜像标签可使用 codiumai/pr-agent:0.32-gitlab_webhook。 前置条件 部署前先准备好下面几项: 一个可以访问 GitLab 的 Docker 主机 一个本地 GitLab 实例,例如 http://localhost:8080 一个 OpenAI 兼容模型 一个专门给 PR-Agent 使用的 GitLab 机器人账号 建议不要直接使用管理员账号,而是新建一个 pr-agent-bot 用户。 第一步:在 GitLab 中准备机器人账号 先在 GitLab 中创建一个专用用户,例如 pr-agent-bot,然后把它加入需要接管 Review 的项目或组。

Read more

抓包逆向分析智能体运行时-Claude Code

这篇文章只做一件事:在 macOS 上用 mitmproxy 抓 Claude Code 发送请求包,拆开它的上下文工程、Agent Runtime 和工具编排方式。 装包工具的使用可以参考 使用 mitmproxy 抓取 codex 数据包,这里不赘述。 一次问答 Step 1. 会话标题生成阶段 不是交给大模型立即开始 Loop,认识问题重生成,此时不装配任何工具和技能 会话标题生成:该请求并非真正执行“分析项目”,而是先根据用户输入生成一个 3–7 个词的会话标题。 用户输入原样保留:messages 中直接保留用户原始请求,用于推断本次 session 的主题。 多模态消息格式:content 采用数组 block 结构,即使当前只有文本,也兼容后续插入图片、文件、工具结果等内容。 分层 System Prompt:system 被拆成多个 text block,分别承担计费信息、产品身份、具体任务说明。 平台元信息内嵌:通过 x-anthropic-billing-header 传递客户端版本、入口来源、计费标识等信息。 明确产品身份:固定注入 “You are Claude Code, Anthropic’s official CLI for Claude.”,确保模型始终以 Claude Code 身份响应。 示例驱动约束:system prompt 中提供了 Good / Bad examples,用于约束标题长度、大小写和表达方式。 严格结构化输出:通过 json_schema 强制要求只返回 { "title": "..." }。 禁止额外字段:additionalProperties: false 表示模型不能输出除 title 外的任何内容。 无工具调用:tools: [] 说明这一轮没有读取项目文件、执行命令或调用外部能力。 前置子任务设计:标题生成被拆成独立请求,通常发生在真正的代码分析和工具调用之前。 统一推理管线:即使只是生成标题,也仍然走完整的模型调用流程,包括 system、schema、stream、temperature 等字段。 流式输出复用:stream: true 表示即使是极小任务,也统一采用流式传输协议。 默认参数复用:max_tokens: 32000 明显超出需求,说明客户端复用了统一的大模型参数模板。 保留一定创造性:temperature: 1 让标题表达略有变化,但通过 schema 和示例避免输出失控。 面向机读而非聊天:整个请求设计更像“结构化子任务接口”,而不是传统自然语言聊天。 { "model": "qwen3.

Read more

抓包逆向分析智能体运行时-Codex

这篇文章只做一件事:在 macOS 上用 mitmproxy 抓 Codex 发送请求包,拆开它的上下文工程、工具协议和运行时边界。 Step 1. 安装 mitmproxy brew install mitmproxy 确认安装成功: mitmdump --version Step 2. 启动抓包代理 打开第一个终端,执行: mitmdump --listen-host 127.0.0.1 --listen-port 8080 -w codex-hello.mitm 这一步会: 在本机启动代理 127.0.0.1:8080 把抓到的流量保存到 codex-hello.mitm 这个终端先不要关。 Step 3. 安装 mitmproxy 根证书 第一次启动 mitmproxy 后,会在本机生成证书: open ~/.mitmproxy 在 macOS 中操作: 双击 mitmproxy-ca-cert.pem 导入到“登录”钥匙串 打开“钥匙串访问” 找到 mitmproxy 证书 双击证书,展开“信任” 把“使用此证书时”改成“始终信任” 关闭窗口并输入密码保存 Step 4. 让 Codex 走本地代理 打开第二个终端,执行: export HTTP_PROXY="http://127.0.0.1:8080" export HTTPS_PROXY="http://127.0.0.1:8080" export ALL_PROXY="http://127.0.0.1:8080" export SSL_CERT_FILE="$HOME/.

Read more

智能体软件工程:AI在软件开发中的应用与挑战

导读 本信息搜集整理自网络,内容仅供参考。 智能体软件工程 #1|智能体原生工作估算 《智能体软件工程》可能是一系列文章,记录我从传统软件工程向智能体软件工程的迁移过程。 一个老程序员的顿悟 我写了近二十年代码了。估算工期这件事,早已刻进肌肉记忆——拆任务、排优先级、乘以经验系数、加上联调和 buffer(冗余量),最后给出一个"两到三周"。这套方法论伴随我度过了瀑布、敏捷、DevOps 的每一次范式迁移,从未失灵。 直到 AI 编程到来。 我最近用 AI Agent 做一个 CLI 工具。脑子里的第一反应是这个工具的实现过程:解析参数、核心转换、校验逻辑、错误处理、测试,一整套下来,按古法编程怎么也得两三天。结果 Agent 从动手到交付,连半小时都没用完。 效率提升了吗?表面上看,当然。 但更深层的问题随之浮现:我甚至无法正确预判 AI 需要多久。 我的整个估算框架是锚定在"人类开发者"这个基座上的。多少行代码、多少次 debug、多少轮 code review。当执行者从人变成智能体,这套尺子就彻底失灵了。 更讽刺的是,AI Agent 自己也犯同样的错。你问 Claude 或 GPT:“做这个功能要多久?“它会一本正经地告诉你"大约 2-3 天”。因为它的训练数据里,Stack Overflow 和技术博客就是这么写的。Agent 在用人类的经验估人类的时间,然后自己十分钟干完。 我开始意识到,当软件工程迈向智能体软件工程(Agentic Software Engineering)的过程中,第一个需要变化的,就是这种"拿人的尺子量 AI 的活"的心态。 所以我写了一个 Skill,agent-estimation,专门解决这个问题。 问题的根源:人类时间锚定 我把这个现象叫做 Human-Time Anchoring(人类时间锚定)。 它的运作机制是这样的: AI Agent 在生成估算时,会不自觉地调用训练数据中的"集体经验”。一个 REST API 项目?论坛上说要一周。一个带实时图表的全栈 Dashboard?技术负责人在 Sprint Planning 里估了三个迭代。这些数字是人类开发者在人类的认知带宽、上下文切换成本、沟通损耗下产出的经验值。它们对人类成立,但对一个可以每 3 分钟完成一轮"思考→写码→执行→验证→修复"循环的 Agent 来说,完全不适用。 这导致了一个系统性偏差:AI 几乎总是高估自己的工期。 而我们这些老程序员,反过来也在犯同样的错:我们拿自己过去的经验去预期 AI 的产出速度,然后在"哇,这么快?“和"等等,它真能做到吗?“之间反复横跳。

Read more

使用 API 接入 Github Copilot 提供的模型

使用 API 接入 Github Copilot 提供的模型 1. 获取 GitHub access token(Device Flow) 1.1 申请 device code export CLIENT_ID="Iv1.123456" export SCOPE="read:user" curl -sS -X POST "https://github.com/login/device/code" \ -H "Accept: application/json" \ -H "Content-Type: application/x-www-form-urlencoded" \ --data-urlencode "client_id=${CLIENT_ID}" \ --data-urlencode "scope=${SCOPE}" {"device_code":"9c2e1edec2cb88521acfeda02f1cb23sb4ceedfa","user_code":"E12E-8762","verification_uri":"https://github.com/login/device","expires_in":899,"interval":5} 你会得到 JSON:device_code, user_code, verification_uri, expires_in, interval。 1.2 打开浏览器授权 访问 verification_uri,输入 user_code,同意授权。 1.3 轮询换 GitHub access token export DEVICE_CODE="9c2e1edec2cb88521acfeda02f1cb23sb4ceedfa" curl -sS -X POST "https://github.com/login/oauth/access_token" \ -H "Accept: application/json" \ -H "Content-Type: application/x-www-form-urlencoded" \ --data-urlencode "client_id=${CLIENT_ID}" \ --data-urlencode "device_code=${DEVICE_CODE}" \ --data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:device_code" {"access_token":"ghu_af2cHWUGwwyJ3SOKh7crBAHUplj72900zMne","token_type":"bearer","scope":""} 成功返回 access_token 后:

Read more

AWS Lightsail 证书安装与自动续期

适用场景 使用 AWS Lightsail 托管服务器 使用 Lightsail / Route53 管理 DNS 使用 Nginx(宿主机或 Docker) 需要 通配符证书(*.example.com) 希望 证书自动续期、无人值守 一、整体架构说明(非常重要) Let’s Encrypt │ │ DNS-01 验证 ▼ Route53 / Lightsail DNS(权威) │ │ TXT _acme-challenge ▼ Certbot(dns-route53 插件) │ │ 自动续期 ▼ Nginx(reload 生效) ⚠️ 关键原则 _acme-challenge TXT 只能由 certbot 自动管理 禁止手动添加或残留 TXT NS(Name Server)必须与 DNS Zone 完全一致 二、前置条件检查清单 1. 域名 DNS 已交由 Lightsail 管理 在 Lightsail 控制台应看到: ✅ You are using Lightsail to manage the DNS records for your domain.

Read more

DeepSeek-R1 vLLM性能基准测试:wrk压力测试详细报告

配置 DeepSeek-R1-Distill-Qwen-14B NVIDIA A40 vLLM vllm/vllm-openai:v0.8.5 NVIDIA-SMI 560.35.03 Driver Version: 560.35.03 CUDA Version: 12.6 wrk 测试方法 创建一个请求文件 cat > post.lua << 'EOF' wrk.method = "POST" wrk.body = '{"model":"deepseek-14b","messages":[{"role":"user","content":"写一个50字的短文"}],"max_tokens":50}' wrk.headers["Content-Type"] = "application/json" wrk.headers["Authorization"] = "Bearer your-api-key" EOF 10 线程 20 并发持续测试一分钟 [root@myserver wrk-4.2.0]# ./wrk --timeout 30s -t10 -c20 -d60s -s post.lua http://10.1.2.100:8080/v1/chat/completions Running 1m test @ http://10.1.2.100:8080/v1/chat/completions 10 threads and 20 connections Thread Stats Avg Stdev Max +/- Stdev Latency 3.07s 38.

Read more

Awesome Text to Image Prompts

Jesse Faden’s Double exposure, Midjourney style, merging, blending, overlay double exposure image, Double Exposure style, An exceptional masterpiece by Yukisakura revealing a fantastic double exposure composition of Jesse Faden’s (control) silhouette harmoniously intertwined with the visually striking details of a cyberpunk metropolis. While the road’s details are outwardly echoing through the fabric of the figure, beautiful tension climbs as the contrasting use of monochrome in the background maintains razor-sharp focus on the remarkable double exposure image.

Read more