C11 / TERMINAL CODING AGENT

C Agent

从一句指令,到实际执行。
用 C 构建终端编程智能体,让模型读写代码、执行命令,并在多轮工具调用中完成任务。

项目背景上海交通大学 · CS2313
作者Hengtao Wu
核心实现C11 / pthread / POSIX
完成时间2026.06

一个能行动,也能接续工作的 Agent。

从基础工具调用出发,逐步补齐长任务需要的状态、记忆与协作能力。

自然语言驱动的编程闭环

读取代码、修改文件、执行 Shell,将工具结果返回模型,继续判断下一步行动。

理解任务调用工具观察结果

并行探索,汇总结果

只读工具批次并发执行;子智能体使用独立上下文处理后台任务。

把状态留在磁盘上

会话可恢复,记忆跨会话保留。大型工具输出卸载后,仍可按路径取回。

16 个内置工具6 类项目记忆2 种上下文回收策略查看工具注册表

INSIDE THE RUNTIME

把操作系统思想,
放进 Agent 运行时。

如何调度、如何回收、如何恢复,是这个项目的核心设计问题。

并发执行,按序返回。

当同一批工具全部为只读操作时,通过 pthread 并发执行。只要包含写操作或未知工具,整批就回退到串行。

每个线程写入独立结果槽,主线程等待完成后,按原始请求顺序组装结果,保持工具调用与回复一一对应。

设计取舍用保守的调度规则,换取清晰、可检查的执行语义。
阅读 executor.c

在真实终端中工作。

工具执行状态与 Markdown 回复,让每一轮操作都有清晰的反馈。

C Agent 实际运行截图:终端中显示工具输出,以及包含标题、表格和中文内容的 Markdown 回复。
实际运行截图,摘自项目附录。点击查看原图。
执行过程

知道它正在做什么

实时显示思考状态、工具执行结果和耗时。独立渲染线程统一管理动态输出。

对话之后

下次继续,而非重新开始

通过 /session 恢复历史会话;用 /remember 保存值得长期保留的信息。

查看完整演示附录

从课程框架,到持续可用的系统。

基于课程提供的基础框架,完成核心功能,并围绕实际使用扩展系统能力。

我的实现与实践

这个项目的重点,是把多个功能组织成能够协同工作的运行时,并处理它们之间的状态与同步问题。

查看实现历程
课程核心

打通完整执行链路

完成 Shell 工具、ReAct 循环、注册表与并发执行器,并实现上下文卸载和摘要策略。

agent/ · tools/ · context/
功能扩展

让任务拥有历史与记忆

加入会话恢复、分类记忆、按需加载的 Skills、后台子智能体,以及联网工具。

core/session.c · core/memory.c · core/skills.c
工程打磨

处理模块之间的相互影响

隔离不同会话的卸载文件,避免恢复内容被再次卸载;同步终端输出,并在 JSON 序列化前清理非法 UTF-8。

context/policy_offload.c · ui/ · agent/llm_client.c

当前边界,也指向下一步

上下文预算使用字符数估算 token,后续可接入真实 tokenizer 并纳入完整请求开销。

交互体验模型回复目前整段返回,后续可加入流式输出和端到端评测。

执行边界文件工具有路径检查,Shell 使用危险命令过滤;尚未实现进程级沙箱隔离。

继续深入。

实现细节、运行方式与设计记录,都在项目中。

运行 C Agent环境配置、编译步骤与工具说明