Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 0 additions & 17 deletions .claude/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,23 +19,6 @@
"./frontend/e2e/wails-server.mjs"
],
"port": 34123
},
{
"name": "oneagent-site",
"runtimeExecutable": "pnpm",
"runtimeArgs": [
"--dir",
"site",
"run",
"dev",
"--port",
"4322"
],
"env": {
"SITE_URL": "http://localhost:4322"
},
"port": 4322,
"url": "http://localhost:4322"
}
]
}
16 changes: 8 additions & 8 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@ output/
# Go CLI 与桌面壳的本地构建产物;scripts/install.* 只转发,不构建。
bin/

# 公开站点:构建缓存与测试产物
site/node_modules/
site/dist/
site/.astro/
site/coverage/
site/test-results/
site/playwright-report/
# 公开站已迁出到 MaimoryLab/OneAgent-site。这一条留着是因为迁出前克隆过本仓库的
# 机器上,site/ 仍然躺在工作区里:不忽略它,git status 会把一整个 Astro 项目
# 报成未跟踪文件。
site/

.task
.env
.env

# 本机代码索引。是否建立索引由每个开发者自己决定,重建只需 `codegraph index .`
.codegraph/
16 changes: 15 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,13 @@
- `internal/config`:TOML/JSON/JSONC 适配器、配置发现和 golden fixtures。
- `internal/install`:默认最新、可选精确版本的 Agent 包安装,registry 选择、Node.js/uv 运行时引导(下载、校验、解压、写入 PATH)和 Aider Python 管理边界。
- `internal/profile`、`internal/securefs`:profile、secret、备份、权限和原子写。
- `internal/binding`:Wails 暴露给前端的五个 service,是 React 与 Go 的唯一接缝。改这里的 DTO 必须重新生成 `frontend/bindings` 并同步 `frontend/src/backend/wails.ts`。
- `cmd/oneagent`
- `cmd/oneagent-release`:原生 Wails/Go/React 发布包、notice、manifest 和 SHA-256。
- `cmd/oneagent-rc`、`cmd/oneagent-provider-smoke`:发行候选的真实 Agent/Provider 检查。
- `frontend/bindings`:Wails 生成物,禁止手工编辑。
- `site`:独立 Astro 公开站。

公开站已迁出到 [MaimoryLab/OneAgent-site](https://github.com/MaimoryLab/OneAgent-site),本仓库不再有 `site/`。它把 `agents.lock.json` 和 `providers.lock.json` vendor 到自己的 `data/` 下,从发行 tag 而不是本仓库 `main` 刷新——改这两个文件不会自动反映到站上,也不应该:站描述的是已发布版本支持什么。

`providers.lock.json` 是内置 Provider 端点、fallback model 和公开站商业披露字段的真源;用户 Provider 与内置覆盖保存在 `~/.oneagent/providers.json`。

Expand Down Expand Up @@ -49,6 +51,18 @@ go run ./cmd/oneagent-provider-smoke --provider all --timeout 30s

普通测试、Wails 构建、站点构建和发布工具不需要 Python。安装 Aider 需要 Python 3.12,但不再要求本机预装:uv 自己解析解释器,本机有匹配版本就复用,否则下载一份托管 CPython 到 `~/.oneagent/runtimes/python`。Python 仍然不进发行包。

## CodeGraph

本仓库已建索引(`.codegraph/`,不提交,重建用 `codegraph index .`,约 0.5s)。定位或理解代码时**先用它,别 grep**:

```bash
codegraph explore "binding Service Install"
```

对这个仓库最有用的一点:它把 Go 与前端连起来。查 `AgentService` 会同时列出 `internal/binding/services.go`、生成的 `frontend/bindings/.../index.ts` 和手写的 `frontend/src/backend/wails.ts`——也就是改一个后端 DTO 需要一起动的三处。`frontend/src/types/api.ts` 里的类型是手写的而非从 bindings 导入,所以后端 DTO 与它是**两份真源**,索引是发现漏改的最快方式。

**一个已知局限**:blast radius 的「⚠️ no covering tests found」只看**直接**调用者,被上层函数内部调用的实现会被误标成无测试。不要照着这个提示补已经存在的测试,先确认调用链。

## 代码边界

- `agents.lock.json` 是 Agent 元数据唯一真源,但不保存 Agent 版本或包哈希。新增自动配置 Agent 时先补包名和元数据,再添加对应 config adapter 和 Go 测试。
Expand Down
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,21 @@ Status / Provider / Agent / Profile services
|
catalog / provider / install / config / profile / securefs

Pure Go CLI --------------------^ Astro site ---- release metadata
Pure Go CLI --------------------^
```

公开站不在这张图里,也不在这个仓库里:它已迁出到
[MaimoryLab/OneAgent-site](https://github.com/MaimoryLab/OneAgent-site)。它从
GitHub Releases API 读取下载信息,并把 `agents.lock.json`、`providers.lock.json`
vendor 到自己仓库,从发行 tag 刷新——所以改本仓库这两个文件不会自动改变站上内容。

- `cmd/oneagent-desktop`:Wails 桌面入口。
- `cmd/oneagent`:纯 Go headless CLI。
- `cmd/oneagent-release`:构建、notice、manifest、SHA-256 和发行包检查。
- `cmd/oneagent-rc`:真实 Agent 安装和无密钥配置采用检查。
- `cmd/oneagent-provider-smoke`:PPIO/Novita 三协议 RC smoke。
- `internal/`:桌面、CLI 和 RC 工具共用的 Go 核心。
- `frontend/`:React 应用;发行包只携带构建后的静态资源。
- `site/`:独立 Astro 公开站,不进入桌面包体。
- `agents.lock.json`:Agent 包名、来源、配置适配器和许可证的唯一清单;不固定 Agent 版本或包哈希。
- `providers.lock.json`:内置 Provider 端点、fallback probe model 和公开站披露字段清单;桌面端用户 Provider 保存在本机 `~/.oneagent/providers.json`。

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# ADR-006:独立公开站与 GitHub Release 事实源

- 状态:Accepted(2026-07-31 修订)
- 状态:Partially Superseded(2026-08-04)——决策 1 中「在同一仓库维护」已被推翻,站点
迁出到 [MaimoryLab/OneAgent-site](https://github.com/MaimoryLab/OneAgent-site);
同一决策中「不把营销路由加入本地 Launcher」以及决策 2–5 仍然有效。决策 4 的读取路径
变为站点仓库 vendor 的 `data/` 副本,从发行 tag 刷新。当前操作指南见
[public-site-operations.md](../public-site-operations.md),本文件只作背景保留。
- 日期:2026-07-28

## 背景
Expand Down
75 changes: 28 additions & 47 deletions docs/public-site-operations.md
Original file line number Diff line number Diff line change
@@ -1,58 +1,39 @@
# OneAgent 公开站运营与发布手册

状态:已实施。
状态:已迁出。站点自己的构建命令、环境变量和部署步骤见
[MaimoryLab/OneAgent-site](https://github.com/MaimoryLab/OneAgent-site) 的 README。

## 架构边界
公开站曾经是本仓库的 `site/` 目录,现在是独立仓库。本文件只保留仍然约束本仓库的部分,
不再重复站点侧的操作步骤——两处各写一份必然慢慢分叉。

- `frontend/` 是随桌面 App 打包的 React 客户端。
- `site/` 是独立构建和部署的 Astro 静态站,不进入 App 包体。
- `.github/workflows/technical-preview.yml` 只构建 Go/Wails App 资产并创建 Draft GitHub Release。
- `.github/workflows/site.yml` 只测试、构建和部署 GitHub Pages。
本文原先描述的 `.github/workflows/technical-preview.yml` 和 `.github/workflows/site.yml`
都已不存在(本仓库当前只有 `build-artifacts.yml`),按那两个工作流写的发布顺序因此
已经失效,不要照着执行。

两个工作流没有 artifact 或 job 依赖。发布者人工审核并发布 Draft Release 后,`release.published` 事件会触发站点重建。
## 仍然由本仓库承担的部分

## 版本事实源
**GitHub Release 是公开版本与资产的事实源。** 站点在构建时调用 GitHub Releases API,
只读取已发布、非 Draft 的 Release;页面上的版本标签、发布日期、下载地址、文件大小和
SHA-256 都来自那里,站点不读取本地 `release/` 目录,不复制下载资产,也不维护版本回退值。
所以本仓库这边的义务是:Release 一旦发布就是公开事实,资产、校验和、签名状态必须在发布
**之前**检查完毕。

公开站在构建时调用 GitHub Releases API,只读取已发布、非 Draft 的 Release。页面上的版本标签、发布日期、下载地址、文件大小和可用的 SHA-256 digest 均来自该 API;没有 Release 时页面明确显示尚未发布。
**`providers.lock.json` 是商业披露字段的真源。** Provider 的 `relationship`、
`disclosure`、`referral_url` 在这里维护,且不能影响 Agent rank、兼容性结论、默认选择
或连接测试。这条边界属于本仓库,站点只把结果展示出来。

站点不读取 App 的本地 `release/` 目录,不复制下载资产,也不维护版本回退值。Agent 目录直接读取 `agents.lock.json`,Provider 目录直接读取根目录的 `providers.lock.json`;运行时端点和公开披露字段由同一份清单管理。
**改 lock 文件不会自动改变站上内容。** 站点把 `agents.lock.json` 和
`providers.lock.json` vendor 到它自己的 `data/` 目录,从发行 tag 刷新而不是跟随本仓库
`main`。这是刻意的:站描述的是已发布版本支持什么,跟着 `main` 会把已合并但未发布的
Agent 宣传成可用。新增 Agent 或调整披露字段后,需要到站点仓库按其 `data/README.md`
刷新一次。

私有仓库构建需要提供具有 `contents:read` 权限的 `GITHUB_TOKEN`。独立 Pages 工作流使用当前任务的 GitHub token;未提供 token 的本地构建若无法读取私有仓库,会渲染“尚无已发布版本”。
**Stable 门禁不变。** 各平台的签名、公证和原生 cleanroom 门禁仍是 App 发布流程的要求,
GitHub Release 不替代产物验证。

## 本地验证
## 历史背景

```bash
cd site
pnpm install --frozen-lockfile
pnpm test
pnpm run build
pnpm exec playwright install chromium
pnpm run test:e2e
```

模拟 GitHub Pages 子路径部署:

```bash
SITE_URL=https://example.com BASE_PATH=/OneAgent pnpm run build
```

该子路径产物的绝对 `<base href>` 只适用于配置的 origin。恢复本地预览时重新运行普通 `pnpm run build`。

## 发布顺序

1. 运行 `Technical Preview Packages`,构建并验证各平台 App 资产。
2. 工作流以新 tag 创建不可变 Draft prerelease;已有 tag 会直接失败,不覆盖资产。
3. 人工检查资产、校验和、签名状态和发行说明后发布 Release。
4. `Public Site` 工作流自动从默认分支构建站点,从该 Release 读取版本与下载信息并部署 Pages。
5. 仅修改站点、Agent 目录或 Provider 披露时,合入 `main` 即可独立部署,不触发 App 构建。

GitHub repository variables:

- `ONEAGENT_PUBLIC_SUPPORT_URL`:公开支持入口;为空时不展示虚构地址。
- `ONEAGENT_PUBLIC_BUSINESS_EMAIL`:公开商务邮箱;为空时不展示虚构邮箱。

## Provider 与稳定版边界

Provider 商业数据保存在 `providers.lock.json`,不能影响 Agent rank、兼容性结论、默认选择或连接测试。

Stable 仍需按平台满足签名、公证和原生 cleanroom 门禁。GitHub Release 是公开版本与资产的事实源,不替代 App 发布流程中的产物验证。
设计决策记录在
[ADR-006](decisions/ADR-006-public-site-and-generated-release-index.md)。该 ADR 中
「在同一仓库维护 `site/`」的部分已被本次拆分取代;不把营销路由加入本地 Launcher 的
结论仍然有效。
4 changes: 4 additions & 0 deletions docs/wails-v3-migration-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ cmd/oneagent-provider-smoke Provider protocol RC checks
site/ independent Astro release site
```

(`site/` 于 2026-08-04 迁出到
[MaimoryLab/OneAgent-site](https://github.com/MaimoryLab/OneAgent-site)。上面的布局是本文
验收当时的事实,保留原样。)

生产桌面构建不使用 `server` tag,不监听业务端口。浏览器 E2E 才使用 Wails server/e2e runner。

## 3. 已完成的交付
Expand Down
28 changes: 0 additions & 28 deletions site/astro.config.mjs

This file was deleted.

Loading