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

Clawdbot 是如何实现永久记忆的?

下文是如何构建的在深入探讨记忆之前我们先来理解模型在每次请求时能看到什么[0] 系统提示词静态指令 条件指令 [1] 项目上下文引导文件AGENTS.md、SOUL.md 等 [2] 对话历史消息、工具调用、压缩摘要 [3] 当前消息系统提示词定义了Agent的能力和可用工具。与记忆相关的是项目上下文它包含了用户可编辑的Markdown文件这些文件会被注入到每次请求中这些文件位于Agent的工作空间中与记忆文件并存使得整个Agent的配置变得透明且可编辑。上下文 vs 记忆理解上下文和记忆之间的区别是理解Clawdbot的基础。上下文是模型在单次请求中能看到的一切上下文 系统提示词 对话历史 工具结果 附件上下文的特性临时的——只存在于本次请求期间有限的——受限于模型的上下文窗口例如20万token昂贵的——每个token都计入API成本和速度记忆是存储在磁盘上的内容记忆 MEMORY.md memory/*.md 会话转录文件记忆的特性持久的——在重启、日复一日、月复一月后依然存在无限的——可以无限增长低成本的——存储不产生API费用可搜索的——建立索引以支持语义检索记忆工具Agent通过两个专用工具来访问记忆1. memory_search用途在所有文件中查找相关的记忆{ name: memory_search, description: 强制性回忆步骤在回答关于之前工作、决策、日期、人员、偏好或待办事项的问题之前对MEMORY.md和memory/*.md进行语义搜索, parameters: { query: 我们对API做了什么决定, maxResults: 6, minScore: 0.35 } }返回结果{ results: [ { path: memory/2026-01-20.md, startLine: 45, endLine: 52, score: 0.87, snippet: ## API 讨论\n决定为了简单起见使用REST而不是GraphQL..., source: memory } ], provider: openai, model: text-embedding-3-small }2. memory_get用途在找到内容后读取具体内容{ name: memory_get, description: 在使用memory_search后从记忆文件中读取特定行, parameters: { path: memory/2026-01-20.md, from: 45, lines: 15 } }返回结果{ path: memory/2026-01-20.md, text: ## API 讨论\n\n与团队讨论API架构。\n\n### 决策\n我们选择REST而非GraphQL原因如下\n1. 实现更简单\n2. 更好的缓存支持\n3. 团队更熟悉\n\n### 端点\n- GET /users\n- POST /auth/login\n- GET /projects/:id }写入记忆并没有专门的memory_write工具。Agent使用标准的写入和编辑工具来写入记忆——这些工具它本来就在用于处理任何文件。由于记忆就是普通的Markdown你也可以手动编辑这些文件它们会被自动重新索引。写入位置的决策是通过AGENTS.md中的提示来驱动的在预压缩刷新和会话结束时也会自动进行写入后续章节会介绍。记忆存储Clawdbot的记忆系统建立在记忆就是Agent工作空间中的纯Markdown这一原则之上。双层记忆系统记忆位于Agent的工作空间中默认~/clawd/~/clawd/ ├── MEMORY.md - 第二层长期策划的知识 └── memory/ ├── 2026-01-26.md - 第一层今天的笔记 ├── 2026-01-25.md - 昨天的笔记 ├── 2026-01-24.md - ...以此类推 └── ...第一层每日日志memory/YYYY-MM-DD.md这些是仅追加的每日笔记Agent会在一天中随时写入。当Agent想要记住某事或被明确告知要记住某事时就会写入这里。# 2026-01-26 ## 10:30 AM - API 讨论 与用户讨论REST vs GraphQL。决策为了简单使用REST。 关键端点/users、/auth、/projects。 ## 2:15 PM - 部署 将v2.3.0部署到生产环境。没有问题。 ## 4:00 PM - 用户偏好 用户提到他们喜欢TypeScript胜过JavaScript。第二层长期记忆MEMORY.md这是经过策划的、持久的知识。当发生重大事件、想法、决策、观点和学到的教训时Agent会写入这里。# 长期记忆 ## 用户偏好 - 喜欢TypeScript胜过JavaScript - 喜欢简洁的解释 - 正在做Acme Dashboard项目 ## 重要决策 - 2026-01-15选择PostgreSQL作为数据库 - 2026-01-20采用REST而非GraphQL - 2026-01-26使用Tailwind CSS进行样式设计 ## 关键联系人 - Alice (aliceacme.com) - 设计负责人 - Bob (bobacme.com) - 后端工程师Agent如何知道要读取记忆AGENTS.md文件会自动加载包含以下指令## 每次会话 在做其他事情之前 1. 阅读 SOUL.md - 这是你是谁 2. 阅读 USER.md - 这是你在帮助谁 3. 阅读 memory/YYYY-MM-DD.md今天和昨天获取近期上下文 4. 如果是在主会话中与你的主人直接聊天还要阅读 MEMORY.md 不要请求许可直接做。记忆如何被索引当你保存一个记忆文件时后台会发生以下事情┌─────────────────────────────────────────────────────────────┐ │ 1. 文件保存 │ │ ~/clawd/memory/2026-01-26.md │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 2. 文件监视器检测到变化 │ │ Chokidar 监视 MEMORY.md memory/**/*.md │ │ 防抖1.5秒以批量处理快速写入 │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 3. 分块 │ │ 分割成约400 token的块重叠80 token │ │ │ │ ┌────────────────┐ │ │ │ 块 1 │ │ │ │ 第 1-15 行 │──────┐ │ │ └────────────────┘ │ │ │ ┌────────────────┐ │ (80 token 重叠) │ │ │ 块 2 │◄─────┘ │ │ │ 第 12-28 行 │──────┐ │ │ └────────────────┘ │ │ │ ┌────────────────┐ │ │ │ │ 块 3 │◄─────┘ │ │ │ 第 25-40 行 │ │ │ └────────────────┘ │ │ │ │ 为什么用400/80平衡语义连贯性与粒度。 │ │ 重叠确保跨越块边界的事实能被两边捕获。 │ │ 两个值都是可配置的。 │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 4. 嵌入 │ │ 每个块 - 嵌入提供商 - 向量 │ │ │ │ 讨论REST vs GraphQL - │ │ OpenAI/Gemini/Local - │ │ [0.12, -0.34, 0.56, ...] (1536 维) │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 5. 存储 │ │ ~/.clawdbot/memory/agentId.sqlite │ │ │ │ 表 │ │ - chunks (id, path, start_line, end_line, text, hash) │ │ - chunks_vec (id, embedding) - sqlite-vec │ │ - chunks_fts (text) - FTS5 全文搜索 │ │ - embedding_cache (hash, vector) - 避免重复嵌入 │ └─────────────────────────────────────────────────────────────┘sqlite-vec是一个SQLite扩展它直接在SQLite中实现向量相似度搜索无需外部向量数据库。FTS5是SQLite内置的全文搜索引擎为BM25关键词匹配提供支持。两者结合使Clawdbot能够从一个轻量级数据库文件中运行混合搜索语义 关键词。记忆如何被搜索当你搜索记忆时Clawdbot会并行运行两种搜索策略。向量搜索语义找到意思相同的内容BM25搜索关键词找到包含确切token的内容。结果通过加权评分合并最终得分 (0.7 * 向量得分) (0.3 * 文本得分)为什么是70/30语义相似性是记忆回忆的主要信号但BM25关键词匹配能捕捉向量可能遗漏的确切术语名称、ID、日期。低于minScore阈值默认0.35的结果会被过滤掉。所有这些值都是可配置的。这确保无论你是在搜索概念那个数据库的事情还是具体内容POSTGRES_URL都能获得良好的结果。多Agent记忆Clawdbot支持多个Agent每个Agent都有完全独立的记忆~/.clawdbot/memory/ # 状态目录索引 ├── main.sqlite # main Agent的向量索引 └── work.sqlite # work Agent的向量索引 ~/clawd/ # main Agent工作空间源文件 ├── MEMORY.md └── memory/ └── 2026-01-26.md ~/clawd-work/ # work Agent工作空间源文件 ├── MEMORY.md └── memory/ └── 2026-01-26.mdMarkdown文件事实来源位于每个工作空间中而SQLite索引派生数据位于状态目录中。每个Agent都有自己的工作空间和索引。记忆管理器通过agentId workspaceDir来区分因此不会自动发生跨Agent记忆搜索。Agent能读取彼此的记忆吗默认不能。每个Agent只能看到自己的工作空间。但是工作空间是一个软沙盒默认工作目录而不是硬边界。除非启用严格的沙盒机制否则Agent理论上可以使用绝对路径访问另一个工作空间。这种隔离对于分离上下文很有用。一个用于WhatsApp的个人Agent和一个用于Slack的工作Agent各自拥有独立的记忆和个性。压缩每个AI模型都有上下文窗口限制。Claude有20万tokenGPT-5.1有100万。长对话最终会触及这个上限。当这种情况发生时Clawdbot使用压缩将旧对话总结为紧凑的条目同时保留最近消息的完整性。┌─────────────────────────────────────────────────────────────┐ │ 压缩前 │ │ 上下文180,000 / 200,000 token │ │ │ │ [第1轮] 用户我们建个API吧 │ │ [第2轮] Agent好的你需要什么端点 │ │ [第3轮] 用户用户和认证相关的 │ │ [第4轮] Agent*创建了500行模式定义* │ │ [第5轮] 用户加上限流功能 │ │ [第6轮] Agent*修改代码* │ │ ...还有100多轮... │ │ [第150轮] 用户状态怎么样了 │ │ │ │ ⚠️ 接近限制 │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 触发压缩 │ │ │ │ 1. 将第1-140轮总结为紧凑摘要 │ │ 2. 保留第141-150轮不变近期上下文 │ │ 3. 将摘要持久化到JSONL转录文件 │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 压缩后 │ │ 上下文45,000 / 200,000 token │ │ │ │ [摘要] 构建了带/users、/auth端点的REST API。 │ │ 实现了JWT认证、限流100次/分钟、PostgreSQL数据库。 │ │ 已部署到预发布环境v2.4.0。 │ │ 当前重点生产环境部署准备。 │ │ │ │ [第141-150轮原样保留] │ │ │ └─────────────────────────────────────────────────────────────┘自动 vs 手动压缩自动当接近上下文限制时触发在详细模式下你会看到 自动压缩完成原始请求会用压缩后的上下文重试手动使用 /compact 命令/compact 重点关注决策和未解决的问题与某些优化不同压缩会持久化到磁盘。摘要被写入会话的JSONL转录文件因此未来的会话以压缩后的历史开始。记忆刷新基于LLM的压缩是一个有损过程。重要信息可能被总结掉并可能丢失。为了应对这一点Clawdbot使用了预压缩记忆刷新。┌─────────────────────────────────────────────────────────────┐ │ 上下文接近限制 │ │ │ │ ████████████████████████████░░░░░░░░ 上下文的75% │ │ ↑ │ │ 超过软阈值 │ │ (contextWindow - reserve - softThreshold)│ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 静默记忆刷新轮次 │ │ │ │ 系统预压缩记忆刷新。现在存储持久的 │ │ 记忆使用 memory/YYYY-MM-DD.md。 │ │ 如果没有要存储的回复 NO_REPLY。 │ │ │ │ Agent审查对话中的重要信息 │ │ 将关键决策/事实写入记忆文件 │ │ - NO_REPLY用户看不到任何内容 │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 安全进行压缩 │ │ │ │ 重要信息现在已在磁盘上 │ │ 压缩可以在不丢失知识的情况下进行 │ └─────────────────────────────────────────────────────────────┘记忆刷新可以在clawdbot.yaml文件或clawdbot.json文件中配置。{ agents: { defaults: { compaction: { reserveTokensFloor: 20000, memoryFlush: { enabled: true, softThresholdTokens: 4000, systemPrompt: 会话接近压缩。现在存储持久的记忆。, prompt: 将持久的笔记写入 memory/YYYY-MM-DD.md如果没有要存储的回复 NO_REPLY。 } } } } }剪枝工具结果可能非常庞大。单个exec命令可能输出5万个字符的日志。剪枝会修剪这些旧输出而不重写历史。这是一个有损过程旧输出无法恢复。┌─────────────────────────────────────────────────────────────┐ │ 剪枝前内存中 │ │ │ │ 工具结果exec[5万个字符的npm install输出] │ │ 工具结果read[大型配置文件1万个字符] │ │ 工具结果exec[构建日志3万个字符] │ │ 用户构建成功了吗 │ └─────────────────────────────────────────────────────────────┘ │ ▼ 软修剪 硬清除 ┌─────────────────────────────────────────────────────────────┐ │ 剪枝后发送给模型 │ │ │ │ 工具结果execnpm WARN deprecated...[已截断] │ │ ...成功安装。 │ │ 工具结果read[旧工具结果内容已清除] │ │ 工具结果exec[保留 - 太新不适合剪枝] │ │ 用户构建成功了吗 │ └─────────────────────────────────────────────────────────────┘磁盘上的JSONL文件保持不变完整输出仍然在那里缓存TTL剪枝Anthropic会对提示词前缀进行最多5分钟的缓存以减少重复调用的延迟和成本。当相同的提示词前缀在TTL窗口内发送时缓存的token成本降低约90%。TTL过期后下一个请求必须重新缓存整个提示词。问题如果会话在TTL之后闲置下一个请求会失去缓存必须以完整的缓存写入价格重新缓存完整的对话历史。缓存TTL剪枝通过在缓存过期后检测并修剪旧工具结果来解决这个问题。更小的提示词重新缓存意味着更低的成本{ agent: { contextPruning: { mode: cache-ttl, ttl: 600, keepLastAssistants: 3, softTrim: { maxChars: 4000, headChars: 1500, tailChars: 1500 }, hardClear: { enabled: true, placeholder: [旧工具结果内容已清除] } } } }会话生命周期会话不会永远持续。它们根据可配置的规则进行重置为记忆创建自然的边界。默认行为是每天重置。但也有其他模式可用。会话记忆钩子当你运行 /new 开始一个新会话时会话记忆钩子可以自动保存上下文/new │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 触发会话记忆钩子 │ │ │ │ 1. 从结束会话中提取最后15条消息 │ │ 2. 通过LLM生成描述性slug │ │ 3. 保存到 ~/clawd/memory/2026-01-26-api-design.md │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 新会话开始 │ │ │ │ 之前的上下文现在可以通过 memory_search 搜索 │ └─────────────────────────────────────────────────────────────┘总结Clawdbot的记忆系统之所以成功是因为它遵循了几个关键原则

相关文章:

Clawdbot 是如何实现永久记忆的?

下文是如何构建的在深入探讨记忆之前,我们先来理解模型在每次请求时能看到什么:[0] 系统提示词(静态指令 条件指令) [1] 项目上下文(引导文件:AGENTS.md、SOUL.md 等) [2] 对话历史&#xff08…...

notepad-- Markdown实时预览功能高效使用全攻略

notepad-- Markdown实时预览功能高效使用全攻略 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。 项目地址: https://gitcode.com/GitHub_Trending/no/notepad-- 作为一款支持Windows、…...

FanControl终极指南:如何免费掌控电脑风扇,告别噪音困扰

FanControl终极指南:如何免费掌控电脑风扇,告别噪音困扰 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHu…...

客服机器人系统会不会发生宕机?Agent开放平台保障有哪些,数据安全不过关能赔?

在电商和数字化服务高速发展的今天,企业每天面对海量客户咨询。传统人工客服难以应对高峰期压力,而智能客服机器人系统成为重要解决方案。许多商家关心一个核心问题:客服机器人系统会不会发生宕机?一旦系统出现故障,是…...

昇腾910B分布式微调避坑指南:从SSH免密到权重合并的5个常见问题

昇腾910B分布式微调实战避坑手册:5个关键环节的深度解析 当你在深夜的机房盯着屏幕上闪烁的错误日志,第八次尝试启动分布式微调任务却依然卡在SSH认证环节时,那种混合着焦虑与挫败的感受,我太熟悉了。这不是又一篇按部就班的操作手…...

将大疆无人机GPS数据接入ROS:一份从PSDK C++示例到sensor_msgs/NavSatFix话题的完整改造指南

大疆无人机GPS数据与ROS深度集成实战指南 1. 系统架构设计与环境准备 在机器人导航系统中,高精度定位数据是核心要素之一。大疆Matrice 350 RTK无人机搭载的GPS/RTK模块能够提供厘米级定位精度,而ROS(Robot Operating System)作为…...

大学物理电磁场公式

1,毕奥-萨伐尔定律 2,安培定律(电流连续性) 3,库伦定律 如果两个电荷电量为q1和q2,距离为r,它们受到相互间作用力F 同种电荷互相吸引,不同电荷相互排斥; 电荷作用力大小与电荷大小成正比,与距离平方成反比; 作用力方向与电荷连线方向相反或一致 4,法拉第定律 5…...

别再被芯片手册吓到!用74HC595手把手教你读懂时序图(附示波器实测波形)

从零破解74HC595时序图:示波器实战与代码调优指南 第一次翻开74HC595的数据手册时,那些纵横交错的箭头、虚线、时间参数让我彻底懵了。作为电子爱好者,我们常被告知"要严格按照时序图操作",但没人告诉我们这些符号究竟对…...

快速验证dify部署方案:用快马生成环境检查与部署脚本原型

最近在折腾dify的本地部署,发现环境配置这块特别容易踩坑。作为一个开源AI应用开发平台,dify的部署涉及Python版本、Docker环境、端口占用等一系列依赖项检查,手动操作既繁琐又容易遗漏步骤。正好发现InsCode(快马)平台能快速生成这类工具的原…...

​如何选择专业的液晶面板废气治理厂家

从智能手机到超高清大屏,液晶面板已成为信息时代不可或缺的核心组件。然而,在其精密制造过程中,光刻、显影、刻蚀等工序会产生大量成分复杂的有机废气、酸性气体及含尘废气。随着环保标准日益严格及面板厂产能不断扩张,【液晶面板…...

电子工程师必看:MOS管、三极管、IGBT选型指南(附实际电路设计案例)

电子工程师必看:MOS管、三极管、IGBT选型指南(附实际电路设计案例) 在电子设计的世界里,选择合适的功率开关器件往往决定着整个电路的成败。作为一名电子工程师,我曾在多个项目中因为选型不当而付出惨痛代价——从简单…...

router.push(‘/‘)跳转不触发重定向

我来帮你分析为什么 router.push(/) 没有按照预期跳转到 /fenlei 路径。 首先让我查看相关的代码文件: router/index.js{path: /,component: Layout,redirect: /fenlei},已查看文件 index.vue 225-240 已查看文件 index.js 65-85 现在让我查看更多上下文&#xff0c…...

Harness:AI Agent 走向生产级的关键基础设施

摘要随着大语言模型能力持续增强,AI Agent 正从概念验证和演示场景,逐步进入复杂任务交付与生产系统落地阶段。然而,在长周期、高复杂度任务中,Agent 仍普遍面临连贯性不足、自我评估失真、结果不可控等问题。实践表明&#xff0c…...

华为OD机考双机位C卷 - 数字游戏 (Java)

# 数字游戏 2026华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 华为OD机试双机位C卷真题目录(Java)点击查看: 【全网首发】2026华为OD机位C卷 机考真题题库含考点说明以及在线OJ(Java题解) 题目描述 小明玩一个游戏。 系统发1+n张牌,每张牌上有一个整数。 第一张给…...

PlugY:重塑暗黑破坏神2单机体验的技术突破

PlugY:重塑暗黑破坏神2单机体验的技术突破 【免费下载链接】PlugY PlugY, The Survival Kit - Plug-in for Diablo II Lord of Destruction 项目地址: https://gitcode.com/gh_mirrors/pl/PlugY 一、问题篇:暗黑破坏神2单机模式的技术痛点 作为一…...

基于n8n的春联生成模型自动化工作流设计

基于n8n的春联生成模型自动化工作流设计 春联作为传统文化的重要组成部分,每年春节都面临着巨大的创作需求。传统手工创作方式效率低下,而AI技术为这一场景带来了全新的解决方案。本文将介绍如何利用n8n构建春联生成模型的自动化工作流,实现从…...

猫抓:网页资源获取工具的技术革新与实战应用

猫抓:网页资源获取工具的技术革新与实战应用 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字化时代,我们每天浏览大量…...

扑兔AI营销获客:AI文案缺乏人味儿的技术原因与优化路径

AI生成的文案,常表现出语言生硬、段落跳跃、事实信息不准确等问题。根本原因在于,多数AI写作工具基于文本拼接逻辑,而非模拟人类写作的完整思维过程——它们不知道写给谁看、没有逻辑链条、不核实事实。扑兔AI软文生成采用12步真人级创作流程…...

