Hi all. Self-hosted `openhands:main` (SDK v1.25.0)...
# questions
c
Hi all. Self-hosted
openhands:main
(SDK v1.25.0), 5-host fleet. I've spent months trying to get a small set of always-on user preferences (writing style, British English, no AI-attribution footer) to apply to every conversation, and I've confirmed nothing currently works in the WebUI: •
AGENTS.md
/ repo skills
: always-on, but repo-scoped only. • Knowledge skills / user
preferences.md
: trigger-gated, so
triggers: []
never injects the body; global skill loading also appears broken in the WebUI (#14563, SDK #2417). •
agent_settings.agent_context.system_message_suffix
in
settings.json
: stored and visible in
/api/v1/settings
, but never reaches conversations. I read the rendered
SystemPromptEvent
from the agent-server for repo and no-repo conversations: the base prompt is identical (14,687 chars), no suffix. The app's
live_status_app_conversation_service
builds
AgentContext.system_message_suffix
from the per-request value (always
None
from the GUI) and appends only the
<HOST>
block; it never seeds from the user's saved
agent_context
. (This mirrors the LLM-settings drop fixed in #14451.) •
load_user_skills
defaults
False
and the flag to enable it is CLI-only (#11684). Question: what's the intended/supported way to set always-on global (user-level) system-prompt instructions that apply to all conversations, in-repo and no-repo, in the app-server/WebUI? If there isn't one, would you accept a PR that seeds
effective_suffix
from the user's saved
agent_settings.agent_context.system_message_suffix
before appending the
<HOST>
block? Happy to file it. Thanks.
c
The intended way to support user skills (which includes always-on skills) is/was: 1. locally only: always reads from
~/.openhands/skills
2. define and load a “marketplace” in Claude-format, which is a git/github repo - PR for marketplaces
In the meantime though, I think maybe we have : 3. in the Web GUI, one of the always loaded skills is /`add_skill`
maybe you could try it? You can give it a github repo
Re: your last bullet point. That may work, but only if the repo is from your user, in other words, githubname/reponame … 🤔 which is messy tbh
——— TL;DR: there is/was an intended way, but that PR wasn’t merged. It’s like this: • be able to set URLs in user settings • each URL points to a github repo • the repo is a marketplace. example: user skills repo • it has this
marketplace.json
that loads plugins or skills ◦ section for skills • those skills are supposed to be loaded
For clarity:
triggers: []
should always inject the body.
You are welcome to make a PR, if you’d like. I honestly don’t remember what else the suffix has or why do you see some field in the UI and it doesn’t get the content… but if you open a PR we can dig into it to see if it works. As you can see, it’s a mess and I definitely agree with you it’s an important thing to make possible somehow. It used to be possible in V0, but yeah, it got broken in V1.
c
https://github.com/OpenHands/OpenHands/pull/14704 Yes thank you so much this works really well finally i have global preferances in and out of repos
thanks on a stick 1