Acontext
FeaturesContext Engineering

Context Editing

Edit context on-the-fly without modifying stored messages

Apply edit strategies when retrieving messages to manage context window size. The original session remains unchanged.

Current Context Size

The get_messages response includes this_time_tokens - the total token count of returned messages. Use this to:

  • Check current context window size
  • Decide when to apply edit strategies
  • Determine when to reset the prompt cache
result = client.sessions.get_messages(session_id="session-uuid")
print(f"Current tokens: {result.this_time_tokens}")

if result.this_time_tokens > 50000:
    # Apply strategies to reduce context
    result = client.sessions.get_messages(
        session_id="session-uuid",
        edit_strategies=[{"type": "token_limit", "params": {"limit_tokens": 30000}}]
    )
let result = await client.sessions.getMessages("session-uuid");
console.log(`Current tokens: ${result.thisTimeTokens}`);

if (result.thisTimeTokens > 50000) {
    // Apply strategies to reduce context
    result = await client.sessions.getMessages("session-uuid", {
        editStrategies: [{ type: "token_limit", params: { limit_tokens: 30000 } }],
    });
}

Basic Usage

from acontext import AcontextClient
import os

client = AcontextClient(api_key=os.getenv("ACONTEXT_API_KEY"))

result = client.sessions.get_messages(
    session_id="session-uuid",
    edit_strategies=[
        {"type": "token_limit", "params": {"limit_tokens": 20000}}
    ]
)
print(f"Messages: {len(result.items)}, Tokens: {result.this_time_tokens}")
import { AcontextClient } from '@acontext/acontext';

const client = new AcontextClient({
    apiKey: process.env.ACONTEXT_API_KEY,
});

const result = await client.sessions.getMessages("session-uuid", {
    editStrategies: [
        { type: "token_limit", params: { limit_tokens: 20000 } },
    ],
});
console.log(`Messages: ${result.items.length}, Tokens: ${result.thisTimeTokens}`);

Edit Strategies

Token Limit

Remove oldest messages until under token limit:

{"type": "token_limit", "params": {"limit_tokens": 20000}}
{ type: "token_limit", params: { limit_tokens: 20000 } }

Remove Tool Results

Replace old tool results with placeholder, keep recent N, and optionally filter by token count:

{
    "type": "remove_tool_result",
    "params": {
        "keep_recent_n_tool_results": 3,
        "tool_result_placeholder": "Done",
        "keep_tools": ["important_tool"],
        "gt_token": 100  # only remove results with more than 100 tokens
    }
}
{
    type: "remove_tool_result",
    params: {
        keep_recent_n_tool_results: 3,
        tool_result_placeholder: "Done",
        keep_tools: ["important_tool"],
        gt_token: 100 // only remove results with more than 100 tokens
    }
}

Remove Tool Call Params

Remove arguments from old tool calls, keep recent N, and optionally filter by token count:

{
    "type": "remove_tool_call_params",
    "params": {
        "keep_recent_n_tool_calls": 3,
        "keep_tools": ["important_tool"],
        "gt_token": 100  # only remove params with more than 100 tokens
    }
}
{
    type: "remove_tool_call_params",
    params: {
        keep_recent_n_tool_calls: 3,
        keep_tools: ["important_tool"],
        gt_token: 100 // only remove params with more than 100 tokens
    }
}

Middle Out

Remove messages from the middle, preserve head and tail:

{"type": "middle_out", "params": {"token_reduce_to": 5000}}
{ type: "middle_out", params: { token_reduce_to: 5000 } }

Combining Strategies

result = client.sessions.get_messages(
    session_id="session-uuid",
    edit_strategies=[
        {"type": "remove_tool_result", "params": {"keep_recent_n_tool_results": 3}},
        {"type": "token_limit", "params": {"limit_tokens": 30000}}
    ]
)
const result = await client.sessions.getMessages("session-uuid", {
    editStrategies: [
        { type: "remove_tool_result", params: { keep_recent_n_tool_results: 3 } },
        { type: "token_limit", params: { limit_tokens: 30000 } },
    ],
});

Get Raw Token Count

token_counts = client.sessions.get_token_counts(session_id="session-uuid")
print(f"Total tokens: {token_counts.total_tokens}")
const tokenCounts = await client.sessions.getTokenCounts("session-uuid");
console.log(`Total tokens: ${tokenCounts.totalTokens}`);

Next Steps

Last updated on

On this page