运维123 - 工具箱
type: channel
link: https://www.sddts.cn/index.php/tag/%E5%B7%A5%E5%85%B7%E7%AE%B1/
items: Terminator 终端字体显示问题解决
items: Mori：macOS 原生工作区终端
items: iDescriptor 免费开源跨平台 iOS 设备管理工具
items: NextTrace v1.6.1 发布：新增 MTR 模式与 MTU 探测功能
items: rip 终端进程管理工具入门指南
items: 微信 iLink Bot SDK 技术文档
items: rathole 入门指南
items: Folio-OCR 三栏文档 OCR 工作台
items: CLI-Anything：让所有软件成为 AI Agent 原生工具
items: jina CLI 工具入门指南

Terminator 终端字体显示问题解决
type: item
date: 2026-03-30T10:05:54+00:00
description: Terminator 终端字体显示问题解决一、事件概述1. 事件背景在 Terminator 终端中进行日常开发工作时，发现中英文字符显示异常。2. 影响范围A. 影响用户本地开发环境，单用户B. 影响时长约 10 分钟（诊断和修复）C. 影响功能终端可正常使用，但显示效果不佳，影响阅读体验3. 严重程度P3 级问题（体验问题，不影响功能）二、问题现象1. 现象描述中英文字符显示都很宽每个字符之间间距很大整体显示不够紧凑2. 环境信息终端模拟器：Terminator操作系统：Linux 6.17.0-19-genericShell：bash三、问题分析1. 直接原因终端使用的字体不支持中英文等宽显示。2. 根本原因Terminator 配置文件中指定使用 Menlo 字体，这是一款 Apple 专为英文设计的等宽字体，对中文支持很差。当显示中文时，系统会回退到其他中文字体，导致中英文字符宽度不一致、间距不均匀。3. 验证分析通过检查 Terminator 配置文件 /home/lab/.config/terminator/config，发现：font = Menlo 14同时检查系统可用字体，确认存在 Noto Sans Mono CJK SC 等支持中文的等宽字体。graph TD A[用户输入字符] --> B{字体是否支持} B -->|Menlo 支持| C[英文字符正常显示] B -->|Menlo 不支持| D[系统回退到中文字体] C --> E[中英宽度一致] D --> F[中英宽度不一致] F --> G[显示异常]四、解决方案1. GUI 修改方式在 Terminator 窗口中操作：右键点击 → Preferences选择 Profiles → General取消勾选 Use the system fixed width font点击字体选择框，搜索并选择：Noto Sans Mono CJK SC调整大小（建议 12-14）点击 Close2. 配置文件修改方式直接编辑 /home/lab/.config/terminator/config，将：font = Menlo 14修改为：font = Noto Sans Mono CJK SC 143. 推荐字体以下字体均适合终端使用：Noto Sans Mono CJK SC：Google 开源，支持中日韩WenQuanYi Micro Hei Mono：文泉驿微米黑等宽版Sarasa Gothic：更纱黑体，程序员友好五、验证结果字体更换后，中英文字符显示正常：字符宽度统一间距合理显示效果良好六、经验总结1. 问题根源终端字体选择不当是显示问题的常见原因。英文专用字体在混排中文时必然会出现宽度不一致问题。2. 预防措施安装系统时优先安装支持 CJK 的等宽字体配置终端时选择专门的等宽字体，而非通用字体避免使用英文专用字体（如 Menlo、Monaco）作为主要终端字体3. 字体选择原则必须是等宽字体（Monospace）优先选择包含 CJK 支持的字体字体名称包含 Mono、等宽等关键词参考资料Noto Fonts 官方文档Terminator 配置指南

Mori：macOS 原生工作区终端
type: item
date: 2026-03-22T13:59:43+00:00
description: Mori：macOS 原生工作区终端一、概述1. 简介A. 是什么Mori 是一款专为 macOS 设计的原生工作区终端应用。它以项目和 Worktree 为核心组织方式，底层由 tmux 和 libghostty 提供支持。B. 为什么用摆脱零散的终端标签页管理，将 git 仓库作为一等项目持久化会话，关闭应用后重新打开，tmux 中的所有内容仍在运行原生 macOS 体验，侧边栏、命令面板、通知、键盘快捷键一应俱全GPU 渲染终端，基于 libghostty（Ghostty 的渲染引擎）实现 Metal 加速Worktree 感知，同一仓库的多个分支可并排运行，会话相互独立C. 用后能做什么在项目和分支间快速切换，而非在匿名标签页中迷失为每个 worktree 维护独立的 tmux 会话使用原生 macOS 界面管理终端工作流2. 前置知识A. 必备技能基本终端操作和 tmux 使用经验Git 工作树（worktree）概念macOS 基本操作B. 推荐知识tmux 会话管理Ghostty 终端配置二、系统架构1. 工作原理Mori 采用分层架构，将项目、worktree、tmux 会话和 UI 层有机结合。graph TD A[Project git 仓库] --> B[Worktree 分支检出] B --> C[tmux Session 持久化会话] C --> D1[Window 1 标签页] C --> D2[Window 2 标签页] C --> D3[Window 3 标签页] D1 --> E1[Pane 分屏] D2 --> E2[Pane 分屏] D2 --> E3[Pane 分屏]2. 应用架构Mori 采用模块化架构设计，各组件职责清晰。graph TB App[Mori App AppKit + SwiftUI] App --> Core[MoriCore 模型与状态] App --> UI[MoriUI SwiftUI 视图] App --> Tmux[MoriTmux tmux CLI 集成] App --> Git[MoriGit Git 状态发现] App --> Terminal[MoriTerminal libghostty 渲染] App --> Persistence[MoriPersistence SQLite 存储] App --> IPC[MoriIPC Unix Socket + ws CLI] style App fill:#f9f,stroke:#333,stroke-width:2px style Terminal fill:#bbf,stroke:#333,stroke-width:2px style Tmux fill:#bfb,stroke:#333,stroke-width:2px3. 组件说明MoriCore：应用数据模型和可观察状态管理MoriUI：SwiftUI 侧边栏视图MoriTmux：tmux 命令行集成（actor 模式）MoriGit：Git worktree 和状态发现（actor 模式）MoriTerminal：libghostty 终端表面MoriPersistence：基于 GRDB 的 SQLite 持久化MoriIPC：Unix socket IPC 和 ws 命令行工具三、环境准备1. 系统要求macOS 14（Sonoma）或更高版本tmuxmise（任务运行器）Zig 0.15.2 + Xcode（用于构建 libghostty）2. 安装依赖安装 tmux：brew install tmux安装 mise：brew install mise安装 Zig（用于构建 libghostty）：brew install zig3. 获取源码git clone https://github.com/vaayne/mori.git cd mori四、构建与运行1. 快速构建Mori 使用 mise 作为任务运行器，提供以下命令：mise run build # Debug 构建 mise run build:release # Release 构建 mise run dev # 构建并运行 mise run test # 运行所有测试 mise run clean # 清理构建产物2. libghostty 构建首次运行时，mise run build 和 mise run build:release 会自动引导 libghostty XCFramework 的构建。也可以手动构建：mise run build:ghostty # 需要 Zig 0.15.2 + Xcode该命令会自动下载 Metal Toolchain（如果缺失）。3…

iDescriptor 免费开源跨平台 iOS 设备管理工具
type: item
date: 2026-03-22T13:59:04+00:00
description: iDescriptor 免费开源跨平台 iOS 设备管理工具一、概述1. 简介A. 是什么iDescriptor 是一款免费、开源、跨平台的 iOS 设备管理工具，支持 Windows、macOS 和 Linux 三大操作系统。它基于 libimobiledevice 等开源项目构建，提供了丰富的设备管理功能。B. 为什么选择完全免费开源，无广告无限制跨平台支持，覆盖主流操作系统功能丰富，替代部分 iTunes 功能活跃开发，持续更新新特性C. 能做什么有线和无线连接 iOS 设备安装 App Store 应用投屏和实时屏幕查看虚拟定位模拟文件系统挂载和管理网络设备发现SSH 终端（越狱设备）设备信息查询2. 前置知识A. 必备技能基本电脑操作能力USB 数据线连接设备B. 推荐知识iOS 设备基本概念命令行基础操作（Linux 用户）二、环境准备1. 系统要求Windows：Windows 10/11macOS：支持 Intel 和 Apple Silicon（M1/M2/M3）Linux：主流发行版（Ubuntu、Arch Linux 等）2. 安装步骤Windows安装包版：下载并运行 .msi 安装程序便携版：解压 .zip 压缩包，直接运行 iDescriptor.exeChocolatey：choco install idescriptor --version=0.1.0macOSApple Silicon 版本：下载 .dmg 文件，拖拽到 Applications 文件夹安装后需要执行以下命令解除隔离：xattr -c ~/Applications/iDescriptor.appIntel 版本：下载 .dmg 文件，拖拽到 Applications 文件夹LinuxAppImage 版本：下载解压后直接运行Arch Linux（AUR）：sudo pacman -Syu yay -S idescriptor-git注意：必须先执行 sudo pacman -Syu 更新系统，否则可能找不到 libimobiledevice>=1.4.03. 验证安装运行 iDescriptor 应用程序，通过 USB 线连接 iOS 设备，设备应当被识别。三、核心概念1. 基本术语libimobiledevice：iOS 设备通信的核心开源库Developer Disk Image：开发磁盘镜像，用于高级功能AirPlay：苹果的无线投屏协议IPA：iOS 应用安装包格式iFuse：iOS 设备文件系统挂载工具2. 工作原理graph LR A[iOS 设备] -->|USB 连接| B[iDescriptor] A -->|无线连接| B B --> C[libimobiledevice] C --> D[设备管理功能] D --> E1[AirPlay 投屏] D --> E2[应用安装] D --> E3[文件管理] D --> E4[虚拟定位]3. 功能架构graph TD subgraph 连接方式 A1[USB 连接] A2[无线连接 开发中] end subgraph 工具模块 B1[AirPlay 投屏] B2[应用安装] B3[虚拟定位] B4[文件系统] B5[图库管理] B6[网络发现] B7[SSH 终端] B8[实时屏幕] end subgraph 设备操作 C1[重启设备] C2[关机] C3[进入恢复模式] end A1 --> B1 A1 --> B2 A1 --> B3 A1 --> B4 A1 --> B5 A1 --> B6 A1 --> B7 A1 --> B8 B1 --> C1 B2 --> C2 B3 --> C3四、核心功能1. 连接管理A. USB 连接完全支持 Windows、macOS 和 Linux 平台的有线连接，稳定可靠。B. 无线连接目前处于开发阶段，计划在 v0.4.0 版本发布。2. AirPlay 投屏将 iOS 设备屏幕投射到电脑上，支持实时显示设备画面。3. 应用安装直接从 App Store 下载并安装应用，需要使用 Apple ID 登录。4. 虚拟定位模拟 GPS 位置，支持 iOS 6 到 iOS 16 版本。需要挂载 Developer Disk Image。5. 文件系统挂载将 iOS 设备文件系统挂载为普通驱动器，支持读写操作。Windows 和 Linux 平台支持。6. 图库管理浏览和导入设备中的照片和视频。7. 文件浏览器浏览设备文件系统，支持文件和文件夹管理。8. 网络设备发现发现并监控局域网内的设备。9. SSH 终端在越狱设备上打开终端，执行命令操作。10. 实时屏幕查看设备实时屏幕（有线连接），适用于不支持 AirPlay 的…

