fix(honcho): plugin drift overhaul -- observation config, chunking, setup wizard, docs, dead code cleanup from migration#5045
Conversation
|
CI failures are pre-existing and unrelated to this PR:
|
…ervation, dialectic guards Incorporates Honcho memory UX improvements from upstream PR NousResearch#5045: Observation system: - Default observation flipped: unified -> directional (all 4 bools true) - Granular per-peer observation booleans replace string-only mode - Server-side observation config sync after add_peers() - Observation presets (directional, unified) kept as shorthands - Per-peer override via 'observation' JSON object in honcho.json Message chunking: - _chunk_message() splits at paragraph/sentence/word boundaries - Replaces hard [:4000] truncation in sync_turn() - Configurable via messageMaxChars (default 25000) - Continuation chunks prefixed with '[continued]' Dialectic controls: - dialecticDynamic toggle (false = no auto-bump, cost control) - dialecticMaxInputChars guard (default 10000, truncates long queries) - Applied in both session.py dialectic_query() and __init__.py tool handler Config schema: - New fields exposed via get_config_schema() for hermes memory setup - observation, messageMaxChars, dialecticDynamic, dialecticMaxInputChars Removals (dead code from PR NousResearch#5045): - memory_mode, peer_memory_modes, linked_hosts already removed in prior commits - String-based observation mode logic replaced with boolean-based
…up wizard, tests, docs, skill Completes adoption of erosika's Honcho plugin overhaul (PR NousResearch#5045). Previous commit adopted core plugin files (__init__, client, session). This commit adds: - plugins/memory/honcho/cli.py: full CLI with setup wizard rewrite (cloud/local picker, observation mode, memoryMode->recallMode migration) - hermes_cli/memory_setup.py: dependency install improvements - tests/honcho_plugin/test_session.py: 9 new tests (chunking, dialectic guard) - tests/honcho_plugin/test_client.py: config resolution fixes - tests/honcho_plugin/test_async_memory.py: dead test cleanup - plugins/memory/honcho/README.md: full config reference (30+ keys) - optional-skills/autonomous-ai-agents/honcho/SKILL.md: new honcho skill
cb85697 to
7c982ba
Compare
- client.py reads both baseUrl and base_url from config (backward compat) - schema declaration changed from base_url to baseUrl (correct JSON convention) - fix 2 TestResolveConfigPath failures: mock Path.home() to isolate from real ~/.hermes/honcho.json during test - add messageMaxChars (default 25k) and dialecticMaxInputChars (default 10k) config fields for Honcho API limits - granular per-peer observation config: observation object with user/ai observeMe/observeOthers booleans, replacing string presets - server-side observation sync via get_peer_configuration() on session init Resolves: spec H1 (base_url/baseUrl mismatch)
Setup wizard: - cloud/local deployment picker with smart API key handling - explicit AI peer name prompt (never derived from SOUL.md) - observation mode config, auto-enables memory.provider in config.yaml - post_setup() hook: both hermes honcho setup and hermes memory setup converge to the same full wizard via cmd_setup_provider() - hardcode memoryMode: hybrid (honcho-only was dead code) - strip emojis from CLI output - clean up legacy base_url snake_case key on setup Memory plugin: - message chunking: split at paragraph/sentence/word boundaries with [continued] markers when exceeding messageMaxChars (default 25k) - removed SOUL.md aiPeer sync (persona content != identity config) - removed dead _sanitize_peer_name + import re - schema key fixed: base_url -> baseUrl Picker: - "API key / local" hint for providers with both secret and non-secret fields - removed active indicator per feedback Resolves: spec C1, C2, H2, M2
session.py: - per-peer observation booleans replace mode string branching - SessionPeerConfig set from granular user/ai observeMe/observeOthers - server-side config sync: get_peer_configuration() after add_peers so Honcho dashboard changes are picked up on session init - dialectic input guard: truncate queries exceeding dialecticMaxInputChars (default 10k) at word boundary - routing logic keys off ai_observe_others instead of mode string tests: - 8 chunking tests (paragraph/sentence/word split, continuation prefix, empty, large message, exact limit) - 1 dialectic input guard test (long query truncated) Default observation mode changed: directional (all on) replaces unified
README.md: full config reference with 30+ keys, all defaults, scope, precedence rules, granular observation docs, example config, CLI commands memory-providers.md: - honcho section: self-hosted support, API key link to app.honcho.dev - setup wizard command, config reference link to GitHub README - multi-profile section with --clone and hermes honcho sync optional skill (autonomous-ai-agents/honcho): - setup (cloud/local), architecture (peers, observation, sessions) - multi-profile with --clone, per-profile observation override - tool reference with cost/latency guidance - config reference, cost-awareness advanced settings - troubleshooting for 5 common issues
Add dialecticDynamic (bool, default true) to control whether reasoning level auto-bumps based on query length. When false, always uses dialecticReasoningLevel as-is. Documented in README and skill.
Dead code removed: - memoryMode / memory_mode / peer_memory_modes / peer_memory_mode() / _resolve_memory_mode() -- C1: honcho-only mode was never enforced, MemoryManager always runs both providers. Setup hardcodes hybrid. - linkedHosts / linked_hosts / get_linked_workspaces() -- never called from session, cli, or init. Pure dead weight. - B2 suppress flags (_suppress_memory, _suppress_user_profile) -- set but never read by anything. - 14 dead tests for the above. Profile clone key lists updated: - clone_honcho_for_profile + cmd_enable now inherit observation, dialecticDynamic, messageMaxChars, dialecticMaxInputChars. - Removed memoryMode from clone lists. Docs: - memory-providers.md: collapsible config reference + full multi-profile example with <details>, expanded hermes honcho sync description - profiles.md: tip linking to Honcho multi-profile section - README: per-profile observation example, removed memoryMode + linkedHosts
…e, scope comment - _chunk_message: consolidate budget/effective_limit into single var - cli.py: remove all memoryMode writes and display references - cmd_mode: repurposed from dead memoryMode to recallMode (hybrid/context/tools) - cmd_status: replace memory mode line with observation config display - session.py: add comment noting observation sync is manager-scoped not per-session - session.py: fix stale docstring reference to memory_mode
- fetch honcho_profile card data from peer.get_card()/peer.card() - use peer-level context/representation lookups for search and prefetch - add regression tests covering direct peer lookup behavior
7c982ba to
ea95cc0
Compare
…etup wizard, docs, dead code cleanup Salvaged from PR #5045 by erosika. - Replace memoryMode/peer_memory_modes with granular per-peer observation config - Add message chunking for Honcho API limits (25k chars default) - Add dialectic input guard (10k chars default) - Add dialecticDynamic toggle for reasoning level auto-bump - Rewrite setup wizard with cloud/local deployment picker - Switch peer card/profile/search from session.context() to direct peer APIs - Add server-side observation sync via get_peer_configuration() - Fix base_url/baseUrl config mismatch for self-hosted setups - Fix local auth leak (cloud API keys no longer sent to local instances) - Remove dead code: memoryMode, peer_memory_modes, linkedHosts, suppress flags, SOUL.md aiPeer sync - Add post_setup hook to memory_setup.py for provider-specific setup wizards - Comprehensive README rewrite with full config reference - New optional skill: autonomous-ai-agents/honcho - Expanded memory-providers.md with multi-profile docs - 9 new tests (chunking, dialectic guard, peer lookups), 14 dead tests removed - Fix 2 pre-existing TestResolveConfigPath filesystem isolation failures
|
Merged via PR #5295. Your plugin-internal changes (observation config, message chunking, dialectic guard, direct peer APIs, setup wizard rewrite, dead code cleanup, docs) were cherry-picked with your authorship preserved. On top of your work, we made a few architectural changes:
Thanks for the thorough work — this closes 11 PRs and 4 issues in one shot. |
…etup wizard, docs, dead code cleanup Salvaged from PR #5045 by erosika. - Replace memoryMode/peer_memory_modes with granular per-peer observation config - Add message chunking for Honcho API limits (25k chars default) - Add dialectic input guard (10k chars default) - Add dialecticDynamic toggle for reasoning level auto-bump - Rewrite setup wizard with cloud/local deployment picker - Switch peer card/profile/search from session.context() to direct peer APIs - Add server-side observation sync via get_peer_configuration() - Fix base_url/baseUrl config mismatch for self-hosted setups - Fix local auth leak (cloud API keys no longer sent to local instances) - Remove dead code: memoryMode, peer_memory_modes, linkedHosts, suppress flags, SOUL.md aiPeer sync - Add post_setup hook to memory_setup.py for provider-specific setup wizards - Comprehensive README rewrite with full config reference - New optional skill: autonomous-ai-agents/honcho - Expanded memory-providers.md with multi-profile docs - 9 new tests (chunking, dialectic guard, peer lookups), 14 dead tests removed - Fix 2 pre-existing TestResolveConfigPath filesystem isolation failures
|
Closed — merged via PR #5295 with your authorship preserved on the honcho overhaul commit. See the comment above for details on the architectural additions we made on top. Thanks for the thorough work! |
…etup wizard, docs, dead code cleanup Salvaged from PR NousResearch#5045 by erosika. - Replace memoryMode/peer_memory_modes with granular per-peer observation config - Add message chunking for Honcho API limits (25k chars default) - Add dialectic input guard (10k chars default) - Add dialecticDynamic toggle for reasoning level auto-bump - Rewrite setup wizard with cloud/local deployment picker - Switch peer card/profile/search from session.context() to direct peer APIs - Add server-side observation sync via get_peer_configuration() - Fix base_url/baseUrl config mismatch for self-hosted setups - Fix local auth leak (cloud API keys no longer sent to local instances) - Remove dead code: memoryMode, peer_memory_modes, linkedHosts, suppress flags, SOUL.md aiPeer sync - Add post_setup hook to memory_setup.py for provider-specific setup wizards - Comprehensive README rewrite with full config reference - New optional skill: autonomous-ai-agents/honcho - Expanded memory-providers.md with multi-profile docs - 9 new tests (chunking, dialectic guard, peer lookups), 14 dead tests removed - Fix 2 pre-existing TestResolveConfigPath filesystem isolation failures
…ervation, dialectic guards
…etup wizard, docs, dead code cleanup Salvaged from PR NousResearch#5045 by erosika. - Replace memoryMode/peer_memory_modes with granular per-peer observation config - Add message chunking for Honcho API limits (25k chars default) - Add dialectic input guard (10k chars default) - Add dialecticDynamic toggle for reasoning level auto-bump - Rewrite setup wizard with cloud/local deployment picker - Switch peer card/profile/search from session.context() to direct peer APIs - Add server-side observation sync via get_peer_configuration() - Fix base_url/baseUrl config mismatch for self-hosted setups - Fix local auth leak (cloud API keys no longer sent to local instances) - Remove dead code: memoryMode, peer_memory_modes, linkedHosts, suppress flags, SOUL.md aiPeer sync - Add post_setup hook to memory_setup.py for provider-specific setup wizards - Comprehensive README rewrite with full config reference - New optional skill: autonomous-ai-agents/honcho - Expanded memory-providers.md with multi-profile docs - 9 new tests (chunking, dialectic guard, peer lookups), 14 dead tests removed - Fix 2 pre-existing TestResolveConfigPath filesystem isolation failures
…etup wizard, docs, dead code cleanup Salvaged from PR NousResearch#5045 by erosika. - Replace memoryMode/peer_memory_modes with granular per-peer observation config - Add message chunking for Honcho API limits (25k chars default) - Add dialectic input guard (10k chars default) - Add dialecticDynamic toggle for reasoning level auto-bump - Rewrite setup wizard with cloud/local deployment picker - Switch peer card/profile/search from session.context() to direct peer APIs - Add server-side observation sync via get_peer_configuration() - Fix base_url/baseUrl config mismatch for self-hosted setups - Fix local auth leak (cloud API keys no longer sent to local instances) - Remove dead code: memoryMode, peer_memory_modes, linkedHosts, suppress flags, SOUL.md aiPeer sync - Add post_setup hook to memory_setup.py for provider-specific setup wizards - Comprehensive README rewrite with full config reference - New optional skill: autonomous-ai-agents/honcho - Expanded memory-providers.md with multi-profile docs - 9 new tests (chunking, dialectic guard, peer lookups), 14 dead tests removed - Fix 2 pre-existing TestResolveConfigPath filesystem isolation failures
…etup wizard, docs, dead code cleanup Salvaged from PR NousResearch#5045 by erosika. - Replace memoryMode/peer_memory_modes with granular per-peer observation config - Add message chunking for Honcho API limits (25k chars default) - Add dialectic input guard (10k chars default) - Add dialecticDynamic toggle for reasoning level auto-bump - Rewrite setup wizard with cloud/local deployment picker - Switch peer card/profile/search from session.context() to direct peer APIs - Add server-side observation sync via get_peer_configuration() - Fix base_url/baseUrl config mismatch for self-hosted setups - Fix local auth leak (cloud API keys no longer sent to local instances) - Remove dead code: memoryMode, peer_memory_modes, linkedHosts, suppress flags, SOUL.md aiPeer sync - Add post_setup hook to memory_setup.py for provider-specific setup wizards - Comprehensive README rewrite with full config reference - New optional skill: autonomous-ai-agents/honcho - Expanded memory-providers.md with multi-profile docs - 9 new tests (chunking, dialectic guard, peer lookups), 14 dead tests removed - Fix 2 pre-existing TestResolveConfigPath filesystem isolation failures
…etup wizard, docs, dead code cleanup Salvaged from PR NousResearch#5045 by erosika. - Replace memoryMode/peer_memory_modes with granular per-peer observation config - Add message chunking for Honcho API limits (25k chars default) - Add dialectic input guard (10k chars default) - Add dialecticDynamic toggle for reasoning level auto-bump - Rewrite setup wizard with cloud/local deployment picker - Switch peer card/profile/search from session.context() to direct peer APIs - Add server-side observation sync via get_peer_configuration() - Fix base_url/baseUrl config mismatch for self-hosted setups - Fix local auth leak (cloud API keys no longer sent to local instances) - Remove dead code: memoryMode, peer_memory_modes, linkedHosts, suppress flags, SOUL.md aiPeer sync - Add post_setup hook to memory_setup.py for provider-specific setup wizards - Comprehensive README rewrite with full config reference - New optional skill: autonomous-ai-agents/honcho - Expanded memory-providers.md with multi-profile docs - 9 new tests (chunking, dialectic guard, peer lookups), 14 dead tests removed - Fix 2 pre-existing TestResolveConfigPath filesystem isolation failures
…etup wizard, docs, dead code cleanup Salvaged from PR NousResearch#5045 by erosika. - Replace memoryMode/peer_memory_modes with granular per-peer observation config - Add message chunking for Honcho API limits (25k chars default) - Add dialectic input guard (10k chars default) - Add dialecticDynamic toggle for reasoning level auto-bump - Rewrite setup wizard with cloud/local deployment picker - Switch peer card/profile/search from session.context() to direct peer APIs - Add server-side observation sync via get_peer_configuration() - Fix base_url/baseUrl config mismatch for self-hosted setups - Fix local auth leak (cloud API keys no longer sent to local instances) - Remove dead code: memoryMode, peer_memory_modes, linkedHosts, suppress flags, SOUL.md aiPeer sync - Add post_setup hook to memory_setup.py for provider-specific setup wizards - Comprehensive README rewrite with full config reference - New optional skill: autonomous-ai-agents/honcho - Expanded memory-providers.md with multi-profile docs - 9 new tests (chunking, dialectic guard, peer lookups), 14 dead tests removed - Fix 2 pre-existing TestResolveConfigPath filesystem isolation failures
…etup wizard, docs, dead code cleanup Salvaged from PR NousResearch#5045 by erosika. - Replace memoryMode/peer_memory_modes with granular per-peer observation config - Add message chunking for Honcho API limits (25k chars default) - Add dialectic input guard (10k chars default) - Add dialecticDynamic toggle for reasoning level auto-bump - Rewrite setup wizard with cloud/local deployment picker - Switch peer card/profile/search from session.context() to direct peer APIs - Add server-side observation sync via get_peer_configuration() - Fix base_url/baseUrl config mismatch for self-hosted setups - Fix local auth leak (cloud API keys no longer sent to local instances) - Remove dead code: memoryMode, peer_memory_modes, linkedHosts, suppress flags, SOUL.md aiPeer sync - Add post_setup hook to memory_setup.py for provider-specific setup wizards - Comprehensive README rewrite with full config reference - New optional skill: autonomous-ai-agents/honcho - Expanded memory-providers.md with multi-profile docs - 9 new tests (chunking, dialectic guard, peer lookups), 14 dead tests removed - Fix 2 pre-existing TestResolveConfigPath filesystem isolation failures
Summary
Honcho memory plugin overhaul addressing integration drift and community feedback since the v0.7 plugin migration. Fixes longstanding config mismatches, adds missing API limit handling, replaces opaque presets with granular per-peer observation, fills documentation gaps, and now reads profile data directly from peer APIs when session-scoped context comes back empty.
Fixes
hermes honcho setupandhermes memory setupnow converge to the same full wizard viapost_setup()hook. No more redirect to a 2-field generic form.apiKey.memoryMode/peer_memory_modes(never enforced by MemoryManager),linkedHosts(never called), suppress flags (set but never read).cmd_moderepurposed from dead memoryMode to recallMode.honcho_profile, search, and prefetch paths now fall back to direct peer APIs (get_card()/context()/representation()) instead of relying only on session-scoped context, which could return empty profile data in messaging flows.New features
[continued]markers. Configurable viamessageMaxChars.peer.chat(). Configurable viadialecticMaxInputChars.observationModestring presets with per-peerobserveMe/observeOthersbooleans mapping 1:1 to Honcho'sSessionPeerConfig. Legacy presets still work as shorthands. Default: all observations on.get_peer_configuration()called afteradd_peerson session init -- dashboard changes picked up automatically.dialecticDynamictoggle: configurable auto-bump of reasoning level by query length (default true). Set false for fixed level.memory.provider: honchoin config.yaml.clone_honcho_for_profileandcmd_enablenow inheritobservation,dialecticDynamic,messageMaxChars,dialecticMaxInputChars.Docs
plugins/memory/honcho/README.md: full config reference (30+ keys, defaults, scope, precedence, granular observation docs, per-profile examples)memory-providers.md: Honcho section rewritten with self-hosted support, collapsible config table, minimal JSON examples (cloud + local), multi-profile section with--cloneandhermes honcho syncexplanationprofiles.md: tip linking to Honcho multi-profile docsautonomous-ai-agents/honcho: setup, architecture, multi-profile, observation, all 16 CLI commands, troubleshootingTests
TestResolveConfigPathfailures (filesystem isolation)memoryMode/linkedHostscodeClose on merge
PRs:
Issues: