当前位置: 首页 > news >正文

Python自动化交易:Kalshi预测市场API封装与量化策略实践

1. 项目概述:一个为Kalshi预测市场打造的自动化工具箱

如果你对预测市场感兴趣,或者正在寻找一种程序化的方式来管理你在Kalshi平台上的交易活动,那么你可能会对这个名为kalshi-skill的项目产生共鸣。简单来说,这是一个基于Python的工具包,它通过封装Kalshi的官方API,为你提供了一个可以直接在命令行或你自己的Python脚本中调用的“瑞士军刀”。它的核心价值在于,将原本需要通过网页浏览器手动点击、查看的繁琐操作——比如查询账户余额、查看持仓、获取市场数据、甚至下单交易——全部变成了可以自动化执行的代码指令。

这个项目特别适合两类人:一是希望将Kalshi数据集成到自己量化分析模型中的开发者或研究员;二是那些厌倦了重复性手动操作,希望通过编写简单规则来实现半自动或全自动交易策略的活跃交易者。它就像一个桥梁,一头连接着Kalshi丰富的预测市场数据流和交易接口,另一头连接着你自定义的交易逻辑和自动化工作流。通过它,你可以轻松地“问”你的账户现在有多少钱,“看”市场上正在发生什么,并基于预设的规则“做”出反应。

2. 核心设计思路:为什么选择API封装与技能化架构

2.1 从手动到自动:解决的核心痛点

在深入代码之前,我们先聊聊为什么需要这样一个工具。预测市场,尤其是像Kalshi这样涵盖政治、经济、金融事件的平台,其数据变化快、机会窗口短。纯粹依靠人工盯盘,不仅效率低下,而且容易受情绪影响。kalshi-skill的设计初衷,就是将交易员从重复的、机械的查询和监控工作中解放出来。它把“获取市场列表”、“查询特定合约细节”、“检查账户状态”这些高频操作标准化、函数化,让你可以专注于策略逻辑本身,而不是如何与API“握手”。

2.2 技术栈选型:Python、uv与Openclaw的黄金组合

项目的技术选型非常务实,体现了现代Python开发的几个最佳实践:

  1. Python作为核心语言:这是金融科技和量化分析领域的“通用语”。其丰富的库生态(如pandas用于数据分析,requests用于HTTP通信)和易读性,使得快速开发和迭代策略成为可能。项目底层依赖的pykalshi库,就是一个社区维护的Kalshi API Python客户端,kalshi-skill在此基础上进行了更高层次的业务封装。
  2. uv作为依赖管理与运行时:这是一个新兴但势头迅猛的Python包管理器和安装器。相比传统的pipvenvuv在速度上有数量级的提升,并且统一了虚拟环境创建、依赖安装和脚本运行。项目采用uv,意味着你可以在几秒钟内完成从零到可运行的环境搭建,极大地降低了上手门槛和协作成本。
  3. Openclaw作为技能化框架(可选):这是项目名称中“skill”的由来。Openclaw是一个用于构建和编排自动化“技能”(即可以执行特定任务的代码模块)的框架。将kalshi-skill注册为Openclaw的一个技能后,你可以通过自然语言指令(例如:“检查我的Kalshi余额”)来触发相应的操作。这为不熟悉编程的用户提供了一个非常友好的交互界面,同时也为构建更复杂的、多技能协作的自动化智能体奠定了基础。

注意:虽然项目提到了Openclaw集成,但这部分功能是可选的。即使你不使用Openclaw,这个项目的核心——KalshiMarketClient类和命令行工具——依然完全独立可用,价值丝毫不减。

2.3 架构分层:清晰的职责分离

浏览项目代码,你会发现其结构清晰:

  • 底层API通信层:由pykalshi库负责,处理与Kalshi服务器之间的HTTPS请求、认证签名、错误重试等脏活累活。
  • 核心业务逻辑层:即kalshi-skill本身。它封装了常见的业务操作,如“获取我的持仓”、“列出所有市场”,提供了更友好、更面向业务的函数接口。
  • 交互接口层:提供了两种方式。一是面向开发者的Python类(KalshiMarketClient),可以直接导入到你的策略脚本中;二是面向终端用户的命令行界面(CLI),通过简单的命令执行常见任务。
  • 技能集成层(可选):通过适配Openclaw的规范,将上述功能包装成一个可以被AI智能体调用的“技能”。

这种分层设计使得项目易于维护和扩展。如果你想增加一个新功能(比如“自动计算所有持仓的总风险暴露”),你只需要在业务逻辑层添加相应的方法,CLI和技能接口可以很轻松地跟进。

3. 从零开始:环境配置与项目初始化实操

3.1 前置条件与密钥准备

在运行任何代码之前,你需要准备好进入Kalshi API世界的“门票”——API密钥。

  1. 获取Kalshi API凭证:登录你的Kalshi账户,进入设置或开发者页面,申请API密钥。通常你会得到两样东西:
    • API Key ID:一个字符串,类似于你的用户名。
    • Private Key:一个PEM格式的私钥文件(通常以.key.pem结尾)。这是最高机密,绝不能泄露或提交到代码仓库。
  2. 克隆项目代码
    git clone https://github.com/cbonoz/kalshi-skill.git cd kalshi-skill

3.2 依赖安装与虚拟环境管理

项目使用uv,因此我们首先确保系统已安装uv。如果没有,可以通过包管理器(如Homebrew)或官方脚本快速安装。

# 例如,使用curl安装uv(请始终从官方渠道获取安装命令) curl -LsSf https://astral.sh/uv/install.sh | sh

安装后,使用uv sync命令是核心。这个命令会读取项目根目录下的pyproject.toml文件,自动创建虚拟环境并安装所有列出的依赖。

uv sync

这个过程通常非常快。完成后,你的项目目录下会生成一个.venv目录,所有依赖都被隔离安装在其中。你可以通过uv run python_script.py来在虚拟环境中运行脚本,或者先激活虚拟环境source .venv/bin/activate

3.3 关键一步:安全配置环境变量

为了避免将敏感信息硬编码在代码里,项目使用.env文件来管理配置。这是安全开发的基本要求。

  1. 在项目根目录下创建一个名为.env的文件。
  2. 将你的Kalshi API凭证填入,格式如下:
    KALSHI_API_KEY_ID=your_api_key_id_here KALSHI_PRIVATE_KEY_PATH=/absolute/or/relative/path/to/your/private.key
    关于私钥路径的实操心得
    • 绝对路径:如/Users/yourname/keys/kalshi_private.key。优点是明确,缺点是不便于在不同机器间迁移项目。
    • 相对路径:如./secrets/private.key。你需要把私钥文件放在项目目录下的secrets文件夹内。务必确保secrets文件夹被添加到.gitignore文件中,防止误提交!
    • 我个人的习惯是在项目根目录下创建一个secrets目录,将私钥放进去,然后在.env中使用相对路径KALSHI_PRIVATE_KEY_PATH=./secrets/kalshi.key。同时,在.gitignore中添加secrets/.env这两行。

重要提示.env文件也必须被加入.gitignore。永远不要将包含真实密钥的配置文件提交到版本控制系统。你可以提交一个.env.example文件作为模板,供其他协作者参考。

4. 核心功能深度解析与命令行工具使用

完成配置后,你就可以通过项目提供的CLI工具来探索所有功能了。CLI是快速测试API连通性和熟悉功能的最佳方式。

4.1 账户与资金管理

这是最基本也是最关键的功能,确保你的程序能够“认识”你的账户。

  • 查询余额

    uv run kalshi_cli.py balance

    这条命令会调用API,返回你的账户总余额、可用余额(可用于下单)和冻结余额(已被挂单占用)。在编写任何自动交易逻辑前,首先检查余额是必须的,可以避免因资金不足导致的订单失败。

  • 查看持仓

    uv run kalshi_cli.py positions

    这会列出你当前在所有市场上持有的头寸。输出通常会包括市场代码、你持有的“是”或“否”合约的数量、平均成本价以及当前市值。对于风险控制来说,定期(例如每小时)通过脚本自动拉取并记录持仓快照,是监控整体风险暴露的好习惯。

  • 查看挂单

    uv run kalshi_cli.py orders

    列出所有尚未成交的限价单。你可以看到订单ID、市场、方向(买/卖)、价格、数量等信息。在自动化策略中,你可能需要根据市场变化来撤销或修改这些挂单。

4.2 市场数据获取与分析

数据是决策的基础。CLI提供了灵活的方式来获取市场信息。

  • 获取单个市场详情

    uv run kalshi_cli.py market KXBTCMAXMON-BTC-26APR30-7750000

    你需要将KXBTCMAXMON-BTC-26APR30-7750000替换为具体的市场代码(ticker)。这条命令会返回该市场的详细信息,包括:

    • 问题描述(例如:“比特币在2024年4月30日会达到77500美元吗?”)
    • “是”和“否”合约的最新报价(买入价/卖出价)
    • 24小时交易量
    • 市场状态(开盘、关闭、结算中)
    • 结算日期和规则在自动化策略中,获取单个市场的深度数据通常是触发交易信号的第一步。
  • 批量获取市场列表

    # 获取前5个市场 uv run kalshi_cli.py markets --limit 5 # 获取与“比特币”相关的市场 uv run kalshi_cli.py markets --search bitcoin

    默认情况下,markets命令会返回活跃的市场列表。--limit参数控制返回数量,--search参数可以进行关键词过滤。对于数据分析,你可能需要一次性拉取大量市场数据。这时要注意API的速率限制,并考虑实现分页拉取和本地缓存机制。

4.3 在Python脚本中直接使用客户端

CLI适合交互和测试,但真正的自动化力量在于将功能集成到你自己的Python代码中。项目核心是KalshiMarketClient类。

下面是一个简单的示例脚本my_strategy.py

#!/usr/bin/env python3 import asyncio import os from dotenv import load_dotenv # 假设kalshi_skill模块已被正确安装或位于路径中 from kalshi_skill.kalshi_market_client import KalshiMarketClient # 加载.env文件中的环境变量 load_dotenv() async def main(): # 1. 初始化客户端 client = KalshiMarketClient( api_key_id=os.getenv('KALSHI_API_KEY_ID'), private_key_path=os.getenv('KALSHI_PRIVATE_KEY_PATH') ) # 2. 获取账户信息 balance = await client.get_balance() print(f"账户总余额: ${balance['balance']/100:.2f}") # Kalshi API通常以美分为单位 print(f"可用余额: ${balance['available_balance']/100:.2f}") # 3. 搜索感兴趣的市场 btc_markets = await client.get_markets(search='bitcoin', limit=10) for market in btc_markets['markets']: ticker = market['ticker'] title = market['title'] yes_bid = market.get('yes_bid', 0) # 获取“是”合约的当前买价 yes_ask = market.get('yes_ask', 0) # 获取“是”合约的当前卖价 print(f"{ticker}: {title} - 是合约报价: {yes_bid}-{yes_ask}") # 4. 简单的策略逻辑示例:如果“是”合约买价低于某个阈值,考虑买入 if yes_bid > 0 and yes_bid < 30: # 假设阈值是30美分 print(f" -> 检测到低价机会 ({yes_bid}),可以考虑买入。") # 这里可以添加下单逻辑 await client.create_order(...) # 5. 检查现有持仓 positions = await client.get_positions() if positions: print("\n当前持仓:") for pos in positions: print(f" - {pos['market_ticker']}: {pos['position']} 份") if __name__ == "__main__": asyncio.run(main())

使用uv run my_strategy.py来运行这个脚本。这个例子展示了如何连接账户、获取数据并实施一个最简单的策略逻辑框架。

实操心得:异步(async/await)编程:Kalshi API客户端大量使用了Python的异步IO。这意味着你需要使用asyncio.run()来运行主函数,并且在所有调用API的地方使用await。对于不熟悉异步编程的开发者,这是一个需要适应的点,但它能显著提升在IO密集型任务(如网络请求)中的性能。

5. 进阶应用:构建自动化交易策略的要点

kalshi-skill用作策略执行引擎时,有几个关键环节需要仔细设计。

5.1 策略逻辑与信号生成

kalshi-skill负责执行,但不负责决策。你需要另写代码来生成交易信号。这可以非常简单,比如基于固定规则:

# 伪代码示例 def generate_signal(market_data): if market_data['yes_bid'] < 25 and market_data['volume'] > 10000: return 'BUY_YES' elif market_data['yes_ask'] > 75 and market_data['volume'] > 10000: return 'SELL_YES' # 或 BUY_NO else: return 'HOLD'

也可以非常复杂,接入机器学习模型、新闻情绪分析等。一个重要的原则是:将策略逻辑与执行逻辑分离。这样便于单独回测策略,也便于更换不同的执行经纪商(虽然这里特指Kalshi)。

5.2 订单管理与风险控制

这是自动化交易中最容易出问题的部分。

  • 订单类型:Kalshi主要支持限价单。你的策略需要决定以什么价格挂单。是直接以当前买一/卖一价下单追求即时成交,还是挂一个更优的价格等待成交?
  • 仓位管理:单次下单数量是多少?是固定数量(如10份合约),还是根据账户余额的百分比?总仓位在所有市场上是否有上限?务必在策略中实现硬性的仓位和亏损限额,防止单一判断失误导致重大损失。
  • 订单生命周期管理:挂单后不是一劳永逸。你需要定期检查订单状态(是否部分成交、完全成交、被取消)。对于未成交的订单,是否在价格变动后需要撤单重挂?这部分逻辑需要仔细设计。

5.3 错误处理与日志记录

网络会波动,API会有速率限制,市场状态会突然改变。一个健壮的自动化系统必须能妥善处理错误。

  • 重试机制:对于暂时的网络错误(如超时、5xx服务器错误),应该实现指数退避重试。
  • 业务错误处理:API返回“资金不足”、“市场已关闭”、“价格无效”等错误时,程序应该能捕获这些异常,记录到日志,并安全地停止相关交易流程,而不是崩溃。
  • 详尽的日志:记录每一次API调用、每一个决策信号、每一笔订单的创建和状态变化。日志应包含时间戳、市场、操作、结果和关键参数。这不仅是调试的依据,也是事后进行策略分析和合规检查的必需品。建议使用Python的logging模块,并配置将日志输出到文件。

6. 集成Openclaw:迈向自然语言交互

如果你希望以更自然的方式与你的Kalshi账户交互,或者想把这个功能嵌入一个更大的自动化工作流中,集成Openclaw是一个有趣的方向。

6.1 Openclaw技能注册原理

Openclaw期望“技能”以特定的方式暴露其能力。通常,你需要:

  1. 在技能代码中定义一个清单(manifest),描述这个技能能做什么(例如:“get_balance”, “list_markets”)。
  2. 为每个能力编写一个执行函数。
  3. 提供一个标准的接口(如HTTP端点或特定的类方法),供Openclaw核心调用。

kalshi-skill项目已经做好了这部分适配。按照其文档说明,你需要将项目文件夹放入Openclaw的workspace/skills/目录下,并确保.env配置正确。

6.2 通过自然语言指令操作

注册成功后,你就可以在Openclaw的对话界面中(可能是命令行,也可能是Web界面)使用类似以下的指令:

  • “检查我的Kalshi余额。”
  • “我有哪些持仓?”
  • “找找看和比特币相关的市场。”
  • “在‘BTC-30APR-80000’这个市场上,以50美分的价格买入10份‘是’合约。”

Openclaw的AI核心会理解你的自然语言,将其映射到kalshi-skill提供的具体函数上,并执行它。这极大地扩展了工具的可用性,让不具备编程知识的用户也能通过对话进行复杂的查询和操作。

个人体会:Openclaw集成更像是一个“锦上添花”的功能。对于严肃的量化交易者,他们可能更倾向于使用精确的Python脚本。但对于管理多个账户、偶尔需要查询的普通用户,或者作为更复杂AI金融助理的一部分,这个功能非常酷。在集成过程中,最大的挑战是确保自然语言解析的准确性,避免歧义导致错误操作。

7. 常见问题与故障排查实录

在实际使用中,你几乎一定会遇到下面这些问题。这里记录了我的踩坑经验和解决方案。

7.1 环境与依赖问题

问题:uv sync失败,提示找不到版本或网络错误。

  • 排查:首先检查网络连接。其次,确认你的Python版本符合项目要求(查看pyproject.toml中的requires-python)。uv有时对国内网络环境不太友好,可以尝试设置PyPI镜像源:uv pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
  • 解决:如果问题持续,可以尝试回退到传统的pip方式:python -m venv .venv && source .venv/bin/activate && pip install -e .

问题:运行脚本时提示ModuleNotFoundError: No module named 'kalshi_skill'

  • 排查:这说明包没有正确安装到当前Python环境。
  • 解决:确保你使用了uv run前缀,或者已经通过source .venv/bin/activate激活了由uv sync创建的虚拟环境。在虚拟环境中,尝试运行pip list查看kalshi-skill包是否存在。

7.2 API认证与连接问题

问题:401 Unauthorized403 Forbidden错误。

  • 排查:这是最常见的错误,几乎总是凭证问题。
    1. 检查.env文件中的KALSHI_API_KEY_IDKALSHI_PRIVATE_KEY_PATH值是否正确,尤其是私钥路径,是绝对路径还是相对路径?相对路径是相对于你运行命令的目录,还是脚本所在的目录?最佳实践是使用绝对路径,或者在代码中先将相对路径转换为绝对路径。
    2. 检查私钥文件内容是否正确。可以用文本编辑器打开,确保它是有效的PEM格式(以-----BEGIN PRIVATE KEY-----开头)。
    3. 确认你的Kalshi API密钥在平台上是否处于启用状态,以及是否有IP白名单限制(如果有,需要将你运行脚本的服务器的IP地址加入白名单)。
  • 解决:仔细核对上述每一步。可以在一个简单的测试脚本中先打印出加载的环境变量和私钥文件的前几行,以确保它们被正确读取。

问题:429 Too Many Requests错误。

  • 排查:触发了Kalshi API的速率限制。
  • 解决:Kalshi API对请求频率有严格限制。在你的代码中必须加入延迟。一个简单的防抖策略是:在连续的API调用之间,使用asyncio.sleep()time.sleep()添加一个随机间隔(例如0.5到2秒)。对于需要批量拉取数据的场景,尽量利用API提供的过滤和分页参数,减少不必要的请求。

7.3 交易与订单问题

问题:下单失败,提示“Invalid price”或“Market not open”。

  • 排查:订单参数不合法或市场状态不允许交易。
    1. 价格:Kalshi的价格是1-99美分,代表事件发生的概率(百分比)。确保你的价格是整数,并且在买卖价差范围内。一个技巧是,如果你想立即买入,可以用当前的yes_ask价格;想立即卖出,用当前的yes_bid价格。
    2. 数量:必须是整数。
    3. 市场状态:下单前,务必通过get_market接口检查市场的status字段。只有状态为open的市场才能交易。
  • 解决:在策略代码中加入参数校验和市场状态检查逻辑,避免无效请求。

问题:订单部分成交后,剩余部分如何处理?

  • 排查:这是策略逻辑需要处理的情况。
  • 解决:当你通过get_orders或特定订单查询接口发现订单处于“部分成交”状态时,你的策略需要决定:是继续等待剩余部分成交,还是撤销剩余部分以释放资金,或者修改剩余订单的价格以适应新的市场情况。这完全取决于你的交易策略。

7.4 网络与稳定性问题

问题:脚本运行一段时间后突然失去响应或抛出连接错误。

  • 排查:可能是长时间运行导致的资源泄漏、网络不稳定或API服务端临时问题。
  • 解决
    1. 实现重试机制:使用tenacitybackoff库为你的API调用函数添加装饰器,使其在遇到连接超时等临时性错误时自动重试。
    2. 添加心跳和监控:对于长期运行的守护进程式脚本,可以定期(如每10分钟)执行一次简单的get_balance操作,作为“心跳”来检测API连通性。同时,将脚本的运行状态和错误信息记录到外部监控系统(如Sent文件、数据库或监控平台)。
    3. 考虑使用消息队列:对于更复杂的系统,可以将信号生成和订单执行解耦。信号生成器将交易指令放入一个消息队列(如Redis),而一个独立的、更稳定的订单执行服务从队列中读取指令并执行。这样即使执行服务崩溃,信号不会丢失,重启后可以继续处理。

将上述问题与解决方案汇总,可以形成以下速查表:

