GLM与Kimi Code技术协同:AI编程助手API集成实战指南
最近在AI编程助手领域一个值得关注的现象是智谱GLM团队的技术专家们开始频繁为Kimi Code功能打Call。这不仅仅是简单的商业互吹而是标志着国产AI编程工具正在进入一个全新的发展阶段。如果你还在纠结豆包跟Kimi哪个好用或者DeepSeek、Kimi、飞书Aily哪个编程能力强那么你可能错过了更重要的趋势——专业开发者已经开始通过API集成的方式将Kimi Code等工具深度融入自己的开发工作流中。从VSCode插件到PyCharm接入从Codex修改GLM到Kimi Code API接入OpenCode这些技术细节背后反映的是AI编程工具从玩具到生产力的关键转变。本文将带你深入解析GLM与Kimi的技术协同并重点演示如何将Kimi Code能力集成到实际开发环境中。无论你是想了解Kimi Coding Plan的实用价值还是需要解决GLM OCR Agent问题、Kimi 429错误等具体技术难题都能在这里找到答案。1. 为什么GLM专家会为Kimi站台从技术架构角度看GLM通用语言模型与Kimi Code的结合并非偶然。智谱AI在底层大模型技术上的积累为Kimi提供了强大的自然语言理解基础。而Kimi在代码生成、调试、优化方面的专项能力正好弥补了通用模型在编程场景下的不足。这种协同效应体现在三个关键层面模型能力互补GLM擅长理解复杂的开发需求描述Kimi Code专精于代码生成和逻辑推理工具链整合从Web版到IDE插件形成了完整的使用体验闭环开发者生态通过API开放让企业能够根据自身需求定制编程助手最近热议的GLM Coding Plan抢不到现象也侧面反映了市场对高质量AI编程工具的需求爆发。而Kimi Code通过多种套餐计划Token Plan、Coding Plan等正在尝试解决资源分配和商业化落地的问题。2. Kimi Code的核心能力解析在深入技术集成之前我们需要准确理解Kimi Code到底能做什么。根据实际测试和开发者反馈其核心能力可以归纳为以下几个维度2.1 代码生成与补全Kimi Code在生成业务逻辑代码方面表现突出特别是在Python、JavaScript、Java等主流语言上。与简单的代码补全不同它能够根据自然语言描述生成完整的函数或类。# 示例让Kimi生成一个Flask REST API端点 from flask import Flask, request, jsonify app Flask(__name__) app.route(/api/users, methods[POST]) def create_user(): Kimi生成的代码创建用户接口 要求验证输入数据保存到数据库返回创建结果 data request.get_json() # 验证必需字段 required_fields [username, email] for field in required_fields: if field not in data: return jsonify({error: fMissing required field: {field}}), 400 # 这里可以添加数据库操作逻辑 # user User(usernamedata[username], emaildata[email]) # db.session.add(user) # db.session.commit() return jsonify({ message: User created successfully, user: { username: data[username], email: data[email] } }), 2012.2 代码调试与优化Kimi能够识别代码中的潜在问题并提供优化建议。例如下面是一个存在性能问题的代码片段及其优化方案# 优化前存在N1查询问题 def get_user_posts(user_id): user User.query.get(user_id) posts Post.query.filter_by(user_iduser_id).all() result [] for post in posts: # 每次循环都执行数据库查询 comments Comment.query.filter_by(post_idpost.id).all() result.append({ post: post.title, comments: [c.content for c in comments] }) return result # Kimi优化建议使用关联加载避免N1查询 from sqlalchemy.orm import joinedload def get_user_posts_optimized(user_id): posts Post.query.options( joinedload(Post.comments) ).filter_by(user_iduser_id).all() return [{ post: post.title, comments: [c.content for c in post.comments] } for post in posts]2.3 技术方案咨询当你需要选择技术方案时Kimi能够提供比较分析。比如在Kimi、Minimax、GLM、Mimo、DeepSeek哪个编程能力强这个问题上Kimi可以客观分析各工具的特点工具编程强项适用场景集成方式Kimi Code代码生成、调试Web开发、脚本编写API、IDE插件DeepSeek算法实现、逻辑推理竞赛编程、算法优化Web版、APIGLM需求理解、文档生成企业级应用、复杂业务本地部署、API豆包快速原型、学习辅助初学者、教育场景移动端、Web版3. 环境准备与接入方式3.1 获取API访问权限目前Kimi Code提供多种接入方式开发者可以根据需求选择合适的套餐访问Kimi官网注册开发者账号申请API Key进入开发者中心创建新的应用选择套餐计划根据预计使用量选择Token Plan或Coding Plan3.2 基础环境配置确保你的开发环境满足以下要求# 检查Python版本推荐3.8 python --version # 安装必要的依赖包 pip install requests python-dotenv3.3 API密钥安全管理永远不要将API密钥硬编码在代码中。推荐使用环境变量管理# .env文件 KIMI_API_KEYyour_actual_api_key_here KIMI_BASE_URLhttps://api.moonshot.cn/v1 # config.py import os from dotenv import load_dotenv load_dotenv() class Config: KIMI_API_KEY os.getenv(KIMI_API_KEY) KIMI_BASE_URL os.getenv(KIMI_BASE_URL, https://api.moonshot.cn/v1)4. 多种集成方案实战4.1 直接API调用集成最基本的集成方式是通过HTTP API直接调用Kimi Code服务import requests import json from config import Config class KimiCodeClient: def __init__(self): self.api_key Config.KIMI_API_KEY self.base_url Config.KIMI_BASE_URL self.headers { Authorization: fBearer {self.api_key}, Content-Type: application/json } def generate_code(self, prompt, languagepython, context): 调用Kimi Code生成代码 data { model: kimi-code, # 指定使用Kimi Code模型 messages: [ { role: system, content: f你是一个专业的{language}开发助手。根据用户需求生成高质量、可运行的代码。 }, { role: user, content: f{context}\n\n需求{prompt} } ], max_tokens: 2000 } response requests.post( f{self.base_url}/chat/completions, headersself.headers, datajson.dumps(data) ) if response.status_code 200: return response.json()[choices][0][message][content] else: raise Exception(fAPI调用失败: {response.status_code} - {response.text}) # 使用示例 if __name__ __main__: client KimiCodeClient() try: code client.generate_code( prompt创建一个Python函数计算斐波那契数列的前n项, languagepython, context需要处理边界情况包含类型注解和文档字符串 ) print(生成的代码:) print(code) except Exception as e: print(f错误: {e})4.2 VSCode插件集成对于日常开发使用IDE插件是更高效的方式。以下是配置VSCode Kimi插件的步骤打开VSCode进入Extensions面板搜索Kimi或Codex相关插件安装并配置API密钥在设置中调整插件行为// settings.json { kimi-code.enable: true, kimi-code.apiKey: ${env:KIMI_API_KEY}, kimi-code.autoSuggest: true, kimi-code.maxTokens: 1000, kimi-code.languagePreference: [python, javascript, java] }4.3 PyCharm接入方案PyCharm用户可以通过以下方式集成Kimi Code# 创建自定义工具配置 # 文件 → 设置 → 工具 → 外部工具 # 名称: Kimi Code Assistant # 程序: python # 参数: -m kimi_integration --prompt $SelectedText$ --file $FilePath$ # 工作目录: $ProjectFileDir$5. 实际开发场景应用案例5.1 快速原型开发假设你需要快速创建一个数据处理的脚手架# 向Kimi描述需求创建一个数据处理管道读取CSV文件清洗数据计算统计指标 # Kimi生成的代码框架 import pandas as pd import numpy as np from typing import Dict, List, Optional class DataProcessingPipeline: 数据处理管道类 def __init__(self, file_path: str): self.file_path file_path self.data None self.cleaning_rules {} def load_data(self) - pd.DataFrame: 加载CSV数据 try: self.data pd.read_csv(self.file_path) print(f成功加载数据形状: {self.data.shape}) return self.data except Exception as e: print(f数据加载失败: {e}) raise def add_cleaning_rule(self, column: str, rule_type: str, **kwargs): 添加数据清洗规则 self.cleaning_rules[column] { type: rule_type, params: kwargs } def apply_cleaning(self) - pd.DataFrame: 应用数据清洗 if self.data is None: raise ValueError(请先加载数据) for column, rule in self.cleaning_rules.items(): if column in self.data.columns: if rule[type] fill_na: self.data[column] self.data[column].fillna(rule[params][value]) elif rule[type] remove_outliers: # 实现异常值处理逻辑 pass return self.data def calculate_statistics(self) - Dict: 计算统计指标 if self.data is None: raise ValueError(请先加载并清洗数据) return { mean: self.data.select_dtypes(include[np.number]).mean().to_dict(), std: self.data.select_dtypes(include[np.number]).std().to_dict(), count: len(self.data) } # 使用示例 if __name__ __main__: pipeline DataProcessingPipeline(data.csv) pipeline.load_data() pipeline.add_cleaning_rule(age, fill_na, value0) pipeline.add_cleaning_rule(salary, remove_outliers, methodiqr) cleaned_data pipeline.apply_cleaning() stats pipeline.calculate_statistics() print(stats)5.2 代码审查与优化Kimi可以协助进行代码审查指出潜在问题# 原始代码存在潜在问题 def process_users(users): result [] for i in range(len(users)): user users[i] if user[age] 18: user[adult] True else: user[adult] False result.append(user) return result # Kimi审查建议 1. 避免使用索引循环推荐直接迭代元素 2. 简化布尔值赋值逻辑 3. 考虑使用列表推导式提高可读性 # 优化后的代码 def process_users_optimized(users): return [ {**user, adult: user[age] 18} for user in users ]5.3 测试用例生成Kimi可以帮助快速生成测试用例提高代码质量import pytest from my_module import DataProcessingPipeline class TestDataProcessingPipeline: 测试数据处理管道 pytest.fixture def sample_data(self, tmp_path): 创建测试数据文件 data_file tmp_path / test_data.csv data_file.write_text(name,age,salary\nAlice,30,50000\nBob,25,45000) return str(data_file) def test_load_data(self, sample_data): 测试数据加载功能 pipeline DataProcessingPipeline(sample_data) data pipeline.load_data() assert data is not None assert len(data) 2 assert list(data.columns) [name, age, salary] def test_cleaning_rules(self, sample_data): 测试数据清洗规则 pipeline DataProcessingPipeline(sample_data) pipeline.load_data() pipeline.add_cleaning_rule(age, fill_na, value0) # 测试规则添加是否正确 assert age in pipeline.cleaning_rules assert pipeline.cleaning_rules[age][type] fill_na6. 常见问题与解决方案6.1 API调用问题排查问题现象可能原因解决方案401未授权错误API密钥错误或过期检查API密钥是否正确重新生成密钥429请求频率限制调用过于频繁实现请求间隔控制使用指数退避重试500服务器内部错误服务端问题等待服务恢复检查服务状态页# 健壮的API调用实现 import time from typing import Optional def robust_api_call(client, prompt, max_retries3): 带重试机制的API调用 for attempt in range(max_retries): try: return client.generate_code(prompt) except Exception as e: if 429 in str(e): # 指数退避 wait_time (2 ** attempt) random.random() print(f速率限制等待{wait_time}秒后重试...) time.sleep(wait_time) else: raise e raise Exception(API调用失败已达最大重试次数)6.2 代码质量保证策略使用Kimi生成的代码时需要建立质量检查机制def validate_generated_code(code: str, language: str) - Dict[str, bool]: 验证生成代码的质量 checks { has_docstring: check_docstring(code), has_type_hints: check_type_hints(code, language), follows_pep8: check_pep8_compliance(code) if language python else True, no_syntax_errors: check_syntax(code, language) } return checks def check_docstring(code: str) - bool: 检查是否包含文档字符串 return in code or in code def check_syntax(code: str, language: str) - bool: 检查语法正确性 try: if language python: ast.parse(code) return True except SyntaxError: return False7. 最佳实践与工程化建议7.1 提示词工程优化为了获得更好的代码生成效果需要精心设计提示词# 好的提示词模板 PROMPT_TEMPLATES { function_generation: 请为以下需求生成{language}代码 需求描述{requirement} 具体要求 1. 包含完整的函数定义和文档字符串 2. 使用类型注解 3. 处理边界情况和异常 4. 包含使用示例 上下文信息{context} , code_review: 请审查以下{language}代码指出问题并提供优化建议 代码 {code} 审查重点 1. 性能问题 2. 安全隐患 3. 代码风格 4. 可维护性 } def build_effective_prompt(template_type, **kwargs): 构建有效的提示词 template PROMPT_TEMPLATES.get(template_type) if not template: raise ValueError(f未知的模板类型: {template_type}) return template.format(**kwargs)7.2 集成到CI/CD流程将Kimi Code集成到持续集成流程中实现自动化代码审查# .github/workflows/code-review.yml name: AI Code Review on: pull_request: branches: [ main ] jobs: review: runs-on: ubuntu-latest steps: - uses: actions/checkoutv3 - name: Set up Python uses: actions/setup-pythonv4 with: python-version: 3.9 - name: Install dependencies run: pip install requests - name: Run AI Code Review env: KIMI_API_KEY: ${{ secrets.KIMI_API_KEY }} run: python scripts/ai_review.py7.3 成本控制与监控建立使用量监控机制避免意外成本import time from datetime import datetime, timedelta class UsageMonitor: API使用量监控 def __init__(self, daily_limit1000): self.daily_limit daily_limit self.usage_today 0 self.last_reset datetime.now() def check_limit(self, tokens1): 检查使用量限制 self._reset_if_needed() if self.usage_today tokens self.daily_limit: raise Exception(今日使用量已达上限) self.usage_today tokens return True def _reset_if_needed(self): 如果需要则重置计数器 now datetime.now() if now.date() self.last_reset.date(): self.usage_today 0 self.last_reset now # 在客户端中使用监控 monitor UsageMonitor() def safe_generate_code(client, prompt): 带使用量控制的代码生成 if monitor.check_limit(len(prompt) // 4): # 估算token数 return client.generate_code(prompt) else: raise Exception(使用量限制)8. 性能优化与高级技巧8.1 缓存机制实现为了避免重复生成相同代码可以实现缓存层import hashlib import pickle from pathlib import Path class CodeGenerationCache: 代码生成缓存 def __init__(self, cache_dir.kimi_cache): self.cache_dir Path(cache_dir) self.cache_dir.mkdir(exist_okTrue) def _get_cache_key(self, prompt, language): 生成缓存键 content f{prompt}_{language}.encode(utf-8) return hashlib.md5(content).hexdigest() def get_cached_code(self, prompt, language): 获取缓存的代码 cache_key self._get_cache_key(prompt, language) cache_file self.cache_dir / f{cache_key}.pkl if cache_file.exists(): with open(cache_file, rb) as f: cached_data pickle.load(f) # 检查缓存是否过期24小时 if time.time() - cached_data[timestamp] 86400: return cached_data[code] return None def set_cached_code(self, prompt, language, code): 设置缓存 cache_key self._get_cache_key(prompt, language) cache_file self.cache_dir / f{cache_key}.pkl cache_data { timestamp: time.time(), code: code, prompt: prompt, language: language } with open(cache_file, wb) as f: pickle.dump(cache_data, f)8.2 批量处理优化当需要生成多个相关代码片段时使用批量处理提高效率def batch_generate_code(client, prompts, languagepython): 批量生成代码 # 将相关提示词组合成单个请求 combined_prompt f 请为以下多个相关需求生成{language}代码 {.join(f{i1}. {prompt} for i, prompt in enumerate(prompts))} 请确保代码风格一致并考虑模块化设计。 result client.generate_code(combined_prompt, language) # 解析返回结果拆分成单个代码片段 return parse_batch_result(result) def parse_batch_result(result_text): 解析批量生成结果 # 根据标记或序号分割结果 parts result_text.split() code_blocks [part for part in parts if part.strip().startswith(python)] return [block.split(\n, 1)[1] if \n in block else block for block in code_blocks]GLM团队为Kimi Code站台这一现象反映了AI编程工具正在从能用向好用进化。对于开发者而言关键不是追逐最新的工具而是建立适合自己的智能编程工作流。通过本文介绍的技术方案你可以将Kimi Code等工具真正转化为生产力而不是停留在体验层面。实际项目中建议先从代码审查、文档生成等低风险场景开始逐步扩展到原型开发和代码优化。记住再强大的AI工具也只是辅助最终的质量责任仍在开发者身上。建立完善的验证机制和代码审查流程才能确保AI生成的代码真正为项目创造价值。

相关新闻

iOS应用上架App Store避雷指南

iOS应用上架App Store避雷指南

iOS应用App Store上架全链路避雷指南|从开发、提审到运营避坑完整版 前言 App Store审核规则繁杂、人工抽检机器代码扫描双重机制,绝大多数上架失败集中在隐私合规、IAP支付、4.3同质化、权限滥用、内容违规、元数据造假六大板块。本文结合2026最新审核准…

2026/10/6 12:53:01 阅读更多 →
大模型推理加速复盘:投机解码将首 Token 延迟从 1.8s 压至 300ms

大模型推理加速复盘:投机解码将首 Token 延迟从 1.8s 压至 300ms

大模型推理加速复盘:投机解码将首 Token 延迟从 1.8s 压至 300ms 一、首 Token 延迟的致命瓶颈:为什么用户觉得“卡” 在承接一个实时对话场景的 LLM 推理需求时,业务方给出了硬性指标:首 Token 生成延迟(TTFT&#…

2026/10/8 13:52:02 阅读更多 →
AI助力实习报告撰写:从流水账到专业总结的智能升级

AI助力实习报告撰写:从流水账到专业总结的智能升级

1. 实习报告撰写痛点与行业现状每到实习季,数以百万计的大学生都会面临同一个难题:如何把日常琐碎的实习经历转化为一份有专业深度、有逻辑体系的高质量报告。传统实习报告往往陷入两种极端——要么是流水账式的"早上打卡-整理文件-参加会议"日…

2026/10/9 0:22:36 阅读更多 →

最新新闻

如何让手机访问Symfony WebServerBundle本地服务器:0.0.0.0绑定与局域网暴露完整指南

如何让手机访问Symfony WebServerBundle本地服务器:0.0.0.0绑定与局域网暴露完整指南

【免费下载链接】web-server-bundle Provides commands for running applications using the PHP built-in web server 项目地址: https://gitcode.com/gh_mirrors/we/web-server-bundle 点击查看 免费下载 想让手机直接打开你电脑上跑的 Symfony 应用吗&#xff1…

2026/10/14 0:16:46 阅读更多 →
极大极小值算法与Alpha-Beta剪枝:棋类博弈搜索核心解析

极大极小值算法与Alpha-Beta剪枝:棋类博弈搜索核心解析

写一个会下棋的 AI 难吗?如果只靠暴力枚举,哪怕是一盘井字棋,顶多 9! 种走法还能忍,换到五子棋、国际象棋,分支因子一下子爆炸,普通程序根本算不完。这时候就得回到博弈树搜索的老套路:极大极小…

2026/10/14 0:16:46 阅读更多 →
Chan-Vese 图像分割算法 Python 实现与参数调优实战

Chan-Vese 图像分割算法 Python 实现与参数调优实战

简介:这份资源提供Chan-Vese图像分割算法的Python实现代码,面向正在学习图像处理、计算机视觉或活动轮廓模型的学生与开发者。Chan-Vese模型是首个完全脱离图像梯度信息、依靠区域信息构建能量函数的活动轮廓模型,为后续分割方法开辟了新方向…

2026/10/14 0:16:46 阅读更多 →
Neo4j 5.23 Windows 配置避坑指南:从安装到生产就绪

Neo4j 5.23 Windows 配置避坑指南:从安装到生产就绪

简介:Neo4j Community Edition 5.23.0 Windows版安装包,面向图形数据库初学者、高校学生及中小型项目开发者,提供开箱即用的本地图数据库环境,适用于社交关系分析、推荐系统原型开发、知识图谱构建等高度关联性数据场景。压缩包共…

2026/10/14 0:16:46 阅读更多 →
noto-fonts NEWS 解读:Noto 字体三次关键演进、upem 网格限制与 OFL 1.1 授权切换

noto-fonts NEWS 解读:Noto 字体三次关键演进、upem 网格限制与 OFL 1.1 授权切换

数据集 【免费下载链接】noto-fonts Noto fonts, except for CJK and emoji 项目地址: https://gitcode.com/gh_mirrors/no/noto-fonts 点击查看 免费下载 本文基于 noto-fonts 仓库根目录下的 NEWS.md 编写,梳理 2015—2018 年间 Noto 字体项目的三次里…

2026/10/14 0:16:46 阅读更多 →
glibc内存管理核心:malloc/free原理、RSS异常排查与调优实践

glibc内存管理核心:malloc/free原理、RSS异常排查与调优实践

搞了十多年Linux服务端,我遇到过不少内存方面的疑难杂症:程序跑着跑着RSS飙到十几个GB,看代码却找不到任何泄漏;压力测试一过进程就被OOM干掉;线上明明有内存空闲,服务却越跑越慢。这些问题表面上是业务逻辑…

2026/10/14 0:15:46 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →