summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/Design.md2
-rw-r--r--scripts/Operational-E2E.ps14
-rw-r--r--src/Agent.Core/Prompts/PromptComposer.cs5
-rw-r--r--tests/Agent.Core.Tests/PromptAndRuntimeTests.cs2
4 files changed, 10 insertions, 3 deletions
diff --git a/doc/Design.md b/doc/Design.md
index 5cc1480..1c5c8d4 100644
--- a/doc/Design.md
+++ b/doc/Design.md
@@ -405,7 +405,7 @@ AgentSession
10. current Taskの`requires_external_effect`に基づく実行要件
11. recent Conversation
-実行要件は、現在runningのTaskだけを実行してqueued Taskを先取りしないことを指示する。外部効果が必要なTaskでは文章上の宣言、計画、JSON例を実行済みと扱わず、対応するInternal Toolを直ちに呼び出すよう指示する。成功済みのread結果はExecution Resultから再利用し、不要な再読込を避けてwrite/processへ進む。外部効果が不要なTaskにはToolを強制しない。未解決のTool失敗後にToolを呼ばない応答も同一失敗として数え、既定の同一失敗上限でfailedにする。
+実行要件は、現在runningのTaskだけを実行してqueued Taskを先取りしないことをSystemおよび末尾のcurrent Task user messageで指示する。末尾messageにはoriginal MCP Task requestもexact値の参照元として併記する。外部効果が必要なTaskでは文章上の宣言、計画、JSON例を実行済みと扱わず、対応するInternal Toolを直ちに呼び出すよう指示する。成功済みのread結果はExecution Resultから再利用し、不要な再読込を避けてwrite/processへ進む。外部効果が不要なTaskにはToolを強制しない。未解決のTool失敗後にToolを呼ばない応答も同一失敗として数え、既定の同一失敗上限でfailedにする。
### 9.3 Summary policy
`num_ctx`に対する利用率が設定閾値を超えたとき、古いConversation/Execution Resultを要約する。利用率 = latest `prompt_eval_count` / `num_ctx`(累積 InputTokens ではない)。既定閾値は80%とする。次は削除・曖昧化してはならない。
- 利用者が明示した制約
diff --git a/scripts/Operational-E2E.ps1 b/scripts/Operational-E2E.ps1
index 138cd55..9de89be 100644
--- a/scripts/Operational-E2E.ps1
+++ b/scripts/Operational-E2E.ps1
@@ -28,6 +28,8 @@ $fixtureAclBefore = (Get-Acl -LiteralPath $fixture).Sddl
try {
Expand-Archive -LiteralPath $zip -DestinationPath $bundleRoot
$bundle = (Get-ChildItem -LiteralPath $bundleRoot -Directory | Select-Object -First 1).FullName
+ $e2eSkills = Join-Path $bundle 'e2e-skills'
+ New-Item -ItemType Directory -Path $e2eSkills | Out-Null
$program = @'
namespace OperationalFixture;
@@ -178,7 +180,7 @@ localization:
directory: config/locales
fallback: en
skills:
- directory: skills
+ directory: e2e-skills
logging:
directory: logs
max_file_bytes: 10485760
diff --git a/src/Agent.Core/Prompts/PromptComposer.cs b/src/Agent.Core/Prompts/PromptComposer.cs
index c61e678..f70e813 100644
--- a/src/Agent.Core/Prompts/PromptComposer.cs
+++ b/src/Agent.Core/Prompts/PromptComposer.cs
@@ -41,7 +41,10 @@ public static class PromptComposer
foreach (AgentSkill skill in context.SelectedSkills)
messages.Add(new("system", skill.Instructions));
messages.AddRange(context.Conversation.Select(static item => new OllamaMessage(item.Role, item.Content)));
- messages.Add(new OllamaMessage("user", context.Request, context.Images));
+ messages.Add(new OllamaMessage("user",
+ $"CURRENT RUNNING PLANNER TASK ONLY:\n{context.Request}\n\n" +
+ $"Use the exact paths, arguments, constraints, and literals from this original MCP Task request where the current Task needs them:\n{context.OriginalRequest}",
+ context.Images));
return messages;
}
diff --git a/tests/Agent.Core.Tests/PromptAndRuntimeTests.cs b/tests/Agent.Core.Tests/PromptAndRuntimeTests.cs
index acfee81..dce2b28 100644
--- a/tests/Agent.Core.Tests/PromptAndRuntimeTests.cs
+++ b/tests/Agent.Core.Tests/PromptAndRuntimeTests.cs
@@ -34,6 +34,8 @@ public sealed class PromptAndRuntimeTests
Assert.Contains(messages, m => m.Role == "system" && m.Content.Contains("original request with C:/exact/path", StringComparison.Ordinal));
Assert.Equal("system", messages[0].Role);
Assert.Equal("user", messages[^1].Role);
+ Assert.Contains("CURRENT RUNNING PLANNER TASK ONLY", messages[^1].Content, StringComparison.Ordinal);
+ Assert.Contains("original request with C:/exact/path", messages[^1].Content, StringComparison.Ordinal);
Assert.Equal(["image"], messages[^1].Images);
}