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

龙虾-OpenClaw一文详细了解-手搓OpenClaw-1

龙虾-OpenClaw一文详细了解-手搓OpenClaw-1这一系列我会用 Python 一步步手搓一个“可运行、可扩展、可解释”的 OpenClaw 简化版。第一篇先不追求功能多而是先搭好最重要的骨架服务入口、会话并发模型、最小 Agent Loop。0. 为什么要手搓 OpenClawOpenClaw 很强但完整工程体量也很大。对于大多数开发者来说直接阅读全量代码会有三个痛点模块多Gateway、Agent、Tools、Sessions、Channels 互相耦合路径长一条消息从输入到回复跨越多个子系统调试难没有自己的“最小版本”很难定位问题所以这个系列采用一个更实用的学习路径先做最小闭环再逐步补齐能力。1. 目标用 Python 从 0 到 1 复现 OpenClaw 的核心能力Agent Loop工具调用 多轮推理Session 与并发隔离记忆系统短期 长期Skills 系统分层加载Web/Telegram 等渠道接入第一篇的阶段目标是跑起 FastAPI 服务打通一个最小/v1/chat对话接口具备会话隔离与并发控制每会话锁 全局信号量2. 目标架构用户输入: CLI/Web/Telegram/DiscordGateway ServerSessionManagerSession Lock Global SemaphoreAgent LoopPrompt BuilderLLM Provider AdapterTool Runtimeexec/web/search/read/write...Memory Manager短期会话历史长期记忆: MEMORY.md 日志Knowledge RAGBM25 Embedding RRF RerankSkill RegistryL1 元数据L2 指令加载L3 资源加载Cron Scheduler3. 技术选型语言Python 3.11服务框架FastAPIWeb/Dashboard/API 一体模型接入先用简化 Provider 抽象后续切真实 OpenAI Compatible并发模型asyncio 每会话Lock 全局Semaphore配置与数据模型Pydantic v2pydantic-settings日志标准logging后续可升级 JSON 结构化日志任务调度APScheduler后续阶段引入数据库第一篇先不强依赖阶段二引入PostgreSQL pgvector4. 第一篇完成了什么本篇配套工程目录openclaw_py下载地址:https://gitee.com/wisdomfriend/openclaw_py已经有这些关键模块app/main.pyFastAPI 启动入口app/api/routes_chat.py最小聊天接口app/session/manager.py会话复用 并发控制app/core/agent.py最小 Agent Loop先支持 echo 与工具占位app/core/tools.py工具注册与调用骨架run.py一键启动uvicorn.env与requirements.txt本地运行基础配置5. 如何运行可复制cdopenclaw_py python-mvenv .venv .venv\Scripts\activate pipinstall-rrequirements.txt python run.py服务启动后健康检查http://127.0.0.1:7788/healthOpenAPI 文档http://127.0.0.1:7788/docs测试聊天接口PowerShellcurl-XPOSThttp://127.0.0.1:7788/v1/chat^-HContent-Type: application/json^-d{\session_id\:\demo\,\message\:\hello\}6. 设计细节为什么 SessionManager 要先做很多人一开始只关心 LLM 调用但真实系统更容易先死在并发上。如果同一个session_id同时进两条消息不加锁就会出现历史消息交错写入上下文错乱回复“串台”工具调用顺序被打乱所以第一篇就把这一层打好同一会话串行asyncio.Lock全局会话限流asyncio.Semaphore这一步是后面做“记忆系统”和“多渠道接入”的地基。from__future__importannotationsimportasynciofromcontextlibimportasynccontextmanagerfromtypingimportAsyncIteratorfromapp.configimportsettingsfromapp.core.agentimportAgentclassSessionManager:def__init__(self,max_concurrent:int4)-None:self._sessions:dict[str,Agent]{}self._locks:dict[str,asyncio.Lock]{}self._semaphoreasyncio.Semaphore(max_concurrent)defget_or_create(self,session_id:str)-Agent:ifsession_idnotinself._sessions:self._sessions[session_id]Agent()returnself._sessions[session_id]defget_lock(self,session_id:str)-asyncio.Lock:ifsession_idnotinself._locks:self._locks[session_id]asyncio.Lock()returnself._locks[session_id]asynccontextmanagerasyncdefacquire(self,session_id:str)-AsyncIterator[None]:lockself.get_lock(session_id)asyncwithlock:asyncwithself._semaphore:yielddef__len__(self)-int:returnlen(self._sessions)_session_managerSessionManager(max_concurrentsettings.max_concurrent_agents)defget_session_manager()-SessionManager:return_session_manager7. 这篇没做什么为了保证节奏清晰第一篇有意不做不接真实大模型 API先保留 Provider 接口不做复杂工具协议先保留 Tool Runtime 骨架不做数据库与向量检索留给阶段二不做 Telegram/Discord 真接入留给阶段三8. 常见坑与排查端口占用把.env里的PORT改掉全局环境依赖冲突优先用.venv不要直接污染系统 Python9. 下一篇预告下一篇我会接入真实的OpenAI-Compatible Provider把当前的EchoProvider替换掉内容包括.env增加OPENAI_API_KEY与OPENAI_BASE_URLProvider 抽象如何兼容不同模型厂商超时、重试、错误映射的最小实现到那时这个项目就会从“骨架”进化成“真能聊天的 Agent”。

相关文章:

龙虾-OpenClaw一文详细了解-手搓OpenClaw-1

龙虾-OpenClaw一文详细了解-手搓OpenClaw-1 这一系列我会用 Python 一步步手搓一个“可运行、可扩展、可解释”的 OpenClaw 简化版。 第一篇先不追求功能多,而是先搭好最重要的骨架:服务入口、会话并发模型、最小 Agent Loop。 0. 为什么要手搓 OpenClaw…...

原神帧率解锁指南:3步突破60FPS限制,释放硬件全部性能!

原神帧率解锁指南:3步突破60FPS限制,释放硬件全部性能! 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 还在为《原神》的60帧上限而烦恼吗&#xff1f…...

从B站视频到毕业设计:三相四桥臂的三种主流控制方案到底怎么选?(MPC/3D-SVPWM/载波调制深度对比)

三相四桥臂逆变器控制方案深度对比:从理论到工程实践的选择指南 在电力电子领域,三相四桥臂逆变器的控制策略选择一直是工程师和研究者面临的关键挑战。不同于传统的三相三桥臂结构,第四桥臂的引入虽然解决了不平衡负载下的中性点电流问题&a…...

告别审稿追踪焦虑:Elsevier Tracker如何帮我每月节省6小时学术管理时间

告别审稿追踪焦虑:Elsevier Tracker如何帮我每月节省6小时学术管理时间 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 作为一名活跃在科研一线的学者,我深知学术投稿过程中那种持续的不确定…...

TikTok搜索数据爬虫实战:用PHP+Node搞定那个烦人的x-bogus签名(附完整代码)

TikTok搜索数据爬虫实战:PHP与Node.js协同破解x-bogus签名 1. 为什么x-bogus成为爬虫开发者的噩梦 每次尝试抓取TikTok搜索数据时,开发者都会遇到那个令人头疼的x-bogus参数。这个看似随机的字符串实际上是TikTok反爬系统的核心防线之一。它通过对请求参…...

LoRA训练数据准备:lora-scripts自动标注与预处理实操教程

LoRA训练数据准备:lora-scripts自动标注与预处理实操教程 1. 工具简介与核心价值 lora-scripts是一款开箱即用的LoRA训练自动化工具,它将复杂的模型微调流程封装为简单易用的命令行操作。对于想要定制Stable Diffusion模型风格或优化LLM特定能力的开发…...

1222万人同台竞技——这套AI工具组合,正在帮更多毕业生把简历捞率翻倍

2026届高校毕业生规模预计达1222万人,创历史新高。在这个数字背后,是更多人在同一个时间窗口、竞争有限的岗位机会。如何在同等条件下,让自己的求职路走得更快、更准、更稳,是2026春招最核心的命题。 这篇文章,我们想…...

实战分享:如何用AST技术还原Akamai 2.0混淆后的JS代码(附避坑指南)

深入解析AST技术在Akamai 2.0 JS代码还原中的应用 现代Web安全防护体系中,代码混淆技术已成为保护前端逻辑的重要手段。作为行业领先的安全解决方案提供商,Akamai在其2.0版本中引入了更为复杂的JS混淆机制,这对逆向工程提出了新的挑战。本文将…...

OpenClaw性能优化:降低Phi-3-mini-128k-instruct调用Token消耗的7个技巧

OpenClaw性能优化:降低Phi-3-mini-128k-instruct调用Token消耗的7个技巧 1. 为什么需要关注Token消耗? 当我第一次在本地部署OpenClaw并接入Phi-3-mini-128k-instruct模型时,就被它的长文本处理能力惊艳到了。但运行一周后查看账单&#xf…...

GLM-4.7-Flash部署避坑指南:Ollama常见问题与解决方法

GLM-4.7-Flash部署避坑指南:Ollama常见问题与解决方法 1. 部署前的准备工作 1.1 系统环境检查 在开始部署GLM-4.7-Flash之前,确保你的系统满足以下基本要求: 操作系统:支持Windows 10/11、macOS 10.15或主流Linux发行版内存&a…...

GLM-OCR模型开箱即用体验:CSDN星图GPU平台一键部署

GLM-OCR模型开箱即用体验:CSDN星图GPU平台一键部署 最近在做一个需要批量处理图片文字识别的项目,传统的手动部署OCR模型,光是配环境、装依赖、解决版本冲突就能耗掉大半天,更别提还得自己搞定GPU驱动和显存分配了。正当我为此头…...

RimWorld模组管理终极指南:从混乱到秩序的专业解决方案

RimWorld模组管理终极指南:从混乱到秩序的专业解决方案 【免费下载链接】RimSort RimSort is an open source mod manager for the video game RimWorld. There is support for Linux, Mac, and Windows, built from the ground up to be a reliable, community-man…...

为什么峰值电流控制不适合Boost PFC

结论:因为峰值电流控制时THD很大。分析...

如何突破信息壁垒?Bypass Paywalls Clean的全方位应用指南

如何突破信息壁垒?Bypass Paywalls Clean的全方位应用指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的时代,优质内容往往被付费墙层层阻隔。B…...

RTX 4090用户必看:Anything to RealCharacters 2.5D转真人引擎显存监控指南

RTX 4090用户必看:Anything to RealCharacters 2.5D转真人引擎显存监控指南 1. 为什么RTX 4090用户需要关注显存管理 当你在RTX 4090上运行Anything to RealCharacters引擎时,24GB的显存看似充裕,但在处理高分辨率图像转换时仍然可能面临挑…...

FUTURE POLICE模型推理服务化:使用FastAPI构建高性能API网关

FUTURE POLICE模型推理服务化:使用FastAPI构建高性能API网关 想把训练好的FUTURE POLICE模型变成一个随时可以调用的服务吗?比如,让一个移动应用上传一段音频,就能立刻收到模型的分析结果。自己写个简单的脚本虽然也能跑&#xf…...

vLLM-v0.11.0完整指南:从环境搭建到Qwen3-VL-4B服务调用全流程

