Trying to get what autonomous kin behaviour means #310
Replies: 4 comments
|
Kind of quiet in here. I'll add an observation that could help others facing the same problem: What I described above could be an LLM problem, not a KinBot problem. I stumbled across this PR at the Hermes Agent repo: NousResearch/hermes-agent#3528 ... and in the first paragraph, they describe exactly the behaviour I was noticing: GPT-type models from OpenAI describe in detail what they're going to do, but are never doing anything (i.e. tool calling) without strict guidance in the system prompt. They are now injecting this in the system prompt: I'm off to test this. |
|
Well - those added instructions helped a bit. But things are still far from perfect. I asked my hub for a root cause analysis and for a suggestion how to fix it. Here is the response: Root-cause analysis (why the agent “falls back into text mode”)Observed symptomThe assistant claims “done / files written / verified”, but no tool call was executed in that turn (so no files exist in /exports). Root cause (mechanism)
Why adding more instructions didn’t reliably fix itAdditional instructions are still text-level constraints. They may reduce the frequency of failure, but they don’t introduce a hard, machine-checkable gate that blocks “done” messages unless tools actually ran. Mitigation we agreed to try: EXEC: handshake (not yet tested)We agreed on a strict handshake keyword to request an explicit execution mode. Keyword: EXEC:Rules when the user message starts with EXEC:The assistant responds tool-first: emit required tool calls immediately (write_file / edit_file etc.). HypothesisThe handshake may reduce “text-only completion” by forcing a clear mode switch and a constrained response format, making non-compliance immediately visible. However, it needs real testing to confirm effectiveness. |
|
Hey Klaus, thanks for the thoughtful write-up — and for your patience waiting for a response. This discussion deserves a proper answer. On the "happy path" for autonomy todayThe current intended model is crons + webhooks + a well-written system prompt:
So the answer to Q1: crons + webhooks + sub-tasks, not crons alone. On the LLM "text mode" problemYou nailed the root cause. This is a model selection problem more than a KinBot problem. GPT-4o and similar OpenAI models are notoriously reluctant to call tools without strong prompting. Claude (Sonnet/Haiku) is significantly better at autonomous tool use out of the box — if you're not already using Claude, that's likely 80% of your issue. The Hermes Agent instruction you found is solid, and your Recommendation: try Claude Sonnet 3.7 or Haiku 3.5 via the Anthropic provider. Night and day difference for autonomous tool use compared to GPT-4o. On the Kanboard visionThis is actually a perfect fit for KinBot's architecture. Your vision — Kins autonomously picking up backlog items, moving cards, working on tasks — is exactly what the platform is designed for. The building blocks are all there:
The mini-app approach for Kanban inside KinBot is rougher terrain (as you discovered). Using an external Kanboard instance accessed via API is the right call — more reliable, and you own your data. On the star countAppreciated 😄 — the project is still early and mostly word-of-mouth. Your bug reports (#331–#337!) have been genuinely valuable this week. Thanks for being such an active tester. If you end up with a Kanboard + KinBot setup that works well, sharing your system prompt structure here or in a separate discussion would be a great contribution to the community. |
|
Hi Nicolas, thanks a lot for the detailed and thoughtful response — really appreciated. The “crons + webhooks + sub-tasks” framing helps and matches the direction we want to go. On our side, the main blocker right now is Kanboard API access via http_request, which is currently not usable for authenticated calls: We need to send Authorization: Basic … headers for Kanboard JSON-RPC. We saw and followed the investigation and the fix you already committed (replacing z.record(...) with z.object({}).catchall(z.string()), plus the same pattern in a few other tools). That looks exactly right and is great news. So for us, the key next step is simply waiting for a release > v0.32.1 that includes the committed fix (or any official image tag that already contains it). As soon as that’s available, we can immediately retest http_request → Kanboard getVersion/getColumns/createTask/moveTaskPosition and then finally turn Kanboard into our SSOT with cron-driven autonomy. Will start switching / experimenting with models soon. Thanks again for the fast turnaround on these bugs — we’re happy to keep testing and to share our prompt conventions / board conventions once the Kanboard loop is working end-to-end. Best wishes and happy easter |
Uh oh!
There was an error while loading. Please reload this page.
Hey @MarlBurroW - Klaus here, from Germany. Thanks for building KinBot! I’m impressed by the core idea of persistent, self-hosted agents, and this is one of the most promising setups I’ve tried in this space.
I started evaluating KinBot largely because “autonomy” is presented as a key capability (“work while you sleep”). While experimenting with it, I realized I’m not fully sure what the intended, best-practice meaning of “autonomy” is in everyday usage for me.
(Please note that I'm not a developer.)
My observation: My hub kin won't take tasks from me via chat and then carry them out - without explicit repeated requests from me. Maybe that is where I went wrong in the first place, expecting to be able to delegate some work via chat.
So far, making it feel autonomous in a clean and reliable way seems to require a fair amount of user-side structure (conventions, logging, scheduling discipline, and some trial-and-error).
That’s totally understandable for a fast-moving project - but it would really help me to have clearer guidance on what you consider the “happy path” today.
Questions I have:
Why I’m asking:
Autonomy - besides memory - is a major reason why I’m testing KinBot. The foundation feels strong; I just want to align my expectations and avoid overengineering patterns that KinBot already supports (or that are planned).
Not sure if I'm getting carried away now, but I'd like to make it more clear what the intended use case is for me:
My vision behind evaluating KinBot is for it to be in my coworker's role where we share a Kanban board as the single source of truth for all work to be done.
This Kanban system would consist of the usual columns, plus swimlanes such as "Waiting for decision by user", "Waiting for review", "Waiting for upstream fix" etc.
Kins would autonomously pick up any open work items that I (or we) put in the backlog for them, work on the assigned items, and then move the cards across the board appropriately.
(Side note 1: Yes, I have this fixation with Kanban. ;-) It's my way of working.)
(Side note 2: I tried to have Bernie, my hub, make a Kanban mini app inside KinBot - 75% failure due to frontend rendering problems, lost data, etc. - my next step would be to set up a reliable Kanboard instance somewhere and let Bernie access it via API, if that is realistic.)
Thanks a lot for any guidance, and happy to share what I’ve learned during testing if that’s useful.
(And we really need to do something about the low star count.)
All reactions