ShareX 联动 Antigravity 自动化记录与跨环境管道构建

1. 目标效果与前置准备

1.1 本文最终交付成果

学完本篇教程后,你将能够:

  1. 掌握 NTFS 目录联接(Directory Junction)与 WSL2 Windows Interop 协议穿透的底层协作机制;
  2. 独立搭建一套 ShareX 截图自动落盘、跨环境无感穿透、Agent 多模态视觉智能重命名并排版为 Hexo 教程的全自动流水线;
  3. 掌握多 Agent 客户端(Google Antigravity、OpenAI Codex、Cursor、Claude Code)与多端操作系统(Windows、macOS、Linux、WSL2)的零硬编码配置方案。

1.2 前置环境与基础要求

  • 前置认知:具备基础的 Shell 命令行、Python 脚本以及 Markdown 编写经验;
  • 软硬件环境
    • 操作系统:Windows 11 64-bit(支持 NTFS 目录联接)/ macOS / Linux / WSL2
    • Python >= 3.10(推荐使用 uv 包管理器)
    • Node.js >= 20.0.0 与 Hexo >= 8.0.0
    • 截图工具:ShareX 21.0+(Windows)、CleanShot X / Shottr(macOS)、Flameshot(Linux)

2. 核心概念极速通识(3分钟精要)

在正式动手前,用最清晰的技术语言厘清 3 个核心专业机制:

  • NTFS 目录联接 (Directory Junction):它是用来解决什么问题的?
    ShareX 运行时配置常驻内存,运行时直接修改磁盘配置文件会导致覆盖或要求重启。通过在底层建立 mklink /J 目录联接,ShareX 永远写入固定的 .current_assets 锚点路径,由操作系统内核将 I/O 写入重定向至当前激活的博文素材目录,免除管理员权限与进程重启。
  • WSL2 Windows Interop:它与普通跨虚拟机通信相比最大的不同点?
    WSL2 原生支持跨系统进程调用(/proc/sys/fs/binfmt_misc/WSLInterop)。在 WSL 内部可直接通过 cmd.exe /c <command> 调用宿主机程序,并通过管道传输标准输入输出(stdio)。这让在 WSL 内运行的 Agent 能够通过 stdio 跨系统直接与宿主机 Windows 的 MCP Server 通信,无需配置端口映射或跨系统网络服务。
  • FastMCP 接口协议与多模态审计:在整体数据流中处于哪一个环节?
    处于实操协同与收官发布环节。FastMCP 暴露标准化的工具调用协议,管理博文生命周期;在收官阶段,Agent 检索素材目录内的图片清单,调用原生多模态视觉能力识别每张截图的界面操作与终端报错,将时间戳文件名重命名为具备明确语义的规范文件名,并将其插入对应实操步骤。

3. 手把手实战步骤(Step-by-Step)

步骤一:设计自适应路径解析与跨平台目录联接核心

在博客根目录的 python_scripts/blog_mcp.py 中,编写安全的目录联接创建与更新逻辑。确保根目录通过 __file__ 动态推导,彻底杜绝盘符硬编码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import os
import sys
import subprocess
from pathlib import Path

# 动态定位博客物理根目录,无硬编码
BLOG_ROOT = Path(__file__).resolve().parent.parent
ANCHOR_PATH = BLOG_ROOT / ".current_assets"

def update_anchor(target_dir: Path) -> dict:
target_dir = target_dir.resolve()
target_dir.mkdir(parents=True, exist_ok=True)

if sys.platform == "win32":
# 移除已存在的联接指针,禁止递归删除源目录
if ANCHOR_PATH.exists() or os.path.islink(ANCHOR_PATH):
subprocess.run(["cmd", "/c", "rmdir", str(ANCHOR_PATH)], check=False)

# 创建底层 NTFS 目录联接
res = subprocess.run(
["cmd", "/c", "mklink", "/J", str(ANCHOR_PATH), str(target_dir)],
capture_output=True,
text=True
)
if res.returncode != 0:
raise RuntimeError(f"创建目录联接失败: {res.stderr}")
else:
# macOS / Linux 使用标准 POSIX 软链接
if ANCHOR_PATH.is_symlink() or ANCHOR_PATH.exists():
ANCHOR_PATH.unlink()
os.symlink(target_dir, ANCHOR_PATH, target_is_directory=True)

return {"anchor": str(ANCHOR_PATH), "target": str(target_dir)}

步骤二:构建全局 CLI 与多 IDE 零硬编码 MCP 接入

为了在任何工作目录下均能调用博客流水线,在仓库 bin/ 目录下提供自适应启动脚本。以 Windows 的 bin/hexo-recorder.cmd 为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
setlocal
set "SCRIPT_DIR=%~dp0"
for %%I in ("%SCRIPT_DIR%..") do set "BLOG_ROOT=%%~fI"

if "%~1"=="" goto help
if "%~1"=="mcp" (
uv --directory "%BLOG_ROOT%" run python python_scripts/blog_mcp.py mcp
exit /b %ERRORLEVEL%
)

uv --directory "%BLOG_ROOT%" run python python_scripts/blog_mcp.py %*
exit /b %ERRORLEVEL%

bin/ 目录或生成的启动脚本放置在用户级 PATH 后,各 IDE(Antigravity、Codex、Cursor、Claude Code)只需配置纯命令名 hexo-recorder,彻底移除机器特定的绝对路径:

1
2
3
4
5
6
7
8
{
"mcpServers": {
"hexo-blog-recorder": {
"command": "hexo-recorder",
"args": ["mcp"]
}
}
}

步骤三:WSL2 学习场景跨界透传(Windows Interop 实践)

当在 WSL2(如 Ubuntu)中学习或编写代码并启动 Antigravity / Codex 时,无需在 WSL 内部重复克隆博客或安装 Node/Hexo/Python 依赖。通过 WSL2 的 Windows Interop 机制,WSL 内部进程可通过 stdio 透传调用宿主机的 MCP 服务:

在 WSL2 的 ~/.gemini/config/mcp_config.json 中配置:

1
2
3
4
5
6
7
8
{
"mcpServers": {
"hexo-blog-recorder": {
"command": "cmd.exe",
"args": ["/c", "hexo-recorder", "mcp"]
}
}
}

在 WSL2 的 ~/.codex/config.toml 中配置:

1
2
3
4
[mcp_servers.hexo_blog_recorder]
type = "stdio"
command = "cmd.exe"
args = ["/c", "hexo-recorder", "mcp"]

同时在 WSL 内部建立对宿主机技能仓库的软链接:

1
2
# 通过 wslpath 动态定位宿主机博客目录,避免硬编码
ln -sfn "$(wslpath '<windows-blog-root>')/skills/tutorial-recorder" ~/.gemini/config/skills/tutorial-recorder

这一设计的核心优势在于:Windows 宿主机的 ShareX 正常截屏,底层通过 mklink /J 维护目录联接,完美避开了 WSL 跨系统 DrvFs 文件权限与符号链接不互通的深坑。

步骤四:配置截图软件静态穿透锚点

截图软件只需进行一次性配置,将保存路径永久指向博客根目录下的 .current_assets

  • Windows (ShareX)应用程序设置 -> 路径 -> 勾选 使用自定义截图保存路径,填入 <blog-root>\.current_assets,清空 子文件夹命名模式
  • macOS (CleanShot X / Shottr):首选项中指定保存目录为 <blog-root>/.current_assets
  • Linux (Flameshot):默认保存路径指定为 <blog-root>/.current_assets

步骤五:开启实操记录会话与现场截图落盘核验

在终端或实操 Agent 会话中下达开始实操指令:

1
2
3
hexo-recorder start "ShareX 联动 Antigravity 自动化记录与跨环境管道构建" \
--slug "sharex-antigravity-tutorial-recorder" \
--scaffold "tutorial"

博文 Markdown 与同名素材文件夹完成初始化,系统底层目录联接瞬间建立:

Antigravity终端执行挂载命令并确认软链接建立成功

在实操过程中,随时按下快捷键截图。在 ShareX 历史面板与博客素材文件夹中均可核验到图片已成功同步:

ShareX主界面成功记录捕获并完成写入

步骤六:多模态视觉审计、语义重命名与博客质量守卫

实操收尾阶段,Agent 调用 list_screenshots 获取时间序截图列表,调用原生视觉能力审计画面内容,并执行 rename_screenshot 进行规范重命名:

1
2
Code_JNOVv1ic1N.png   -> 01-antigravity-session-mounted-confirmation.png
ShareX_Y3gKvxOct3.png -> 02-sharex-main-window-captured-thumbnail.png

博文落盘后,通过统一 CLI 执行质量审计与 WebP 压缩:

1
2
3
4
5
6
7
8
# 执行博客合规性全面审计(0 Emoji、元数据、描述字数、图片 Alt)
hexo-recorder audit

# 压缩图片为 WebP 格式并清理未引用冗余资产
hexo-recorder compress

# 全站静态生成验证
hexo-recorder build

控制台输出全流程闭环验证成功:

1
2
3
4
5
6
7
[Blog Guard] Starting automated audit...
[Blog Guard] Inspecting 54 markdown posts...
==================================================
[Blog Guard Result] Errors: 0 | Warnings: 0
==================================================
[PASSED] All mandatory health checks passed successfully!
INFO 346 files generated in 251 ms

4. 高频踩坑与常见问题答疑(FAQ)

Q1: 运行中直接修改 ShareX 的 JSON 配置文件失效?

解答:ShareX 启动后会将配置常驻内存,并在退出时重新将内存配置序列化写回磁盘。直接修改磁盘文件会在进程退出时被覆盖。正确的做法是先退出 ShareX 进程再修改,或采用本文的目录联接方案,保持 ShareX 保存路径永久固定为静态锚点。

Q2: 更新软链接时误用递归删除指令导致源目录素材被清空?

解答:在 Windows PowerShell 中对目录联接执行 Remove-Item -Recurse,某些版本会顺着指针递归删除源目录中的图片。解除目录联接必须使用底层安全指令 cmd /c rmdir <path>,或在 Python 中调用安全的 os.unlink()

Q3: 在 WSL2 内部使用 Antigravity 如何连接 Windows 宿主机的 MCP 服务?

解答:WSL2 进程可以直接执行 Windows 程序。在 WSL 的 ~/.gemini/config/mcp_config.json 中配置 command: "cmd.exe"args: ["/c", "hexo-recorder", "mcp"]。WSL 会通过系统互操作管道将 stdio 自动映射给 Windows 端运行的 Python FastMCP 服务。

Q4: 跨设备或跨用户克隆博客时,如何避免在 IDE 配置中硬编码绝对路径?

解答:使用仓库预置的 bin/hexo-recorder(或 bin/hexo-recorder.cmd),该脚本会根据自身所在物理路径向上推导博客根目录 BLOG_ROOT。将该脚本加入环境变量 PATH 后,IDE 配置文件中只需填写命令名 hexo-recorder,即可做到完全脱敏与跨环境移植。


5. 总结与进阶拓展

  • 核心要点回顾:自适应 CLI 定位 -> 目录联接穿透 -> WSL2 Windows Interop 透传 -> 现场多模态视觉重命名 -> 质量守卫审计与 WebP 归档。
  • 进阶探索方向:下一步可将此工作流扩展为基于 ShareX Actions 钩子的事件驱动模式,在截图落盘后实时调用本地 Agent 进行秒级即时重命名与正文插图。