How zgjdev/code-agent works
CodeAgent is a Java coding-agent CLI for understanding and changing real codebases. A user submits a task through the terminal; the CLI selects ReAct or Plan-and-Execute, invokes model-backed agents and guarded tools, and presents the result. Plan execution adds DAG planning, approval, conflict-aware batching, worker execution, evidence checks, review, and recovery. Other documented capabilities include code retrieval, persistent sessions and memory, integrations, and alternate channels. The README documents the major workflows; sampled source confirms selected retrieval, search, provider, memory, snapshot, and entry-point behavior, but not every connection shown.
Main entry points: Main.java CLI entry · ToolRegistry.java Tool registry · PlanExecuteAgent.java Plan executor · Agent.java ReAct agent
Components 28
Task workflow
- CLI entry
src/main/java/com/codeagent/cli/Main.java - Mode router
src/main/java/com/codeagent/agent/ExecutionModeRouter.java - ReAct agent
src/main/java/com/codeagent/agent/Agent.java - Plan executor
src/main/java/com/codeagent/agent/PlanExecuteAgent.java - Task planner
src/main/java/com/codeagent/plan/Planner.java - Step reviewer
src/main/java/com/codeagent/agent/StepReviewer.java - LLM clients
src/main/java/com/codeagent/llm/LlmClientFactory.java
Tool safety
- Turn policy
src/main/java/com/codeagent/tool/TurnToolPolicy.java - Approval handler
src/main/java/com/codeagent/hitl/HitlToolRegistry.java - Tool registry
src/main/java/com/codeagent/tool/ToolRegistry.java - Path and command guards
src/main/java/com/codeagent/policy/PathGuard.java
Code and memory
- Code retrieval
src/main/java/com/codeagent/rag/DefaultCodeRetrievalService.java - Live code search
src/main/java/com/codeagent/search/RipgrepCodeSearchService.java - Retrieval index
src/main/java/com/codeagent/rag/SqliteRetrievalIndex.java - Memory manager
src/main/java/com/codeagent/memory/MemoryManager.java
Persistence
- Session history
src/main/java/com/codeagent/history/ConversationLedger.java - Plan checkpoints
src/main/java/com/codeagent/plan/PlanStateStore.java - Turn snapshots
src/main/java/com/codeagent/snapshot/SnapshotService.java
Channels and integrations
- Terminal renderer
src/main/java/com/codeagent/render/Renderer.java - MCP manager
src/main/java/com/codeagent/mcp/McpServerManager.java - Web tools
src/main/java/com/codeagent/web/WebToolBackendRouter.java - Browser connector
src/main/java/com/codeagent/browser/BrowserConnector.java - Runtime API
src/main/java/com/codeagent/runtime/api/RuntimeApiServer.java - WeChat channel
src/main/java/com/codeagent/wechat/WechatMessageLoop.java
Other components
- User
- LLM provider
- Project files
- Human approver
Connections 35
- User → CLI entry: submits task
- CLI entry → Mode router: routes input
- CLI entry → ReAct agent: runs ReAct
- CLI entry → Plan executor: runs plan
- Mode router → LLM clients: classifies task
- Mode router → ReAct agent: selects mode
- Mode router → Plan executor: selects mode
- ReAct agent → LLM clients: requests response
- Plan executor → Task planner: creates task DAG
- Plan executor → Step reviewer: reviews steps
- Plan executor → LLM clients: runs workers
- Plan executor → Plan checkpoints: checkpoints plan
- Plan executor → Session history: records events
- LLM clients → LLM provider: sends requests
- ReAct agent → Turn policy: dispatches tools
- Turn policy → Approval handler: checks approval
- Approval handler → Human approver: requests decision
- Approval handler → Tool registry: dispatches approved
- Tool registry → Path and command guards: checks operations
- Path and command guards → Project files: reads or writes
- Tool registry → Code retrieval: invokes search
- Tool registry → Live code search: invokes grep
- Code retrieval → Retrieval index: queries and refreshes
- Live code search → Project files: searches live files
- ReAct agent → Memory manager: uses memory
- Memory manager → LLM clients: classifies writes
- CLI entry → Session history: manages sessions
- CLI entry → Turn snapshots: manages snapshots
- CLI entry → Terminal renderer: renders interaction
- CLI entry → MCP manager: manages servers
- Tool registry → MCP manager: calls MCP tools
- Tool registry → Web tools: dispatches web tools
- Tool registry → Browser connector: dispatches browser tools
- Runtime API → ReAct agent: runs turns
- WeChat channel → ReAct agent: submits messages