ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

lanhu-mcp v1.8.3 发布解读:Windows 安装发布门(Windows installation release gate)与 easy-install.bat 审计级验证

lanhu-mcp v1.8.3 发布解读:Windows 安装发布门(Windows installation release gate)与 easy-install.bat 审计级验证 MCP 服务人工智能AI 应用【免费下载链接】lanhu-mcp⚡ 需求分析效率提升 200%全球首个为 AI 编程时代设计的团队协作 MCP 服务器自动分析需求自动编写前后端代码下载切图项目地址https://gitcode.com/gh_mirrors/la/lanhu-mcp点击查看免费下载v1.8.3 是 lanhu-mcp 的 Windows 安装发布里程碑版本它把 Windows 从仅源码分发假设提升为一等发布目标first-class release target让每一次 CI 与 tagged release 都在 GitHubwindows-latest运行器上用 Python 3.13 执行一次完整的干净安装 浏览器渲染 MCP 握手审计。本文将结合发布文档 RELEASE_NOTES_v1.8.3.md、Windows 安装器 easy-install.bat、CI 工作流 .github/workflows/verify.yml 与 MCP 配置脚本 scripts/print-mcp-config.bat逐项拆解发布门内容、版本比较缺陷修复以及安装器的交互/自动化行为帮助读者理解项目如何把能在 Windows 装好、跑起来变成每次发版前可复现的硬性检查。一、v1.8.3 的定位从源码可用到Windows 可交付在 v1.8.3 之前项目对 Windows 的支持更多停留在源码可以在 Windows 上运行的隐性假设上安装脚本虽然存在但缺少被真实、干净、可重复验证的通道。v1.8.3 改变了这一点明确把Windows 视作与 Linux 同级的发布目标而非能跑就行的附属平台。为此项目在发布流程中引入了一个专门的Windows 安装发布门Windows installation release gate每次 CI 和打 tag 的发布都会在 GitHub 的windows-latest运行器上、使用 Python 3.13 运行一个全新的 Windows 安装任务。从源码结构看这个任务落在 .github/workflows/verify.yml 中的windows-installjobruns-on: windows-latest、timeout-minutes: 25、python-version: 3.13并且该 job 被 .github/workflows/ci.yml 与 .github/workflows/release.yml 复用——也就是说无论是日常 push 的 CI 还是v*.*.*的正式发布Windows 安装验证都成为必经环节。发布文档给出了该任务必须验证的六类事实我们可以逐条对照 CI 源码确认其真实执行路径。二、发布门任务逐项拆解发布文档与 CI 源码的对应发布文档 RELEASE_NOTES_v1.8.3.md 的 Added 章节列出 Windows 发布门任务清单下面结合 .github/workflows/verify.yml 的实际实现逐项展开。1. 按绝对路径调用 easy-install.bat且工作目录在仓库之外任务要求从不同工作目录按绝对路径调用easy-install.bat。CI 中的实现位于windows-installjob 的Run the Windows installer from outside the checkout步骤先用 PowerShell 把调用方目录切换到$env:RUNNER_TEMP/lanhu-windows-callerPush-Location再通过Join-Path $env:GITHUB_WORKSPACE easy-install.bat得到安装器的绝对路径并执行。这一设计直接考验 easy-install.bat 对从其他目录被调用的健壮性。脚本开头用cd /d %~dp0把工作目录切回脚本自身所在目录即仓库根目录从而保证后续的venv、.env、data等相对路径都落在仓库内而不是落在调用方目录。这一步是整个发布门的地基安装器必须能在任何调用场景下自定位、自稳定。2. 创建全新虚拟环境通过批处理安装器安装项目CI 步骤执行前先写入了占位.envLANHU_COOKIEsessionci-placeholder-not-a-real-cookie随后直接运行easy-install.bat。安装器内部easy-install.bat 第 94-123 行的逻辑是若仓库内不存在venv执行python -m venv venv新建若venv\Scripts\python.exe不存在判定venv不是可用环境报错退出再次校验 venv 内的 Python 主/次版本不低于 3.10与系统 Python 校验逻辑相同通过:install_project子程序执行venv\Scripts\python.exe -m pip install --timeout 60 --retries 5 -e . -q即可编辑模式安装项目确保lanhu-mcpCLI 与lanhu_design包都可用。也就是说发布门跑的不是预装好的环境而是从零构建一个真实的最小环境——这保证了发布物在 Windows 上的可复现安装性。3. pip check、lanhu-mcp --version、lanhu-mcp --help安装完成后CI 的Check installed CLI and dependencies步骤依次执行.\venv\Scripts\python.exe -m pip check .\venv\Scripts\lanhu-mcp.exe --version .\venv\Scripts\lanhu-mcp.exe --helppip check用于确认依赖树中没有冲突或缺失--version与--help则验证lanhu-mcp.exe这个 Windows 控制台入口可以正常加载并响应。值得注意的是easy-install.bat本身在依赖安装完成后也会执行一次venv\Scripts\python.exe -m pip check第 147 行与 CI 的检查形成双重保障。4. 用 Playwright 下载 Chromium 并执行真实的无头页面渲染发布门不只是验证装得上还要验证浏览器运行时可用。CI 在Install and launch Chromium on Windows步骤中先显式Remove-Item Env:PLAYWRIGHT_DOWNLOAD_HOST清理环境确保使用官方下载通道release 门单独下载并启动 Chromium避免依赖安装器默认的国内镜像执行.\venv\Scripts\python.exe -m playwright install chromium下载浏览器然后运行一段 Playwright 脚本启动 headless Chromium设置 320×200 的 viewport写入titleWindows audit/titleh1ok/h1页面断言page.title() Windows audit且h1文本为ok。这与 .github/workflows/ci.yml 中container-smokejob 的无网络容器冒烟测试同样用 Playwright 做 headless 渲染并校验 PNG 截图魔数思路一致浏览器渲染能力是必须被真实执行验证的运行时依赖而不是应该可用的假设。5. 启动 lanhu-mcp.exe --transport stdio完成 MCP initialize 握手验证全部工具这是发布门中最核心的端到端验证。CI 的Complete an MCP stdio handshake on Windows步骤用 Python 脚本以subprocess.Popen拉起venv/Scripts/lanhu-mcp.exe --transport stdio然后按 MCP 协议标准流程交互发送initializeJSON-RPC 请求protocolVersion: 2025-06-18clientInfo 为windows-ci断言响应id 1且包含result发送notifications/initialized通知发送tools/list请求读取响应并统计工具数量。发布文档记载 v1.8.3 时该任务验证16 个工具需要说明的是当前仓库中的 .github/workflows/verify.yml 已演进为assert len(tools) 17说明后续版本工具集有所扩充但Windows 上完成真实握手并枚举全部工具这一验证模式自 v1.8.3 起被固定下来。该步骤验证的不只是安装本身还包括MCP 服务的 stdio 传输层在 Windows 上可用、所有工具注册完整。6. 确认调用方目录未被安装器的相对路径污染发布门最后一项是反向检查确认从仓库外调用安装器后调用方目录没有被venv、.env等相对路径产物污染。CI 中if (Test-Path (Join-Path $caller venv)) { throw Installer polluted caller directory with venv } if (Test-Path (Join-Path $caller .env)) { throw Installer polluted caller directory with .env }这项检查呼应了 easy-install.bat 第 7 行的cd /d %~dp0设计安装器的所有副作用虚拟环境、配置文件、数据目录都必须落在仓库根目录。可被绝对路径调用、且不污染调用方目录是批处理安装器从自娱自乐走向可被 CI 审计的关键能力。三、修复实录cmd.exe 的内联 Python 版本比较缺陷发布文档的 Fixed during Windows validation 章节记录了发布门暴露的第一个真实问题——一个cmd.exe解析 bugPython 3.13.15 曾被错误地报告为低于 3.10。这是典型的 Windows 批处理字符串比较陷阱。旧实现在内联 Python 输出后直接做字符串比较或使用了类似if ... LSS ...的字符串语义而cmd.exe的LSS/EQU等运算符对数字与字符串的处理与预期不同3.13.15这样的版本字符串按字典序/字符串规则比较时3.13.15会被判定小于3.10于是出现更新版本反而被拒绝的误判。修复方案是放弃整串版本比较改为读取数值型的主/次版本字段并用批处理原生的LSS/EQU运算符逐字段比较。修复后的实现落在 easy-install.bat 第 53-69 行for /f tokens1,2 delims. %%A in (python -c import sys; print(str(sys.version_info.major) . str(sys.version_info.minor)) 2^nul) do ( set PYTHON_MAJOR%%A set PYTHON_MINOR%%B ) set PYTHON_OK1 if not defined PYTHON_MAJOR set PYTHON_OK if defined PYTHON_MAJOR if !PYTHON_MAJOR! LSS 3 set PYTHON_OK if defined PYTHON_MAJOR if !PYTHON_MAJOR! EQU 3 if !PYTHON_MINOR! LSS 10 set PYTHON_OK if not defined PYTHON_OK ( ... exit /b 1 ... )关键点有三Python 侧只输出major.minor两个纯数字for /f以.为分隔符拆成两个 tokentokens1,2 delims.配合setlocal enabledelayedexpansion第 6 行使用!PYTHON_MAJOR!延迟展开数值比较语义!PYTHON_MAJOR! LSS 3拒绝 2.x!PYTHON_MAJOR! EQU 3 if !PYTHON_MINOR! LSS 10拒绝 3.9 及以下——由于比较对象是纯数字LSS/EQU的行为与预期一致3.13会被正确判定为等于 3 且大于 10同一套校验逻辑在 venv 创建后还会对venv\Scripts\python.exe再执行一次第 108-123 行防止系统 Python 够新、venv 里却是旧版本的隐蔽问题。有趣的是Unix 侧 easy-install.sh 处理同一问题的方式是在 shell 内做完整的元组比较它先按python3 python python3.13 python3.12 ...的候选顺序探测再用sys.version_info (3, 10)在 Python 进程内完成判断第 59-65 行完全绕开了 shell 的字符串比较语义。Windows 批处理没有这种便利因此LSS/EQU数值比较方案是符合cmd.exe语境的正确解法。这一修复也提醒所有批处理开发者不要用字符串比较版本号。四、安装器行为交互流程与审计/自动化控制发布文档的 Installer behavior 章节明确了设计原则普通 Windows 用户仍然使用引导式交互流程LANHU_INSTALL_NONINTERACTIVE1与LANHU_SKIP_BROWSER_INSTALL1是审计/自动化控制发布门单独下载并启动 Chromium因此浏览器支持始终处于被验证状态。1. 默认交互式安装的五步流程普通用户双击 easy-install.bat 会进入完整的五步引导脚本内注释为步骤 1/5至步骤 5/5步骤名称核心行为1/5环境检查检测 Python ≥ 3.10、pip 可用性新增的数值版本比较在此生效2/5安装依赖创建 venv、pip install -e .、pip check、Playwright Chromium 下载3/5配置蓝湖 Cookie从.env.example复制.env引导用户获取并填写LANHU_COOKIE4/5创建数据目录创建data、logs目录5/5启动服务询问是否立即以lanhu-mcp.exe --transport http启动并打印 Cursor 配置每一步都有清晰的echo提示与错误处理pause后exit /b 1交互提示均以if not defined LANHU_INSTALL_NONINTERACTIVE为前缀——这正是非交互开关控制交互行为的落地方式。2. LANHU_INSTALL_NONINTERACTIVE1审计/自动化模式当设置LANHU_INSTALL_NONINTERACTIVE1时脚本自动跳过所有pause与set /p交互不等待回车确认第 31 行、第 49 行等不询问是否打开浏览器和 .env 文件第 226-231 行直接set OPEN_FILESn不询问是否立即启动服务第 311-316 行直接set START_NOWn。这正是 .github/workflows/verify.yml 中env: LANHU_INSTALL_NONINTERACTIVE: 1能无人工干预跑完全程的原因。3. LANHU_SKIP_BROWSER_INSTALL1跳过 Chromium 下载对不需要浏览器渲染能力的场景例如只做纯 stdio 服务可以设置LANHU_SKIP_BROWSER_INSTALL1脚本将跳过 Chromium 下载第 152-154 行。但正如发布文档强调的发布门本身会单独下载并启动 Chromium因此跳过浏览器安装只是安装器在特定环境下的优化开关不会削弱发布流程对浏览器运行时可用性的验证。4. 镜像与回退策略国内网络友好依赖下载部分体现了对国内网络环境的适配。PyPI 侧:install_project子程序用户显式设置的PIP_INDEX_URL保持权威否则依次尝试阿里云镜像、清华镜像、官方 PyPI全部失败才报错。Playwright 侧:install_browser子程序优先使用https://cdn.npmmirror.com/binaries/playwright与https://cdn.npmmirror.com/binaries/chrome-for-testing失败后回退旧版镜像路径再回退官方 CDN用户设置的PLAYWRIGHT_DOWNLOAD_HOST/PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST同样保持权威。这套用户指定优先 → 国内镜像 → 官方源的降级链在 easy-install.sh 中也有完全对称的实现。五、安装之后Windows 上的 Cookie 配置与 Cursor 接入v1.8.3 发布门验证的是安装链路本身而普通用户真正关心的是装完之后怎么用。安装器步骤 3 给出了唯一的必要手工操作——配置蓝湖 Cookie浏览器打开 lanhuapp.com 并登录按 F12 打开开发者工具切到 Network网络标签按 F5 刷新点击左侧第一个请求在 Request Headers 中找到Cookie:行并完整复制用记事本打开仓库根目录的.env由安装器从 config.example.env 复制生成把LANHU_COOKIEyour_lanhu_cookie_here引号内的占位值替换为真实 Cookie。脚本还会做两项校验Cookie 非空且不等于占位值若既不包含session也不包含user_token则提示格式可能不正确并让用户确认easy-install.bat 第 242-278 行。随后启动服务venv\Scripts\lanhu-mcp.exe --transport http安装器会调用 scripts/print-mcp-config.bat 打印 Cursor 接入配置。该脚本会从.env读取SERVER_PORT默认 8000然后输出{ mcpServers: { lanhu: { url: http://localhost:8000/mcp?roleDevelopernameYourName } } }将这段配置粘贴到 Cursor 的 MCP 配置中即可完成接入。相关可选项如SERVER_HOST、SERVER_PORT、FEISHU_WEBHOOK_URL、DATA_DIR、HTTP_TIMEOUT、VIEWPORT_WIDTH/HEIGHT、DEBUG的完整说明可参见 config.example.env。六、总结v1.8.3 建立的发布方法论v1.8.3 的增量虽然聚焦在 Windows 安装链路但它示范了一套可复用的发布方法论值得在项目工程中借鉴把能装变成可执行的事实检查不再依赖应该能跑的假设而是让 CI 在真实运行器上从零安装、逐项验证.github/workflows/verify.yml让安装器可被外部审计cd /d %~dp0的目录自定位 非交互开关 不污染调用方目录三者共同构成批处理安装器可被 CI 调用的前提发布门主动暴露缺陷并即时修复Python 3.13.15 版本误判正是发布门价值的直接体现最终以LSS/EQU数值比较 主/次版本字段拆分的方式根治easy-install.bat 第 53-69 行交互体验与自动化并存普通用户享受引导式安装审计/自动化场景通过LANHU_INSTALL_NONINTERACTIVE、LANHU_SKIP_BROWSER_INSTALL环境变量各取所需。对 Windows 使用者而言v1.8.3 意味着从此可以确信lanhu-mcp 在 Windows 上的安装、浏览器渲染与 MCP stdio 握手每一个环节都在发版前经过真实环境的验证。赞分享MCP 服务人工智能AI 应用【免费下载链接】lanhu-mcp⚡ 需求分析效率提升 200%全球首个为 AI 编程时代设计的团队协作 MCP 服务器自动分析需求自动编写前后端代码下载切图项目地址https://gitcode.com/gh_mirrors/la/lanhu-mcp点击查看免费下载相关推荐OpenRig 发布管理实践轻量 Release Notes 目录与 substance gate 发布闸门OpenRig 发布管理实践轻量 Release Notes 目录与 substance gate 发布闸门 导读 本文讲解 OpenRig 仓库中 docs人工智能AI Agent多智能体Agent 编排代码智能体CLIOpenMed 隐私发布门禁Privacy Release GatePHI 安全的确定性发布决策聚合OpenMed 隐私发布门禁Privacy Release GatePHI 安全的确定性发布决策聚合 openmed.compliance.privacy人工智能NLP医疗健康数据脱敏本地部署大模型AI 应用MCP 服务联邦学习oh-my-codex 发布就绪验证实战以 0.8.4 为例解读 Release Readiness Gate 与 omx setup 刷新机制oh my codex 发布就绪验证实战以 0.8.4 为例解读 Release Readiness Gate 与 omx setup 刷新机制 本篇技术指南人工智能AI AgentAgent 编排Agent 工作流CLI开发工具AI 技能上一篇猫抓插件终极指南三步搞定网页视频下载新手也能轻松上手下一篇当音乐被锁在数字牢笼qmcdump如何重新定义你的听觉主权创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表