Token太贵自己写了一个mac版开源AI编程工具

SqcAICode --- AI 驱动的 macOS 编程工具

SqcAICode 是一款面向 macOS 的原生桌面 AI 编程助手,集成 DeepSeek API ,提供智能对话、代码编辑、终端操作、文件管理等一站式开发体验。采用 VS Code 风格的深色主题 UI,支持 Function Calling 工具链,让 AI 直接读写文件、执行终端命令和搜索网页。

项目地址:https://github.com/sunqichaoPHP/SQCcoder

✨ 核心功能

模块 说明
AI 对话 接入 DeepSeek API(支持 deepseek-chat / deepseek-reasoner),多轮对话 + 上下文记忆
工具调用 (Function Calling) AI 可自动调用文件读写、终端命令、网页搜索等工具,无需人工中转
流式输出 + 打字机动画 实时展示 AI 回答,Markdown 全文渲染(标题/列表/代码块/引用)
代码编辑器 多 Tab 标签页、语法高亮、行号显示、代码字体、自动保存
文件浏览器 项目目录树导航,支持文件创建/打开/搜索
Markdown 预览 .md 文件一键切换源码 / 富文本预览,支持代码块高亮与拷贝
内置终端 底部可拖拽终端面板,支持命令输入与输出展示
图片发送 聊天中粘贴截图或选择图片,通过多模态 API 发送给 AI 分析
网页搜索 内置搜索工具,AI 可联网查询最新信息
文档自动保存 长回答自动存档为 .md 文件到工作区,附带摘要预览
自定义设置 API Key、Base URL、模型选择、温度参数、System Prompt 等均可配置
深色主题 仿 VS Code 暗色配色,护眼且专业

🏗 架构设计

整体架构

复制代码
┌─────────────────────────────────────────────────────────┐
│                   ContentView (主窗口)                    │
│  ┌──────────┐ ┌──────────┐ ┌──────────────┐ ┌────────┐ │
│  │ Activity │ │ Sidebar  │ │ Editor Area  │ │  Chat  │ │
│  │   Bar    │ │(Explorer/│ │(Tabs+Editor+ │ │ Panel  │ │
│  │ (左1)    │ │ Search/  │ │  Terminal)   │ │ (右侧) │ │
│  │          │ │ Settings)│ │              │ │        │ │
│  └──────────┘ └──────────┘ └──────────────┘ └────────┘ │
│                       ↓                                  │
│              ┌──────────────────┐                        │
│              │    AppState      │   ObservableObject      │
│              │   (状态中心)      │   @Published 驱动 UI    │
│              └──────┬───────────┘                        │
│                     │                                     │
│     ┌───────────────┼───────────────┐                    │
│     ↓               ↓               ↓                    │
│ DeepSeekService  ProjectTools   TerminalTool             │
│ (API 调用)       (文件操作)      (命令执行)               │
│  + streaming      + readWrite     + shell exec           │
│  + tool calling   + search        + output capture       │
└─────────────────────────────────────────────────────────┘

数据流

复制代码
用户输入 → ChatPanelView → AppState.sendChat()
    → DeepSeekService.chatStream() (SSE 流式请求)
    → 逐 token 更新 chatMessages → ChatBubbleView 打字机渲染
    
AI 返回 tool_calls → AppState.executeTools()
    → ProjectTools / TerminalTool / WebSearchTool 执行
    → 结果回传 DeepSeekService → AI 生成最终回答
    → MarkdownText(full:) 全文渲染 → 长答案自动存档

核心设计模式

模式 应用
MVVM AppState 作为 ViewModel,View 通过 @ObservedObject / @StateObject 订阅
单例状态管理 全局 AppState 持有所有 UI 状态,通过 @Published 响应式驱动
依赖注入 DeepSeekService 在方法调用时动态注入 API Key / Base URL
组合式 View 每个功能区域拆分为独立 SwiftUI View,通过 environmentObject 共享状态
SSE 流式解析 使用 URLSession.bytes 原生解析 Server-Sent Events,逐行读取 data:

工具调用系统

当用户提出需要操作文件/执行命令的需求时,DeepSeek API 返回 tool_callsAppState.executeTools() 自动分发执行:

工具 实现文件 能力
read_file ProjectTools.swift 读取指定文件内容(支持行号范围)
write_file ProjectTools.swift 写入/覆盖文件
edit_file ProjectTools.swift 精确替换文件内容
list_files ProjectTools.swift 列出目录结构
search_files ProjectTools.swift 按通配符搜索文件
run_terminal TerminalTool.swift 执行终端命令并返回输出
web_search WebSearchTool.swift 联网搜索并返回结构化结果

🛠 技术栈

层级 技术
UI 框架 SwiftUI (macOS 14+)
语言 Swift 5.9+
构建系统 Swift Package Manager (SPM)
AI API DeepSeek Chat Completions API (OpenAI 兼容)
网络层 原生 URLSession + SSE 流式解析
代码编辑 NSTextView (AppKit 桥接)、Syntax Highlighting via TextKit
终端 Process / Pipe 原生 Shell 执行
CLI 工具 TypeScript (Node.js) --- 命令行辅助脚本
状态管理 Swift ObservableObject + @Published + Combine
持久化 UserDefaults (API Key / 设置)、文件系统 (文档存档)

📁 项目结构

复制代码
sqcaicode/
├── sqcaicode-app/              # macOS SwiftUI 原生应用
│   ├── Package.swift           # SPM 包描述 (macOS 14+, Swift 5.9)
│   └── Sources/
│       ├── App.swift           # @main 入口 + 菜单命令
│       ├── Theme.swift         # 全局配色(VS Code 暗色风格)
│       ├── Models/
│       │   └── AppState.swift  # 核心状态管理 (MVVM 的 ViewModel)
│       ├── Services/
│       │   ├── DeepSeekService.swift  # API 调用 + 流式 + Tool Calling
│       │   ├── ProjectTools.swift     # 文件系统工具封装
│       │   ├── TerminalTool.swift     # Shell 终端工具
│       │   └── WebSearchTool.swift    # 网页搜索工具
│       └── Views/
│           ├── ContentView.swift      # 主布局 (4 面板 + 拖拽分隔线)
│           ├── ActivityBarView.swift  # 左侧活动栏
│           ├── FileBrowserView.swift  # 文件资源管理器
│           ├── CodeEditorView.swift   # 代码编辑器 + Markdown 预览
│           ├── ChatPanelView.swift    # AI 对话面板 (含图片发送)
│           ├── ChatBubbleView.swift   # 聊天气泡 (打字机 + Markdown)
│           ├── MarkdownPreview.swift  # 自定义 Markdown 渲染器
│           ├── TerminalView.swift     # 内嵌终端面板
│           ├── SettingsView.swift     # 设置面板
│           ├── StatusBarView.swift    # 底部状态栏
│           └── SearchResultRow.swift  # 搜索结果行
├── src/                        # TypeScript CLI 工具
│   ├── index.ts                # 入口
│   ├── cli/                    # 命令行界面 (chat, run)
│   ├── core/                   # 核心引擎 (client, context, engine)
│   ├── tools/                  # 工具注册 (fs, shell, todo, web)
│   ├── repair/                 # 代码修复工具
│   └── config/                 # 配置管理
├── assets/                     # 截图等静态资源
│   ├── screenshot-chat.png
│   └── screenshot-editor.png
├── .gitignore
├── package.json
├── tsconfig.json
└── README.md

🚀 快速开始

环境要求

  • macOS 14.0 (Sonoma) 或更高版本
  • Xcode 15.0 或更高版本(含 Swift 5.9)
  • Node.js 18+(仅 CLI 工具需要)
  • DeepSeek API Key (在 platform.deepseek.com 申请)

构建 & 运行

bash 复制代码
# 1. 克隆仓库
git clone https://github.com/yourusername/sqcaicode.git
cd sqcaicode

# 2. 安装 CLI 依赖(可选)
npm install

# 3. 构建 Swift 应用(使用 Swift Package Manager)
cd sqcaicode-app
swift build

# 4. 运行
swift run

# 或者在 Xcode 中打开:
open Package.swift
# 按 Cmd+R 运行

配置 API Key

  1. 启动应用后在左侧活动栏点击 齿轮图标 进入设置
  2. 填入你的 DeepSeek API Key
  3. 可选:修改 Base URL(自定义代理)、模型、温度参数
  4. 设置会自动保存到 UserDefaults

🔧 配置项说明

配置项 默认值 说明
API Key --- DeepSeek API 密钥(必填)
Base URL https://api.deepseek.com API 端点地址,支持自定义代理
Model deepseek-chat 模型选择(deepseek-chat / deepseek-reasoner)
Temperature 0.7 生成温度 (0-2),越高越随机
Max Tokens 4096 单次回答最大 token 数
System Prompt --- 系统提示词,定义 AI 角色行为

📝 使用场景

  • 写代码:让 AI 帮你写新功能、生成代码片段、解释算法
  • 改 Bug:粘贴错误信息或相关代码,让 AI 分析并给出修复方案
  • 代码审查:打开文件后让 AI Review 代码质量和潜在问题
  • 重构优化:描述需求让 AI 直接编辑文件
  • 学习理解:选中陌生代码让 AI 逐行解释
  • 截图分析:粘贴 UI 截图让 AI 分析并实现对应界面
  • 终端协作:让 AI 执行构建/测试/部署命令

相关推荐
武子康1 小时前
全双工语音 Agent 如何评测:从首音延迟到事件级验收
人工智能·llm·agent
cxr8281 小时前
本体论转向:作为实验世界形式化模型的Ontology
人工智能·知识图谱
jarvisuni1 小时前
翻车了!GPT5.6接手Opus4.8的项目之后!
前端·人工智能·ai编程
钱六两1 小时前
#9、如何使用SpringAI实现自主规划智能体
ai编程
AmyLin_20011 小时前
AI 如何做出数学发现【5】- AI 数学证明怎样做单元测试:从“看起来顺”到可否证工作流
人工智能·单元测试·openai·数学推理·符号计算·ai推理·反例生成
giszz1 小时前
【WorkBuddy专栏72】AI 有了自己的邮箱——WorkBuddy Agent Mail 从开通到自动化完全指南
人工智能·企业微信
@Mr_LiuYang1 小时前
《深入理解 AI Agent:设计原理与工程实践 》实验2-2 2-7 大模型注意力权重分布可视化
人工智能·大模型·agent·注意力机制
fhhdzw1 小时前
别让 AI 替你理解代码
ai编程