Implemented the next parity slice: prompt-budget preflight and context collapse.
Core changes:
- Added claw-code/src/token_budget.py for projected prompt size, chat-framing overhead, output reserve, and soft/hard input limits.
- Wired preflight prompt-length validation and auto-compact/context collapse into claw-code/src/agent_runtime.py.
- Extended claw-code/src/compact.py so compaction reports usage back to the runtime.
- Added inspection surfaces in claw-code/src/agent_slash_commands.py and claw-code/src/main.py:
- /token-budget and /budget
- token-budget
- Hardened claw-code/src/tokenizer_runtime.py so arbitrary simple model names fall back cleanly instead of trying a slow Transformers
lookup.
- Exported the new helpers in claw-code/src/__init__.py.
Docs and tracking:
- Updated claw-code/PARITY_CHECKLIST.md to mark prompt-length validation, token-budget calculation, and auto-compact/context collapse as
done.
- Updated claw-code/README.md and claw-code/TESTING_GUIDE.md with the new commands and behavior.
Tests:
- Added claw-code/tests/test_token_budget.py.
- Updated claw-code/tests/test_agent_runtime.py, claw-code/tests/test_agent_slash_commands.py, claw-code/tests/test_main.py, and claw-code/
tests/test_agent_context_usage.py.
- Verified with:
- /data/fs201059/aa17626/miniconda3/bin/python3 -m compileall src tests
- /data/fs201059/aa17626/miniconda3/bin/python3 -m unittest -v tests.test_token_budget
tests.test_agent_runtime.AgentRuntimeTests.test_agent_rejects_prompt_before_backend_when_preflight_input_budget_is_exceeded
tests.test_agent_runtime.AgentRuntimeTests.test_agent_auto_compacts_context_before_next_model_call tests.test_agent_slash_commands
tests.test_main tests.test_compact tests.test_tokenizer_runtime tests.test_agent_context_usage
- Result: 71 tests, OK
This commit is contained in:
@@ -18,6 +18,7 @@ from .agent_types import AgentPermissions, AgentRunResult, AgentRuntimeConfig, M
|
||||
from .background_runtime import BackgroundSessionRuntime
|
||||
from .commands import PORTED_COMMANDS, build_command_backlog
|
||||
from .config_runtime import ConfigMutation, ConfigRuntime
|
||||
from .lsp_runtime import LSPCallEdge, LSPDiagnostic, LSPReference, LSPRuntime, LSPSymbol
|
||||
from .mcp_runtime import MCPRuntime, MCPResource, MCPServerProfile, MCPTool
|
||||
from .parity_audit import ParityAuditResult, run_parity_audit
|
||||
from .plan_runtime import PlanRuntime, PlanStep
|
||||
@@ -32,6 +33,7 @@ from .system_init import build_system_init_message
|
||||
from .task import PortingTask
|
||||
from .task_runtime import TaskRuntime
|
||||
from .team_runtime import TeamDefinition, TeamMessage, TeamRuntime
|
||||
from .token_budget import TokenBudgetSnapshot, calculate_token_budget, estimate_chat_overhead, format_token_budget
|
||||
from .tokenizer_runtime import TokenCounterInfo, clear_token_counter_cache, count_tokens, describe_token_counter
|
||||
from .workflow_runtime import WorkflowDefinition, WorkflowRunRecord, WorkflowRuntime
|
||||
from .worktree_runtime import WorktreeRuntime, WorktreeSessionState, WorktreeStatusReport
|
||||
@@ -54,6 +56,11 @@ __all__ = [
|
||||
'BackgroundSessionRuntime',
|
||||
'ConfigMutation',
|
||||
'ConfigRuntime',
|
||||
'LSPCallEdge',
|
||||
'LSPDiagnostic',
|
||||
'LSPReference',
|
||||
'LSPRuntime',
|
||||
'LSPSymbol',
|
||||
'LocalCodingAgent',
|
||||
'MCPResource',
|
||||
'MCPRuntime',
|
||||
@@ -82,6 +89,7 @@ __all__ = [
|
||||
'TeamDefinition',
|
||||
'TeamMessage',
|
||||
'TeamRuntime',
|
||||
'TokenBudgetSnapshot',
|
||||
'TokenCounterInfo',
|
||||
'TurnResult',
|
||||
'WorkflowDefinition',
|
||||
@@ -101,9 +109,12 @@ __all__ = [
|
||||
'clear_context_caches',
|
||||
'clear_token_counter_cache',
|
||||
'count_tokens',
|
||||
'calculate_token_budget',
|
||||
'default_tool_registry',
|
||||
'describe_token_counter',
|
||||
'estimate_chat_overhead',
|
||||
'execute_tool',
|
||||
'format_token_budget',
|
||||
'get_system_context',
|
||||
'get_user_context',
|
||||
'load_session',
|
||||
|
||||
Reference in New Issue
Block a user