[控场AI]
产品Sorcerer macOS应用

Sorcerer

一个开源的macOS多智能体社会模拟器,使用SwiftUI构建,通过调用本地已登录的CLI工具(Claude Code、Codex、Ollama)驱动AI角色进行社区讨论与立场演化。

时间轴 (近 90 天)

10月19日

Sorcerer 是一个用纯 SwiftUI 编写的 macOS 应用,采用 MIT 协议开源。

待验证50%
10月19日

Sorcerer 不内置任何模型,也不要求用户填写 API Key,而是调用用户电脑上已安装并登录的命令行工具,如 claude(Claude Code)、codex(ChatGPT)或本地 Ollama。

待验证50%
10月19日

Sorcerer 通过启动一次交互式登录 shell(zsh -ilc)来获取并缓存用户的 PATH,并设置 5 秒超时以防止 shell 挂起。

待验证50%
10月19日

Claude 后端以无工具、无会话持久化、无用户配置的方式运行,并使用 stream-json 输出格式,该格式携带订阅的 5 小时与每周用量窗口。

待验证50%
10月19日

Codex 后端通过命令 `codex exec --ephemeral -s read-only` 调用。

待验证50%
10月19日

Ollama 后端通过向 localhost:11434 发送流式 POST 请求进行调用。

待验证50%
10月19日

Sorcerer 中的角色由 Codable 结构体 Persona 表示,包含 handle、role、bio、traits、interests、goals、mood、memories、ties 和 insider 标记等字段。

待验证50%
10月19日

Engine.swift 中的 apply 函数是纯函数,对模型返回的 JSON 进行校验,丢弃未知作者、钳制情绪值、限制动作在允许列表内,并限制每轮最多一次邀请。

待验证50%
10月19日

Sorcerer 支持通过用户自己的 gh 登录指向 GitHub 仓库、文件夹、网站或文件来生成 brief,其中每条事实被标记为 public、insider 或 hidden。

待验证50%
10月19日

读取源文件时只读文档,.env 和密钥文件永不打开,角色看到的是 brief 而非用户的代码。

待验证50%

还有 4 条时间轴事件

全部知识事实 (14)

待验证

Sorcerer 是一个用纯 SwiftUI 编写的 macOS 应用,采用 MIT 协议开源。

50%
待验证

Sorcerer 不内置任何模型,也不要求用户填写 API Key,而是调用用户电脑上已安装并登录的命令行工具,如 claude(Claude Code)、codex(ChatGPT)或本地 Ollama。

50%
待验证

Sorcerer 通过启动一次交互式登录 shell(zsh -ilc)来获取并缓存用户的 PATH,并设置 5 秒超时以防止 shell 挂起。

50%
待验证

Claude 后端以无工具、无会话持久化、无用户配置的方式运行,并使用 stream-json 输出格式,该格式携带订阅的 5 小时与每周用量窗口。

50%
待验证

Codex 后端通过命令 `codex exec --ephemeral -s read-only` 调用。

50%
待验证

Ollama 后端通过向 localhost:11434 发送流式 POST 请求进行调用。

50%
待验证

Sorcerer 中的角色由 Codable 结构体 Persona 表示,包含 handle、role、bio、traits、interests、goals、mood、memories、ties 和 insider 标记等字段。

50%
待验证

Engine.swift 中的 apply 函数是纯函数,对模型返回的 JSON 进行校验,丢弃未知作者、钳制情绪值、限制动作在允许列表内,并限制每轮最多一次邀请。

50%
待验证

Sorcerer 支持通过用户自己的 gh 登录指向 GitHub 仓库、文件夹、网站或文件来生成 brief,其中每条事实被标记为 public、insider 或 hidden。

50%
待验证

读取源文件时只读文档,.env 和密钥文件永不打开,角色看到的是 brief 而非用户的代码。

50%
待验证

Sorcerer 的 partialRound 函数在 JSON 流式传输时进行增量解析,定位 posts 字段、跟踪花括号深度与字符串转义,解码已闭合的帖子对象,并从当前未闭合对象中提取 author 和部分 text。

50%
待验证

Sorcerer 的 fork() 方法复制当前分支并分配新字母名和父系标记;rewind() 方法可回到过去某轮分叉,过滤帖子、事件、动作与投票,剔除后来加入的人,移除后续记忆,并根据帖子重建情绪。

50%
待验证

Sorcerer 的报告系统区分模型判断与世界计数:投票结果来自真实答案,动作统计只计每人最新动作,先升级后取消只算一次取消。

50%
待验证

Sorcerer 应用侧零第三方依赖,使用 Swift Package,可通过 swift run 运行、swift test 测试;落地页使用 Bun + Turbo monorepo(React、TanStack Router、Tailwind、Hono、tRPC),部署在 Cloudflare Pages。

50%

来源文章