Thanks to visit codestin.com
Credit goes to github.com

Skip to content

A mini Go IDE, with Insyra pre-installed. It aims to make data analysis even more easier. Run Go code without installing Go environment!

License

Notifications You must be signed in to change notification settings

HazelnutParadise/idensyra

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

152 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Idensyra

Idensyra 是一個基於 Wails v2 的跨平台 Go 代碼編輯器與執行環境,專為 Insyra 數據科學庫設計。

Idensyra Screenshot

Idensyra Screenshot2

特性

核心功能

  • 即時執行:使用 Yaegi 解釋器即時執行 Go 代碼,無需編譯
  • Monaco Editor:集成 VS Code 同款編輯器,提供語法高亮與智慧提示
  • Insyra 集成:完整支援 Insyra 與 Go 標準庫
  • Live Run 模式:編輯時自動執行(防抖)
  • 多語言檔案支援:常見程式與文件格式皆可高亮顯示
  • 跨平台、輕量:Windows/macOS/Linux,使用系統 WebView
  • 完全本地化:所有前端資源本地打包,離線可用

igonb Notebook(v0.2.0 新增)

igonb Notebook screenshot

  • .igonb 格式:類似 Jupyter 的互動式筆記本
  • 多語言 Cell:支援 Go、Python、Markdown
  • 靈活執行:單一 Cell 執行、與上方 Cell 一起執行、向下執行全部
  • Cell 管理:拖放排序、新增、刪除、摺疊
  • Markdown 即時預覽
  • 執行控制:停止執行、重置環境
  • 輸出模式:Full(完整顯示)/ Compact(精簡顯示)切換
  • 自動保存編輯內容

Python 支援(v0.2.0 新增)

  • 執行 .py 檔案
  • 內建 Python 套件管理器(pip list/install/uninstall)
  • 可重新安裝 Python 環境
  • Go-Python 互操作:在 igonb 中共享變數

IPython Notebook 支援(v0.2.0 新增)

  • 開啟 .ipynb 檔案並預覽
  • 一鍵轉換 .ipynb.igonb 格式

MCP Server(v0.2.1 新增)

  • 提供 Model Context Protocol (MCP) 服務器接口
  • 允許 AI 代理與 Idensyra 工作區交互
  • 文件操作:讀取、寫入、創建、刪除、重命名文件
  • 代碼執行:執行 .go.py 文件
  • Notebook 操作:修改、插入、執行儲存格
  • 工作區管理:打開、保存工作區,保存未保存的更改
  • 重要:mcp 現在設計為依賴前端提供 backend callbacks(前端 API)來進行實際的檔案/工作區操作;如果以獨立命令行方式運行,cmd/mcp-server 會提供本地檔案系統的 fallback 回呼以維持相容性。
  • 可配置的權限系統:用戶可決定是否需要確認每個操作
  • 詳見 mcp/README.md

工作區與檔案

  • 啟動即建立臨時工作區,可建立/開啟工作區資料夾以持久保存
  • 多檔案與資料夾樹狀管理,支援建立/重新命名/刪除
  • 檔案拖放移動與排序
  • 匯入外部檔案(任意格式),匯出目前檔案到指定位置
  • 自動暫存:編輯後約 1 秒同步到工作區暫存區
  • 檔案修改與大型檔案提示(*L 標示)
  • 二進位或過大的檔案以預覽模式呈現,避免誤編輯

編輯器功能

  • Undo/Redo、多游標、程式碼摺疊、括號配對
  • Minimap / 自動換行一鍵切換
  • Go 智慧提示:標準庫、Insyra 函式與 struct 成員
  • 編輯器與輸出區字體大小調整

預覽與輸出

  • HTML/Markdown/CSV/TSV 即時預覽(輸出面板)
  • Excel (.xlsx/.xlsm/.xltx/.xltm) 表格預覽與工作表切換
  • 圖片/影片/音訊/PDF 預覽
  • ANSI 彩色輸出,深淺主題皆清晰可讀

主題與體驗

  • 跟隨系統深/淺色,也可手動切換
  • 操作通知與匯入/開啟進度提示

系統要求

開發環境

  • Go 1.25 或更高版本
  • Node.js 16 或更高版本(或 Bun)
  • Wails CLI v2.11.0 或更高版本

運行環境

  • Windows: Windows 10/11,需要 WebView2 Runtime
  • macOS: macOS 10.13 或更高版本
  • Linux: 需要 WebKitGTK

快速開始

安裝 Wails CLI

go install github.com/wailsapp/wails/v2/cmd/wails@latest

克隆項目

git clone https://github.com/HazelnutParadise/idensyra.git
cd idensyra

安裝依賴

# 安裝 Go 依賴
go mod download

# 安裝前端依賴
cd frontend
npm install  # 或 bun install
cd ..

開發模式

啟動開發服務器(支持熱重載):

wails dev

構建生產版本

wails build

構建完成後,可執行文件位於 build/bin/ 目錄。

構建 MCP Server

如果您想使用 MCP Server 功能,可以單獨構建:

