首页
/ Scrapling Agent Skill 实战:让 AI Agent 安全地掌握反爬抓取、浏览器自动化与 Spider 框架

Scrapling Agent Skill 实战:让 AI Agent 安全地掌握反爬抓取、浏览器自动化与 Spider 框架

2026-09-03 16:09:38作者:滕妙奇

本文围绕 Scrapling 仓库中官方发布的 Agent 技能文件 SKILL.md 展开。该技能由库作者本人维护、遵循 AgentSkill 规范,被 OpenClaw、Claude Code 等 agentic 工具直接读取后,就能指导 AI 完成"单次请求到全站爬取"的全部抓取任务。读完本文,你将掌握:技能的 frontmatter 元数据结构与安装方式、防 Prompt Injection 的 --ai-targeted 参数及其底层实现、scrapling extract 命令组的完整选项与升级策略、Fetchers/Sessions/Spiders 的代码级用法,以及技能内置的 references 文档体系与合规护栏。

一、技能定位:为什么要把抓取框架写成"Skill"

SKILL.md 开头声明了 Scrapling 的能力边界:"an adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl"——其解析器能从网站变化中自动学习并重新定位元素,Fetcher 开箱即用地绕过 Cloudflare Turnstile 等反爬系统,Spider 框架支持并发、多会话、暂停/恢复与自动代理轮换。技能的价值在于:把这套能力"封装"成 AI Agent 可理解的操作手册,让 Agent 无需上网搜索、无需猜测 API,即可正确生成抓取代码或执行 CLI 命令。

文件开头的 YAML frontmatter 是技能的核心元数据,直接决定 Agent 何时触发该技能:

---
name: scrapling-official
description: Scrape web pages using Scrapling with anti-bot bypass (like Cloudflare Turnstile), stealth headless browsing, spiders framework, adaptive scraping, and JavaScript rendering. Use when asked to scrape, crawl, or extract data from websites; web_fetch fails; the site has anti-bot protections; write Python code to scrape/crawl; or write spiders.
version: "0.4.13"
metadata:
  openclaw:
    requires:
      bins:
        - python3
      anyBins:
        - pip
        - pip3
---

几个关键点:

  • description 即触发条件:当用户"要求抓取/爬取/提取数据"、web_fetch 失败、站点有反爬保护、或需要编写 Python 抓取代码与 spider 时,技能应被激活;
  • requires.bins 声明运行前置:必须有 python3,以及 pippip3 之一;
  • 技能还附带一段面向"AI 扫描器"的安全说明:Cloudflare 求解走纯浏览器自动化(不需要 solver、凭据或 API),代理与 CDP 模式完全可选且由用户提供,cdp_urluser_data_dirproxy auth 等参数在库内部做了校验。

技能的安装方式在 agent-skill/README.md 中有完整说明:它遵循 AgentSkill 规范,可被 OpenClaw 与 Claude Code 直接读取,仓库内直接提供了打包好的 Scrapling-Skill.zip。安装渠道包括 Clawhub(clawhub install scrapling-official)和 skills.sh(npx skills add D4Vinci/Scrapling --skill scrapling-official),后者会自动检测本机已安装的 Agent 并把技能注入。

二、环境准备:一次性 Setup 与 Docker 备选

技能给出的 Setup 流程要求 Python 3.10+,只需执行一次:

# 1. 创建虚拟环境(venv 等任意方式)
# 2. 在虚拟环境内安装全功能版本
pip install "scrapling[all]>=0.4.13"

# 3. 下载所有浏览器依赖
scrapling install --force

技能特别提示:如果 scrapling 不在 $PATH 中,需要记录二进制文件的实际路径,后续所有命令都用该绝对路径替代 scrapling

对于没有 Python 环境(或不希望装 Python)的用户,技能提供了 Docker 备选方案,但只能用于 CLI 命令,不能用来写 Python 代码:

docker pull pyd4vinci/scrapling
# 或
docker pull ghcr.io/d4vinci/scrapling:latest

三、安全核心:--ai-targeted 参数的作用与底层实现

SKILL.md 中用加粗标注了一条"IMPORTANT"规则:

使用命令行抓取命令时,必须带上 --ai-targeted 参数来防御 Prompt Injection;对浏览器命令,该参数还会自动启用广告拦截以节省 token。

这条规则不是空话,仓库源码可以完整印证其机制。在 cli.py__Request_and_Save 函数中(第 42–62 行):

def __Request_and_Save(
    fetcher_func: Callable[..., Response],
    url: str,
    output_file: str,
    css_selector: Optional[str] = None,
    ai_targeted: bool = False,
    **kwargs,
) -> None:
    ...
    if ai_targeted:
        kwargs.setdefault("block_ads", True)          # ① 自动开启广告拦截
    response = fetcher_func(url, **kwargs)
    Convertor.write_content_to_file(response, str(output_path), css_selector, main_content_only=ai_targeted)
    log.info(f"Content successfully saved to '{output_path}'")

可以确认两点实现事实:

  1. 自动广告拦截ai_targeted=True 时通过 kwargs.setdefault("block_ads", True) 默认拦截广告请求(用户显式传参可覆盖),减少无关内容进入上下文;
  2. 主内容提取 + 隐藏元素清洗:保存时 Convertor.write_content_to_file 收到 main_content_only=ai_targeted,即只提取页面主内容并清理隐藏元素——这正是"防 Prompt Injection"的落点:网页中藏于隐藏 DOM 节点里的指令性文本不会被喂给 AI。

--ai-targeted 在 CLI 中同样挂载于全部 6 个子命令(get/post/put/delete/fetch/stealthy-fetch),源码中每个命令函数都透传了该参数。

技能还给出了 Agent 使用 CLI 的三条操作守则(Notes 一节):读取临时文件后必须清理;优先用 .md 输出提升可读性,只有需要解析结构时才用 .html;用 -s CSS 选择器避免把巨大的 HTML 整块塞给模型,以显著节省 token。

四、CLI 速通:scrapling extract 命令组

scrapling extract 命令组让 AI(或人)不写一行代码即可下载并提取网页内容:

Usage: scrapling extract [OPTIONS] COMMAND [ARGS]...

Commands:
  get             Perform a GET request and save the content to a file.
  post            Perform a POST request and save the content to a file.
  put             Perform a PUT request and save the content to a file.
  delete          Perform a DELETE request and save the content to a file.
  fetch           Use a browser to fetch content with browser automation and flexible options.
  stealthy-fetch  Use a stealthy browser to fetch content with advanced stealth features.

4.1 用文件扩展名选择输出格式

最优雅的设计是输出格式由目标文件扩展名决定,以 get 为例:

# HTML 转 Markdown 保存(适合文档场景)
scrapling extract get "https://blog.example.com" article.md
# 原样保存 HTML
scrapling extract get "https://example.com" page.html
# 保存网页的纯文本版本
scrapling extract get "https://example.com" content.txt

此外,所有命令都支持 -s / --css-selector 只提取页面中匹配的部分(返回所有匹配项)。

4.2 命令选择与升级策略

场景 命令
简单网站、博客、新闻文章 get
现代 Web 应用、动态内容 fetch
受保护站点、Cloudflare、反爬系统 stealthy-fetch

技能给出的升级路径非常实用:不确定时先用 get,失败或返回空内容再升到 fetch,最后才用 stealthy-fetch——后两者速度几乎相同,升级不损失性能。

4.3 HTTP 请求类命令的关键选项

以下选项在 get/post/put/delete 四个命令间共享:

选项 输入类型 说明
-H, --headers TEXT HTTP 头,格式 "Key: Value",可多次使用
--cookies TEXT Cookie 字符串,格式 "name1=value1; name2=value2"
--timeout INTEGER 请求超时秒数(默认 30)
--proxy TEXT 代理 URL,格式 "http://username:password@host:port"
-s, --css-selector TEXT CSS 选择器,提取页面特定内容,返回所有匹配
-p, --params TEXT 查询参数 "key=value",可多次使用
--follow-redirects / --no-follow-redirects None 是否跟随重定向(默认 "safe":拒绝跳转到内网/私有 IP)
--verify / --no-verify None 是否校验 SSL 证书(默认 True)
--impersonate TEXT 模拟的浏览器;可以是单个(如 Chrome)或逗号分隔列表随机选择(如 Chrome, Firefox, Safari)
--stealthy-headers / --no-stealthy-headers None 使用隐蔽浏览器头(默认 True)
--ai-targeted None 仅提取主内容并清洗隐藏元素以供 AI 消费(默认 False)

postput 独享的选项:

选项 输入类型 说明
-d, --data TEXT 表单数据字符串,如 "param1=value1&param2=value2"
-j, --json TEXT JSON 数据字符串

其中 --impersonate 的"逗号分隔随机选择"在 cli.py 第 103–105 行有对应实现:参数含逗号时被拆分为列表传入 Fetcher,由库层随机挑选浏览器指纹:

if "impersonate" in kwargs and "," in (kwargs.get("impersonate") or ""):
    kwargs["impersonate"] = [browser.strip() for browser in kwargs["impersonate"].split(",")]

典型示例:

# 基础下载
scrapling extract get "https://news.site.com" news.md

# 自定义超时
scrapling extract get "https://example.com" content.txt --timeout 60

# CSS 选择器只提取文章内容
scrapling extract get "https://blog.example.com" articles.md --css-selector "article"

# 携带 Cookie 请求
scrapling extract get "https://scrapling.requestcatcher.com" content.md --cookies "session=abc123; user=john"

# 添加 User-Agent
scrapling extract get "https://api.site.com" data.json -H "User-Agent: MyBot 1.0"

# 多个请求头
scrapling extract get "https://site.com" page.html -H "Accept: text/html" -H "Accept-Language: en-US"

4.4 浏览器类命令的关键选项

fetchstealthy-fetch 共享以下选项:

选项 输入类型 说明
--headless / --no-headless None 无头模式运行(默认 True)
--disable-resources / --enable-resources None 丢弃非必要资源以提速(默认 False)
--network-idle / --no-network-idle None 等待网络空闲(默认 False)
--real-chrome / --no-real-chrome None 启用本机已安装的 Chrome 实例(默认 False)
--timeout INTEGER 超时毫秒数(默认 30000)
--wait INTEGER 页面加载后的额外等待毫秒(默认 0)
-s, --css-selector TEXT CSS 选择器,返回所有匹配
--wait-selector TEXT 继续执行前等待的 CSS 选择器
--proxy TEXT 代理 URL
-H, --extra-headers TEXT 额外请求头 "Key: Value",可多次使用
--dns-over-https / --no-dns-over-https None 经 Cloudflare DoH 解析 DNS,防止使用代理时的 DNS 泄漏(默认 False)
--block-ads / --no-block-ads None 拦截约 3,500 个已知广告/跟踪域名(默认 False)
--executable-path TEXT 自定义 Chromium 兼容浏览器可执行文件路径;未设置时回退到环境变量 SCRAPLING_EXECUTABLE_PATH
--ai-targeted None 仅提取主内容并清洗隐藏元素(默认 False),同时自动启用广告拦截

fetch 独有:--locale(指定用户区域,默认跟随系统);stealthy-fetch 独有:

选项 输入类型 说明
--block-webrtc / --allow-webrtc None 完全阻断 WebRTC(默认 False)
--solve-cloudflare / --no-solve-cloudflare None 自动求解 Cloudflare 挑战(默认 False)
--allow-webgl / --block-webgl None 是否允许 WebGL(默认 True)
--hide-canvas / --show-canvas None 对 canvas 操作添加噪声(默认 False)

典型示例:

# 等待 JS 加载完成且网络空闲
scrapling extract fetch "https://scrapling.requestcatcher.com/" content.md --network-idle

# 等待特定内容出现
scrapling extract fetch "https://scrapling.requestcatcher.com/" data.txt --wait-selector ".content-loaded"

# 可视化浏览器调试 + 屏蔽资源提速
scrapling extract fetch "https://scrapling.requestcatcher.com/" page.html --no-headless --disable-resources

# 绕过基础保护
scrapling extract stealthy-fetch "https://scrapling.requestcatcher.com" content.md

# 求解 Cloudflare 挑战并按选择器提取
scrapling extract stealthy-fetch "https://nopecha.com/demo/cloudflare" data.txt --solve-cloudflare --css-selector "#padded_content a"

# 代理匿名访问
scrapling extract stealthy-fetch "https://site.com" content.md --proxy "http://proxy-server:8080"

五、代码级能力:Fetchers 与三种会话模型

SKILL.md 明确指出:CLI 无法覆盖全部功能(也不能全部自定义),写代码是解锁 Scrapling 全部能力的唯一方式。技能给出四类基本用法,仓库的 examples/ 目录提供了对应的完整可运行脚本。

5.1 HTTP 请求与会话(Fetcher / FetcherSession)

from scrapling.fetchers import Fetcher, FetcherSession

with FetcherSession(impersonate='chrome') as session:  # 使用最新版 Chrome 的 TLS 指纹
    page = session.get('https://quotes.toscrape.com/', stealthy_headers=True)
    quotes = page.css('.quote .text::text').getall()

# 或一次性请求
page = Fetcher.get('https://quotes.toscrape.com/')
quotes = page.css('.quote .text::text').getall()

配套示例 01_fetcher_session.py 展示了用单个 FetcherSession 连续抓取 quotes.toscrape.com 全部 10 页的场景,并标注适用边界:"static or semi-static sites, APIs, pages that don't require JavaScript"。

5.2 高级隐身模式(StealthyFetcher / StealthySession)

from scrapling.fetchers import StealthyFetcher, StealthySession

with StealthySession(headless=True, solve_cloudflare=True) as session:  # 浏览器保持打开直到结束
    page = session.fetch('https://nopecha.com/demo/cloudflare', google_search=False)
    data = page.css('#padded_content a').getall()

# 一次性请求风格:为此请求开一个浏览器,结束后关闭
page = StealthyFetcher.fetch('https://nopecha.com/demo/cloudflare')
data = page.css('#padded_content a').getall()

03_stealthy_session.py 的注释补充了选型依据:StealthySession 基于 Patchright 隐身浏览器,自动绕过 Cloudflare Turnstile、指纹识别等反爬,"适用于防护严密的站点、Cloudflare 门控页面、会检测 Playwright 的站点"。

5.3 完整浏览器自动化(DynamicFetcher / DynamicSession)

from scrapling.fetchers import DynamicFetcher, DynamicSession

with DynamicSession(headless=True, disable_resources=False, network_idle=True) as session:
    page = session.fetch('https://quotes.toscrape.com/', load_dom=False)
    data = page.xpath('//span[@class="text"]/text()').getall()  # 偏好 XPath 时

page = DynamicFetcher.fetch('https://quotes.toscrape.com/')  # 一次性风格
data = page.css('.quote .text::text').getall()

02_dynamic_session.py 演示了 headless=False, disable_resources=True 的组合:浏览器窗口在整个会话期间保持打开以提升效率,同时跳过图片/字体加载提速,适合 JS 密集页与 SPA。

5.4 异步会话管理

FetcherSession 是上下文感知的,同一实例既可同步也可异步使用;异步场景还有 AsyncStealthySessionAsyncDynamicSession

import asyncio
from scrapling.fetchers import FetcherSession, AsyncStealthySession, AsyncDynamicSession

async with FetcherSession(http3=True) as session:  # 同步/异步两用
    page1 = session.get('https://quotes.toscrape.com/')
    page2 = session.get('https://quotes.toscrape.com/', impersonate='firefox135')

async with AsyncStealthySession(max_pages=2) as session:  # 标签页池并发
    tasks = [session.fetch(url) for url in ['https://example.com/page1', 'https://example.com/page2']]
    print(session.get_pool_stats())  # 浏览器标签池状态(busy/free/error)
    results = await asyncio.gather(*tasks)

async with AsyncDynamicSession(capture_xhr=r"https://api\.example\.com/.*") as session:  # 捕获 XHR/fetch
    page = await session.fetch('https://example.com')
    for xhr in page.captured_xhr:  # 每个都是完整 Response 对象
        print(xhr.url, xhr.status, xhr.body)

六、Spider 框架:从单页到全站爬取

技能的 Spider 章节给出了一条完整的"爬虫演化路径":基础 Spider → 多会话 → 断点续爬 → 开发缓存 → 规则化爬取 → 平台模板。

6.1 基础 Spider:并发 + robots.txt

from scrapling.spiders import Spider, Request, Response

class QuotesSpider(Spider):
    name = "quotes"
    start_urls = ["https://quotes.toscrape.com/"]
    concurrent_requests = 10
    robots_txt_obey = True  # 遵守 robots.txt 规则

    async def parse(self, response: Response):
        for quote in response.css('.quote'):
            yield {
                "text": quote.css('.text::text').get(),
                "author": quote.css('.author::text').get(),
            }
        next_page = response.css('.next a')
        if next_page:
            yield response.follow(next_page[0].attrib['href'])

result = QuotesSpider().start()
print(f"Scraped {len(result.items)} quotes")
result.items.to_json("quotes.json")

仓库示例 04_spider.py 还演示了爬取完成后的实时统计输出:result.stats.items_scrapedrequests_countelapsed_secondsrequests_per_second,以及 to_json("quotes.json", indent=True) 导出。

6.2 多会话路由:一个 Spider 内混用多种 Fetcher

from scrapling.spiders import Spider, Request, Response
from scrapling.fetchers import FetcherSession, AsyncStealthySession

class MultiSessionSpider(Spider):
    name = "multi"
    start_urls = ["https://example.com/"]

    def configure_sessions(self, manager):
        manager.add("fast", FetcherSession(impersonate="chrome"))
        manager.add("stealth", AsyncStealthySession(headless=True), lazy=True)

    async def parse(self, response: Response):
        for link in response.css('a::attr(href)').getall():
            if "protected" in link:
                yield Request(link, sid="stealth")      # 受保护页面走隐身会话
            else:
                yield Request(link, sid="fast", callback=self.parse)

6.3 断点续爬与开发模式缓存

QuotesSpider(crawldir="./crawl_data").start()

按 Ctrl+C 会优雅暂停并自动保存进度;下次传入相同 crawldir 即从断点恢复。调试 parse() 逻辑时可给 Spider 类设置 development_mode = True:首次运行把响应缓存到磁盘,之后反复重跑不再访问目标服务器;缓存默认位于 .scrapling_cache/{spider.name}/,可用 development_cache_dir 覆盖——技能特别提醒"交付前务必关闭该开关"。

6.4 规则化与平台模板:CrawlSpider / SitemapSpider / FeedSpider / ShopifySpider

from scrapling.spiders import CrawlSpider, CrawlRule, LinkExtractor

class BlogCrawler(CrawlSpider):
    name = "blog"
    start_urls = ["https://example.com"]

    def rules(self):
        return [
            CrawlRule(LinkExtractor(allow=r"/posts/"), callback=self.parse_post),
            CrawlRule(LinkExtractor(allow=r"/page/\d+/")),  # 跟翻页,无回调
        ]

    async def parse_post(self, response):
        yield {"title": response.css("h1::text").get()}

技能进一步指出(完整参考见 generic-templates.md):

  • SitemapSpider:复用同一套 rules() API,抓取 sitemap_urls、递归进入 sitemap index、把每个 URL 分发给规则;把 robots.txt URL 直接放进 sitemap_urls 时,会自动解析其中的每条 Sitemap: 指令;
  • XMLFeedSpider:设 itertag 为节点名并覆写 parse_node(response, node),每个匹配节点以剥离命名空间的 lxml 元素传入(如 node.findtext("title"));CSVFeedSpider:覆写 parse_row(response, row),每行以字典传入,支持 headers/delimiter/quotechar 适配非标准格式。两者都能自动解压 gzip 流;
  • ShopifySpider:子类化后设置 target_website 为商店域名,即可通过 Shopify 的 JSON API 提取全部商品变体,完全不碰 HTML(见 platform-templates.md)。

七、高级解析与导航:Agent 最常调用的一组 API

SKILL.md 的 Advanced Parsing 一节浓缩了 Selector 的选择与导航能力:

from scrapling.fetchers import Fetcher

page = Fetcher.get('https://quotes.toscrape.com/')

quotes = page.css('.quote')                          # CSS 选择器
quotes = page.xpath('//div[@class="quote"]')        # XPath
quotes = page.find_all('div', {'class': 'quote'})    # BeautifulSoup 风格
quotes = page.find_all('div', class_='quote')
quotes = page.find_all(class_='quote')
quotes = page.find_by_text('quote', tag='div')       # 按文本内容查找

quote_text = page.css('.quote')[0].css('.text::text').get()
quote_text = page.css('.quote').css('.text::text').getall()  # 链式选择
first_quote = page.css('.quote')[0]
author = first_quote.next_sibling.css('.author::text')       # 兄弟节点
parent_container = first_quote.parent                            # 父节点
similar_elements = first_quote.find_similar()                  # 相似元素
below_elements = first_quote.below_elements()                   # 下方元素

不发起请求也可以直接使用解析器:

from scrapling.parser import Selector

page = Selector("<html>...</html>")  # 之后用法完全一致

八、references 文档体系:技能的"知识底座"

技能自称"几乎把官方文档全部内容封装成了 Markdown,未经用户允许不要查外部来源或上网搜索"。其知识底座就是 references/ 目录,SKILL.md 的 References 一节按主题组织了索引:

文档 覆盖主题
mcp-server.md MCP 服务器工具、持久会话管理、基于 CDP 的远程浏览器、鉴权与能力边界
parsing/ HTML 解析的一切(主类、选择器、自适应解析)
fetching/ 抓取网站与会话持久化(静态/动态/隐身三类 Fetcher 选型)
spiders/ Spider 编写、代理轮换与高级特性,遵循类 Scrapy 的组织格式
integrations/scrapy.md 通过 scrapling_response 装饰器在现有 Scrapy 项目中使用 Scrapling 解析 API
migrating_from_beautifulsoup.md Scrapling 与 BeautifulSoup 的 API 快速对照

如果 references 内容显得不够新,技能最后一条指引指向仓库内官方文档目录 docs/(Markdown 全文,与本技能同仓库共存,如 mcp-server.mdmigrating_from_beautifulsoup.md)。这套"技能主文档 → 专题 references → 仓库官方文档"的三级结构,保证了 Agent 从速查到深究都有据可依,且全部证据在本地仓库内闭环。

九、Guardrails:技能的合规护栏

SKILL.md 以 "Guardrails (Always)" 一节收尾,给出了五条始终生效的行为约束,这也是评估一个抓取类技能是否"可信任"的关键指标:

  • 只抓取你有权访问的内容;
  • 尊重 robots.txt 与 ToS——在 Spider 上设置 robots_txt_obey = True 可自动强制执行;
  • 大规模爬取要加延迟(download_delay),或设 autothrottle_enabled = True 让 Spider 按域名自适应选择延迟、并在网站开始拦截时自动退避;
  • 未经授权不绕过付费墙或鉴权;
  • 绝不抓取个人/敏感数据。

这套护栏与 --ai-targeted 的防注入设计、内部参数校验(cdp_url/proxy auth 等)一起,构成了技能声明的"无需凭据、无需密钥、全程可控"的安全模型。

小结

SKILL.md 展示了"Agent 技能"的完整范式:frontmatter 声明触发条件与运行前置,正文给出从 Setup、CLI 命令组(含全部选项表与示例)、代码级 Fetchers/Spiders 用法到 references 知识索引的闭环路径,并以安全护栏收尾。对 AI Agent 而言,它把"何时用、怎么用、边界在哪"三个问题一次讲清;对开发者而言,--ai-targeted 的实现细节、impersonate 列表随机选择、多会话 Spider 与断点续爬等机制都可以在 scrapling/cli.pyscrapling/spiders/ 等源码中得到验证,配合 examples/ 中的四个可运行脚本,可以直接复现技能描述的每一项能力。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.12 K
2.72 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
527
590
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
904
1.82 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
854
1.34 K
docsdocs
暂无描述
Markdown
889
5.78 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.52 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.33 K
1.45 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
980
502
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
540
384