JPCode 使用文档

基于自研 JPEngine 渲染库的桌面 AI 编程助手(Windows / macOS):纯 C++20 实现、无第三方界面库。

闭源商业软件 · 支持代理接入 · 可直接使用侏罗纪 AI 编程套餐

1. 安装与运行

1.1 安装包安装(Windows)

从发布目录获取 jpcode_setup.exe(单文件,已内嵌 JPCode 及全部运行库),双击运行安装向导: 欢迎页 → 安装位置 → 进度页 → 完成页,安装后桌面出现 JPCode 快捷方式,可从「应用和功能」正常卸载。

安装包单文件自包含:jpengine.dll、http_client.dll、jpssl_cpu.dll、zlib/brotli 等运行库全部内嵌,分发只需一个 exe。

1.2 macOS 安装

获取 macOS 安装包并拖入「应用程序」,首次打开若提示开发者验证, 在「系统设置 → 隐私与安全性」中允许即可。渲染默认 Metal。

JPCode 为闭源商业软件:单文件安装包自包含全部运行库,无需额外环境; 接入方式支持「侏罗纪 AI 编程套餐」订阅,或自带 Key 并配置代理(HTTP / SOCKS4 / SOCKS5)。

1.4 渲染后端

默认按 DX12 → Vulkan → DX11 → null 依次尝试;可用 JP_BACKEND 环境变量或 --backend 参数指定。

2. 快速开始

  1. 启动 JPCode → 左侧「设置」→ AI 页选择服务商,填写 API Key(可留空使用环境变量)。
  2. 底部工具条选择模型思考模式(关闭 / 低 / 中 / 高)。
  3. 在底部输入框输入问题,回车或点「发送」。

API Key 可通过服务商对应的环境变量提供(优先级高于界面配置): OPENAI_API_KEYDEEPSEEK_API_KEYZHIPU_API_KEYMOONSHOT_API_KEYDASHSCOPE_API_KEYARK_API_KEYTOKENHUB_API_KEY 等。

3. 界面说明

4. AI 对话

4.1 服务商预设

服务商默认模型API 形态
OpenAIgpt-4.1-miniResponses / Chat
DeepSeekdeepseek-v4-proResponses
GLM 智谱glm-4.6Chat
Kimi 月之暗面moonshot-v1-8kChat
MiniMaxMiniMax-Text-01Chat
千问AI(DashScope)qwen3.7-plusResponses
OpenCode Zen / Goopencode/claude-opus-4-6 等Chat
中国电信 TokenHubGLM-5-ProChat
火山方舟 Coding Planark-code-latestChat
火山方舟 Agent Planauto(智能路由)Chat

注:火山方舟(Coding Plan / Agent Plan)默认走 Chat Completions API。

切换预设时自动填充 base_url 与常用模型;自定义供应商支持填写名称、Base URL、Key、模型与 API 形态。 代理支持 http://socks4://socks5://(含认证),作用于所有 AI 请求(含 SSE 流式)。

4.2 上下文检测与自动续接

按会话估算上下文 token 并用 API 实际 usage 校准,超限标黄;发送前检测超限自动开新会话无缝承接(默认上限 128000,可在设置页调整)。

4.3 技能(skill)

技能是指令注入,可按会话独立开关。内置:代码审查、测试编写、文档撰写、通俗解释、安全检查、规划并行(默认开启)。 自定义 / 第三方技能放入 %USERPROFILE%\.jpcode\skills\*.md / *.txt)即自动加载。

5. 命令执行

5.1 本机执行

!git status
!Get-ChildItem | Select-Object -First 5

! 开头回车即执行本机 PowerShell(macOS 为 zsh),stdout/stderr 实时回流; 执行前后自动 diff 工作目录快照,追加文件变更统计(+N ~M -K)。

5.2 SSH 远程执行

!ssh uname -a    # 远程执行(空参数 = 连通性测试)

支持设置页配置主机或直接使用 ~/.ssh/config 的 Host 别名;支持 Linux / macOS / Windows 目标机,自动适配语法,可设远程工作目录。

安全建议(重要):远程 SSH 操作请尽量使用密钥登录—— 在 ~/.ssh/config 为主机配置别名与私钥,会话里只写「!ssh 主机别名 命令」即可连接:
# ~/.ssh/config
Host test
  HostName 192.168.10.8
  User jp
  IdentityFile ~/.ssh/id_ed25519
请避免把服务器 IP、用户名、密码直接写进命令或聊天内容(例如 ssh user@1.2.3.4sshpass -p 密码), 这些凭据会随对话上下文暴露给大模型;改用 Host 别名 + 密钥登录后, 模型只能看到「test」这样的别名与命令本身,敏感信息不会进入上下文。

5.3 控制指令

指令作用
!cd 路径设置本地工作目录
!ssh 命令SSH 远程执行
!sshcd 目录设置当前会话的 SSH 远程工作目录
!open 路径用默认编辑器打开目录 / 文件

设置页可配置命令确认策略(全部允许 / 执行时询问)与常用命令库一键执行。

6. 多会话与 subagent

多会话并行:每个会话独立持有 AI 客户端与命令执行器,切换 / 新建不打断其它会话。

/agent 审查当前项目的 CMake 配置
/subagent 总结最近的 git 改动

派生子代理会话(继承最近 12 条上下文)→ 后台并行运行 → 完成后结果自动写回父会话,侧边栏紫色标题显示。

7. 任务队列

输入框「入队」编排多条任务,按顺序依次发送;每条可编辑 / 删除。 「SubAgent」把全部队列任务各派一个子代理并行执行;「GitPush」执行 add → commit → push。

8. Git 审查面板

9. 工具集

工具说明
tools/jpeditor跨平台命令行文件编辑器,编码 / 换行符自动识别
tools/jpbrowser自研 HTML5 浏览器 + JS 引擎 + WASM(暂不适用 macOS)
tools/jpdocx基于 ISO/IEC 29500 的 Office 工具(docx / xlsx / pptx)
tools/jphtml2mdHTML 转 Markdown
tools/code_scan代码识别(类 / 函数 / 枚举 → KV 缓存)

10. KV 缓存数据库

独立 KV 缓存进程 jpcode_kv_cache.exe,应用经 IPC 访问(Windows 命名管道 / macOS Unix domain socket ~/.jpcode/cache/kv.sock),用于代码识别结果缓存等键值存储。

11. 数据与配置文件

路径内容
%USERPROFILE%\.jpcode\config.json应用配置(服务商、UI 宽度、工作目录、自定义供应商等)
%USERPROFILE%\.jpcode\data\conversations.json会话与消息持久化
%USERPROFILE%\.jpcode\skills\第三方技能目录
工作目录 jpcode_ai.log / jpcode_error.logAI 请求日志 / 渲染失败日志

12. 常见问题(FAQ)

流式回复没有输出?
确认服务商支持 SSE 且 API 形态正确;OpenAI 兼容服务商可在自定义供应商里切换 Responses ↔ Chat。
连接失败 / 超时?
检查代理配置(http:// / socks5://);查看 jpcode_error.logjpcode_ai.log
API Key 报鉴权错误?
确认 Key 与服务商匹配(尤其千问AI sk-ws- 与 Token Plan sk-sp- 不可混用),或改用对应环境变量。
上下文超限?
会自动开新会话续接;也可在设置页调整上限(默认 128000)。
命令执行没有反应?
检查命令确认策略(「执行时询问」会先弹窗);SSH 执行先用 !ssh(空参数)测试连通性。
渲染异常 / 黑屏?
--backend dx11--backend null 排除后端问题;查看 jpcode_error.log

13. 自定义工具(Custom Tools)

JPCode 支持用户自定义工具。自定义工具是一个命令模板工具:在 config.json 里声明工具名、说明、命令模板与参数,JPCode 会把它作为 OpenAI function calling 的工具随请求声明给模型;模型决定调用时,JPCode 把模型返回的实参替换进命令模板的 {{param}} 占位符,以本地脚本模式执行,并把输出回传给模型。

13.1 配置文件位置

自定义工具保存在用户配置目录下的 config.json(Windows:%USERPROFILE%\.jpcode\config.json;macOS / Linux:~/.jpcode/config.json),对应键为顶层数组 "custom_tools"(与 "ai""window" 等字段平级)。也可以在设置页修改后由程序自动写回(原子写入,保留其余字段)。

13.2 配置格式(Schema)

{
  "custom_tools": [
    {
      "name": "get_weather",
      "description": "查询指定城市的当前天气",
      "command": "tools/weather.exe --city {{city}} --unit {{unit}}",
      "params": [
        { "name": "city", "description": "城市名称,如 北京" },
        { "name": "unit", "description": "温度单位:celsius 或 fahrenheit" }
      ]
    }
  ]
}
字段类型必填说明
namestring工具名(function name),留空的条目会被忽略;需唯一
descriptionstring建议工具功能说明,模型据此决定何时调用
commandstring命令模板,可含 {{参数名}} 占位符,留空忽略
paramsarray参数声明列表
params[].namestring参数名(进入 JSON schema 的 properties,留空忽略)
params[].descriptionstring建议参数说明

13.3 工作原理

  1. 加载:JPCode 启动时读取 custom_tools 并注入 AI 层。
  2. 声明:每次对话请求,每个自定义工具生成为 function calling 声明:参数统一为 string 类型,required 包含全部参数;开启「工具 strict」时按 OpenAI strict 模式生成(strict: true、所有属性 required、additionalProperties: false)。
  3. 调用:模型返回 tool_call 后,按 call.name 查找自定义工具;命中则把 arguments JSON 中与参数名匹配的字符串值替换进模板的 {{参数名}} 占位符,未提供的参数替换为空字符串。
  4. 执行:渲染出的命令走本地脚本执行器(PowerShell / 跨平台 PsRunner),与内置 run_command 相同;支持 SSH 时可在目标机远程执行。输出实时流式回显到会话,并以 role=tool 消息回传给模型继续推理。

13.4 编写示例

无参数工具

{
  "name": "list_ports",
  "description": "列出本机当前监听的 TCP 端口",
  "command": "netstat -ano | findstr LISTENING",
  "params": []
}

多参数工具

{
  "name": "git_log",
  "description": "查看某个仓库的最近提交",
  "command": "git -C {{repo}} log --oneline -n {{count}}",
  "params": [
    { "name": "repo",  "description": "仓库本地路径" },
    { "name": "count", "description": "返回条数,如 10" }
  ]
}

模型返回 {"repo": "D:/work/demo", "count": "5"} 时,实际执行 git -C D:/work/demo log --oneline -n 5

调用脚本 / 可执行文件

{
  "name": "translate_file",
  "description": "把文本文件内容翻译为英文",
  "command": "python tools/translate.py --file {{file}} --lang {{lang}}",
  "params": [
    { "name": "file", "description": "待翻译文件路径" },
    { "name": "lang", "description": "目标语言,如 en" }
  ]
}

13.5 开发注意事项

验证清单:1) 在 config.json 中加入工具并重启 JPCode;2) 对话中让模型使用该工具(描述写清触发场景);3) 会话中可见「工具名 → 渲染后的命令」提示与实时输出;4) 检查退出码非 0 时模型是否收到错误信息并自行修正。

13.6 自定义工具下载地址(url)

自定义工具支持可选的 url 字段:把工具的脚本 / 可执行文件托管在 HTTP(S) 地址上,JPCode 会在启动时与工具执行前自动下载到本地安装目录,实现「声明即分发」。

{
  "custom_tools": [
    {
      "name": "repo_stat",
      "description": "统计当前仓库代码行数(首次调用自动下载工具脚本)",
      "url": "https://example.com/jptools/repo_stat.py",
      "command": "python {{tool_dir}}/repo_stat.py {{path}}",
      "params": [
        { "name": "path", "description": "仓库路径" }
      ]
    }
  ]
}

新增字段:

字段类型必填说明
urlstring工具文件下载地址(HTTP/HTTPS,单文件)
{{tool_dir}}模板占位符-command 中使用,执行时替换为本地安装目录

安装目录与生命周期

实现要点:下载经 httpclient 的 HttpClient(HTTP/1.1 ~ HTTP/3,自动 TLS 与重定向),同步等待、超时 60 秒;下载成功先写临时文件再原子替换。命令渲染时支持两种占位符:{{param}}(模型实参)与 {{tool_dir}}(安装目录)。

注意事项:目前仅支持单文件下载,多文件依赖请打进一个自解压脚本或在 command 里自行处理;仅支持 HTTP/HTTPS 明文直链,带鉴权的地址需 URL 自带 token 或改用内网可直连的镜像;下载地址应固定文件名(带版本号的文件名会导致 command 模板里的文件名同步变更),建议结合删除目录来升级版本。