1.8 KiB
1.8 KiB
Core gaps vs Grok Bot usability (LazyBoy2 / GrokBoy)
Living checklist for the four product cores. Update when behavior changes.
| Core | Status | Notes |
|---|---|---|
| 1 Completion contract | Present | send_message-only voice; ack ≠ delivery; Waiting + revival; silence / deliver-then-yield reminders |
| 2 Path ladder | Hardened | Prompt section + runtime gate: spawn_subagent kind=computerUse requires prior web_fetch / web_search / browser_* / call_mcp_tool this turn, or force=true for native GUI |
| 3 Human collaboration | Present + tightened | browser_handoff / request_box_help on shared Chrome profile; prompt requires re-observe after human returns |
| 4 Stable single box | Mostly present | Docker box + /home/box/chrome-profile; SingletonLock/flock in box runtime — keep health/docs polished |
Path ladder (runtime)
Implemented in ToolContext::surfaces_used + Subagents::spawn(..., force):
- Successful tool calls (except meta/control) record a surface name.
tried_web_ladder()is true after any of:web_fetch,web_search,browser_*,call_mcp_tool.computerUsewithout ladder and withoutforcereturns a clear error.
Still soft / follow-ups
- Ladder is turn-scoped (shared Arc with children) — not persisted across Waiting revivals unless the same
ToolContextis reused. - Parent can still call
screenshotwithout DOM first (read-only; intentional). - No automatic “browser_* failed → suggest force” helper beyond the error string.
- Box health / profile wipe recovery UX can still be clearer in
PRODUCT.md/ CLI.
Verify
cargo test -p grokboy-core path_ladder -- --nocapture
cargo test -p grokboy-core computer_use_spawn -- --nocapture
cargo test -p grokboy-core agent_system -- --nocapture