go build -o idensyra-mcp-server ./cmd/mcp-server/

詳細使用說明請參考 mcp/README.md

使用方法

基本操作

  1. 建立或開啟工作區
    • 工作區工具列提供 New File、New Folder、Import、Open Workspace、Save All
  2. 編寫與管理檔案
    • 左側檔案樹點擊切換
    • 檔案或資料夾右側 ... 選單可重新命名/刪除
    • 拖放檔案可移動位置
  3. 儲存
    • Ctrl/Cmd + S 儲存目前檔案
    • Ctrl/Cmd + Shift + S 儲存全部
    • 臨時工作區會提示建立工作區資料夾
  4. 執行與預覽
    • .go 檔案可 Run 或 Ctrl/Cmd + Enter
    • .py 檔案可直接執行
    • .igonb 檔案以 Notebook 模式顯示
    • HTML/Markdown/CSV/TSV/Excel/媒體檔會顯示預覽
  5. 匯出與輸出保存
    • Export 會將目前檔案輸出到指定位置
    • Output 的 Save 會將結果寫入工作區(result.txtresult_#.txt

igonb Notebook 使用

  1. 建立 Notebook
    • 點擊工具列的 Notebook 按鈕建立 .igonb 檔案
  2. Cell 操作
    • 點擊 Cell 選擇,使用語言選擇器切換 Go/Python/Markdown
    • 執行單一 Cell
    • ▲▶ 執行目前及上方所有 Cell
    • ▼▶ 從目前 Cell 向下執行全部
    • + 新增 Cell,× 刪除 Cell
    • 拖動 Cell 左側把手可排序
  3. 執行控制
    • Run All 執行所有 Cell
    • Stop 停止執行
    • Reset 重置環境(清除變數與狀態)
  4. Go-Python 互操作
    • 在 Go Cell 中定義的變數可在 Python Cell 中使用
    • 支援基本型別與 Insyra DataList/DataTable

Python 套件管理

  1. 點擊工具列的 Python 按鈕開啟套件管理器
  2. 可查看已安裝套件、安裝新套件、解除安裝套件
  3. 如遇問題可重新安裝 Python 環境

快捷鍵

功能 Windows/Linux macOS
執行程式碼 Ctrl + Enter Cmd + Enter
儲存目前檔案 Ctrl + S Cmd + S
儲存全部 Ctrl + Shift + S Cmd + Shift + S
新增檔案 Ctrl + N Cmd + N
復原 Ctrl + Z Cmd + Z
重做 Ctrl + Shift + ZCtrl + Y Cmd + Shift + ZCmd + Y
自動完成 Ctrl + Space Ctrl + Space

工具列功能

標題列右側按鈕(由左至右):

  1. Live Run - 啟用/停用自動執行
  2. Minimap - 切換程式碼縮略圖
  3. Word Wrap - 切換換行模式
  4. Theme - 切換深色/淺色主題
  5. Python - 開啟 Python 套件管理器
  6. GitHub - 開啟專案 GitHub 頁面
  7. Insyra 官網 - 開啟 Insyra 官方網站

工作區側邊欄:

  • New File - 建立新檔案(Ctrl/Cmd + N
  • New Notebook - 建立新的 igonb 筆記本
  • New Folder - 建立資料夾
  • Import File - 匯入外部檔案到工作區
  • Open Workspace - 開啟現有工作區資料夾
  • Save All - 儲存所有檔案(Ctrl/Cmd + Shift + S
  • ... 選單 - 重新命名/刪除
  • * 指示器 - 檔案已修改
  • L 指示器 - 大型檔案(預覽模式)

編輯器區域:

  • Font +/- - 調整字體大小(8-32px)
  • Save - 儲存目前檔案(Ctrl/Cmd + S
  • Export - 匯出目前檔案到指定位置

輸出區域:

  • Run - 執行程式碼(.go.py
  • Copy - 複製輸出內容到剪貼簿
  • Save - 將輸出結果寫入工作區檔案

igonb Notebook 工具列:

  • Run All - 執行所有 Cell
  • Stop - 停止執行
  • Reset - 重置執行環境
  • Clear All - 清除所有輸出
  • Full/Compact - 切換輸出顯示模式
  • Convert - 轉換 .ipynb 到 .igonb(僅 .ipynb 檔案)

Live Run 模式

啟用 Live Run 後,.go 檔案會在您編輯時自動執行(約 1 秒防抖)。

編輯器設定

  • 字體大小: 使用 +/- 按鈕調整(8-32px)
  • Minimap: 點擊工具列按鈕開啟/關閉
  • Word Wrap: 點擊工具列按鈕切換換行/捲動模式
  • 設定保存: 主題、Minimap、Word Wrap 會保存並在下次啟動時恢復

示例代碼

Go 程式碼

import (
    "fmt"
    "log"

    "github.com/HazelnutParadise/insyra"
    "github.com/HazelnutParadise/insyra/isr"
)

func main() {
    fmt.Println("Hello, World!")
    log.Println("this is a log message")
    dl := isr.DL.Of(1, 2, 3)
    insyra.Show("My_Data", dl)
}

igonb Notebook 範例

{
  "version": 1,
  "cells": [
    {
      "language": "go",
      "source": "data := isr.DL.Of(1, 2, 3, 4, 5)\nfmt.Println(\"Sum:\", data.Sum())"
    },
    {
      "language": "python",
      "source": "print(f\"Data from Go: {data}\")"
    },
    {
      "language": "markdown",
      "source": "## 分析結果\n這是一個簡單的數據分析範例。"
    }
  ]
}

支持的包

Idensyra 支持以下 Insyra 子包:

  • insyra: 核心數據結構
  • insyra/isr: 數據列表和數據表操作
  • insyra/stats: 統計分析
  • insyra/plot: 數據可視化
  • insyra/gplot: 高級繪圖
  • insyra/datafetch: 數據獲取
  • insyra/csvxl: CSV/Excel 處理
  • insyra/parquet: Parquet 讀寫
  • insyra/mkt: 市場數據工具
  • insyra/parallel: 並行計算
  • insyra/lpgen: 線性規劃
  • insyra/py: Python 互操作

以及完整的 Go 標準庫支援。其他第三方套件目前不支援。

項目結構

idensyra/
├── app.go                 # Wails 應用後端邏輯
├── workspace.go           # 工作區與檔案管理
├── igonb_exec.go          # igonb 執行器綁定
├── python_exec.go         # Python 檔案執行
├── python_packages.go     # Python 套件管理
├── main.go                # 應用入口點
├── version.go             # 版本資訊
├── wails.json             # Wails 配置文件
├── go.mod                 # Go 模塊定義
├── igonb/                 # igonb 核心模組
│   ├── igonb.go           # Notebook 結構與解析
│   ├── runner.go          # 執行器管理
│   ├── execute.go         # Cell 執行邏輯
│   ├── python_bridge.go   # Go-Python 互操作
│   └── ...
├── internal/              # Yaegi 符號表
│   ├── ansi2html.go       # ANSI 轉 HTML
│   ├── extract.go         # 符號提取
│   └── github_com-*.go    # 提取的符號表
├── frontend/              # 前端代碼
│   ├── src/
│   │   ├── main.js        # 主 JavaScript 文件
│   │   └── style.css      # 樣式表
│   ├── index.html         # HTML 入口
│   ├── package.json       # 前端依賴
│   ├── vite.config.js     # Vite 配置
│   └── wailsjs/           # Wails 生成的綁定
└── build/                 # 構建輸出
    └── bin/
        └── idensyra.exe

開發指南

重新生成 Yaegi 符號表

如果 Insyra 包更新,需要重新生成符號表:

cd internal
go generate

前端開發

cd frontend
npm run dev      # 開發服務器
npm run build    # 構建生產版本

構建選項

# 默認構建(當前平台)
wails build

# 跨平台構建
wails build -platform darwin/amd64   # macOS
wails build -platform linux/amd64    # Linux
wails build -platform windows/amd64  # Windows

# 壓縮構建
wails build -upx

# 調試構建
wails build -debug

技術架構

前端

  • 框架: Vanilla JavaScript + Vite
  • 編輯器: Monaco Editor v0.55.1(本地化)
  • UI 框架: Bootstrap v5.3.8(本地化)
  • 圖標: Font Awesome v7.1.0(本地化)
  • Markdown: marked.js

後端

  • 框架: Wails v2.11.0
  • 解釋器: Yaegi v0.16.1
  • 核心庫: Insyra v0.2.12
  • 試算表預覽: Excelize v2.10.0
  • Python 互操作: Insyra py 模組

更新日誌

v0.2.0 (開發中)

  • 新增 igonb Notebook 格式(類似 Jupyter)
  • 支援 Go、Python、Markdown 多語言 Cell
  • 新增 Python 檔案執行功能
  • 新增 Python 套件管理器
  • 支援 Go-Python 互操作(共享變數)
  • 支援開啟與轉換 .ipynb 檔案
  • 新增檔案拖放移動功能
  • 更新 Insyra 至 v0.2.12
  • 更新 Go 至 1.25

v0.1.0 (2026-01-01)

  • 新增工作區資料夾模式(建立/開啟/儲存)
  • 支援資料夾樹與檔案重新命名
  • 新增檔案預覽:HTML/Markdown/CSV/TSV/Excel/媒體
  • 輸出結果可直接儲存到工作區
  • Go 智慧提示強化(Insyra/標準庫/struct 成員)
  • 完全本地化前端資源,支援離線使用

文檔

許可證

本項目採用 MIT 許可證。詳見 LICENSE 文件。

致謝

鏈接

支持

如果您遇到問題或有建議,請:

  1. 查看 Issue 列表
  2. 提交新的 Issue
  3. 參與討論

Made with love by HazelnutParadise

如果這個項目對您有幫助,請給它一個 star!

About

A mini Go IDE, with Insyra pre-installed. It aims to make data analysis even more easier. Run Go code without installing Go environment!

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •