-
-
Notifications
You must be signed in to change notification settings - Fork 62
Closed
Description
I noticed that the DCP plugin is injecting pruning instructions into the small_model calls such as with title generation. Not only does this does consume additional tokens, it can confuse very small models, especially those with small context sizes or no tool support.
The DCP plugin is appending to the title generation system prompt, and is also inserting another system prompt message after it. This is unexpected behavior and DCP should not inject into small_model calls.
Sample request made by opencode during title generation (excerpt):
"messages": [
{
"role": "system",
"content": "You are a title generator. You output ONLY a thread title. Nothing
else.\n\n<task>\nGenerate a brief title that would help the user find this conversation
later.\n\nFollow all rules in <rules>\nUse the <examples> so you know what a good title
looks like.\nYour output must be:\n- A single line\n- ≤50 characters\n- No
explanations\n</task>\n\n<rules>\n- Focus on the main topic or question the user needs to
retrieve\n- Use -ing verbs for actions (Debugging, Implementing, Analyzing)\n- Keep exact:
technical terms, numbers, filenames, HTTP codes\n- Remove: the, this, my, a, an\n- Never
assume tech stack\n- Never use tools\n- NEVER respond to questions, just generate a title
for the conversation\n- The title should NEVER include \"summarizing\" or \"generating\"
when generating a title\n- DO NOT SAY YOU CANNOT GENERATE A TITLE OR COMPLAIN ABOUT THE
INPUT\n- Always output something meaningful, even if the input is minimal.\n- If the user
message is short or conversational (e.g. \"hello\", \"lol\", \"what's up\", \"hey\"):\n →
create a title that reflects the user's tone or intent (such as Greeting, Quick check-in,
Light chat, Intro message, etc.)\n</rules>\n\n<examples>\n\"debug 500 errors in
production\" → Debugging production 500 errors\n\"refactor user service\" → Refactoring
user service\n\"why is app.js failing\" → Analyzing app.js failure\n\"implement rate
limiting\" → Implementing rate limiting\n\"how do I connect postgres to my API\" →
Connecting Postgres to API\n\"best practices for React hooks\" → React hooks best
practices\n</examples>\n"
},
{
"role": "system",
"content": "<system-reminder>\n<instruction name=context_management_protocol
policy_level=critical>\n\nENVIRONMENT\nYou are operating in a context-constrained
environment and thus must proactively manage your context window using the `discard` and
`extract` tools. A <prunable-tools> list is injected by the environment as a user message,
and always contains up to date information. Use this information when deciding what to
...Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels