mirror of
https://github.com/Palm1r/QodeAssist.git
synced 2026-02-09 00:30:31 -05:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b789e42602 | |||
| 4bf955462f | |||
| 5b99e68e53 |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"Id" : "qodeassist",
|
"Id" : "qodeassist",
|
||||||
"Name" : "QodeAssist",
|
"Name" : "QodeAssist",
|
||||||
"Version" : "0.4.10",
|
"Version" : "0.4.11",
|
||||||
"Vendor" : "Petr Mironychev",
|
"Vendor" : "Petr Mironychev",
|
||||||
"VendorId" : "petrmironychev",
|
"VendorId" : "petrmironychev",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} Petr Mironychev, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} Petr Mironychev, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
|
|||||||
59
README.md
59
README.md
@ -20,19 +20,25 @@
|
|||||||
4. [Configure for OpenAI](#configure-for-openai)
|
4. [Configure for OpenAI](#configure-for-openai)
|
||||||
5. [Configure for using Ollama](#configure-for-using-ollama)
|
5. [Configure for using Ollama](#configure-for-using-ollama)
|
||||||
6. [System Prompt Configuration](#system-prompt-configuration)
|
6. [System Prompt Configuration](#system-prompt-configuration)
|
||||||
7. [Template-Model Compatibility](#template-model-compatibility)
|
7. [File Context Features](#file-context-features)
|
||||||
8. [QtCreator Version Compatibility](#qtcreator-version-compatibility)
|
8. [Template-Model Compatibility](#template-model-compatibility)
|
||||||
9. [Development Progress](#development-progress)
|
9. [QtCreator Version Compatibility](#qtcreator-version-compatibility)
|
||||||
10. [Hotkeys](#hotkeys)
|
10. [Development Progress](#development-progress)
|
||||||
11. [Troubleshooting](#troubleshooting)
|
11. [Hotkeys](#hotkeys)
|
||||||
12. [Support the Development](#support-the-development-of-qodeassist)
|
12. [Troubleshooting](#troubleshooting)
|
||||||
13. [How to Build](#how-to-build)
|
13. [Support the Development](#support-the-development-of-qodeassist)
|
||||||
|
14. [How to Build](#how-to-build)
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
- AI-powered code completion
|
- AI-powered code completion
|
||||||
- Chat functionality:
|
- Chat functionality:
|
||||||
- Side and Bottom panels
|
- Side and Bottom panels
|
||||||
|
- Chat history autosave and restore
|
||||||
|
- Token usage monitoring and management
|
||||||
|
- Attach files for one-time code analysis
|
||||||
|
- Link files for persistent context with auto update in conversations
|
||||||
|
- Automatic syncing with open editor files (optional)
|
||||||
- Support for multiple LLM providers:
|
- Support for multiple LLM providers:
|
||||||
- Ollama
|
- Ollama
|
||||||
- OpenAI
|
- OpenAI
|
||||||
@ -63,9 +69,15 @@
|
|||||||
<img width="326" alt="QodeAssistBottomPanel" src="https://github.com/user-attachments/assets/4cc64c23-a294-4df8-9153-39ad6fdab34b">
|
<img width="326" alt="QodeAssistBottomPanel" src="https://github.com/user-attachments/assets/4cc64c23-a294-4df8-9153-39ad6fdab34b">
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Automatic syncing with open editor files: (click to expand)</summary>
|
||||||
|
<img width="600" alt="OpenedDocumentsSync" src="https://github.com/user-attachments/assets/08efda2f-dc4d-44c3-927c-e6a975090d2f">
|
||||||
|
</details>
|
||||||
|
|
||||||
## Install plugin to QtCreator
|
## Install plugin to QtCreator
|
||||||
1. Install Latest Qt Creator
|
1. Install Latest Qt Creator
|
||||||
2. Download the QodeAssist plugin for your Qt Creator
|
2. Download the QodeAssist plugin for your Qt Creator
|
||||||
|
- Remove old version plugin if already was installed
|
||||||
3. Launch Qt Creator and install the plugin:
|
3. Launch Qt Creator and install the plugin:
|
||||||
- Go to:
|
- Go to:
|
||||||
- MacOS: Qt Creator -> About Plugins...
|
- MacOS: Qt Creator -> About Plugins...
|
||||||
@ -136,6 +148,39 @@ You're all set! QodeAssist is now ready to use in Qt Creator.
|
|||||||
|
|
||||||
The plugin comes with default system prompts optimized for chat and instruct models, as these currently provide better results for code assistance. If you prefer using FIM (Fill-in-Middle) models, you can easily customize the system prompt in the settings.
|
The plugin comes with default system prompts optimized for chat and instruct models, as these currently provide better results for code assistance. If you prefer using FIM (Fill-in-Middle) models, you can easily customize the system prompt in the settings.
|
||||||
|
|
||||||
|
## File Context Features
|
||||||
|
|
||||||
|
QodeAssist provides two powerful ways to include source code files in your chat conversations: Attachments and Linked Files. Each serves a distinct purpose and helps provide better context for the AI assistant.
|
||||||
|
|
||||||
|
### Attached Files
|
||||||
|
|
||||||
|
Attachments are designed for one-time code analysis and specific queries:
|
||||||
|
- Files are included only in the current message
|
||||||
|
- Content is discarded after the message is processed
|
||||||
|
- Ideal for:
|
||||||
|
- Getting specific feedback on code changes
|
||||||
|
- Code review requests
|
||||||
|
- Analyzing isolated code segments
|
||||||
|
- Quick implementation questions
|
||||||
|
- Files can be attached using the paperclip icon in the chat interface
|
||||||
|
- Multiple files can be attached to a single message
|
||||||
|
|
||||||
|
### Linked Files
|
||||||
|
|
||||||
|
Linked files provide persistent context throughout the conversation:
|
||||||
|
|
||||||
|
- Files remain accessible for the entire chat session
|
||||||
|
- Content is included in every message exchange
|
||||||
|
- Files are automatically refreshed - always using latest content from disk
|
||||||
|
- Perfect for:
|
||||||
|
- Long-term refactoring discussions
|
||||||
|
- Complex architectural changes
|
||||||
|
- Multi-file implementations
|
||||||
|
- Maintaining context across related questions
|
||||||
|
- Can be managed using the link icon in the chat interface
|
||||||
|
- Supports automatic syncing with open editor files (can be enabled in settings)
|
||||||
|
- Files can be added/removed at any time during the conversation
|
||||||
|
|
||||||
## Template-Model Compatibility
|
## Template-Model Compatibility
|
||||||
|
|
||||||
| Template | Compatible Models | Purpose |
|
| Template | Compatible Models | Purpose |
|
||||||
|
|||||||
@ -159,11 +159,19 @@ void PluginUpdater::handleDownloadFinished()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString downloadPath = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation);
|
QString downloadPath = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation)
|
||||||
|
+ QDir::separator() + "QodeAssist_v" + m_lastUpdateInfo.version;
|
||||||
|
QDir().mkpath(downloadPath);
|
||||||
|
|
||||||
|
QString filePath = downloadPath + QDir::separator() + m_lastUpdateInfo.fileName;
|
||||||
|
|
||||||
|
if (QFile::exists(filePath)) {
|
||||||
|
emit downloadError(tr("Update file already exists: %1").arg(filePath));
|
||||||
|
reply->deleteLater();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
QString filePath = downloadPath + "/" + m_lastUpdateInfo.fileName;
|
|
||||||
QFile file(filePath);
|
QFile file(filePath);
|
||||||
|
|
||||||
if (!file.open(QIODevice::WriteOnly)) {
|
if (!file.open(QIODevice::WriteOnly)) {
|
||||||
emit downloadError(tr("Could not save the update file"));
|
emit downloadError(tr("Could not save the update file"));
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
@ -174,7 +182,6 @@ void PluginUpdater::handleDownloadFinished()
|
|||||||
file.close();
|
file.close();
|
||||||
|
|
||||||
emit downloadFinished(filePath);
|
emit downloadFinished(filePath);
|
||||||
|
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -19,6 +19,11 @@
|
|||||||
|
|
||||||
#include "UpdateDialog.hpp"
|
#include "UpdateDialog.hpp"
|
||||||
|
|
||||||
|
#include <coreplugin/icore.h>
|
||||||
|
#include <extensionsystem/pluginmanager.h>
|
||||||
|
#include <extensionsystem/pluginspec.h>
|
||||||
|
#include <QDesktopServices>
|
||||||
|
|
||||||
namespace QodeAssist {
|
namespace QodeAssist {
|
||||||
|
|
||||||
UpdateDialog::UpdateDialog(QWidget *parent)
|
UpdateDialog::UpdateDialog(QWidget *parent)
|
||||||
@ -166,7 +171,32 @@ void UpdateDialog::updateProgress(qint64 received, qint64 total)
|
|||||||
void UpdateDialog::handleDownloadFinished(const QString &path)
|
void UpdateDialog::handleDownloadFinished(const QString &path)
|
||||||
{
|
{
|
||||||
m_progress->setVisible(false);
|
m_progress->setVisible(false);
|
||||||
QMessageBox::information(this, tr("Update Successful"), tr("Update has been downloaded."));
|
|
||||||
|
QMessageBox msgBox(this);
|
||||||
|
msgBox.setWindowTitle(tr("Update Downloaded"));
|
||||||
|
msgBox.setText(tr("The update has been downloaded successfully.\n"
|
||||||
|
"Would you like to close Qt Creator now and open the plugin folder?"));
|
||||||
|
msgBox.setInformativeText(tr("To complete the update:\n\n"
|
||||||
|
"1. Close Qt Creator completely\n"
|
||||||
|
"2. Navigate to the plugin folder\n"
|
||||||
|
"3. Remove the old version of QodeAssist plugin\n"
|
||||||
|
"4. Install plugin as usual via About plugin menu"));
|
||||||
|
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
|
||||||
|
msgBox.setDefaultButton(QMessageBox::Yes);
|
||||||
|
msgBox.setIcon(QMessageBox::Information);
|
||||||
|
|
||||||
|
if (msgBox.exec() == QMessageBox::Yes) {
|
||||||
|
const auto pluginSpecs = ExtensionSystem::PluginManager::plugins();
|
||||||
|
for (const ExtensionSystem::PluginSpec *spec : pluginSpecs) {
|
||||||
|
if (spec->name() == QLatin1String("QodeAssist")) {
|
||||||
|
const auto pluginPath = spec->filePath().path();
|
||||||
|
QFileInfo fileInfo(pluginPath);
|
||||||
|
QDesktopServices::openUrl(QUrl::fromLocalFile(fileInfo.absolutePath()));
|
||||||
|
Core::ICore::exit();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
accept();
|
accept();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user