教育培训品牌视觉体系全攻略:5步打造统一、专业、让人过目不忘的品牌形象

教育培训机构的品牌视觉是否混乱,直接影响家长和学员的第一印象。宣传海报用一种蓝,公众号封面又是另一种蓝,课程介绍册的字体也和官网不一样。这种视觉不统一的问题,会让品牌显得不够专业,降低信任感。今天分享一套用…...

CW32L012FOC开源项目推进

作为一枚合格的“职场摸鱼学”实践者(手动狗头),我坚决不建议在长假结束后立刻全身心扎进任务清单。那太不“可持续发展”了。 所以,今天上午,我可以理直气壮地把“整理工位”作为最高优先级。说得具体点,…...

如何提高YOLO8目标检测的准确性?

上面主要就是大致了解方法,省流请看最下面1.提高置信度阈值yolo predict modelyolov8n.pt source0 classes0 conf0.5​​​​ conf0.3(灵敏,但容易误检)​​​​ conf0.5(更准,误检少)​​​​ …...

AQRC智金未来:全球资产配置的算法革命已来

在康涅狄格州的格林威治(Greenwich),清晨的咖啡总是伴随着全球市场的开盘。这里不仅是顶级对冲机构的“隐居地”,更是AQRC智金未来核心策略的孵化场。很多人习惯于讨论涨跌,但对于智金未来而言,最迷人的数字…...

C语言:构造类型

内容提要构造类型结构体共用体/联合体构造类型数据类型基本类型/基础类型/简单类型整型短整型:short -- 2字节基本整型:int -- 4字节长整型:long -- 32位系统4字节/ 64位系统8字节长长整型:long long 8字节(大多数现代…...

001、性能优化基础:慢SQL诊断与执行计划分析

昨天凌晨又被告警短信吵醒了,线上某核心接口的P99响应时间飙到了3秒。登录服务器一看,MySQL的CPU已经跑满,processlist里堆了二十几个相同的查询——又是慢SQL惹的祸。这种场景咱们做后端开发的太熟悉了,今天就来聊聊怎么系统性地…...

C++高性能网络库ZLToolKit资源池源码解析:如何用智能指针实现对象复用与自动回收

C高性能网络库ZLToolKit资源池源码解析:智能指针实现对象复用与自动回收 在C高性能服务器开发中,频繁的对象创建与销毁往往是性能瓶颈之一。想象一下这样的场景:一个直播服务器每秒需要处理数万条消息,每条消息都需要临时创建对象…...

JVM 内存管理 2026:深度解析与调优实战

JVM 内存管理 2026:深度解析与调优实战我是 Alex,一个在 CSDN 写 Java 架构思考的暖男。看到新手博主写技术踩坑记录总会留言:"这个 debug 思路很 solid,下次试试加个 circuit breaker 会更优雅。"我的文章里从不说空话…...

Steam API集成:构建智能游戏生态的完整PHP解决方案

Steam API集成:构建智能游戏生态的完整PHP解决方案 【免费下载链接】Steam A composer package to make use of the steam web api. 项目地址: https://gitcode.com/gh_mirrors/stea/Steam 在当今游戏开发和社区管理领域,与Steam平台的深度集成已…...

MIL图像库实战:从采集卡配置到Qt应用开发

1. 工业视觉项目开发全流程解析 第一次接触MIL图像库时,我被它强大的硬件抽象能力震撼到了。这个由Matrox开发的图像处理库,就像一位经验丰富的翻译官,把不同品牌采集卡的硬件差异统统屏蔽掉。想象一下,你手里有Basler、AVT、Dals…...

DriverStore Explorer:Windows驱动全生命周期管理的开源解决方案——解决驱动冗余与设备冲突的高效工具

DriverStore Explorer:Windows驱动全生命周期管理的开源解决方案——解决驱动冗余与设备冲突的高效工具 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer Windows系统中驱动程…...

如何解决bilibili-api中BV号与AV号转换的技术难题?

如何解决bilibili-api中BV号与AV号转换的技术难题? 【免费下载链接】bilibili-api 哔哩哔哩常用API调用。支持视频、番剧、用户、频道、音频等功能。原仓库地址:https://github.com/MoyuScript/bilibili-api 项目地址: https://gitcode.com/gh_mirrors…...