|
|
@@ -0,0 +1,580 @@
|
|
|
+# BuildingSystemAgent 业务与技术逻辑全链路分析
|
|
|
+
|
|
|
+生成时间:2026-05-29
|
|
|
+分析对象:`/Users/samlee/Documents/works/BuildingSystemAgent`
|
|
|
+重点边界:以 `liuzhiheng <liuzhiheng@stuuudy.com>` 与 `linzihan <zihan@ZihanMacBook-Pro-14.local>` 在当前 workspace 中提交的构建 Agent 逻辑为主体。
|
|
|
+证据来源:Git 作者提交、项目代码、prompt、MySQL `open_aigc_pattern` 只读查询、PostgreSQL `open_aigc.public` 只读查询、GUI 页面 `https://pattern.aiddit.com/build/topic`、多个 subagent 交叉核验。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 第一章:纠偏结论
|
|
|
+
|
|
|
+### 1.1 本项目主体到底是什么
|
|
|
+
|
|
|
+本项目在当前 workspace 里的业务核心,不是聚类、归一、Pattern Mining 本身,而是一个“构建 Agent 工作台”:
|
|
|
+
|
|
|
+1. 用户输入账号需求、选题方向、构建策略、模型配置。
|
|
|
+2. 选题构建 Agent 读取上游 pattern、帖子、元素、外部搜索等证据,构造 `CompositionItem`。
|
|
|
+3. Agent 把 `CompositionItem` 组合成灵感点、目的点、关键点和最终选题。
|
|
|
+4. 脚本构建 Agent 读取选题结果和参考脚本,按“之间展开 / 段间展开 / 段内展开 / 之间+段间展开”生成创作表。
|
|
|
+5. 系统把选题构建、脚本构建、工具调用、日志、评估、决策 trace 写入 `open_aigc_pattern`,并通过 `/build/topic` GUI 展示。
|
|
|
+
|
|
|
+换句话说,BuildingSystemAgent 的核心价值是:把已经完成的内容解构、元素归一、pattern 证据,变成一个可以运行、可追踪、可评估、可复用的选题与脚本生产系统。
|
|
|
+
|
|
|
+### 1.2 旧边界错误
|
|
|
+
|
|
|
+上一个报告的核心错误,是把前置流程写成了本项目主体。这里重新定边界:
|
|
|
+
|
|
|
+| 模块 / 数据 | 正确位置 | 在本报告中的角色 |
|
|
|
+|---|---|---|
|
|
|
+| `pattern_global_v2` | 上游 pattern mining / pattern API 相关能力 | 作为输入证据和 API 依赖说明 |
|
|
|
+| 聚类、归一、元素库、分类树 | 上游数据工程已完成流程 | 作为元素和 pattern 的来源背景 |
|
|
|
+| `open_aigc.public` | 上游事实库与 pattern 事实库 | 只作为前置输入规模和 `#401/#581` 漂移证据 |
|
|
|
+| Excel / 前置文档 | 上游分析资料 | 只用于说明输入口径,不作为主体工程 |
|
|
|
+| `open_aigc_pattern` | 本项目 topic/script build 运行产物主库 | 本报告的主要数据库证据 |
|
|
|
+| `/build/topic` GUI | 本项目构建工作台展示 | 本报告的运行结果展示证据 |
|
|
|
+
|
|
|
+前置流程不是主体。本项目主体是 `patter_from_global_and_build` 目录里由选题构建 Agent、脚本构建 Agent、工具、prompt、数据库模型、FastAPI 路由和前端页面组成的构建应用层。
|
|
|
+
|
|
|
+### 1.3 作者贡献定界
|
|
|
+
|
|
|
+Git 作者统计显示:
|
|
|
+
|
|
|
+| 作者 | 提交数 | 在本项目构建逻辑里的定位 |
|
|
|
+|---|---:|---|
|
|
|
+| `liuzhiheng <liuzhiheng@stuuudy.com>` | 245 | 系统工程主实现者:Agent 执行、工具、数据库、API、GUI、日志、模型配置、外部搜索、AigcAgent / ClaudeCodeAgent 落地 |
|
|
|
+| `linzihan <zihan@ZihanMacBook-Pro-14.local>` | 37 | 业务方法论核心贡献者:动态横纵推导、组词规则、列依赖、脚本展开策略、动态评估、目标指引和 1-5 分评分体系 |
|
|
|
+
|
|
|
+因此本报告按“作者贡献 -> 业务机制 -> 技术实现”组织,而不是按目录粗暴归类。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 第二章:业务逻辑
|
|
|
+
|
|
|
+### 2.1 这个系统要解决的问题
|
|
|
+
|
|
|
+上游系统已经把小红书/社媒帖子拆成了结构化元素、分类、共现关系、pattern、sequence。BuildingSystemAgent 要解决的是下一步:如何把这些数据证据变成可执行的内容生产结果。
|
|
|
+
|
|
|
+它不是让模型凭空写一个标题或脚本,而是要求 Agent:
|
|
|
+
|
|
|
+1. 从真实数据里找可用元素和组合规律。
|
|
|
+2. 把元素封装成可追踪的 `CompositionItem`。
|
|
|
+3. 记录每个 item 的来源、推导关系、探索轨迹。
|
|
|
+4. 在评估反馈下迭代灵感点、目的点、关键点。
|
|
|
+5. 把最终选题继续展开成脚本段落、脚本元素、段落-元素关系和段落自然语言列。
|
|
|
+6. 把过程完整落库,供 GUI 查看、重试、复用和审计。
|
|
|
+
|
|
|
+业务上,它相当于把“数据分析结果”变成“选题策划工作台”和“脚本创作工作台”。
|
|
|
+
|
|
|
+### 2.2 上游前置流程的位置
|
|
|
+
|
|
|
+前置完成的流程包括内容解构、聚类、归一、元素分类、pattern mining 等。它们提供:
|
|
|
+
|
|
|
+1. 原始帖子、选题点、脚本段落、脚本元素。
|
|
|
+2. 全局分类树、全局元素库、元素映射。
|
|
|
+3. itemset、sequence、group pattern、共现关系。
|
|
|
+4. `pattern_mining_execution` 执行批次,比如 GUI 当前大量构建记录仍使用的 `Exec #401`。
|
|
|
+
|
|
|
+但这些流程在本报告中只承担输入背景。BuildingSystemAgent 不重新挖 pattern,而是在构建阶段调用已有 pattern、帖子、元素、脚本数据。
|
|
|
+
|
|
|
+PostgreSQL 只读核验也支持这个边界:`open_aigc.public` 中 `post` 有 66,974 行、`global_element` 有 290,864 行、`pattern_itemset` 有 449,216 行;这些是上游事实和 pattern 规模,不是 topic/script build 的业务结果表。
|
|
|
+
|
|
|
+### 2.3 选题构建:从需求到 CompositionItem,再到选题
|
|
|
+
|
|
|
+选题构建的业务对象是 `CompositionItem`。代码在 `models.py` 里直接写明“选题构建 - 以 CompositionItem 为中心的 CRUD 模型”,并说明“Agent 过程 = CRUD CompositionItem”。这不是命名细节,而是选题构建的业务抽象:
|
|
|
+
|
|
|
+1. `CompositionItem` 代表选题里的一个组成部分,可以来自元素、分类、pattern、帖子、外部搜索或用户输入。
|
|
|
+2. 每个 item 有生命周期:创建、保留、更新、关联、丢弃。
|
|
|
+3. item 之间可以记录推导关系,形成因果链或组合链。
|
|
|
+4. item source 记录证据来源,避免最后选题无法解释。
|
|
|
+5. item exploration trace 记录探索轨迹,保留 Agent 如何从数据走到结论。
|
|
|
+
|
|
|
+选题构建的典型业务流程是:
|
|
|
+
|
|
|
+| 阶段 | 业务动作 | 生成物 |
|
|
|
+|---|---|---|
|
|
|
+| 需求解析 | 读取用户需求、账号名、选题方向、策略、模型配置 | `topic_build_record` |
|
|
|
+| 数据探索 | 调用 pattern 工具、帖子工具、元素/分类工具、外部搜索工具 | item source、tool log、search log |
|
|
|
+| 灵感构建 | 基于横向扩展和纵向推理找灵感元素 | 灵感类 `CompositionItem` |
|
|
|
+| 灵感评估 | 根据动态维度判断灵感是否满足方向 | `inspiration_evaluation_config`、评估反馈 |
|
|
|
+| 目的点/关键点构建 | 继续下钻元素,形成目的和关键点 | 目的/关键点 `CompositionItem`、`topic_build_point` |
|
|
|
+| 组词与选题定稿 | 只允许基于 element 级 item 组词,再生成最终结果 | `topic_build_topic.result` |
|
|
|
+| 审计与展示 | 保存日志、token、成本、状态、耗时 | `topic_build_log`、GUI 详情 |
|
|
|
+
|
|
|
+这里的关键不是“模型写了一个选题”,而是 Agent 通过可追踪 item,把数据证据转成结构化选题。
|
|
|
+
|
|
|
+### 2.4 脚本构建:从选题到结构化创作表
|
|
|
+
|
|
|
+脚本构建接在选题构建之后。输入不是自由文本标题,而是完整的选题详情:topic、composition items、points、relations、动态评估配置,以及可选的参考帖子/脚本。
|
|
|
+
|
|
|
+脚本构建的核心产物是“创作表”,包括:
|
|
|
+
|
|
|
+1. `script_build_record`:一次脚本构建任务。
|
|
|
+2. `script_build_paragraph`:段落行,含 `name`、`content_range`、`theme`、`form`、`function`、`feeling`、`description`、`full_description` 等列。
|
|
|
+3. `script_build_element`:脚本元素,区分实质/形式等维度。
|
|
|
+4. `script_build_paragraph_element`:段落与元素关系。
|
|
|
+5. `script_build_decision_trace`:每一步为什么这么构建、用了什么数据、影响了哪些对象。
|
|
|
+
|
|
|
+业务方法上,脚本构建不是一次性生成文章,而是按展开方法逐步填表:
|
|
|
+
|
|
|
+| 展开方法 | 业务含义 | 主要产物 |
|
|
|
+|---|---|---|
|
|
|
+| 之间展开 | 从选题表到创作表,先找到脚本元素,通常不直接产出自然语言段落列 | `script_build_element`、元素点列 |
|
|
|
+| 段间展开 | 规划段落结构、段落顺序、段落功能和内容范围 | `script_build_paragraph` |
|
|
|
+| 段内展开 | 在单个段落内部填充 theme/form/function/feeling/description/full_description | 段落多列内容 |
|
|
|
+| 之间+段间展开 | 一步从选题到分段结构,先写元素点列,再写自然语言列 | 段落骨架、元素点列、自然语言列 |
|
|
|
+
|
|
|
+prompt 明确规定:元素点列必须先于自然语言列写入;`theme_elements` 先于 `theme`,`form_elements` 先于 `form`,`function_elements` 先于 `function`,`feeling_elements` 先于 `feeling`。`full_description` 是二级自然语言列,依赖其他列综合生成。
|
|
|
+
|
|
|
+MySQL 只读核验显示,截至 2026-05-29 核验时,`script_build_id=269` 是成功状态,生成 4 个段落、10 个元素;其 `script_build_decision_trace` phase 为 `段内展开_columns`,决策摘要是批量补全所有段落的自然语言列和完整执行描述。这说明数据库里的真实运行记录与 prompt 中的脚本展开机制一致。
|
|
|
+
|
|
|
+### 2.5 linzihan 的业务方法论
|
|
|
+
|
|
|
+`linzihan` 的核心贡献主要在 prompt 层。不要因为它不是 Python 函数就低估它:对 Agent 系统来说,prompt 里的工作流约束、判断标准和字段依赖,就是业务逻辑。
|
|
|
+
|
|
|
+关键方法论包括:
|
|
|
+
|
|
|
+1. **动态横纵推导**
|
|
|
+ 灵感和目的/关键点不是简单搜索关键词。横向扩展用于发现更多方向,纵向推理用于从 category 继续下钻到具体 element。对应提交如 `598fe6b 多轮动态横纵推导`。
|
|
|
+
|
|
|
+2. **组词只用元素**
|
|
|
+ category 只能作为探索入口,不能直接进入词组结果。`topic_purpose_keypoint_build_agent.md` 规定“只使用 element 级 items 组词”,且词组里的每个实义词必须能追溯到参与组词 item 的 `name` 字段。对应提交如 `9f3273f 组词只用元素`、`26fed4e 两个评估修改:组词只用元素`。
|
|
|
+
|
|
|
+3. **禁止跨点类型混组**
|
|
|
+ 目的词组只能由目的点 item 组成,关键词组只能由关键点 item 组成,不能把目的点和关键点混进同一词组。这保证最终选题结构不是漂亮但失真的混搭句。
|
|
|
+
|
|
|
+4. **先推导点,再细化,再串联成句**
|
|
|
+ 脚本 prompt 要求先选择展开方法,再通过数据和元素点落库,最后把元素点串成自然语言列。这是防止模型直接写自然语言、跳过证据结构的关键约束。
|
|
|
+
|
|
|
+5. **列依赖规则**
|
|
|
+ `script_build_system.md` 中定义了 `theme` 依赖 `theme_elements`,`form` 依赖 `form_elements + theme + function`,`full_description` 依赖所有其他列。首次产出必须遵守依赖,完善迭代可以基于已有列做补充,但不能凭空重写。
|
|
|
+
|
|
|
+6. **动态维度评估与 1-5 分评分**
|
|
|
+ 选题主 Agent 在构建前为动态维度打 1-5 分,分数表达该维度对本次选题的重要程度,而不是当前结果质量分。灵感评估和脚本评估都读取这个配置,高分维度标准更严格。对应提交如 `716631c 动态维度评估`、`3be86d0 动态维度改成打分`、`a265718 脚本评估同步1-5分打分`。
|
|
|
+
|
|
|
+7. **评估只给目标和边界,不替主 Agent 写答案**
|
|
|
+ `script_build_eval_agent.md` 的评估结果会影响主 Agent 下一步动作,但评估 Agent 不应该输出具体工具参数、具体修复内容或自己编造的数据。对应提交如 `1cb13f9 评估维度大修改&目标指引推导`。
|
|
|
+
|
|
|
+### 2.6 liuzhiheng 的系统化实现
|
|
|
+
|
|
|
+`liuzhiheng` 的贡献是把上述业务方法论落成可运行系统。关键实现线包括:
|
|
|
+
|
|
|
+1. **Agent 拆分与运行框架**
|
|
|
+ `TopicBuildAigcAgent.py` 注册 `topic_build_main`、`topic_inspiration_builder`、`topic_purpose_keypoints_builder`、`topic_multi_path_recall` 等 preset,并通过 `AgentRunner`、`RunConfig`、`FileSystemTraceStore` 执行。选题构建 trace 写到 `.trace/topic_build/{build_id}`。
|
|
|
+
|
|
|
+2. **AigcAgent / ClaudeCodeAgent 双路径**
|
|
|
+ 选题和脚本都有 AigcAgent 运行方式,同时保留 ClaudeCodeAgent 路径。`ScriptClaudeCodeBuildAgent.py` 使用四层 prompt 架构:System Prompt、Workflow、strategy、task;工具定义统一来自 schema。
|
|
|
+
|
|
|
+3. **工具 schema 和工具日志**
|
|
|
+ topic/script 构建工具通过 JSON schema 和工具函数统一管理,包括 pattern 工具、外部搜索、参考脚本搜索、item CRUD、paragraph CRUD、evaluate、record_decision 等。
|
|
|
+
|
|
|
+4. **数据库模型和写入链路**
|
|
|
+ `models.py` 覆盖 topic build、script build、prompt、strategy、外部搜索日志等表;`pattern_server.py` 启动时调用 `pattern_service.ensure_tables()`,说明这些表是服务运行面的组成部分。
|
|
|
+
|
|
|
+5. **FastAPI 和 GUI 工作台**
|
|
|
+ `pattern_server.py` 提供 `/build` 到 `/build/topic` 的入口、topic build 和 script build 的创建、列表、详情、prefill、retry、delete、log、overview API。前端由 `static/js/build.js`、`topic-build-detail.js`、`script-build-detail.js` 承载。
|
|
|
+
|
|
|
+6. **模型、重试、日志、成本和可观测性**
|
|
|
+ 代码支持 OpenRouter / Claude / Gemini / Qwen 等模型映射,记录 token、cost、耗时、状态、错误、日志,并把构建历史显示在 GUI。
|
|
|
+
|
|
|
+关键提交线索包括:
|
|
|
+
|
|
|
+| 时间 | 提交 | 业务意义 |
|
|
|
+|---|---|---|
|
|
|
+| 2026-04-17 | `953040a 选题构建,子agent架构调整` | 选题构建从单 Agent 走向子 Agent 架构 |
|
|
|
+| 2026-04-20 | `5a9097c 选题tree、pattern数据工具日志记录`、`7c1a84f 选题tree、pattern数据工具切换到API` | pattern/树工具服务化和可观测 |
|
|
|
+| 2026-04-24 | `0b1d238 脚本构建工具定义,统一在schemas.json中` | 脚本工具 schema 化 |
|
|
|
+| 2026-04-28 | `e8078da 选题构建:多路召回/比较评估` | 多路召回成为选题证据机制 |
|
|
|
+| 2026-04-30 | `d217f93 脚本构建以目标指引迭代改造` | 评估目标驱动脚本迭代 |
|
|
|
+| 2026-05-07 | `75b9e35 脚本构建:增加 主题点、形式点、作用点、感受点 四列` | 创作表字段更贴合段内展开 |
|
|
|
+| 2026-05-09 | `9671266 脚本构建:新增 search_post_scripts_by_topic_name 工具` | 用选题名召回参考脚本 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 第三章:技术逻辑
|
|
|
+
|
|
|
+### 3.1 服务入口和页面/API
|
|
|
+
|
|
|
+核心服务入口在 `aiddit/pattern/patter_from_global_and_build/pattern_server.py`。
|
|
|
+
|
|
|
+关键路由:
|
|
|
+
|
|
|
+| 路由 | 作用 |
|
|
|
+|---|---|
|
|
|
+| `/build` | 旧入口,重定向到 `/build/topic` |
|
|
|
+| `/build/{section}` | 构建中心页面,承载选题构建和脚本构建列表 |
|
|
|
+| `/api/pattern/topic_builds` | 创建和查询选题构建 |
|
|
|
+| `/api/pattern/topic_builds/{build_id}` | 选题构建详情 |
|
|
|
+| `/api/pattern/topic_builds/{build_id}/prefill` | 从历史构建预填 |
|
|
|
+| `/api/pattern/topic_builds/{build_id}/retry` | 重试选题构建 |
|
|
|
+| `/api/pattern/topic_builds/{build_id}/log` | 查看选题构建日志 |
|
|
|
+| `/api/pattern/script_builds` | 创建和查询脚本构建 |
|
|
|
+| `/api/pattern/script_builds/{script_build_id}` | 脚本构建详情 |
|
|
|
+| `/api/pattern/script_builds/{script_build_id}/prefill` | 从历史脚本构建预填 |
|
|
|
+| `/api/pattern/script_builds/{script_build_id}/retry` | 重试脚本构建 |
|
|
|
+| `/api/pattern/script_builds/{script_build_id}/log` | 查看脚本构建日志 |
|
|
|
+| `/api/pattern/script_builds/overview/{topic_build_id}` | 选题下脚本构建概览 |
|
|
|
+
|
|
|
+GUI 验证结果:浏览器打开 `https://pattern.aiddit.com/build/topic` 后,页面标题为“构建中心”,同页出现“选题构建”“脚本构建”“Exec #401”“AigcAgent”“gemini-3-flash-preview”等内容,并异步加载构建历史。截至 2026-05-29 核验时,页面记录包括 topic build `1116`、`1115` 等。
|
|
|
+
|
|
|
+### 3.2 Agent 执行技术组件
|
|
|
+
|
|
|
+本项目有两套主要 Agent 执行形态:
|
|
|
+
|
|
|
+| 执行形态 | 文件 | 作用 |
|
|
|
+|---|---|---|
|
|
|
+| Topic AigcAgent | `TopicBuildAigcAgent.py` | 选题构建主运行链路,支持 subagent、trace、模型配置和 usage 汇总 |
|
|
|
+| Topic ClaudeCodeAgent | `TopicBuildClaudeCodeAgent.py` | Claude Code SDK / MCP 风格的选题构建链路 |
|
|
|
+| Script AigcAgent | `ScriptBuildAigcAgent.py` | 脚本构建主运行链路,控制工具调用、评估与 trace |
|
|
|
+| Script ClaudeCodeAgent | `ScriptClaudeCodeBuildAgent.py` | Claude Code SDK 风格脚本构建,四层 prompt 架构 |
|
|
|
+
|
|
|
+技术上使用:
|
|
|
+
|
|
|
+1. `AgentRunner` / `RunConfig`:执行主 Agent 和子 Agent。
|
|
|
+2. `ToolRegistry`:注册工具。
|
|
|
+3. `FileSystemTraceStore`:写本地 `.trace` 文件。
|
|
|
+4. OpenRouter 模型映射:兼容 Claude、Gemini、Qwen 等 UI 模型名。
|
|
|
+5. prompt/version:从数据库和本地 prompt 文件加载运行提示词。
|
|
|
+6. strategy/version:从数据库注入业务策略。
|
|
|
+7. tool schema JSON:统一工具名称、描述和参数约束。
|
|
|
+
|
|
|
+`.trace` 是 Agent runtime 执行轨迹,不等同于业务数据库。业务结果仍以 `open_aigc_pattern` 的 topic/script build 表为准。
|
|
|
+
|
|
|
+### 3.3 工具层:从证据获取到业务写表
|
|
|
+
|
|
|
+工具层分为 topic build 工具和 script build 工具。
|
|
|
+
|
|
|
+Topic build 主要工具职责:
|
|
|
+
|
|
|
+1. 创建 / 更新 / 查询 / 丢弃 `CompositionItem`。
|
|
|
+2. 创建 item relation,记录推导关系。
|
|
|
+3. 创建 item source,记录证据来源。
|
|
|
+4. 查询 pattern、分类、元素、帖子。
|
|
|
+5. 外部搜索并落 `external_search_case_log`。
|
|
|
+6. 保存灵感动态评估配置。
|
|
|
+7. 构建目的点、关键点和最终 topic。
|
|
|
+8. 执行灵感评估和整体评估。
|
|
|
+
|
|
|
+Script build 主要工具职责:
|
|
|
+
|
|
|
+1. 读取 topic detail。
|
|
|
+2. 查询参考帖子和参考脚本,包括 `search_post_scripts_by_topic_name`。
|
|
|
+3. 创建 / 更新 / 停用脚本段落。
|
|
|
+4. 创建 / 更新脚本元素。
|
|
|
+5. 批量建立段落-元素关系。
|
|
|
+6. 批量更新段落列。
|
|
|
+7. 调用 `evaluate_script_build`。
|
|
|
+8. 调用 `record_decision` 写入 `script_build_decision_trace`。
|
|
|
+
|
|
|
+这层把 prompt 中的业务步骤约束转化成可执行的工具动作,并把动作结果写入数据库。
|
|
|
+
|
|
|
+### 3.4 数据库与表分层
|
|
|
+
|
|
|
+#### 3.4.1 `open_aigc_pattern`:本项目运行产物主库
|
|
|
+
|
|
|
+MySQL `open_aigc_pattern` 是本项目 topic/script build 工作台的主库。只读核验表明核心表规模如下:
|
|
|
+
|
|
|
+| 表 | 行数 | 说明 |
|
|
|
+|---|---:|---|
|
|
|
+| `topic_build_record` | 1,093 | 选题构建任务 |
|
|
|
+| `topic_build_topic` | 1,264 | 选题结果 |
|
|
|
+| `topic_build_composition_item` | 22,579 | 选题组成 item |
|
|
|
+| `topic_build_item_source` | 23,504 | item 证据来源 |
|
|
|
+| `topic_build_item_relation` | 19,055 | item 推导关系 |
|
|
|
+| `topic_build_item_exploration_trace` | 15,466 | item 探索轨迹 |
|
|
|
+| `topic_build_point` | 7,369 | 灵感点、目的点、关键点 |
|
|
|
+| `topic_build_point_item_relation` | 15,994 | point 与 item 的关系 |
|
|
|
+| `topic_build_log` | 1,086 | 选题构建日志 |
|
|
|
+| `script_build_record` | 269 | 脚本构建任务 |
|
|
|
+| `script_build_paragraph` | 945 | 脚本段落 |
|
|
|
+| `script_build_element` | 2,459 | 脚本元素 |
|
|
|
+| `script_build_paragraph_element` | 4,447 | 段落-元素关系 |
|
|
|
+| `script_build_decision_trace` | 649 | 脚本构建决策轨迹 |
|
|
|
+| `script_build_log` | 264 | 脚本构建日志 |
|
|
|
+| `external_search_case_log` | 12,043 | 外部搜索缓存/日志 |
|
|
|
+| `prompt` | 9 | prompt 业务类型 |
|
|
|
+| `prompt_version` | 125 | prompt 版本 |
|
|
|
+| `build_strategy` | 56 | 构建策略 |
|
|
|
+| `build_strategy_version` | 242 | 策略版本 |
|
|
|
+
|
|
|
+这些表是本项目生成物的直接证据。
|
|
|
+
|
|
|
+#### 3.4.2 `open_aigc.public`:上游事实库
|
|
|
+
|
|
|
+PostgreSQL `open_aigc.public` 是上游事实库和 pattern 事实库。只读核验表明:
|
|
|
+
|
|
|
+| 表 | 行数 | 本项目中的角色 |
|
|
|
+|---|---:|---|
|
|
|
+| `post` | 66,974 | 上游帖子事实 |
|
|
|
+| `post_decode_topic_point_element` | 1,308,993 | 上游选题点元素 |
|
|
|
+| `post_script_paragraph` | 12,164 | 上游脚本段落 |
|
|
|
+| `post_script_element` | 47,951 | 上游脚本元素 |
|
|
|
+| `post_script_paragraph_field_element` | 177,856 | 上游段落字段元素 |
|
|
|
+| `global_category` | 4,944 | 上游分类树 |
|
|
|
+| `global_element` | 290,864 | 上游元素库 |
|
|
|
+| `element_classification_mapping` | 1,123,373 | 上游元素归一映射 |
|
|
|
+| `pattern_mining_execution` | 7 | 上游 pattern 执行批次 |
|
|
|
+| `pattern_itemset` | 449,216 | 上游 itemset pattern |
|
|
|
+| `pattern_script_sequence` | 2,753 | 上游 script sequence |
|
|
|
+
|
|
|
+`#401/#581` 的状态漂移也属于上游 pattern execution 证据:
|
|
|
+
|
|
|
+| execution | snapshot_date | is_current | status | post_count | category_count | element_count | itemset rows | script_sequence rows |
|
|
|
+|---:|---|---|---|---:|---:|---:|---:|---:|
|
|
|
+| `#401` | 2026-04-23 | true | failed | 12,448 | 3,995 | 315,389 | 104,385 | 1,723 |
|
|
|
+| `#581` | 2026-05-09 | false | success | 13,265 | 1,932 | 290,467 | 53,897 | 0 |
|
|
|
+
|
|
|
+这解释了一个容易混淆的现象:GUI 和 build 记录大量使用 `execution_id=401`,但 `#401` 在上游 pattern execution 表里是 `failed + is_current=true`;`#581` 是截至 2026-05-29 核验时可见的成功执行之一,但 `is_current=false`。这不是 BuildingSystemAgent 自身构建状态,而是上游 pattern 批次状态。
|
|
|
+
|
|
|
+### 3.5 写表链路
|
|
|
+
|
|
|
+Topic Build 写表链路:
|
|
|
+
|
|
|
+1. 创建任务:写 `topic_build_record`。
|
|
|
+2. 创建 topic 容器:写 `topic_build_topic`。
|
|
|
+3. 探索数据:写 `topic_build_composition_item`。
|
|
|
+4. 记录证据:写 `topic_build_item_source`。
|
|
|
+5. 记录推导:写 `topic_build_item_relation`。
|
|
|
+6. 记录探索:写 `topic_build_item_exploration_trace`。
|
|
|
+7. 生成点位:写 `topic_build_point` 和 `topic_build_point_item_relation`。
|
|
|
+8. 定稿:更新 `topic_build_topic.result`,更新 `topic_build_record.status/result/topic_count/token/cost`。
|
|
|
+9. 日志:写 `topic_build_log`。
|
|
|
+
|
|
|
+Script Build 写表链路:
|
|
|
+
|
|
|
+1. 创建任务:写 `script_build_record`。
|
|
|
+2. 创建段落:写 `script_build_paragraph`。
|
|
|
+3. 创建元素:写 `script_build_element`。
|
|
|
+4. 建立关系:写 `script_build_paragraph_element`。
|
|
|
+5. 记录决策:写 `script_build_decision_trace`。
|
|
|
+6. 评估迭代:读取 snapshot,调用 `evaluate_script_build`,按目标指引继续工具调用。
|
|
|
+7. 定稿:更新 `script_build_record.status/result/paragraph_count/element_count/token/cost`。
|
|
|
+8. 日志:写 `script_build_log`。
|
|
|
+
|
|
|
+### 3.6 GUI 展示和实际运行样例
|
|
|
+
|
|
|
+GUI 的 `/build/topic` 是同页工作台,承载:
|
|
|
+
|
|
|
+1. 选题构建列表。
|
|
|
+2. 脚本构建列表。
|
|
|
+3. 执行批次 `Exec #401`。
|
|
|
+4. Agent 类型,如 `AigcAgent`。
|
|
|
+5. 模型名,如 `gemini-3-flash-preview`。
|
|
|
+6. 状态、topic 数、成本、时间、耗时。
|
|
|
+7. 详情页、日志、prefill、retry 等操作入口。
|
|
|
+
|
|
|
+MySQL topic build 样例(截至 2026-05-29 核验时):
|
|
|
+
|
|
|
+| build_id | execution_id | status | agent | topic_count | input_tokens | output_tokens | cost | 时间 |
|
|
|
+|---:|---:|---|---|---:|---:|---:|---:|---|
|
|
|
+| 1116 | 401 | success | AigcAgent | 1 | 2,342,981 | 26,438 | 1.2508 | 2026-05-26 13:52:05 |
|
|
|
+| 1115 | 401 | success | AigcAgent | 1 | - | - | 1.7848 | 2026-05-25 19:31:51 |
|
|
|
+| 1114 | 401 | success | AigcAgent | 1 | - | - | 1.3816 | 2026-05-25 |
|
|
|
+
|
|
|
+MySQL script build 样例(截至 2026-05-29 核验时):
|
|
|
+
|
|
|
+| script_build_id | execution_id | topic_build_id | status | agent | paragraph_count | element_count | cost | 时间 |
|
|
|
+|---:|---:|---:|---|---|---:|---:|---:|---|
|
|
|
+| 269 | 401 | 1103 | success | AigcAgent | 4 | 10 | 0.2063 | 2026-05-25 19:37:11 |
|
|
|
+| 268 | 401 | 1108 | success | AigcAgent | 4 | 10 | 0.5768 | 2026-05-25 |
|
|
|
+| 267 | 401 | 1090 | success | AigcAgent | 4 | 15 | 1.2163 | 2026-05-25 |
|
|
|
+
|
|
|
+`script_build_decision_trace` 样例显示,截至 2026-05-29 核验时,`script_build_id=269` 的 phase 包括:
|
|
|
+
|
|
|
+1. `段间展开_structure`
|
|
|
+2. `之间展开_elements`
|
|
|
+3. `段间展开_links`
|
|
|
+4. `段内展开_columns`
|
|
|
+
|
|
|
+这和脚本 prompt 中规定的展开工序一致。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 第四章:数据证据
|
|
|
+
|
|
|
+### 4.1 Git 作者与文件证据
|
|
|
+
|
|
|
+`liuzhiheng` 高频改动文件集中在系统实现层:
|
|
|
+
|
|
|
+| 文件 | 业务含义 |
|
|
|
+|---|---|
|
|
|
+| `pattern_server.py` | FastAPI 路由、任务调度、详情 API、日志 API |
|
|
|
+| `models.py` | topic/script build 主库模型 |
|
|
|
+| `TopicBuildAigcAgent.py` | 选题 AigcAgent 执行 |
|
|
|
+| `TopicBuildClaudeCodeAgent.py` | 选题 ClaudeCodeAgent 执行 |
|
|
|
+| `ScriptBuildAigcAgent.py` | 脚本 AigcAgent 执行 |
|
|
|
+| `ScriptClaudeCodeBuildAgent.py` | 脚本 ClaudeCodeAgent 执行 |
|
|
|
+| `topic_build_agent_tools.py` | 选题工具层 |
|
|
|
+| `script_build_agent_tools.py` | 脚本工具层 |
|
|
|
+| `topic_build_tool_schemas.json` | 选题工具 schema |
|
|
|
+| `script_build_tool_schemas.json` | 脚本工具 schema |
|
|
|
+| `static/js/build.js` | 构建中心页面 |
|
|
|
+| `static/js/topic-build-detail.js` | 选题详情页 |
|
|
|
+| `static/js/script-build-detail.js` | 脚本详情页 |
|
|
|
+
|
|
|
+`linzihan` 高频改动文件集中在业务方法论:
|
|
|
+
|
|
|
+| 文件 | 业务含义 |
|
|
|
+|---|---|
|
|
|
+| `prompts/topic_build_main_agent.md` | 选题主流程、动态维度配置 |
|
|
|
+| `prompts/topic_inspiration_build_agent.md` | 灵感横纵推导和数据探索 |
|
|
|
+| `prompts/topic_inspiration_eval_agent.md` | 灵感动态维度评估 |
|
|
|
+| `prompts/topic_purpose_keypoint_build_agent.md` | 目的点/关键点构建与组词规则 |
|
|
|
+| `prompts/topic_eval_agent.md` | 目的点/关键点评估与组词就绪判断 |
|
|
|
+| `prompts/script_build_system.md` | 脚本展开方法、列依赖、创作表规则 |
|
|
|
+| `prompts/script_build_eval_agent.md` | 脚本评估、目标指引和动态上限维度 |
|
|
|
+
|
|
|
+### 4.2 MySQL `open_aigc_pattern` 样例证据
|
|
|
+
|
|
|
+数据库连接证据:
|
|
|
+
|
|
|
+1. `db_manager.py` 连接 `open_aigc_pattern`。
|
|
|
+2. Docker requirements 包含 `sqlalchemy==2.0.46`、`pymysql==1.1.2`。
|
|
|
+3. `pattern_server.py` 启动时调用 `ensure_tables()`。
|
|
|
+4. 表模型集中在 `models.py`。
|
|
|
+
|
|
|
+只读查询使用 `START TRANSACTION READ ONLY`,最后 `ROLLBACK`,未写库。
|
|
|
+
|
|
|
+业务对象样例(截至 2026-05-29 核验时):
|
|
|
+
|
|
|
+| 对象 | 样例 |
|
|
|
+|---|---|
|
|
|
+| topic build 样例 | `topic_build_record.id=1116`,`success`,`execution_id=401` |
|
|
|
+| topic 样例 | `topic_build_topic.id=1281`,build 1116,状态 `mature` |
|
|
|
+| item 样例 | `topic_build_composition_item.id=22741`,元素 `负能量传染现象` |
|
|
|
+| item source 样例 | `post_extract/post`,source `6913cafd000000000703402b` |
|
|
|
+| point 样例 | 目的点 `系统拆解情绪毒素机制以建立情绪免疫力` |
|
|
|
+| script build 样例 | `script_build_record.id=269`,`success`,4 段、10 元素 |
|
|
|
+| script element 样例 | `拟人化猫咪表情包视觉` |
|
|
|
+| decision trace 样例 | phase `段内展开_columns` |
|
|
|
+| topic log 样例 | build 1116,日志长度 327,934 字符 |
|
|
|
+| script log 样例 | script 269,日志长度 206,463 字符 |
|
|
|
+
|
|
|
+Prompt 和 strategy 版本证据:
|
|
|
+
|
|
|
+| 类型 | 数量 / 当前情况 |
|
|
|
+|---|---|
|
|
|
+| `prompt` | 9 个业务类型 |
|
|
|
+| `prompt_version` | 125 个版本 |
|
|
|
+| `script_build_system` | 当前版本 25 |
|
|
|
+| `script_build_eval_agent` | 当前版本 10 |
|
|
|
+| `topic_build_main_agent` | 当前版本 13 |
|
|
|
+| `topic_inspiration_build_agent` | 当前版本 24 |
|
|
|
+| `topic_inspiration_eval_agent` | 当前版本 11 |
|
|
|
+| `build_strategy` | 56 条 |
|
|
|
+| `build_strategy_version` | 242 条 |
|
|
|
+
|
|
|
+### 4.3 PostgreSQL `open_aigc` 样例证据
|
|
|
+
|
|
|
+PostgreSQL 核验是为了确认上游事实和 pattern 批次,不是为了把它写成本项目主体。
|
|
|
+
|
|
|
+关键结论:
|
|
|
+
|
|
|
+1. `open_aigc.public` 包含帖子、脚本段落、元素、分类、pattern 执行批次。
|
|
|
+2. 本项目通过工具读取这些数据作为构建输入。
|
|
|
+3. `#401` 当前在 pattern execution 里是 `failed + is_current=true`。
|
|
|
+4. `#581` 是 `success + is_current=false`。
|
|
|
+5. GUI 和 build 记录大量 `execution_id=401`,说明构建工作台历史与上游 current execution 状态存在漂移。
|
|
|
+
|
|
|
+### 4.4 GUI 证据
|
|
|
+
|
|
|
+已用浏览器打开 `https://pattern.aiddit.com/build/topic` 验证:
|
|
|
+
|
|
|
+1. 页面显示“构建中心”。
|
|
|
+2. 同页包含“选题构建”和“脚本构建”。
|
|
|
+3. 构建历史中显示 `Exec #401`。
|
|
|
+4. 截至 2026-05-29 核验时,topic build 显示 `1116`、`1115` 等记录。
|
|
|
+5. Agent 类型显示 `AigcAgent`。
|
|
|
+6. 模型显示 `gemini-3-flash-preview`。
|
|
|
+7. 页面异步加载历史列表,与 MySQL 核验时样例记录对应。
|
|
|
+
|
|
|
+### 4.5 Subagent 交叉核验结论
|
|
|
+
|
|
|
+本次使用多个 subagent 并行核验:
|
|
|
+
|
|
|
+| Subagent | 核验对象 | 结论 |
|
|
|
+|---|---|---|
|
|
|
+| A | `liuzhiheng` 作者提交与核心代码 | 其主线是把构建 Agent 落成系统工程:Agent、工具、DB、GUI、日志、模型配置 |
|
|
|
+| B | `linzihan` 作者提交与 prompt | 其主线是业务方法论:横纵推导、组词规则、列依赖、展开策略、动态评估 |
|
|
|
+| C | MySQL `open_aigc_pattern` | topic/script build 运行表有真实数据,核验时构建样例与 GUI 对齐 |
|
|
|
+| D | PostgreSQL `open_aigc.public` | 只作为上游事实库和 `#401/#581` 漂移证据 |
|
|
|
+| E | 报告边界 QA | 检查报告避免把前置流程写成主体,确认关键术语和证据齐备 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 第五章:容易误解和需要修正的点
|
|
|
+
|
|
|
+### 5.1 `pattern_global_v2` 的位置
|
|
|
+
|
|
|
+它提供上游分类树、元素库、pattern、sequence、debug API 等能力。在本报告语境里,它是输入来源,不是 BuildingSystemAgent 的业务核心。
|
|
|
+
|
|
|
+### 5.2 目录名容易误导
|
|
|
+
|
|
|
+`aiddit/pattern/patter_from_global_and_build` 这个目录名带有 `global`,也包含一些前置兼容代码。但本次分析的主体不是前置 pattern mining,而是其中的 topic/script build Agent 应用层。
|
|
|
+
|
|
|
+### 5.3 linzihan 的核心逻辑在 prompt 里
|
|
|
+
|
|
|
+业务规则并不都在 Python 函数中。对 Agent 系统而言,prompt 中的“必须先写元素点列”“组词只用 element”“动态维度 1-5 分”“评估只给目标指引”等约束,是实际控制 Agent 行为的业务逻辑。
|
|
|
+
|
|
|
+### 5.4 liuzhiheng 的核心价值是工程落地
|
|
|
+
|
|
|
+`liuzhiheng` 的提交把 prompt 方法论落成可运行系统:Agent 拆分、工具 schema、数据库模型、日志、GUI、重试、prefill、模型配置、外部搜索和 trace。这是 BuildingSystemAgent 从方法论到产品工作台的关键。
|
|
|
+
|
|
|
+### 5.5 `#401/#581` 不是 BuildingSystemAgent 自身状态
|
|
|
+
|
|
|
+`#401`、`#581` 是上游 pattern execution 状态。当前 DB 里 `#401` 是 `failed + is_current=true`,`#581` 是 `success + is_current=false`。但 topic/script build 记录大量使用 `execution_id=401` 并且自身是 `success`,这两层状态不能混为一谈。
|
|
|
+
|
|
|
+### 5.6 1-5 分不是结果质量分
|
|
|
+
|
|
|
+动态维度的 1-5 分表达“本次需求中这个维度的重要程度”。分数越高,评估时通过标准越严格。它不是说当前灵感或脚本质量得了几分。
|
|
|
+
|
|
|
+### 5.7 评估 Agent 不负责直接修复
|
|
|
+
|
|
|
+评估 Agent 输出问题、目标和边界,主 Agent 再根据评估结果选择工具和动作。评估 Agent 不应该编造修复内容,也不应该替主 Agent 指定具体工具参数。
|
|
|
+
|
|
|
+### 5.8 `.trace` 不是业务主库
|
|
|
+
|
|
|
+`aigc_agent_sdk/Agent/.trace` 或构建目录下 `.trace` 是运行轨迹文件,便于调试和 usage 汇总。真正的业务结果、历史、日志、决策和 GUI 数据来自 `open_aigc_pattern`。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 附录:关键代码证据索引
|
|
|
+
|
|
|
+| 证据 | 路径 / 行号 |
|
|
|
+|---|---|
|
|
|
+| `CompositionItem` 中心模型 | `aiddit/pattern/patter_from_global_and_build/models.py:163` |
|
|
|
+| “Agent 过程 = CRUD CompositionItem” | `aiddit/pattern/patter_from_global_and_build/models.py:173` |
|
|
|
+| `topic_build_record` | `aiddit/pattern/patter_from_global_and_build/models.py:182` |
|
|
|
+| `TopicBuildCompositionItem` | `aiddit/pattern/patter_from_global_and_build/models.py:266` |
|
|
|
+| `build_strategy` / `build_strategy_version` | `aiddit/pattern/patter_from_global_and_build/models.py:373`、`:398` |
|
|
|
+| `prompt_version` | `aiddit/pattern/patter_from_global_and_build/models.py:431` |
|
|
|
+| `script_build_record` | `aiddit/pattern/patter_from_global_and_build/models.py:486` |
|
|
|
+| `script_build_decision_trace` | `aiddit/pattern/patter_from_global_and_build/models.py:602` |
|
|
|
+| `/build -> /build/topic` | `aiddit/pattern/patter_from_global_and_build/pattern_server.py:367` |
|
|
|
+| topic build 创建/列表/详情/log | `pattern_server.py:407`、`:633`、`:812`、`:1237` |
|
|
|
+| script build 创建/列表/详情/log | `pattern_server.py:1428`、`:1672`、`:1938`、`:2232` |
|
|
|
+| Topic AigcAgent trace | `TopicBuildAigcAgent.py:56` |
|
|
|
+| Topic subagent preset | `TopicBuildAigcAgent.py:121`、`:132`、`:145`、`:158` |
|
|
|
+| AgentRunner / FileSystemTraceStore | `TopicBuildAigcAgent.py:257`、`:294` |
|
|
|
+| Script AgentRunner / FileSystemTraceStore | `ScriptBuildAigcAgent.py:161`、`:179` |
|
|
|
+| Script evaluator model配置说明 | `ScriptBuildAigcAgent.py:60` |
|
|
|
+| 选题动态维度配置 | `prompts/topic_build_main_agent.md:41` |
|
|
|
+| 动态维度 1-5 分 | `prompts/topic_build_main_agent.md:64`、`prompts/topic_inspiration_eval_agent.md:31` |
|
|
|
+| 组词只用 element | `prompts/topic_purpose_keypoint_build_agent.md:341` |
|
|
|
+| 组词实义词追溯 item.name | `prompts/topic_purpose_keypoint_build_agent.md:349` |
|
|
|
+| 脚本展开 phase | `prompts/script_build_system.md:99` |
|
|
|
+| 之间展开 / 段间展开 | `prompts/script_build_system.md:226` |
|
|
|
+| 元素点列先于自然语言列 | `prompts/script_build_system.md:292` |
|
|
|
+| 段内展开 | `prompts/script_build_system.md:427` |
|
|
|
+| 列依赖规则 | `prompts/script_build_system.md:544` |
|
|
|
+| 选择展开方法 | `prompts/script_build_system.md:591` |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 最终结论
|
|
|
+
|
|
|
+BuildingSystemAgent 的业务核心,是一个数据证据驱动的选题与脚本构建 Agent 系统。
|
|
|
+
|
|
|
+`linzihan` 贡献了业务推理方法论:如何从数据元素做横纵推导、如何约束组词、如何把选题展开成创作表、如何用动态维度和目标指引评估迭代。`liuzhiheng` 贡献了系统工程实现:把这些规则落成 Agent、工具、数据库、API、GUI、日志、模型配置和可追踪运行链路。
|
|
|
+
|
|
|
+前置的聚类、归一、pattern mining、`pattern_global_v2` 和 `open_aigc.public` 是这个系统的输入底座;`open_aigc_pattern` 中的 topic/script build 表、日志、decision trace 和 `/build/topic` GUI,才是 BuildingSystemAgent 本项目真正生成和运营的业务产物。
|