NextTrace v1.6.1 发布：新增 MTR 模式与 MTU 探测功能
type: item
date: 2026-03-22T13:58:10+00:00
description: NextTrace v1.6.1 发布：新增 MTR 模式与 MTU 探测功能一、新闻概述1. 标题NextTrace v1.6.1 发布：新增 MTR 模式与 MTU 探测功能2. 发布时间2026 年 3 月 21 日3. 来源GitHub Release - nxtrace/NTrace-core二、核心内容1. 事件摘要A. 主要内容NextTrace 是一个开源的网络路由追踪工具，此次 v1.6.1 版本更新带来了重大功能增强，包括新增 MTR 模式、独立的 MTU 探测模式，以及 Windows 平台依赖重构。B. 核心亮点新增完整的 MTR 模式，支持交互式 TUI、报告模式和流式输出独立的 MTU 路径探测功能同一版本提供三种构建变体：完整版、精简版、MTR 专用版Windows 平台移除 Npcap 依赖，改用 WinDivert2. 关键信息A. 版本号v1.6.1B. 重要数据GitHub Star：7.7kFork 数：461支持平台数：101 个构建包覆盖架构：amd64、arm64、386、armv5/v6/v7、mips、ppc64、riscv64、s390x、loong64 等C. 涉及产品NextTrace 网络路由追踪工具3. 背景介绍A. 前置版本v1.5.0 是上一个主要版本，引入了多项功能改进。B. 相关上下文NextTrace 是一个用 Go 语言编写的开源路由追踪工具，支持多种探测协议（ICMP、TCP、UDP），并提供 GeoIP 定位、RDNS 反解等增强功能。三、详细报道1. 主要内容A. 功能更新新增 MTR 模式支持交互式 TUI 界面提供 --report 报告模式支持 --raw 流式输出新增 --wide、--show-ips、-y/--ipinfo 等显示控制选项重写 MTR 调度与统计逻辑改为 Per-Hop 独立调度支持每跳多并发探测修复高丢包场景下的统计偏差问题修复 ghost row、超发残影和已到达目的地后高 TTL 脏数据问题新增独立 MTU 探测模式使用 --mtu 参数启动独立于普通 traceroute/MTR支持单独的输出格式与 JSON schema兼容 GeoIP、RDNS、--dot-server 等常用参数B. 技术改进Windows 平台重构移除对 Npcap 的依赖ICMP/TCP/UDP 监听统一改为 WinDivert SNIFF 模式修复上下文取消后句柄未释放导致的卡住问题探测包大小语义调整--psize 现在表示探测包总大小（包含 IP 与探测协议头）默认按协议和 IP 族自动取最小合法值支持负值随机化每个 probe 的包大小新增 -Q/--tos 用于设置 IP TOS/traffic class输出文件能力常规 traceroute 支持 --output <FILE>支持 --output-default 便于实时落盘和脚本处理DoT 服务器增强--dot-server 现在影响目标域名解析、GeoIP、LeoMoe FastIP 等相关请求失败时自动回退到系统 DNSC. 兼容性说明TTY 下支持状态与 PMTU 高亮重定向或管道输出退化为无 ANSI 的逐行流式文本补齐 Windows 下的 MTU 处理问题WinDivert 超时、过滤与权限提示改进2. 技术细节A. 版本架构graph TB subgraph Versions[NextTrace v1.6.1 三种构建版本] A[nexttrace 完整版] B[nexttrace-tiny 精简版] C[ntr MTR专用版] end subgraph Features[功能对比] F1[常规 traceroute] F2[MTR TUI] F3[MTR 报告模式] F4[Globalping] F5[WebUI] F6[快速跟踪] F7[MTU 探测] end A --> F1 A --> F2 A --> F3 A --> F4 A --> F5 A --> F6 A --> F7 B --> F1 B --> F6 B --> F7 C --> F2 C --> F3 style A fill:#e1f5ff style B fill:#fff4e1 style C fill:#ffe1f5B. 功能架构graph TD A[用户命令] --> B[常规 traceroute] A --> C[MTR 模式] A --> D[MTU 探测] B --> E[GeoIP 定位] B --> F[RDNS 反解] C --> E C --> F D --> F style B fill:#4CAF50 style C fill:#2196F3 style…

rip 终端进程管理工具入门指南
type: item
date: 2026-03-22T13:56:13+00:00
description: rip 终端进程管理工具入门指南一、概述1. 简介A. 是什么rip 是一个用 Rust 语言编写的终端工具，提供交互式的进程查找和终止功能。通过模糊搜索界面，用户可以快速定位并杀死占用系统资源的进程。B. 为什么学比传统 ps 和 kill 命令更直观支持按 CPU、内存、端口等多维度排序实时监控模式可动态刷新进程列表跨平台支持 Linux、macOS 和 WindowsC. 学完能做什么快速定位高 CPU 或高内存消耗的进程精准终止指定端口占用的进程使用信号优雅地关闭应用程序实时监控系统进程状态2. 前置知识A. 必备技能基本终端命令操作了解进程和端口概念B. 推荐知识了解 Unix 信号机制了解系统资源监控基础二、环境准备1. 系统要求Linux：x86_64、aarch64 架构macOS：x86_64、arm64 架构Windows：x86_64 架构2. 安装步骤Homebrew（macOS/Linux）：brew install cesarferreira/tap/ripCargo：cargo install rip-cli从源码编译：cargo install --path .Nix：nix run github:cesarferreira/rip --no-write-lock-file3. 验证安装rip --version三、核心概念1. 基本术语模糊搜索（Fuzzy Search）：支持部分匹配的搜索方式信号（Signal）：发送给进程的指令，如 KILL、TERM实时模式（Live Mode）：自动刷新进程列表的模式端口模式（Ports Mode）：显示监听网络端口的进程2. 工作原理graph LR A[用户执行 rip] --> B[获取进程列表] B --> C[显示 TUI 界面] C --> D{用户操作} D -->|搜索| E[过滤进程] D -->|选择| F[标记进程] D -->|确认| G[发送信号] G --> H[终止进程] D -->|取消| I[退出界面]四、快速上手1. Hello World 示例# 启动 rip（默认按 CPU 排序） rip运行后会显示所有运行中的进程，可通过键盘进行交互操作。2. 核心功能演示# 预过滤特定名称的进程 rip -f chrome # 使用 SIGTERM 信号优雅终止 rip -s SIGTERM # 按内存使用排序 rip --sort mem # 按名称排序 rip --sort name3. 代码讲解基本使用流程执行 rip 命令进入交互界面直接输入进程名进行模糊搜索使用空格键选中/取消选中进程按回车键发送终止信号按 Esc 或 Ctrl+C 取消操作端口模式# 显示所有占用端口的进程 rip --ports # 终止占用特定端口的进程 rip --port 3000 # 端口模式配合实时刷新 rip --ports --live五、进阶内容1. 常用功能实时监控模式# 启动自动刷新模式 rip --live此模式下进程列表会定期更新，适合监控动态变化的系统状态。信号选择rip 支持多种 Unix 信号：信号编号描述KILL9强制杀死（默认）TERM15优雅终止INT2中断HUP1挂起QUIT3退出排序选项--sort cpu # 按 CPU 使用率（默认） --sort mem # 按内存占用 --sort pid # 按进程 ID --sort name # 按进程名称 --sort port # 按端口号2. 最佳实践优先使用 SIGTERM 信号，给予进程清理资源的机会对于无响应进程再使用 SIGKILL使用预过滤功能缩小搜索范围端口模式用于快速定位端口冲突问题3. 性能优化rip 使用 Rust 编写，资源占用极低模糊搜索算法高效，支持大量进程快速筛选实时模式采用智能刷新策略，避免过度消耗资源六、实战案例1. 场景描述开发环境中某个 Node.js 进程占用端口 3000，导致新服务无法启动。2. 实现步骤# 方法 1：直接使用端口模式 rip --port 3000 # 方法 2：先查找再终止 rip -f node # 方法 3：按 CPU 排序找到高消耗进程 rip --sort cpu在交互界面中：使用空格选中目标进程按回车确认终止3. 完整代码# 组合使用示例：实时监控端口 8080 rip --ports --live --sort port # 优雅终止所有 Chrome 进程 rip -f chrome -s TERM # 查看并终止高内存进程 rip --sort mem --live七、常见问题1. 安装问题Q: Homebrew 安装失败A: 确保已更新 Homebrew：brew updat…

微信 iLink Bot SDK 技术文档
type: item
date: 2026-03-22T11:02:11+00:00
description: 微信 iLink Bot SDK 技术文档一、概述1. 项目简介A. 是什么weixin-bot 是一个微信 iLink Bot SDK，支持 Node.js 和 Python 两种语言实现。它为开发者提供了一套简洁的 API，让任何 Agent 可以在 5 分钟内接入微信消息收发功能。B. 为什么需要它传统的微信机器人接入面临以下痛点：协议复杂，需要深入理解微信 iLink Bot APIcontext_token 管理繁琐，处理不当会导致消息投递失败Session 过期需要手动重新登录需要配置 Webhook 接收消息，部署复杂weixin-bot SDK 通过封装底层协议细节，解决了这些问题：零配置，开箱即用凭证自动保存和续期context_token 自动管理长轮询收消息，无需 WebhookC. 应用场景AI Agent 接入微信作为交互渠道客服机器人自动回复群聊助手和消息监听微信消息自动化处理2. 技术背景A. iLink Bot APIiLink Bot API 是微信提供的机器人接口协议，采用 HTTP 长轮询方式接收消息，通过 HTTP POST 发送消息。关键特性包括：扫码登录认证长轮询获取更新context_token 上下文传递机制Typing 状态支持B. 协议关键发现SDK 开发过程中发现的关键协议细节：context_token：回复消息时必须原样传回 APIsendtyping：唯一能触发"对方正在输入中"的方式message_state：GENERATING 状态在 API 层面可用，但微信客户端不渲染Session 过期：errcode 为 -14 时需要重新登录二、系统架构1. 整体架构graph TB Agent[Agent 应用] -->|调用| SDK[weixin-bot SDK] SDK -->|HTTP 长轮询| API[iLink Bot API] SDK -->|HTTP POST| API API -->|推送消息| User[微信用户] User -->|扫码/发消息| API SDK -->|保存凭证| Local[本地存储]2. 组件说明Agent 应用：使用 SDK 的上层应用，如 AI Agent、客服机器人weixin-bot SDK：封装 iLink Bot API 协议的 SDK 库iLink Bot API：微信提供的机器人接口服务本地存储：保存登录凭证，避免重复扫码3. 交互流程sequenceDiagram participant Agent as Agent 应用 participant SDK as weixin-bot SDK participant API as iLink Bot API participant User as 微信用户 Note over Agent,User: 1. 登录阶段 Agent->>SDK: bot.login() SDK->>API: GET /get_bot_qrcode?bot_type=3 API-->>SDK: 返回二维码 URL SDK-->>Agent: 终端显示二维码 User->>API: 微信扫码确认 API-->>SDK: 返回 bot_token + baseurl SDK-->>Agent: 登录成功，凭证已保存 Note over Agent,User: 2. 消息收发循环 Agent->>SDK: bot.run() loop 长轮询循环 SDK->>API: POST /getupdates (最多保持 35 秒) User->>API: 发送消息 "你好" API-->>SDK: 返回消息 + context_token SDK-->>Agent: 触发 onMessage(msg) Agent->>SDK: bot.sendTyping(userId) SDK->>API: POST /sendtyping Note over User: 显示 "对方正在输入中" Agent->>SDK: bot.reply(msg, "Echo: 你好") SDK->>API: POST /sendmessage (带 context_token) API-->>User: 推送回复消息 SDK->>API: POST /sendtyping (取消 typing) end Note over Agent,User: 3. 异常处理 API-->>SDK: 返回 errcode: -14 (Session 过期) SDK->>SDK: 自动触发重新登录 SDK->>API: 重新获取二维码和 token SDK-->>Agent: 自动恢复运行三、安装指南1. 系统要求Node.js：14…

rathole 入门指南
type: item
date: 2026-03-19T05:50:52+00:00
description: rathole 入门指南一、概述1. 简介A. 是什么rathole 是一个用 Rust 编写的轻量级、高性能反向代理工具，用于 NAT 穿透。它可以将位于 NAT 后面的设备上的服务暴露到互联网上。与 frp 和 ngrok 类似，rathole 通过一台具有公网 IP 的服务器来中转流量，使内网服务可被外网访问。B. 为什么学解决家庭服务器或 NAS 无法直接访问的问题相比 frp 具有更高的性能和更低的资源占用用 Rust 编写，二进制文件可小至 500KiB，适合嵌入式设备C. 学完能做什么在公网服务器上部署 rathole 服务端在内网设备上配置客户端，将本地服务暴露到公网配置加密传输，保护数据安全热重载配置，无需重启服务二、环境准备1. 系统要求服务器：具有公网 IP 的 Linux 服务器客户端：位于 NAT 后面的设备（家用电脑、NAS 等）操作系统：Linux、macOS、Windows、支持 Docker 的平台2. 安装步骤从官方发布页面下载预编译二进制文件：Linux:wget https://github.com/rathole-org/rathole/releases/download/v0.5.0/rathole-x86_64-unknown-linux-musl.tar.gz tar -xzf rathole-x86_64-unknown-linux-musl.tar.gzDocker:docker pull rapiz1/rathole从源码编译：git clone https://github.com/rathole-org/rathole.git cd rathole cargo build --release3. 验证安装./rathole --version三、核心概念1. 基本术语服务端（Server）：运行在具有公网 IP 的服务器上，监听来自客户端的连接和来自外网的访问请求客户端（Client）：运行在 NAT 后面的设备上，主动连接服务端并注册需要转发的服务Token：服务端和客户端之间用于身份验证的密钥服务（Service）：需要转发的具体应用，如 SSH、Web 服务器等2. 工作原理graph LR A[外网用户] -->|访问公网端口| B[服务端] B <-->|加密通道| C[客户端] C -->|转发请求| D[本地服务]rathole 的工作流程如下：客户端主动连接服务端，并使用 Token 进行身份验证服务端记录客户端注册的服务映射关系外网用户访问服务端的公网端口服务端通过加密通道将流量转发给客户端客户端将流量转发到本地服务四、快速上手1. 基本示例：暴露 NAS 的 SSH 服务场景你有一台位于家庭网络的 NAS，希望从互联网上通过 SSH 访问它。服务端配置创建 server.toml 文件：[server] bind_addr = "0.0.0.0:2333" [server.services.my_nas_ssh] token = "use_a_secret_that_only_you_know" bind_addr = "0.0.0.0:5202"启动服务端：./rathole --server server.toml客户端配置创建 client.toml 文件：[client] remote_addr = "myserver.com:2333" [client.services.my_nas_ssh] token = "use_a_secret_that_only_you_know" local_addr = "127.0.0.1:22"启动客户端：./rathole --client client.toml验证连接ssh -p 5202 myserver.com2. 多服务配置可以在一个配置文件中定义多个服务：客户端配置：[client] remote_addr = "myserver.com:2333" [client.services.ssh] token = "ssh_token" local_addr = "127.0.0.1:22" [client.services.web] token = "web_token" local_addr = "127.0.0.1:8080" [client.services.minecraft] token = "mc_token" local_addr = "127.0.0.1:25565" type = "tcp"服务端配置：[server] bind_addr = "0.0.0.0:2333" [server.services.ssh] token = "ssh_token" bind_addr …

