mcpField
S

SaC — Software as Content

本地服务
github.com/Software-As-Content开发工具47 周前更新

关于 SaC — Software as Content

SaC 是面向需要以交互式应用呈现结果的 Agent 的 SDK。应用在同一 URL 上随对话持续演进,用户的点击和聊天消息都会传回 Agent。

主要功能

  1. 01生成交互式应用
  2. 02在对话中演进应用
  3. 03处理应用点击和聊天
  4. 04可插拔的 LLM、搜索与存储

适用场景

  1. 01制定交互式旅行计划
  2. 02通过仪表盘探索数据
  3. 03比较选项并辅助决策

MCP 相关

SaC 提供 MCP stdio 服务,可连接 Claude Code 等 Agent。Agent 可通过它生成和演进交互式应用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"ai-dynsoft-sac": {
"command": "uvx",
"args": [
"sac-sdk"
],
"env": {
"SAC_API_KEY": "<SAC_API_KEY>",
"SAC_API_BASE": "<SAC_API_BASE>",
"SAC_MODEL": "<SAC_MODEL>",
"SAC_SEARCH_API_KEY": "<SAC_SEARCH_API_KEY>"
}
}
}
}
启动命令uvx sac-sdk
需要配置的环境变量
SAC_API_KEY密钥API key for the LLM provider (OpenRouter, Anthropic, OpenAI, etc.)
SAC_API_BASECustom API endpoint for OpenAI-compatible providers
SAC_MODELOverride the default generation model
SAC_SEARCH_API_KEY密钥Tavily API key for web search in generated apps

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypisac-sdk0.1.2

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

SaC SDK

你与 Agent 之间的交互层。

PyPI version Python License


AI Agent 能够推理、编写代码并调用 API,但需要向你反馈时,它们能做的只有输出文本。SaC(Software as Content,软件即内容)正是缺失的交互层:你的 Agent 会以实时、持久、可交互的应用作出响应,并随着对话继续不断演进。它不是截图,也不是一大段 Markdown,而是真正的 UI,你可以点击、探索,并与 Agent 一起塑造。

快速开始

1. 安装
pip install sac-sdk
2. 运行
sac serve

第一次使用?它会询问你的 API 密钥并保存。然后打开 **http://localhost:18420**,输入 "3-day Tokyo trip planner with budget",看着实时 React 应用逐步生成。点击按钮,再让它继续完善。这就是 SaC 运行内置 Agent 循环的效果,无需外部 Agent。

连接到你的 Agent

SaC 可通过 MCP、Skill 或代码接入你正在使用的 Agent。

Claude Code(MCP)
pip install sac-sdk
sac setup claude-code        # registers SaC as an MCP server

重启 Claude Code,然后试试:

"Help me understand this codebase using a visualized and interactive app using SaC MCP."

Claude Code + SaC 示例

设置详情 →

Codex(Skill)
pip install sac-sdk
sac setup codex              # installs the SaC skill
sac serve                    # keep running in a terminal
Codex + SaC 示例

设置详情 →

OpenClaw(Skill)
pip install sac-sdk
sac setup openclaw           # installs the SaC skill
sac serve                    # keep running in a terminal
OpenClaw + SaC 示例

设置详情 →

Python(构建自己的 Agent)
from sac import SaC

sac = SaC()
conv = sac.conversation()
app = await conv.generate("3-day Tokyo itinerary")
print(app.url)   # user opens this
# app.code contains the generated TSX

工作原理

Your agent ──▶ SaC ──▶ User sees a live app at a URL
                   ◀── User clicks a button / types a message
Your agent ──▶ SaC ──▶ Same URL, app evolves in place
                   ◀── ...

一个 URL,一段对话。Agent 不会每轮都生成新页面,而是持续完善现有应用。用户保留自己的上下文,Agent 保留自己的状态。

**两个通道,一个循环:**每次响应要么是 UI 更新(应用不断演进),要么是聊天回复(文本气泡)。用户可以点击应用中的按钮,也可以在聊天中输入,两种操作都会通过同一个回调返回给 Agent。

何时使用 SaC

SaC 适用于探索和交互比最终答案更重要的任务。

**适用场景:**旅行规划、数据分析仪表板、比价购物、项目规划、研究、财务审查、决策辅助、内部工具

**不适用场景:**简单问答、一次性自动化(“设置闹钟”)、纯文本对话

自定义

每一层都可插拔:

from sac import SaC, FileStore

sac = SaC(
    llm=YourLLMProvider(...),       # any class implementing LLMProvider
    search=YourSearchProvider(...), # any class implementing SearchProvider
    store=FileStore(".sac"),
)

提示词位于 src/sac/runtime/prompts/, 默认设计系统位于 src/sac/renderer/design-systems/default/。

架构

src/sac/
├── sac.py / conversation.py    Entry + Conversation primitive
├── runtime/                    Generate + Evolve pipeline, prompts, providers
├── server/
│   ├── http/                   FastAPI + SSE streaming + viewer
│   └── mcp/                    MCP stdio server (Claude Code integration)
└── renderer/                   iframe sandbox + design system

完整架构 →

项目状态

v0.1.2 — alpha 版。核心协议(生成 → 演进 → 回调循环)已稳定,并已在 sac.dynsoft.ai 投入生产使用。SDK 接口正持续打磨,目标是推出 v1.0。

参与贡献

欢迎提交问题和 PR。目前最有价值的贡献方向:

本地开发:pip install -e .

许可证

Apache-2.0

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。