Downcity

Downcity

创造 Agent 居住、工作与协作的世界。

Downcity 是一套开源 Kit:用 Agent Harness 运行 Agent,再用 City、Federation、SDK 与 UI 等 Agent Productization Kits,把 Agent 变成可交付、可运营、可扩展的产品。

一个 Agent 生态:Agent 居住在不同的产品 City 内,多座 City 通过 Federation 共享能力。

选择你想从哪一层开始。

agent.ts向下滚动执行
tsx01 / 07
01import { Agent, Workspace } from "@downcity/agent";02import { createOpenAI } from "@ai-sdk/openai";03 04const agent = new Agent({05  id: "assistant",06  workspace: new Workspace({ path: process.cwd() }),07  model: createOpenAI().responses("gpt-5"),08});09 10const session = await agent.sessions.create();11const turn = await session.prompt({ query: "Start working" });12const result = await turn.finished;13console.log(result.text);14 15await agent.dispose();
运行时
workspace./project
agentgpt-5
sessioncontext
turnquery
resulttext
下一轮从这里继续

架构

产品运行在用户的环境里,共享能力来自 Federation。

Creator 把 Agent 的角色、工具、技能和产品界面组织成一座 City。City 在用户的电脑或服务器上运行,并保存会话、任务和工作产物;当 Agent 需要模型、账号、用量或其他共享服务时,再连接 Federation。

Federation模型 · 服务 · 鉴权 · 用量Creator用户City用户的运行环境City 在用户环境中运行,需要共享能力时连接 Federation。
Creator 设计产品与 Agent。City 在用户环境中运行并保存工作数据,需要模型、鉴权、服务路由或用量管理时连接 Federation。

功能特性

从 Agent 运行时 到产品化交付。

按你的场景组合这些 Kit:先给 Agent 一个可靠的运行时,再补上产品边界、共享服务与用户界面,让它真正成为可以交付和持续运营的产品。

01

定义 Agent 的工作空间

为 Agent 指定文件、工具与权限边界,让它知道在哪里工作、可以执行什么,以及产物应该保存在哪里。

02

保持工作的连续性

Session 保存对话、工具调用、任务状态与执行结果,让 Agent 可以沿着已有上下文继续工作。

03

赋予 Agent 行动能力

通过 Tool、Skill 与 Plugin,让 Agent 能够搜索、编写、执行、记录,并连接产品需要的外部服务。

04

让工作持续发生

使用任务、记忆与调度能力,让 Agent 在一次对话结束后继续跟进、检查并完成长期工作。

05

组织多个 Agent 分工

在一座 City 中配置不同角色的 Agent,共享产品边界与服务,分别承担创建、分析、审查或运营任务。

06

连接界面并保持控制

通过 CLI、Console、SDK 或产品界面与 Agent 交互,同时查看状态、审批操作并管理运行过程。

产品形态

为一种工作,建造一座 City。

围绕明确的工作场景组织 Agent、能力与产品界面,让每座 City 成为可以持续运行的产品。

01

软件创造 City

让不同 Agent 承担开发、审查、测试与发布工作,共同推进软件从想法走向交付。

02

研究与知识 City

让 Agent 持续收集信息、分析材料、组织知识,并把研究转化为可用成果。

03

团队运营 City

让 Agent 负责监控、支持、任务协调与周期性工作,帮助团队保持稳定运转。

04

个人工作 City

围绕个人的文件、工具与日常流程组织 Agent,并由用户掌握数据和运行控制权。

创建一座 City,让 Agent 开始工作。

安装 Downcity,创建 Agent 产品并启动它的运行环境。

创建并启动
npm install -g downcity

downcity agent create ./my-city
downcity federation use
downcity start
downcity agent start