Folio-OCR 三栏文档 OCR 工作台
type: item
date: 2026-03-16T22:01:43+00:00
description: Folio-OCR 三栏文档 OCR 工作台一、概述1. 简介A. 是什么Folio-OCR 是一款基于 GLM-OCR 和 Ollama 的三栏文档 OCR 工作台，专为书籍和文档的日常批量识别设计。它提供了一个现代化的 Web 界面，支持图片和 PDF 文件的批量光学字符识别，并具备智能版面分析、实时编辑和多种格式导出功能。B. 为什么学解决文档数字化过程中的人工识别效率问题利用本地化 OCR 方案保护数据隐私学习 FastAPI 前后端分离架构和版面分析技术了解如何将大型语言模型集成到实际应用中C. 学完能做什么搭建本地化的 OCR 识别服务批量处理 PDF 和图片文档使用版面分析技术提高识别准确率将识别结果导出为 Markdown、TXT 或 Word 文档2. 前置知识A. 必备技能基础的 Linux 命令行操作了解 Docker 基础概念B. 推荐知识Python 基础编程知识Web 开发基础概念OCR 和版面分析基础二、环境准备1. 系统要求操作系统：Linux、macOS、Windows 10/11Docker：20.10+（推荐使用 Docker 部署）Python：3.10+（本地部署）Ollama：已安装（本地部署）硬件：建议 8GB+ 内存，有 NVIDIA 显卡可获得更好性能2. 安装步骤Docker 部署（推荐）# 1. 克隆项目 git clone https://github.com/vorojar/Folio-OCR.git cd Folio-OCR # 2. 启动服务 docker compose up -d # 3. 下载 OCR 模型（约 2GB，只需执行一次） docker compose exec ollama ollama pull glm-ocr本地部署# 安装依赖 pip install -r requirements.txt # 拉取模型 ollama pull glm-ocr # 启动服务 python server.py # Windows 一键启动 start.bat3. 验证安装打开浏览器访问 http://localhost:3000，若能看到界面则表示安装成功。# 检查 Ollama 状态 curl http://localhost:11434/api/tags # 检查服务状态 curl http://localhost:3000/api/status三、核心概念1. 基本术语GLM-OCR：智谱 AI 开发的 OCR 模型，用于图像文字识别Ollama：本地化大模型运行平台，提供 GLM-OCR 的推理服务FastAPI：Python Web 框架，用于构建后端 APIPP-DocLayoutV3：PaddlePaddle 的文档版面分析模型SQLite：轻量级数据库，用于持久化存储文档和 OCR 结果版面分析：自动检测文档中的标题、正文、表格、图片等区域2. 工作原理graph LR User[用户] --> FE[前端界面] FE --> API[FastAPI 后端] API --> DB[(SQLite 数据库)] API --> Layout[版面分析模型] API --> Ollama[Ollama OCR 服务] Layout --> API Ollama --> API API --> FE API --> Storage[文件存储]系统采用三层架构设计：前端层：提供三栏式用户界面，负责文件上传、结果显示和用户交互后端层：FastAPI 提供 RESTful API，处理版面分析、OCR 调用和数据持久化服务层：Ollama 提供 OCR 推理服务，PP-DocLayoutV3 提供版面分析能力四、快速上手1. 基本使用流程graph TD A[启动服务] --> B[上传文档] B --> C[自动拆页处理] C --> D[版面分析] D --> E[OCR 识别] E --> F[编辑校对] F --> G[导出文档]2. 上传文档支持以下文件格式：图片：PNG、JPG、GIF、BMP文档：PDF支持多文件混合上传，系统会自动将所有文件合并为一个文档，并按页码顺序排列。3. OCR 识别系统提供两种 OCR 模式：单页识别：对选中的页面进行 OCR批量识别：点击 OCR All Pages 一键处理全部页面识别过程中会显示实时进度条和 ETA 时间估算，用户可以随时点击 Stop 按钮中断处理。4. 编辑与导出识别结果支持：Edit 模式：纯文本编辑，便于手动修正Preview 模式：实时渲染 HTML 表格和 Markdown 格式段落重排：自动合并因换行断开的段落导出格式：Markdown（.md）纯文本（.txt）Word 文档（.…

CLI-Anything：让所有软件成为 AI Agent 原生工具
type: item
date: 2026-03-12T08:18:09+00:00
description: CLI-Anything：让所有软件成为 AI Agent 原生工具一、概述1. 简介A. 是什么CLI-Anything 是一个 Claude Code 插件，能够将任何软件自动转换为 AI Agent 可控制的命令行工具。通过一条命令，它可以为 GIMP、Blender、LibreOffice 等应用生成功能完整的 CLI 接口，让 AI Agent 获得直接控制专业软件的能力。B. 为什么学解决 AI Agent 使用软件难题：当前 AI Agent 虽然推理能力强，但难以使用真实的专业软件统一接口范式：CLI 是 AI Agent 的理想接口，结构化、可组合、自描述自动化生成：无需手动编写代码，自动分析软件架构并生成 CLI生产级质量：1,508 个测试用例验证，覆盖 11 个主流应用C. 学完能做什么为任何软件自动生成 CLI，让 AI Agent 可以控制理解 7 阶段自动化流水线的工作原理部署和使用生成的 CLI 工具通过 refine 命令迭代改进 CLI 覆盖率2. 前置知识A. 必备技能Python 3.10+ 基础基本的命令行操作经验理解 AI Agent 的基本概念B. 推荐知识Click 框架（Python CLI 工具）pytest 测试框架Claude Code 使用经验二、环境准备1. 系统要求Python 3.10 或更高版本目标软件已安装（如 GIMP、Blender 等）Claude Code 或其他支持的 AI 编码代理2. 安装步骤Claude Code 平台安装：# 添加 CLI-Anything 市场 /plugin marketplace add HKUDS/CLI-Anything # 安装插件 /plugin install cli-anything手动安装（可选）：# 克隆仓库 git clone https://github.com/HKUDS/CLI-Anything.git # 复制插件到 Claude Code 插件目录 cp -r CLI-Anything/cli-anything-plugin ~/.claude/plugins/cli-anything # 重新加载插件 /reload-plugins3. 验证安装安装完成后，在 Claude Code 会话中输入：/cli-anything:cli-anything --help三、核心概念1. 基本术语Agent-Native（Agent 原生）：专为 AI Agent 设计的接口，支持结构化输入输出Harness（工具套件）：为特定软件生成的完整 CLI 包REPL（交互式解释器）：命令行交互模式，支持状态持久化7-Phase Pipeline：从分析到发布的自动化流程2. 工作原理CLI-Anything 通过自动化流程分析软件源码，理解其功能架构，然后生成标准的命令行接口。生成的 CLI 直接调用真实软件的后端，确保功能完整性。graph TB A[软件源码/仓库] --> B[分析阶段] B --> C[设计阶段] C --> D[实现阶段] D --> E[测试规划] E --> F[测试编写] F --> G[文档更新] G --> H[发布安装] subgraph 生成产物 I[Click CLI] J[REPL 界面] K[JSON 输出] L[测试套件] end D --> I D --> J D --> K F --> L3. 架构设计graph LR A[AI Agent] -->|命令| B[CLI-Anything 生成的 CLI] B -->|调用| C[真实软件后端] C -->|渲染/处理| D[输出文件] B -->|JSON 输出| A B -->|人类可读| E[终端输出] subgraph CLI-Anything 核心 F[分析引擎] G[代码生成器] H[测试框架] end F --> G G --> H四、快速上手1. Hello World 示例生成第一个 CLI 工具：# 为本地 GIMP 源码生成完整 CLI（所有 7 个阶段） /cli-anything:cli-anything ./gimp2. 核心功能演示# 从 GitHub 仓库生成 /cli-anything:cli-anything https://github.com/blender/blender3. 代码讲解上述命令会自动执行以下流程：第 1 阶段：分析扫描源代码，映射 GUI 操作到 API第 2 阶段：设计架构命令组、状态模型、输出格式第 3 阶段：实现构建 Click CLI，包含 REPL、JSON 输出、撤销/重做功能第 4 阶段：测试规划创建 TEST.md，包含单元测试和端…

jina CLI 工具入门指南
type: item
date: 2026-03-01T14:12:35+00:00
description: jina CLI 工具入门指南一、概述1. 简介A. 是什么jina 是一个轻量级的命令行工具，封装了 Jina AI Reader API，可以将任意 URL 转换为 LLM 友好的输入格式。特别适合阅读 X（Twitter）、博客、新闻网站等复杂网页。B. 为什么学解决网页内容难以被 AI 读取的问题提供统一的网络搜索和内容提取能力支持多种输出格式，便于集成到各类 AI Agent 中C. 学完能做什么使用 jina 读取任意网页内容使用 jina 进行 AI 驱动的网络搜索将 jina 集成到 Claude Code、OpenClaw 等 AI 工具中批量处理 URL 列表，自动化内容采集2. 前置知识A. 必备技能基本命令行操作理解 URL 和 HTTP 请求概念B. 推荐知识使用过 AI 助理或 Claude Code了解 Markdown 格式了解 JSON 数据结构二、环境准备1. 系统要求Linux：主流发行版（Ubuntu、CentOS 等）macOS：10.15 及以上版本Windows：10/11（需 WSL 或使用 Git Bash）对于 OpenClaw 或 Claude Code Skill 方式：需安装对应平台2. 安装步骤jina 提供三种独立的安装方式，根据使用场景选择。方式一：OpenClaw Skill（推荐本地 AI 助理）适用场景：本地 AI 助理、自动化工作流、需要文件系统操作安装步骤：# 创建 jina-cli skill 目录并下载 mkdir -p ~/.openclaw/workspace/skills/jina-cli curl -o ~/.openclaw/workspace/skills/jina-cli/SKILL.md \ https://raw.githubusercontent.com/geekjourneyx/jina-cli/main/skills/jina-cli/SKILL.md验证安装：# 启动 OpenClaw openclaw # 在 OpenClaw 中直接使用 jina 命令 # skill 会自动从 ~/.openclaw/workspace/skills/jina-cli/ 加载方式二：Claude Code Skill（推荐用于 AI 辅助开发）适用场景：在 Claude Code 中使用 AI 协助处理网页内容安装步骤：# 1. 确保已安装 Node.js 和 Claude Code node --version # v18.0.0 或更高版本 # 2. 安装 jina skill npx skills add https://github.com/geekjourneyx/jina-cli --skill jina-cli安装后验证：# 在 Claude Code 中可以直接使用 # 无需额外操作，skill 会自动加载方式三：CLI 二进制文件（推荐用于终端使用）适用场景：在终端/脚本中使用，或与其他工具集成一键安装（Linux/macOS）：curl -fsSL https://raw.githubusercontent.com/geekjourneyx/jina-cli/main/scripts/install.sh | bash安装脚本会自动：检测系统架构（Linux/macOS，amd64/arm64）下载对应平台的二进制文件安装到 ~/.local/bin/jina 或 ~/bin/jina提示如何添加到 PATH（如需要）手动安装：# Linux amd64 wget https://github.com/geekjourneyx/jina-cli/releases/latest/download/jina-linux-amd64 -O jina chmod +x jina sudo mv jina /usr/local/bin/ # macOS ARM64 (Apple Silicon) wget https://github.com/geekjourneyx/jina-cli/releases/latest/download/jina-darwin-arm64 -O jina chmod +x jina sudo mv jina /usr/local/bin/从源码构建：git clone https://github.com/geekjourneyx/jina-cli.git cd jina-cli go build -o jina ./cli sudo mv jina /usr/local/bin/3. 验证安装# 检查是否安装成功 jina --version # 预期输出: jina version 1.0.…