How eternalwavee/c-agent works
C Agent is a terminal programming assistant: a user enters a natural-language task, the Agent exchanges turns with an LLM, dispatches tool calls, and presents the result in the terminal. The product also includes persistent sessions and project memory, skill loading/installation, web access, subagents, and context reclamation. Source-index references and README statements support several internal links; unsampled tool implementations are represented at their existing directory path, and unverified links are omitted.
Main entry points: agent.c Agent Loop · executor.c Tool Executor · main.c REPL Entry · cmd.c REPL Commands
Components 24
REPL and Agent
- REPL Entry
main.c - REPL Commands
core/cmd.c - Agent Loop
agent/agent.c - Runtime Config
core/config.c
Reasoning and Context
- LLM Client
agent/llm_client.c - Prompt Builder
agent/prompt.c - Context Policies
context - Message History
core/message.c - HTTP Client
core/http.c - JSON Support
libs/cJSON.c
Tool Capabilities
- Tool Executor
tools/executor.c - Workspace Tools
tools - Memory Tools
tools/memory_tool.c - Web Tools
tools - Skill Tools
tools - Subagents
tools/subagent.c
Persistent State
- Project Memory
core/memory.c - Session Store
core/session.c - Skill Catalog
core/skills.c - Tool Hooks
core/hooks.c
Terminal Rendering
- Terminal UI
ui/ui.c - Markdown Renderer
ui/markdown.c - Markdown Parser
libs/md4c.c
Other components
- User
Connections 35
- User → REPL Entry: enters tasks
- REPL Entry → Agent Loop: sends input
main.c - REPL Entry → REPL Commands: dispatches commands
main.c - REPL Entry → Session Store: persists turns
main.c - REPL Entry → Terminal UI: renders interaction
main.c - REPL Commands → Agent Loop: runs chat
core/cmd.c - REPL Commands → Session Store: manages sessions
core/cmd.c - REPL Commands → Project Memory: triggers consolidation
core/cmd.c - Agent Loop → LLM Client: requests responses
agent/agent.c - Agent Loop → Prompt Builder: builds prompt
agent/agent.c - Agent Loop → Context Policies: reclaims context
agent/agent.c - Agent Loop → Message History: maintains history
agent/agent.c - Agent Loop → Tool Executor: dispatches calls
agent/agent.c - Agent Loop → Terminal UI: updates status
agent/agent.c - LLM Client → HTTP Client: sends API requests
agent/llm_client.c - LLM Client → Runtime Config: reads settings
agent/llm_client.c - LLM Client → JSON Support: parses responses
- Context Policies → LLM Client: requests summaries
context/policy_summary.c - Context Policies → Message History: rewrites history
context/policy_offload.c - Tool Executor → Workspace Tools: executes tools
- Tool Executor → Memory Tools: executes tools
- Tool Executor → Web Tools: executes tools
- Tool Executor → Skill Tools: executes tools
- Tool Executor → Subagents: executes tools
- Tool Executor → Tool Hooks: emits lifecycle events
- Tool Hooks → Project Memory: records observations
- Memory Tools → Project Memory: reads and updates
tools/memory_tool.c - Prompt Builder → Project Memory: loads memory context
agent/prompt.c - Prompt Builder → Skill Catalog: lists available skills
agent/prompt.c - Skill Tools → Skill Catalog: loads or installs
- Subagents → Agent Loop: creates agents
tools/subagent.c - Context Policies → Session Store: stores offloaded output
- Markdown Renderer → Markdown Parser: parses Markdown
ui/markdown.c - REPL Commands → Markdown Renderer: renders command output
core/cmd.c - REPL Entry → Runtime Config: initializes settings
main.c