Add Claude Code CLI subprocess backend#2
Open
reed-nicolas wants to merge 1 commit into
Open
Conversation
jkjkim
pushed a commit
to ucb-chia/skydiscover
that referenced
this pull request
May 6, 2026
Adds three files under skydiscover/llm/ that let adaevolve use a local `claude` CLI subscription instead of a hosted LLM API: - claude_code_llm.py: subprocess wrapper around `claude --print` with NDJSON event streaming and typed error classification. - claude_code_llm_pool.py: non-Ray subset of chia's exception hierarchy and rate-limit parsers. - claude_code_adapter.py: async LLMInterface adapter plus a make_claude_code_init_client factory that plugs the backend into LLMModelConfig.init_client (llm_pool.py:34 picks it up automatically when init_client is populated). The adapter reads ClaudeCodeLLM._last_metadata after each prompt so LLMResponse.model_used / prompt_tokens / completion_tokens survive into the controller's child_metadata capture and the multi-seed runner watchdog's cost accounting. Ports the two SmartAgentPrefetchers PRs (SmartAgentPrefetcher#2, SmartAgentPrefetcher/agentic-flow#1) into the correct Chia home. No behavior change for callers that do not set init_client.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ports chia's
ClaudeCodeLLMinto SkyDiscover so runs can use a localclaudeCLI subscription instead of a hosted API. Three new files underskydiscover/llm/:claude_code_llm.py: subprocess wrapper aroundclaude --printwith NDJSON event streaming and typed error classification.claude_code_llm_pool.py: non-Ray subset of chia's exception hierarchy and rate-limit parsers.claude_code_adapter.py: factory that wires the backend ontoLLMModelConfig.init_clientso the existingLLMPoolpath picks it up.Divergences from chia, all forced by the non-Ray bare-metal target:
claude_pathandclaude_config_dirare constructor params so the binary and auth dir can be overridden via env vars at the caller._get_node_idreturns"local".prompt_pooled,_serializable_config,_pooled_prompt_task,_session_transcript_path)._run_claudeenforcestimeout_secondswithproc.wait(timeout=...)plus kill-and-raise on expiry, since there is no Ray worker supervision to kill a stalled subprocess.ChiaTooltype hints replaced withAny. Tools are unused here.No behavior change for callers that do not set
init_client.