diff options
| -rw-r--r-- | doc/Design.md | 2 | ||||
| -rw-r--r-- | scripts/Operational-E2E.ps1 | 4 | ||||
| -rw-r--r-- | src/Agent.Core/Prompts/PromptComposer.cs | 5 | ||||
| -rw-r--r-- | tests/Agent.Core.Tests/PromptAndRuntimeTests.cs | 2 |
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); } |
