Skip to content

zboya/nala-coder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NaLa Coder - 自然语音编程的Code Agent

基于大模型实现的对话智能编程助手,支持多种大模型调用、工具集成和智能上下文管理。

pic1

🌟 功能特性

  • 自然语音对话: 支持自然语音对话编程
  • 提示词自定义: 支持自定义提示词,修改prompts对应的文件即可
  • 统一大模型接口: 支持 OpenAI、DeepSeek、Claude、Ollama
  • 丰富工具生态: 文件操作、搜索发现、任务管理、系统执行等
  • 智能上下文管理: 自动压缩、持久化存储
  • 灵活提示词管理: 文件化存储,支持热更新
  • 流式响应: 支持实时流式对话
  • MCP协议支持: 可扩展工具集成

📁 项目架构

nala-coder/ ├── cmd/ # 命令行入口 ├── internal/ # 内部包 │ ├── agent/ # Agent核心调度层 │ ├── llm/ # 大模型调用封装 │ ├── tools/ # 工具引擎 │ ├── context/ # 上下文管理 │ └── interfaces/ # 用户交互接口 ├── pkg/ # 公共包 │ ├── types/ # 类型定义 │ └── utils/ # 工具函数 ├── prompts/ # 提示词文件 ├── configs/ # 配置文件 ├── web/ # Web界面 └── storage/ # 存储目录 

🚀 快速开始

前置要求

  • Go 1.24.5+
  • 大模型API密钥(OpenAI、DeepSeek、Claude或本地Ollama)

安装和配置

  1. 克隆项目
git clone github.com/zboya/nala-coder cd nala-coder
  1. 安装使用
 make install
  1. 配置API密钥
# 编辑配置文件,设置你的API密钥 vi ~/.nala-coder/config.yaml
  1. 运行服务
cd 你需要编辑代码的目录 nala-coder

启动后会自动打开的页面,允许网页使用麦克风,唤醒小娜后就可以对话编程了。

🔧 配置详解

配置目录结构

NaLa Coder 将所有配置和数据文件统一存放在 ~/.nala-coder 目录下:

~/.nala-coder/ ├── config.yaml # 主配置文件 ├── storage/ # 数据存储目录 │ ├── sessions.db # 会话数据库(SQLite) │ └── CODE_AGENT.md # 持久化上下文文件 ├── logs/ # 日志文件目录 │ └── nala-coder.log # 应用日志 └── prompts/ # 提示词文件目录 ├── en/ # 英文提示词 │ ├── system.md # 系统提示词 │ ├── compression.md # 压缩提示词 │ └── user_info.md # 用户信息提示词 └── ch/ # 中文提示词 ├── system.md ├── compression.md └── user_info.md 

大模型配置

支持多种大模型提供商,可以同时配置多个:

llm: default_provider: "deepseek" # 默认使用的提供商 openai: api_key: "sk-xxx" base_url: "https://api.openai.com/v1" model: "gpt-4" max_tokens: 4096 temperature: 0.3 deepseek: api_key: "sk-xxx" base_url: "https://api.deepseek.com" model: "deepseek-chat" # 更多配置...

工具配置

可以启用/禁用特定工具:

tools: enabled_tools: - "read" # 文件读取 - "write" # 文件写入 - "edit" # 文件编辑 - "bash" # 命令执行 # 更多工具... timeouts: bash: 120000 # 2分钟超时 web_fetch: 30000 # 30秒超时

环境变量支持

可以通过环境变量覆盖配置:

export OPENAI_API_KEY="your-key" export LLM_DEFAULT_PROVIDER="openai" export SERVER_PORT="8888"

🛠️ 内置工具

文件操作工具

  • read: 读取文件内容,支持分页
  • write: 写入文件内容
  • edit: 精确编辑文件特定部分
  • multi_edit: 对同一文件进行多处编辑

搜索和发现工具

  • glob: 使用模式匹配查找文件
  • grep: 在文件内容中搜索文本模式
  • ls: 列出目录内容

系统执行工具

  • bash: 执行系统命令,支持超时控制

网络工具

  • web_search: 网络搜索(需要API支持)
  • web_fetch: 获取网页内容

🔧 开发指南

项目构建

# 构建二进制文件 make build

添加新工具

  1. internal/tools/ 下创建新的工具文件
  2. 实现 ToolExecutor 接口
  3. engine.go 中注册工具
  4. 更新配置文件中的 enabled_tools

自定义提示词

  1. prompts/ 目录下创建 .md 文件
  2. 使用Go模板语法支持动态内容
  3. 支持热重载,修改后立即生效

📊 系统架构

 NaLa Coder 系统架构 ┌─────────────────────────────────────────────────────────────────┐ │ 用户交互层 │ │ ┌─────────────┐ │ │ │ CLI/HTTP │ │ │ │ Interface │ │ │ └─────────────┘ │ └─────────────┬───────────────┬───────────────┬───────────────────┘ │ │ │ ┌─────────────▼───────────────▼───────────────▼───────────────────┐ │ Agent核心调度层 │ │ ┌─────────────────┐ ┌─────────────────┐ │ │ │ 主循环引擎 │◄────────┤ 消息队列 │ │ │ │ (AgentLoop) │ │ (AsyncQueue) │ │ │ └─────────────────┘ └─────────────────┘ │ └─────────────┬───────────────────────┬─────────────────────────────┘ │ │ ┌─────────────▼───────────────────────▼─────────────────────────────┐ │ 工具执行与管理层 │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌─────────────────┐│ │ │ 工具引擎 │ │ 并发控制 │ │ LLM调用 │ │ 上下文管理 ││ │ │(ToolEngine)│ │(Scheduler) │ │ (LLMClient)│ │(ContextManager) ││ │ └────────────┘ └────────────┘ └────────────┘ └─────────────────┘│ └─────────────┬─────────────────────────────────────────────────────┘ │ ┌─────────────▼─────────────────────────────────────────────────────┐ │ 存储与持久化层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │短期记忆存储 │ │ 中期压缩历史 │ │ 长期持久存储 │ │状态缓存系统 │ │ │ │(Messages) │ │(Compressed) │ │(Persistence)│ │(StateCache) │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ └───────────────────────────────────────────────────────────────────┘ 

🤝 贡献指南

  1. Fork 项目
  2. 创建特性分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 打开 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

🆘 支持与帮助

About

Natural language programming agent based on large model implemented in golang.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published