neuron-explorer
Qwen3.5‑4B 전용 조향형 뉴런 탐색기, 모든 MLP 뉴런을 밀어 결과를 보관·탐색
AgentCompile은 AI 에이전트가 반복 작업을 학습해 컴파일해 실행하는 SDK입니다
AgentCompile is an SDK that learns the jobs your AI agent repeats from its own history and runs them compiled. Everything else goes to your agent, unchanged. Pre-launch and looking for design partners
개발 도구PythonGitHub @kbhatnagar1506온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Python SDK for AgentCompile: wrap your agent's model client; repeated jobs run compiled, everything else goes to your model unchanged
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Wrap your agent's model client. Jobs your agent repeats run compiled, with no model call; everything else goes to your model unchanged, with your own provider key.
Anthropic works the same way (agentcompile.wrap(Anthropic()), then client.messages.create(...)). So do async clients, streaming and tool calls. Instead of the keyword, you can set the id for a block of calls:README 전문 보기 ↗pip install agentcompile
Wrap your agent's model client. Jobs your agent repeats run compiled, with no model call; everything else goes to your model unchanged, with your own provider key.
from openai import OpenAI
import agentcompile
client = agentcompile.wrap(OpenAI(), key="ack_...") # or AGENTCOMPILE_KEY
resp = client.chat.completions.create(
model="gpt-5", messages=messages, tools=tools,
conversation_id=ticket.id, # one id per conversation
)
Anthropic works the same way (agentcompile.wrap(Anthropic()), then client.messages.create(...)). So do async clients, streaming and tool calls. Instead of the keyword, you can set the id for a block of calls:
with agentcompile.conversation(ticket.id):
run_agent(client)
/v1/decide). The whole call takes at most timeout (default 5 s), and AgentCompile is told that, so it answers in time.tools you passed.n > 1, a forced tool_choice, a response_format), so your model is called without asking.Your provider key never leaves your process. mode="shadow" decides but always calls your model, so you can see what it would have done before you switch it on.
Every call is written to ~/.agentcompile/trail.jsonl (trail= sets a path, or False turns it off; on_event= gets each event).
agentcompile trail # recent calls and a summary
agentcompile trail -f # follow live
14:02:11 c1 compiled get_order_details gpt-5 48 ms decide
14:02:12 c2 forwarded no job matched gpt-5 51 ms decide
2 calls: compiled 1, forwarded 1. Model calls avoided: 1 (50%).
Your AgentCompile key (ack_...) identifies your company by itself. We show it once and store only its hash; a new key revokes the old one. AgentCompile is pre-launch: to get a key, write to [email protected].
Commit with conventional messages (fix: ... is a patch, feat: ... a minor version, feat!: ... a major one). A release PR stays open with the next version and its changelog; merging it tags the release and publishes it to PyPI. The version always comes from the git tag.
pip install -e ".[dev]"
pytest tests
Tell AgentCompile how a conversation ended, so it learns only from the ones that went well:
agentcompile.outcome(ticket.id, "resolved") # or escalated, unresolved, abandoned, reopened, complaint
Pass a stable customer id so repeat jobs are counted per customer (scrubbed like everything else when capture is on):
with agentcompile.conversation(ticket.id, customer=ticket.customer_id):
run_agent()
Streamed answers are captured too: your agent reads the stream as always, and the whole answer is captured once it ends.
A wrapped OpenAI client captures client.responses.create(...) as well (streamed or not). Those
calls always go to your model: compiled answers come in Chat Completions' and Anthropic's shapes.
When a framework builds its own client (LangChain, LiteLLM, CrewAI, Pydantic AI, the OpenAI Agents SDK), give it a capturing HTTP client instead of wrapping anything:
http = agentcompile.http_client(key="ack_...") # async: agentcompile.async_http_client()
ChatOpenAI(model="gpt-5", http_client=http) # LangChain
litellm.client_session = http # LiteLLM, CrewAI
OpenAIProvider(http_client=agentcompile.async_http_client()) # Pydantic AI
set_default_openai_client(AsyncOpenAI(http_client=agentcompile.async_http_client())) # Agents SDK
with agentcompile.conversation(ticket.id):
run_agent()
It captures the POSTs to /chat/completions, /responses and /messages that pass through
it, scrubbed the same way, and leaves everything else alone. It only captures: to have known
jobs answered compiled, use wrap. An SDK that takes only httpx2 clients (newer anthropic
releases) takes agentcompile.http_client(lib="httpx2").
agentcompile.transport() gives the bare transport, to wrap one of your own.
With capture=True, personal data is scrubbed on your machine before anything is sent:
emails, payment cards, phone numbers and account numbers become keyed tokens
(<email:3f9a1c2e>), the same value always giving the same token, so AgentCompile can still
match values across a conversation without seeing them. The key stays with you:
AGENTCOMPILE_SCRUB_KEY (set the same one on all your servers), else one created once in
~/.agentcompile/scrub.key. scrub=False turns it off. Live decisions (/v1/decide) need
real values to act on a customer's request; they are used in memory and stored scrubbed.