一个自娱自乐的仿 Claude Code 的 Coding Agent,基于 Node.js (TypeScript) + LangChain + LangGraph + Handlebars + Ink 构建。
- 🤖 AI Coding Agent:基于 LangGraph 构建的多步推理 Agent,支持代码阅读、编辑、执行等工具调用
- 🧩 LangChain 工具链:集成 LangChain 生态,方便扩展 LLM Provider 与工具插件
- 📝 Handlebars 模板引擎:使用
.hbs模板统一管理 System Prompt 与 User Prompt,方便迭代调试 - 🖥️ Ink 终端 UI:基于 React + Ink 构建富交互的命令行界面,提供类 Claude Code 的交互体验
- 🔧 TypeScript 全栈:完整的类型覆盖,保障代码质量
JojoCode/
├── src/
│ ├── index.tsx # 应用入口,挂载 Ink UI
│ ├── agent/
│ │ ├── graph.ts # LangGraph 图定义(节点 + 边)
│ │ ├── nodes.ts # 图中各个处理节点
│ │ └── state.ts # Agent 状态类型定义
│ ├── tools/
│ │ └── index.ts # Agent 可调用工具集合
│ ├── templates/
│ │ ├── system.hbs # System Prompt 模板
│ │ └── user.hbs # User Prompt 模板
│ ├── ui/
│ │ ├── App.tsx # Ink 根组件
│ │ └── components/
│ │ ├── ChatInput.tsx # 用户输入框组件
│ │ └── MessageList.tsx# 消息列表组件
│ └── utils/
│ └── template.ts # Handlebars 编译工具函数
├── .env.example # 环境变量示例
├── package.json
├── tsconfig.json
└── README.md
npm installcp .env.example .env
# 编辑 .env,填入你的 LLM API Keynpm run devnpm run build
npm start| 层次 | 技术 | 说明 |
|---|---|---|
| 运行时 | Node.js + TypeScript | 全栈类型安全 |
| Agent 框架 | LangGraph + LangChain | 多步推理图编排 |
| 模板引擎 | Handlebars | Prompt 模板管理 |
| 终端 UI | Ink (React) | 富交互命令行界面 |
| LLM Provider | OpenAI | 可替换为其他 Provider |
| 环境配置 | dotenv | 本地开发环境变量 |
| 数据验证 | Zod | 运行时类型校验 |
| 变量名 | 必填 | 说明 |
|---|---|---|
OPENAI_API_KEY / ARK_API_KEY |
✅ | API Key(二选一即可,优先读取 OPENAI_API_KEY) |
OPENAI_BASE_URL / ARK_BASE_URL |
❌ | Base URL(如火山方舟 https://ark.cn-beijing.volces.com/api/v3) |
MODEL_NAME |
❌ | 模型名称,默认 gpt-4o(如 doubao-seed-2-0-pro-260215) |
MAX_ITERATIONS |
❌ | Agent 最大推理轮数,默认 10 |
MIT