Replies: 4 comments 6 replies
-
|
Here's the approach I've been using when integrating Codex: I wrote a channel plugin that allows external processes to deliver messages to a specified session via HTTP. This enables Codex, combined with a handoff skill, to invoke framework commands through the , prefix convention — for example, posting ,tape.handoff ... via the channel plugin to trigger the framework command. Additionally, my approach maps one anchor to one Codex session (thread) lifecycle. Codex triggers ,tape.handoff through the channel plugin to create a new anchor, signaling that the current session has ended and the next turn should start a new session. (A codex.thread event is appended after the anchor, storing the thread ID internally.) The entire solution is implemented through hooks, with no modifications to bub core. |
Beta Was this translation helpful? Give feedback.
-
|
@frostming @PsiACE Hi, would appreciate your input on this when you get a chance. 🙏 |
Beta Was this translation helpful? Give feedback.
-
|
Sorry that I only got time to look into this discussion today. I think you have thought this through carefully, and I also checked your previous work on For exposing bub’s internal tools to other agents, I see a few typical approaches:
For tape integration, I think there are also a few possible shapes:
So I don’t think bub needs to force one single model here. The lightweight version is “external harness + comma command + coarse tape anchor”; the more integrated version is “framework-native tools/MCP + structured event transcription into tape”. |
Beta Was this translation helpful? Give feedback.
-
|
(There are so many agent/harness implementations out there now. For me, I'd rather use bub to quickly piece them together like building blocks for experimentation, instead of writing yet another one myself. Beyond Codex, I'm also looking to integrate pi-core into bub. But how does tape remain a first-class citizen in this model? And how should tools integrate with other harnesses? I guess that's really been my underlying question all along....) |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Context
bub allows external harness agents (e.g. Codex, Kimi Copilot) to be plugged in via the
run_modelhook, replacing the default built-in agent. This is a great extension point.As I understand it, bub's plugin system provides a set of tools (e.g.
tape.handoff,schedule.add) that are currently only callable by the built-in agent. When an external harness is used, these capabilities appear to be unavailable.Similarly, bub's tape records fine-grained execution details for the built-in agent, but the internal execution of an external harness is opaque to the framework -- tape has no visibility into what happens inside the harness session.
I don't think bub's goal is to have everyone use the built-in agent, nor to require harness implementors to reimplement the framework's internals from scratch. So I'd like to discuss two aspects:
1. Exposing framework tools to external harnesses
How can an external harness discover and invoke framework-provided tools (schedule, tape operations, etc.) after being plugged in?
One possible direction: expose these tools via a remote call interface (e.g. HTTP or MCP), allowing harnesses to call them through a standard protocol without needing to understand bub's internals.
2. Tape integration with external harnesses
External harnesses have their own internal loop (session). How can their execution be represented in the tape?
A possible starting point: record at a coarse granularity at the
run_modellevel, where a tape anchor corresponds to a harness session. This could be refined over time, allowing implementors to report more detail as needed.Not sure if this aligns with bub's current design direction -- putting it out there for discussion.
Beta Was this translation helpful? Give feedback.
All reactions