Skip to content

仓库结构 ​

本页说明仓库里每个目录负责什么,以及服务器领域模块、Web 功能目录和 daemon 模块的分工。

顶层目录 ​

目录职责
apps/webWeb 客户端(React + Vite)。src/ui/ 是设计系统组件,src/features/<领域>/ 按领域组织页面与组件,src/app/ 是应用外壳
apps/server服务器(Fastify + Drizzle + PostgreSQL)。src/modules/<领域>/ 按领域组织路由与服务;src/db/schema.ts 是唯一的表定义,迁移文件在 drizzle/;src/daemon/ 是 daemon 的 WebSocket 网关,src/realtime/ 是推给浏览器的实时通道
apps/desktop桌面端「共工空间」(Tauri)。src/ 是 React 界面,src-tauri/ 是 Rust 壳,直接依赖 crates/gonggong 在进程内运行 daemon
crates/gonggong成员机器上的 daemon 与 gg 命令行(二进制名 gg),集成测试在 tests/
packages/protocol全部线上契约(zod):Web ⇄ 服务器接口、daemon ⇄ 服务器消息、预览隧道帧、内置 MCP 工具。fixtures/*.json 是 daemon 协议的共享样例,TS 与 Rust 两边都要能往返;cases/ 是其他跨语言共享用例
tools/mock-agent可脚本化的 ACP Agent,daemon 测试与部分端到端测试用它代替真实 Agent,按提示词决定行为(如 mock:echo、mock:slow、mock:crash)
tools/mcp-echo最小的 stdio MCP 服务(只有一个 echo 工具),端到端测试用来验证 MCP 注入
e2ePlaywright 端到端测试:真实服务器 + Web + daemon + Agent
scripts开发与运维脚本:pg.sh(项目内 PostgreSQL)、dev-cert.sh(自签开发证书)、backup.sh / restore.sh、release.sh 等
website本帮助手册(VitePress)
docs需求与设计文档,作为背景参考;与代码冲突时以代码为准

服务器领域模块 ​

位于 apps/server/src/modules/,每个目录一般包含 routes.ts(HTTP/WS 路由)和 service.ts(业务逻辑)。

模块职责
admin管理后台:系统参数(params.ts)、审计记录查询
agent-tools内置 MCP 中由服务器应答的工具(读聊天记录、群信息、运行记录等),daemon 以正在进行的运行为凭据转发调用
approvals权限审批:Agent 越权请求的创建、批准、拒绝与作废
attachments消息附件的上传、存储与下载
auth登录、会话、注册,以及首次启动时创建 admin(bootstrap.ts)
botsBot 的增删改、所在机器绑定、权限档位与 Agent 配置
candidates输入框 @ 候选:向 Bot 的 daemon 取工作区文件列表,慢或离线时用缓存兜底
commands群里的指令(/cd、停止、系统指令、Agent 命令)解析与执行
git-accounts成员的 Git 托管平台账号(令牌),用于仓库访问
groups群与私聊:成员、Bot、设置、仓库、标题
live预览的实时画面(LiveKit):观看、控制与 gg-cast 状态
machines机器的绑定、登出、详情、网络测量,以及经 daemon 实时读写的 Agent 工具
mcp管理员配置的全局 MCP 服务,建会话时注入(名称 gonggong 保留给内置服务)
messages消息发送、引用、撤回、运行中追加
notifications通知中心与 Web Push 推送
previews预览:隧道、网关代理、托管服务、公开分享链接
providers机器的模型供应商:只实时转发给 daemon,不写数据库
questionsBot 向群成员提问的卡片与回答
reactions消息表情回应
releases客户端发布:上传 daemon 构建,供 daemon 自升级下载
repos团队仓库历史与仓库可访问性探测
runs运行的核心:触发、调度、接收 daemon 上报、脱敏、停止、对账与保留期清理
search全局搜索(消息、改动过的文件)
usage用量统计
users用户资料卡片、停用
workspaces每个(群,Bot)的工作区:准备、/cd、文件浏览、diff 与状态

Web 功能目录 ​

位于 apps/web/src/features/。

目录内容
admin管理后台布局与各页(账号、群、机器、系统参数、客户端发布、审计)
attachments输入框附件、消息附件展示与查看器
auth登录、注册、修改密码、头像菜单
bots新建 Bot、Bot 设置、Agent 配置、Bot 私聊页、性格角色头像、后台 Bot 页
chat群消息主视图:消息时间线、输入框与候选、Git 条、上下文占用、新建群
config管理后台 · 配置中心
diffdiff 面板
files文件查看器
groups群信息、群公告、群设置
machines绑定新机器、机器详情、Agent 工具、供应商编辑与导入、解绑
notifications通知中心与浏览器推送
previews预览卡片、实时画面、分享链接、后台公开链接页
reactions表情回应
repos仓库选择与仓库访问检查
runs运行卡片相关:过程面板、审批、提问、打断与追加
search搜索浮层
settings个人设置
usage用量页
users用户卡片(悬停资料)
workbench右侧工作台的标签页(运行、diff、文件、网页、小程序、实时画面)
workspaces工作区与目录选择

daemon 主要模块 ​

位于 crates/gonggong/src/,main.rs 是 gg 命令行入口,lib.rs 汇总模块供桌面端复用。

模块职责
daemon.rsdaemon 整体句柄(gg run 与桌面端共用):单实例锁、服务与引擎、吊销清理、实时状态
service.rs与服务器的 WebSocket 连接、收发与按字节限额的发送缓冲
engine.rs执行服务器下发的运行;每个(群,Bot)一个 ACP 适配器进程,负责安装固定版本的适配器
session.rs单个(群,Bot)会话:适配器进程、ACP 会话与轮次
turn.rs每轮的纯逻辑:拼提示词、ACP 更新到运行事件的映射、权限档位策略
permission.rsmacOS 屏幕录制、辅助功能权限检测(预览用)
protocol.rs与 packages/protocol 对应的线上类型
ask.rs内置 gonggong MCP 服务(本机回环、每会话独立 URL):向群成员提问、转发服务器工具、应答 daemon 工具
mcp_call.rs解析 ACP 更新里的 MCP 工具调用(Claude 与 Codex 格式不同)
agents.rs检测本机已装的 Agent CLI 及版本
tools.rs托管安装 Node.js、Claude Code、Codex(不用 sudo、不动全局 npm)
manage.rs服务器发来的 Agent 工具、供应商、CC Switch 请求的应答
providers.rs本机模型供应商存储(providers.json,外发一律打码)
provider_cli.rsgg provider 子命令
inject.rs把运行使用的供应商注入适配器进程(密钥不进命令行参数和日志)
ccswitch.rs只读导入本机 CC Switch 的供应商
local.rs本机设置(local.json):Agent CLI 路径、命令审批规则、模型目录
configure.rsgg agents、gg config 子命令
config.rs本地状态根目录(~/.gonggong,可用 GONGGONG_HOME 覆盖)与绑定信息
bind.rs上报给服务器的本机信息与机器标识
bots.rsgg bots:列出绑定在本机的 Bot
workspace.rs每个(群,Bot)的工作区:托管克隆、/cd 绑定、目录选择
git.rs工作区 git 操作(调用本机 git,沿用本机凭据)
repo.rs远程仓库标识与访问探测(ssh ⇄ https 回退)
files.rs@ 文件候选
explorer.rs工作区只读文件浏览与路径校验
attachments.rs附件落盘到工作区 .gonggong/attachments/
tunnel.rs预览隧道二进制帧与转发
previews.rs本机预览与托管服务列表(桌面端用)
hosted.rs托管服务(如开发服务器),由 daemon 持有进程,活得比单轮更久
static_site.rs把工作区目录作为静态站点在回环地址上提供
snapshot.rs用本机 Chrome 系浏览器渲染预览首屏截图
cast.rs实时画面:按需启动 gg-cast 把窗口推到 LiveKit
wechatide.rs微信开发者工具:打开小程序项目并截模拟器画面
tls.rs连接服务器的 HTTP(S)/WS(S):接受任何服务器证书(不固定指纹),http 可连任意地址
net.rs测量到服务器的延迟与带宽
upgrade.rs自升级:下载新版本、校验 sha256、替换自身并重启
revoke.rs机器被吊销后清理托管工作区与令牌
diag.rsgg doctor 自检与脱敏诊断包
logs.rsdaemon 日志(按天滚动 + 内存环形缓冲)
status.rs供界面读取的实时状态:连接、心跳、延迟、正在执行的运行
lock.rs每个本地目录只允许一个 daemon(文件锁)
coalesce.rs相同键的并发请求合并为一次计算

相关页面 ​

基于 Apache License 2.0 开源