返回市场
编码助手

编码助手

作者:Bessouat405 星标更新:2025-04-17

项目介绍

Coding Assistant

你的本地AI编程伙伴:将此AI助手指向你的项目文件夹并开始提问!

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

ui

预备条件 📝

  • 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
    # 如需添加其他变量,请在此处添加,例如: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}' 初始化成功。")
        return model
    except Exception as e:
        logger.error(f"初始化LLM模型失败: {e}")
        raise RuntimeError(f"无法初始化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 UI(streamlit_app.py)(日志记录到streamlit_ui.log)。
  • 打印每个组件的URL和PID。

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

使用方法 🧑‍💻

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