Script di publish e modello più piccolo con effort low come predefiniti
scripts/publish.sh crea in dist/ gli eseguibili single-file per win-x64 e linux-x64 (o i rid indicati) e toglie i simboli delle librerie native; dist/ è ignorata da git. Ogni motore dichiara DefaultModelId (Haiku 5.5 per Claude Code, GPT-5.6 Luna per Codex) e il ViewModel parte da quel modello con effort low, all'avvio e a ogni cambio di CLI; "Predefinito" resta scelta possibile. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d6f293722e
commit
d7e8a341ab
4 files changed
+32
-5
No files matched your search
@@ -1,2 +1,3 @@
|
|||||||
bin/
|
bin/
|
||||||
obj/
|
obj/
|
||||||
|
dist/
|
||||||
@@ -19,6 +19,9 @@ abstract class Engine
|
|||||||
public abstract string Executable { get; }
|
public abstract string Executable { get; }
|
||||||
public abstract ModelOption[] Models { get; }
|
public abstract ModelOption[] Models { get; }
|
||||||
public abstract string[] Efforts { get; }
|
public abstract string[] Efforts { get; }
|
||||||
|
/// <summary>Modello scelto all'avvio e a ogni cambio di CLI: il più piccolo, per risposte rapide ed economiche.</summary>
|
||||||
|
public abstract string DefaultModelId { get; }
|
||||||
|
public string DefaultEffort => "low";
|
||||||
/// <summary>True se l'id di sessione lo genera il motore e l'app lo legge dall'output.</summary>
|
/// <summary>True se l'id di sessione lo genera il motore e l'app lo legge dall'output.</summary>
|
||||||
public abstract bool OwnsSessionId { get; }
|
public abstract bool OwnsSessionId { get; }
|
||||||
|
|
||||||
@@ -51,6 +54,7 @@ sealed class ClaudeEngine : Engine
|
|||||||
];
|
];
|
||||||
|
|
||||||
public override string[] Efforts { get; } = ["low", "medium", "high", "xhigh", "max"];
|
public override string[] Efforts { get; } = ["low", "medium", "high", "xhigh", "max"];
|
||||||
|
public override string DefaultModelId => "claude-haiku-5-5";
|
||||||
|
|
||||||
public override List<string> BuildArgs(string prompt, string? sessionId, bool resume, string model, string effort, bool structured)
|
public override List<string> BuildArgs(string prompt, string? sessionId, bool resume, string model, string effort, bool structured)
|
||||||
{
|
{
|
||||||
@@ -86,6 +90,7 @@ sealed class CodexEngine : Engine
|
|||||||
];
|
];
|
||||||
|
|
||||||
public override string[] Efforts { get; } = ["low", "medium", "high", "xhigh", "max"];
|
public override string[] Efforts { get; } = ["low", "medium", "high", "xhigh", "max"];
|
||||||
|
public override string DefaultModelId => "gpt-5.6-luna";
|
||||||
|
|
||||||
public override List<string> BuildArgs(string prompt, string? sessionId, bool resume, string model, string effort, bool structured)
|
public override List<string> BuildArgs(string prompt, string? sessionId, bool resume, string model, string effort, bool structured)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ class MainViewModel : ObservableObject
|
|||||||
{
|
{
|
||||||
static readonly ModelOption Default = new("Predefinito", "");
|
static readonly ModelOption Default = new("Predefinito", "");
|
||||||
static readonly ModelOption Custom = new("Altro ID…", "__custom");
|
static readonly ModelOption Custom = new("Altro ID…", "__custom");
|
||||||
const string DefaultEffort = "Predefinito";
|
const string NoEffort = "Predefinito";
|
||||||
|
|
||||||
public ObservableCollection<MessageVm> Messages { get; } = [];
|
public ObservableCollection<MessageVm> Messages { get; } = [];
|
||||||
public ObservableCollection<ChatItem> Chats { get; } = [];
|
public ObservableCollection<ChatItem> Chats { get; } = [];
|
||||||
@@ -102,7 +102,7 @@ class MainViewModel : ObservableObject
|
|||||||
bool busy, updating, sidebarOpen = true;
|
bool busy, updating, sidebarOpen = true;
|
||||||
ModelOption selectedModel = Default;
|
ModelOption selectedModel = Default;
|
||||||
string customModel = "";
|
string customModel = "";
|
||||||
string selectedEffort = DefaultEffort;
|
string selectedEffort = NoEffort;
|
||||||
readonly RelayCommand<object> send, newChat;
|
readonly RelayCommand<object> send, newChat;
|
||||||
|
|
||||||
public MainViewModel()
|
public MainViewModel()
|
||||||
@@ -188,8 +188,10 @@ class MainViewModel : ObservableObject
|
|||||||
{
|
{
|
||||||
selectedEngine = choice;
|
selectedEngine = choice;
|
||||||
ModelChoices = [Default, .. choice.Engine.Models, Custom];
|
ModelChoices = [Default, .. choice.Engine.Models, Custom];
|
||||||
EffortChoices = [DefaultEffort, .. choice.Engine.Efforts];
|
EffortChoices = [NoEffort, .. choice.Engine.Efforts];
|
||||||
SelectedModel = Default; CustomModel = ""; SelectedEffort = DefaultEffort;
|
// valori iniziali: il modello più piccolo del motore ed effort basso ("Predefinito" resta selezionabile)
|
||||||
|
SelectedModel = ModelChoices.FirstOrDefault(m => m.Id == choice.Engine.DefaultModelId) ?? Default;
|
||||||
|
CustomModel = ""; SelectedEffort = choice.Engine.DefaultEffort;
|
||||||
Raise(nameof(SelectedEngine)); Raise(nameof(Author)); Raise(nameof(InputPlaceholder)); Raise(nameof(BusyText));
|
Raise(nameof(SelectedEngine)); Raise(nameof(Author)); Raise(nameof(InputPlaceholder)); Raise(nameof(BusyText));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -242,7 +244,7 @@ class MainViewModel : ObservableObject
|
|||||||
if (!CanSend) return;
|
if (!CanSend) return;
|
||||||
var text = input.Trim();
|
var text = input.Trim();
|
||||||
var model = IsCustomModel ? customModel.Trim() : selectedModel.Id;
|
var model = IsCustomModel ? customModel.Trim() : selectedModel.Id;
|
||||||
var effort = selectedEffort == DefaultEffort ? "" : selectedEffort;
|
var effort = selectedEffort == NoEffort ? "" : selectedEffort;
|
||||||
|
|
||||||
Input = ""; IsBusy = true;
|
Input = ""; IsBusy = true;
|
||||||
Add("user", text);
|
Add("user", text);
|
||||||
|
|||||||
Executable
+19
@@ -0,0 +1,19 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Crea gli eseguibili single-file self-contained in dist/<rid>/.
|
||||||
|
# Senza argomenti: win-x64 e linux-x64. Con argomenti: i rid indicati (es. linux-arm64).
|
||||||
|
# Funziona da Linux, WSL e macOS (la compilazione per un altro sistema non richiede quel sistema).
|
||||||
|
set -euo pipefail
|
||||||
|
cd "$(dirname "$0")/.."
|
||||||
|
|
||||||
|
rids=("$@")
|
||||||
|
[ ${#rids[@]} -eq 0 ] && rids=(win-x64 linux-x64)
|
||||||
|
|
||||||
|
for rid in "${rids[@]}"; do
|
||||||
|
echo "== $rid"
|
||||||
|
dotnet publish agent-wiki-ui.csproj -c Release -r "$rid" --self-contained -p:PublishSingleFile=true -o "dist/$rid" --nologo -v quiet
|
||||||
|
find "dist/$rid" -name '*.pdb' -delete # simboli delle librerie native: inutili a chi usa l'app
|
||||||
|
done
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Eseguibili pronti:"
|
||||||
|
for rid in "${rids[@]}"; do ls -lh "dist/$rid" | awk -v r="$rid" 'NR>1 {print " dist/" r "/" $9 " (" $5 ")"}'; done
|
||||||
Reference in new issue
Block a user