# jz-coder **Repository Path**: chen-lexiang/jz-coder ## Basic Information - **Project Name**: jz-coder - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-13 - **Last Updated**: 2025-08-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JZ-coder

JZ-coder Logo
Latest Release Build Status

你的新编码伙伴,现已入驻你最喜爱的终端。
你的工具、代码和工作流,全部连接到你选择的 LLM。

JZ-coder Demo

## 功能特性 - **多模型支持:** 从多种 LLM 中选择,或通过兼容 OpenAI 或 Anthropic 的 API 添加自定义模型 - **灵活切换:** 在会话中途切换 LLM,同时保留上下文 - **基于会话:** 为每个项目维护多个工作会话和上下文 - **LSP 增强:** JZ-coder 像你一样使用 LSP 获取额外上下文 - **可扩展性:** 通过 MCP(`http`、`stdio` 和 `sse`)添加功能 - **全平台支持:** 在 macOS、Linux、Windows(PowerShell 和 WSL)、FreeBSD、OpenBSD 和 NetBSD 的每个终端中都提供一流支持 ## 安装 使用 NPM 安装: ```bash npm install -g @charmland/jz-coder ``` > [!WARNING] > 使用 JZ-coder 时,生产力可能会提高,首次使用该应用时,你可能会发现自己被技术细节吸引。如果症状持续,请加入 [Discord][discord] 并和我们一起探讨技术。 ## 快速开始 启动 JZ-coder 后,系统会自动使用预配置的 Qwen3-Coder-30B-Instruct 模型。每次选择或切换模型时,都需要输入 API 密钥。 ### 切换模型或重新输入 API Key 1. 在程序运行时按 **`Ctrl+P`** 打开命令菜单 2. 选择 **"Switch Model"** 选项 3. 选择 Qwen3-Coder-30B-Instruct 模型 4. 输入新的 API 密钥 当然,你也可以为首选提供商设置环境变量。 | 环境变量 | 提供商 | | -------------------------- | -------------------------------------------------- | | `ANTHROPIC_API_KEY` | Anthropic | | `OPENAI_API_KEY` | OpenAI | | `OPENROUTER_API_KEY` | OpenRouter | | `GEMINI_API_KEY` | Google Gemini | | `VERTEXAI_PROJECT` | Google Cloud VertexAI (Gemini) | | `VERTEXAI_LOCATION` | Google Cloud VertexAI (Gemini) | | `GROQ_API_KEY` | Groq | | `AWS_ACCESS_KEY_ID` | AWS Bedrock (Claude) | | `AWS_SECRET_ACCESS_KEY` | AWS Bedrock (Claude) | | `AWS_REGION` | AWS Bedrock (Claude) | | `AZURE_OPENAI_ENDPOINT` | Azure OpenAI 模型 | | `AZURE_OPENAI_API_KEY` | Azure OpenAI 模型(使用 Entra ID 时可选) | | `AZURE_OPENAI_API_VERSION` | Azure OpenAI 模型 | ## 配置 JZ-coder 现在使用内置的 Qwen3-Coder-30B-Instruct 模型配置,无需配置模型相关的文件。启动后只需输入 API 密钥即可使用。 如果需要配置 LSP 或 MCP,可以在以下位置添加配置文件: - `$HOME/.config/jz-coder/jz-coder.json`(Windows:`%USERPROFILE%\AppData\Local\jz-coder\jz-coder.json`) 临时数据(如应用程序状态)存储在: ```bash # Unix $HOME/.local/share/jz-coder/jz-coder.json # Windows %LOCALAPPDATA%\jz-coder\jz-coder.json ``` ### LSPs JZ-coder 可以使用 LSP 获取额外的上下文来帮助做出决策,就像你一样。可以通过全局配置文件手动添加 LSP: ```json { "$schema": "https://charm.land/jz-coder.json", "lsp": { "go": { "command": "gopls" }, "typescript": { "command": "typescript-language-server", "args": ["--stdio"] }, "nix": { "command": "nil" } } } ``` ### MCPs JZ-coder 还通过三种传输类型支持模型上下文协议(MCP)服务器:用于命令行服务器的 `stdio`、用于 HTTP 端点的 `http` 和用于服务器发送事件的 `sse`。支持使用 `$(echo $VAR)` 语法进行环境变量扩展。 ```json { "$schema": "https://charm.land/jz-coder.json", "mcp": { "filesystem": { "type": "stdio", "command": "node", "args": ["/path/to/mcp-server.js"], "env": { "NODE_ENV": "production" } }, "github": { "type": "http", "url": "https://example.com/mcp/", "headers": { "Authorization": "$(echo Bearer $EXAMPLE_MCP_TOKEN)" } }, "streaming-service": { "type": "sse", "url": "https://example.com/mcp/sse", "headers": { "API-Key": "$(echo $API_KEY)" } } } } ``` ### 忽略文件 JZ-coder 默认遵守 `.gitignore` 文件,但你也可以创建一个 `.jzcoderignore` 文件来指定 JZ-coder 应该忽略的其他文件和目录。这对于排除你想要版本控制但不希望 JZ-coder 在提供上下文时考虑的文件很有用。 `.jzcoderignore` 文件使用与 `.gitignore` 相同的语法,可以放在项目根目录或子目录中。 ### 允许工具 默认情况下,JZ-coder 在运行工具调用之前会要求你的许可。如果你愿意,可以允许工具在不提示权限的情况下执行。请谨慎使用此功能。 ```json { "$schema": "https://charm.land/jz-coder.json", "permissions": { "allowed_tools": [ "view", "ls", "grep", "edit", "mcp_context7_get-library-doc" ] } } ``` 你也可以通过使用 `--yolo` 标志运行 JZ-coder 来完全跳过所有权限提示。使用此功能时要非常非常小心。 ### 本地模型 本地模型也可以通过兼容 OpenAI 的 API 进行配置。以下是两个常见示例: #### Ollama ```json { "providers": { "ollama": { "name": "Ollama", "base_url": "http://localhost:11434/v1/", "type": "openai", "models": [ { "name": "Qwen 3 30B", "id": "qwen3:30b", "context_window": 256000, "default_max_tokens": 20000 } ] } } } ``` #### LM Studio ```json { "providers": { "lmstudio": { "name": "LM Studio", "base_url": "http://localhost:1234/v1/", "type": "openai", "models": [ { "name": "Qwen 3 30B", "id": "qwen/qwen3-30b-a3b-2507", "context_window": 256000, "default_max_tokens": 20000 } ] } } } ``` ### 自定义提供商 JZ-coder 支持兼容 OpenAI 和 Anthropic API 的自定义提供商配置。 #### 兼容 OpenAI 的 API 以下是 Deepseek 的示例配置,它使用兼容 OpenAI 的 API。不要忘记在你的环境中设置 `DEEPSEEK_API_KEY`。 ```json { "$schema": "https://charm.land/jz-coder.json", "providers": { "deepseek": { "type": "openai", "base_url": "https://api.deepseek.com/v1", "api_key": "$DEEPSEEK_API_KEY", "models": [ { "id": "deepseek-chat", "name": "Deepseek V3", "cost_per_1m_in": 0.27, "cost_per_1m_out": 1.1, "cost_per_1m_in_cached": 0.07, "cost_per_1m_out_cached": 1.1, "context_window": 64000, "default_max_tokens": 5000 } ] } } } ``` #### 兼容 Anthropic 的 API 自定义兼容 Anthropic 的提供商遵循此格式: ```json { "$schema": "https://charm.land/jz-coder.json", "providers": { "custom-anthropic": { "type": "anthropic", "base_url": "https://api.anthropic.com/v1", "api_key": "$ANTHROPIC_API_KEY", "extra_headers": { "anthropic-version": "2023-06-01" }, "models": [ { "id": "claude-sonnet-4-20250514", "name": "Claude Sonnet 4", "cost_per_1m_in": 3, "cost_per_1m_out": 15, "cost_per_1m_in_cached": 3.75, "cost_per_1m_out_cached": 0.3, "context_window": 200000, "default_max_tokens": 50000, "can_reason": true, "supports_attachments": true } ] } } } ``` ## 日志记录 有时你需要查看日志。幸运的是,JZ-coder 记录了各种内容。日志存储在相对于项目的 `./.jz-coder/logs/jz-coder.log` 中。 CLI 还包含一些辅助命令,使查看最近的日志更容易: ```bash # 打印最后 1000 行 jz-coder logs # 打印最后 500 行 jz-coder logs --tail 500 # 实时跟踪日志 jz-coder logs --follow ``` 想要更多日志?使用 `--debug` 标志运行 `jz-coder`,或在配置中启用它: ```json { "$schema": "https://charm.land/jz-coder.json", "options": { "debug": true, "debug_lsp": true } } ``` ## 许可证 [FSL-1.1-MIT](https://gitee.com/chen-lexiang/jz-coder/raw/main/LICENSE) --- JZ-coder - 山东金钟科技集团股份有限公司