7 月 Rust AI CLI 开发全记录:310 篇文章背后的一条主线和三条支线的总结

<数据集>咖啡叶片病害识别<目标检测> YOLO与VOC格式的咖啡叶片病害识别数据集,适用于YOLO系列、Faster Rcnn、SSD等模型训练,类别:Cercospora、Miner、Phoma、Rust,图片数量1744。文件中包含图片、txt标签、指定类别信息的yaml文件、xml标签,已将图片和txt标签划分为训练集、验证集和测试集,可直接用于YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11、YOLOv12、YOLOv13、YOLOv26等YOLO系列算法的训练。 阅读详情

7 月 Rust AI CLI 开发全记录:310 篇文章背后的一条主线和三条支线的总结

一、310 篇文章的起点:一个失眠夜晚的决定

6 月 30 日晚上,我躺在床上刷手机,看到一篇文章说"AI 编程已经让入门门槛降低了 90%"。我突然想到一个问题:如果 AI 真的降低了门槛,那为什么我在 dayuan 项目里写的几百行 prompt 构建代码,反而让我觉得比手写逻辑更复杂?

那天晚上我做了两个决定。第一,从 7 月 1 日开始每天写一篇技术文章,把 dayuan 开发过程中的每一个决策、每一次失败、每一次"原来如此"都记录下来。第二,用这 31 天做一个实验:AI 到底在 Rust 开发的什么阶段最有用?

这个决定后来演变成了 310 篇文章——不是 31 篇,而是 31 天每天 10 篇。每天早上 5 点起床,写到中午 12 点。晚上 coding 到凌晨,复盘当天的代码,准备第二天的素材。

今天这篇是月度终章的第一篇。我想把这条主线拉出来——AI CLI 工具开发——再梳理出三条支线:AI 辅助开发、Rust 系统编程、WASM/WASI 工程化。这四条线构成了我 7 月的全部技术生活。

二、一条主线和三条支线的全景

三、主线复盘:AI CLI 工具开发的底层逻辑

超越"命令行包装器"

dayuan 项目的本质不是把 OpenAI 的 API 封装成一个命令行工具。如果只是做这件事,Python 一行 subprocess.run(["curl", ...]) 比 Rust 快十倍。

dayuan 解决的核心问题是:如何让 AI CLI 工具理解你的整个项目上下文,而不只是当前文件?

/// 上下文管理器:不只是收集文件,而是构建关系图谱
pub struct ContextManager {
    /// 项目根目录
    root: PathBuf,
    /// 文件索引图:文件路径 → 它引用的依赖列表
    dependency_graph: HashMap<PathBuf, Vec<PathBuf>>,
    /// 符号表:函数/类型定义 → 位置
    symbol_index: HashMap<String, Vec<SourceLocation>>,
}

impl ContextManager {
    /// 构建项目上下文:收集当前修改相关文件的全链路
    pub fn build_context(&self, changed_file: &Path) -> ContextResult {
        // ① 从变更文件出发,沿依赖图向上追溯
        let upstream = self.trace_upstream(changed_file);
        
        // ② 再向下追溯:变更影响的文件
        let downstream = self.trace_downstream(changed_file);
        
        // ③ 合并:形成一个"变更影响域"的文件集合
        let relevant_files: HashSet<_> = upstream
            .into_iter()
            .chain(downstream)
            .collect();
        
        // ④ 只把影响域内的文件内容发给 AI,而不是整个项目
        ContextResult {
            files: relevant_files,
            total_tokens: self.estimate_total_tokens(&relevant_files),
        }
    }
}

这个设计的核心思想是:AI 不需要看整个代码库,它只需要看你的变更可能影响的那些代码。 这比简单地把整个目录 dump 进 prompt 节省了 60%~80% 的 token 消耗。

三条核心设计原则的演进

7 月的 31 天里,dayuan 的三条核心设计原则经历了四次迭代:

版本日期核心变化教训
v0.17月1日单一 prompt,硬编码最简单但最脆弱
v0.27月8日角色系统 + 工具链过度抽象,15 个 trait
v0.37月17日重构回 3 个核心 traitRule of Three 的胜利
v0.47月28日MCP 协议集成 + 流式输出插件化 ≠ 过度设计

最大的教训:7 月 8 日到 17 日的"过度抽象期"浪费了 9 天时间。15 个 trait object 的动态分发比具体类型调用慢了近 8 倍。当我把代码从 4200 行瘦身到 1800 行后,性能反而提升了。这让我深刻理解了一句老话:"过早优化是万恶之源"的另一面是"过早抽象也是万恶之源"。

四、三条支线的交叉验证

支线一:AI 辅助开发 —— 哪里最有用?

经过 31 天的实验,我发现 AI 在 Rust 开发中有三个"高 ROI 区域"和三个"低 ROI 区域":

高 ROI(值得全力投入 AI):

  1. 文档/注释生成:30 秒生成一段标准化的 doc comment,节省 80% 时间
  2. 错误信息解读:把 E0597: borrowed value does not live long enough 翻译成人话
  3. 测试用例生成:给定函数签名和行为规范,生成边界测试

低 ROI(AI 对 Rust 不够好):

  1. 生命周期标注:AI 经常标错,而错误的标注比不标更危险
  2. unsafe 代码块:AI 无法理解 unsafe 的正确性前提
  3. 宏编写:declarative macro 的展开逻辑 AI 基本不能正确推理
/// 高 ROI 示例:用 AI 生成测试用例模板
/// AI 输入:"为这个函数生成测试:给定有序数组,返回目标值的索引或 None"
/// AI 输出如下(经过人工审查和微调):
#[cfg(test)]
mod tests {
    use super::*;
    
    #[test]
    fn test_binary_search_found_first() {
        let arr = vec![1, 3, 5, 7, 9];
        assert_eq!(binary_search(&arr, 1), Some(0)); // 首元素
    }
    
    #[test]
    fn test_binary_search_found_middle() {
        let arr = vec![1, 3, 5, 7, 9];
        assert_eq!(binary_search(&arr, 5), Some(2)); // 中间元素
    }
    
    #[test]
    fn test_binary_search_not_found() {
        let arr = vec![1, 3, 5, 7, 9];
        assert_eq!(binary_search(&arr, 6), None); // 不存在
    }
    
    #[test]
    fn test_binary_search_empty_array() {
        let arr: Vec<i32> = vec![];
        assert_eq!(binary_search(&arr, 1), None); // 空数组边界情况
    }
    
    #[test]
    fn test_binary_search_duplicate_first_occurrence() {
        let arr = vec![1, 2, 2, 2, 3];
        // 有重复元素时,返回任意匹配位置(这里是我们自己的语义约定)
        let result = binary_search(&arr, 2);
        assert!(result.is_some()); // 只要找到了就行
    }
}

支线二:Rust 系统编程 —— 从"能用"到"用对"

7 月份我在 Rust 方面最大的进步不是学会了什么新概念,而是理解了什么时候不该用某些概念。比如:

  • 不是所有地方都需要 Arc<Mutex<T>>——80% 的场景用消息传递(channel)更合适
  • 不是所有 trait 都需要 #[async_trait]——如果只有一个实现,用具体类型
  • 不是所有错误都需要自定义 Error 类型——anyhow::Result 在 binary crate 里完全够用

支线三:WASM/WASI —— 从浏览器到系统编程

WASM 这条线是我 7 月投入最多、收获也最多的一条。从 wasm-pack 编译 Rust 到浏览器端推理,再到 WASI 预览版 2 的系统接口探索,我搭建了一个从编译到运行时的完整知识体系。

最重要的认知是:WASM 不是 JavaScript 的替代品,而是浏览器和系统编程之间的桥梁。 当你用 Rust 写逻辑、编译到 WASM、在浏览器里运行时,你获得的是一个"零运行时开销的沙箱化执行环境"。

五、总结

七月的 310 篇文章,表面上是我在"输出",本质上是我在"输入"——输入的是对 AI CLI 工具开发的深层理解,输入的是 Rust 系统编程的实践经验,输入的是 WASM 生态的工程化认知。

如果说有一条贯穿始终的感悟,那就是:自学出身不是劣势,而是给了你一个"无知者无畏"的视角。 你不会被"这不可能"的思维定势束缚,你会去尝试那些科班生觉得"不科学"的方案——然后有些方案真的有效。

八月份我计划把 dayuan 正式发布到 crates.io,并开始探索 WASI 在 Serverless 场景下的应用。这篇文章是这个系列的第一篇,下午我还会分享 Rust 核心概念的月度图谱。

保持 coding,保持复盘。我们第二篇见。


这个月我写了 310 篇文章,其中 31 篇是每日的 10 篇连发。如果你也在用 Rust 做 AI 工具,欢迎在评论区交流你的踩坑经历。

资料说明

本文中的协议、版本、性能、成本和行业趋势应以可核验的一手资料为准。未标注统计口径的比例、时间表和预测仅作工程讨论,不应视为行业事实。可参考 0731 资料来源索引,并在发布前将具体来源贴到对应断言之后。

基于CANopenNode协议栈在正点原子探索者开发板上进行移植 配置好之后进行采用keil IDE进行代码生成即可,还需要进行CANopenNode的代码集成,并参照demo进行代码移植。发送完成后心跳包以1s的周期重新开始发送。正点原子的开发板引出的是CAN1接口。这里的心跳时间间隔设置为100ms。则将心跳包周期设置为0。 阅读详情

相关推荐

星宸科技SSD20x/SSD21X应用层DEMO实战指南:从入门到深度定制

本文详细介绍了星宸科技SSD20x/SSD21X系列芯片的应用层DEMO开发实战,从基础环境搭建到深度定制开发。内容涵盖DEMO资源获取、核心功能实现、第三方库集成以及性能优化技巧,帮助开发者快速掌握智能显示和多媒体处理应用的开发方法。特别适合嵌入式开发者在智能家居、工业控制等场景中应用。

weixin_42524226的博客 267

组网第63课:安全域划分——Trust/Untrust/DMZ、区域模型、与 VLAN 的关系

一组接口 + 一组策略 + 一条默认拒绝。一组接口:这个域包含哪些物理口、VLAN、子接口;一组策略:这个域到别的域放行什么、拒绝什么;一条默认拒绝:没写进策略的,一律不通。第三条最关键。没有默认拒绝,前面划的域全是装饰。

qq_36765170的博客 510

告别谷歌翻译失效!手把手教你用Immersive Translate插件实现双语网页阅读(附Chrome/Edge/Firefox保姆级配置)

本文详细介绍了如何使用Immersive Translate插件实现双语网页阅读,解决谷歌翻译失效的问题。通过Chrome、Edge和Firefox的保姆级配置指南,帮助用户轻松安装和使用这款支持双语对照、智能识别网页内容的翻译插件,提升外文资料阅读效率。

weixin_28683689的博客 486

GitHub 热榜项目:日榜(2026-11-06)

给编码智能体补工程与产品技能是本期最明显的一类,mattpocock/skills 把需求对齐、TDD、缺陷诊断做成小技能。NVIDIA/auto-ontology 从企业元数据生成本体、构建知识图谱,为 LLM 提供带来源追溯的自然语言查询和 SQL 生成,新增 2,679 星;vercel-labs/agent-desktop 通过桌面无障碍树把界面元素转成 JSON 和可操作 ref,让智能体不必截图就能点击输入,新增 2,173 星。

u130130的博客 457

Mac新手必看:nvm安装全攻略(含常见错误解决方案)

本文为Mac开发者提供nvm安装与使用全攻略,涵盖环境准备、安装步骤、Shell配置优化及常见错误解决方案。详细讲解如何利用nvm管理多Node版本,提升开发效率,特别针对国内用户提供网络问题解决技巧,是Mac新手必备的Node版本管理指南。

weixin_28839699的博客 1609

用Python玩转共现分析:从NLTK到热力图可视化(附完整代码)

本文详细介绍了如何使用Python进行文本共现分析,从NLTK基础文本处理到构建共现矩阵,并实现热力图可视化。通过完整的代码示例,帮助数据分析师和开发者掌握这一揭示词语间关联网络的实用NLP技术,快速从文本中提取语义关系和主题结构。

weixin_29313817的博客 349

GitHub 热榜项目:日榜(2026-11-07)

给编码智能体配技能的项目最热:cloudflare/security-audit-skill 把审计拆成六阶段并输出可验证 JSON,新增 2,548 星;mattpocock/skills 把工程技能放进 .agents 目录,新增 2,070 星。Web 应用框架也有四个项目集中上榜,以 react/react 为代表。

u130130的博客 387

02-基于ART-PI开发板创建USB CDC 虚拟串口设备

本例在ART-PI开发板上,基于RT-Thread 5.0,5虚拟了一个USB32 CDC串口设备。

arm_fan的专栏 1886

GitHub 热榜项目:日榜(2026-11-10)

本期共 11 个热门开源项目,合计新增 13,136 stars。榜单前三分别是 Anthropic 的 Agent Skills 仓库、Meta 开源的 React 设计系统 Astryx(+3,278)和用户名检索工具 sherlock(+4,267,本期涨星最多)。其余项目覆盖 DeepMind 的物理引擎 MuJoCo、Claude 官方示例集、自托管智能体记忆系统 GBrain、用 Rust 写的浏览器自动化 CLI、基于 WiFi 信号的人体感知平台 RuView、多市场股票分析工具,以及 Ho

u130130的博客 370

UART全功能测试指南:环路/DMA/RS485/硬件流控实战

UART(通用异步收发器)是嵌入式系统中最基础的串行通信接口,其核心原理基于起始位、数据位、校验位与停止位的异步帧结构,依赖精确的波特率时钟同步与采样重建机制。在工业与物联网场景中,UART不仅需保障基本通信可靠性,更需支持DMA卸载、RS485半双工自动方向控制、RTS/CTS硬件流控等进阶能力,以提升实时性、抗干扰性与系统资源效率。典型应用涵盖调试日志输出、传感器数据采集、Modbus RTU总线通信及固件空中升级。本指南聚焦UART外设测试实践,覆盖环路自检、DMA吞吐验证、RS485时序对齐、硬件流

weixin_42599908的博客 133

基于聚类特征工程的水果销量预测:聚类算法对比与多模型评估

水果销量预测研究:聚类分群与多模型对比 摘要 本研究提出了一种融合聚类分析与机器学习的水果销量预测方法。基于包含12个维度的销售数据集,首先采用K-Means、BIRCH和DBSCAN三种聚类算法对水果品类进行分群,通过轮廓系数等指标评估显示BIRCH算法表现最优(0.387)。随后针对不同群组构建差异化特征工程,并比较XGBoost、LightGBM和LSTM三种预测模型性能。实验结果表明:基于聚类特征工程的LightGBM模型预测效果最佳(RMSE=2.34,R²=0.87).

huanghm88的专栏 137

【Rust 手搓 Win11 灵动岛】① 从零搭骨架:无边框置顶窗口 + 工作区精确停靠

项目“岛仔”(daozai)是基于 Rust 与 eframe/egui 构建的 Win11 灵动岛桌面应用,采用窗口恒定展开、胶囊自绘方案实现无抖动丝滑动画。本篇聚焦 M1 里程碑:通过 Win32 获取工作区避让任务栏,解决创建期 DPI 缩放误传问题——虽首帧补偿逻辑因误解 ViewportCommand 单位而引入双重缩放错误,但实测假阳性掩盖了缺陷;后续将修复为直接下发 logical 尺寸。代码重构提升可测性,三组单元测试覆盖多 DPI 场景。最终验证结果经更正后确认需在下篇修正。

ygn12的博客 348

【GlobalMapper精品教程】038:模拟水位上升(洪水淹没分析)案例教程

基于数字高程模型 ( DEM )格网模型,实现给定水深情况下洪水淹没区的计算模型,讨论洪水淹没演进过程可视化实现的关键技术,以三维可视化方式,动态而形象地模拟在指定洪水水位下的洪水淹没演进过程。

智慧空间实验室 2884

OpenSearch 的索引快照别只留本地:用 repository-s3 存进 RustFS

OpenSearch 跑起来,索引分片默认写在节点自己的本地盘上。单机测试很顺,可一旦索引量上来、节点不止一个,本地盘的故障就成了绕不开的坎:一块盘坏了,上面的分片副本丢了,重建全靠其他副本兜着,集群压力瞬间翻倍。更隐蔽的是快照,很多人把快照也留在本地盘的默认仓库里,等于把备份和原始数据放在了同一块会坏的盘上。OpenSearch 自带 repository-s3 插件,能把索引快照直接写进任意…

分布式存储与RustFS的博客 562

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Rolldown 把插件改动回传提速 26 倍

Rolldown 下一个版本会把插件改动的回传做细,只把真的改了的字段送回 Rust,大型项目里这一步从 1015 毫秒降到 39 毫秒。什么时候能用上呢,改动已经在 11 月 6 日合并,会跟着下一个版本走,Vite 8 用的就是 Rolldown。更麻烦的是缓存,Rust 替换 chunk 数据之后,之前那份代码缓存就废了,下一个读。这次没有动钩子对象本身,只是把「回传」这件事做细了,先看哪些字段变了,再决定传什么。所以改法很直接,只送变了的字段,没变的 chunk 一个字节都不发。

前端之虎陈随易 193

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Rust如何实现微服务网关的高并发与限流熔断机制

在现代互联网系统中,微服务架构已成为主流,而微服务网关则是整个系统的重要组成部分。当面对高并发、高可用性需求时,很多开发者对如何用 Rust 实现一个稳定可靠的网关存在疑惑,尤其是处理请求的幂等性、限流和熔断机制。本文将以 Rust 的实际案例为基础,结合生产环境中的具体经验,讲解如何设计和实现一个具备限流与熔断能力的微服务网关。

wuchangjian的专栏 47

我写了一个 Windows 开发环境管理平台:Nexus(Tauri 2 + Rust + React)

文件监听事件很密集。如果节流窗口内的变更直接丢弃,最后一次改动就永远加载不到——所以窗口结束时必须补一轮。只对「失败」重试,不对「启动中」重试。启动慢不代表启动失败,盲目重试只会把健康的服务越搞越糟。Nexus 原本是为了解决自己日常开发里「窗口太多、状态不清、日志找不到」的问题,后来慢慢补成了现在这个样子:项目与服务管理、日志、服务健康、文件与代码查看、文件监听、开机启动、Node 版本管理,以及一个内嵌的 AI 助手。如果你也在 Windows 上同时维护多个服务,欢迎试用。

hi星尘的博客 565

Rust 如何构建高可靠支付回调系统?从《Rust 系统编

在现代支付系统中,支付回调处理和对账逻辑是整个系统的稳定性关键。当一笔支付完成时,第三方支付平台会通过异步回调通知业务系统交易结果。然而,在高并发、高吞吐的场景下,如何保证这些回调消息的可靠消费与数据一致性,成为了一个挑战。作为一位中级开发者,你可能已经经历过类似场景:在处理支付回调时,因网络抖动、服务宕机、重复通知等问题导致的数据不一致或对账失败。这时候,“系统编程”不再是理论层面的概念,而是实际落地时的救命稻草。

wuchangjian的专栏 211

GitHub 热榜项目:周榜(2026-11-08)

本期收录19个热门开源项目,总新增⭐102,473,聚焦Python、TypeScript、Rust。Top项目涵盖AI智能体记忆(claude-mem)、Git工作树管理(worktrunk)、游戏开发协作框架(Claude-Code-Game-Studios)及紫微斗数排盘引擎(ziwei-doushu)。T3code实现多智能体控制界面,Anthropic开源技能库助力Agent开发,Hallmark则专注消除AI设计“机器味”。技术趋势凸显AI工程化与跨会话智能体能力的快速演进。

u130130的博客 714

Airflow 的中间文件别散落各节点:让 DAG 直接读写 RustFS

数据流水线的中间结果往哪放,是个容易被忽略、出事才知道疼的问题。直接写本地盘,任务被调度到别的节点就找不到文件;挂共享 NFS,又多一层要维护的高可用。Airflow 自带的 Amazon S3 provider 其实就是个标准 S3 客户端,只要把连接的 endpoint_url 从 AWS 指到 RustFS,DAG 里的读写就全落到对象存储上了。这篇顺着官方集成指南,用 Apache Ai…

分布式存储与RustFS的博客 470

Worktrunk:用 Rust 写的 CLI,给并行跑的 AI agent 各开一份 Git worktree

Worktrunk 是一个 Rust 写的 Git worktree 管理 CLI,补上了原生 worktree 缺失的创建、命名、切换、清理生命周期,目标是让并行跑的多个 AI agent 各占一份互不干扰的工作副本;截至 2026 年 11 月 3 日仓库 10313 stars、81 位贡献者,但本文仅有单一来源,安装方式与 CLI 命令未获证实。

老孙正经胡说 165

Rust重写开源版Photoshop来了,支持PSD编辑,还能让AI Agent直接操作图像

PhotoCraft 是一个基于 Rust 开发的开源专业图像编辑器,旨在以原生高性能架构重构 Photoshop 级工作流。它提供图层、蒙版、调整图层、矢量绘图、文字排版、智能滤镜以及高兼容性的 PSD 支持,同时通过 CLI、JSON 控制接口和 MCP Server 具备面向 AI Agent 的自动化能力。

Tony.Dong的专栏 248

用Rust重写IntelliJ IDEA:169MB替代2GB,0.9秒打开项目的开源IDE

IntelliJ IDEA虽强大却臃肿,启动慢、占内存。开源项目OpenIDEA用Rust重写,保留熟悉快捷键与工作流,体积仅169MB,0.9秒启动。基于LSP支持60+语言,结合Tauri实现轻量跨平台界面。虽暂不替代IntelliJ的Java深度与插件生态,但为多语言开发者提供高效轻量选择,展现Rust+Web技术构建桌面应用的新范式。

weixin_41007138的博客 194

target 目录越来越大,Rust 项目该怎么清理

Rust 项目一多,磁盘空间常常先被target目录吃掉。每个工作区的target里,既有最后要运行的程序,也有依赖编译结果、增量编译数据和构建脚本产生的中间文件。它们都在增长,但生命周期并不一样。整目录删除当然最快,代价是最终产物也会一起消失。只想清掉缓存,又得挨个项目判断哪些目录能删。这个两难,是我写的原因。cargoc 把 Cargo 的中间构建文件放到专用目录,按工作区记录和清理空闲缓存;最终产物仍留在 Cargo 原来的target-dir。它解决的是“哪些中间文件可以清、什么时候清”。

fuwei2020的博客 354

我用 RustyPaste 做 AI Agent 云端存储

RustyPaste 是一个用 Rust 编写的极简文件上传与 Pastebin 服务。可以用来存储和访问 AI Agent 生成的文件

藏云阁技术社区 222

云服务器 + 公网 IP + 容器化部署 (Docker /RustDesk / Rtmp)

我偶然找到的腾讯云 轻量应用服务器,可以免费试用1个月,体验一下 PC远程控制和推拉流。服务器系统选择的 Ubuntu 22.04.5 LTS1、在控制台重置密码2、给服务器 添加放行规则在防火墙页面,点击222111619353、用 SSH 工具(比如 MobaXterm 或 Xshell)通过username@服务器公网IP连上服务器。

2301_79809746的博客 209

从 Electron 到 GPUI,9 个跨平台桌面方案该怎么选

把 Electron、Tauri、Wails、MyGo、Flutter、GPUI、Rune、Native Shell、PyQt 放在一起,按技术栈、渲染方式、成熟度和热度逐个对比,最后给出一张按团队背景选型的速查表。

325
上一篇: Rust 程序员的半年成长路线图:从入门到能独立做项目的里程碑
下一篇: 写给Rust 新人的一封信:AI 时代,你的学习方法可以完全不同
第一程序员
博客等级 码龄1年 1万+粉丝 1812原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值