MCP入门:从零搭建计算器工具
作者分享了一个周末学习 MCP(Model Context Protocol)并搭建计算器工具的完整过程。
MCP 用于解决 AI 模型与工具间需重复集成的痛点,通过统一协议实现“一次构建,多模型可用”。
要点:
- MCP 架构包含三个角色:Host(用户交互的应用,如 Claude Desktop)、Client(内部连接维护者)、Server(暴露工具/资源)
- 使用 Anthropic 官方 Python SDK(FastMCP 模式)创建服务器,工具函数如
- 通过 MCP Inspector 测试服务器连接和工具调用
- 连接测试了三种 Host:Goose(配置文件管理)、Claude Desktop(手动 JSON)、VS Code + Copilot(手动 JSON)
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
作者分享了一个周末学习 MCP(Model Context Protocol)并搭建计算器工具的完整过程。
MCP 用于解决 AI 模型与工具间需重复集成的痛点,通过统一协议实现“一次构建,多模型可用”。
要点:
- MCP 架构包含三个角色:Host(用户交互的应用,如 Claude Desktop)、Client(内部连接维护者)、Server(暴露工具/资源)
- 使用 Anthropic 官方 Python SDK(FastMCP 模式)创建服务器,工具函数如
multiply 等- 通过 MCP Inspector 测试服务器连接和工具调用
- 连接测试了三种 Host:Goose(配置文件管理)、Claude Desktop(手动 JSON)、VS Code + Copilot(手动 JSON)
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
cluacov:Lua 分支覆盖率工具
cluacov 是 LuaCov 的 C 扩展,提供两种分支覆盖率实现:行级钩子(兼容 Lua 5.1-5.5 / LuaJIT)和指令级钩子(Lua 5.4+)。指令级路径通过 LUA_MASKCOUNT count=1 实现,能精确检测短路条件下的分支,并输出 LCOV 格式报告。支持生成 HTML 覆盖率页面。
- 静态分支发现:通过遍历 Proto.code[] 识别所有分支点
- 指令级路径:每条 VM 指令触发一次回调,按 PC 记录命中,避免行级近似导致的歧义
- 性能:行级钩子整体约快 1.25-1.34x,但指令级钩子在紧循环场景下由于回调更轻量可能更快
- 安全设计:首次写入时快照 Proto 元数据,避免 GC 期间解引用原始指针
项目报告:原文链接
原文
#开发者 #工具
📢 频道:@DevToolboxHub
cluacov 是 LuaCov 的 C 扩展,提供两种分支覆盖率实现:行级钩子(兼容 Lua 5.1-5.5 / LuaJIT)和指令级钩子(Lua 5.4+)。指令级路径通过 LUA_MASKCOUNT count=1 实现,能精确检测短路条件下的分支,并输出 LCOV 格式报告。支持生成 HTML 覆盖率页面。
- 静态分支发现:通过遍历 Proto.code[] 识别所有分支点
- 指令级路径:每条 VM 指令触发一次回调,按 PC 记录命中,避免行级近似导致的歧义
- 性能:行级钩子整体约快 1.25-1.34x,但指令级钩子在紧循环场景下由于回调更轻量可能更快
- 安全设计:首次写入时快照 Proto 元数据,避免 GC 期间解引用原始指针
项目报告:原文链接
原文
#开发者 #工具
📢 频道:@DevToolboxHub
Tokenmaxxing:AI效率的量化陷阱
当前AI开发界出现Tokenmaxxing趋势,token消耗被当作生产力衡量指标,可能导致质量下降。
- NVIDIA CEO Jensen Huang称,年薪50万美元的工程师应每年至少消耗25万美元的token。Meta内部已出现Tokenmaxxing排行榜,比拼token消耗量。
- 批评者Linus Torvalds认为,用代码行数衡量产出很愚蠢,类比Tokenmaxxing易导致开发者为冲量而浪费token,忽视输出质量(slop)。
- 工具调用(MCP、Agent)时的Context Bloat加剧浪费:模型加载大量无关指令后才执行真实任务。Anthropic 2025报告指出,上下文窗口扩大后模型准确回忆信息的能力下降。
- 提案“Slop Index”:由人类评估AI输出是否为slop,以平衡对质量的关注。
原文链接
GitHub:GitHub
#开发者 #工具
📢 频道:@DevToolboxHub
当前AI开发界出现Tokenmaxxing趋势,token消耗被当作生产力衡量指标,可能导致质量下降。
- NVIDIA CEO Jensen Huang称,年薪50万美元的工程师应每年至少消耗25万美元的token。Meta内部已出现Tokenmaxxing排行榜,比拼token消耗量。
- 批评者Linus Torvalds认为,用代码行数衡量产出很愚蠢,类比Tokenmaxxing易导致开发者为冲量而浪费token,忽视输出质量(slop)。
- 工具调用(MCP、Agent)时的Context Bloat加剧浪费:模型加载大量无关指令后才执行真实任务。Anthropic 2025报告指出,上下文窗口扩大后模型准确回忆信息的能力下降。
- 提案“Slop Index”:由人类评估AI输出是否为slop,以平衡对质量的关注。
原文链接
GitHub:GitHub
#开发者 #工具
📢 频道:@DevToolboxHub
AI Agent 生产环境为何翻车
AI Agent 在 demo 中表现完美,但投入生产后却频频出错:未检查订单状态就退款,导致损失。本文分析三个隐藏问题:
1️⃣ 代理不知道系统当前状态,工具执行结果不可靠。
2️⃣ 代理不知道何时停止,可能错误完成任务后继续行动。
3️⃣ 代理没有“不应处理”的路径,无法升级或拒绝。
常见做法是往 system prompt 里堆大量规则,但文本规则只是文档,不是约束,模型会忽略、矛盾或误读。生产环境需要围绕模型设计系统组件,而非靠 prompt 弥补。
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
AI Agent 在 demo 中表现完美,但投入生产后却频频出错:未检查订单状态就退款,导致损失。本文分析三个隐藏问题:
1️⃣ 代理不知道系统当前状态,工具执行结果不可靠。
2️⃣ 代理不知道何时停止,可能错误完成任务后继续行动。
3️⃣ 代理没有“不应处理”的路径,无法升级或拒绝。
常见做法是往 system prompt 里堆大量规则,但文本规则只是文档,不是约束,模型会忽略、矛盾或误读。生产环境需要围绕模型设计系统组件,而非靠 prompt 弥补。
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
10个GitHub Actions实用技巧
10个提升工作流效率的GitHub Actions推荐:
- YAML验证:ibiqlik/action-yaml-lint,避免配置错误。
- Markdown链接检查:gaurav-nelson/github-action-markdown-link-check,保证文档质量。
- PR自动分配:kentaro-m/auto-assign-action,节省团队时间。
- Commitlint:wagoid/commitlint-github-action,规范提交信息。
- 缓存依赖:actions/cache,加速构建。
- Slack通知:rtCamp/action-slack-notify,实时更新部署状态。
- 安全扫描:aquasecurity/trivy-action,检查镜像漏洞。
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
10个提升工作流效率的GitHub Actions推荐:
- YAML验证:ibiqlik/action-yaml-lint,避免配置错误。
- Markdown链接检查:gaurav-nelson/github-action-markdown-link-check,保证文档质量。
- PR自动分配:kentaro-m/auto-assign-action,节省团队时间。
- Commitlint:wagoid/commitlint-github-action,规范提交信息。
- 缓存依赖:actions/cache,加速构建。
- Slack通知:rtCamp/action-slack-notify,实时更新部署状态。
- 安全扫描:aquasecurity/trivy-action,检查镜像漏洞。
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
Beanie 2.0 省去手动传 Session
Beanie ODM 2.0 改用 PyMongo 异步客户端,利用
- Beanie 2.0 弃用 Motor,全面迁移至 PyMongo Async,支持
- 服务层不再需要 session 参数,业务逻辑与数据库会话完全解耦
- 提供
- 底层通过
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
Beanie ODM 2.0 改用 PyMongo 异步客户端,利用
.bind() 隐式绑定 MongoDB 会话,服务层无需再手动传递 session 对象。- Beanie 2.0 弃用 Motor,全面迁移至 PyMongo Async,支持
session.bind() 将 session 自动注入所有数据库操作- 服务层不再需要 session 参数,业务逻辑与数据库会话完全解耦
- 提供
auto_session 和 wrap_in_transaction 装饰器,可一键自动创建 session 并包裹事务,代码更简洁- 底层通过
ContextVar 存储 session,各异步任务可安全隔离,无需额外加锁原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
Rails 8 零服务单体架构指南
Rails 8 引入“零服务单体”,目标是让整个应用只通过一个 Docker 容器、一个端口运行,不再依赖 Redis 和 Nginx。
- 用 Solid 系列(Solid Queue/Cache/Cable)替代 Redis,后台任务与缓存直接使用 PostgreSQL / MySQL / SQLite,无需额外服务。
- 用 Thruster(Go 编写的代理)替代 Nginx,自动处理 HTTP/2、SSL 证书与资源压缩,集成在 Docker 镜像中。
- 通过 Kamal 2 实现单容器单端口部署,配置文件中无需定义侧车容器。
- 可选 SQLite + Litestream 实现极致简化,整个“云帝国”仅需一个进程。
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
Rails 8 引入“零服务单体”,目标是让整个应用只通过一个 Docker 容器、一个端口运行,不再依赖 Redis 和 Nginx。
- 用 Solid 系列(Solid Queue/Cache/Cable)替代 Redis,后台任务与缓存直接使用 PostgreSQL / MySQL / SQLite,无需额外服务。
- 用 Thruster(Go 编写的代理)替代 Nginx,自动处理 HTTP/2、SSL 证书与资源压缩,集成在 Docker 镜像中。
- 通过 Kamal 2 实现单容器单端口部署,配置文件中无需定义侧车容器。
- 可选 SQLite + Litestream 实现极致简化,整个“云帝国”仅需一个进程。
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
用 Spec 和 BDD 驯服 AI 代码助手
AI 代码助手在模糊提示下生成的代码常通过单元测试却在生产中暴露问题——它按统计概率猜测业务逻辑,而非真的理解规则。解决方案是用 Spec(精确规格说明)和 BDD(行为驱动开发场景)建立契约,让 AI 从“快速猜测者”变为“可靠执行者”。
核心要点
- Spec 先行:在写代码前,用 Markdown 定义输入、输出、规则、边界和错误状态,AI 根据 spec 实现,不再猜测。
- BDD 场景验证:基于 spec 用 Gherkin 语法编写场景,在 AI 实现前就已写好;这些场景独立于实现,可被 CI 直接检验,防止 AI 生成的代码通过“自欺欺人”的测试。
- AI 反哺 Spec:让 AI 作为 spec 的压力测试者,找出遗漏的边界情况,在编码前消除潜在生产 bug。
实施流程:Day1 人类写 spec + AI 压力测试;Day2 将 spec 转为 BDD 场景;Day3 AI 以 spec+场景为上下文实现;Day4 人工聚焦架构评审;Day5 CI 永久强制执行场景。
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
AI 代码助手在模糊提示下生成的代码常通过单元测试却在生产中暴露问题——它按统计概率猜测业务逻辑,而非真的理解规则。解决方案是用 Spec(精确规格说明)和 BDD(行为驱动开发场景)建立契约,让 AI 从“快速猜测者”变为“可靠执行者”。
核心要点
- Spec 先行:在写代码前,用 Markdown 定义输入、输出、规则、边界和错误状态,AI 根据 spec 实现,不再猜测。
- BDD 场景验证:基于 spec 用 Gherkin 语法编写场景,在 AI 实现前就已写好;这些场景独立于实现,可被 CI 直接检验,防止 AI 生成的代码通过“自欺欺人”的测试。
- AI 反哺 Spec:让 AI 作为 spec 的压力测试者,找出遗漏的边界情况,在编码前消除潜在生产 bug。
实施流程:Day1 人类写 spec + AI 压力测试;Day2 将 spec 转为 BDD 场景;Day3 AI 以 spec+场景为上下文实现;Day4 人工聚焦架构评审;Day5 CI 永久强制执行场景。
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
频道定位:面向开发者的工程效率工具库。
内容包括 IDE、CLI、API、部署、数据库、测试、调试、监控与协作工具。
更新节奏:优先收录能提升实际开发效率的工具和案例。
内容包括 IDE、CLI、API、部署、数据库、测试、调试、监控与协作工具。
更新节奏:优先收录能提升实际开发效率的工具和案例。
Linux 三剑客:grep/awk/sed 实战
针对日志查找、配置排查、文本清洗等日常运维场景,无需手动翻文件,用三条命令就能提速。
- grep:文本搜索,支持忽略大小写
- awk:列处理与条件过滤。
- sed:流编辑器,用于文本替换、行删除。
组合示例:用 grep 筛选失败登录,管道给 awk 提取 IP,再
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
针对日志查找、配置排查、文本清洗等日常运维场景,无需手动翻文件,用三条命令就能提速。
- grep:文本搜索,支持忽略大小写
-i、显示行号 -n、反向匹配 -v、递归搜索 -r。示例:grep "Failed password" /var/log/auth.log 快速定位 SSH 登录失败记录- awk:列处理与条件过滤。
awk '{print $1}' 提取第一列,'$2 > 6000' 按值筛选。示例:who | awk '{print $1}' 提取登录用户名- sed:流编辑器,用于文本替换、行删除。
sed 's/old/new/g' 全局替换,sed -i 直接修改文件(建议先备份)。示例:sed -i 's/oldsite.com/newsite.com/' nginx.conf组合示例:用 grep 筛选失败登录,管道给 awk 提取 IP,再
sort | uniq -c 统计攻击次数。原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
AWS SAM 模板引入动态循环
AWS SAM CLI 最新版本支持 CloudFormation Language Extensions,主要新增 Fn::ForEach 等扩展,允许在 YAML 模板中定义一次资源结构,循环生成多个函数或端点,消除重复定义。
要点:
- 引入 Fn::ForEach 实现模板资源动态循环生成,支持静态列表或参数引用为集合
- 配套扩展:Fn::Length、Fn::ToJsonString、Fn::FindInMap 带默认值、条件 DeletionPolicy/UpdateReplacePolicy
- 所有扩展在本地完整工作流(build/invoke/validate/package/deploy/sync)中均可使用,无需特殊配置
约束:集合必须本地可解析(不支持 GetAtt / ImportValue / SSM 引用);循环嵌套最多 5 层。
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
AWS SAM CLI 最新版本支持 CloudFormation Language Extensions,主要新增 Fn::ForEach 等扩展,允许在 YAML 模板中定义一次资源结构,循环生成多个函数或端点,消除重复定义。
要点:
- 引入 Fn::ForEach 实现模板资源动态循环生成,支持静态列表或参数引用为集合
- 配套扩展:Fn::Length、Fn::ToJsonString、Fn::FindInMap 带默认值、条件 DeletionPolicy/UpdateReplacePolicy
- 所有扩展在本地完整工作流(build/invoke/validate/package/deploy/sync)中均可使用,无需特殊配置
约束:集合必须本地可解析(不支持 GetAtt / ImportValue / SSM 引用);循环嵌套最多 5 层。
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
用代码管理 Jenkins 的完整方案
一篇关于 Jenkins as Code 的实践分享,作者通过几种工具将 Jenkins 配置、作业、工作镜像完全纳入 Git 管理,实现从界面点击到代码化的转型。
核心要点:
- 使用 JCasC 插件将控制器配置写入 YAML,重启自动加载
- Job DSL 定义作业脚本,由种子作业从 Git 仓库同步
- 控制器跑在 Kubernetes 上,通过 Helm 部署,插件列表版本锁定在 values.yaml
- 用 Packer 生成 Worker 镜像,每次构建启动全新短暂 Worker
- 非 Jenkins 基础设施用 Terraform + Terragrunt 管理
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
一篇关于 Jenkins as Code 的实践分享,作者通过几种工具将 Jenkins 配置、作业、工作镜像完全纳入 Git 管理,实现从界面点击到代码化的转型。
核心要点:
- 使用 JCasC 插件将控制器配置写入 YAML,重启自动加载
- Job DSL 定义作业脚本,由种子作业从 Git 仓库同步
- 控制器跑在 Kubernetes 上,通过 Helm 部署,插件列表版本锁定在 values.yaml
- 用 Packer 生成 Worker 镜像,每次构建启动全新短暂 Worker
- 非 Jenkins 基础设施用 Terraform + Terragrunt 管理
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
2026年11个Agentic测试工具盘点
Agentic测试工具利用AI自主规划、生成、维护和执行测试,减少人工干预。根据覆盖范围分为三类,以下是代表性工具概述:
- 企业级AI质量平台:Tricentis Tosca(适合大规模回归和端到端流程)、SmartBear(跨测试领域覆盖)、UiPath Test Suite(与自动化生态集成)
- AI原生测试平台:ACCELQ(加速自动化)、mabl(持续测试与低维护)、Functionize(生命周期维护)
- 点解决方案:testRigor(自然语言驱动)、QA Wolf(快速覆盖与托管执行)、AskUI(UI感知与交互)、CoTester(辅助型任务)
选择时需明确需求:是帮助编写测试还是治理发布信心;关注可衡量的生产指标(回归时间、维护成本、缺陷逃逸);确保可解释性与审计能力。
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
Agentic测试工具利用AI自主规划、生成、维护和执行测试,减少人工干预。根据覆盖范围分为三类,以下是代表性工具概述:
- 企业级AI质量平台:Tricentis Tosca(适合大规模回归和端到端流程)、SmartBear(跨测试领域覆盖)、UiPath Test Suite(与自动化生态集成)
- AI原生测试平台:ACCELQ(加速自动化)、mabl(持续测试与低维护)、Functionize(生命周期维护)
- 点解决方案:testRigor(自然语言驱动)、QA Wolf(快速覆盖与托管执行)、AskUI(UI感知与交互)、CoTester(辅助型任务)
选择时需明确需求:是帮助编写测试还是治理发布信心;关注可衡量的生产指标(回归时间、维护成本、缺陷逃逸);确保可解释性与审计能力。
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
用三个 React Hook 替换轮询实现实时仪表盘
作者将 VORTEX 仪表盘的轮询方案(每5秒请求 API)替换为三个自定义 Hook 配合 Firestore onSnapshot 监听,不再需要轮询、消息队列或独立读取模型。要点如下:
- 数据模型先行:映射 Firestore 集合及其读写权限,activity_feed 只允许追加,确保审计日志不可篡改。
- 三个 Hook(useLeads、useActivityFeed、useProductIntel)各监听一个集合,onSnapshot 自动在卸载时清除监听,无需手动清理。
- 种子数据回退:当 Firestore 为空或出错时,Hook 使用硬编码初始数据渲染仪表盘,保证始终可演示、可开发。
- 使用 ref 管理递归 setTimeout 链,修复 StrictMode 下因重复挂载导致的两条并行循环写状态的问题。
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
作者将 VORTEX 仪表盘的轮询方案(每5秒请求 API)替换为三个自定义 Hook 配合 Firestore onSnapshot 监听,不再需要轮询、消息队列或独立读取模型。要点如下:
- 数据模型先行:映射 Firestore 集合及其读写权限,activity_feed 只允许追加,确保审计日志不可篡改。
- 三个 Hook(useLeads、useActivityFeed、useProductIntel)各监听一个集合,onSnapshot 自动在卸载时清除监听,无需手动清理。
- 种子数据回退:当 Firestore 为空或出错时,Hook 使用硬编码初始数据渲染仪表盘,保证始终可演示、可开发。
- 使用 ref 管理递归 setTimeout 链,修复 StrictMode 下因重复挂载导致的两条并行循环写状态的问题。
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
编译器管道:阶段职责与设计原则
一篇深度文章重新审视编译器架构,强调每个阶段(词法分析、语法解析、语义分析、优化、代码生成)应坚守职责边界,避免过早优化导致信息丢失。核心观点如下:
- Lexer 保持“愚笨”:只输出原始令牌及其精确位置(行、列、跨度),不合并、不解释、不删除任何字符,为下游阶段保留完整信息。
- 原则优先于性能:在词法阶段合并或丢弃数据看似高效,实则造成语义不可恢复;在正确阶段做正确工作才是正确性保障。
- 编译器即证明系统:它验证程序的类型、生命周期、内存安全等不变性,确保跨架构的确定性执行,而不仅是翻译代码。
原文
#开发者 #工具
📢 频道:@DevToolboxHub
一篇深度文章重新审视编译器架构,强调每个阶段(词法分析、语法解析、语义分析、优化、代码生成)应坚守职责边界,避免过早优化导致信息丢失。核心观点如下:
- Lexer 保持“愚笨”:只输出原始令牌及其精确位置(行、列、跨度),不合并、不解释、不删除任何字符,为下游阶段保留完整信息。
- 原则优先于性能:在词法阶段合并或丢弃数据看似高效,实则造成语义不可恢复;在正确阶段做正确工作才是正确性保障。
- 编译器即证明系统:它验证程序的类型、生命周期、内存安全等不变性,确保跨架构的确定性执行,而不仅是翻译代码。
原文
#开发者 #工具
📢 频道:@DevToolboxHub
自托管 SimpleLogin:$3/月拥有完整邮件别名
正文:一套详细的实操教程,教你用 VPS 自托管邮件别名服务 SimpleLogin,实现双向收发邮件。要点:对比 Cloudflare Email Routing(仅入站)与自托管 SimpleLogin(可回复/发信);依赖 Postfix、Docker 和 Brevo SMTP 中继;需配置 DNS、TLS 及 Nginx 反向代理;提供完整命令和陷阱避坑指南。
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
正文:一套详细的实操教程,教你用 VPS 自托管邮件别名服务 SimpleLogin,实现双向收发邮件。要点:对比 Cloudflare Email Routing(仅入站)与自托管 SimpleLogin(可回复/发信);依赖 Postfix、Docker 和 Brevo SMTP 中继;需配置 DNS、TLS 及 Nginx 反向代理;提供完整命令和陷阱避坑指南。
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub