AgentiLoop/Agent
AgentiLoop/Agent has 651 GitHub stars and 71 forks. GitHot measured 0 stars in 24 hours and -1 in 7 days. Last checked 2026-11-08 22:22 UTC. Last push 2026-11-03.
Agent! now supports macOS 14.6 or later, Apple Silicon and Intel, latest release. The Best AI agent for Mac: drives any app via Accessibility, codes/builds in Xcode, automates AppleScript, JXA, Swift and SMAppService shell (user/root). 23 LLM providers, local/cloud, plus on-device Apple Intelligence and Jev guard. Auto-Pilot, MCP, Avatar.
可以做什么
- 🧠 Self-verifying task loop — reasons, executes, observes results, self-corrects. A task can't declare itself done until goal_state criteria are marked with evidence; an opt-in critic reviews the diff first.
- 🛠 Agentic coding — reads codebases, edits with string-replace diffs, builds Xcode projects natively (clickable errors), manages git, indexes repos into a portable JSONL repo-map. Every edit is snapshotted — one-click rollback or whole-task rewind_task.
- 🖥 Desktop automation — drives any Mac app through the Accessibility API (AXorcist), element-based with fuzzy auto-retry. Plus NSAppleScript, JXA and 51 ScriptingBridge app bridges, all in-process with TCC.
- 📜 AgentScript — Swift dylibs compiled at runtime and dlopen'd in-process with full TCC. Deleted scripts go to .Trash and are restorable.
实测星标增长
- 24小时
- 0
- 7天
- -1
- 15天
- 更新延迟
- 1个月
- 更新延迟
各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。
readme/README_zh.md
原文🦾 AgentiLoop Agent!
🌐 官方网站:agentiloop.ai —— 下载、文档、评测与新闻。
⭐ 如果 Agent! 为你节省了时间,请为仓库点亮星标。 星标能帮助其他 Mac 用户找到这个免费、原生、开源的 AI 智能体,也让项目得以持续。
🆕 新面孔登场:AgentiLoop CLI ⚡️
智能体循环,在你的终端中全面释放。Mac、Windows、Linux,随你挑选。
认识 Agent! 家族的最新成员:两款跨平台 CLI,功能完全相同。选择你喜欢的版本:
由 AgentiLoop Agent! for Mac 打造。没错,这个智能体亲手写出了自己的小弟弟。 🤖✨ **v0.0.5 已发布:**更大的工具箱,包括 glob/grep 搜索、web_fetch、待办事项、AGENTS.md、/undo、自定义斜杠命令和 --json。立即下载!
README 翻译
English · Español · Français · Deutsch · 中文 (简体) · Русский · 한국어 · 日本語
在 Agent 中下棋
Agent! 是什么?
一个应用。任意 AI。完全掌控你的 Mac。
Agent! 是一款 100% 原生的 Swift 6.2 / SwiftUI 应用,将 23 家 LLM 提供商——Claude、Codex、OpenAI、Gemini、Grok、Mistral、Mistral Vibe、DeepSeek、Hugging Face、Z.ai、BigModel、阿里巴巴、Qwen Coder、Meta Muse、MiniMax、OpenRouter、Requesty、A2Agent、OrcaRouter、Ollama(云端和本地)、vLLM、LM Studio,以及设备端的 Apple Intelligence——接入一个真正会做事的自主任务循环:读取你的代码库、修复 bug、构建 Xcode 项目、提交 diff、通过辅助功能 API 驱动任何 Mac 应用、以你的身份或 root 运行 shell 命令、通过 iMessage 把结果发给你,并响应你说出的 「Agent!」。
没有 NPM,没有 Electron,没有订阅,没有遥测。使用你自己的 API 密钥,完全本地运行,或用 Apple Intelligence 免费运行。它依赖的每个 Swift 包都出自同一位作者之手。详见下方的项目背景。
快速开始(下载)
- 下载 Agent! 并拖入「应用程序」—— 或使用 Homebrew:
brew update && brew install --cask agentiloop-agent - 打开 Agent! —— 一切自动配置
- 选择你的 AI —— 设置 → 选择提供商 → 输入 API 密钥
✅ 你永远不需要从源码编译。 每个正式版和每个预发布版都附带预编译的 Mac 二进制文件(
.dmg+.zip),由 CI 构建,并经 Apple 签名、公证(notarized)和装订(stapled),使用 AgentiLoop Team ID。因为官方二进制文件带有真实的 Developer ID,Launch Agent 和 Launch Daemon 总能注册成功,永远不会“丢失”——那只会发生在临时签名(ad-hoc)的源码构建中(见下方选项 B)。如果你的 helper 消失了,直接安装最新版本的二进制文件即可。
快速开始(从源码构建)
仅当你想修改 Agent! 本身时才需要。其他人:请使用上面的已签名二进制文件。
git clone https://github.com/AgentiLoop/agent.git
cd Agent
方案 A —— Xcode(Apple Developer 账户): 打开 Agent.xcodeproj,设置你的 Development Team,构建并运行 Agent target,按提示批准 helper。
方案 B —— 无开发者账户(仅需 Xcode Command Line Tools):
./build.sh # Debug
./build.sh Release # Release
open "build/DerivedData/Build/Products/Debug/Agent!.app"
⚠️ 方案 B 的构建为临时签名。Launch Agent/Daemon helper 无法注册(SMAppService 需要 Team ID),但 LLM 循环、所有工具、辅助功能、AppleScript、shell 和 MCP 仍可正常使用。
💡 低成本方案: 通过 Z.ai 使用 GLM-5.3(注册最快,默认模型),每百万 token 只需几分钱。本地运行?只有 GLM-4.7-Turbo(32B)能在消费级硬件上运行(64–128GB Apple Silicon,通过 Ollama)。
故障排除(从源码构建)
xcode-select指向 Command Line Tools →sudo xcode-select -s /Applications/Xcode.app/Contents/Developer- 拉取后出现奇怪的
BUILD FAILED→ DerivedData 过期:./build.sh clean && ./build.sh - helper 始终无法注册 → 方案 B 的预期行为;需要 helper 请使用方案 A
- Deployment target / SDK 错误 → Agent! 面向 macOS 14.6;请更新 macOS 和 Xcode
- 配置参数区分大小写 →
./build.sh(Debug)或./build.sh Release
它能做什么?
「构建 Xcode 项目并修复所有错误」 · 「在音乐中播放我的 Workout 播放列表」 · 「用 Photo Booth 拍张照片」 · 「给妈妈发 iMessage 说我 6 点到家」 · 「打开 Safari 搜索飞往东京的航班」 · 「把这个类重构成更小的文件」 · 「我今天有哪些日历事件?」
只需输入你想要的。Agent! 会想办法实现。
核心功能
🧠 自我验证的任务循环 —— 推理、执行、观察结果、自我纠正。在
goal_state标准被附证据标记完成之前,任务不能宣告完成;可选的评审者会先审查 diff。🛠 智能体编码 —— 读取代码库,用字符串替换 diff 精确编辑,原生构建 Xcode 项目(错误可点击),管理 git,将仓库索引为可移植的 JSONL 仓库地图。每次编辑都有快照——一键回滚或整任务
rewind_task。🖥 桌面自动化 —— 通过辅助功能 API(AXorcist)驱动任何 Mac 应用,基于元素并带模糊自动重试。另有 NSAppleScript、JXA 和 51 个 ScriptingBridge 应用桥接,全部进程内运行并持有 TCC 权限。
📜 AgentScript —— 运行时编译的 Swift dylib,以
dlopen在进程内加载并拥有完整 TCC。删除的脚本进入.Trash,可恢复。🛡 特权执行 —— 通过 Launch Agent 以你的身份运行 shell,或通过你只需批准一次的 Launch Daemon 以 root 运行(SMAppService + XPC)。关于 SMAppService 为何已强制签名身份,见 docs/SECURITY.md。
🎙 语音 —— 说出 「Agent!」 再说任务;设备端
SFSpeechRecognizer,静默约 2.5 秒后自动运行,循环监听。📱 iMessage 远程控制 —— 从 iPhone 发送
Agent! next song;仅限已批准的发送者。读取chat.db需要「完全磁盘访问权限」。🌐 Web —— 内置 Safari 自动化(JavaScript + AppleScript);可选 Selenium 和 Playwright MCP 实现跨浏览器。
🤝 子代理 —— 最多 3 个并发(6 个只读)的隔离代理,支持邮箱消息和按代理指定模型。
🧩 MCP —— 在设置 → MCP 服务器中添加任意 MCP 服务器;工具以
mcp_<server>_<tool>形式出现。示例(stdio 和 HTTP):{ "mcpServers": { "xcode": { "transport": "stdio", "command": "xcrun", "args": ["mcpbridge"], "env": {} }, "HelloWorld": { "transport": "stdio", "command": "/Users/you/bin/mcp-server-hello", "args": [], "env": {} }, "DemoHttp": { "transport": "http", "url": "http://localhost:8085/mcp", "headers": {} } } }HelloWorld和DemoHttp是 AgentMCP 中的演示服务器;请先启动mcp-server-demo-http,让DemoHttp在 8085 端口有服务监听。🗂 标签页、历史、记忆、计划、技能 —— 每个标签页有独立的项目文件夹和日志;持久化用户记忆;多计划清单出现在每个提示词中。
🔄 回退链 —— 遇到 429/超时/网络故障时自动切换到下一个已配置的提供商。
赞助商
赞助
希望支持本项目的企业和 LLM 提供商:请参阅 docs/SPONSORSHIP.md(赞助等级、展示位置)和 docs/PROVIDER_PROGRAM.md(LLM 提供商集成),或直接通过 GitHub Sponsors 赞助。所有费用均通过 GitHub Sponsors 结算。
🤖 23 家 LLM 提供商
| 提供商 | 赞助 | 费用 | 适合 |
|---|---|---|---|
| A2Agent | 便宜 | 一把 OpenAI 兼容密钥即可使用 DeepSeek、GLM、Kimi、MiniMax 和 Qwen,价格远低于官方 | |
| Apple Intelligence | 免费,设备端 | 分流、摘要、token 压缩(大脑图标,提供商选择器中不可用) | |
| Claude | 按 token 计费(API 密钥)或订阅(OAuth) | 长时间自主任务、扩展思考、提示词缓存 | |
| Codex | ChatGPT 订阅 | 通过 ChatGPT OAuth 使用 OpenAI 模型——无需 API 密钥,不按 token 计费 | |
| DeepSeek | 便宜 | 低成本编码、缓存命中报告 | |
| Google Gemini | 付费(有免费额度) | 长上下文、视觉 | |
| Grok (xAI) | 付费 | 实时信息 | |
| Hugging Face | 不定 | 开源模型,serverless 或专用端点 | |
| Meta Muse | 付费 | 通过 Meta Model API(api.meta.ai)使用 Muse Spark,兼容 OpenAI 的 LLM_… 密钥 |
|
| MiniMax | 便宜 | 1M token 上下文 | |
| Mistral / Mistral Vibe | 付费 | 开放权重云端、代码、智能体产品 | |
| Ollama(云端) | 免费额度 | 托管的开源模型 | |
| 本地 Ollama / vLLM / LM Studio | 免费 + 硬件 | 完全离线;自动检测各模型真实上下文窗口 | |
| OpenAI | 付费 | 通用、工具调用、视觉、reasoning_effort |
|
| OpenRouter | 付费 | 200+ 模型,一把密钥;Claude 经 Anthropic 协议路由 | |
| OrcaRouter | 付费 | 一把 OpenAI 兼容密钥即可访问 190+ 模型,按提供商原价计费;支持 auto/fusion/fallback 路由 | |
| 阿里巴巴(qwen.ai / 百炼) | 便宜 | 通过 DashScope 使用 Qwen 3.8 | |
| Qwen Coder | 订阅 | 阿里云 Coding Plan(sk-sp- 密钥):qwen3-coder-plus、qwen3.7-plus、GLM-5、Kimi K2.5、MiniMax-M2.5 |
|
| Requesty | 付费 | 一把 OpenAI 兼容密钥即可访问 300+ 模型;按模型提供价格与能力信息 | |
| Z.ai / BigModel | 便宜 | GLM-5.3 —— 推荐起点 |
💡 自托管提供商只是在 API 费用意义上免费——要以可用速度运行 30B+ 模型,需要 M2/M3/M4 Ultra Mac Studio(64–128GB)。没有这类硬件的话,上面的低价云端方案要便宜得多。
工具
规范名称来自 AgentTools.Name.*(真实来源:AgentTools 包)。可按提供商隐藏单个工具。
| 分组 | 工具 |
|---|---|
| Core | done · list_tools · search · web_search · fetch · chat · memory · plan · goal_state · restore_tool_result · directory · skill · ask_user · index |
| 代码 / 构建 | file(read/write/edit/diff_apply/undo/list/search/mkdir/…)· git · xcode(build/run/analyze/snippet/code_review/add_file/bump_version/…)· agent_script |
| Shell | user_shell(Launch Agent)· root_shell(Launch Daemon)· shell(进程内回退)· batch · multi |
| macOS 自动化 | accessibility(25 个基于元素的操作)· applescript(含 lookup_sdef)· javascript(JXA) |
| Web | safari · selenium · mcp_playwright_browser_*(可选) |
| 子代理 | spawn_agent · tell_agent |
完整的逐操作参考:docs/TECHNICAL.md。
AgentScript —— 拥有完整 TCC 的 Swift 脚本
AgentScript 就是位于 ~/Documents/AgentScript/agents/Sources/Scripts/ 的普通 Swift 文件。Agent! 用 SwiftPM 将每个脚本编译为 .dylib(Package.swift 列出了所有脚本以及 51 个 ScriptingBridge 应用桥接),再以 dlopen 加载,并使用 Agent! 自身的 TCC 授权——辅助功能、自动化、日历、通讯录、邮件、照片等。LLM 通过 agent_script(create / edit / run / delete / restore / pull)管理它们;文件夹内自带约 35 个示例(Hello、TodayEvents、NowPlaying、CheckMail、CreateDmg、ArchiveXcode……)。
入口点 —— 没有顶层代码,不调用 exit();stdout 会返回给 LLM,返回值即退出状态:
import Foundation
import CalendarBridge // 任何 `import XBridge` 都会自动接线——无需修改 Package.swift
@_cdecl("script_main")
public func scriptMain() -> Int32 {
print("Hello from AgentScript! 👋")
return 0
}
环境变量 —— 如何被设置(SET)。 LLM 从不直接触碰环境。它只调用工具,由 Agent! 的 ScriptService 把变量导出到脚本进程中(ScriptService+Execution.swift 里的 env["AGENT_PROJECT_FOLDER"] = cwd、env["AGENT_SCRIPT_ARGS"] = arguments;进程内变体使用 setenv(...))。同样这两个变量也会导出给每条 user_shell / root_shell / shell 命令。
LLM 工具调用 Agent! 导出给脚本的内容
───────────────────────────────────────────────────── ─────────────────────────────────────────────
agent_script(action:"run", name:"TodayEvents") AGENT_PROJECT_FOLDER=/Users/you/Documents/GitHub/Agent
(AGENT_SCRIPT_ARGS 不会被设置)
agent_script(action:"run", name:"TodayEvents", AGENT_PROJECT_FOLDER=/Users/you/Documents/GitHub/Agent
arguments:"days=3,location=false,json=true") AGENT_SCRIPT_ARGS="days=3,location=false,json=true"
| 变量 | 何时设置 | 含义 |
|---|---|---|
AGENT_PROJECT_FOLDER |
始终 | 当前标签页的项目文件夹(没有则为 $HOME)。运行器的 cwd 也会设为该目录。 |
AGENT_SCRIPT_ARGS |
仅当 LLM 传入 arguments:"…" 时 |
LLM 传入的原始字符串。内置示例采用 key=value,key=value 约定。 |
环境变量 —— 如何被读入(READ IN)。 在脚本内部,二者都来自 ProcessInfo.processInfo.environment。下面就是 Hello.swift / TodayEvents.swift 使用的解析模式:
import Foundation
@_cdecl("script_main")
public func scriptMain() -> Int32 {
let env = ProcessInfo.processInfo.environment
// 1. 项目文件夹 —— 始终存在;保险起见回退到 cwd
let folder = env["AGENT_PROJECT_FOLDER"] ?? FileManager.default.currentDirectoryPath
// 2. 参数 —— 除非 LLM 传入了 `arguments:"…"`,否则不存在
let argsString = env["AGENT_SCRIPT_ARGS"] ?? ""
// 3. 默认值,然后解析 "key=value,key=value"
var daysAhead = 0
var showLocation = true
var outputJSON = false
for pair in argsString.split(separator: ",") {
let parts = pair.split(separator: "=", maxSplits: 1).map { $0.trimmingCharacters(in: .whitespaces) }
guard parts.count == 2 else { continue }
switch parts[0] {
case "days": daysAhead = Int(parts[1]) ?? 0
case "location": showLocation = parts[1].lowercased() == "true"
case "json": outputJSON = parts[1].lowercased() == "true"
default: break
}
}
print("项目文件夹:\(folder)")
print("days=\(daysAhead) location=\(showLocation) json=\(outputJSON)")
return 0
}
这两个变量相互独立——切勿从 AGENT_SCRIPT_ARGS 中解析项目文件夹。user_shell 中的 Bash 等价写法:ls "$AGENT_PROJECT_FOLDER/Sources"(cwd 已在该目录,无需 cd)。
内置脚本中真实的 AGENT_SCRIPT_ARGS 约定(~/Documents/AgentScript/agents/Sources/Scripts/):
| 脚本 | LLM 传入的 arguments: |
风格 |
|---|---|---|
TodayEvents |
days=3,location=false,json=true |
key=value,… |
CheckMail |
unreadOnly=true,inboxCount=true,json=true |
key=value,… |
ListReminders |
completed=false,limit=5 |
key=value,… |
QuitApps |
excluded=Xcode,Agent,Terminal |
key=value 带列表 |
NowPlaying |
json=true,artwork=true |
key=value,… |
ArchiveXcode |
/path/to/Project.xcodeproj MyScheme 469UCUB275 |
位置参数,空格分隔(省略时自动检测 scheme/teamID) |
CreateDmg |
--app /path/to/App.app --output /path/out.dmg --name "My App" --compress |
标志风格,空格分隔,支持引号 |
JSON 输入 / 输出 —— 与环境变量完全独立的另一套机制。 环境变量由 Agent! 导出到进程中;JSON 文件则是磁盘上的普通文件,由脚本自己用 FileManager / JSONSerialization 读写。Agent! 不会创建、传递或解析它们。以下是内置脚本中的两种真实模式:
1. 仅 JSON 输入(SendMessage) —— 完全不用环境参数;脚本要求存在 SendMessage_input.json,缺失时返回 1:
// ~/Documents/AgentScript/json/SendMessage_input.json (运行前由 LLM 通过 file(action:"write") 写入)
{ "recipient": "妈妈", "message": "6 点到家", "imagePath": "~/Pictures/Photos Library.photoslibrary/originals/A/IMG_0001.jpeg" }
// ~/Documents/AgentScript/json/SendMessage_output.json (由脚本写入)
{ "success": true, "timestamp": "2026-09-03T21:14:02Z", "recipient": "妈妈", "message": "6 点到家" }
// 失败时:{ "success": false, "timestamp": "…", "error": "Missing required field: recipient" }
// SendMessage.swift —— 脚本如何读取
let inputPath = "\(NSHomeDirectory())/Documents/AgentScript/json/SendMessage_input.json"
guard let inputData = FileManager.default.contents(atPath: inputPath) else {
writeOutput(outputPath, success: false, error: "Input file not found: \(inputPath)"); return 1
}
guard let json = try? JSONSerialization.jsonObject(with: inputData) as? [String: Any],
let recipientHandle = json["recipient"] as? String else { /* … */ return 1 }
let message = json["message"] as? String
let imagePath = json["imagePath"] as? String
2. 环境参数传选项,JSON 输出结构化结果(TodayEvents、NowPlaying、CheckMail、ListReminders) —— 选项来自 AGENT_SCRIPT_ARGS(或可选的 <Name>_input.json);当 json=true 时,脚本在返回给 LLM 的人类可读 stdout 之外,再写入 <Name>_output.json:
// agent_script(action:"run", name:"TodayEvents", arguments:"days=3,json=true")
// → ~/Documents/AgentScript/json/TodayEvents_output.json
{ "success": true, "timestamp": "…", "count": 2,
"events": [ { "summary": "Standup", "calendar": "Work", "startTime": "…", "endTime": "…", "allDay": false, "location": "…" }, … ] }
// agent_script(action:"run", name:"NowPlaying", arguments:"json=true,artwork=true")
// → ~/Documents/AgentScript/json/NowPlaying_output.json
{ "success": true, "playerState": "playing",
"track": { "name": "…", "artist": "…", "album": "…", "duration": 240 },
"artwork": { "saved": true, "path": "~/Documents/AgentScript/images/….png", "width": 500, "height": 500 } }
// TodayEvents.swift —— 脚本如何写入
func writeTodayEventsOutput(_ path: String, success: Bool, error: String? = nil,
events: [[String: Any]]? = nil, count: Int? = nil, outputJSON: Bool) {
guard outputJSON else { return }
var result: [String: Any] = ["success": success, "timestamp": ISO8601DateFormatter().string(from: Date())]
if !success, let error { result["error"] = error }
if success { if let events { result["events"] = events }; if let count { result["count"] = count } }
try? FileManager.default.createDirectory(atPath: (path as NSString).deletingLastPathComponent, withIntermediateDirectories: true)
if let out = try? JSONSerialization.data(withJSONObject: result, options: .prettyPrinted) {
try? out.write(to: URL(fileURLWithPath: path))
}
}
删除的脚本进入 ~/Documents/AgentScript/agents/.Trash/(agent_script(action:"restore"));action:"pull" 从 AgentScripts 仓库获取上游版本。
🔒 Jev —— shell 命令执行前的第二意见
Jev(TypeSafe System One)是一个可选的决策层,在 Agent! 执行 shell 命令之前先行审查。它是对你所选 LLM 提供商的补充,绝不取代它。
- 它做什么。 每条已经通过
ShellSafetyService固定规则的命令都会发送给 Jev,由它评估该命令不可逆地破坏数据的可能性。超过你设定的阈值时,命令被拒绝并给出评分与命令原文;低于阈值则照常执行。 - 适用范围。 所有 shell 路径:进程内 shell、用户 Launch Agent(
user_shell)以及特权 Launch Daemon(root_shell)。 - 可调阈值。 设置 → LLM Common Settings → Reject at … % destructive,0–100%,以 10% 为步长。默认值为 70%。
- 故意设计为失败放行。 未配置 API 密钥、关闭 Consult Jev before tools 开关,或 TypeSafe 服务中断时,结果都视为「无意见」:命令继续执行,失败会被记录,绝不会被悄悄当成安全结论。在 Jev 检查期间取消任务,命令不会启动。
- 可见。 每次检查都会记录破坏性风险百分比、允许/拒绝的结论、作答模型以及输入/输出 token 数。
- 配置。 API 密钥(保存在钥匙串中)、带目录刷新的模型选择器和顾问开关都位于 LLM Common Settings。客户端实现位于随仓库附带的 Swift 包
TypeSafeKit/TypeSafeMiddleware。
隐私与安全
你的文件、屏幕内容和个人数据永远不会离开你的 Mac——云端提供商只看到提示词文本;本地提供商让一切保持离线。每个操作都有记录。
| 层级 | 作用 |
|---|---|
| Shell Safety Service | 硬性拦截 rm -rf /、rm -rf ~、裸通配符 rm -rf、--no-preserve-root——客户端和守护进程侧同时执行。LLM 无法绕过。 |
| XPC 客户端信任 | 两个监听器都要求由应用自身签名派生的同团队代码签名;Release 构建拒绝无团队签名的客户端。 |
| 先读后改门禁 | 拒绝编辑未读取或被外部修改的文件(SHA-256),拒绝时自动读取。 |
| 文件备份 + 回退 | 每次编辑都有快照(保留 1 周);Rollback 界面、file(action:"undo") 或任务级 rewind_task。 |
| TCC 进程内路由 | AppleScript/JXA/screencapture/辅助功能命令在 Agent! 持有 TCC 授权的进程内运行,绝不经过守护进程。 |
| 工具执行门控 | LLM 无法伪造结果——每次调用都经过 dispatchTool() 并返回真实输出。没有工具调用却声称「我点击/搜索了…」会被注入纠正。 |
| 类型化错误 + 守卫 | 每个失败的工具结果都带有恢复提示;重复调用与卡死守卫先提醒后停止;完成门禁每任务最多拒绝 3 次。 |
| 控制台审计轨迹 | 每次工具调用和每条 helper 命令都被记录。 |
键盘快捷键与斜杠命令
| 快捷键 | 操作 |
|---|---|
Return |
运行任务 · ⌘ . / Esc 取消 |
⌘ T / ⌘ W / ⌘ 1–9 / ⌘ ⇧ ←→ |
新建 / 关闭 / 切换 / 上一个-下一个标签页 |
⌘ B / ⌘ D |
切换 LLM 输出浮层 / 折叠箭头 |
⌘ F / ⌘ L / ⌘ V |
搜索日志 / 清除日志 / 粘贴图片 |
↑ / ↓ |
提示词历史 |
⌘ ⇧ M / ⌘ ⇧ P |
信息监视器 / 设置 |
⌘ ⇧ K L H J U |
清除全部 / LLM 面板 / 提示词历史 / 任务历史 / token 计数器 |
斜杠命令在本地执行:/clear [log|all|llm|history|tasks|tokens]、/memory [show|clear|edit|<文本>]、/auto …。
自动驾驶(/auto)
以无人值守的循环运行任务循环(在主标签页或任意 LLM 标签页),直到达成目标、时间预算用完或你按下停止。没有循环次数上限,也没有每个循环的迭代上限:一个循环的任务完全结束后若目标尚未达成,下一个循环会自动开始。
| 命令 | 作用 |
|---|---|
/auto <goal> |
朝目标工作,直到 LLM 报告已达成 |
/auto 4h <goal> |
同上,但 4 小时后停止(30m、1.5h 也可用) |
/auto |
先审查项目,再通过 ask_user 询问你的目标 |
/auto history |
列出以往的自动驾驶目标 |
/auto last / /auto #N |
重新开始历史中最近的 / 第 N 个目标 |
/auto add <folder> |
添加一个同步文件夹:项目的每次改动都会镜像到那里 |
/auto remove <folder> |
移除一个同步文件夹 |
/auto status / /auto stop |
显示会话 / 在当前循环结束后终止(若处于循环之间则立即终止) |
每个循环都是一个普通任务;其摘要会追加到 .agent/autopilot/progress.md,并传入下一个循环的提示词。LLM 以 AUTOPILOT: GOAL REACHED 开头写最终摘要来结束会话。没有摘要就结束的循环(错误、取消)永远不会结束会话,下一个循环只会等待更久(15 秒、30 秒、60 秒……最长 5 分钟)。/auto 命令会记入提示词历史(上方向键),目标会保存到 /auto history 列表。活动会话在应用重启后依然保留:退出(或崩溃)会暂停它们,下次启动时每个会话会在其标签页中以下一个循环继续。
常见问题
需要会编程吗? 不需要——用自然语言(或你的母语)即可。 费用多少? 应用对非商业和个人用途免费(PolyForm Noncommercial 1.0.0)。你只需支付提供商费用;正经工作最便宜的是通过 Z.ai/BigModel 使用 GLM-5.3 或 DeepSeek。拥有硬件的话本地模型免费。 需要什么 Mac? Apple Silicon 或 Intel,macOS 14.6+。云端提供商任何现代 Mac 都行;30B 本地模型需要 64GB+。 和 Siri 有什么不同? Siri 回答问题。Agent! 执行操作——应用、文件、代码、系统。
更多:docs/FAQ.md · 技术架构 · 对比(vs Claude Code、Cursor、Cline、OpenClaw)· 安全模型
项目背景
Agent! 是三年智能体 AI 应用开发的结晶——ANIE、Game Changer、BattleScript、XCF MCP Server and Client、D1F 以及约八个原创 Swift 包。缺失的一环是智能的自主循环;一旦实现,这些项目的精华便汇聚成了 Agent!。它写过电子游戏(Boss-Man)、创建过应用、通过 AppleScript 在 Pages 中写诗、生成磁盘映像并附加到 GitHub Release。Claude Code 依赖约 65 个第三方 NPM 包,而 Agent! 100% 原生、内存占用极低,开箱即带 Xcode 自动化、Swift Syntax 6.2 分析、辅助功能、AppleScript、AgentScript/ScriptingBridge、Safari 自动化和 MCP 支持。
用 Agent! 做逆向工程

Agent! 也是一个逆向工程工作台。它读取光盘镜像和 ROM,编写提取工具,研究反编译代码,并在浏览器中重建游戏,同时用原始数据核对自己的工作。四款赛车游戏和一款格斗游戏就是这样做出来的:
| 游戏 | Agent! 做了什么 | 游玩 |
|---|---|---|
| 🚕 CrazyTaxi | 用 Three.js 重建世嘉 Dreamcast 的《疯狂出租车》(美版)。Python 工具从你自己的光盘中提取赛道、车辆、角色、动作和音频。碰撞代码移植自反编译代码,并与提取出的赛道数据核对 | 需要你自己的光盘 |
| 🍄 MarioKart64JS | 用 Three.js 重建的《马力欧卡丁车 64》,不是模拟器。赛道、卡丁车、音乐和语音均来自原版 N64 ROM,包含全部 16 条赛道、对战场地、15 种道具、高清贴图和在线对战 | mk64js.gokart.games |
| 🏎️ F1 | 在 18 条真实赛道上与 AI 车队比赛的方程式赛车游戏。赛道布局、高低起伏和倾斜弯道都根据 OpenF1 API 的真实车辆位置和遥测数据重建 | f1.gokart.games |
| 🏁 GoKart | 原创的 Godot 4 卡丁车游戏,复刻《马力欧卡丁车 64》的规则(尾流加速、排量等级、大奖赛积分、菜单、音乐),一切均由代码生成,并支持在线多人 | gokart.games |
| 🦇 BvS | 《蝙蝠侠大战超人》,一款 Three.js 3D 格斗游戏,每个像素都由代码绘制:没有模型文件、贴图或音频采样 | bvs.agentiloop.ai |
这些仓库都不包含游戏资源。CrazyTaxi 和 MarioKart64JS 需要你自己的游戏副本。全部为粉丝作品,仅供个人和教育用途。
Agent! 家族
Agent! 由 AgentiLoop 组织下的一系列配套仓库构成。新闻、下载和媒体资料包请见 🌐 agentiloop.ai(网站源码)。
| 仓库 | 简介 |
|---|---|
| AgentiLoopCLI · AgentiLoopGo | 以跨平台 CLI 形式提供的智能体循环,支持 macOS、Windows 和 Linux(Rust · Go) |
| AgentScripts | Agent! 在进程内编译并运行的 Swift 脚本 |
| AgentTools | 工具模式、系统提示词和提供商管理 |
| AgentLLM | LLM 提供商协议、类型和注册表 |
| AgentMCP | MCP 客户端(stdio + HTTP) |
| AgentAccess | 辅助功能自动化 |
| AgentEventBridges | 适用于 50 多款 Mac 应用的 ScriptingBridge 协议 |
| AgentD1F | 多行差异引擎 |
| AgentSwift | SwiftSyntax 代码分析 |
| AgentColorSyntax · AgentTerminalNeo | 语法高亮 · 复古终端 Markdown |
| AgentAudit | os.log 审计日志 |
Star History
参与贡献
见 CONTRIBUTING.md——用 ./build.sh 约 5 分钟即可从源码构建,无需开发者账户。Pull request 会运行 CI Build & Test 工作流。可查看 good first issues。
许可证
PolyForm Noncommercial 1.0.0 —— 非商业和个人用途免费。商业用途及本软件的商业版本由 AgentiLoop.ai(Logos InkPen LLC 旗下公司)独家保留。商业许可请联系 AgentiLoop。
⚠️ 法律声明与署名
商标声明
「AgentiLoop Agent! for Mac」是一个独立的软件项目,并未与 Apple Inc. 存在任何关联、认可、赞助或其他形式的关系。「Apple」、「Mac」、「Mac mini」、「MacBook」、「macOS」及相关标志均为 Apple Inc. 在美国及其他国家/地区注册的商标。此处提及的所有其他商标、服务标志和商号均归其各自所有者所有,仅用于标识目的。
「AgentiLoop Agent!」及 AgentiLoop Agent! 标志均为 AgentiLoop.ai(Logos InkPen LLC 旗下公司)的商标。使用这些标志需事先获得书面许可。以下的 PolyForm Noncommercial 许可证仅授予源代码方面的权利——不授予任何商标权利。
源代码许可证(PolyForm Noncommercial 1.0.0)
「AgentiLoop Agent! for Mac」的源代码公开可见,并采用 PolyForm Noncommercial License 1.0.0 授权。你可以出于任何非商业目的自由使用、复制、修改和分发源代码,但须遵守 LICENSE 文件中的条件(保留 Required Notice 以及许可条款的副本或链接)。商业用途及本软件的商业版本由 AgentiLoop.ai(Logos InkPen LLC 旗下公司)独家保留。
已编译的二进制文件与发布版本
通过本项目的 GitHub Releases、AgentiLoop.ai 或任何其他官方渠道分发的已编译二进制文件、安装程序、经过代码签名的构建版本以及发布产物,均属 AgentiLoop.ai(Logos InkPen LLC 旗下公司)拥有版权的作品,不受管辖源代码的 PolyForm Noncommercial 许可证覆盖。官方二进制文件的所有权利——包括「AgentiLoop Agent!」名称、标志、代码签名身份和 Developer ID——均予保留。
Copyright © 2026 AgentiLoop.ai(Logos InkPen LLC 旗下公司),保留所有权利。
你可以在 PolyForm Noncommercial 许可证下出于非商业目的自由地从源代码构建你自己的二进制文件,前提是不使用「AgentiLoop Agent!」名称、标志或品牌来标识你的产品。
免责声明
本软件按**「原样」**提供,不附带任何形式的明示或暗示担保,包括但不限于对适销性、特定用途适用性和不侵权的担保。在任何情况下,作者或版权持有人均不对因本软件或使用本软件或与之相关的其他交易而产生的任何索赔、损害或其他责任负责,无论是基于合同、侵权行为还是其他原因。
感谢你对 AgentiLoop Agent! 的关注——这是一款专为运行 macOS 14.6 及以上版本、使用正版 Mac 硬件和软件的 Mac mini、MacBook 以及 Mac Studio 电脑打造的应用程序。
- Website: https://AgentiLoop.ai
- Github : https://github.com/AgentiLoop/agent
探索相关项目
affaan-m/ECC
智能体执行与控制框架的性能优化系统。面向 Claude Code、Codex、Opencode、Cursor 等,涵盖技能、本能、记忆、安全与研究优先的开发。
300,126 星标NousResearch/hermes-agent
与你一同成长的智能体
262,015 星标multica-ai/andrej-karpathy-skills
一个用于改进 Claude Code 行为的 CLAUDE.md 文件,源自 Andrej Karpathy 对 LLM 编程陷阱的观察。
231,278 星标firecrawl/firecrawl
借助来自网络及其他来源的数据,强化你的 AI 智能体。正在构建面向超级智能的资料库。🔥
199,847 星标