LLM Space开源生态:贡献代码与插件开发入门指南
【免费下载链接】llm-spaceA desktop app to prototype agent ideas, inspect every harness step, replay failures, and evaluate performance, all in one place. Local-first.项目地址: https://gitcode.com/gh_mirrors/ll/llm-space
LLM Space是一款面向AI智能体开发者的桌面工作台,让你能够在本地环境中快速构建、调试和评估AI智能体。这款开源项目为开发者提供了完整的代码贡献和插件开发生态,让每个人都能参与其中,共同打造更强大的智能体开发工具。无论你是想修复bug、添加新功能,还是创建自定义工具插件,LLM Space的开源架构都为你铺平了道路。
🚀 为什么选择LLM Space开源生态?
LLM Space不仅仅是一个桌面应用,更是一个完整的开源生态系统。作为DeerFlow的姊妹项目,它已经经历了四个主要版本的迭代,积累了丰富的开发经验和稳定的架构设计。参与LLM Space的开源贡献,你将获得:
- 直接参与AI智能体工具开发:接触最前沿的智能体开发工具链
- 学习现代桌面应用架构:深入了解Electrobun、Bun、React等现代技术栈
- 贡献真实可用的功能:你的代码将被全球开发者使用
- 加入活跃的开发者社区:与核心团队和其他贡献者交流学习
📁 项目架构概览
LLM Space采用Bun monorepo架构,主要分为两个核心部分:
packages/ core/ # 共享逻辑:类型定义、智能体循环、线程存储 apps/ desktop/ # 桌面应用(Electrobun外壳 + React UI)核心包(@llm-space/core)包含浏览器安全的客户端代码(./client、./thread、./types)和Node/Bun专用的服务端实现(./server)。桌面应用的Bun进程使用@llm-space/core/server,而渲染器则通过RPC与Bun进程通信。
🛠️ 开发环境搭建
准备工作
首先需要克隆仓库并安装必要的工具链:
# 克隆项目 git clone https://gitcode.com/gh_mirrors/ll/llm-space cd llm-space # 安装Bun(JavaScript运行时和包管理器) # 按照官方指南安装Bun:https://bun.com/docs/installation安装依赖
LLM Space使用mise作为任务管理前端,Bun作为包管理器和JS运行时:
# 使用mise安装锁定的工具链和JS依赖(推荐) mise run setup # 或者直接使用Bun安装依赖 bun install运行开发环境
启动桌面应用的开发服务器:
mise run dev这会启动Vite HMR服务器(端口5173)和Electrobun开发环境。如果要使用CEF/CDP进行调试,可以运行:
mise run dev:cef这将暴露CDP调试端口9333,方便进行深入的渲染器调试。
🔧 代码贡献流程
理解代码规范
在开始贡献之前,请熟悉项目的代码规范:
- 文件命名:所有
.ts/.tsx文件使用kebab-case(如tool-call-list-item.tsx) - 标识符命名:
- React组件、类、类型、接口使用PascalCase
- 函数、变量、钩子使用camelCase
- 模块级常量使用UPPER_SNAKE_CASE
- 私有成员:使用前导下划线(
_foo()、_config)
主要开发区域
根据你的贡献目标,可以关注以下关键模块:
- 智能体核心逻辑:packages/core/src/server/agent/stream.ts - 智能体流式处理的核心实现
- RPC桥接层:apps/desktop/src/shared/rpc.ts - 定义Bun进程和渲染器之间的通信协议
- 工具注册系统:apps/desktop/src/bun/tools/tool-registry.ts - 工具贡献点的实现
- 线程存储管理:packages/core/src/server/storage/index.ts - 本地文件系统存储逻辑
提交Pull Request
目前LLM Space只接受DeerFlow核心团队成员的PR。但是,所有人都可以通过提交Issue来帮助改进项目——bug报告、功能建议和反馈都能让项目变得更好。
🔌 插件开发指南
工具插件系统
LLM Space提供了一个稳定的工具贡献点(ToolContribution),通过ToolRegistry注册。虽然这不是一个完整的公开插件SDK,但你可以通过以下方式扩展功能:
创建自定义工具
要添加新的内置工具,你需要:
- 实现ToolContribution接口:
export interface ToolContribution { readonly id: string; readonly name: string; readonly tools: ToolDefinition[]; }- 在启动时注册:在
DesktopHost生命周期边界内同步注册工具 - 定义工具描述和参数模式:使用JSON Schema描述工具参数
MCP服务器集成
LLM Space支持通过MCP(Model Context Protocol)服务器集成外部工具:
要添加MCP服务器支持,你需要:
- 在设置界面配置MCP服务器连接
- 服务器提供的工具将自动暴露给模型
- 工具执行由对应的MCP服务器处理
🧪 测试与验证
代码质量检查
在提交代码前,确保通过所有质量检查:
# 运行代码检查 mise run lint # 自动修复可修复的问题 mise run lint:fix # 类型检查 mise run typecheck构建验证
验证生产构建是否正常:
# 构建canary版本 mise run build:canary # 构建稳定版本 mise run build:stable本地打包测试
测试不同环境的打包:
# 本地打包(跳过签名) mise run pack # 性能版打包(嵌入CEF) mise run pack:perf # 临时签名打包 mise run pack:adhoc # 创建本地更新源 mise run pack:feed📦 发布流程
版本管理
LLM Space的版本号有单一来源:apps/desktop/package.json。electrobun.config.ts会导入这个版本号,如果推送的标签不匹配,CI会失败。
发布新版本
# 发布稳定版 mise run release # 发布canary版 mise run release:canary发布脚本会自动:
- 运行
commit-and-tag-version(基于conventional commits的版本更新) - 创建提交和
v*标签 - 推送更改
更新日志
项目的CHANGELOG.md是手动维护的(遵循Keep a Changelog格式)。在发布稳定版本前,需要手动添加## [x.y.z]部分。CI会从该版本对应的CHANGELOG.md部分提取内容生成GitHub发布说明。
🎯 性能优化建议
LLM Space的UI会流式处理事件并重新渲染热列表(消息、工具调用),因此需要特别注意渲染性能:
- 使用React.memo:对频繁重新渲染或位于列表中的组件使用
memo()包装 - 稳定的props:使用
useMemo/useCallback稳定props - 细粒度状态选择:通过
useThreadStore(selector)读取store的窄切片 - 避免不必要的memo:不要在廉价、很少渲染的组件上滥用
memo()
🐛 调试技巧
渲染器调试
使用CEF/CDP调试真实的桌面渲染器:
# 启动带CDP调试的开发环境 mise run dev:cef这会在127.0.0.1:9333暴露Chrome DevTools Protocol端口,你可以使用Chrome DevTools进行调试。
运行时沙盒
当需要隔离的应用数据根目录时,可以将运行时沙盒数据放在系统临时目录:
TMP_ROOT="$(mktemp -d "${TMPDIR:-/tmp}/llm-space-XXXXXX")" LLM_SPACE_HOME="$TMP_ROOT" mise run dev:cef日志和追踪
LLM Space会在~/.llm-space/traces/目录下保存追踪和调试工作台数据,这对于诊断复杂问题非常有帮助。
🌟 成为核心贡献者
虽然目前只有DeerFlow核心团队成员可以直接合并PR,但通过以下方式,你可以逐步成为社区的重要成员:
- 提交高质量的Issue:详细描述bug、提出清晰的改进建议
- 参与文档改进:帮助完善用户指南和开发文档
- 分享使用经验:在社区中分享LLM Space的最佳实践
- 创建示例项目:展示LLM Space的高级用法和集成方案
📚 学习资源
- 官方文档:docs/index.md - 完整的用户手册
- 核心概念:docs/core-concepts.md - 深入理解LLM Space的核心概念
- 快速开始:docs/get-started.md - 新手入门指南
- 设置指南:docs/settings.md - 详细配置说明
🎉 开始你的贡献之旅
LLM Space的开源生态为你提供了一个绝佳的学习和实践平台。无论你是想修复一个小bug,还是实现一个全新的功能,都可以从这里开始。记住,每个伟大的开源项目都是从第一个commit开始的,你的贡献可能会影响全球的AI智能体开发者!
准备好开始了吗?克隆仓库,搭建环境,选择一个你感兴趣的问题,然后开始编码吧!🚀
【免费下载链接】llm-spaceA desktop app to prototype agent ideas, inspect every harness step, replay failures, and evaluate performance, all in one place. Local-first.项目地址: https://gitcode.com/gh_mirrors/ll/llm-space
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考