本地AI编程助手

一款本地化的AI编程助手,能够读取用户项目代码并提供上下文感知的帮助、解释和建议,适用于开发者在本地环境中进行智能编程辅助。

  • by Bessouat40
  • Python
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 Bessouat40/coding-assistant

使用说明

编码助理

您的本地AI配对程序员:将此AI助手指向您的项目文件夹并开始提问!

它在本地读取您的代码,以提供与您的文件直接相关的真正上下文感知的帮助、解释和建议。在本地更智能地编写代码。

先决条件📝

  • python 建议使用3.11或更高版本。
  • tree 命令: 这 get_tree_folders 该工具依赖于此。
    • Linux(Debian/Ubuntu): sudo apt update && sudo apt install tree
    • macOS(使用Homebrew): brew install tree

安装⚙️

  1. 克隆存储库:

    git clone https://github.com/Bessouat40/coding-assistant
    cd coding-assistant
    
  2. 安装Python依赖项:

    pip install -r requirements.txt
    

配置🔑

  1. API密钥和设置: 像LLM API密钥这样的敏感信息应该存储在 .env 项目根目录中的文件。-复制示例文件或创建一个名为的新文件 .env:

    cp .env.example .env
    
  • 编辑 .env 文件并添加密钥:

    # .env
    MISTRAL_API_KEY=your_mistral_api_key_here
    # GOOGLE_API_KEY=your_google_api_key_here
    # Add other variables if needed, e.g., MAX_CONTEXT_TOKENS=7000
    
  1. LLM提供者: 如果需要,请更改LLM提供者:
  • 首选 api/utils.py 并修改 loadl_llm 功能。取消对所需提供商的注释。 默认情况下,它设置为 Google :
def load_llm(logger):
    try:
        model = ChatOllama(model="llama3.1:8b")
        # model = ChatMistralAI(model="codestral-latest")
        # model = ChatGoogleGenerativeAI(model="gemini-2.0-flash-001")
        logger.info(f"ChatGoogleGenerativeAI model '{model.model}' initialized successfully.")
        return model
    except Exception as e:
        logger.error(f"Failed to initialize the LLM model: {e}")
        raise RuntimeError(f"Could not initialize LLM: {e}") from e

运行应用程序▶️

便利脚本 launch_assistant.sh 用于启动所有组件。

  1. 使脚本可执行:

    chmod +x launch_assistant.sh
    
  2. 运行脚本:

    ./launch_assistant.sh
    

此脚本将:

  • 从加载环境变量 .env.
  • 启动MCP工具服务器(agent_tools.py)在后台(登录到 mcp_server.log).
  • 启动FastAPI后端(api.py)在后台(登录到 fastapi_api.log).
  • 启动Streamlit用户界面(streamlit_app.py)在后台(登录到 streamlit_ui.log).
  • 打印每个组件的URL和PID。

您可以在指定的目录中查看日志 .log 用于调试的文件。按 Ctrl+C 在您运行脚本的终端中,优雅地停止所有组件。

用法🧑‍💻

  1. 访问UI: 打开您的网络浏览器并导航到Streamlit URL(通常 http://localhost:8501).
  2. 设置项目目录: 在侧边栏中,输入 绝对路径 转到您希望助手使用的本地项目目录。点击“设置目录”。
  3. 聊天: 使用底部的聊天输入询问有关指定目录中代码的问题。示例:
    • “解释 run_agent 功能在 api.py."
    • “显示此项目的文件结构。”(使用 tree)
    • “什么论点 generate_response_api 功能采取?"
    • “阅读以下内容 prompt.py“.”(用途 cat)
    • “你能建议改进中的错误处理吗 streamlit_app.py?"
  4. 跟进: 助手会记住您当前聊天会话的上下文。自然地提出后续问题。
  5. 清除历史记录: 使用侧边栏中的“清除聊天历史记录”按钮开始新的对话。