Code4all-自主的本地第一编码助手,帮助开发人员使用LangGraph
规划决策
战略方针
我们通过了一个 增量、故事驱动的开发方法 围绕史诗1构建,有四个连续的故事(1.1-1.4)。这种方法优先考虑:
- MVP优先心态:抛光前专注于核心功能
- 可重复开发:记录每一步
- 整体简洁:单个Python应用程序,以最大限度地降低复杂性
- 开源承诺:没有付费API,使用Mistral Codestral模型
关键设计决策
- 重组结构:选择ReAct代理模式进行自主推理与简单检索增强生成(RAG)
- LangGraph框架:选择用于强大的代理编排和内置内存管理
- MCP集成:利用模型上下文协议实现标准化工具访问文档
- Gradio界面:优先考虑开发人员体验,使用最小的、以聊天为中心的UI
- 内存持久性:实现对话状态以支持多回合交互
发展理念
规划强调 基于综合特征的工作原型,确保每个组件在集成之前都可以独立验证。这允许快速迭代,同时通过结构化文档和测试保持代码质量。
应用建筑
高级设计原则
Code4all实现了一个 分层单片架构 针对本地开发和易于部署进行了优化:
UI Layer (Gradio) → Service Layer → Agent Layer (ReAct) → Tool Layer (MCP)核心架构选择
重构代理模式:系统使用LangGraph的 create_react_agent 实现推理-行动循环:
- 思想:Agent分析查询和计划方法
- 行动:选择并执行适当的文档工具
- 观察:处理结果并继续推理直到完成
MCP工具集成:通过Context7 MCP服务器访问文档提供:
- LangGraph文档的标准化工具界面
- 异步通信,提供响应式用户体验
- 来自权威来源的有根据的回应
内存管理:LangGraph的 InMemorySaver 维护对话上下文:
- 用于后续问题的会话范围内存
- 跨交互的持久推理链
- 无外部依赖的轻量级状态管理
建筑效益
- 模块化:UI、服务、代理和工具层之间的明确分离
- 可扩展性:可以添加新工具,而无需更改核心代理逻辑
- 可维护性:明确的接口和单一责任原则
核心逻辑优势
为什么要在简单的LLM链上重新行动
自主推理:与线性LLM链不同,ReAct代理可以:
- 动态调整策略 基于中间结果
- 按顺序使用多个工具 当需要复杂查询时
- 自我纠正 通过观察工具输出和调整方法
- 处理不确定性 在回应之前收集更多信息
工具使用智能:代理演示了复杂的工具选择:
- 情境感知决策 关于何时搜索文档与使用现有知识
- 多步骤问题解决 组合多个文档源
- 高效利用资源 通过确定最佳信息收集策略
技术实施优势
记忆感知对话检查点系统能够:
- 背景跟进 不重新解释以前的概念
- 渐进式披露 在早期互动的基础上
- 对话连续性 跨越复杂的多回合讨论
结构化响应生成:增强的代理提示可确保:
- 全面答案 带有上下文、代码示例和解释
- 格式一致 使用markdown提高可读性
- 可操作的指导 而不仅仅是信息检索
性能优化:该架构提供:
- 延迟工具加载 仅当需要文档搜索时
- Singleton代理模式 防止昂贵的重新初始化
- 异步流媒体 响应式用户体验
与备选方案的比较
- 与简单RAG相比:ReAct可以推断要检索哪些信息以及如何组合来源
- vs.函数调用:更复杂的推理循环,包括观察和适应
- vs.思维链:在实际工具输出中进行推理,而不仅仅是内部推理
先决条件
- Python 3.13.x
设置
python3.13 -m venv venv
source venv/bin/activate
pip install -r requirements.txt环境
复制示例文件并设置任何所需的机密:
cp .env.example .env.env 变量:
MCP_API_KEY-Context7 MCP服务器的API密钥MCP_SERVER_URL--Context7 MCP服务器的URL
跑
python3 main.py或
python3 -m main这将启动Gradio UI(聊天界面),其中包含一个用于提问的文本框和用于答案和日志的窗格。
测试
pytest项目结构
看 docs/architecture/09-source-tree.md核心组件:
- UI:
src/ui/interface.py - 服务:
src/service.py - 代理人:
src/agent/agent.py - 工具:
src/agent/tools.py - MCP客户端:
src/client/mcp_client.py
建筑与标准
- 概述:
docs/architecture/01-overview.md - 细节:
docs/architecture/02-architecture-details.md - 开发设置:
docs/architecture/06-dev-setup.md - 编码标准:
docs/architecture/07-coding-standards.md - 技术栈:
docs/architecture/08-tech-stack.md - 源树:
docs/architecture/09-source-tree.md
产品文档
- PRD:
docs/prd.md - 史诗1:
docs/epics/epic-1.md