问题现象可能原因排查步骤解决方案
模块导入失败虚拟环境未激活或包未安装检查是否使用uv run或已激活.venv;运行pip list使用uv sync重装;或手动pip install -e .
401/403错误API凭证错误检查.env文件变量名和值;检查私钥文件路径和内容;检查API密钥状态修正环境变量;使用绝对路径;在Kalshi平台验证密钥
429错误请求频率过高检查代码中是否有高频循环调用API在API调用间添加延迟(如time.sleep(1)
下单失败(价格无效)订单参数不合法检查价格是否为1-99整数;检查是否在买卖价差内market数据中获取当前yes_askyes_bid作为参考价
下单失败(市场未开盘)市场状态不允许交易下单前调用get_market检查status字段仅在status"open"时下单
网络连接超时网络不稳定或服务端问题检查本地网络;查看Kalshi服务状态页面(如有)实现指数退避重试逻辑;捕获异常并记录日志
脚本内存持续增长资源泄漏检查是否有未释放的响应对象或大列表累积确保及时关闭响应;定期清理缓存数据;考虑分批次处理数据

最后,我想分享一点在金融API自动化领域通用的心得:敬畏市场,谨慎自动化kalshi-skill是一个非常强大的工具,它赋予了你快速行动的能力。但能力越大,责任越大。在将任何策略投入真金白银的全自动交易之前,请务必:

  1. 进行充分的回测和历史数据模拟
  2. 在模拟账户或极小资金账户上运行足够长的时间,观察其在各种市场情况下的表现。
  3. 设置严格的“熔断”机制。例如,当日亏损达到账户资金的X%时,自动停止所有交易并发送警报。
  4. 永远保持监控。不要设置完脚本就完全不管。定期检查日志,关注市场异常事件。

这个项目是一个绝佳的起点,它帮你处理好了所有与API交互的底层细节。而你,作为策略的制定者,需要将智慧、纪律和风险控制注入其中,才能让它真正为你创造价值。

http://www.jsqmd.com/news/805942/

相关文章:

  • 避坑指南:RISC-V GCC编译配置中的那些‘坑’——调试信息过大、链接失败怎么破?
  • PUBG罗技鼠标宏终极指南:如何实现完美压枪控制
  • 西安老酒回收定价逻辑与鉴定技术解析:西安名酒回收/西安收老酒/西安烟酒回收/西安老五粮液回收/西安老茅台回收/西安老西凤酒回收/选择指南 - 优质品牌商家
  • 3dmax动画期末作业全流程分享(附技术细节+避坑指南)
  • 主模型不可用时能自动切?API 网关failover 机制实测
  • 深度解析开源项目:Cursor Pro破解工具技术架构与实战应用完整指南
  • 2026实测|OpenClaw(小龙虾)Windows一键部署教程,五分钟本地搭建多模型智能体
  • 用100道题拿下你的算法面试(链表篇-7):复制带随机指针的链表
  • NotebookLM未公开的Obsidian插件桥接协议(内部文档泄露版),仅限前500名技术决策者获取
  • 5分钟快速上手D3KeyHelper:暗黑3鼠标宏工具终极配置教程
  • Elasticsearch与Gemini大模型集成:自然语言查询与智能数据洞察实践
  • 2026中小企业OA软件排行榜TOP10(精简版)
  • 最小扩张三角剖分:算法优化与计算几何实践
  • 终极UE4SS游戏Mod开发指南:从零开始掌握虚幻引擎脚本系统
  • Go语言构建高效命令行工具集:从设计到工程化实践
  • Cursor AI 使用限制突破:设备标识重置与多账户管理的技术实现
  • 数字记忆保险箱:用WeChatExporter永久保存微信聊天记录
  • 前端代码部署到centos7 服务器上
  • 半导体并购潮与IP商业模式演进:从单点IP到系统级平台化方案
  • LangChain集成MCP协议:构建模块化AI应用的新范式
  • React实战:从零构建Airbnb风格前端应用的技术架构与实现
  • windows构建mamba环境
  • 从零解析BraTs:Python实战.nii多模态MRI数据加载与可视化
  • JPlag代码抄袭检测:你的学术诚信守护神
  • WAS Node Suite高性能图像批处理架构设计与状态管理优化策略深度解析
  • 2026杭州商用空调清洗专业指南:杭州工厂保洁/杭州店铺保洁/杭州消毒杀菌/杭州高空外墙清洗/杭州上门保洁/杭州中央空调消毒/选择指南 - 优质品牌商家
  • 算法对比别再只看Friedman检验了:聊聊Nemenyi和Bonferroni-Dunn的‘悖论’与实战避坑
  • Midjourney 2026将取消/imagine?不,它正悄悄部署「自然语言-图像-3D资产」三合一原生工作流(附实测对比数据)
  • 云原生监控一体化实践:从零部署mco实现指标、日志、追踪统一管理
  • WeChatExporter:微信聊天记录永久备份的终极解决方案