自主编码助手

Code4all是一个本地优先的自主编码助手,帮助开发者使用LangGraph进行开发,具备动态推理和多轮对话能力。

  • by dzsny
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Hekatoncheire/code4all

使用说明

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