vLLM-v0.11.0完整指南:从环境搭建到Qwen3-VL-4B服务调用全流程 1. 环境准备与快速部署 1.1 硬件与系统要求 要运行vLLM-v0.11.0并部署Qwen3-VL-4B模型,建议满足以下硬件配置: 显卡:NVIDIA GPU(推荐RTX 4060 Ti 16G…...

OpenClaw技能库怎么用?从获取、下载到添加使用一篇讲清

OpenClaw技能库怎么用?从获取、下载到添加使用一篇讲清 关键词:openclaw技能库、OpenClaw技能库、OpenClaw Skill、OpenClaw教程、AI智能体、EasyClaw 摘要 很多人开始接触 OpenClaw 后,真正卡住的往往不是“听不懂概念”,而是…...

LightOnOCR-2-1B GPU算力方案:单卡A10部署 vs 双卡T4分片部署成本效益对比

LightOnOCR-2-1B GPU算力方案:单卡A10部署 vs 双卡T4分片部署成本效益对比 1. 项目背景与需求分析 LightOnOCR-2-1B 是一个拥有10亿参数的多语言OCR识别模型,支持包括中文、英文、日文、法文、德文、西班牙文、意大利文、荷兰文、葡萄牙文、瑞典文和丹…...

卡梅德生物技术快报|重组蛋白昆虫表达培养基对比与工艺选型

摘要本文为卡梅德生物技术快报技术文章,围绕重组蛋白昆虫表达上游工艺,对比三款工业级无血清培养基性能,给出 Sf9/High-Five 细胞适配方案、驯化流程、培养参数与质控要点,为生物制药上游工艺开发与放大提供工程化实践指导。1 引言…...

Nomic-Embed-Text-V2-MoE企业内训:Java面试题中的算法与数据结构优化思路

Nomic-Embed-Text-V2-MoE企业内训:Java面试题中的算法与数据结构优化思路 1. 引言 最近在帮团队做技术内训,发现一个挺有意思的现象:大家准备Java面试,尤其是算法和数据结构部分,还是老一套——刷题海。LeetCode刷了…...

PyTorch 2.9实战:用Profiler分析BERT微调,找出LayerNorm性能瓶颈

PyTorch 2.9实战:用Profiler分析BERT微调,找出LayerNorm性能瓶颈 1. 为什么需要分析BERT微调性能 在自然语言处理任务中,BERT模型的微调是常见的实践场景。然而随着模型规模增大,训练过程中的性能问题日益凸显。许多开发者会遇到…...

GNOME-BOXES虚拟机快速上手:从安装到共享文件全攻略

1. GNOME-BOXES初体验:为什么选择它? 第一次接触GNOME-BOXES是在我需要临时运行一个Windows应用的时候。作为一个长期使用Linux的用户,我一直在寻找一个既轻量又简单的虚拟机方案。试过VirtualBox,也用过VMware,但要么…...

终极指南:在Apple Silicon Mac上修复Fiji启动失败问题

终极指南:在Apple Silicon Mac上修复Fiji启动失败问题 【免费下载链接】fiji A "batteries-included" distribution of ImageJ :battery: 项目地址: https://gitcode.com/gh_mirrors/fi/fiji Fiji作为一款"开箱即用"的ImageJ发行版&…...

LiuJuan20260223Zimage国风美学生成模型v1.0入门:Node.js环境调用与API开发

LiuJuan国风美学生成模型v1.0入门:Node.js环境调用与API开发 最近在尝试一些AI图像生成项目,发现很多模型对中文场景和东方美学的支持还不够好。直到我遇到了LiuJuan国风美学模型,它专门针对国风、古风、东方元素进行优化,生成的…...

告别云端!用Ollama本地运行Yi-Coder-1.5B,保护代码隐私的终极方案

告别云端!用Ollama本地运行Yi-Coder-1.5B,保护代码隐私的终极方案 1. 为什么选择本地代码生成模型? 在软件开发过程中,我们经常需要快速生成代码片段、解决编程问题或理解复杂逻辑。传统做法是使用云端代码生成服务,…...

DeepChat案例分享:供应链异常描述→根因推测→应急方案建议三级输出

DeepChat案例分享:供应链异常描述→根因推测→应急方案建议三级输出 1. 案例背景与场景价值 供应链管理是企业运营的核心环节,但异常情况时有发生。传统的异常处理流程往往需要多个部门协作,耗时耗力且容易出错。DeepChat基于本地部署的Lla…...

告别命令行!用wsl2distromanager轻松管理多个WSL2发行版(附详细图文)

告别命令行!用WSL2 Distro Manager轻松管理多个WSL2发行版 对于Windows开发者来说,WSL2已经成为日常开发不可或缺的工具。它让我们能在Windows环境下无缝运行Linux环境,享受两全其美的开发体验。然而,随着项目复杂度增加&#xff…...

OpenClaw隐私保护方案:Qwen3-14B镜像+本地NAS存储配置

OpenClaw隐私保护方案:Qwen3-14B镜像本地NAS存储配置 1. 为什么需要全链路隐私保护? 去年我帮一位律师朋友配置自动化文档处理流程时,遇到一个棘手问题:他的工作涉及大量客户隐私数据,而市面上多数AI工具都需要将文件…...

Graphormer模型原理图解:Visio绘制神经网络架构图

Graphormer模型原理图解:Visio绘制神经网络架构图 1. 引言:当Transformer遇见图数据 Graphormer模型代表了图神经网络领域的一次重要突破。想象一下,如果让Transformer这个在自然语言处理领域大放异彩的架构,来处理社交网络、分…...