系统监控AI代理

SysControl是一个跨平台的AI代理,用于监控和管理Mac或Windows 11系统的各项功能,包括CPU、RAM、GPU、磁盘、网络等,并能根据需要动态扩展新工具。

  • by ks6573
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ks6573/SyscontrolMCP

使用说明

系统控制

一个适用于Mac或Windows 11 PC的AI代理,可以回答有关系统的问题,并可以随时使用新工具进行扩展。

116个内置工具,涵盖CPU、RAM、GPU、磁盘、网络、进程、iMessage、电子邮件、剪贴板、浏览器、天气、提醒、Docker、Time Machine、Wi-Fi、日历、联系人、Notes、Homebrew、媒体控制、文件管理、Spotlight搜索、电子表格、Word文档、PDF、图像生成、深度网络研究、子代理编排、代码编辑、git集成等。每个平台只接收它可以执行的工具;代理会自动选择正确的答案,并行运行,并用简单的英语回答。

运行它的三种方法——选择适合您工作流程的方法:

如何 最好
应用程序(macOS) 下载 .dmg 一键式原生macOS(SwiftUI)体验——无需设置
应用程序(Windows) 下载 .zip 原生Windows 11桌面应用程序(Flet)-解压缩并运行
命令行界面 syscontrol (单线安装) 终端优先工作流、脚本、SSH会话(macOS·Windows·Linux)
克劳德桌面版 MCP服务器 在Claude Desktop中使用SysControl工具

所有接口共享相同的代理、工具和提供者——它们是可互换的。


应用程序(macOS)

一个具有流式聊天、Markdown渲染、聊天历史侧边栏和自动保存功能的原生SwiftUI应用程序——无需Python、无需终端、无需安装依赖项。只需在“设置”中下载、打开并配置您的提供商。

下载

选项A——预制DMG (无需Xcode):

下载最新 SysControl.dmg 来自 GitHub发布,拖动到“应用程序”,然后在首次启动时绕过Gatekeeper(该应用程序是临时签名的,未经过公证):

xattr -r -d com.apple.quarantine /Applications/SysControl.app

或者右键单击应用程序→ 打开 → 打开 第一次。

选项B--从源代码安装 (在本地编译,自动绕过Gatekeeper):

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/ks6573/SysControl/master/swift/install.sh)"

稍后更新:使用 检查更新 在应用程序(⇧⌘U)中,或运行 syscontrol-update 从终端。

要卸载:请重新运行 --uninstall.

选项C——手动构建:

git clone https://github.com/ks6573/SysControl.git
cd SysControl/swift
./build.sh release
open .build/SysControl.app

要求: macOS 14(索诺玛)或更高版本。选项B和C也需要Xcode命令行工具(xcode-select --install).

特性

  • 流媒体响应 --令牌在到达时随实时Markdown呈现而出现
  • 自动保存 --每个对话都会自动保存,并使用LLM生成的标题
  • 聊天历史侧栏 --浏览和删除过去的聊天记录
  • 设置 --在应用程序中在本地(Ollama)和云提供商之间切换
  • 应用内更新 --从菜单栏(⇧⌘U)或设置中检查新版本;DMG用户一键下载,源安装用户自动更新
  • 无设置 --一切都是通过应用程序本身配置的

首次发射

首次启动时,会自动显示入职表:

  1. 选择 当地(Ollama) --要求 Ollama 在本地运行,不需要API密钥
  2. 或者选择 云 -输入API密钥
  3. 点击 完成 然后开始聊天

若要稍后更改提供程序,请打开 设置 (⌘,).

聊天记录保存为Markdown ~/.syscontrol/chat_history/ --自由查看、编辑或删除。


应用程序(Windows)

本机Windows 11桌面应用程序(使用 平坦的)流媒体聊天、Markdown渲染、可扩展工具调用卡、内联图表、会话侧边栏和应用内设置。它运行 相同的Python代理后端 作为macOS应用程序和CLI,捆绑成独立的 .exe --没有单独的Python安装需要管理。

下载

  1. 下载最新 SysControl-windows-x64.zip 来自 GitHub发布
  2. 在任何地方解压缩(例如。 %LOCALAPPDATA%\Programs\SysControl)
  3. 跑 SysControl.exe

首次发射: 该版本没有代码签名,因此Windows SmartScreen可能会警告您。点击 更多信息→ 无论如何都要跑.

要求: Windows 11(x64)。对于本地型号,请安装 Ollama for Windows 并拉一个模型(ollama pull qwen3:30b);对于云,请在入职期间输入Ollama cloud API密钥。

从源代码构建

git clone https://github.com/ks6573/SysControl.git
cd SysControl
uv sync --extra gui --extra build
uv run pyinstaller SysControl.spec     # -> dist\SysControl\SysControl.exe

或者直接运行它而不捆绑: uv run syscontrol-gui.

平台说明

Windows应用程序公开了与macOS相同的代理和工具。系统工具——CPU、RAM、GPU、磁盘、网络、进程、电池、文件、剪贴板、屏幕截图、卷、Wi-Fi、系统日志(事件日志)、shell(PowerShell/cmd)、网络研究、图表、电子表格/Word/PDF、子代理——本机工作。仅限macOS的集成(iMessage、Apple Mail、日历/联系人、笔记、Time Machine、Homebrew)报告它们在Windows上不可用,而不是失败。


命令行界面

与应用程序运行相同后端的终端代理。两种安装路径:

选项A——单线安装(推荐):

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/ks6573/SysControl/master/install-cli.sh)"

安装 uv 如果丢失,则运行 uv tool install 针对GitHub仓库,暴露 syscontrol 和 syscontrol-server 在你的 PATH 在一个孤立的静脉里。不需要克隆。

稍后更新:运行 syscontrol --update (或 /update REPL内部);独立 syscontrol-cli-update 脚本仍在安装中。

要卸载:请重新运行 -- --uninstall.

选项B——来自克隆(用于开发):

git clone https://github.com/ks6573/SysControl.git
cd SysControl
curl -LsSf https://astral.sh/uv/install.sh | sh   # if uv not installed
uv sync
uv run agent.py

需求

  • macOS、Windows 11或Linux
  • python 3.11+ (如果您的系统Python较旧,uv将获取一个)
  • Ollama 对于本地模式, 或 用于云模式的Ollama Cloud API密钥

CLI标志

syscontrol                                          # interactive
syscontrol --provider local --model qwen3:30b      # local, skip prompt
syscontrol --provider cloud --api-key sk-...       # cloud, skip prompt (key is remembered)
syscontrol --provider cloud --no-save-key          # cloud, prompt every time
syscontrol --provider custom --base-url https://example.com/v1 --model my-model --api-key sk-...
syscontrol --continue                              # resume the most recent session
syscontrol --resume                                # pick a previous session from a list
syscontrol --coding --approval normal              # coding agent, ask before edits/shell
syscontrol --coding --approval plan                # read-only planning mode
syscontrol --coding --approval auto                # auto-accept coding edits/shell

克隆(选项B)用户可以替换 uv run agent.py 为了 syscontrol 在下面的任何命令中。

第一次输入Ollama Cloud API密钥时(通过 --api-key 或提示),保存到 ~/.syscontrol/cli_credentials.json (0600)这样你就不会再被问到了。使用 --no-save-key 选择退出,或 /logout 从REPL忘记它。

编码模式

CLI可以作为具有窄代码工具集的编码代理运行:文件搜索/读取/编辑, git status/diff和shell命令。审批方式:

模式 行为
plan 只读。代理可以检查并生成实施计划,但编辑和shell命令被阻止。
normal 读取是自动的;文件写入和shell命令在终端中请求批准。
auto “Just do it”模式。自动接受会话的编码编辑和shell命令。

按 Shift+Tab 在系统监控模式和编码模式之间切换。在编码模式内部, 使用 /approval plan, /approval normal,或 /approval auto 改变政策。老人 standard 和 nuke 名字仍然可以作为别名。

Slash命令和键盘快捷键

交互式CLI感觉就像Codex/Claude Code:type / 弹出完成菜单, @ 从cwd内联文件, ! 要运行一次性shell命令,底部工具栏将始终显示活动模型、提供者、审批模式和消息计数。

命令 描述
/help 显示所有命令和键盘快捷键
/clear 清除屏幕
/reset 清晰的对话历史记录(保持系统提示)
/tools [filter] 列出可用工具,可选择按子字符串筛选
/model 显示活动模型和提供程序
/mode [system|coding] [plan|normal|auto] 切换系统/编码模式或进入编码子模式
/test [command] 在编码模式下运行检测到的测试命令或提供的命令
/lint [command] 在编码模式下运行检测到的lint/typecheck命令或提供的命令
/memory <note> 将带时间戳的注释附加到 SysControl_Memory.md
/show [tool_name] 转储最近一次工具调用的完整输出
/sessions 列出最近保存的CLI会话
/init 生成一个 CLAUDE.md 对于当前项目
/compact [undo] 总结对话; undo 恢复以前的历史记录
/approval plan|normal|auto 切换编码模式审批政策
/update [force] 检查并安装最新的SysControl版本
/logout 忘记保存的Ollama Cloud API密钥
/exit 退出会话
关键 行动
Enter 提交单行缓冲区;缓冲区为多行后插入换行符
Ctrl+D 提交任何非空缓冲区;在空缓冲区退出
Ctrl+C 取消飞行中的LLM/工具流(在1秒内再次按下以干净退出)
↑ / ↓ 历史导航
Ctrl+R 反向历史搜索
Tab 完成当前斜线命令, @file,或争论
Shift+Tab 切换系统/编码模式
Ctrl+L 清除屏幕
Esc, Enter 始终插入换行符(在多行模式下让Enter添加换行符的替代方法)

类型 @<partial> 弹出当前目录范围内的文件选择器(使用 git ls-files 如果可用;回落到递归行走)。所选路径在缓冲区中保持字面意义,并在提交时作为围栏代码块内联(每个文件的上限为64KB)。

类型 !<command> 直接运行shell命令——output内联打印,绕过LLM。需要 allow_shell=true 在 ~/.syscontrol/config.json.

历史坚持到 ~/.syscontrol/cli_history.对话自动保存到 ~/.syscontrol/cli_sessions/;继续使用最新 syscontrol --continue 或从列表中选择 syscontrol --resume.

本地模式(Ollama)

ollama pull qwen3:30b   # recommended
ollama serve
syscontrol --provider local

支持工具调用的模型:

型号 备注
qwen3:30b 默认值。最佳工具使用和推理
qwen3:8b 更快、更低的内存——包括思维模式
qwen2.5:7b 轻质替代品
llama3.1:8b 久经考验的回退

没有本机工具调用的模型(例如。 gemma3)将出错。

云模式(Ollama Cloud)

syscontrol --provider cloud
# Enter your key when prompted — not echoed or stored in shell history

获取钥匙 ollama.com/settings/keys默认云模型: gpt-oss:120b.

任何实现OpenAI兼容聊天完成和工具调用API的服务都可以 与……一起使用 --provider custom, --base-url, --model,以及 --api-key。自定义提供程序密钥为 用于当前会话,并且不会写入Ollama凭据条目。

结束会话

自然地说再见(bye, exit, quit, done, farewell, cya, goodnight,…)或按 复制。代理将在退出之前提供保存您的会话。

会话内存

退出时,系统会提示您保存有关会话的简短说明。注释附于 SysControl_Memory.md 带有时间戳。下次启动时,如果文件存在,其内容将被注入系统提示符中,以便代理具有之前会话的上下文。该文件是纯文本的,只能追加,可以自由编辑或删除条目。

代理还可以通过以下方式在会话中保存和调用内存 read_memory 和 append_memory_note 工具——无需等待退出。

隐私: SysControl仅存储您明确保存的内容。Ollama默认在本地处理查询。


权限和安全

敏感工具是 默认情况下禁用。启用它们 ~/.syscontrol/config.json:

{
  "allow_shell":           true,
  "allow_messaging":       true,
  "allow_message_history": true,
  "allow_screenshot":      true,
  "allow_file_read":       true,
  "allow_file_write":      true,
  "allow_calendar":        true,
  "allow_contacts":        true,
  "allow_accessibility":   true,
  "allow_tool_creation":   true,
  "allow_deep_research":   true,
  "allow_email":           true,
  "allow_notes":           true,
  "allow_brew":            true,
  "allow_agents":          true,
  "allow_automations":     true,
  "allow_connectors":      true
}

每个禁用的工具都会返回一个错误,并带有启用它所需的确切标志。


Claude桌面设置

1.将MCP服务器添加到您的配置中

平台 配置路径
macOS ~/Library/Application Support/Claude/claude_desktop_config.json
窗户 %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "system-monitor": {
      "command": "/path/to/uv",
      "args": ["run", "/absolute/path/to/SysControl/mcp/server.py"],
      "env": {}
    }
  }
}

使用 which uv 获取紫外线路径。

2.设置系统提示 --创建Claude桌面项目并粘贴以下内容 mcp/prompt.json 进入“项目说明”字段。

3.重新启动克劳德桌面 — system-monitor 将出现在MCP服务器列表中。


自我延伸

当你要求一些没有工具覆盖的东西时,代理会主动构建它:

You: What song is playing in Spotify right now?

Agent: I don't have a tool for that. Want me to create one? (yes/no)

You: yes

Agent: ✓ Tool `get_spotify_track` installed. Restart and ask again.

代理编写Python函数,验证语法,扫描危险模式(eval, exec等),并将其附加到 mcp/server.py。要求:

{ "allow_tool_creation": true }

工具(共116个)

监控

工具 它做什么
get_cpu_usage CPU负载(总负载+每个内核)、时钟频率、内联条形图
get_ram_usage RAM和交换——已使用、可用、百分比、内联堆叠图表
get_gpu_usage GPU负载、VRAM、每个设备的温度(NVIDI/pynvml)、内联图表
get_disk_usage 每个分区空间和累积I/O计数器
get_network_usage 累计发送/接收字节数和每个接口状态
get_realtime_io 实时磁盘读/写和网络下载/上传速度(MB/s)
get_top_processes 按CPU或内存排列的前N个进程
get_full_snapshot 单次调用:CPU+RAM+GPU+磁盘+网络+顶级进程
get_system_alerts 分类扫描返回优先级严重/警告警报

系统和硬件

工具 它做什么
get_device_specs 静态配置文件:CPU型号、内核数量、RAM、GPU VRAM、磁盘、操作系统
get_battery_status 百分比、充电状态、剩余时间
get_temperature_sensors CPU/主板传感器(Linux/Windows)
get_system_uptime 启动时间、正常运行时间、1/5/15分钟平均负载
get_hardware_profile 现场压力+规格+OC能力+升级可行性+瓶颈分析

流程管理

工具 它做什么
get_process_details PID的深度检查:路径、cmdline、用户、RSS/VMS、线程、打开的文件
search_process 按名称查找进程(不区分大小写的部分匹配)
kill_process SIGTERM(默认)或SIGKILL PID。拒绝关键系统进程。

网络和连接

工具 它做什么
get_network_connections 所有具有状态和拥有进程的活动TCP/UDP连接
network_latency_check Pings网关、Cloudflare、Google DNS并行运行并诊断缓慢
get_wifi_networks 具有SSID、频道、安全性、信号强度的附近网络

存储

工具 它做什么
find_large_files 路径下最大的N个文件。跳读 .git, node_modules, .venv
eject_disk 通过挂载点卸载并弹出外部磁盘

信息与通信

工具 它做什么
send_imessage 通过Messages.app发送iMessage或SMS。仅限macOS。
get_imessage_history 阅读来自的最新消息 ~/Library/Messages/chat.db仅限.MOSX。
read_emails 从Mail.app读取最近的电子邮件(按文件夹)。需要 allow_email仅限.MOSX。
send_email 通过Mail.app发送电子邮件。需要 allow_email仅限.MOSX。
search_emails 在所有帐户和邮箱中搜索电子邮件。需要 allow_email仅限.MOSX。

浏览器和Web

工具 它做什么
web_search DuckDuckGo搜索——标题、URL、代码片段。没有API密钥。
web_fetch 以纯文本形式获取URL。无需浏览器。
grant_browser_access 解锁浏览器控件(在用户同意后调用一次)
browser_open_url 在默认浏览器中打开URL
browser_navigate 通过AppleScript(macOS)导航活动选项卡
browser_get_page 返回当前选项卡的URL、标题和文本(macOS)

剪贴板和屏幕

工具 它做什么
get_clipboard 返回当前剪贴板文本
set_clipboard 将文本写入剪贴板
take_screenshot 全屏PNG内联返回。(可选)保存到文件。macOS和Windows。
generate_image 从提示生成内联视觉图像伪影。需要一个OpenAI镜像API密钥。

应用程序控制和系统

工具 它做什么
open_app 在macOS或Windows上按名称打开应用程序。
quit_app 在macOS或Windows上优雅地退出或强制终止应用程序。
get_volume 输出、输入和警报音量;静音状态
set_volume 设置系统输出量(0–100)
get_now_playing 当前正在Music.app或Spotify中播放曲目(标题、艺术家、专辑、位置)。仅限macOS。
media_control 播放、暂停、跳过或停止Music.app/Spotify。自动检测活动玩家。仅限macOS。
get_frontmost_app 返回所关注的应用程序的名称
toggle_do_not_disturb 启用/禁用聚焦/DnD
run_shortcut 通过以下方式运行命名快捷方式 shortcuts runmacOS 12+。

文件I/O和外壳

工具 它做什么
read_file 读取文本文件(最多16000个字符)
write_file 将文本写入任何路径,根据需要创建目录
list_directory 列出目录内容,包括名称、类型、大小和修改时间
move_file 移动或重命名文件或目录
copy_file 将文件复制到新位置
delete_file 删除文件或目录(macOS上默认为垃圾箱,可恢复)
create_directory 创建一个目录和任何缺失的父目录
search_files 使用macOS Spotlight(mdfind)在系统范围内搜索文件。瞬间。仅限macOS。
read_spreadsheet 从以下位置读取单元格 .xlsx 或 .csv --支持工作表选择和单元格范围
edit_spreadsheet 写入单元格(A1表示法)或将行附加到 .xlsx / .csv。创建新文件。
read_document 阅读以下段落 .docx, .txt,或 .md 字数统计
edit_document 查找/替换文本、覆盖段落或附加到 .docx 文件
read_pdf 从PDF文件中逐页提取文本(最多200页)
run_shell_command 执行bash命令并返回stdout/stderr。 默认情况下禁用。

日历、联系人和日志

工具 它做什么
get_calendar_events Calendar.app未来N天的活动。仅限macOS。
get_contact 按姓名、电话和电子邮件搜索Contacts.app。仅限macOS。
list_notes 列出notes.app中的注释,包括标题、文件夹和时间戳。需要 allow_notes.
read_note 按标题阅读笔记的全文(部分匹配)。需要 allow_notes.
create_note 在Notes.app中创建新笔记。需要 allow_notes.
get_startup_items 自动启动项目(macOS LaunchAgents、Windows注册表、Linux .desktop)
tail_system_logs 带有可选关键字过滤器的系统日志的最后N行

公用事业

工具 它做什么
set_reminder 安排本机桌面通知。接受 "in 2 hours", "tomorrow at 9am"等等。
list_reminders 所有带有ID和火灾时间的待处理提醒
cancel_reminder 按ID取消提醒
get_weather 当前天气+服装建议。自动从IP检测位置。
check_app_updates macOS、Windows或Linux上可用的应用程序/软件包和操作系统更新
brew_list 列出所有已安装的自制配方奶粉和木桶。需要 allow_brew.
brew_install 安装自制配方奶粉或木桶。需要 allow_brew.
brew_upgrade 升级一个或所有Homebrew软件包。需要 allow_brew.
brew_uninstall 卸载Homebrew配方奶粉或木桶。需要 allow_brew.
get_docker_status 正在运行具有实时CPU百分比、内存、映像、状态和端口的容器
get_time_machine_status 上次备份时间、阶段和进度(如果正在运行)、目标。仅限macOS。
track_package 通过跟踪号跟踪UPS、USPS、FedEx或DHL的货物

记忆

工具 它做什么
read_memory 读取持久内存文件——跨会话保存的事实和笔记
append_memory_note 在内存文件中添加一个简明的注释,以备将来调用

研究

工具 它做什么
deep_research 多步骤网络研究代理:计划子问题,搜索多个来源,提取和交叉验证声明,返回引用支持的答案。需要1-3分钟。

代码编辑和导航

工具 它做什么
read_file_lines 读取包含行号、偏移量和限制的文件——适合大文件。需要 allow_file_read.
edit_file 有针对性的查找和替换编辑。精确字符串匹配,如果不明确,则失败。需要 allow_file_write.
glob_files 按glob模式查找文件(例如。 **/*.py).跳过.git、node_modules、.vev。
grep_files 使用可选上下文行跨文件搜索正则表达式内容。跳过二进制文件。
git_status 显示分支、暂存/未暂存/未跟踪的文件以及最近的提交。
git_diff 显示未暂存或暂存更改的git diff。

子代理编排

工具 它做什么
list_agents 列出可用的子代理及其名称和描述
run_agent 将一个重点任务委托给一个命名的子代理(资源管理器、分析师、研究员、作家),该子代理在一个具有受限工具的隔离子流程中运行。需要 allow_agents.

自我延伸

工具 它做什么
create_tool 编写、验证并安装新的MCP工具 server.py。需要 allow_tool_creation.
list_user_tools 列出通过安装的所有工具 create_tool

技能和家务

工具 它做什么
list_skills 列出内置和用户安装的工作流技能
run_skill 加载技能剧本供代理执行
tail_file 使用可选过滤读取大型文本文件的尾部
cleanup_downloads 预览或从下载中删除旧文件
cleanup_caches 检查或清理支持的应用程序缓存目录
summarize_directory 总结目录树及其最大内容
battery_health_report 报告电池容量、循环次数和状况
process_tree 显示流程及其父/子关系
notify_user 在macOS、Windows或Linux上显示即时系统通知
do_not_disturb_status 报告当前焦点/请勿打扰状态
focus_mode_set 激活或停用命名的焦点模式
open_file_at_path 在默认或选定的应用程序中打开本地文件

预定自动化

工具 它做什么
create_automation 以有限的时间间隔安排重复的只读工具调用
list_automations 列出已配置的自动化及其下一次运行时间
update_automation 启用或暂停自动化
delete_automation 删除自动化
run_automation_now 立即运行配置的自动化
list_automation_runs 检查最近的结果和失败
get_health_trends 从定期检查中总结CPU、RAM、磁盘和警报历史记录
get_audit_log 在不存储参数或结果值的情况下查看本地工具操作

自动化是本地的,默认情况下是禁用的,并且仅限于只读工具。通过以下方式启用它们 allow_automations;无法安排变异或破坏性工具。

外部MCP连接器

工具 它做什么
list_connectors 列出已配置的外部MCP服务器和连接状态
add_connector 在不调用shell的情况下添加stdio MCP服务器
remove_connector 删除已配置的连接器并停止其进程
refresh_connectors 重新启动连接器并重新发现其工具

外部连接器工具的命名空间为 <connector>__<tool>,因此一个名为的GitHub连接器 github 可能暴露 github__list_issues连接器进程接收最小环境; 秘密值仅通过显式命名的环境变量传递,从不写入 到 connectors.json。连接器执行被禁用,直到 allow_connectors 已启用。


加班支持

从硬件和平台自动检测到:

平台 CPU OC GPU OC
苹果硅(M系列) ✗ 不支持 ✗ 不支持
英特尔Mac✗ 不支持(无BIOS) ✗ 不支持(macOS)
英特尔K/KF/KS--Windows/Linux ✅ 英特尔XTU或BIOS ✅ MSI加力燃烧室
AMD Ryzen——Windows/Linux✅ Ryzen大师/PBO✅ MSI加力燃烧室

项目结构

SysControl/
├── agent.py                 # CLI entry-point shim
├── install-cli.sh           # One-line CLI installer (curl one-liner)
├── agent/
│   ├── cli.py               # Interactive terminal REPL
│   ├── core.py              # Shared agent logic: MCP client, streaming loop, helpers
│   ├── bridge.py            # JSON-over-stdio bridge for the Swift app
│   ├── agents.py            # Sub-agent specs: AgentSpec, AgentRegistry, built-in agents
│   ├── runner.py            # Sub-agent runner: isolated context, filtered tools
│   └── paths.py             # Path resolution (repo root, user data dir, memory file)
├── mcp/
│   ├── server.py            # MCP tool server (104 tools + self-extension)
│   └── prompt.json          # System prompt for the agent
├── deep_research/           # Deep research agent (iterative web research with citation verification)
├── swift/
│   ├── Package.swift         # SwiftPM package definition
│   ├── build.sh              # Builds the .app bundle and DMG
│   ├── install.sh            # One-line source installer
│   └── SysControl/           # SwiftUI source (App, Models, Views, Services, Storage)
├── scripts/
│   └── make_icon.py          # Generates the .icns app icon from source PNGs
├── pyproject.toml            # Python project config, dependencies, linting
├── VERSION                   # Current release version (single source of truth)
└── tests/                    # Pytest suite for agent core + MCP helpers

建筑学

┌──────────────────────┐
│    SwiftUI App       │   Native macOS frontend
│  (swift/SysControl/) │   Onboarding, chat, settings, history
└────────┬─────────────┘
         │  JSON-over-stdio (bridge.py)
┌────────▼─────────────┐
│    Agent Core        │   Streaming agentic loop, LLM client
│  (agent/core.py)     │   Provider selection, tool dispatch
└────────┬─────────────┘
         │  JSON-RPC (stdio)
┌────────▼─────────────┐
│    MCP Server        │   104 tools, self-extension, permission checks
│  (mcp/server.py)     │   Concurrent tool execution via client pool
└──────────────────────┘

Swift前端通过以下方式与Python后端通信 agent/bridge.py,它通过stdio协议讲一个简单的JSON。这座桥重复使用了同样的东西 MCPClientPool CLI使用的流式循环,因此所有工具和功能都在每个接口上共享。


入口点

通过安装后 俏皮话 (或 pip install -e . 来自克隆):

脚本 描述
syscontrol 交互式CLI代理
syscontrol --update 检查并安装最新版本
syscontrol --version 打印已安装的版本并退出
syscontrol-server MCP服务器(stdio)
syscontrol-cli-update 独立更新程序脚本(与 syscontrol --update)

从克隆中不安装,使用 uv run:

命令 描述
uv run agent.py 交互式CLI代理
uv run -m mcp.server MCP服务器(stdio)——用于克劳德桌面集成

许可证

该项目根据MIT许可证获得许可。看 许可证.