LLM上下文协议:为什么你的AI助手需要记忆、推理和示例
发布于 2025 年 1 月 24 日 • 阅读时间 8 分钟
教机器人编程的问题
想象一下:你递给某人一本字典,然后让他们写诗。他们认识每个单词,知道拼写和定义——但他们知道词语如何共舞吗?知道某些组合能唤起情感而另一些却平淡无奇吗?这正是当我们把API文档扔给AI助手并期待奇迹时所做的事情。
我花了无数个小时看着我的AI编程助手在我自己的库 Crawl4AI 上挣扎。尽管提供了全面的文档,它生成的代码在技术上是正确的,但实际上毫无用处。就像一个拿着短语手册说话的游客——语法正确,文化上却格格不入。
引入三维上下文协议
如果我们不是简单地倾倒信息,而是提供智慧呢?不仅仅是“是什么”,还有“如何”和“为什么”?这让我开发了所谓的LLM上下文协议——一种结构化方法,反映了人类真正掌握库的方式。
可以把它看作是AI上下文的HTTP。就像HTTP不规定你的网站内容,但为通信提供了可靠的结构一样,该协议不规定如何编写文档——它提供了一个框架,说明你的AI需要什么才能真正理解你的代码。
库智慧的三大支柱
# AsyncWebCrawler Design Philosophy - Reasoning Context
## Why Async-First Architecture?
Crawl4AI uses AsyncWebCrawler as its primary interface because modern web
scraping demands concurrency. Here's the thinking:
1. **Network I/O is slow**: Waiting synchronously wastes 90% of execution time
2. **Modern sites are complex**: Multiple resources load in parallel
3. **Scale matters**: You're rarely crawling just one page
## When to Use Session Management
Session management isn't just about performance—it's about appearing human:
- Use sessions when crawling multiple pages from the same domain
- Reuse browser contexts to maintain cookies and local storage
- But don't overdo it: too long sessions look suspicious
## The Cache Strategy Decision Tree
if static_content and infrequent_updates:
use_cache_mode('read_write')
elif dynamic_content and real_time_needed:
use_cache_mode('bypass')
else:
use_cache_mode('read_only') # Safe default
# Crawling with JavaScript execution
result = await crawler.arun(
url="https://example.com",
js_code="window.scrollTo(0, document.body.scrollHeight);",
wait_for="css:.lazy-loaded-content"
)
# Extracting structured data with CSS selectors
result = await crawler.arun(
url="https://shop.example.com",
extraction_strategy=CSSExtractionStrategy({
"prices": "span.price::text",
"titles": "h2.product-title::text"
})
)
# Session-based crawling with custom headers
async with crawler:
result1 = await crawler.arun(url1, session_id="product_scan")
result2 = await crawler.arun(url2, session_id="product_scan")
为什么这很重要(尤其是对于较小的LLM)
关于AI助手有一点:较小的模型根本无法思考。它们就像热心的实习生——充满潜力但需要清晰的指导。当你依赖大型语言模型从原始API文档中“弄清楚”时,你是在要求它从头开始重新发明你的库的哲学。每。一。次。
通过在这三个维度上提供结构化上下文,我们不仅仅是在记录——我们是在教学。我们传递的不仅仅是知识,还有智慧。
你的库的文化DNA
它反映了你的品味、你的架构决策、你关于事情应该如何完成的观点。一个没有推理的库就像一个没有技巧的食谱——当然,你有食材,但祝你好运做出能吃的东西。
想想看:当你学习一个新库时,你真正追求的是什么?你想要精通。而精通来自于理解: - 记忆告诉你什么是可能的 - 推理告诉你什么是明智的 - 示例向你展示什么是实用的
它们共同创造了智慧。
超越手动文档
现在,有趣的部分来了。我没有为 Crawl4AI 手工编写数千行结构化文档。谁有那么多时间?相反,我构建了一个工具,可以:
- 分析你的代码库
- 提取API签名和结构(记忆)
- 识别模式和架构决策(推理)
- 从测试和示例中收集实际用法(示例)
- 生成结构化的LLM上下文文件
美妙之处在于?这个工具正在成为 Crawl4AI 本身的一部分。因为如果我们要彻底改变AI理解我们代码的方式,我们不妨自动化它。
协议,而非规定
记住:这是一个协议,而不是规定。就像HTTP不告诉你建什么网站一样,LLM上下文协议也不规定你的文档风格。它只是说:
“如果你想让AI真正理解你的库,它需要三样东西:事实、哲学和模式。”
你如何交付这些取决于你。该协议只是确保在翻译过程中不会丢失任何重要内容。
亲自尝试
有兴趣为你自己的库实现这个吗?上下文生成工具将作为 Crawl4AI 的一部分开源。如果你对早期访问感兴趣或想讨论这种方法,请在 X @unclecode 上给我发私信。
因为让我们面对现实:如果我们要生活在一个AI编写我们一半代码的世界里,我们不妨好好教它。
最后的思考
想看看实际效果吗?查看 Crawl4AI LLM Context Builder,体验结构化上下文带来的不同。