inject-user-id
v0.3.0
Published
OpenCode plugin that injects metadata.user_id into configured model request URLs for prompt-cache stickiness
Downloads
129
Maintainers
Readme
inject-user-id
An OpenCode plugin that injects metadata.user_id into
configured model request bodies (/v1/messages and /v1/chat/completions).
A relay that routes by metadata.user_id can then pin all of a session's
requests to one upstream account, keeping the prompt-cache hit rate high — so
you get the caching benefit without running a separate request-rewriting
proxy in front of OpenCode.
It wraps globalThis.fetch inside the plugin server() hook (the same
mechanism @lucentia/opencode-trace uses), so it composes with other plugins.
Install
Add it to the plugin array in ~/.config/opencode/opencode.json:
{
"plugin": ["inject-user-id"],
"provider": {
"claudecode": {
"npm": "@ai-sdk/anthropic",
"options": {
"baseURL": "https://api.claudecode.net.cn/api/claudecode/v1",
"apiKey": "{env:LLM_API_KEY}"
},
"models": { "claude-opus-4-8": {} }
}
}
}OpenCode fetches and caches the plugin from npm. Because the metadata is added
in-process, the provider baseURL points straight at the remote relay — no
local proxy needed.
Configure
export INJECT_HOST=api.claudecode.net.cn
export INJECT_ID=your-stable-user-or-session-idINJECT_HOST is required for injection. It is a comma-separated list. Each
entry can be either:
- a bare host, matching that host and its subdomains:
api.claudecode.net.cn,relay.example.com - a full URL prefix:
https://api.claudecode.net.cn/api/claudecode/v1
INJECT_ID is optional. If unset, the plugin falls back to the built-in stable
id stable-user-or-session-id-xxxxxxx123.
Behaviour
Injection happens only when all of these hold. Otherwise the request is passed through untouched.
- the request URL matches one of the
INJECT_HOSTentries; - the request is a POST to
…/messagesor…/chat/completions; - the request body is JSON;
- an existing
metadataobject is merged, not overwritten; - all other request fields are preserved.
Run the tests: npm test.
License
MIT
