The AI Coding Assistant https://github.com/AbanteAI/mentat

天问 5c89952777 Update 'README.md' 1 year ago
README.md 5c89952777 Update 'README.md' 1 year ago

README.md

mentat

The AI Coding Assistant

https://github.com/AbanteAI/mentat

Usage

python 3.10

准备一个 openai gpt4 key,新建 .env文件,输入:

OPENAI_API_KEY=sk-rju8J2X

自己的项目文件夹路径,如 /workspaces/mentat 执行:

python3 -m venv .venv
source .venv/bin/activat

git clone https://github.com/AbanteAI/mentat.git
cd mentat
pip install -e .

mentat path/to/directory --exclude exclude_me.py dir1/dir2 **/*.ts
mentat /workspaces/mentat/setup.py

完了之后就会把自己的代码post到openai,用户命令行输入命令,调用openai执行相应的修改代码命令。

源码分析

输入命令 mentat /workspaces/mentat/setup.py 会执行如下命令:

mentat=mentat.app:run_cli

# 带参数运行
    run(
        expand_paths(paths),
        expand_paths(exclude_paths),
        no_code_map,
        diff,
        pr_diff,
    )
    
    

第一个参数为文件路径,或者文件夹。后面参数为排除路径等。

        setup_api_key()
        loop(paths, exclude_paths, cost_tracker, no_code_map, diff, pr_diff)

先设置 key,然后循环:

    while True:
        if need_user_request:
            user_response = user_input_manager.collect_user_input()
            conv.add_user_message(user_response)

        file_edits = conv.get_model_response(parser, config)
        file_edits = [
            file_edit
            for file_edit in file_edits
            if file_edit.is_valid(code_file_manager, config)
        ]
        if file_edits:
            need_user_request = get_user_feedback_on_edits(
                config,
                conv,
                code_context,
                user_input_manager,
                code_file_manager,
                file_edits,
            )
        else:
            need_user_request = True

这里循环等待用户输入,将用户输入 conv.add_user_message(user_response) 加入conv对象。那么继续深入这个 Conversation 类,这个是调用 openai 接口。

提取词:

和其他项目类似,这个项目也设置了自己的提取词:目录在 mentat/prompts ,通过这些提取词,实现自定义的命令。