diff --git a/agent-studio-mini/BERYL-RELEASE-20260909.md b/agent-studio-mini/BERYL-RELEASE-20260909.md new file mode 100644 index 0000000..c022133 --- /dev/null +++ b/agent-studio-mini/BERYL-RELEASE-20260909.md @@ -0,0 +1,19 @@ +# Beryl Agent 完整源码包 · 2026-09-09 + +最新版本位于同目录 `beryl-agent-20260909.zip.part00` 到 `.part06`,共 7 个分包。因网页单文件限制 10 MB,将完整 ZIP 分块保存。这是完整本地源码快照,解压后包含 `agent-studio-mini/`;此提交不覆盖仓库中旧的展开源码。 + +包含 108 个文件:前后端、Harness、Skills、PPT 模板、测试、部署配置、SW Ads 全 TikTok 账户预警。预警使用各 Campaign 实际目标 ROI,支持账户筛选、独立失败提示、设置与结果持久化、去重和手动处理标记;不会执行广告修改。 + +## 启动 + +1. 下载全部 7 个分包和 `restore-beryl-20260909.mjs` 到同一目录,运行 `node restore-beryl-20260909.mjs`,脚本会校验完整性并生成 `beryl-agent-20260909.zip`。解压到新的目录,不要覆盖正在运行的实例。 +2. 使用 Node.js 22 与 pnpm,进入解压后的 `agent-studio-mini`,运行 `pnpm install --frozen-lockfile`。 +3. 复制 `.env.example` 为 `.env`,自行填写模型密钥与 SW Ads Token。 +4. 运行 `pnpm dev`,访问 `http://localhost:5173/`。 +5. 顶部「SW Ads 预警」可检查全部授权 TikTok 账户;自动检查默认关闭,需要勾选保存且保持后端运行。 + +已通过项目测试、类型检查、lint 与构建,以及真实多账户接口检查。Docker 配置已包含,但本机未运行 Docker 验证,不能宣称已启用隔离。仍是本机单进程应用,没有生产级多租户鉴权;不要直接公开服务。 + +包内不包含 `.env`、真实账户数据、会话/预警状态、node_modules 或构建缓存。新机器需要重新配置凭据与依赖。PPT/视频等外部能力的额外运行依赖请参见包内 docs。 + +SHA-256:`7ccd1bed92da17cc120efd5082659c373a6cc2be540c60fcaf9d8219064fdb39` diff --git a/agent-studio-mini/beryl-agent-20260909.zip.part05 b/agent-studio-mini/beryl-agent-20260909.zip.part05 new file mode 100644 index 0000000..f20925f Binary files /dev/null and b/agent-studio-mini/beryl-agent-20260909.zip.part05 differ diff --git a/agent-studio-mini/beryl-agent-20260909.zip.part06 b/agent-studio-mini/beryl-agent-20260909.zip.part06 new file mode 100644 index 0000000..01147d2 Binary files /dev/null and b/agent-studio-mini/beryl-agent-20260909.zip.part06 differ diff --git a/agent-studio-mini/restore-beryl-20260909.mjs b/agent-studio-mini/restore-beryl-20260909.mjs new file mode 100644 index 0000000..2913c1f --- /dev/null +++ b/agent-studio-mini/restore-beryl-20260909.mjs @@ -0,0 +1,9 @@ +import {readFile,writeFile} from 'node:fs/promises'; +import {createHash} from 'node:crypto'; +const buffers=[]; +for(let i=0;i<7;i++)buffers.push(await readFile(new URL(`beryl-agent-20260909.zip.part${String(i).padStart(2,'0')}`,import.meta.url))); +const zip=Buffer.concat(buffers); +const expected='7ccd1bed92da17cc120efd5082659c373a6cc2be540c60fcaf9d8219064fdb39'; +if(createHash('sha256').update(zip).digest('hex')!==expected)throw new Error('Checksum mismatch. Download all seven parts again.'); +await writeFile(new URL('beryl-agent-20260909.zip',import.meta.url),zip,{flag:'wx'}); +console.log('Verified: beryl-agent-20260909.zip. Extract into a new directory.');