Skip to content

otakustay/oniichan

Repository files navigation

Oniichan Coding Assistant

此处为Oniichan Coding Assistant扩展的主仓库。

项目结构

  • shared:共享用的代码,包括模型访问、工具函数、共享类型等。
  • vscode:VSCode扩展的源码。
  • kernel:包含了解耦VSCode API后的核心逻辑,它被设计为可以工作在独立的环境(线程、进程、甚至远端)中。
  • editor-host:将核心逻辑需要的VSCode的能力暴露给kernel模块。
  • storage:在本地持久化数据的能力,只要和持久化有关的,必须使用这里面的功能,不得自己写文件、数据库。
  • web:一个React应用,打完包以后通过WebSocket和服务端通信,可以通过插件打开Web页面使用。
  • web-host:在Web系统中暴露出来给IDE、kernel等调用的能力,即由外部操控页面元素的服务。

为什么要做这么复杂的结构?

这个项目不仅仅是提供我自己觉得好用的功能,同时也是一种技术方案的验证:

  • 如果我的kernel可以跑在单独的进程中,我就能实现VSCode和JetBrains等多种IDE的逻辑复用。
  • 如果不仅跑在独立进程中,还能提供CLI的调用或者监听一个HTTP端口,那么它就能被更多非IDE的应用访问。
  • 那么就有可能实现一个类似ChatGPT Desktop的应用,且不绑定只能与VSCode对接。
  • 甚至我可以让IDE和kernel跑在远程,再用浏览器去访问kernel提供的服务,在代码托管的系统上做出来一个基于代码库的通用问答机器人。

所以,这个项目天然通过kernel模块让与IDE解耦的逻辑跑在单独的环境中(虽然现在依然与VSCode同进程,但可以很方便地切换),用host实现VSCode与kernel的对接(如果要对接JetBrains,实现相同的接口即可)。

发布流程

  1. 更新packages/vscode/CHANGELOG.md手动维护更新日志。
  2. 运行npm run release自动更新版本号并生成提交与标签。
  3. packages/vscode目录下执行vsce publish --no-dependencies发布。

About

谁不喜欢写代码的时候有个可靠的欧尼酱帮着你呢

Resources

License

Stars

Watchers

Forks

Languages