mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2026-08-29 13:04:59 +00:00
Improved the Web Based Harness
This commit is contained in:
parent
c3c57c058a
commit
ee6eb84bd8
19 changed files with 2799 additions and 2202 deletions
86
DebugTools/MccMcpWebPlayground/Harness/MccPromptComposer.cs
Normal file
86
DebugTools/MccMcpWebPlayground/Harness/MccPromptComposer.cs
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
namespace DebugTools.MccMcpWebPlayground.Harness;
|
||||
|
||||
public sealed class MccPromptComposer
|
||||
{
|
||||
private const string HarnessContract = """
|
||||
You are operating Minecraft Console Client through MCC MCP tools.
|
||||
|
||||
Rules:
|
||||
- Use tool results and the run-state summary as the source of truth.
|
||||
- Execute tools sequentially.
|
||||
- End the run only with mcc_submit_final.
|
||||
- status=completed is valid only when no required verification obligations remain open.
|
||||
- If the task is blocked or partial, say exactly what is verified and what remains unverified.
|
||||
- Do not repeat the same failing stateful action with the same arguments.
|
||||
- mcc_quit_client requires explicit user intent.
|
||||
- Prefer structured high-level tools. Avoid escape hatches unless they are explicitly exposed and necessary.
|
||||
""";
|
||||
|
||||
public List<object> Compose(MccRunState runState)
|
||||
{
|
||||
List<object> messages =
|
||||
[
|
||||
BuildSystemMessage(HarnessContract),
|
||||
BuildSystemMessage(runState.Guidance.SystemPrompt),
|
||||
BuildSystemMessage(BuildStateSummary(runState)),
|
||||
.. runState.BaseConversationMessages
|
||||
];
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(runState.CompactionSummary))
|
||||
{
|
||||
messages.Add(BuildSystemMessage($"""
|
||||
Older verified evidence summary
|
||||
{runState.CompactionSummary}
|
||||
"""));
|
||||
}
|
||||
|
||||
foreach (object message in runState.ToolConversationMessages.TakeLast(12))
|
||||
messages.Add(message);
|
||||
|
||||
return messages;
|
||||
}
|
||||
|
||||
private static Dictionary<string, object?> BuildSystemMessage(string text)
|
||||
{
|
||||
return new Dictionary<string, object?>
|
||||
{
|
||||
["role"] = "system",
|
||||
["content"] = text
|
||||
};
|
||||
}
|
||||
|
||||
private static string BuildStateSummary(MccRunState runState)
|
||||
{
|
||||
string evidence = runState.Evidence.Count == 0
|
||||
? "- none yet"
|
||||
: string.Join('\n', runState.Evidence.TakeLast(6).Select(record =>
|
||||
$"- {record.Id} {record.ToolName}: {record.Summary}"));
|
||||
|
||||
string obligations = runState.OpenObligations.Count == 0
|
||||
? "- none"
|
||||
: string.Join('\n', runState.OpenObligations.Select(obligation =>
|
||||
$"- {obligation.Id} {obligation.ToolName}/{obligation.Kind}: {obligation.Description}"));
|
||||
|
||||
string bestPractices = runState.Guidance.BestPractices.Length == 0
|
||||
? "- use verified MCC state before claiming success"
|
||||
: string.Join('\n', runState.Guidance.BestPractices.Take(4).Select(item => $"- {item}"));
|
||||
|
||||
return $"""
|
||||
Current run state
|
||||
- turnCount: {runState.TurnCount}
|
||||
- toolCallCount: {runState.ToolCallCount}
|
||||
- directAnswerAttempts: {runState.DirectAnswerAttempts}
|
||||
- routedModel: {runState.RoutedModel ?? runState.ConfiguredModel}
|
||||
- routedProvider: {runState.RoutedProvider ?? "unknown"}
|
||||
|
||||
Outstanding verification
|
||||
{obligations}
|
||||
|
||||
Recent evidence
|
||||
{evidence}
|
||||
|
||||
Guidance highlights
|
||||
{bestPractices}
|
||||
""";
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue