feat(monitor): 抖音 Web 接口客户端 —— 绕开爬虫子进程,直接发 HTTP
移植自 mac-agent-os 的 mediacrawler_adapter:不起子进程、不开页面,用浏览器里那份
登录态直接调抖音 Web 接口。产物键名照抄 store/douyin,所以 ingest 那条链路一个字不用改。
**目前能用的(真环境实测,非推断)**:
profile/other : 200, 7075 字节 —— 博主主页指标(粉丝/获赞/作品数/昵称)
aweme/detail : 200, 45425 字节 —— 单条作品详情(含点赞/评论/收藏/分享)
**目前不能用的:作品列表 `aweme/post`。** 两个互相独立的原因:
1. 这个接口被抖音单独升级成了真校验:不带 x-tt-argus 回 403「Uifid Not Found」,
带上 dummy 值回 200 + **空 body**。也就是说「头在不在」骗得过,「真校验」过不了。
同一套头打 profile/other 和 aweme/detail 都是通的 —— 抖音是挑着接口加保护的,
挑中的恰好是「批量拉作品列表」这个最敏感的动作。
2. 改走页面截获也不行:CDP 浏览器打开博主主页会落到「验证码中间页」(当天大量探测的
代价,过几小时要重测)。
所以现在的边界是:**已知作品的指标刷新能做,自动发现新作品做不了**。
**排查中控住变量后得到的两条事实**(都写进注释了):
· `Accept` / `Accept-Language` / `Referer` 才是主页接口能返回真数据的原因 —— 只有
UA+client hints+Cookie 时是 200 但仅 121 字节的空壳,补上这三个头变 7074 字节。
(我先前猜的 sec-ch-ua 不是关键。)
· 因此 UA 与 client hints 必须**成套地取自同一个浏览器**,所以 BrowserIdentity 一次
从 CDP 取齐 cookie + UA + hints,而不是各自写死。
「200 + 空 body 必须当场报错」也是刻意写死的:放过去它会在下游变成「这个博主没作品」,
把一次失败伪装成一条正常结果 —— 爬虫那条路正是这么栽的,还被翻译成「账号被封」。
测试 +11:cookie 解析、请求头成套性(含 uifid 缺失/回退)、产物键名与 store 对齐、
以及 _get 的三条失败路径(空 body / 403 带网关原话 / 正常返回)。
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
Read [](file:///Users/chengzige/agent-os/agent-sync/%E6%88%91%E7%9A%84%E8%AF%B4%E6%98%8E.md#1-1), lines 1 to 80
|
||||
|
||||
Read [](file:///Users/chengzige/agent-os/agent-sync/%E6%88%91%E7%9A%84%E8%AF%B4%E6%98%8E.md#81-81), lines 81 to 200
|
||||
|
||||
Read [](file:///Users/chengzige/agent-os/agent-sync/%E6%88%91%E7%9A%84%E8%AF%B4%E6%98%8E.md#201-201), lines 201 to 391
|
||||
|
||||
Read [](file:///Users/chengzige/agent-os/agent-sync/AgentOS-%E5%AE%8C%E6%95%B4%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3_%E5%89%AF%E6%9C%AC.md)
|
||||
|
||||
Read [](file:///Users/chengzige/agent-os/agent-sync/AgentOS-%E5%AE%8C%E6%95%B4%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3_%E5%89%AF%E6%9C%AC.md#31-31), lines 31 to 31
|
||||
|
||||
已完整读取你的《我的说明.md》和项目原历史说明文档,并结合你前述需求,现为你梳理出结构化的顶层大框架,并将你的关键想法单独标记,便于后续细化和追踪。
|
||||
|
||||
---
|
||||
|
||||
# AgentOS 顶层结构化大框架(多机协同·知识自进化)
|
||||
|
||||
## 1. agent-os(全局/多机共用内容)
|
||||
|
||||
### 1.1 初始化脚本(00_bootstrap)
|
||||
- 作用:一键环境搭建、依赖安装、权限配置、自动任务注册、主机身份识别与切换。
|
||||
- 你的重点:支持从零还原、主机身份切换、任务启停自动化。
|
||||
|
||||
### 1.2 核心配置(01_core)
|
||||
- 作用:系统身份、主机/维护机标识、全局参数、智能体基础设定。
|
||||
- 你的重点:支持多智能体、多主机角色,配置可多版本选择加载。
|
||||
|
||||
### 1.3 技能(02_skills)
|
||||
- 作用:系统必需技能、自定义技能、第三方技能,均有“技能身份证”(SKILL_CARD.yaml)。
|
||||
- 你的重点:
|
||||
- 技能身份证模板统一,主机归属、只读/主理标识。
|
||||
- 技能状态一键扫描(skill_scanner.py)。
|
||||
- 外部技能与自研技能分层管理。
|
||||
|
||||
### 1.4 知识库(03_knowledge)
|
||||
- 作用:全局知识库,支持多属性、多领域、版本化、向量化、自动分类。
|
||||
- 你的重点:
|
||||
- 分类体系:知识/个人笔记/记忆固化/项目过程/向量化/收件箱等。
|
||||
- 支持原始-已整理-归档多阶段。
|
||||
- 领域16大类,属性9大类,Frontmatter标准化。
|
||||
- 项目过程与知识归档分离,最终成果可转为事实/知识。
|
||||
- 向量库既有本地也有全局,支持多机同步与本地独立。
|
||||
|
||||
### 1.5 工具层(05_tools)
|
||||
- 作用:非技能化工具脚本(CLI/接口),如知识库/记忆/技能管理等。
|
||||
- 你的重点:工具与技能可互转,工具更注重效率和扩展性,技能偏自动化和系统集成。
|
||||
|
||||
### 1.6 系统管理(07_migration/90_archive)
|
||||
- 作用:打包、解包、迁移、备份、归档、历史记录。
|
||||
|
||||
---
|
||||
|
||||
## 2. agent-os-local(本机专属内容)
|
||||
|
||||
### 2.1 采集原始内容
|
||||
- 作用:本机原始数据采集(音频、视频、网页、截图、临时笔记等),作为知识库前端缓存。
|
||||
- 你的重点:每台机子独立采集,后续可分类同步到全局知识库。
|
||||
|
||||
### 2.2 本机记忆
|
||||
- 作用:本机专属记忆,部分可提炼为全局知识。
|
||||
- 你的重点:记忆属性字段丰富,向量化内容区分本地/全局,提炼机制需智能判断。
|
||||
|
||||
### 2.3 运行记录、对话记录、缓存
|
||||
- 作用:任务缓存、运行日志、对话历史,适配不同智能体。
|
||||
- 你的重点:智能体可切换,数据结构需适配不同上下文和对话格式。
|
||||
|
||||
### 2.4 本机情况数据说明记录
|
||||
- 作用:本机环境、硬件、软件、网络、环境变量等说明,支持动态更新。
|
||||
- 你的重点:数据结构需高效、节省token,支持自动/手动更新。
|
||||
|
||||
---
|
||||
|
||||
## 3. 关键机制与待展开问题(你的重点/待讨论)
|
||||
|
||||
- 向量库(vector_db):本地与全局并存,需支持多机同步与本地独立,知识内容与索引分离/融合待定。
|
||||
- 主机/维护机标识:每台主机唯一ID,主维护机角色固定,权限与同步策略需细化。
|
||||
- 知识库分类:支持多级分类、标签,分类体系需灵活可扩展。
|
||||
- 工具与技能边界:工具注重效率和扩展,技能偏自动化和系统集成,二者可互转,需明确转换机制。
|
||||
- 本机数据说明:内容范围、更新机制、token效率需进一步细化。
|
||||
- 同步/备份机制:全局与本地的同步策略、备份粒度、冲突解决等需后续详细设计。
|
||||
|
||||
---
|
||||
|
||||
# 标记你的关键内容(便于后续追踪)
|
||||
|
||||
1. 技能身份证(SKILL_CARD.yaml)机制与模板
|
||||
2. 技能状态扫描工具(skill_scanner.py)
|
||||
3. 知识库多层级分类体系(16领域×9属性)
|
||||
4. 向量库本地/全局双轨设计
|
||||
5. 本机记忆与全局知识的提炼与同步机制
|
||||
6. 工具与技能的互转与边界
|
||||
7. 本机环境说明的高效结构与动态更新
|
||||
8. 多机主机/维护机角色与权限体系
|
||||
9. 项目过程与知识归档的分离与融合
|
||||
10. 自动化任务与定时调度体系
|
||||
|
||||
---
|
||||
|
||||
# 【2026-04-28 最新讨论补充】本地/全局记忆与知识库、向量库、同步机制设计
|
||||
|
||||
## 1. 目录与同步边界
|
||||
- `~/workbuddy-agent-os/agent-sync/`:所有内容都参与多机同步(知识库、协同收件箱、协同向量库等)。
|
||||
- `~/workbuddy-agent-os/agent-sync/agent-local/`:所有内容仅本机保存,绝不参与同步(本地记忆、个人笔记、本地素材等)。
|
||||
|
||||
## 2. 数据流转与提炼机制
|
||||
1. **本地记忆/个人笔记产生**
|
||||
- 存在于 `~/workbuddy-agent-os/agent-sync/agent-local/materials/`,如记忆系统自动提存、个人随手笔记等。
|
||||
2. **记忆/笔记提炼**
|
||||
- 用户可手动或自动将有价值的内容,从 `~/workbuddy-agent-os/agent-sync/agent-local/materials/` 提取到 `~/workbuddy-agent-os/agent-sync/03_knowledge/00_inbox/`(协同收件箱)。
|
||||
- 提取时可加属性(如“记忆”标签),以便后续分类。
|
||||
3. **知识库入库**
|
||||
- 协同收件箱只存 md 文件,知识管理系统定期/手动将内容加工、分类,正式入库到知识库(如 10_concepts、20_methods 等)。
|
||||
|
||||
## 3. 向量数据库设计
|
||||
- **本地向量库**:`~/workbuddy-agent-os/agent-sync/agent-local/` 下的所有内容(记忆、个人笔记等)向量化,仅本机检索。
|
||||
- **协同向量库**:`~/workbuddy-agent-os/agent-sync/` 下知识库内容向量化,参与多机同步和协同检索。
|
||||
- 检索时,默认先查本地向量库,再查协同向量库,结果合并展示,体验无割裂。
|
||||
|
||||
## 4. 分类与属性
|
||||
- 协同收件箱和知识库的 md 文件可通过 frontmatter 或标签标明来源(如“记忆提存”、“个人笔记”),方便后续分类和检索。
|
||||
- 知识库分类可灵活调整,不必强依赖文件名。
|
||||
|
||||
## 5. 机制总结
|
||||
- 本地内容完全隔离,隐私安全。
|
||||
- 有价值内容通过“提炼-收件箱-知识库”机制流转,保证协同知识的高质量和结构化。
|
||||
- 多机协同时,检索体验顺畅,既能查本地记忆,也能查全局知识。
|
||||
|
||||
---
|
||||
> 本节为 2026-04-28 讨论结论,后续如有新机制/细节调整请在此基础上补充。
|
||||
|
||||
---
|
||||
|
||||
如需展开某一部分(如知识库分类、向量库机制、同步策略等),可随时指定,我会基于你的原文和上述结构继续细化。
|
||||
如需将这些“你的关键内容”单独存档,或生成专门的追踪清单,也可直接说明。
|
||||
@@ -0,0 +1,314 @@
|
||||
# AgentOS vNext 重构规划与工作计划
|
||||
|
||||
> 版本:2026-04-29(第一稿,待审核)
|
||||
> 状态:**【待审核】** — 请确认目录结构与工作计划后再进入实施阶段
|
||||
|
||||
---
|
||||
|
||||
## 一、工作核心要点(实施前必读)
|
||||
|
||||
### 程序功能定位
|
||||
|
||||
| 模块 | 功能 | 说明 |
|
||||
|------|------|------|
|
||||
| `memory_manager` | 记忆提炼与固化 | 从对话日志/WorkBuddy记忆中提炼关键事实,生成L1/L2/L3分层记忆,并检测固化条件推送inbox/memory |
|
||||
| `kb_manager` | 知识入库 | 接受inbox各分区内容,分类、填写frontmatter、写入知识库对应目录 |
|
||||
| `inbox_refine` | 收件箱精炼 | 扫描inbox各分区,调用LLM分类,自动归档到知识库 |
|
||||
| `collect_to_inbox` | 内容采集推送 | 扫描本地素材/记忆,精炼后推送到协同inbox对应分区 |
|
||||
| `auto_collector` | 自动化采集 | 定时抓取外部信息(网页/RSS/社交媒体等),推送inbox/knowledge |
|
||||
| `sync_manager` | 同步管理 | 管理agent-os多机git同步,冲突检测与解决 |
|
||||
| `skill_scanner` | 技能状态扫描 | 扫描所有SKILL_CARD.yaml,报告哪些技能就绪/缺依赖 |
|
||||
| `vector_db` | 双轨向量库 | local向量库(私有内容)+ global向量库(协同知识),检索时合并 |
|
||||
|
||||
### 核心数据流
|
||||
|
||||
```
|
||||
本机采集(raw素材)
|
||||
↓ collect_to_inbox / 用户手动提炼
|
||||
agent-os-local/materials/refined_for_inbox/
|
||||
↓ 用户确认/AI判断固化条件
|
||||
agent-sync/03_knowledge/00_stream/inbox/
|
||||
├── knowledge/ ← 外部知识采集
|
||||
├── memory/ ← 记忆固化内容
|
||||
├── tools/ ← 工具提交
|
||||
├── personal/ ← 个人笔记
|
||||
└── media/ ← 轻量媒体
|
||||
↓ inbox_refine / kb_manager(AI自动分类)
|
||||
agent-sync/03_knowledge/[10~60_xxx]/
|
||||
↓ 每台机器自动重建
|
||||
agent-os-local/vector_db/global/ ← 协同知识向量化
|
||||
agent-os-local/vector_db/local/ ← 私有内容向量化
|
||||
↓ 检索时合并(先local后global)
|
||||
用户查询响应
|
||||
```
|
||||
|
||||
### 实施三原则
|
||||
|
||||
1. **不破坏现有功能** — 重命名/移动目录前做好兼容或路径别名处理
|
||||
2. **协同目录轻量化** — 大文件/向量库/本机专属内容绝不进入agent-os/
|
||||
3. **渐进实施** — 先目录结构,再配置文件,最后代码完善
|
||||
|
||||
---
|
||||
|
||||
## 二、新目录结构(【待审核】)
|
||||
|
||||
### 2.1 agent-os/ 变更说明
|
||||
|
||||
```
|
||||
agent-os/
|
||||
├── 00_bootstrap/ # 【保留】初始化脚本
|
||||
│ ├── init.sh # 主安装入口(后续增加HOST_ID读取逻辑)
|
||||
│ ├── apply-config.sh
|
||||
│ ├── export_skills.sh
|
||||
│ └── import_skills.sh
|
||||
│
|
||||
├── 01_core/ # 【扩展】核心配置
|
||||
│ ├── IDENTITY.md # 系统身份
|
||||
│ ├── SOUL.md # 智能体灵魂设定
|
||||
│ ├── USER.md # 用户画像
|
||||
│ ├── mcp.json # MCP配置
|
||||
│ ├── CHANGELOG.md
|
||||
│ └── HOST_ID.md # 【新增★】本机标识与角色
|
||||
│ # 格式:my-macbook_macOS14.4_16GB_master
|
||||
│
|
||||
├── 02_skills/ # 【扩展】技能库
|
||||
│ ├── _template/ # 技能模板(含SKILL_CARD.yaml模板)
|
||||
│ ├── memory_manager/ # 【扩展】记忆管理
|
||||
│ │ ├── SKILL.md
|
||||
│ │ ├── SKILL_CARD.yaml # 【新增★】技能身份证
|
||||
│ │ ├── daily_digest.py # 每日提炼
|
||||
│ │ ├── memory_extractor.py # 【新增★】记忆固化提取(推送inbox)
|
||||
│ │ ├── bootstrap_from_memory.py
|
||||
│ │ ├── agent_memory_init.py
|
||||
│ │ ├── export_memories.py
|
||||
│ │ ├── import_memories.py
|
||||
│ │ ├── memory_cleanup.py
|
||||
│ │ ├── semantic_search.py
|
||||
│ │ └── version.json
|
||||
│ ├── kb_manager/ # 【扩展】知识库管理
|
||||
│ │ ├── SKILL.md
|
||||
│ │ ├── SKILL_CARD.yaml # 【新增★】技能身份证
|
||||
│ │ ├── kb_ingest.py # 知识入库(更新inbox路径适配)
|
||||
│ │ ├── kb_search.py # 【新增★】知识检索(双轨向量)
|
||||
│ │ └── version.json
|
||||
│ ├── inbox_refine/ # 【扩展】收件箱精炼
|
||||
│ │ ├── SKILL.md
|
||||
│ │ ├── SKILL_CARD.yaml # 【新增★】技能身份证
|
||||
│ │ ├── inbox_refine.py # 精炼主程序(更新多分区支持)
|
||||
│ │ ├── llm_classifier.py
|
||||
│ │ └── version.json
|
||||
│ ├── collect_to_inbox/ # 【扩展】采集推送
|
||||
│ │ ├── SKILL.md
|
||||
│ │ ├── SKILL_CARD.yaml # 【新增★】技能身份证
|
||||
│ │ ├── collect_to_inbox.py # 采集推送(更新本地素材路径)
|
||||
│ │ └── version.json
|
||||
│ ├── auto_collector/ # 【扩展】自动采集
|
||||
│ │ ├── SKILL.md
|
||||
│ │ ├── SKILL_CARD.yaml # 【新增★】技能身份证
|
||||
│ │ └── version.json
|
||||
│ ├── sync_manager/ # 【扩展】同步管理
|
||||
│ │ ├── SKILL.md
|
||||
│ │ ├── SKILL_CARD.yaml # 【新增★】技能身份证
|
||||
│ │ └── version.json
|
||||
│ ├── web_crawler/ # 【保留】网页爬取
|
||||
│ │ └── SKILL.md
|
||||
│ └── content_processor/ # 【保留】内容处理
|
||||
│ └── SKILL.md
|
||||
│
|
||||
├── 03_knowledge/ # 【重构】知识库
|
||||
│ ├── 00_stream/ # 【新增★】数据流入区(替代原00_inbox)
|
||||
│ │ └── inbox/ # 协同收件箱(唯一进入通道)
|
||||
│ │ ├── knowledge/ # 外部知识(采集提炼后的MD知识卡)
|
||||
│ │ ├── memory/ # 记忆固化(本机重要记忆提炼后推入)
|
||||
│ │ ├── tools/ # 工具提交(TOOL_CARD.yaml+入口脚本)
|
||||
│ │ ├── personal/ # 个人内容(笔记/会议记录/随手记)
|
||||
│ │ └── media/ # 轻量媒体(<1MB关键附图)
|
||||
│ ├── 01_daily/ # 【保留】每日记录
|
||||
│ ├── 10_concepts/ # 【保留】概念(含各领域子目录)
|
||||
│ ├── 20_methods/ # 【保留】方法
|
||||
│ ├── 30_facts/ # 【保留】事实/数据
|
||||
│ ├── 40_references/ # 【保留】参考资料
|
||||
│ ├── 50_resources/ # 【保留】资源
|
||||
│ ├── 60_opinions/ # 【保留】观点
|
||||
│ ├── 90_archive/ # 【保留】归档
|
||||
│ └── 99_system/ # 【保留】系统文档
|
||||
│
|
||||
├── 04_memory/ # 【精简】记忆系统(仅保留协同部分)
|
||||
│ ├── daily_summaries/ # 【保留】每日摘要(可多机共享)
|
||||
│ ├── long_term/ # 【保留】长期记忆(经固化的全局记忆)
|
||||
│ ├── logs/ # 【保留】运行日志
|
||||
│ └── memory_backup/ # 【保留】记忆备份
|
||||
│ # ⚠️【审核点】vector_db 从此处移除,仅在本机local目录维护
|
||||
│
|
||||
├── 05_tools/ # 【扩展】工具层
|
||||
│ ├── 00_setup/ # 【保留】环境安装
|
||||
│ ├── 01_system/ # 【扩展】系统工具
|
||||
│ │ └── skill_scanner.py # 【新增★】技能状态扫描器
|
||||
│ ├── 02_browser/
|
||||
│ ├── 03_ocr/
|
||||
│ ├── 04_media/
|
||||
│ ├── 05_crawl/
|
||||
│ └── 06_mobile/
|
||||
│
|
||||
├── 06_runtime/ # 【保留】运行时
|
||||
│ └── tasks/
|
||||
│
|
||||
├── 07_migration/ # 【保留】迁移工具
|
||||
│ ├── backup.sh
|
||||
│ ├── pack.sh
|
||||
│ └── unpack.sh
|
||||
│
|
||||
└── 90_archive/ # 【保留】全局归档
|
||||
```
|
||||
|
||||
### 2.2 agent-os-local/ 变更说明
|
||||
|
||||
```
|
||||
agent-os-local/
|
||||
├── materials/ # 【保留+扩展】本机原始素材
|
||||
│ ├── audio/ # 音频
|
||||
│ ├── video/ # 视频
|
||||
│ ├── screenshots/ # 截图
|
||||
│ ├── web/ # 网页存档
|
||||
│ └── refined_for_inbox/ # 【保留】精炼待提交内容(暂存区)
|
||||
│
|
||||
├── memory/ # 【扩展】本机记忆
|
||||
│ ├── raw/ # 【保留】原始记忆日志(每日.md)
|
||||
│ └── long_term/ # 【新增★】本机长期记忆(固化前暂存)
|
||||
│
|
||||
├── knowledge/ # 【新增★】本机私有知识库(绝不同步)
|
||||
│ ├── projects/ # 项目过程记录
|
||||
│ └── personal/ # 个人私密笔记
|
||||
│
|
||||
├── vector_db/ # 【重构★】双轨向量库(绝不同步)
|
||||
│ ├── local/ # 本机私有内容向量化
|
||||
│ │ └── chroma/
|
||||
│ └── global/ # 协同知识库向量化(从agent-os重建)
|
||||
│ ├── keyword_index.json
|
||||
│ └── chroma/
|
||||
│
|
||||
├── runtime/ # 【保留】运行时缓存
|
||||
│ └── cache/
|
||||
│
|
||||
└── machine_info.json # 【新增★】本机环境描述
|
||||
# 含:主机名、OS、内存、角色、依赖清单
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 三、关键审核点(请逐一确认)
|
||||
|
||||
| # | 审核项 | 建议方案 | 需用户决策 |
|
||||
|---|--------|----------|------------|
|
||||
| ① | `03_knowledge/00_inbox/` → `03_knowledge/00_stream/inbox/` | 用新路径,旧路径做兼容软链接 | 是否保留旧00_inbox或完全迁移? |
|
||||
| ② | `04_memory/vector_db` 移除出协同目录 | 迁移到 `agent-os-local/vector_db/global/` | 确认向量库不参与多机同步 |
|
||||
| ③ | `agent-os-local/knowledge/` 新增 | 存放本机私有知识和项目过程 | 确认路径合适 |
|
||||
| ④ | `machine_info.json` 格式 | 见下方模板,自动生成+手动补充 | 确认字段范围 |
|
||||
| ⑤ | SKILL_CARD.yaml 是否所有技能都要加 | 只给自研技能(5个核心)加 | 确认 |
|
||||
|
||||
---
|
||||
|
||||
## 四、实施任务清单(第二步工作计划)
|
||||
|
||||
### Phase 1:目录结构落地(即可执行)
|
||||
- [x] 创建规划文档(本文件)
|
||||
- [ ] 创建 `agent-sync/03_knowledge/00_stream/inbox/{knowledge,memory,tools,personal,media}/`
|
||||
- [ ] 创建 `agent-os-local/knowledge/{projects,personal}/`
|
||||
- [ ] 创建 `agent-os-local/memory/long_term/`
|
||||
- [ ] 创建 `agent-os-local/vector_db/{local,global}/chroma/`
|
||||
- [ ] 创建 `agent-os/01_core/HOST_ID.md`
|
||||
- [ ] 创建 `agent-os/05_tools/01_system/skill_scanner.py`(如不存在)
|
||||
|
||||
### Phase 2:配置文件(目录确认后)
|
||||
- [ ] 为5个核心技能创建 `SKILL_CARD.yaml`
|
||||
- [ ] 创建 `agent-os-local/machine_info.json`
|
||||
- [ ] 创建 `_template/SKILL_CARD.yaml` 模板
|
||||
|
||||
### Phase 3:核心代码完善(最终实施)
|
||||
- [ ] **memory_extractor.py** — 记忆固化提取,检测固化条件,推送inbox/memory/
|
||||
- [ ] **kb_ingest.py 更新** — 适配新inbox多分区路径
|
||||
- [ ] **inbox_refine.py 更新** — 支持5分区不同处理逻辑
|
||||
- [ ] **collect_to_inbox.py 更新** — 扫描agent-os-local/materials/refined_for_inbox/
|
||||
- [ ] **kb_search.py 新增** — 双轨向量库检索,先local后global合并结果
|
||||
- [ ] **vector_db_rebuild.py 新增** — 重建向量库(local/global两套)
|
||||
|
||||
---
|
||||
|
||||
## 五、machine_info.json 模板
|
||||
|
||||
```json
|
||||
{
|
||||
"machine": {
|
||||
"id": "my-macbook_macOS14.4_16GB_master",
|
||||
"display_name": "My MacBook Air M1",
|
||||
"role": "master",
|
||||
"os": "macOS",
|
||||
"os_version": "14.4",
|
||||
"memory_gb": 16,
|
||||
"cpu": "Apple M1",
|
||||
"hostname": "my-macbook.local"
|
||||
},
|
||||
"environment": {
|
||||
"python_path": "~/.workbuddy/binaries/python/envs/agent-os/bin/python3",
|
||||
"agent_os_path": "~/workbuddy-agent-os/agent-sync",
|
||||
"agent_os_local_path": "~/workbuddy-agent-os/agent-local",
|
||||
"shell": "zsh"
|
||||
},
|
||||
"software": {
|
||||
"git_version": "",
|
||||
"obsidian": true,
|
||||
"workbuddy": true
|
||||
},
|
||||
"network": {
|
||||
"vpn_available": false,
|
||||
"notes": ""
|
||||
},
|
||||
"special_config": {},
|
||||
"last_updated": "2026-04-29",
|
||||
"auto_update": false
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 六、SKILL_CARD.yaml 标准模板
|
||||
|
||||
```yaml
|
||||
# SKILL_CARD.yaml —— 技能身份证(标准模板)
|
||||
skill:
|
||||
name: "技能名称"
|
||||
id: "skill_id"
|
||||
version: "1.0.0"
|
||||
category: "core-system" # core-system / user-custom / external
|
||||
status: "active" # active / inactive / experimental
|
||||
created: "2026-04-29"
|
||||
updated: "2026-04-29"
|
||||
|
||||
description:
|
||||
short: "一句话描述"
|
||||
use_cases: []
|
||||
tags: []
|
||||
|
||||
ownership:
|
||||
master_editor: "my-macbook_macOS14.4_16GB_master"
|
||||
readonly_on_other_devices: true
|
||||
|
||||
environment:
|
||||
os: "macos"
|
||||
python_path: "~/.workbuddy/binaries/python/envs/agent-os/bin/python3"
|
||||
pip_dependencies: []
|
||||
|
||||
setup:
|
||||
install_script: ""
|
||||
post_check: ""
|
||||
|
||||
usage:
|
||||
entry_point: "main.py"
|
||||
scheduled: ""
|
||||
manual_trigger: ""
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
> **【审核状态】** 请确认以上目录结构和计划后,回复"确认开始实施"或提出修改意见。
|
||||
> 确认后将进入第二步:实际创建目录、生成配置文件、完善核心代码。
|
||||
@@ -0,0 +1,139 @@
|
||||
# AgentOS 世界级知识库分类体系与全链路设计规范
|
||||
|
||||
> 版本:2026-04-29
|
||||
> 作者:AI+用户共创
|
||||
|
||||
---
|
||||
|
||||
## 一、收件箱(inbox)分区与跨界机制
|
||||
|
||||
收件箱是所有本地内容进入协同目录的唯一通道,分为五大分区:
|
||||
|
||||
```
|
||||
agent-sync/03_knowledge/00_stream/inbox/
|
||||
├── knowledge/ # 知识内容(外部采集提炼后的MD知识卡)
|
||||
├── memory/ # 记忆固化(本机记忆提炼的重要内容)
|
||||
├── tools/ # 工具提交(TOOL_CARD.yaml + 入口脚本)
|
||||
├── personal/ # 个人内容(笔记、语音转写、会议记录、随手记)
|
||||
└── media/ # 轻量媒体(关键图片、短音频片段)
|
||||
```
|
||||
|
||||
- 低权限主机只能通过inbox提交内容,高权限主机可直接写入协同目录。
|
||||
- 后期可扩展权限体系,当前以手动判断为主。
|
||||
|
||||
---
|
||||
|
||||
## 二、本机记忆固化机制
|
||||
|
||||
- 本机记忆(raw/)只有满足以下任一条件才可固化:
|
||||
1. 用户主动指定“固化”
|
||||
2. AI检测高频引用/反复出现
|
||||
3. 长期未被推翻且被引用多次
|
||||
- 固化后生成MD知识卡,推入inbox/memory/,由AI自动分类入库。
|
||||
- 不固化内容永远留在本机,不同步。
|
||||
|
||||
---
|
||||
|
||||
## 三、媒体同步边界
|
||||
|
||||
- 允许同步:
|
||||
- 关键知识附图(<500KB)
|
||||
- 重要截图(<1MB)
|
||||
- 精华语音片段(<2MB,已转写)
|
||||
- 项目产出设计稿(<2MB)
|
||||
- 不允许同步:
|
||||
- 完整视频/音频/高清图片/网页原始截图/单文件>5MB
|
||||
- 媒体与MD文件同目录,frontmatter标注attachments。
|
||||
|
||||
---
|
||||
|
||||
## 四、向量数据库架构
|
||||
|
||||
- 向量DB仅在本机重建,永不同步。
|
||||
- 协同知识库(MD文件)同步后,每台机器自动重建global向量库。
|
||||
- 本机私有内容单独建local向量库。
|
||||
- 检索时合并两层结果,优先本机,补充协同。
|
||||
|
||||
---
|
||||
|
||||
## 五、知识属性六大维度(frontmatter字段)
|
||||
|
||||
### 1. 知识本质属性(nature)
|
||||
- fact/concept/axiom/method/regulation/data/reference/opinion/quote/experience/insight/inspiration
|
||||
|
||||
### 2. 领域分类(domain)
|
||||
- 19大领域,含arts/health/culture等感官与人文类
|
||||
|
||||
### 3. 认知用途(cognitive_role)
|
||||
- foundational/actionable/reference/inspirational/contextual/evaluative
|
||||
|
||||
### 4. 个人主观属性
|
||||
- interest_level/practical_value/aesthetic_value/revisit_priority/mastery
|
||||
|
||||
### 5. 时效性(temporal)
|
||||
- evergreen/current/historical/trending/expires_at
|
||||
|
||||
### 6. 来源与可信度
|
||||
- source/source_type/confidence/machine_origin/author
|
||||
|
||||
---
|
||||
|
||||
## 六、frontmatter完整模板
|
||||
|
||||
```yaml
|
||||
---
|
||||
id: KB-20260429-001
|
||||
title: "知识标题"
|
||||
version: 1
|
||||
status: draft
|
||||
nature: concept
|
||||
domain: [ai]
|
||||
subdomain: [RAG, NLP]
|
||||
cognitive_role: actionable
|
||||
interest_level: 4
|
||||
practical_value: 3
|
||||
aesthetic_value: 0
|
||||
revisit_priority: medium
|
||||
mastery: understanding
|
||||
temporal: evergreen
|
||||
expires_at: ""
|
||||
source: ""
|
||||
source_type: literature
|
||||
confidence: 0.8
|
||||
machine_origin: "macbook-air-m1"
|
||||
author: ""
|
||||
track: world
|
||||
summary: "一句话摘要"
|
||||
tags: [标签1, 标签2]
|
||||
keywords: [关键词1, 关键词2]
|
||||
aliases: [别名1]
|
||||
date_created: 2026-04-29
|
||||
date_modified: 2026-04-29
|
||||
previous_version: ""
|
||||
superseded_by: ""
|
||||
related: []
|
||||
project_ref: ""
|
||||
has_attachment: false
|
||||
attachments: []
|
||||
---
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 七、字段分层与性价比建议
|
||||
|
||||
- 必填:id/title/nature/domain/confidence/date_created/status
|
||||
- 强烈建议:cognitive_role/summary/source/track
|
||||
- 按类型填:mastery/aesthetic_value/project_ref/expires_at
|
||||
- 其余可选,内容成熟后补充
|
||||
|
||||
---
|
||||
|
||||
## 八、整体链路总结
|
||||
|
||||
- 本机捕获(重)→本机加工(重)→本机精炼(轻MD)→inbox分区→AI分类入库→多轨道归档→归档/版本链→本机/协同向量库重建
|
||||
- 六大维度属性+分区收件箱+两层向量库,兼顾检索、创意、个性化、协同。
|
||||
|
||||
---
|
||||
|
||||
> 本规范为AgentOS知识管理系统vNext的顶层设计标准,后续如有补充请在本文件基础上增量修订。
|
||||
@@ -0,0 +1,193 @@
|
||||
# AgentOS vNext 讨论清单(2026-04-28)
|
||||
|
||||
## 一、待细化/待确认的核心议题
|
||||
|
||||
1. 向量库(vector_db)
|
||||
- 本地与全局的分工与同步机制
|
||||
- 向量库与知识内容的分离/融合方式
|
||||
- 多机向量同步的安全性与一致性
|
||||
2. 主机/维护机标识与权限体系
|
||||
- 主机唯一ID生成与管理
|
||||
- 主维护机的指定、切换与权限
|
||||
- 多机协同下的角色分工与冲突解决
|
||||
3. 知识库分类体系
|
||||
- 多级分类、标签体系的设计与落地
|
||||
- 领域/属性/标签的扩展与动态调整机制
|
||||
- 个人笔记、项目过程、记忆固化等特殊内容的归档策略
|
||||
4. 工具与技能的边界与互转
|
||||
- 工具与技能的定义、加载机制
|
||||
- CLI工具与自动化技能的互转标准
|
||||
- 何时应将工具升级为技能,反之亦然
|
||||
5. 本机数据说明与动态更新
|
||||
- 本机环境、硬件、软件、网络等数据的结构化存储
|
||||
- 自动/手动更新机制与token效率
|
||||
- 变更追踪与历史记录
|
||||
6. 同步/备份机制
|
||||
- agent-os 与 agent-os-local 的同步策略
|
||||
- 备份粒度、频率、冲突解决
|
||||
- 多机间的增量同步与恢复流程
|
||||
7. 项目过程与知识归档的分离与融合
|
||||
- 项目文档、过程记录与最终知识的转化机制
|
||||
- 归档标准与自动化流程
|
||||
8. 自动化任务与定时调度体系
|
||||
- 任务注册、启停、调度与监控
|
||||
- 多机环境下的任务分发与容错
|
||||
9. 其他(请补充)
|
||||
|
||||
---
|
||||
|
||||
## 二、任务细化清单(可持续补充)
|
||||
|
||||
- [ ] 设计向量库本地/全局结构与同步流程
|
||||
- [ ] 制定主机/维护机标识与权限管理方案
|
||||
- [ ] 优化知识库多级分类与标签体系
|
||||
- [ ] 明确工具与技能的互转标准与流程
|
||||
- [ ] 设计本机数据说明的结构与自动更新机制
|
||||
- [ ] 规划同步/备份的详细策略与实现步骤
|
||||
- [ ] 梳理项目过程与知识归档的转化流程
|
||||
- [ ] 设计自动化任务调度与监控体系
|
||||
- [ ] ...(后续补充)
|
||||
|
||||
---
|
||||
|
||||
## 三、讨论方向与预期(AI建议)
|
||||
|
||||
### 1. 全局视角
|
||||
- 以“多机协同+知识自进化”为核心,兼顾效率、可维护性与安全性
|
||||
- 强化自动化与智能化,减少人工干预
|
||||
- 结构化、标准化、可追溯,便于后续扩展
|
||||
|
||||
### 2. 细化建议
|
||||
- 每个议题可单独开子文件夹,沉淀方案、流程图、决策记录
|
||||
- 充分讨论后再进入开发,避免反复返工
|
||||
- 关键机制(如同步、权限、归档)优先原型验证
|
||||
|
||||
### 3. 预期目标
|
||||
- 明确每一项机制的“为什么/做什么/怎么做/如何验证”
|
||||
- 形成可落地的设计文档与任务分解
|
||||
- 逐步推进,阶段性评审与复盘
|
||||
|
||||
---
|
||||
|
||||
## 四、AI补充的全方位思考方向(供参考)
|
||||
|
||||
- 多机协同下的数据一致性与冲突解决最佳实践
|
||||
- 向量化知识检索的安全性与隐私保护
|
||||
- 个人与全局知识的边界与流转机制
|
||||
- 自动化任务的容错与自愈能力
|
||||
- 系统可观测性与监控体系建设
|
||||
- 版本管理与历史追溯的自动化
|
||||
- 用户体验与交互流程优化
|
||||
- 跨平台兼容性与迁移策略
|
||||
- ...(持续补充)
|
||||
|
||||
---
|
||||
|
||||
## 【2026-04-28 本机标识与角色机制简化方案】
|
||||
|
||||
- 每台机器只需配置一个唯一“主机名”或“身份名”,如:`my-macbook_macOS14.4_16GB_master`。
|
||||
- 名字建议包含:
|
||||
- 设备自定义名(如 my-macbook)
|
||||
- 系统版本(如 macOS14.4)
|
||||
- 内存(如 16GB)
|
||||
- 当前角色(如 master/maintainer)
|
||||
- 例如:`office-pc_Win11_32GB_maintainer`
|
||||
- 这样可一眼识别本机情况,角色切换只需手动改名,无需复杂权限体系。
|
||||
- 适合个人和小规模多机协同,简单高效,易于维护。
|
||||
|
||||
---
|
||||
|
||||
## 【2026-04-28 工具与技能边界、互转与迁移机制补充】
|
||||
|
||||
- 工具本身较重,依赖复杂环境,协同目录(如 agent-os/tools/)只同步“安装命令”“入口脚本”或“适配说明”,不直接同步所有依赖和环境。
|
||||
- 本地目录(agent-os-local/tools/)实际存放可执行脚本、依赖包、环境配置,确保工具能在本机落地运行。
|
||||
- 工具通过“标准化包装/描述文件”(如 TOOL_CARD.yaml),描述依赖、安装方式、适配平台、入口命令等,便于自动化部署和技能注册。
|
||||
- 支持“环境检测/自动适配”脚本,自动判断本地依赖是否齐全,缺失时友好提示或一键安装。
|
||||
- 技能本质是轻量化自动化脚本,调用本地已落地的工具,负责流程编排、输入输出标准化。
|
||||
- 工具与技能通过“标准化描述+适配层”灵活互转,协同目录轻量化,同步高效,落地灵活。
|
||||
- 工具卡和环境适配脚本为后续系统迁移、全量/部分备份、跨平台部署提供基础,迁移时只需同步描述和适配脚本,目标机自动完成环境适配和工具落地。
|
||||
|
||||
> 工具卡与环境适配机制将在“同步/备份机制”章节详细展开。
|
||||
|
||||
---
|
||||
|
||||
## 【2026-04-28 本机数据说明机制补充】
|
||||
|
||||
- 本机数据说明即“本机环境知识库”或“本机环境清单”,用于记录本机的硬件、系统、网络、环境变量、专用配置等关键信息。
|
||||
- 主要作用:
|
||||
- 让智能体/程序快速识别本机情况,避免每次都重新检测。
|
||||
- 便于记忆系统、自动化脚本、技能等直接读取和复用本机环境信息。
|
||||
- 记录本机专属设置(如内存大小、特殊端口、独有依赖等),不参与多机协同,仅本机使用。
|
||||
- 建议存储为结构化文件(如 environment.yaml、machine_info.json),并定期/按需自动更新,或手动补充特殊项。
|
||||
- 可作为记忆系统的一个专属分支,便于后续检索和自动化调用。
|
||||
|
||||
---
|
||||
|
||||
## 【2026-04-28 项目过程与知识归档的分离与融合机制补充】
|
||||
|
||||
- 项目过程、想法、实验性工具等内容,初期只保存在本机或本机项目知识库,支持高频变更和个性化探索。
|
||||
- 当项目或工具开发进入“转正”阶段(即具备通用价值、可协同复用):
|
||||
1. 在本机完成最终打包或生成安装脚本。
|
||||
2. 通过“收件箱”机制,将打包文件、安装脚本、说明文档等统一提交到协同目录的专用收件箱(如 agent-sync/03_knowledge/00_inbox/projects/)。
|
||||
3. 普通节点仅有提交权限,主机/维护机负责审核、验收和归档。
|
||||
4. 主机/维护机审核通过后,将工具/项目内容正式迁移到协同目录的工具区(如 agent-os/05_tools/),并将相关知识、说明文档归档到知识库(如 agent-sync/03_knowledge/)。
|
||||
5. 归档时添加元数据(如来源、归档时间、版本、作者等),便于追溯和管理。
|
||||
- 只有经过“收件箱-审核-归档”流程的内容,才会同步到多机协同,成为所有节点认可的“公共工具/知识”。
|
||||
- 未归档内容仅在本机或主机流转,避免半成品、实验性内容干扰全局协同。
|
||||
- 支持“项目过程-知识归档-全局共享”全流程的元数据记录,便于后续追溯和复盘。
|
||||
|
||||
> 该机制确保项目内容从本地探索到全局协同的转化过程有据可查、权限清晰、流程严谨。
|
||||
你的思路非常清晰,补充总结如下:
|
||||
|
||||
---
|
||||
|
||||
## 【2026-04-28 自动化任务与定时调度体系补充】
|
||||
|
||||
- 自动化任务(如记忆压缩、知识提炼、信息抓取等)在多机协同的同步目录中统一管理,每台主机都能获取完整任务清单。
|
||||
- 每台主机根据自身“主机名/角色”有选择性地启用相关任务:
|
||||
- 普通主机只启用本地记忆压缩、体验类任务。
|
||||
- 知识库管理主机启用知识提炼、归档、同步等核心任务。
|
||||
- 特殊主机可启用自动抓取、外部采集等定制任务。
|
||||
- 任务启用逻辑简单高效:只需在任务配置中标明适用角色或主机名,系统自动判断是否执行。
|
||||
- 不做复杂的分发、容错、调度体系,单机/小规模协同下以“角色驱动”实现任务分工,灵活易维护。
|
||||
- 如后续有多用户/大规模协同需求,可再扩展任务分发、容错等机制。
|
||||
|
||||
---
|
||||
|
||||
你的方案已非常适合个人和小团队场景,简单高效,易于落地和维护。如需,我可以帮你设计任务配置模板或角色-任务映射示例。
|
||||
|
||||
---
|
||||
|
||||
# 【2026-04-28 最新讨论补充】本地/全局记忆与知识库、向量库、同步机制设计
|
||||
|
||||
## 1. 目录与同步边界
|
||||
- `~/workbuddy-agent-os/agent-sync/`:所有内容都参与多机同步(知识库、协同收件箱、协同向量库等)。
|
||||
- `~/workbuddy-agent-os/agent-sync/agent-local/`:所有内容仅本机保存,绝不参与同步(本地记忆、个人笔记、本地素材等)。
|
||||
|
||||
## 2. 数据流转与提炼机制
|
||||
1. **本地记忆/个人笔记产生**
|
||||
- 存在于 `~/workbuddy-agent-os/agent-sync/agent-local/materials/`,如记忆系统自动提存、个人随手笔记等。
|
||||
2. **记忆/笔记提炼**
|
||||
- 用户可手动或自动将有价值的内容,从 `~/workbuddy-agent-os/agent-sync/agent-local/materials/` 提取到 `~/workbuddy-agent-os/agent-sync/03_knowledge/00_inbox/`(协同收件箱)。
|
||||
- 提取时可加属性(如“记忆”标签),以便后续分类。
|
||||
3. **知识库入库**
|
||||
- 协同收件箱只存 md 文件,知识管理系统定期/手动将内容加工、分类,正式入库到知识库(如 10_concepts、20_methods 等)。
|
||||
|
||||
## 3. 向量数据库设计
|
||||
- **本地向量库**:`~/workbuddy-agent-os/agent-sync/agent-local/` 下的所有内容(记忆、个人笔记等)向量化,仅本机检索。
|
||||
- **协同向量库**:`~/workbuddy-agent-os/agent-sync/` 下知识库内容向量化,参与多机同步和协同检索。
|
||||
- 检索时,默认先查本地向量库,再查协同向量库,结果合并展示,体验无割裂。
|
||||
|
||||
## 4. 分类与属性
|
||||
- 协同收件箱和知识库的 md 文件可通过 frontmatter 或标签标明来源(如“记忆提存”、“个人笔记”),方便后续分类和检索。
|
||||
- 知识库分类可灵活调整,不必强依赖文件名。
|
||||
|
||||
## 5. 机制总结
|
||||
- 本地内容完全隔离,隐私安全。
|
||||
- 有价值内容通过“提炼-收件箱-知识库”机制流转,保证协同知识的高质量和结构化。
|
||||
- 多机协同时,检索体验顺畅,既能查本地记忆,也能查全局知识。
|
||||
|
||||
---
|
||||
> 本节为 2026-04-28 讨论结论,后续如有新机制/细节调整请在此基础上补充。
|
||||
|
||||
---
|
||||
@@ -0,0 +1,35 @@
|
||||
# 归档:AVE 早期编号分层目录(2026-10-01)
|
||||
|
||||
## 归档原因
|
||||
|
||||
这 7 个目录是视频工厂**早期的分层规划残留**,每个目录只有一个 **0 字节的 `__init__.py`**,
|
||||
**没有任何实现**。真正的实现都在同级的**无编号目录**里:
|
||||
|
||||
| 归档目录(空壳) | 实际实现位置 |
|
||||
|:--|:--|
|
||||
| `01_director_parser/` | `director_parser/`(323 行) |
|
||||
| `02_voice_synthesizer/` | `voice_synthesizer/`(391 行) |
|
||||
| `03_bgm_generator/` | `bgm_generator/`(654 行) |
|
||||
| `04_anchor_extractor/` | `anchor_extractor/`(155 行) |
|
||||
| `05_material_producer/` | `material_producer/`(902 行) |
|
||||
| `06_composer/` | `composer/`(2635 行) |
|
||||
| `07_service_layer/` | `service_layer/`(271 行) |
|
||||
|
||||
## 为什么要归档
|
||||
|
||||
1. **避免误导**:两套目录并存,看起来"有两份实现",实际编号那份是空的
|
||||
2. **框架分层已换**:视频工厂框架(`PLANS/VIDEO_FACTORY_FRAMEWORK.md`)定义的新分层是
|
||||
`capabilities/`(能力层)· `directors/`(导演层)· `executor/`(编排层)· `assets/`(资产层),
|
||||
旧编号方案不再使用
|
||||
|
||||
## 影响与修复
|
||||
|
||||
- **`05_tools/07_matrix/scripts/agentos/plugins/ave.py`** 曾引用这些空壳路径
|
||||
(如 `01_director_parser/run.py`、`06_composer/run.py`、`07_service_layer/template_manager.py`),
|
||||
这些文件**本来就不存在**(引用早已失效)。该插件的路径已在同批次修正为指向真实目录。
|
||||
- 其余引用均为**源码注释里的历史标记**(如 `# AVE 06_composer — FFmpeg 合成模块`),无害。
|
||||
|
||||
## 恢复方式
|
||||
|
||||
如需找回:`git mv 90_archive/ave_legacy_numbered_dirs_20261001/<dir> 05_tools/09_ave/scripts/`
|
||||
(但按框架,不建议恢复)
|
||||
@@ -0,0 +1,30 @@
|
||||
# AgentOS 历史说明文档已归档
|
||||
|
||||
最后更新:2026-04-28
|
||||
|
||||
本文件原先承载的是一份大体量扩展说明,现已归档,不再作为 AgentOS v2.0 的正式基准。
|
||||
|
||||
## 当前正式入口
|
||||
|
||||
请优先查看:
|
||||
|
||||
1. `CORE-ARCHITECTURE.md`
|
||||
2. `V2.0-SUMMARY.md`
|
||||
3. `QUICKSTART.md`
|
||||
4. `REVIEW-V2.0.md`
|
||||
|
||||
## 历史归档位置
|
||||
|
||||
完整历史内容已移动到:
|
||||
|
||||
- `90_archive/docs/AgentOS-完整说明文档_副本.v2.1-history.md`
|
||||
|
||||
## 说明
|
||||
|
||||
归档原因不是内容无价值,而是其中混合了:
|
||||
|
||||
- 原形信息
|
||||
- 当前实现信息
|
||||
- 后续升级设想
|
||||
|
||||
为避免继续与 v2.0 基准冲突,现仅作为历史备忘保留。
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,721 @@
|
||||
# AgentOS 知识管理系统 —— 设计说明与操作指南
|
||||
|
||||
> **版本**:v1.0
|
||||
> **最后更新**:2026-04-28
|
||||
> **知识库路径**:`~/workbuddy-agent-os/agent-sync/03_knowledge/`(Obsidian Vault)
|
||||
> **面向读者**:需要了解本系统设计思路、分类逻辑、目录结构、工作流程的协作者
|
||||
|
||||
---
|
||||
|
||||
## 一、系统定位与设计理念
|
||||
|
||||
### 1.1 这是什么?
|
||||
|
||||
AgentOS 知识管理系统是一套**自动化知识采集→分类→归档→检索**的完整解决方案。它不是一个简单的文件分类目录,而是一个具有以下特征的**智能知识加工流水线**:
|
||||
|
||||
| 特征 | 说明 |
|
||||
|------|------|
|
||||
| **自动采集** | 多平台信息源(B站/YouTube/小红书/抖音/RSS/网页)24h 自动抓取 |
|
||||
| **智能分类** | 本地 LLM + 启发式规则自动判定知识的属性和领域 |
|
||||
| **标准化归档** | 每条知识都有统一的 Frontmatter 元数据、唯一 ID、版本链 |
|
||||
| **版本化管理** | 知识可进化(观点→事实、方法升级),旧版本自动保留 |
|
||||
| **语义检索** | BM25 + 向量混合检索,用自然语言找到知识 |
|
||||
| **双轨同步** | 坚果云实时同步 + Git 版本控制,跨设备安全可用 |
|
||||
|
||||
### 1.2 核心设计原则
|
||||
|
||||
1. **知识属性优先于内容类型**:不看"这是篇文章还是张图片",而看"这是事实、方法、还是观点"
|
||||
2. **两级分类正交设计**:**nature(知识属性)** 决定"放在哪个层",**domain(领域)** 决定"属于哪个学科",两者互不干扰
|
||||
3. **英文目录 + 中文映射**:目录名用英文(跨平台兼容、无乱码风险),通过配置文件提供中文别名
|
||||
4. **收件箱缓冲机制**:新内容不直接归档,先进入收件箱缓冲,由定时任务统一提纯
|
||||
5. **自动化优先**:每日凌晨自动完成:收集→汇聚→提纯→归档→更新统计,人工干预最少化
|
||||
|
||||
---
|
||||
|
||||
## 二、目录结构总览
|
||||
|
||||
```
|
||||
03_knowledge/
|
||||
├── 00_inbox/ # 📥 收件箱(缓冲区,所有新内容先进这里)
|
||||
├── 01_daily/ # 📅 日记(每日记录、闪念笔记)
|
||||
├── 10_concepts/ # 💡 概念层(原子概念、公理、知识卡片)
|
||||
├── 20_methods/ # 🔧 方法层(教程、最佳实践、操作步骤)
|
||||
├── 30_facts/ # 📋 事实层(客观事实、法规、数据)
|
||||
├── 40_references/ # 📎 参考层(论文、文档、外部资料)
|
||||
├── 50_resources/ # 🛠 资源层(视频笔记、阅读笔记、灵感素材等原始收集物)
|
||||
├── 60_opinions/ # 💭 观点层(主观看法、引用、推测)
|
||||
├── 90_archive/ # 🗄 归档层(已过时或废弃的知识)
|
||||
├── 99_system/ # ⚙️ 系统层(模板、分类表、提示词——不是知识内容)
|
||||
│ ├── templates/ # 知识卡片模板(4种)
|
||||
│ ├── taxonomies/ # 分类配置(领域表 + 属性表 + 中文映射)
|
||||
│ ├── prompts/ # LLM 分类提示词
|
||||
│ └── timelines/ # 知识版本时间线图(自动生成)
|
||||
├── README.md # 知识库首页(统计 + 导览)
|
||||
└── CHANGELOG.md # 知识库变更日志
|
||||
```
|
||||
|
||||
### 2.1 为什么这样分目录?
|
||||
|
||||
目录按**知识属性(nature)** 分层,每个数字前缀代表一个"知识层级":
|
||||
|
||||
| 目录 | 前缀 | 为什么设这个目录 | 里面放什么 |
|
||||
|------|------|------------------|------------|
|
||||
| `00_inbox` | 00 | **缓冲区**:新内容需要统一处理后才能精确分类,直接丢进来避免"不知道放哪"的决策负担 | 所有新采集/新收集的原始内容 |
|
||||
| `01_daily` | 01 | **时间维度**:有些知识是"某天的记录",有强时间属性,不适合按属性分类 | 日记、闪念笔记、每日总结 |
|
||||
| `10_concepts` | 10 | **知识原子**:概念是知识的"基本粒子",其他知识都建立在概念之上 | 概念定义、公理、术语解释 |
|
||||
| `20_methods` | 30 | **怎么做的**:方法是"行动指南",与其他知识有本质区别——它是可执行的 | 教程、步骤、最佳实践、操作手册 |
|
||||
| `30_facts` | 30 | **是什么**:事实是"世界的客观描述",可靠性最高 | 客观事实、法规制度、实验数据 |
|
||||
| `40_references` | 40 | **别人说的**:参考资料不是你的知识,而是"外部信息的索引" | 论文链接、文档引用、网页存档 |
|
||||
| `50_resources` | 50 | **原始素材**:这些是"未经加工的原材料",如视频笔记、截图、翻译等 | 视频笔记、阅读笔记、灵感素材、语音转写、字幕存档 |
|
||||
| `60_opinions` | 60 | **我觉得**:观点不是事实,需要明确标注可信度,避免与事实混淆 | 个人见解、他人语录、未验证的推测 |
|
||||
| `90_archive` | 90 | **过期的**:知识会过时(技术更新、事实变更),归档而非删除,保留历史可追溯 | 已被新知识替代的旧版本 |
|
||||
| `99_system` | 99 | **系统本身**:模板和配置不属于知识内容,单独隔离 | 模板文件、分类配置、提示词 |
|
||||
|
||||
**关键洞察**:`50_resources/` 和 `99_system/` 虽然也在知识库目录下,但它们**不是知识内容本身**——resources 是原始素材(等待被提纯),system 是系统配置(不参与知识流转)。
|
||||
|
||||
---
|
||||
|
||||
## 三、知识属性分类(nature)
|
||||
|
||||
这是整个系统最核心的设计。每条知识都有一个 `nature` 字段,它决定了这条知识**存放在哪个目录**。
|
||||
|
||||
### 3.1 九种知识属性
|
||||
|
||||
| nature 值 | 中文名 | 一句话定义 | 目标目录 | 默认可信度 | 举例 |
|
||||
|-----------|--------|------------|----------|-----------|------|
|
||||
| `fact` | 事实 | 已验证的客观事实 | `30_facts/` | 1.0 | "Python 3.12 于 2023-10-2 发布" |
|
||||
| `method` | 方法 | 可操作的步骤/教程 | `20_methods/` | 1.0 | "使用 Playwright 抓取 SPA 页面的 5 个步骤" |
|
||||
| `concept` | 概念 | 原子概念、术语定义 | `10_concepts/` | 0.8 | "RAG:检索增强生成,是结合检索和生成的 AI 范式" |
|
||||
| `axiom` | 公理 | 公认的基础原理 | `10_concepts/` | 1.0 | "欧几里得第五公设:过直线外一点有且仅有一条平行线" |
|
||||
| `regulation` | 规章 | 法律/法规/制度 | `30_facts/` | 1.0 | "《个人信息保护法》2021年11月1日起施行" |
|
||||
| `reference` | 参考 | 论文/文档/外部资料 | `40_references/` | 0.7 | "《Attention is All You Need》论文存档" |
|
||||
| `data` | 数据 | 测试数据/基准结果 | `30_facts/` | 0.9 | "M1 Mac 运行 LLaMA-7B 推理速度:32 tokens/s" |
|
||||
| `opinion` | 观点 | 主观看法/推测 | `60_opinions/` | 0.5 | "我认为 Agent 框架会比单体 LLM 更有前景" |
|
||||
| `quote` | 引用 | 他人原话/语录 | `60_opinions/` | 0.6 | "Joel Spolsky: 'The best code is no code at all'" |
|
||||
|
||||
### 3.2 为什么分 9 种?
|
||||
|
||||
这是一个**粒度权衡**的结果:
|
||||
|
||||
- **太粗(比如只分"事实"和"非事实")**:`concept`(定义)和 `method`(步骤)混在一起,检索时无法区分"我想查某个概念"还是"我想找某个方法"
|
||||
- **太细(比如分 20 种)**:分类成本太高,LLM 分类准确率下降,维护负担增加
|
||||
- **9 种是平衡点**:覆盖了日常知识的所有主要类型,每种之间有清晰的判定边界
|
||||
|
||||
### 3.3 分类决策树
|
||||
|
||||
当 LLM 或人工需要判定一条内容属于哪个 nature 时,使用以下决策树:
|
||||
|
||||
```
|
||||
这段内容是在描述"世界是什么样"还是在说"应该怎么做"?
|
||||
│
|
||||
├── "是什么" → 可能是 fact / opinion / quote / data / reference / axiom
|
||||
│ │
|
||||
│ ├── 有实验数据/论文支持?
|
||||
│ │ ├─ 是 → fact(confidence: 0.8+)
|
||||
│ │ └─ 否 ↓
|
||||
│ │
|
||||
│ ├── 是公认无需证明的原理?
|
||||
│ │ ├─ 是 → axiom(confidence: 0.95+)
|
||||
│ │ └─ 否 ↓
|
||||
│ │
|
||||
│ ├── 是作者的个人看法/推测?
|
||||
│ │ ├─ 是 → opinion(confidence: 0.4-0.6)
|
||||
│ │ └─ 否 ↓
|
||||
│ │
|
||||
│ ├── 是引用的他人原话?
|
||||
│ │ ├─ 是 → quote(confidence: 标注来源可信度)
|
||||
│ │ └─ 否 ↓
|
||||
│ │
|
||||
│ ├── 是外部资料的链接/存档?
|
||||
│ │ ├─ 是 → reference(confidence: 0.7)
|
||||
│ │ └─ 否 ↓
|
||||
│ │
|
||||
│ └── 是测试数据/基准结果?
|
||||
│ ├─ 是 → data(confidence: 0.9)
|
||||
│ └─ 否 → 默认 reference
|
||||
│
|
||||
└── "怎么做" → 可能是 method / regulation
|
||||
│
|
||||
├── 有法律/组织的强制力?
|
||||
│ ├─ 是 → regulation(confidence: 1.0)
|
||||
│ └─ 否 → method(confidence: 1.0)
|
||||
```
|
||||
|
||||
### 3.4 属性变更规则
|
||||
|
||||
知识不是静态的,它的属性可能随着时间变化:
|
||||
|
||||
| 变化场景 | 处理方式 | 示例 |
|
||||
|----------|----------|------|
|
||||
| 观点被验证为事实 | `opinion` → `fact`,confidence 提升,文件移动到 `30_facts/` | "我推测 GPT-5 会在2025发布" → OpenAI 实际发布了 |
|
||||
| 事实被推翻 | `fact` → `opinion`,confidence 降低,文件移动到 `60_opinions/` | "地球是平的" 被科学推翻 |
|
||||
| 方法升级 | 保留旧版本文件,新建 v2 文件,通过 `related` 双向链接 | "部署方案 v1" → "部署方案 v2(Docker化)" |
|
||||
| 知识过时 | 移动到 `90_archive/`,标记 `status: archived` | "Python 2.x 的字符串编码处理" |
|
||||
|
||||
> **注意**:所有属性变更都保留历史版本,不是直接覆盖。`previous_version` 和 `superseded_by` 字段构成版本链。
|
||||
|
||||
---
|
||||
|
||||
## 四、领域分类(domain)
|
||||
|
||||
领域分类解决的是"这条知识属于哪个学科/行业"的问题,与 nature 正交。
|
||||
|
||||
### 4.1 16 个一级领域
|
||||
|
||||
| 编号 | 英文目录名 | 中文名称 | 典型子领域 |
|
||||
|------|-----------|----------|-----------|
|
||||
| 01 | `cs` | 计算机科学 | 数据库、前端、后端、运维、安全 |
|
||||
| 02 | `ai` | 人工智能 | NLP、CV、强化学习、RAG、Agent |
|
||||
| 03 | `finance` | 金融 | 量化交易、价值投资、宏观经济 |
|
||||
| 04 | `law` | 法律 | 民法、商法、知识产权 |
|
||||
| 05 | `medicine` | 医学 | 中医、西医、营养学 |
|
||||
| 06 | `physics` | 物理 | 量子力学、相对论、热力学 |
|
||||
| 07 | `math` | 数学 | 线性代数、概率统计、微积分 |
|
||||
| 08 | `psychology` | 心理学 | 认知心理学、社会心理学 |
|
||||
| 09 | `philosophy` | 哲学 | 认识论、伦理学、美学 |
|
||||
| 10 | `history` | 历史 | 中国史、世界史、科技史 |
|
||||
| 11 | `engineering` | 工程 | 机械、电子、土木 |
|
||||
| 12 | `design` | 设计 | UI/UX、平面设计、建筑设计 |
|
||||
| 13 | `business` | 商业 | 创业、管理、营销、战略 |
|
||||
| 14 | `personal-management` | 个人管理 | GTD、番茄工作法、精力管理 |
|
||||
| 15 | `personal-insight` | 个人洞见 | 决策模型、价值观、反思 |
|
||||
| 16 | `other` | 其他 | 暂未归类 |
|
||||
|
||||
### 4.2 领域 vs 属性:正交关系
|
||||
|
||||
一条知识的**最终存储位置**由两者共同决定:
|
||||
|
||||
```
|
||||
物理路径 = 目标目录(由 nature 决定)+ 领域子目录(由 domain 决定)
|
||||
```
|
||||
|
||||
**示例**:
|
||||
|
||||
| 知识标题 | nature | domain | 物理路径 |
|
||||
|----------|--------|--------|----------|
|
||||
| Transformer 架构解析 | concept | ai | `10_concepts/ai/transformer-架构解析.md` |
|
||||
| macOS 终端快捷键 | method | cs | `20_methods/cs/macos-终端快捷键.md` |
|
||||
| 2026年Q1 GDP 增速 5.4% | fact | finance | `30_facts/finance/2026q1-gdp.md` |
|
||||
| 价值投资核心理念 | opinion | finance | `60_opinions/finance/价值投资核心理念.md` |
|
||||
| GTD 工作流详解 | method | personal-management | `20_methods/personal-management/gdt-工作流.md` |
|
||||
|
||||
### 4.3 领域扩展规则
|
||||
|
||||
- 当 `other/` 类别下的文件数**超过总文件数的 5%** 时,系统会提示新增领域
|
||||
- 新领域需同时定义:中文名称、英文目录名、说明、典型子领域
|
||||
- 新增后需更新两个文件:`domains.md`(分类表)和 `folder-aliases.json`(中文映射)
|
||||
|
||||
---
|
||||
|
||||
## 五、知识卡片模板
|
||||
|
||||
每条归档的知识都是一个标准化的 Markdown 文件,使用对应的卡片模板。模板保证了知识的**结构一致性**,便于检索和版本管理。
|
||||
|
||||
### 5.1 为什么用 4 种模板而非 1 种?
|
||||
|
||||
不同属性的知识需要记录的信息完全不同:
|
||||
|
||||
| 属性 | 需要记录的关键信息 | 模板 |
|
||||
|------|-------------------|------|
|
||||
| 概念 | 定义、原理、与相关概念的区别 | `concept-card.md` |
|
||||
| 方法 | 目标、前置条件、步骤、常见问题 | `method-card.md` |
|
||||
| 事实 | 数据来源、事实内容表格、结论 | `fact-card.md` |
|
||||
| 个人洞见 | 背景、核心观点、可复用原则、验证项 | `personal-insight-card.md` |
|
||||
|
||||
如果用一种"万能模板",要么字段太多(大量留空),要么字段太少(丢失关键信息)。
|
||||
|
||||
### 5.2 模板一:概念卡片(concept-card.md)
|
||||
|
||||
**适用**:`nature: concept` 和 `nature: axiom`
|
||||
|
||||
```yaml
|
||||
---
|
||||
id: KB-YYYYMMDD-NNN # 唯一标识符(自动生成)
|
||||
title: "__概念名称__"
|
||||
type: concept # 卡片类型
|
||||
status: draft # 状态:draft/review/published/archived
|
||||
nature: fact # 知识属性
|
||||
domain: [计算机科学] # 领域(1-3个)
|
||||
subdomain: [] # 子领域(可选)
|
||||
tags: [__标签1__, __标签2__] # 检索标签
|
||||
confidence: 0.8 # 可信度(0-1)
|
||||
source: "" # 来源 URL
|
||||
source_type: literature # 来源类型
|
||||
date_created: __DATE__ # 创建日期
|
||||
date_modified: __DATE__ # 最后修改日期
|
||||
version: 1 # 版本号
|
||||
aliases: [__别称__] # 别名(方便不同叫法都能找到)
|
||||
keywords: [__关键词__] # 关键词(用于 BM25 检索)
|
||||
summary: "__一句话摘要__" # 摘要(用于 L2 摘要层检索)
|
||||
related: [] # 关联知识(双向链接)
|
||||
previous_version: "" # 上一版本 KB-ID
|
||||
superseded_by: "" # 被哪个版本替代
|
||||
---
|
||||
```
|
||||
|
||||
**正文结构**:
|
||||
1. **一句话定义**:用最简洁的语言定义
|
||||
2. **核心原理**:3-5 个要点
|
||||
3. **与相关概念的区别**:对比表格(擅长/不擅长)
|
||||
4. **主流选择/实现**:业界常见方案
|
||||
5. **相关概念**:`[[双向链接]]`
|
||||
|
||||
**设计意图**:概念卡片的目标是"让读者 30 秒内理解一个概念"。一句话定义是核心,其余部分提供上下文。
|
||||
|
||||
### 5.3 模板二:方法卡片(method-card.md)
|
||||
|
||||
**适用**:`nature: method`
|
||||
|
||||
```yaml
|
||||
---
|
||||
id: KB-YYYYMMDD-NNN
|
||||
title: "__方法/教程标题__"
|
||||
type: method
|
||||
status: published
|
||||
nature: method
|
||||
domain: [__领域__]
|
||||
confidence: 1.0
|
||||
source: "__来源__"
|
||||
date_created: __DATE__
|
||||
date_modified: __DATE__
|
||||
version: 1
|
||||
previous_version: ""
|
||||
superseded_by: ""
|
||||
---
|
||||
```
|
||||
|
||||
**正文结构**:
|
||||
1. **目标**:这个方法解决什么问题?
|
||||
2. **前置条件**:需要什么才能执行
|
||||
3. **步骤**:编号步骤 + 代码示例
|
||||
4. **注意事项**:踩过的坑
|
||||
5. **常见问题**:问题-原因-方案 三列表格
|
||||
6. **历史版本**:变更记录
|
||||
|
||||
**设计意图**:方法卡片的目标是"让读者照着做就能成功"。步骤是核心,常见问题是防错保障。
|
||||
|
||||
### 5.4 模板三:事实卡片(fact-card.md)
|
||||
|
||||
**适用**:`nature: fact`、`nature: regulation`、`nature: data`
|
||||
|
||||
```yaml
|
||||
---
|
||||
id: KB-YYYYMMDD-NNN
|
||||
title: "__事实标题__"
|
||||
type: fact
|
||||
status: published
|
||||
nature: fact
|
||||
domain: [__领域__]
|
||||
confidence: 0.9
|
||||
source: "__来源URL或出处__"
|
||||
source_type: experiment|literature|official_doc|personal_exp
|
||||
date_created: __DATE__
|
||||
date_modified: __DATE__
|
||||
version: 1
|
||||
previous_version: ""
|
||||
superseded_by: ""
|
||||
---
|
||||
```
|
||||
|
||||
**正文结构**:
|
||||
1. **数据来源**:来源说明、测试环境、文献出处
|
||||
2. **事实内容**:维度-值-备注 三列表格
|
||||
3. **结论**:基于事实得出的结论
|
||||
4. **历史版本**:变更记录
|
||||
|
||||
**设计意图**:事实卡片的目标是"可追溯、可验证"。`source` 和 `source_type` 是关键——没有来源的事实不可信。
|
||||
|
||||
### 5.5 模板四:个人洞见卡片(personal-insight-card.md)
|
||||
|
||||
**适用**:`nature: opinion`(特别是个人洞见类)
|
||||
|
||||
```yaml
|
||||
---
|
||||
id: KB-YYYYMMDD-NNN
|
||||
title: "__个人洞见标题__"
|
||||
type: concept
|
||||
status: draft # 洞见默认 draft,需验证后才 published
|
||||
nature: opinion
|
||||
domain: [个人洞见]
|
||||
tags: [__标签1__, __标签2__]
|
||||
confidence: 0.6 # 洞见默认 0.6(不高不低)
|
||||
source_type: personal_exp # 来源类型固定为个人经验
|
||||
date_created: __DATE__
|
||||
date_modified: __DATE__
|
||||
version: 1
|
||||
previous_version: ""
|
||||
superseded_by: ""
|
||||
---
|
||||
```
|
||||
|
||||
**正文结构**:
|
||||
1. **背景**:什么情境下产生的
|
||||
2. **核心观点**:一句话概括
|
||||
3. **详细思考**:推理过程
|
||||
4. **可复用的原则**:抽象出来的通用规则
|
||||
5. **相关经历**:案例支撑
|
||||
6. **后续验证**:待验证项 checklist
|
||||
|
||||
**设计意图**:个人洞见是"最有价值但最不可靠"的知识类型。默认 `status: draft` 和 `confidence: 0.6`,通过"后续验证"机制逐步提升可信度。当验证通过后可升级为 `fact`。
|
||||
|
||||
---
|
||||
|
||||
## 六、Frontmatter 字段详解
|
||||
|
||||
所有知识卡片共享一套 Frontmatter 字段体系。以下是每个字段的含义和用途:
|
||||
|
||||
### 6.1 必填字段
|
||||
|
||||
| 字段 | 类型 | 说明 | 示例 |
|
||||
|------|------|------|------|
|
||||
| `id` | string | 唯一标识符,自动生成 | `KB-20260428-001` |
|
||||
| `title` | string | 知识标题 | `"Transformer 架构详解"` |
|
||||
| `type` | enum | 卡片类型(与模板对应) | `concept` / `method` / `fact` |
|
||||
| `status` | enum | 生命周期状态 | `draft` / `review` / `published` / `archived` |
|
||||
| `nature` | enum | 知识属性(9种) | `fact` / `method` / `concept` / ... |
|
||||
| `domain` | list | 领域分类(1-3个) | `[人工智能, 计算机科学]` |
|
||||
| `confidence` | float | 可信度(0-1) | `0.85` |
|
||||
| `source` | string | 来源 URL 或出处 | `"https://arxiv.org/abs/1706.03762"` |
|
||||
| `date_created` | date | 创建日期 | `2026-04-28` |
|
||||
| `date_modified` | date | 最后修改日期 | `2026-04-28` |
|
||||
| `version` | int | 版本号 | `1` |
|
||||
|
||||
### 6.2 可选字段
|
||||
|
||||
| 字段 | 类型 | 说明 | 示例 |
|
||||
|------|------|------|------|
|
||||
| `subdomain` | list | 子领域 | `[自然语言处理, 大模型]` |
|
||||
| `tags` | list | 标签(用于检索) | `[transformer, attention, nlp]` |
|
||||
| `author` | string | 作者 | `"Ashish Vaswani"` |
|
||||
| `source_type` | enum | 来源类型 | `official_doc` / `literature` / `personal_exp` / `social_media` / `unknown` |
|
||||
| `related` | list | 关联知识的 KB-ID | `["KB-20260425-003"]` |
|
||||
| `previous_version` | string | 上一版本的 KB-ID | `KB-20260420-001` |
|
||||
| `superseded_by` | string | 被哪个新版本替代 | `KB-20260428-002` |
|
||||
| `aliases` | list | 别名/同义词 | `[Self-Attention, 自注意力机制]` |
|
||||
| `keywords` | list | 关键词(BM25 检索用) | `[attention, self-attention, transformer]` |
|
||||
| `summary` | string | 一句话摘要 | `"Transformer 是一种基于自注意力机制的序列建模架构"` |
|
||||
|
||||
### 6.3 可信度评分(confidence)
|
||||
|
||||
可信度不是"我信不信",而是**来源的客观可靠程度**:
|
||||
|
||||
| source_type | confidence | 说明 |
|
||||
|-------------|-----------|------|
|
||||
| `official_doc` | 0.9 | 官方文档、法律文本 |
|
||||
| `literature` | 0.8 | 学术论文、经过同行评审 |
|
||||
| `experiment` | 0.7 | 自己实验验证过 |
|
||||
| `personal_exp` | 0.5 | 个人经验(可能有偏差) |
|
||||
| `social_media` | 0.3 | 社交媒体(可靠性低) |
|
||||
| `unknown` | 0.4 | 来源不明 |
|
||||
|
||||
**知识入库时的自动修正**:基础分 0.5,然后根据来源类型加减:
|
||||
- 官方文档/学术论文:+0.3
|
||||
- 知名技术博客/行业报告:+0.1
|
||||
- 个人博客/论坛帖子:-0.1
|
||||
- 未知来源/社交媒体:-0.3
|
||||
|
||||
---
|
||||
|
||||
## 七、知识生命周期
|
||||
|
||||
一条知识从"发现"到"归档"的完整生命周期:
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────────┐
|
||||
│ 知识生命周期 │
|
||||
└──────────────────────────────────────────────────┘
|
||||
|
||||
① 发现/采集 ② 汇聚 ③ 提纯/分类
|
||||
┌───────────┐ ┌──────────┐ ┌───────────────┐
|
||||
│ 多平台采集 │───原始──→│ 收件箱 │──标准──→│ 分类 + 模板化 │
|
||||
│ B站/小红书 │ 内容 │ 00_inbox │ MD │ + ID 生成 │
|
||||
│ RSS/网页 │ │ │ │ + 去重检查 │
|
||||
└───────────┘ └──────────┘ └───────┬───────┘
|
||||
│
|
||||
┌─────────────────────────────────┤
|
||||
│ │
|
||||
▼ ▼
|
||||
④ 归档入库 ⑤ 持续进化
|
||||
┌──────────────┐ ┌──────────────────┐
|
||||
│ 按nature分配 │ │ 属性变更 │
|
||||
│ 到目标目录 │ │ opinion → fact │
|
||||
│ + domain子目录│ │ method v1 → v2 │
|
||||
│ + 更新统计 │ │ 过时 → archive │
|
||||
└──────────────┘ └──────────────────┘
|
||||
```
|
||||
|
||||
### 7.1 各阶段详情
|
||||
|
||||
#### 阶段①:自动采集
|
||||
|
||||
| 信息源 | 采集工具 | 保存位置 | 频率 |
|
||||
|--------|----------|----------|------|
|
||||
| B站/YouTube 订阅 | BiliNote | `50_resources/视频笔记/` | 每 30 分钟 |
|
||||
| 小红书博主 | TikOmni | `50_resources/灵感素材/` | 每 2 小时 |
|
||||
| 抖音账号 | TikOmni | `50_resources/灵感素材/` | 每 2 小时 |
|
||||
| RSS 订阅源 | feedparser | `40_references/` | 每 15 分钟 |
|
||||
| 指定网页 | Crawl4AI | `40_references/` | 每 1 小时 |
|
||||
|
||||
#### 阶段②:汇聚收件箱(collect_to_inbox 技能)
|
||||
|
||||
- **执行时间**:每日凌晨 2:30
|
||||
- **做什么**:扫描 `50_resources/`、`20_methods/`、`40_references/`、`01_daily/` 等目录中的文件,提取主要内容生成标准化 MD,放入 `00_inbox/`
|
||||
- **去重**:同名/同标题文件跳过,已标记 `collected: true` 的跳过
|
||||
|
||||
#### 阶段③:提纯分类(inbox_refine 技能)
|
||||
|
||||
- **执行时间**:每日凌晨 3:00
|
||||
- **做什么**:
|
||||
1. 读取 `00_inbox/` 所有文件
|
||||
2. 用本地 LLM(oMLX + Qwen 模型)或启发式规则判定 nature + domain
|
||||
3. 应用对应卡片模板
|
||||
4. 生成唯一 ID(格式 `KB-YYYYMMDD-NNN`)
|
||||
5. 去重检查(标题相似度 > 0.8 则合并)
|
||||
6. 写入目标目录
|
||||
7. 删除收件箱原文件
|
||||
8. 更新首页统计和变更日志
|
||||
|
||||
#### 阶段④:归档入库
|
||||
|
||||
归档后的知识文件名格式:`{标题}.md`,存储在 `{nature对应目录}/{domain}/` 下。
|
||||
|
||||
#### 阶段⑤:持续进化
|
||||
|
||||
| 变化类型 | 触发条件 | 处理 |
|
||||
|----------|----------|------|
|
||||
| 属性变更 | 观点被验证/事实被推翻 | 更新 nature,移动文件,更新内链 |
|
||||
| 版本升级 | 方法有更好的方案 | 保留旧版,新建 v2,双向链接 |
|
||||
| 过期归档 | 180 天未更新的技术知识 | 标记 `archived`,移入 `90_archive/` |
|
||||
| 知识修补 | 用户纠正 AI 输出 | 更新 confidence,记录修正日志 |
|
||||
|
||||
---
|
||||
|
||||
## 八、自动分类的实现机制
|
||||
|
||||
### 8.1 LLM 分类(主要方式)
|
||||
|
||||
使用本地 LLM(oMLX + Qwen2.5-VL-3B)调用以下提示词进行分类:
|
||||
|
||||
```
|
||||
你是一个知识分类助手。请对以下内容进行分析,返回 JSON 格式。
|
||||
|
||||
输入:{{content}}
|
||||
|
||||
输出:
|
||||
{
|
||||
"domain": ["领域1", "领域2"], // 从16个领域中选择1-3个
|
||||
"nature": "fact", // 从9种属性中选择
|
||||
"confidence": 0.85, // 可信度评分
|
||||
"tags": ["标签1", "标签2"], // 3-5个标签
|
||||
"summary": "一句话摘要" // 60字以内
|
||||
}
|
||||
```
|
||||
|
||||
**降级机制**:当 LLM 不可用时,自动切换到基于关键词的启发式规则分类。
|
||||
|
||||
### 8.2 置信度阈值
|
||||
|
||||
- LLM 分类信心度 ≥ 0.4 → 采用 LLM 结果
|
||||
- LLM 分类信心度 < 0.4 → 保留在 `00_inbox/`,标记 `#待分类`,等人工处理
|
||||
|
||||
### 8.3 去重策略
|
||||
|
||||
| 检测维度 | 阈值 | 处理 |
|
||||
|----------|------|------|
|
||||
| 标题完全一致 | 100% | 跳过,记录日志 |
|
||||
| 标题相似度 | > 0.8 | 合并(补充细节到已有文件) |
|
||||
| 内容完全一致 | 100% | 跳过 |
|
||||
| 同一事实新旧矛盾 | — | 新事实覆盖,旧值写入 `previous_version` |
|
||||
|
||||
---
|
||||
|
||||
## 九、知识检索机制
|
||||
|
||||
### 9.1 检索分层
|
||||
|
||||
```
|
||||
用户提问
|
||||
↓
|
||||
L1 关键词索引(BM25) ←── 快速粗筛
|
||||
├─ 无匹配 → 返回"无相关记忆"
|
||||
└─ 有匹配 ↓
|
||||
L2 结构化摘要(SQLite facts.db) ←── 精确匹配
|
||||
├─ 置信度 ≥ 0.7 → 返回摘要
|
||||
└─ 置信度 < 0.7 → 截止,返回"无高置信结果"
|
||||
↓
|
||||
【不自动加载原文】
|
||||
仅用户明确要求时 → L3 按行号加载原文片段
|
||||
```
|
||||
|
||||
### 9.2 混合检索
|
||||
|
||||
- **BM25(关键词匹配)**:适合精确术语检索,如"RAG"、"transformer"
|
||||
- **向量检索(ChromaDB + Qwen3-Embedding-0.6B)**:适合语义相似检索,如"怎么让 AI 记住之前说过的话"
|
||||
- **RRF(倒数秩融合)**:将两路结果合并排序
|
||||
|
||||
### 9.3 检索不加载全文
|
||||
|
||||
这是关键设计——检索时只返回摘要和行号片段,不加载整个文件。原因:
|
||||
1. **节省 token**:一个知识文件可能有几千字,但用户只需要其中的一个段落
|
||||
2. **保护隐私**:L3 原文层不暴露给外部 API
|
||||
3. **按需加载**:用户看到摘要后,觉得需要更多细节,再按行号加载指定片段
|
||||
|
||||
---
|
||||
|
||||
## 十、版本管理与时间线
|
||||
|
||||
### 10.1 三种变化类型
|
||||
|
||||
| 变化类型 | 举例 | 处理 |
|
||||
|----------|------|------|
|
||||
| **硬事实改变** | 服务器配置从 4C8G → 8C16G | 原地更新,旧值写入 `previous_version` |
|
||||
| **软升级** | 方法 V1 → V2(V1 仍有参考价值) | 保留 V1 文件,新建 V2,通过 `related` 双向链接 |
|
||||
| **观点→事实** | 推测经过验证变为可靠知识 | 更新 `nature`,提升 `confidence`,移动到对应目录 |
|
||||
|
||||
### 10.2 版本链
|
||||
|
||||
每条知识的 Frontmatter 中维护版本信息:
|
||||
|
||||
```yaml
|
||||
version: 2
|
||||
previous_version: KB-20260420-001 # 我是从哪个版本进化来的
|
||||
superseded_by: "" # 我是否被新版本替代(空=当前有效)
|
||||
```
|
||||
|
||||
当一条知识经过 **3 次以上重要更新**,系统自动在 `99_system/timelines/` 下生成 Mermaid 时间线图。
|
||||
|
||||
---
|
||||
|
||||
## 十一、中文映射机制
|
||||
|
||||
### 11.1 为什么用英文目录名?
|
||||
|
||||
- **跨平台兼容**:中文路径在 Windows/Git/NFS 等环境下容易出现编码问题
|
||||
- **脚本友好**:Shell 脚本、Python 路径拼接不会因为中文出 bug
|
||||
- **Git 友好**:避免提交时的文件名编码歧义
|
||||
|
||||
### 11.2 中文映射怎么工作?
|
||||
|
||||
`folder-aliases.json` 提供完整的目录中文映射:
|
||||
|
||||
```json
|
||||
{
|
||||
"knowledge": {
|
||||
"00_inbox": "收件箱",
|
||||
"10_concepts": "概念层",
|
||||
"20_methods": "方法层",
|
||||
"30_facts": "事实层",
|
||||
...
|
||||
},
|
||||
"concepts_domains": {
|
||||
"cs": "计算机科学",
|
||||
"ai": "人工智能",
|
||||
...
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**使用场景**:
|
||||
- LLM 分类时,输出中文领域名("人工智能"),系统查表得到英文目录名(`ai`),用于拼接物理路径
|
||||
- 知识库首页展示时,读取映射表显示中文名称
|
||||
- 日志和通知中显示中文名,方便阅读
|
||||
|
||||
---
|
||||
|
||||
## 十二、配置文件清单
|
||||
|
||||
知识管理系统的所有配置集中在 `99_system/` 目录下:
|
||||
|
||||
| 文件 | 路径 | 作用 |
|
||||
|------|------|------|
|
||||
| 领域分类表 | `99_system/taxonomies/domains.md` | 定义 16 个一级领域及其子领域 |
|
||||
| 属性分类表 | `99_system/taxonomies/nature-types.md` | 定义 9 种 nature 类型 + 分类决策树 |
|
||||
| 中文映射 | `99_system/taxonomies/folder-aliases.json` | 英文目录 ↔ 中文名映射(JSON) |
|
||||
| 概念卡片模板 | `99_system/templates/concept-card.md` | 概念/公理知识模板 |
|
||||
| 方法卡片模板 | `99_system/templates/method-card.md` | 方法/教程知识模板 |
|
||||
| 事实卡片模板 | `99_system/templates/fact-card.md` | 事实/法规/数据知识模板 |
|
||||
| 个人洞见模板 | `99_system/templates/personal-insight-card.md` | 个人见解/反思模板 |
|
||||
| 分类提示词 | `99_system/prompts/classify-knowledge.md` | LLM 自动分类的 Prompt 模板 |
|
||||
|
||||
---
|
||||
|
||||
## 十三、自动化任务时间表
|
||||
|
||||
知识管理涉及的定时任务:
|
||||
|
||||
| 时间 | 任务 | 技能 | 说明 |
|
||||
|------|------|------|------|
|
||||
| 02:00 | 每日记忆提炼 | memory_manager | 提炼昨日对话为结构化记忆 |
|
||||
| 02:30 | 收件箱汇聚 | collect_to_inbox | 扫描各目录 → 提取 → 放入 00_inbox |
|
||||
| 03:00 | 收件箱提纯 | inbox_refine | 00_inbox → 分类 + 模板化 → 归档 |
|
||||
| 23:00 | 采集日报汇总 | auto_collector | 汇总当日采集数据 |
|
||||
|
||||
---
|
||||
|
||||
## 十四、操作速查
|
||||
|
||||
### 14.1 手动操作命令
|
||||
|
||||
| 操作 | 说/触发词 | 系统行为 |
|
||||
|------|-----------|----------|
|
||||
| 入库知识 | "入库"、"保存知识" | 内容 → `00_inbox/` |
|
||||
| 提纯收件箱 | "提纯"、"inbox refine" | `00_inbox/` → 分类归档 |
|
||||
| 汇聚收件箱 | "归集"、"collect inbox" | 各目录 → `00_inbox/` |
|
||||
| 知识检索 | "查知识库"、"知识检索" | L2 摘要检索 → 返回结果 |
|
||||
| 重分类 | "知识重分类" | 更新 nature → 移动文件 |
|
||||
| 备份知识库 | "知识备份" | 全量/增量备份 |
|
||||
|
||||
### 14.2 手动添加知识的步骤
|
||||
|
||||
1. 将内容保存到 `00_inbox/`(手动创建 .md 文件,或说"入库 xxx")
|
||||
2. 系统会在下次提纯时(凌晨 3:00 或手动触发)自动分类
|
||||
3. 分类后可在对应目录找到标准化知识卡片
|
||||
|
||||
### 14.3 直接归档(跳过收件箱)
|
||||
|
||||
对于已经有明确分类的知识,可以直接使用 `kb_manager` 的入库功能指定 nature 和 domain,跳过收件箱直接写入目标目录。
|
||||
|
||||
---
|
||||
|
||||
## 十五、知识库首页统计
|
||||
|
||||
知识库首页 `README.md` 自动维护统计信息:
|
||||
|
||||
```
|
||||
| 英文目录 | 中文名称 | 文件数 | 最近更新 |
|
||||
|----------|----------|--------|----------|
|
||||
| 10_concepts | 概念层 | 1 | 2026-04-28 |
|
||||
| 20_methods | 方法层 | 0 | — |
|
||||
| 30_facts | 事实层 | 0 | — |
|
||||
| ... | ... | ... | ... |
|
||||
```
|
||||
|
||||
每次 inbox_refine 执行后自动刷新。
|
||||
|
||||
变更日志 `CHANGELOG.md` 记录每次归档操作:
|
||||
|
||||
```markdown
|
||||
## 2026-04-28
|
||||
|
||||
### 归档
|
||||
- [concept] 测试 LLM 分类器 → 10_concepts/ (KB-20260428-001)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 十六、总结:知识管理系统的核心逻辑
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 设计哲学 │
|
||||
│ │
|
||||
│ ① 知识是活的:可以进化、可以被修正、有过期时间 │
|
||||
│ ② 分类是正交的:属性(nature)× 领域(domain) │
|
||||
│ ③ 自动化优先:采集→汇聚→提纯→归档 全自动 │
|
||||
│ ④ 可追溯性:每条知识都有来源、版本链、变更记录 │
|
||||
│ ⑤ 可信度量化:不回避不确定性,用 confidence 评分表达 │
|
||||
│ ⑥ 检索不加载:按需获取片段,节省 token │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**一句话总结**:这是一个以 Obsidian Markdown 文件为基础、以 LLM 为分类引擎、以自动化任务为驱动、以版本化管理为保障的**全链路知识加工流水线**。
|
||||
@@ -0,0 +1,106 @@
|
||||
# AgentOS 项目变更日志
|
||||
|
||||
## [2.0.2] - 2026-04-28
|
||||
|
||||
### 文档收口
|
||||
|
||||
- 新增 `REVIEW-V2.0.md`,正式记录原形、当前实现与后续升级设想之间的差异
|
||||
- 新增 `V2.0-SUMMARY.md`,作为面向使用者的最新说明汇总
|
||||
- 重写 `CORE-ARCHITECTURE.md`,将当前仓库冻结为 AgentOS v2.0 基准定义
|
||||
- 重写 `README.md`,统一项目入口与当前基准说明
|
||||
- 更新 `QUICKSTART.md`,补充双根目录与软链接边界
|
||||
- 重写 `SKILLS-CATALOG.md`,收口为 v2.0 技能目录
|
||||
- 更新 `REQUIREMENTS.md`,移除过期运行状态并对齐 v2.0 口径
|
||||
- 将 `AgentOS-完整说明文档_副本.md` 正式归档到 `90_archive/docs/`,原路径保留跳转页
|
||||
|
||||
### 架构决策
|
||||
|
||||
- 明确 `agent-os/` 与 `agent-os-local/` 的双根目录边界
|
||||
- 明确 `04_memory/` 中共享内容与本机私有内容的分界
|
||||
- 明确 v2.0 采用“双入口汇聚到 Inbox”的知识流定义
|
||||
- 明确 `05_tools/` 是工具层,不默认等于技能层
|
||||
- 明确 `category` / `SKILL_CARD.yaml` / `collect_from_local.py` 等能力延后到后续版本
|
||||
|
||||
## [2.0.1] - 2026-04-25
|
||||
|
||||
### 修复
|
||||
|
||||
- **依赖管理统一**:删除旧的 `04_memory/vector_db/.venv`,统一使用 managed Python 专用 venv
|
||||
- 旧路径:`~/workbuddy-agent-os/agent-sync/04_memory/vector_db/.venv`(分散,与脚本运行环境不一致)
|
||||
- 新路径:`~/.workbuddy/binaries/python/envs/agent-os/`(统一,脚本和自动化共用)
|
||||
- **init.sh 修复**:指向新 venv,用 `requirements.txt` 安装依赖
|
||||
- **daily_digest.py 重写**:接入三个真实数据源(Claw 工作日志、WorkBuddy 系统画像、上轮摘要)
|
||||
- **自动化任务修复**:Python 路径更新为新 venv
|
||||
|
||||
### 新增
|
||||
|
||||
- **bootstrap_from_memory.py**:冷启动脚本,首次运行时将已有 MEMORY.md 灌入 L1/L2
|
||||
- **requirements.txt**:集中声明 Python 依赖(trafilatura + sqlite-utils)
|
||||
- **WorkBuddy 自动化**:每日凌晨 2:00 自动执行 `daily_digest.py`(ID: `agentos`)
|
||||
- **冷启动执行**:L2 写入 36 条初始事实,L1 索引同步建立
|
||||
|
||||
### 文档更新
|
||||
|
||||
- **REQUIREMENTS.md**:修正 venv 路径、更新实际设备状态、写清固定安装命令、新增自动化配置说明
|
||||
- **QUICKSTART.md**:新增步骤 4(冷启动记忆体)、修正坚果云路径为 `~/NutstoreCloudBridge/`
|
||||
- **README.md**:新增记忆数据流说明、固定路径速查表、补全目录说明
|
||||
|
||||
## [2.0.0] - 2026-04-25
|
||||
|
||||
### 新增
|
||||
|
||||
#### 核心框架
|
||||
- L0→L1→L2→L3 四级记忆模型
|
||||
- SOUL.md v2.0:完整的三层规则体系(硬约束/软约束/学习规则)
|
||||
- IDENTITY.md v2.0:Claw 身份档案,含设备信息自动填充
|
||||
- USER.md v2.0:ghai 用户档案
|
||||
- mcp.json:MCP 协议基础配置模板
|
||||
|
||||
#### 初始化脚本
|
||||
- init.sh:自动创建目录、安装依赖、填充设备信息
|
||||
- apply-config.sh:核心配置部署到 ~/.workbuddy/
|
||||
- import_skills.sh:技能导入
|
||||
- export_skills.sh:技能打包导出
|
||||
|
||||
#### 技能包
|
||||
- memory_manager:每日对话提炼、去重、冲突检测、版本管理
|
||||
- daily_digest.py:每日提炼脚本(凌晨 2:00 自动运行)
|
||||
- bootstrap_from_memory.py:冷启动(首次导入已有记忆)
|
||||
- memory_cleanup.py:冲突消解与过期清理
|
||||
- agent_memory_init.py:记忆体初始化
|
||||
- kb_manager:知识库入库、分类、检索、备份
|
||||
- kb_ingest.py:知识入库脚本(支持 URL/文件/文本)
|
||||
- _template:技能模板(SKILL.md + version.json + skill.py)
|
||||
- web_crawler:网页抓取(占位)
|
||||
- sync_manager:同步管理(占位,由坚果云替代)
|
||||
|
||||
#### 知识库
|
||||
- 按属性分层目录结构(概念/方法/事实/参考/资源/观点)
|
||||
- 16 个一级领域子目录
|
||||
- 知识卡片模板(概念卡/事实卡/方法卡/个人洞见卡)
|
||||
- 领域分类表(domains.md)
|
||||
- 知识属性分类表(nature-types.md + 分类决策树)
|
||||
- 中文映射配置(folder-aliases.json)
|
||||
- 知识分类提示词模板
|
||||
|
||||
#### 迁移脚本
|
||||
- pack.sh:全量打包
|
||||
- unpack.sh:解包还原
|
||||
- backup.sh:手动备份
|
||||
|
||||
#### 说明文件
|
||||
- README.md:项目概览
|
||||
- QUICKSTART.md:5 分钟快速上手
|
||||
- REQUIREMENTS.md:环境依赖清单
|
||||
- CHANGELOG.md:本文件
|
||||
|
||||
### 设计决策
|
||||
|
||||
| 决策 | 选择 | 原因 |
|
||||
|---|---|---|
|
||||
| 知识库物理目录分层 | 按属性(概念/方法/事实/...)为第一层 | 人找知识先想"类型"再想"领域",机器检索空间更小 |
|
||||
| 记忆读取策略 | L2 置信度不足直接截断,不 fallback 到 L3 | 节省 token,避免无关信息干扰 |
|
||||
| 跨机同步 | 坚果云,不用 Git | 国内访问 Git 不稳定 |
|
||||
| 存储策略 | 单条存储线 + 平台自适应 | 避免数据分裂,init.sh 自动检测系统 |
|
||||
| 目录命名 | 英文文件夹名 + 中文映射 | 机器兼容性 + 人类可读性 |
|
||||
| Python 环境 | managed Python + 专用 venv | 不污染系统环境,版本可控 |
|
||||
@@ -0,0 +1,217 @@
|
||||
# CORE-ARCHITECTURE.md —— AgentOS v2.0 基准定义
|
||||
|
||||
最后更新:2026-04-28
|
||||
|
||||
本文档是 AgentOS v2.0 的正式基准。后续若其他大体量说明与本文冲突,以本文为准。
|
||||
|
||||
## 1. v2.0 的定位
|
||||
|
||||
AgentOS v2.0 是一套运行在 WorkBuddy 上的本地优先个人智能体外骨骼系统。
|
||||
|
||||
它不是最早的单机原形复刻,也不是未来多机协同终态,而是当前仓库中已经落地并可恢复的一版稳定基准。
|
||||
|
||||
v2.0 只做三件事:
|
||||
|
||||
- 冻结当前可运行结构
|
||||
- 明确同步与本地边界
|
||||
- 统一文档口径,避免把未来升级方案混入当前实现
|
||||
|
||||
## 2. 根目录模型
|
||||
|
||||
### 2.1 `~/workbuddy-agent-os/agent-sync/`
|
||||
|
||||
作用:同步与版本化的主仓库。
|
||||
|
||||
应放入:
|
||||
|
||||
- 核心配置
|
||||
- 技能层
|
||||
- 知识库
|
||||
- 共享记忆元数据
|
||||
- 工具脚本
|
||||
- 迁移脚本
|
||||
- 说明文档
|
||||
|
||||
### 2.2 `~/workbuddy-agent-os/agent-sync/agent-local/`
|
||||
|
||||
作用:本机私有数据区,不进入主仓库,不作为 v2.0 的主文档对象,但作为正式运行边界的一部分存在。
|
||||
|
||||
应放入:
|
||||
|
||||
- L3 原文
|
||||
- 向量库
|
||||
- 临时缓存
|
||||
- 原始素材
|
||||
- 已提炼待投递素材
|
||||
|
||||
## 3. 目录职责
|
||||
|
||||
| 目录 | v2.0 职责 | 是否共享 |
|
||||
|------|-----------|----------|
|
||||
| `00_bootstrap/` | 初始化、部署、导入导出 | 是 |
|
||||
| `01_core/` | SOUL、IDENTITY、USER、MCP 配置 | 是 |
|
||||
| `02_skills/` | WorkBuddy 技能层 | 是 |
|
||||
| `03_knowledge/` | Obsidian 知识库 | 是 |
|
||||
| `04_memory/` | 事实库、摘要、日志与本地挂载点 | 部分共享 |
|
||||
| `05_tools/` | 公共工具层 | 是 |
|
||||
| `06_runtime/` | 任务记录与缓存挂载点 | 部分共享 |
|
||||
| `07_migration/` | 打包、解包、备份 | 是 |
|
||||
|
||||
## 4. 本地挂载与共享边界
|
||||
|
||||
### 4.1 正式共享内容
|
||||
|
||||
以下内容属于 v2.0 的共享资产:
|
||||
|
||||
- `01_core/`
|
||||
- `02_skills/`
|
||||
- `03_knowledge/`
|
||||
- `04_memory/long_term/facts.db`
|
||||
- `04_memory/daily_summaries/`
|
||||
- `04_memory/logs/`
|
||||
- `05_tools/`
|
||||
- `06_runtime/tasks/`
|
||||
- `07_migration/`
|
||||
|
||||
### 4.2 正式本机私有内容
|
||||
|
||||
以下内容属于 v2.0 的本机私有资产:
|
||||
|
||||
- `04_memory/long_term/raw/`
|
||||
- `04_memory/vector_db/`
|
||||
- `06_runtime/cache/`
|
||||
- `~/workbuddy-agent-os/agent-sync/agent-local/materials/`
|
||||
|
||||
### 4.3 软链接映射
|
||||
|
||||
当前正式映射如下:
|
||||
|
||||
```text
|
||||
~/workbuddy-agent-os/agent-sync/04_memory/long_term/raw -> ~/workbuddy-agent-os/agent-sync/agent-local/memory/raw
|
||||
~/workbuddy-agent-os/agent-sync/04_memory/vector_db -> ~/workbuddy-agent-os/agent-sync/agent-local/memory/vector_db
|
||||
~/workbuddy-agent-os/agent-sync/06_runtime/cache -> ~/workbuddy-agent-os/agent-sync/agent-local/runtime/cache
|
||||
```
|
||||
|
||||
`init.sh` 负责重建这些映射。
|
||||
|
||||
## 5. v2.0 的正式数据流
|
||||
|
||||
### 5.1 知识流
|
||||
|
||||
v2.0 明确定义为“双入口汇聚到 Inbox”。
|
||||
|
||||
入口 A:直接入 Inbox
|
||||
|
||||
- 已经标准化的内容可以直接写入 `03_knowledge/00_inbox/`
|
||||
|
||||
入口 B:分类目录汇聚
|
||||
|
||||
- 内容先写入 `50_resources/`、`01_daily/`、`20_methods/`、`40_references/` 等目录
|
||||
- 再由 `collect_to_inbox` 汇聚进 `00_inbox/`
|
||||
|
||||
统一出口:
|
||||
|
||||
- `inbox_refine` 将 `00_inbox/` 内容提纯归档到知识库目标目录
|
||||
|
||||
因此,v2.0 不再把这两种入口视为冲突,而是视为同一流水线的两种合法前置路径。
|
||||
|
||||
### 5.2 记忆流
|
||||
|
||||
当前记忆流为:
|
||||
|
||||
```text
|
||||
WorkBuddy 工作日志 / 系统画像 / 上轮摘要
|
||||
-> daily_digest.py
|
||||
-> facts.db
|
||||
-> keyword_index.json / ChromaDB
|
||||
-> 原文写入本机私有 raw/
|
||||
```
|
||||
|
||||
### 5.3 工具流
|
||||
|
||||
`05_tools/` 是工具层,不等于技能层。
|
||||
|
||||
v2.0 允许在工具层中存在:
|
||||
|
||||
- 系统检查脚本
|
||||
- 抓取工具
|
||||
- 媒体处理脚本
|
||||
- 独立小项目
|
||||
|
||||
但这些工具默认不自动视为对话技能。
|
||||
|
||||
## 6. 技能分类
|
||||
|
||||
### 6.1 system 技能
|
||||
|
||||
system 技能是架构层约定,表示后台自动运行或以系统流程为主:
|
||||
|
||||
- `memory_manager`
|
||||
- `collect_to_inbox`
|
||||
- `inbox_refine`
|
||||
- `auto_collector`
|
||||
- `kb_manager`
|
||||
- `sync_manager`
|
||||
|
||||
### 6.2 user 技能
|
||||
|
||||
user 技能是对话直接触发的入口层:
|
||||
|
||||
- `content_processor`
|
||||
- `web_crawler`
|
||||
|
||||
### 6.3 约束说明
|
||||
|
||||
v2.0 仅把 system / user 作为文档级约定。
|
||||
|
||||
以下能力不在 v2.0 强制落地:
|
||||
|
||||
- `category` 元数据全量补齐
|
||||
- `SKILL_CARD.yaml`
|
||||
- `skill_scanner.py`
|
||||
|
||||
这些属于后续版本。
|
||||
|
||||
## 7. 初始化与恢复基准
|
||||
|
||||
v2.0 的正式恢复步骤如下:
|
||||
|
||||
```bash
|
||||
cd ~/workbuddy-agent-os/agent-sync/00_bootstrap
|
||||
bash init.sh
|
||||
bash apply-config.sh
|
||||
bash import_skills.sh
|
||||
|
||||
~/.workbuddy/binaries/python/envs/agent-os/bin/python3 \
|
||||
~/workbuddy-agent-os/agent-sync/02_skills/memory_manager/bootstrap_from_memory.py \
|
||||
--root ~/workbuddy-agent-os/agent-sync
|
||||
```
|
||||
|
||||
手动部分:
|
||||
|
||||
- 安装 WorkBuddy
|
||||
- 安装坚果云
|
||||
- 按需安装 Obsidian
|
||||
- 安装 oMLX 与模型
|
||||
|
||||
## 8. v2.0 延后项
|
||||
|
||||
以下内容明确不属于 v2.0:
|
||||
|
||||
- 本地素材统一投递脚本 `collect_from_local.py`
|
||||
- 技能身份证与统一扫描器
|
||||
- 工具 manifest 与自动化安装体系
|
||||
- 更细粒度的多机记忆隔离策略
|
||||
- 基于 `agent-os-local/materials/` 的全新单入口采集体系
|
||||
|
||||
这些内容如果要做,必须以 v2.1 或更高版本单独立项。
|
||||
|
||||
## 9. 验收标准
|
||||
|
||||
满足以下条件,即视为 v2.0 收口完成:
|
||||
|
||||
1. 核心文档不再互相冲突
|
||||
2. 目录边界和软链接边界明确
|
||||
3. 恢复步骤可以从文档直接执行
|
||||
4. 知识流与记忆流可以一句话解释清楚
|
||||
5. 延后项不再混入当前基准描述
|
||||
@@ -0,0 +1,174 @@
|
||||
# AgentOS v2.0 审查与收口文档
|
||||
|
||||
最后更新:2026-04-28
|
||||
|
||||
## 1. 审查范围
|
||||
|
||||
本次审查只做一件事:把 AgentOS 的原形、当前实现、未来升级想法彻底拆开,收口成一个可执行的 v2.0 基准。
|
||||
|
||||
审查对象包括:
|
||||
|
||||
- 根目录说明文档
|
||||
- `00_bootstrap/` 初始化与部署脚本
|
||||
- `01_core/` 核心配置
|
||||
- `02_skills/` 当前已落地技能
|
||||
- `03_knowledge/` 知识库结构与收件箱流水线
|
||||
- `04_memory/` 记忆体与本地私有目录边界
|
||||
- `05_tools/` 工具层
|
||||
- `07_migration/` 迁移脚本
|
||||
|
||||
## 2. 审查结论
|
||||
|
||||
### 结论 A:当前仓库不是原形复刻,而是原形之后的第一阶段增强版
|
||||
|
||||
原形是一个单机优先、骨架优先、目录清晰的 AgentOS。
|
||||
|
||||
当前仓库已经在原形之上新增:
|
||||
|
||||
- `agent-os-local/` 本机私有目录
|
||||
- 软链接隔离(raw、vector_db、cache)
|
||||
- `collect_to_inbox` / `inbox_refine` 收件箱双阶段流水线
|
||||
- `content_processor` / `auto_collector` 等扩展技能
|
||||
- WorkBuddy managed Python / Node 运行时约束
|
||||
- MCP 与本地 LLM 运行时集成
|
||||
|
||||
因此,当前仓库应被定义为“v2.0 基准版”,而不是“原形本身”。
|
||||
|
||||
### 结论 B:主要问题是文档基线失真,不是代码主干先坏了
|
||||
|
||||
目前最大问题不是脚本无法运行,而是多个文档分别在描述不同阶段:
|
||||
|
||||
- 有的描述原形
|
||||
- 有的描述当前实现
|
||||
- 有的描述未来升级设想
|
||||
|
||||
结果是同一件事出现多套口径,尤其集中在:
|
||||
|
||||
- 版本号
|
||||
- 技能数量
|
||||
- 知识流入口
|
||||
- 记忆同步边界
|
||||
- `05_tools/` 与 `02_skills/` 的职责划分
|
||||
|
||||
### 结论 C:v2.0 需要冻结一条“当前可运行”的基准,而不是继续把 v2.1 设想混进来
|
||||
|
||||
v2.0 的目标不是把所有未来升级一次做完,而是把当前仓库收口成:
|
||||
|
||||
- 文档统一
|
||||
- 边界明确
|
||||
- 路径一致
|
||||
- 恢复流程明确
|
||||
- 延后项清楚标注
|
||||
|
||||
## 3. 核心发现
|
||||
|
||||
### 高优先级
|
||||
|
||||
1. 知识流入口存在两种合法路径,但之前没有被正式定义
|
||||
|
||||
- 路径一:内容已标准化,直接写入 `03_knowledge/00_inbox/`
|
||||
- 路径二:内容先落在分类目录,再由 `collect_to_inbox` 汇聚进 `00_inbox/`
|
||||
|
||||
此前文档把它写成互相冲突。v2.0 统一定义为“双入口汇聚到 Inbox”,不再视为矛盾。
|
||||
|
||||
2. `04_memory/` 与 `agent-os-local/` 的边界缺少一句话定义
|
||||
|
||||
v2.0 统一定义:
|
||||
|
||||
- 共享并可同步:`facts.db`、`daily_summaries/`、`logs/`
|
||||
- 本机私有:`long_term/raw/`、`vector_db/`、`06_runtime/cache/`
|
||||
|
||||
3. `05_tools/` 在原形中是空骨架,在当前实现中已经变成工具层
|
||||
|
||||
v2.0 统一定义:
|
||||
|
||||
- `02_skills/` 是 WorkBuddy 技能层
|
||||
- `05_tools/` 是底层公共工具层
|
||||
- 工具层中允许存在独立小项目,但不自动视为对话技能
|
||||
|
||||
### 中优先级
|
||||
|
||||
4. system/user 技能分类已成为架构约定,但尚未有统一元数据强制落地
|
||||
|
||||
v2.0 结论:保留该分类作为文档级约定,不在本版本强推 `SKILL_CARD.yaml`、`skill_scanner.py`。
|
||||
|
||||
5. `agent-os-local/materials/` 已经存在,但尚未成为系统主数据入口
|
||||
|
||||
v2.0 结论:
|
||||
|
||||
- 它是本机原始素材存储区
|
||||
- 它服务于工具层与后续升级
|
||||
- 它不作为 v2.0 的唯一入库入口
|
||||
|
||||
### 低优先级
|
||||
|
||||
6. 大体量说明文档信息很多,但不适合作为唯一基准
|
||||
|
||||
v2.0 结论:
|
||||
|
||||
- 保留该文件作为扩展历史说明
|
||||
- 以 `README.md`、`CORE-ARCHITECTURE.md`、本文件为正式基准
|
||||
|
||||
## 4. v2.0 最终定稿
|
||||
|
||||
### 4.1 当前基准
|
||||
|
||||
AgentOS v2.0 是一套运行在 WorkBuddy 上的本地优先个人智能体外骨骼系统,当前以以下结构为正式基准:
|
||||
|
||||
- `agent-os/`:同步与版本化的主仓库
|
||||
- `agent-os-local/`:本机私有数据区
|
||||
- `01_core/`:核心配置
|
||||
- `02_skills/`:技能层
|
||||
- `03_knowledge/`:Obsidian 知识库
|
||||
- `04_memory/`:共享记忆元数据与结构化事实
|
||||
- `05_tools/`:公共工具层
|
||||
- `06_runtime/`:任务记录与缓存挂载点
|
||||
- `07_migration/`:迁移与打包
|
||||
|
||||
### 4.2 目标表述
|
||||
|
||||
v2.0 的正式目标表述如下:
|
||||
|
||||
> AgentOS v2.0 不是“未来多机协同终态”,而是“当前仓库的稳定可运行基准版”。
|
||||
> 它保留原形的骨架清晰性,同时承认已经落地的本地私有层、收件箱流水线和工具层增强。
|
||||
> v2.0 的任务是冻结边界、统一口径、保证可恢复、为 v2.1 升级留出明确接口。
|
||||
|
||||
### 4.3 明确不纳入 v2.0 的内容
|
||||
|
||||
以下内容属于后续版本,不纳入本次收口:
|
||||
|
||||
- `collect_from_local.py` 本地素材统一提炼入口
|
||||
- `skill_scanner.py` 和统一技能身份证体系
|
||||
- `SKILL_CARD.yaml` 全量改造
|
||||
- `setup_tools.sh` 与工具 manifest 规范
|
||||
- 更细粒度的记忆多机隔离策略
|
||||
|
||||
## 5. 修改计划
|
||||
|
||||
### 已完成
|
||||
|
||||
1. 统一 v2.0 基准文档入口
|
||||
2. 固化审查结论
|
||||
3. 统一当前基准与目标表述
|
||||
4. 将历史大文档降级为参考资料
|
||||
|
||||
### v2.0 收口后可继续执行
|
||||
|
||||
1. 先做 `collect_to_inbox` 与 `content_processor` 的入口契约统一
|
||||
2. 再做 `agent-os-local/materials/` 到 `00_inbox/` 的新流水线
|
||||
3. 最后补技能元数据和工具 manifest
|
||||
|
||||
## 6. 使用原则
|
||||
|
||||
从本文件起,后续若出现文档冲突,按以下优先级理解:
|
||||
|
||||
1. `CORE-ARCHITECTURE.md`
|
||||
2. `README.md`
|
||||
3. `REVIEW-V2.0.md`
|
||||
4. 其他大体量说明文件
|
||||
|
||||
这意味着:
|
||||
|
||||
- 大说明文档用于补充背景
|
||||
- 正式口径以基准文档为准
|
||||
- 升级想法必须单独标注版本,不得直接混入 v2.0 基准
|
||||
@@ -0,0 +1,133 @@
|
||||
# AgentOS v2.0 最新说明汇总
|
||||
|
||||
最后更新:2026-04-28
|
||||
|
||||
## 1. 当前版本是什么
|
||||
|
||||
AgentOS v2.0 是当前仓库的稳定可运行基准版。
|
||||
|
||||
它不是最初的单机原形,也不是未来多机协同终态,而是已经落地并能恢复的一版正式基线。
|
||||
|
||||
## 2. 当前正式文档入口
|
||||
|
||||
请按以下顺序阅读:
|
||||
|
||||
1. `CORE-ARCHITECTURE.md`:正式基准、目录边界、数据流定义
|
||||
2. `V2.0-SUMMARY.md`:本文件,最新说明汇总
|
||||
3. `QUICKSTART.md`:初始化与恢复操作
|
||||
4. `REQUIREMENTS.md`:环境要求与依赖说明
|
||||
5. `SKILLS-CATALOG.md`:v2.0 技能目录
|
||||
6. `REVIEW-V2.0.md`:审查结论与收口原因
|
||||
|
||||
历史大体量说明已归档到:
|
||||
|
||||
- `90_archive/docs/AgentOS-完整说明文档_副本.v2.1-history.md`
|
||||
|
||||
## 3. v2.0 一句话结构
|
||||
|
||||
```text
|
||||
agent-os/ = 共享主仓库
|
||||
agent-os-local/ = 本机私有目录
|
||||
```
|
||||
|
||||
主仓库负责:配置、技能、知识、共享记忆元数据、工具、迁移脚本。
|
||||
|
||||
本机私有目录负责:L3 原文、向量库、缓存、原始素材和待投递素材。
|
||||
|
||||
## 4. v2.0 正式边界
|
||||
|
||||
### 共享内容
|
||||
|
||||
- `01_core/`
|
||||
- `02_skills/`
|
||||
- `03_knowledge/`
|
||||
- `04_memory/long_term/facts.db`
|
||||
- `04_memory/daily_summaries/`
|
||||
- `04_memory/logs/`
|
||||
- `05_tools/`
|
||||
- `06_runtime/tasks/`
|
||||
- `07_migration/`
|
||||
|
||||
### 本机私有内容
|
||||
|
||||
- `04_memory/long_term/raw/`
|
||||
- `04_memory/vector_db/`
|
||||
- `06_runtime/cache/`
|
||||
- `~/workbuddy-agent-os/agent-sync/agent-local/materials/`
|
||||
|
||||
## 5. v2.0 正式数据流
|
||||
|
||||
### 知识流
|
||||
|
||||
v2.0 采用“双入口汇聚到 Inbox”:
|
||||
|
||||
- 入口 A:标准化内容直接写入 `03_knowledge/00_inbox/`
|
||||
- 入口 B:分类目录内容由 `collect_to_inbox` 汇聚到 `00_inbox/`
|
||||
- 统一出口:`inbox_refine` 提纯归档
|
||||
|
||||
### 记忆流
|
||||
|
||||
```text
|
||||
WorkBuddy 工作日志 / 系统画像 / 上轮摘要
|
||||
-> daily_digest.py
|
||||
-> facts.db
|
||||
-> keyword_index.json / ChromaDB
|
||||
-> 原文写入本机 raw/
|
||||
```
|
||||
|
||||
### 工具流
|
||||
|
||||
`05_tools/` 是工具层,不默认等于技能层。
|
||||
|
||||
## 6. v2.0 技能分组
|
||||
|
||||
### system 技能
|
||||
|
||||
- `memory_manager`
|
||||
- `collect_to_inbox`
|
||||
- `inbox_refine`
|
||||
- `auto_collector`
|
||||
- `kb_manager`
|
||||
- `sync_manager`
|
||||
|
||||
### user 技能
|
||||
|
||||
- `content_processor`
|
||||
- `web_crawler`
|
||||
|
||||
## 7. 恢复步骤
|
||||
|
||||
```bash
|
||||
cd ~/workbuddy-agent-os/agent-sync/00_bootstrap
|
||||
bash init.sh
|
||||
bash apply-config.sh
|
||||
bash import_skills.sh
|
||||
|
||||
~/.workbuddy/binaries/python/envs/agent-os/bin/python3 \
|
||||
~/workbuddy-agent-os/agent-sync/02_skills/memory_manager/bootstrap_from_memory.py \
|
||||
--root ~/workbuddy-agent-os/agent-sync
|
||||
```
|
||||
|
||||
手动安装项:
|
||||
|
||||
- WorkBuddy
|
||||
- 坚果云
|
||||
- Obsidian(按需)
|
||||
- oMLX 与模型
|
||||
|
||||
## 8. v2.0 不做什么
|
||||
|
||||
以下内容已经明确延后:
|
||||
|
||||
- `collect_from_local.py`
|
||||
- `skill_scanner.py`
|
||||
- `SKILL_CARD.yaml` 全量改造
|
||||
- 工具 manifest / 自动化安装体系
|
||||
- 更细粒度的多机记忆隔离策略
|
||||
- 基于 `agent-os-local/materials/` 的全新单入口采集体系
|
||||
|
||||
## 9. 现在应该怎么理解这个仓库
|
||||
|
||||
如果只看一句话:
|
||||
|
||||
> 这是一个已经从原形长成“可运行增强版”的 AgentOS 仓库,v2.0 的任务不是继续发散,而是先把当前这版冻结、讲清、可恢复。
|
||||
@@ -0,0 +1,390 @@
|
||||
agent-os多机协同
|
||||
本系统通过 WorkBuddy 作为 AI 交互中枢,整合本地大模型、计划做一个多机可协同,知识库可自增长,自学习、自优化。记忆可以不断提炼更新,向量化,持久化、长期化的、自我进化的 Mac 全栈智能体。
|
||||
多机采用共同底座及分机学习的模式,可进行快速迁移,快速生成复制快速恢复。
|
||||
## agent-os(全局/多机共用内容)这是共同底座的部分。
|
||||
1. **初始化脚本**
|
||||
- 从零安装、环境配置、workbuddy等自动化脚本
|
||||
- 建议统一放在 00_bootstrap,可细分 install、setup、update 等子目录
|
||||
安装的时候主要包括一次性把权限给到位,相应的基础设施,核心的环境内容,包括软件依赖,虚拟环境全部设置到位,假设是从空白组机开始还原先铺环境,然后再按依赖,最后按主程序。并设置自动任务、自动备份及自动优化等相应的所有的任务系统。所有的任务复制过来以后,根据祖籍身份,有些任务可以暂时暂停,如果身份切换以后再启用。
|
||||
2. **核心配置(01_core)**
|
||||
- 系统身份、主机标识、主维护机配置
|
||||
- 建议增加主机/维护机标识文件(如 `HOST_ID.md`、`MAINTAINER.md`)
|
||||
包括智能体所有的基础设定规则,还有一些通用全局的设置文件,全部装在这里,方便拷贝生成,或者可以进行嗯几个版本的生成,到时候可以选择性的加载,因为可能还涉及到多智能体等其他的各种设置,总之这些文件都可以配置在这里头
|
||||
3. **技能(02_skills)**
|
||||
- 系统必需技能
|
||||
- 自定义/个人维护技能
|
||||
- 每个技能需有身份证明(如 `SKILL.md`),并标注维护主机
|
||||
- 建议增加技能分类(如系统/自定义/第三方)
|
||||
基于前面讨论的技能身份证和版本控制分层,你只需要增加以下文件:
|
||||
|
||||
A. 每个技能目录下:SKILL_CARD.yaml(技能身份证)
|
||||
|
||||
只加在你自己写的技能里,比如 memory_manager/、kb_manager/、inbox_refine/、collect_to_inbox/、auto_collector/。
|
||||
|
||||
以 memory_manager/ 为例,在 02_skills/memory_manager/ 下新增一个文件:
|
||||
|
||||
```yaml
|
||||
# SKILL_CARD.yaml —— 技能身份证
|
||||
skill:
|
||||
name: "记忆管理器"
|
||||
id: "memory_manager"
|
||||
version: "1.1.0"
|
||||
category: "core-system"
|
||||
status: "active"
|
||||
created: "2026-04-25"
|
||||
updated: "2026-04-27"
|
||||
|
||||
description:
|
||||
short: "每日对话提炼、去重、冲突检测、版本管理"
|
||||
use_cases:
|
||||
- "每日凌晨 2:00 自动提炼前一天记忆"
|
||||
- "首次冷启动灌入已有 MEMORY.md"
|
||||
- "手动触发记忆更新"
|
||||
tags: ["记忆", "L1索引", "L2事实", "自动化"]
|
||||
|
||||
ownership:
|
||||
master_editor: "macbook-air-m1"
|
||||
readonly_on_other_devices: true
|
||||
|
||||
environment:
|
||||
os: "macos"
|
||||
python_path: "~/.workbuddy/binaries/python/envs/agent-os/bin/python3"
|
||||
local_dependencies:
|
||||
- "sqlite3(系统自带)"
|
||||
pip_dependencies:
|
||||
- "sqlite-utils>=3.35"
|
||||
- "chromadb>=1.0.0"
|
||||
|
||||
setup:
|
||||
install_script: "" # 由顶层 init.sh 统一安装
|
||||
post_check: "python3 -c 'import sqlite3; print(\"OK\")'"
|
||||
|
||||
usage:
|
||||
entry_point: "daily_digest.py"
|
||||
scheduled: "每日 02:00(WorkBuddy 自动化 agentos)"
|
||||
manual_trigger: "记忆更新"
|
||||
|
||||
changelog:
|
||||
- version: "1.1.0"
|
||||
date: "2026-04-27"
|
||||
changes: "接入 oMLX Embedding,支持向量化"
|
||||
- version: "1.0.0"
|
||||
date: "2026-04-25"
|
||||
changes: "初始版本"
|
||||
```
|
||||
|
||||
对其他技能(kb_manager、inbox_refine、collect_to_inbox、auto_collector)同样操作,字段按实际填写。
|
||||
|
||||
外部技能(如 web-clipper、voice-summary、social-collector)暂不加 SKILL_CARD,因为它们不是你开发的,升级不归你控制。如果你后续改造了它们,那时再加。
|
||||
|
||||
---
|
||||
|
||||
B. 05_tools/ 下:skill_scanner.py(技能身份证扫描器)
|
||||
|
||||
让你在任何一台机器上运行一次,就知道哪些技能就绪、哪些缺依赖:
|
||||
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
"""扫描所有 SKILL_CARD.yaml,生成技能状态报告"""
|
||||
import os
|
||||
import yaml
|
||||
from pathlib import Path
|
||||
|
||||
SKILLS_DIR = Path.home() / "agent-os" / "02_skills"
|
||||
|
||||
def scan():
|
||||
print("=" * 60)
|
||||
print("AgentOS 技能状态报告")
|
||||
print("=" * 60)
|
||||
for skill_dir in sorted(SKILLS_DIR.iterdir()):
|
||||
if not skill_dir.is_dir():
|
||||
continue
|
||||
card_path = skill_dir / "SKILL_CARD.yaml"
|
||||
if not card_path.exists():
|
||||
print(f" ⚠️ {skill_dir.name} — 无 SKILL_CARD.yaml(外部技能或待补充)")
|
||||
continue
|
||||
with open(card_path) as f:
|
||||
card = yaml.safe_load(f)
|
||||
s = card["skill"]
|
||||
o = card.get("ownership", {})
|
||||
print(f" ✅ {s['name']} (v{s['version']}) 主理: {o.get('master_editor', '未知')}")
|
||||
print("=" * 60)
|
||||
|
||||
if __name__ == "__main__":
|
||||
scan()
|
||||
```
|
||||
|
||||
放在 05_tools/skill_scanner.py,用 AGENTOS_PYTHON 运行即可。
|
||||
|
||||
---
|
||||
|
||||
C. 根目录:SKILL_CARD_TEMPLATE.yaml(技能身份证模板)
|
||||
|
||||
当你在别的机器上新写一个技能时,复制这个模板来填,确保格式统一。放在 ~/workbuddy-agent-os/agent-sync/SKILL_CARD_TEMPLATE.yaml。
|
||||
|
||||
---
|
||||
|
||||
4. **知识库(03_knowledge)**
|
||||
- 分类建议:
|
||||
- 知识(外部资料、文档、教程等)
|
||||
- 个人笔记,个人我自己去想到的一些事,或者说我的感悟,或者说临时的一个随手的记的笔记,那这个东西呢其实就相当于随手记,我觉得这块就是呃它可以不用当成知识库,但是可能我需要有一个随手记随手查的事情,特别是比方说我开会的一个笔记,或者是我个人记录的一些语音,或者是个人记事,其实这是个个人成长,在我的第1版里头,其实是按照这个分类来的,所以呃知识库你会看到它比较乱,它有好多分类,其实是我的一个思想过程,中间呃有刚开始按照类别分的,后面按照事实分的,也有按领域分的,还有按概念分的,所以这块我们可以再讨论,嗯我只是把我所有的信息先放进来,你去了解一下
|
||||
- 记忆固化(长期记忆、总结、反思等)这个说的是整个我嗯好多机子的记忆体里头很多内容,它可能随着时间的偏移,它有些东西也变成了事实,也要记录下来。如果变成事实的东西,而且是通用的,不是说单机能用的,那其实也可以归集到总的知识库里头的记忆体里头,或者说是整个转到事实的记录,这块也要进行一个合理的判断
|
||||
- 项目立项/成形(项目文档、方案、进展等)我自己写的一些项目立项文件记录,包括我们自己编的程序的进展什么的,可能要单独画出来,因为它可能记录的我的一个过程,它可能是个过程记录,并不是结果,等到整个项目都成型了,稳固下来,可能他会写到正式记忆体。所以他要单独处理一下,我想的,
|
||||
- 向量化内容(如向量索引、embedding 数据)
|
||||
- 收件箱(待整理内容)
|
||||
- 建议每类下可细分为原始、已整理、归档等
|
||||
|
||||
── 8_收件箱/ # 临时收集,每月归档
|
||||
├── 1_日记/ # 每日记录,自动生成
|
||||
├── 20_项目/ # 活跃项目,Frontmatter包含type/status/areas
|
||||
├── 30_研究/ # 永久参考,深度调研内容
|
||||
├── 40_知识库/ # 原子概念,拆分独立知识点
|
||||
├── 50_资源/ # 精选内容,新闻稿、行业简报
|
||||
├── 90_计划/ # 执行计划,完成后归档
|
||||
└── 99_系统/ # 模板、提示词、归档目
|
||||
知识库结构详解
|
||||
6.1 目录结构与命名规则
|
||||
知识库路径:~/workbuddy-agent-os/agent-sync/03_knowledge/,同时作为 Obsidian Vault。
|
||||
编号
|
||||
目录
|
||||
中文名
|
||||
知识属性
|
||||
说明
|
||||
00
|
||||
00_inbox/
|
||||
📥 收件箱
|
||||
—
|
||||
待提纯内容暂存
|
||||
01
|
||||
01_daily/
|
||||
📅 日记
|
||||
—
|
||||
每日日记、闪念笔记
|
||||
10
|
||||
10_concepts/
|
||||
💡 概念层
|
||||
concept/axiom
|
||||
16 个子领域目录
|
||||
20
|
||||
20_methods/
|
||||
🔧 方法层
|
||||
method
|
||||
可操作的步骤/教程
|
||||
30
|
||||
30_facts/
|
||||
📋 事实层
|
||||
fact/regulation/data
|
||||
已验证的客观事实
|
||||
40
|
||||
40_references/
|
||||
📎 参考层
|
||||
reference
|
||||
论文/文档/外部资料
|
||||
50
|
||||
50_resources/
|
||||
🛠 资源层
|
||||
resource
|
||||
视频笔记/阅读笔记/灵感素材等
|
||||
60
|
||||
60_opinions/
|
||||
💭 观点层
|
||||
opinion/quote
|
||||
主观看法/他人原话
|
||||
90
|
||||
90_archive/
|
||||
🗄 归档层
|
||||
—
|
||||
已弃用的知识
|
||||
99
|
||||
99_system/
|
||||
⚙️ 系统层
|
||||
—
|
||||
模板/分类/配置
|
||||
|
||||
6.2 领域分类体系
|
||||
10_concepts/ 下按 16 个一级领域分子目录:
|
||||
编号
|
||||
英文目录
|
||||
中文
|
||||
典型子领域
|
||||
01
|
||||
cs
|
||||
计算机科学
|
||||
数据库、前端、后端、运维、安全
|
||||
02
|
||||
ai
|
||||
人工智能
|
||||
NLP、CV、强化学习、RAG、Agent
|
||||
03
|
||||
finance
|
||||
金融
|
||||
量化交易、价值投资、宏观经济
|
||||
04
|
||||
law
|
||||
法律
|
||||
民法、商法、知识产权
|
||||
05
|
||||
medicine
|
||||
医学
|
||||
中医、西医、营养学
|
||||
06
|
||||
physics
|
||||
物理
|
||||
量子力学、相对论、热力学
|
||||
07
|
||||
math
|
||||
数学
|
||||
线性代数、概率统计、微积分
|
||||
08
|
||||
psychology
|
||||
心理学
|
||||
认知心理学、社会心理学
|
||||
09
|
||||
philosophy
|
||||
哲学
|
||||
认识论、伦理学、美学
|
||||
10
|
||||
history
|
||||
历史
|
||||
中国史、世界史、科技史
|
||||
11
|
||||
engineering
|
||||
工程
|
||||
机械、电子、土木
|
||||
12
|
||||
design
|
||||
设计
|
||||
UI/UX、平面设计、建筑设计
|
||||
13
|
||||
business
|
||||
商业
|
||||
创业、管理、营销、战略
|
||||
14
|
||||
personal-management
|
||||
个人管理
|
||||
GTD、番茄工作法、精力管理
|
||||
15
|
||||
personal-insight
|
||||
个人洞见
|
||||
决策模型、价值观、反思
|
||||
16
|
||||
other
|
||||
其他
|
||||
待新增领域
|
||||
|
||||
当"其他"类别超过总知识 5% 时,memory_manager 会提示新增领域。
|
||||
6.3 知识卡片模板
|
||||
99_system/templates/ 下有 4 种标准化模板:
|
||||
模板文件
|
||||
适用类型
|
||||
核心字段
|
||||
concept-card.md
|
||||
概念/公理
|
||||
一句话定义、核心原理、与相关概念区别、主流选择
|
||||
method-card.md
|
||||
方法/教程
|
||||
适用场景、步骤、注意事项、示例
|
||||
fact-card.md
|
||||
事实/数据
|
||||
事实陈述、数据来源、可信度
|
||||
personal-insight-card.md
|
||||
个人洞见
|
||||
背景、思考过程、结论、行动项
|
||||
|
||||
所有知识卡片使用标准 Frontmatter:
|
||||
yaml
|
||||
复制
|
||||
---
|
||||
id: KB-YYYYMMDD-NNN
|
||||
title: "知识标题"
|
||||
type: concept|method|fact|reference|resource|opinion
|
||||
status: draft|review|published|archived
|
||||
nature: fact|opinion|method|regulation|reference|data|quote|axiom
|
||||
domain: [领域1, 领域2]
|
||||
tags: [标签列表]
|
||||
confidence: 0.0-1.0
|
||||
source: "原始来源 URL"
|
||||
source_type: official_doc|literature|experiment|personal_exp|social_media|unknown
|
||||
date_created: YYYY-MM-DD
|
||||
date_modified: YYYY-MM-DD
|
||||
version: 1
|
||||
previous_version: ""
|
||||
superseded_by: ""
|
||||
---
|
||||
|
||||
|
||||
6.4 分类体系配置文件
|
||||
文件
|
||||
路径
|
||||
说明
|
||||
domains.md
|
||||
99_system/taxonomies/domains.md
|
||||
16 个一级领域定义
|
||||
nature-types.md
|
||||
99_system/taxonomies/nature-types.md
|
||||
9 种 nature 类型 + 决策树
|
||||
folder-aliases.json
|
||||
99_system/taxonomies/folder-aliases.json
|
||||
英文目录 ↔ 中文映射
|
||||
classify-knowledge.md
|
||||
99_system/prompts/classify-knowledge.md
|
||||
知识分类 Prompt
|
||||
|
||||
|
||||
|
||||
5. **工具层(05_tools)**
|
||||
- 非技能化的工具脚本
|
||||
- 包括知识库管理、记忆管理、技能管理等
|
||||
- 建议按功能模块细分
|
||||
因为技能很更多的是自然语言或一些东西,它可能对于一些大量的个性化的工具,呃可能不一定使用得很好,所以我的工具做很多做cl i的终端化的处理,或者说直接写成一些接口的东西,这样子会被技能更好的去去调用,技能这面有一些东西,呃如果确实是可以写,那中间也可以转换,但这个转换过程可能要等着这个技能呃通用了,才可能放到技能里头,或者说它跟系统有关才放进去。我是这么想的,你可以给我点建议啊,我们在这个事上再讨论讨论
|
||||
6. **系统管理(07_migration/90_archive)**
|
||||
- 打包、解包、迁移、备份等脚本
|
||||
- 系统归档、历史记录
|
||||
|
||||
---
|
||||
|
||||
## agent-os-local(本机专属内容)
|
||||
|
||||
1. **采集原始内容**
|
||||
- 各类原始数据(音频、视频、网页、截图等),每个单机的原始讨论,可能还包括我说的一些话,一些笔记,这个其实和知识库那块来讲是联动的,它其实是先进行我从网上或者。说手机或者是新闻客户端收集到的内容全都看到了以后,先暂存到每台机子上,因为每台机子我在做项目的时候,同时会看到一些信息,这个信息就是临时性的,或者是一个闪念,但是过完以后可能再去收集整理,所以它就相当于是个前前端缓存,存。存完以后,有一些东西可能分门别类,这块跟知识库呢要对应起来,到时候连知识库的分门别类和这块一块讨论。这个才是这个项目可能比较核心的东西,最初我就是拿这个东西想写一个项目来着,但是后来发现其实是依托智能体,不过不光是做这个项目,还要做智能体的一些配置,运行状态等等,才会越写越大,最后涉及到多机联动
|
||||
- 建议按类型细分 materials/audio、video、web、screenshots 等
|
||||
|
||||
2. **本机记忆**
|
||||
- 个人/本机的记忆数据
|
||||
- 建议分为原始、整理、归档等
|
||||
本机的记忆,自己也涉及到和知识体的共享的,就是什么记忆提取出来变成长久的记忆,他记忆里头可能有一些东西是要加一些属性字段,也就是向量化处理的时候,可能在一些东西,比方说事实层,或者说具体的这种呃硬约束层,它可能。能能提取出来,分享给所有人用,呃有一些东西只有跟本机有关,比方说本机的CPU处理能力,或者本机的向量化处理能能力,这些东西只能在本机用,放在别的机器上不通用的,那其实是不要放,那这个中间如何去判断,如何去执行。所以我们这中间的这个知识管理和提炼,记忆提炼这两个程序,就要把这些东西都整理进去,所以这两个程序写起来就会很重要
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
3. **运行记录、对话记录、缓存**
|
||||
- 任务缓存、运行日志、对话历史
|
||||
- 建议分为 runtime/cache、memory/raw、memory/vector_db 等
|
||||
这块主要是和这个智能体的一个对接的地方,因为将来有可能智能体我换了的话,用其他智能体如何对接,其实都要在这块处理,因为换一个智能整体可能我用openclaw和现在workbuddy可能将来用的对接的方式或者是运行状态,可能对话记录或者说是呃每次的呃这种上下文也不一样。如何能从用这个适合智能体的一些工具把它调用出来,这个是很重要的事情,都在这块解决
|
||||
4. **本机情况数据说明记录**
|
||||
- 本机环境、硬件、软件、配置说明
|
||||
- 建议单独设 info/ 或 system/ 目录
|
||||
|
||||
---
|
||||
|
||||
## 需要你补充/确认的问题
|
||||
|
||||
1. **向量库(vector_db)**
|
||||
你希望它只作为索引,还是也存储知识内容?是否需要和知识库内容分离,还是做成知识库的一个子模块?向亮库,我就在想,其实我本地本机是应该有个向量库,然后在共享的呃服务器知识体上,其实也是有一个向量库,那个向亮库可以全全域和多多台主机同步,但我本机就是我本机,其实不需要同步,呃本机根据依据本机的这个能力,其实。在进行,所以我中间这个有一个向量库,可能要全局通用,这样子才能同步起来,呃我理解是这个样子,你可能想想是不是再帮我补充一下
|
||||
|
||||
2. **主机/维护机标识**
|
||||
是否需要每台主机有唯一标识?主维护机如何指定?是否需要自动同步主维护机的内容?
|
||||
主机肯定是要维护的,因为我相当于是多台主机跨系统的一个跨主机的一个操作,所以每台主机它是什么一个唯一标识,然后它充当。什么角色,对刚才我讲的知识库、记忆、技能,所有的这种管理,包括整个这个主程序的管理,他们都有什么权限角色,其实我觉得这个还是需要的,因为谁写的智能体可能最好是在他原来的这台主机上继续在维护。体的知识库的管理,最好是有一台主机,就固定充当这台管理主机,然后他晚上就可以进行呃提炼管理,记忆体各自是各自的管理,然后管理与有了一些记忆可以共享升级的情况下,然后再去提取到中组主机里头去呃管理
|
||||
3. **知识库分类**
|
||||
你希望知识库的分类粒度到什么程度?是否需要支持多级分类、标签等?
|
||||
知识库的分类,我前面讲了好多了,包括记忆体那块也讲了好多了,有很多对接的,所以我需要这块来讲,呃展开了,到时候我们再细聊,你可以发散性的给我提问题,帮助我去把这块这一部分去完善掉
|
||||
4. **工具与技能的边界**
|
||||
工具和技能的区别是否只在于是否被系统自动加载?有无交集或转换机制?
|
||||
工具在加载这一块,我需要既要注重效率,又要呃合理的去呃扩展,呃这块你给出很好的建议
|
||||
5. **本机数据说明**
|
||||
本机情况数据说明,具体希望包含哪些内容?如硬件、软件、网络、环境变量等?
|
||||
本机情况就是根据我系统将来要完成的所有的电脑相关的事项,给出来的所有的数据,其实这个数据最好固定的写在这儿,但是它有一些变化的时候,又能够动态更新,这个要有个很好的呃模式,我不想浪费太多的token,因为核心逻辑就是整个这个系统使用token的时候还是要尽量节省一点效率为先,我不不能太过于浪费
|
||||
6. **同步/备份机制**
|
||||
agent-os 与 agent-os-local 之间是否需要自动同步、定期备份?同步粒度和策略如何? 我觉得你问这个问题就是你没搞清楚我现在在写什么,所以我现在才写了这么大一段东西给你
|
||||
@@ -0,0 +1,289 @@
|
||||
# 视频工厂模块梳理与 DCS 落地规划
|
||||
|
||||
> 创建: 2026-10-01 | 状态: 方案待确认
|
||||
> 输入文档: `~/Documents/导演创作系统(Director.docx`(DCS 项目开发说明书 v2.0)
|
||||
> 目标: 把 DCS 的「故事 → 分镜 → 成片」能力落到现有 Dashboard 视频工厂,先跑通一条片子
|
||||
|
||||
---
|
||||
|
||||
## 一、背景
|
||||
|
||||
用户提供 DCS 文档(5 层架构、统一分镜 Schema、8 类能力 API、去 AI 化合成链)。文档原设计用
|
||||
**Appsmith(控制台)+ n8n(编排)+ Docker** 三件套;但项目**已有 Dashboard 控制台 + command_bus/guardd 执行体系**,
|
||||
且 `09_ave` 后端**已有完整的视频生产流水线**。
|
||||
|
||||
**结论:融入现有 Dashboard(不引入 Appsmith/n8n)**,把 DCS 的分镜 Schema 与去 AI 化链补进来。
|
||||
|
||||
---
|
||||
|
||||
## 二、现状全景(2026-10-01 实测)
|
||||
|
||||
### 2.1 后端 `05_tools/09_ave/scripts/`(能力远比预期完整)
|
||||
|
||||
**六个分层目录**(已有):
|
||||
|
||||
| 目录 | 职责 |
|
||||
|:--|:--|
|
||||
| `01_director_parser/` | 导演脚本解析(文案 → 结构化脚本) |
|
||||
| `02_voice_synthesizer/` | 语音合成(TTS) |
|
||||
| `03_bgm_generator/` | BGM 生成 |
|
||||
| `04_anchor_extractor/` | 锚点提取(一致性锚点) |
|
||||
| `05_material_producer/` | 素材生产 |
|
||||
| `06_composer/` | 合成器(**已有 2635 行**:`ffmpeg.py` 702 / `hybrid.py` 453 / `speed_ramp.py` 370 / `lipsync.py` 369 / `character_locker.py` 68 / `beat_sync.py`) |
|
||||
| `07_service_layer/` | 服务层(**空壳,只有 `__init__.py`**) |
|
||||
|
||||
**核心脚本**:
|
||||
|
||||
| 文件 | 规模 | 职责 |
|
||||
|:--|:--|:--|
|
||||
| `main.py` | 931 行 | 原子能力 CLI:`voice`(TTS aliyun/volcano)/ `material`(素材搜索)/ `parse`(文案→导演脚本)/ `compose`(视频合成)/ `anchors`(锚点提取)等 |
|
||||
| `character_sheet.py` | 841 行 | 定妆照/角色图(Kling 接入处) |
|
||||
| `character_portrait.py` | 790 行 | 角色画像 |
|
||||
| `video_factory.py` | 641 行 | **5 种生产模式**:`run_oral`(口播)/ `run_beat`(卡点)/ `run_digital_human`(数字人)/ `run_hybrid`(口播+卡点)/ **`run_story`(故事·漫剧,← DCS 目标)** |
|
||||
| `story_director/` | 1430 行 | `scene_planner` 444(剧本→场景+Prompt)/ `temporal_bridge` 322(场景过渡桥接)/ `batch_generator` 664(批量 Kling + 固定 seed) |
|
||||
| `director_parser/` | 323 行 | `parser.py` 192 + `schemas.py` 131 |
|
||||
| `composer/` | 2635 行 | FFmpeg 封装 / 混合合成 / 对口型 / 变速 / 节拍同步 / **角色锁定** |
|
||||
| `lib/` | — | `config.py` / `cost_tracker.py`(成本追踪)/ `dashboard.py`(生产埋点)/ `logger.py` |
|
||||
| `demo_full_pipeline.py` | 256 行 | 完整流程演示 |
|
||||
| `AVE_ARCHITECTURE_PLAN.md` | 480 行 | **既有架构规划**(见 2.3) |
|
||||
|
||||
**集成方式**:`09_ave` **没有独立 FastAPI 层**;Dashboard 通过 `app.py` 把 `09_ave/scripts` 加入 `sys.path`,
|
||||
并由 `plugins/ave.py`(243 行)解析能力清单供 `/api/capabilities` 使用。
|
||||
|
||||
### 2.2 前端视图(`10_dashboard/frontend/src/views/`)
|
||||
|
||||
**菜单已挂 8 项**(`nav-menu.js` → 视频工厂):
|
||||
|
||||
| 视图 | 行数 | 实际状态 |
|
||||
|:--|:--|:--|
|
||||
| `workflow` | 485 | 节点画布(拖拽 + 模板系统,模板来自 `10_dashboard/workflows.py`) |
|
||||
| `capabilities` | 80 | 能力目录(调 `/api/capabilities`,数据源 `AVE_ARCHITECTURE_PLAN.md`) |
|
||||
| `person-swap` | 269 | 人物置换(已实现) |
|
||||
| `characters` | 138 | 角色列表 |
|
||||
| `char-gen` | 389 | 角色生成器 |
|
||||
| `productions` | 88 | 生产记录 |
|
||||
| `assets` | 57 | 素材库 |
|
||||
| `costs` | 61 | 费用分析 |
|
||||
|
||||
**未挂菜单的空壳**(各 9 行,仅"功能开发中"):`ave-script`(脚本生成)/ `ave-materials` / `ave-render` / `ave-templates`
|
||||
|
||||
### 2.3 工作流模块现状(`10_dashboard/workflows.py`,599 行)
|
||||
|
||||
**已有 6 个模板**(`WORKFLOW_TEMPLATES`):
|
||||
|
||||
| 模板 ID | 名称 | 节点数 | 节点链 |
|
||||
|:--|:--|:--|:--|
|
||||
| `basic_dub` | 基础口播 | 5 | 脚本 → TTS → 素材搜索 → BGM → 视频输出 |
|
||||
| `beat_sync` | 卡点视频 | 4 | BGM 导入 → 卡点风格 → 质量审核 → 视频输出 |
|
||||
| `character_narrative` | 角色叙事 | 8 | 剧本输入 → 脚本改编 → 角色引用 → 故事策略 → Kling 生成 → 旁白 TTS → 生成审核 → 最终输出 |
|
||||
| `digital_human` | 数字人口播 | 4 | 文案输入 → 人声合成 → 数字人角色 → 数字人视频 |
|
||||
| `hybrid_dub` | 口播+卡点混合 | 4 | 口播脚本 → 人声合成 → 混合风格 → 混合视频 |
|
||||
| **`short_drama`** | **短剧创作** | **12** | 故事输入 → 脚本编辑 → 角色设定 → 短剧策略 → **分镜规划** → **提示词生成** → 场景视频 → 角色配音 → 配乐 → 字幕 → 成片审核 → 短剧成片 |
|
||||
|
||||
**15 种节点类型**(`NODE_DEFINITIONS`)—— 已含 DCS 所需关键节点:
|
||||
`story_prototype`(剧本原型)/ `script_adaptor`(剧本改编)/ `storyboard`(**分镜规划**:景别/运镜/转场/对白/动作)/ `prompt_gen`(**分镜提示词**)/ `character`(角色引用+定妆照)/ `tts` / `material` / `bgm` / `style` / `strategy` / `model` / `audit_gate`(人工审核门)/ `subtitle` / `output`
|
||||
|
||||
**🔴 关键问题:执行器是空转的**
|
||||
|
||||
`workflows.py:519-530` 的 `WorkflowRunner.start_run()` → `_execute()`:
|
||||
|
||||
```python
|
||||
def _execute():
|
||||
ordered = self._kahn_sort(run["nodes"], run["edges"]) # 只做拓扑排序
|
||||
for n in ordered:
|
||||
run["node_states"][n["id"]] = "completed" # 直接标记完成
|
||||
run["status"] = "completed"
|
||||
```
|
||||
|
||||
**没有任何真实节点执行逻辑**(不调 TTS / Kling / 合成)→ 工作流"能画、能存、能排序,但点了不真跑"。
|
||||
真正能出片的是 `09_ave/scripts/video_factory.py`(`run_story` / `run_oral` / `run_beat` ...),走 CLI,**与 workflow 画布未打通**。
|
||||
|
||||
**接口现状**(`app.py:1083-1130`):`GET /api/workflow/nodes|node/{type}|templates|runs|runs/{id}`、`POST /api/workflow/run`
|
||||
|
||||
### 2.4 三视角分工(结论)
|
||||
|
||||
```
|
||||
「🎬 导演创作」新建视图 ← 分镜视角(表格:逐条编辑/删/重试)★ M1 做这个
|
||||
「🔀 工作流」现有画布 ← 流程视角(6 模板 + 15 节点;执行器待补)
|
||||
「📋 生产记录 / 💰 费用」 ← 结果与成本视角
|
||||
────────────────────────────────────────────
|
||||
后端 09_ave 真实流水线 ← 真正出片的地方(run_story / run_oral / ...)
|
||||
```
|
||||
|
||||
**M1 正确做法**:新建导演创作视图(分镜表)+ 后端接**真实流水线**;
|
||||
工作流保留为流程视角(把画布节点接到真实能力的"执行器补齐"另排期,不在 M1)。
|
||||
|
||||
### 2.5 既有架构规划(`AVE_ARCHITECTURE_PLAN.md`,2026-05-18)
|
||||
|
||||
**已定义 6 条生产路径**:
|
||||
|
||||
```
|
||||
1. 口播线 文案→TTS→素材→BGM→字幕→合成
|
||||
2. 卡点线 BGM→节拍检测→素材→拍点切换→xfade
|
||||
3. 数字人线 照片/视频→OmniHuman对口型 / DreamActor动作模仿
|
||||
4. 口播+卡点线 人声锚点+BGM变速→帧锁定拼接 (hybrid)
|
||||
5. 故事/漫剧线 ★ 剧本→场景分解→Kling批量→角色拼接 ← DCS 要的这条
|
||||
6. 模仿视频线 ★ 参考视频→结构分析→动作迁移/角色替换→合成
|
||||
```
|
||||
|
||||
**已识别的问题**(原文):
|
||||
1. 各策略独立实现,**底层能力重复**(口播和卡点的素材搜索各写一遍)
|
||||
2. **角色系统只在"故事"线使用**,口播/卡点/数字人都需要角色但未接入
|
||||
3. AudioLine 建成但未接入主流程
|
||||
|
||||
**既有解法**(原文):分层架构 —— 底层能力层(原子操作)→ 策略编排层(生产路径)→ 接入层(CLI/Dashboard)。
|
||||
**与 DCS 的分层思路一致**,可直接承接。
|
||||
|
||||
---
|
||||
|
||||
## 三、视频工厂定位:能解决哪几类问题
|
||||
|
||||
**三层 × 六线矩阵**:
|
||||
|
||||
**A. 共用底座**(所有生产路径共享,应统一管理)
|
||||
|
||||
| 层 | 内容 | 现状 |
|
||||
|:--|:--|:--|
|
||||
| 资产管理 | 角色(2D 参考图 / 定妆照 / 3D 模型)、场地、产品、道具、BGM、音效、特效预设 | 部分(`characters`/`char-gen`/`assets`/`character_registry`) |
|
||||
| 能力层 | 语音合成 / 素材搜索 / 图像生成(Kling)/ 图生视频(Kling)/ 人物置换(百炼)/ BGM 生成 | 大部分已有(`main.py` 原子命令 + `character_sheet` + `person_swap`) |
|
||||
| 合成层 | FFmpeg 拼接 / 变速 / 对口型 / 节拍同步 / 角色锁定 / **去 AI 化**(缺) | 除"去 AI 化"外已有 |
|
||||
|
||||
**B. 生产路径**(6 条线,每条是"策略编排")
|
||||
|
||||
**C. 编排与任务**(分镜级任务分发、进度、重试、成本)
|
||||
|
||||
---
|
||||
|
||||
## 四、模块重构方案(菜单分层)
|
||||
|
||||
现有 8 项菜单**混了三种性质**(资产 / 生产路径 / 分析),建议按层重组为 **4 组**(二级分类):
|
||||
|
||||
```
|
||||
🎬 视频工厂
|
||||
├─ 📦 资产管理 ← 共用底座
|
||||
│ ├─ 🧑 角色库 (characters + char-gen 合并:生成/列表/定妆照)
|
||||
│ ├─ 🎬 场景与道具 (待建:locations/products/props)
|
||||
│ ├─ 🖼️ 素材库 (assets,扩展 ave-materials)
|
||||
│ └─ 🔄 人物置换 (person-swap)
|
||||
│
|
||||
├─ 🎞️ 生产路径 ← 6 条线,一条一个入口
|
||||
│ ├─ 🎬 导演创作 ★ (新建,DCS 主线:故事→分镜→成片)
|
||||
│ ├─ 🎙️ 口播视频 (run_oral)
|
||||
│ ├─ 🥁 卡点视频 (run_beat)
|
||||
│ ├─ 👤 数字人 (run_digital_human)
|
||||
│ └─ 🎭 模仿换人 (run_hybrid / 第六线)
|
||||
│
|
||||
├─ ⚙️ 编排与任务 ← 执行层
|
||||
│ ├─ 🔀 工作流 (workflow 画布,保留)
|
||||
│ ├─ 📋 生产记录 (productions)
|
||||
│ └─ 💰 费用分析 (costs)
|
||||
│
|
||||
└─ 🔧 配置
|
||||
├─ ⚡ 能力目录 (capabilities)
|
||||
└─ 🎨 模板 (ave-templates → 参数模板,DCS 第八节)
|
||||
```
|
||||
|
||||
**关键判断:新做的"导演创作"应该新建视图,不塞进工作流**
|
||||
- `workflow` 是**节点画布**(拖拽式编排),适合"流程可视化"
|
||||
- DCS 的**分镜编辑**是"逐条表格 + 逐条修改 + 逐条重试",表格化交互更适合
|
||||
- 二者互补:分镜编辑产出 Schema → 可"发送到工作流"做可视化编排(后期联动)
|
||||
|
||||
---
|
||||
|
||||
## 五、DCS 落地映射(复用 vs 新写)
|
||||
|
||||
| DCS 要求 | 项目现状 | 落地动作 |
|
||||
|:--|:--|:--|
|
||||
| 统一分镜 Schema(12 pydantic 模型) | 无(`director_parser/schemas.py` 131 行,非此 Schema) | **新写** `09_ave/scripts/schemas.py` |
|
||||
| 层1 导演系统(故事→Schema) | `story_director/scene_planner`(剧本→场景+Prompt) | **适配**:输出对齐统一 Schema |
|
||||
| 层0 控制台分镜编辑页 | `ave-script` 空壳 | **新建** `views/ave-director.js`(分镜编辑器) |
|
||||
| 层2 编排(n8n) | `command_bus` + `guardd` + `workflow` 画布 | **复用** command_bus 派任务(M2 阶段接) |
|
||||
| 层3 TTS | `main.py voice`(aliyun/volcano) | 复用;DCS 提的 Fish Audio 可选接 |
|
||||
| 层3 图生视频 | `story_director/batch_generator`(Kling) | 复用(**Kling 余额不足,需充值**) |
|
||||
| 层3 素材/背景 | `main.py material` | 复用;DCS 提的通义万相可选接 |
|
||||
| 层4 合成 | `composer/ffmpeg.py` + `speed_ramp` + `lipsync` | 复用 |
|
||||
| 层4 **去 AI 化链** | **无**(grep `gblur`/`deai` 无命中) | **新写** `composer/de_ai.py`(DCS 第八节 FFmpeg 模板) |
|
||||
| 资产库规范(characters/locations/products/…) | `character_registry/` 已有角色部分 | **扩展**目录结构对齐 DCS 第五节 |
|
||||
| 任务状态/重试(`/api/task/*`) | `lib/dashboard.py` 有生产埋点;Dashboard 有任务面板 | 复用 + 补分镜级重试 |
|
||||
| 特效库(子弹时间/环绕运镜) | 无 | 后期(M4,接 Kling camera_control) |
|
||||
| 3D 角色(混元3D) | 无 | 后期(M4) |
|
||||
|
||||
**环境确认**:
|
||||
- ✅ **FFmpeg 6.0 已装**(`~/.local/bin/ffmpeg` + `ffprobe`,非 brew 安装)
|
||||
- ⚠️ **可灵余额不足**(`code:1102`)→ M2 实测前需充值,或先用火山方舟(已配 key)
|
||||
- ✅ Dashboard `:9988` 运行中;Tailscale 访问已通
|
||||
|
||||
---
|
||||
|
||||
## 六、M1 实施计划(本期:故事 → 分镜 → 成片)
|
||||
|
||||
**目标**:输入一段故事 → 生成可编辑分镜表 → 提交生成 → 输出一条 20 秒成片。**先看效果,再决定后续**。
|
||||
|
||||
**M1 范围(4 步)**:
|
||||
|
||||
1. **统一分镜 Schema**(`09_ave/scripts/schemas.py`)
|
||||
- 按 DCS 第四节实现 12 个模型(`Storyboard`/`Shot`/`GlobalAnchors`/`ShotContract`/`VFXConfig`/`AudioConfig`/`Subtitle`/`Transition`/`Speed`/`ColorConfig`/`PostProcess`/`OutputConfig`)
|
||||
- 提供 `to_dict()` / `from_dict()` 便于 JSON 传输
|
||||
|
||||
2. **故事 → 分镜**(后端)
|
||||
- `routes/` 新增 `ave.py`(或其插件扩展):`POST /api/ave/storyboard/generate`(body: story/content_type/global_anchors)
|
||||
- 内部调 `story_director.scene_planner.plan_scenes` → 转成统一 Schema
|
||||
- `POST /api/ave/storyboard/revise`(单镜头重生成,为后期重试预留)
|
||||
|
||||
3. **分镜编辑 UI**(`views/ave-director.js`,菜单「🎬 导演创作」)
|
||||
- 故事输入(textarea)+ 内容类型 + 全局锚点(角色/场地选择)
|
||||
- 分镜表:逐条显示 `镜号/时长/类型/画面描述/台词/情绪`,可编辑、可删除、可加特效占位
|
||||
- 「生成分镜」→ 表格;「提交生成」→ 派任务
|
||||
|
||||
4. **生成 + 合成**(后端流水线)
|
||||
- 每镜头按 `type` 调能力(M1 先支持:`action`(Kling 图生视频)/ `background`(素材)/ `talking_head`(预留))
|
||||
- 去 AI 化链 `composer/de_ai.py`(DCS 第八节 FFmpeg 参数)
|
||||
- 拼接输出到 `output/<project_id>.mp4`;分镜状态回写(排队/生成中/完成/失败)
|
||||
|
||||
**验收标准**:一条 20 秒片子(3~6 个镜头),画面连贯、角色一致(`consistency_seed`)、有去 AI 化处理、能在「成片预览」播放。
|
||||
|
||||
---
|
||||
|
||||
## 七、后续里程碑(M1 之后,视效果再定)
|
||||
|
||||
| 里程碑 | 内容 |
|
||||
|:--|:--|
|
||||
| M2 | 资产库规范化(locations/products/props/vfx_presets 目录 + 上传 UI)+ `global_anchors` 全量注入 |
|
||||
| M3 | 能力层扩展(TTS 多提供商 / 口播 D-ID / 背景通义万相)+ 编排接入 command_bus(并行/重试/停止) |
|
||||
| M4 | 特效库(Kling camera_control 六参数 + 子弹时间)+ 3D 角色(混元3D) |
|
||||
| M5 | 批量生产(多故事并行)+ 成本追踪接入(`lib/cost_tracker` 已有) |
|
||||
| M6 | 按 2.2 节方案重组视频工厂菜单(资产/生产路径/编排/配置 4 组) |
|
||||
|
||||
---
|
||||
|
||||
## 八、待确认
|
||||
|
||||
1. **M1 生成引擎**:可灵余额不足 —— 先充值,还是先用火山方舟(即梦)跑通?
|
||||
2. **故事输入源**:手写故事 / 粘贴文案 / 也给「AI 从主题生成故事」?
|
||||
3. **菜单重组时机**:M1 先加一个「🎬 导演创作」入口(不动现有),还是先按第四节的 4 组方案整体重组?
|
||||
4. **成片时长**:M1 目标时限(20 秒 / 30 秒 / 不限,按分镜数定)?
|
||||
5. **去 AI 化是否默认开**?DCS 默认参数(模糊 0.4 / 颗粒 12 / 饱和 -0.12 / 色温 5300K)
|
||||
|
||||
---
|
||||
|
||||
## 九、关键文件索引
|
||||
|
||||
**后端(`05_tools/09_ave/scripts/`)**
|
||||
- `video_factory.py` — 5 种生产模式(`run_story` 在 518-631 行)
|
||||
- `story_director/scene_planner.py` / `temporal_bridge.py` / `batch_generator.py`
|
||||
- `composer/ffmpeg.py` / `hybrid.py` / `lipsync.py` / `speed_ramp.py` / `character_locker.py`
|
||||
- `main.py`(原子能力 CLI)/ `character_sheet.py`(Kling)/ `lib/`(config/cost_tracker/dashboard/logger)
|
||||
- `AVE_ARCHITECTURE_PLAN.md`(**既有架构规划,6 条生产路径**)
|
||||
- 待新建:`schemas.py` / `composer/de_ai.py`
|
||||
|
||||
**前端(`10_tools/10_dashboard/frontend/src/`)**
|
||||
- `nav-menu.js`(菜单单点定义)→ 视频工厂分组
|
||||
- `views/workflow.js`(画布+模板)/ `capabilities.js` / `person-swap.js` / `characters.js` / `char-gen.js`
|
||||
- 待新建:`views/ave-director.js`(分镜编辑 + 生成)
|
||||
|
||||
**集成**
|
||||
- `10_dashboard/app.py`(把 `09_ave/scripts` 加 sys.path)
|
||||
- `10_dashboard/plugins/ave.py`(能力目录数据源)/ `10_dashboard/workflows.py`(工作流模板)
|
||||
|
||||
**外部参考**
|
||||
- `~/Documents/导演创作系统(Director.docx`(DCS 说明书,已转文本 `/tmp/director_doc.txt`)
|
||||
@@ -0,0 +1,23 @@
|
||||
# 归档:视频工厂旧设计文档(2026-10-01)
|
||||
|
||||
这批文档是**视频工厂重构前**的设计稿,内容已被 **`PLANS/VIDEO_FACTORY_MASTER.md`(v2.0 唯一权威版)** 取代。
|
||||
|
||||
| 文档 | 归档原因 |
|
||||
|:--|:--|
|
||||
| `VIDEO_FACTORY_FRAMEWORK.md` | **菜单分类有误**:把"流程"和"能力"混着平铺;「导演创作」被当成独立板块(实际是一条流程)、「人物置换」被错放进资产(实际也是一条流程)→ 正确结构见 MASTER 第二节 |
|
||||
| `VIDEO_FACTORY_ARCHITECTURE.md` | 技术细节已并入 MASTER(第六节后端架构、第七节代码映射) |
|
||||
| `DCS_VIDEO_FACTORY_PLAN.md` | 现状调研 + M1 计划;**M1 已完成**(统一分镜 Schema → 导演适配器 → 端到端出片),计划部分作废 |
|
||||
|
||||
## 仍可参考的部分
|
||||
|
||||
- M1 的实施记录与实测数据(统一分镜 Schema 14 模型 / 导演适配器 / 可灵引擎 / 去AI化 / 流水线 / 并发与体积优化)
|
||||
- 现有代码盘点表(哪些是空壳、哪些真能跑)
|
||||
|
||||
## 已失效的部分
|
||||
|
||||
- **菜单/信息架构**(错把流程与能力平级摆放)
|
||||
- 阶段划分(S1~S5 → 已重排为 MASTER 的 P1~P7)
|
||||
|
||||
## 当前权威文档
|
||||
|
||||
**`PLANS/VIDEO_FACTORY_MASTER.md`** —— 三层模型(流程 / 能力 / 资产)+ 前端信息架构 + 流程清单与现状 + 执行审查机制 + 后端架构 + 改造计划 + 待确认项。
|
||||
+340
@@ -0,0 +1,340 @@
|
||||
# 视频工厂结构化设计 v1.0
|
||||
|
||||
> 创建: 2026-10-01 | 状态: 设计待确认
|
||||
> 定位: 视频工厂的**整体架构设计**(能力层/节点层/流程层/执行器 + 4 个可替换点)
|
||||
> 配套: `DCS_VIDEO_FACTORY_PLAN.md`(现状调研 + M1 落地计划)
|
||||
> 输入: DCS 说明书 v2.0 + 用户口述需求 + 4 个导演系统调研
|
||||
|
||||
---
|
||||
|
||||
## 一、设计目标(用户原话转译)
|
||||
|
||||
> "我用不同的导演系统,最后都出现统一的这种调度;把大家的优点结合起来,怎么嵌入进去"
|
||||
|
||||
**五件事要串起来**:
|
||||
|
||||
1. **能力节点**(原子能力)—— 一个个小工作能力(TTS / 图生视频 / 换脸 / 对口型…)
|
||||
2. **流程拼接**(模板)—— 能力节点串成流水线(口播 / 短剧 / 广告…)
|
||||
3. **节点设置 + 流程设置** —— 每个节点打开有**默认值**,可改成别的(含数据库、大模型)
|
||||
4. **基础资源库**(资产)—— 角色 / 场景 / 道具 / 产品 / BGM / 音效 / 特效预设,**所有流程共用**
|
||||
5. **导演选择 + 路径/脚本/分镜设置** —— 导演系统可切换(5.2 为主),统一输出分镜
|
||||
|
||||
**三个核心机制**:
|
||||
- **可插拔**:导演系统、能力供应商、大模型、资产 —— 都能换,换了不改流程
|
||||
- **统一调度**:无论哪个导演系统、哪个供应商,下游执行完全一样
|
||||
- **分层配置**:全局默认 → 流程级 → 节点级(逐级覆盖)
|
||||
|
||||
---
|
||||
|
||||
## 二、总体架构
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ ① 导演层(可替换)★ 替换点 1 │
|
||||
│ OpenDirector │ AI Storyboard Director v5.2(默认) │ clip-storyboard │
|
||||
│ Seedance Director 4.0 │ …(任何导演系统) │
|
||||
│ ↓ 都输出「统一分镜 Schema」 │
|
||||
├─────────────────────────────────────────────────────────────────────┤
|
||||
│ ② 编排层:流程(Template)= 节点 + 连线 │
|
||||
│ 短剧线 / 口播线 / 卡点线 / 数字人线 / 广告线 / 模仿线 │
|
||||
│ ↓ 每个节点引用能力 │
|
||||
├─────────────────────────────────────────────────────────────────────┤
|
||||
│ ③ 能力层(Capability Registry)★ 替换点 2(供应商)★ 替换点 3(模型) │
|
||||
│ 音频:TTS / 变声 / BGM / 节拍分析 / 混音 │
|
||||
│ 视觉:文生图 / 图生视频 / 文生视频 / 换脸 / 对口型 / 运镜 / 特效 │
|
||||
│ 视频:拼接 / 变速 / 转场 / 字幕 / 去AI化 │
|
||||
│ 分析:剧本解析 / 分镜规划 / 提示词生成 / 内容审核 │
|
||||
│ 外部:ComfyUI 工作流(=能力孵化器) │
|
||||
│ ↓ 每个能力多供应商可选 │
|
||||
├─────────────────────────────────────────────────────────────────────┤
|
||||
│ ④ 执行层(统一调度)★ 要补 │
|
||||
│ 任务派发 → 状态机 → 轮询 → 重试 → 停止 → 产物收集 → 成本记账 │
|
||||
│ 复用:command_bus / guardd / 任务面板 / lib.cost_tracker │
|
||||
├─────────────────────────────────────────────────────────────────────┤
|
||||
│ ⑤ 资产层(共享底座)★ 替换点 4(内容) │
|
||||
│ 角色 / 场景 / 道具 / 产品 / BGM / 音效 / 特效预设 / 风格 │
|
||||
│ 被所有流程按 id 引用 │
|
||||
└─────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**统一调度的实现关键**:所有导演系统输出**同一份分镜 Schema** → 编排层/能力层/执行层完全不感知导演是谁。
|
||||
|
||||
---
|
||||
|
||||
## 三、① 导演层(可替换)
|
||||
|
||||
### 3.1 四个候选系统定位
|
||||
|
||||
| 系统 | 形态 | 强项 | 弱点 | 在我们的定位 |
|
||||
|:--|:--|:--|:--|:--|
|
||||
| **AI Storyboard Director v5.2** | Agent Skill(提示词/方法论) | **分镜质量最高**;先锁视觉概念再拆镜头;两遍交付(设计稿+生产稿) | 不自动出片(要接生成 API) | **默认导演**(分镜/摄影精细打磨) |
|
||||
| clip-storyboard-director | Agent Skill(本地优先) | **跨场景一致性最强**(4D 持久化缓冲区,"病房→走廊→室外"角色不变) | 配置复杂(维护 persistence_buffer) | **一致性模式**(多场景长片、角色要严格不变时切换) |
|
||||
| Seedance Director 4.0 | 提示词工程(16 技能) | **模板化最好**(9 层工程文件 + 广告/短剧/生活方式配方) | 需 Claude Code/Cursor 环境 | **批量复用模式**(配方化生产) |
|
||||
| OpenDirector | Docker 全自动流水线(9 Agent) | **全自动程度最高**(研究→剧本→分镜→配音→成片),34 风格模板 | 叙事精细控制弱(适合粗剪) | **快速验证模式**("一句话→成片"粗剪) |
|
||||
|
||||
### 3.2 接入规范(适配器模式)
|
||||
|
||||
```python
|
||||
# 09_ave/scripts/directors/base.py
|
||||
class BaseDirector:
|
||||
id: str # "storyboard_v52" / "clip_storyboard" / "seedance_4" / "open_director"
|
||||
name: str
|
||||
capabilities: list # ["storyboard", "visual_concept", "consistency", "auto_pipeline"]
|
||||
def generate(self, story: str, anchors: GlobalAnchors, options: dict) -> Storyboard:
|
||||
"""任何导演系统 → 统一分镜 Schema(Storyboard)"""
|
||||
```
|
||||
|
||||
- **Skill 型**(v5.2 / clip / Seedance):把技能文档作为**提示词注入**,调 LLM 产出分镜 → 适配器转 Schema
|
||||
- **Service 型**(OpenDirector):调它的 HTTP 服务拿结果 → 适配器转 Schema
|
||||
- **切换方式**:控制台下拉选导演 + 每个导演独立的选项面板(如 clip 的 persistence 开关、Seedance 的配方选择)
|
||||
|
||||
### 3.3 视觉概念锁定(v5.2 的"两遍交付")
|
||||
|
||||
```
|
||||
第一遍:设计稿 —— 锁定视觉概念(风格/色调/材质/构图语言),供导演确认
|
||||
第二遍:生产稿 —— 按确认的概念拆镜头,输出可执行分镜
|
||||
```
|
||||
→ 我们的 UI:分镜页分**两个 Tab**(设计稿 / 生产稿),设计稿确认后才生成生产稿。
|
||||
|
||||
---
|
||||
|
||||
## 四、③ 能力层(Capability Registry)★ 用户最想要的"基础能力整理"
|
||||
|
||||
### 4.1 能力定义结构
|
||||
|
||||
```yaml
|
||||
# 09_ave/config/capabilities.yaml
|
||||
capabilities:
|
||||
- id: tts_generate
|
||||
name: 语音合成
|
||||
category: audio # audio | visual | video | analysis | external
|
||||
description: 文本 → 语音音频
|
||||
input: { text: string, emotion: string?, speed: float? }
|
||||
output: { audio_path: string, duration: float }
|
||||
params_schema: # 参数定义(用于生成 UI 表单)
|
||||
emotion: { type: enum, options: [normal, happy, sad, angry], default: normal }
|
||||
speed: { type: number, min: 0.5, max: 2.0, default: 1.0 }
|
||||
providers: # ★ 多供应商
|
||||
- { id: volcano, name: 火山语音, api_key_ref: volcano.voice_app_key, default: true }
|
||||
- { id: aliyun, name: 阿里语音, api_key_ref: aliyun.api_key }
|
||||
- { id: fish_audio,name: Fish Audio, api_key_ref: fish_audio.api_key }
|
||||
defaults: { provider: volcano, emotion: normal, speed: 1.0 }
|
||||
```
|
||||
|
||||
### 4.2 四类能力来源
|
||||
|
||||
| 来源 | 说明 | 现有资产 |
|
||||
|:--|:--|:--|
|
||||
| **原子能力** | 后端已实现的固定能力 | `09_ave/scripts/01~06` + `main.py` CLI(voice/material/parse/compose/anchors…) |
|
||||
| **外部 API** | 第三方服务(多供应商) | 可灵 / 火山方舟(即梦) / 百炼(人物置换) / 阿里 TTS / Pexels |
|
||||
| **ComfyUI 工作流** | **能力孵化器**:一个工作流 = 一个新能力 | RunningHub(待接入)→ 可长出面部件表情控制、风格渲染等 |
|
||||
| **技能包** | 提示词型能力(导演/编剧/审核) | `ai-film-skills` 21 模块(待下载) |
|
||||
|
||||
### 4.3 能力盘点(从现有资产映射)
|
||||
|
||||
| 类别 | 已有能力 | 来源 |
|
||||
|:--|:--|:--|
|
||||
| 音频 | TTS 合成(火山/阿里)、BGM 生成、节拍分析、混音 | `02_voice_synthesizer` / `03_bgm_generator` / `main.py voice` |
|
||||
| 视觉 | 文生图(Kling)、图生视频(Kling)、人物置换(百炼)、定妆照 | `character_sheet.py` / `person_swap/` |
|
||||
| 视频 | 拼接、变速、转场、对口型、节拍同步、角色锁定 | `composer/`(ffmpeg/hybrid/speed_ramp/lipsync/character_locker/beat_sync) |
|
||||
| 分析 | 文案解析、分镜规划、锚点提取、素材搜索 | `01_director_parser` / `story_director` / `04_anchor_extractor` / `main.py material` |
|
||||
| **缺** | **去 AI 化**、字幕生成增强、ComfyUI、面部微表情 | 待建 / 待接 |
|
||||
|
||||
### 4.4 与大模型的关系
|
||||
|
||||
**能力 ≠ 模型**,但很多能力**背后是模型**:
|
||||
- TTS 能力 → 背后可选火山/阿里模型
|
||||
- 分镜能力 → 背后可选 DeepSeek / 其他 LLM
|
||||
- 图生视频 → 可灵 / 即梦 / 其他
|
||||
|
||||
→ 所以能力定义里既列 **providers**(服务商),也在 providers 里带 **model** 字段 → 与现有「🔑 API 配置」页打通(4.6.0 已做密钥管理)。
|
||||
|
||||
---
|
||||
|
||||
## 五、② 编排层:节点与流程
|
||||
|
||||
### 5.1 节点模型
|
||||
|
||||
```yaml
|
||||
node:
|
||||
id: n3
|
||||
type: capability # capability(能力节点)| control(控制节点)
|
||||
capability_id: tts_generate # 引用能力
|
||||
provider: volcano # 覆盖默认供应商
|
||||
model: null # 覆盖默认模型(null=用能力默认)
|
||||
params: # 覆盖能力默认参数(只写要改的)
|
||||
emotion: warm
|
||||
inputs: { text: "{{n1.script}}" } # 上游节点输出引用
|
||||
outputs: { audio_path: "var.audio" }
|
||||
ui: { x: 300, y: 160, collapsed: false }
|
||||
```
|
||||
|
||||
**两种节点**:
|
||||
- **能力节点**:引用一个能力(占 15 种节点类型的大部分)
|
||||
- **控制节点**:`audit_gate`(人工审核门)、分支、循环(现有 `audit_gate` 已有)
|
||||
|
||||
### 5.2 流程模板(Template)
|
||||
|
||||
现有 6 个 + 建议补充:
|
||||
|
||||
| 模板 | 线 | 现状 |
|
||||
|:--|:--|:--|
|
||||
| `basic_dub` 基础口播 | 口播线 | ✅ 已有(5 节点) |
|
||||
| `beat_sync` 卡点视频 | 卡点线 | ✅ 已有(4 节点) |
|
||||
| `character_narrative` 角色叙事 | 故事线 | ✅ 已有(8 节点) |
|
||||
| `digital_human` 数字人口播 | 数字人线 | ✅ 已有(4 节点) |
|
||||
| `hybrid_dub` 口播+卡点 | 混合线 | ✅ 已有(4 节点) |
|
||||
| `short_drama` 短剧创作 | 故事线 | ✅ 已有(12 节点) |
|
||||
| **`director_cut` 导演精剪**(建议新增) | DCS 主线 | 🆕 分镜编辑 + 逐镜头重试 + 去AI化 |
|
||||
|
||||
### 5.3 配置继承链(用户说的"默认值 + 可改")
|
||||
|
||||
```
|
||||
全局默认(capability.defaults)
|
||||
↓ 被覆盖
|
||||
流程级(template.node_defaults) ← 这个流程普遍要改的
|
||||
↓ 被覆盖
|
||||
节点级(node.params) ← 这一次执行的
|
||||
↓ 被覆盖
|
||||
运行时输入(用户当场填) ← 内容/临时调整
|
||||
```
|
||||
|
||||
**UI 呈现**:节点配置面板里每个字段显示"**当前值 + 来源标记**"(默认/流程/节点/临时),改了就在当前层生效,并提供"恢复默认"。
|
||||
|
||||
---
|
||||
|
||||
## 六、④ 执行层(统一调度)★ 要补
|
||||
|
||||
### 6.1 现状问题
|
||||
|
||||
`workflows.py:519-530` 的 `WorkflowRunner._execute()` **只做拓扑排序然后标记 completed**,不真跑。
|
||||
真正能出片的是 `video_factory.py`(CLI),**两者未打通**。
|
||||
|
||||
### 6.2 补齐方案
|
||||
|
||||
```python
|
||||
# 执行器职责
|
||||
1. 拓扑排序(已有)
|
||||
2. 逐节点执行:按 node.capability_id 查能力注册表 → 取 provider → 调实现
|
||||
3. 状态机:pending → running → succeeded / failed / skipped
|
||||
4. 产物收集:每节点输出存入 run context(供下游 {n1.xxx} 引用)
|
||||
5. 失败重试:节点级重试次数 + 指数退避(复用 lib/retry 思路)
|
||||
6. 停止:支持中断运行中的流程
|
||||
7. 成本记账:调 lib.cost_tracker 记录每次调用花费
|
||||
8. 进度上报:写 run 状态 → 前端轮询展示(复用现有 /api/workflow/runs/{id})
|
||||
```
|
||||
|
||||
**执行通道选项**:
|
||||
- **本地线程**(现有 `WorkflowRunner` 骨架 + threading)—— 适合轻量任务(解析/规划/合成)
|
||||
- **command_bus 派发**(现有养号体系)—— 适合长任务(Kling 生成、ComfyUI 渲染),有任务面板/重试/停止
|
||||
- **建议**:能力定义里带 `execution: local | remote` 字段,执行器按此选择通道
|
||||
|
||||
---
|
||||
|
||||
## 七、⑤ 资产层(共享底座)
|
||||
|
||||
### 7.1 目录结构(对齐 DCS 第五节 + 复用现有)
|
||||
|
||||
```
|
||||
agent-local/tools/ave/assets/ ← 运行时资产(不进 git)
|
||||
├── characters/ 角色 2D 参考图 + 定妆照 + voice_sample ✅ character_registry 已有
|
||||
├── characters_3d/ 3D 模型(混元3D,后期)
|
||||
├── locations/ 场景(AI 生成)
|
||||
├── real_locations/ 真实场地参考(多角度图 + 视频)
|
||||
├── products/ 产品资产(多角度 + must_keep 清单)
|
||||
├── props/ 道具
|
||||
├── bgm/ sfx/ BGM / 音效
|
||||
└── vfx_presets/ 特效预设(bullet_time.yaml 等)
|
||||
```
|
||||
|
||||
### 7.2 引用方式
|
||||
|
||||
分镜 Schema 里按 **id** 引用(`character_id` / `location_id` / `product_id` / `props[]` / `bgm_id` / `vfx.vfx_id`),执行器按 id 去资产库取文件路径注入 API 请求。
|
||||
|
||||
---
|
||||
|
||||
## 八、④/⑤ 之外的横切:大模型与供应商管理
|
||||
|
||||
| 项 | 现状 | 落地 |
|
||||
|:--|:--|:--|
|
||||
| 密钥管理 | ✅ 「🔑 API 配置」页(脱敏 + 测试 + 版本回滚) | 能力注册表的 `api_key_ref` 指向它 |
|
||||
| 供应商切换 | 🟡 分散在代码 | 能力定义里 providers 列表 + UI 下拉 |
|
||||
| 模型切换 | 🟡 仅 AI 文本(DeepSeek) | 扩展到 TTS/图像/视频模型 |
|
||||
| 效果对比 | ❌ | **建议**:每次执行记录所用 provider/model 组合 → 后续可按"效果好的组合"复用 |
|
||||
|
||||
---
|
||||
|
||||
## 九、UI 结构(菜单重组)
|
||||
|
||||
```
|
||||
🎬 视频工厂
|
||||
├─ 📦 资产管理 ← 共享底座
|
||||
│ 🧑 角色库(生成/列表/定妆照/音色)· 🎬 场景库 · 🧊 产品道具 · 🖼️ 素材库 · 🔄 人物置换
|
||||
│
|
||||
├─ 🎞️ 创作(生产路径) ← 一条线一个入口
|
||||
│ 🎬 导演创作★(故事→分镜→成片,默认)· 🎙️ 口播 · 🥁 卡点 · 👤 数字人 · 🎭 模仿换人
|
||||
│
|
||||
├─ ⚙️ 编排 ← 能力与流程
|
||||
│ 🔀 工作流(画布 + 真执行)· 🧩 能力库(注册表 + 供应商/参数默认值)· 🎨 流程模板 · 📋 生产记录 · 💰 费用
|
||||
│
|
||||
└─ 🔧 配置
|
||||
⚡ 能力目录(只读总览)· 🤖 模型与供应商 · 🎯 导演系统 · 🔑 API 配置
|
||||
```
|
||||
|
||||
**每个节点打开后的配置面板**(用户核心诉求):
|
||||
|
||||
```
|
||||
┌─ 节点:语音合成 ────────────────────┐
|
||||
│ 供应商 [火山语音 ▾](默认) │ ← 可换:火山/阿里/Fish
|
||||
│ 模型 [CosyVoice ▾](默认) │ ← 可换
|
||||
│ 情绪 [normal ▾](流程覆盖) │ ← 显示来源
|
||||
│ 语速 [1.0](默认) │
|
||||
│ ────────────────────────────── │
|
||||
│ 输入 text ← {{n1.script}} │
|
||||
│ 输出 audio_path → var.audio │
|
||||
│ [测试此节点] [恢复默认] [保存] │
|
||||
└─────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 十、实施路线
|
||||
|
||||
| 阶段 | 内容 | 交付 |
|
||||
|:--|:--|:--|
|
||||
| **S1|能力注册表** | `capabilities.yaml` + 后端加载器 + 「🧩 能力库」页(列表 + 供应商/参数默认值编辑) | 看得见"我有哪些能力" |
|
||||
| **S2|M1 导演创作** | 统一分镜 Schema + 导演适配器(先接 v5.2)+ 分镜编辑页 + 调真实流水线出片 | **一条 20 秒成片** |
|
||||
| **S3|执行器补齐** | `WorkflowRunner` 真执行(能力注册表驱动)+ 节点配置面板(默认/覆盖)+ 状态/重试/停止 | 工作流"通电" |
|
||||
| **S4|资产库扩展** | locations / products / props / vfx_presets + 上传 UI + `global_anchors` 全量注入 | 一致性保障 |
|
||||
| **S5|能力扩展** | ComfyUI(RunningHub) 接入 + 更替导演系统(clip/Seedance 可切)+ 效果对比记录 | 能力孵化 |
|
||||
|
||||
---
|
||||
|
||||
## 十一、现有资产映射(复用 / 改造 / 新建)
|
||||
|
||||
| 现有资产 | 处置 |
|
||||
|:--|:--|
|
||||
| `09_ave/scripts/01~06`、`main.py` CLI | **复用**为能力层实现(包一层能力接口) |
|
||||
| `composer/`(ffmpeg/hybrid/lipsync/speed_ramp/beat_sync/character_locker) | **复用**为视频类能力 |
|
||||
| `video_factory.py`(run_oral/beat/story/…) | **改造**:拆成能力 + 保留为"快速命令"入口 |
|
||||
| `story_director/`(scene_planner/temporal_bridge/batch_generator) | **改造**为"导演适配器"之一(与 v5.2 并列可选) |
|
||||
| `workflows.py`(6 模板 + 15 节点定义) | **复用**:节点定义 → 对齐能力注册表;**补执行器** |
|
||||
| `app.py` + `plugins/ave.py` + `/api/capabilities` | **复用**:能力目录数据源从"解析 Markdown"改为读能力注册表 |
|
||||
| `person_swap/` / `character_sheet.py` | **复用**为能力(换脸 / 文生图) |
|
||||
| `lib/cost_tracker.py` | **复用**为执行层记账 |
|
||||
| `character_registry/` | **扩展**为完整资产库 |
|
||||
| **能力注册表**(`config/capabilities.yaml` + 加载器) | 🆕 **新建(S1)** |
|
||||
| **导演适配器**(`directors/base.py` + 各实现) | 🆕 **新建(S2)** |
|
||||
| **去 AI 化**(`composer/de_ai.py`) | 🆕 **新建(S2)** |
|
||||
| **分镜编辑 UI**(`views/ave-director.js`) | 🆕 **新建(S2)** |
|
||||
| `ai-film-skills` 21 模块 | 🆕 **下载并入**(建议 `05_tools/09_ave/skills/`) |
|
||||
|
||||
---
|
||||
|
||||
## 十二、待确认
|
||||
|
||||
1. **S1 先做还是 S2 先做?**(我建议 S1 能力注册表 —— 它是后面所有事的底座,半天出初版)
|
||||
2. **`ai-film-skills` 是否下载入库**?(Apache-2.0,含 v5.2 分镜技能 + 人物/场景/道具资产规范)
|
||||
3. **去 AI 化默认开吗**?(DCS 参数:模糊 0.4 / 颗粒 12 / 饱和 -0.12 / 色温 5300K)
|
||||
4. **执行通道偏好**:轻任务本地线程 + 长任务走 command_bus/guardd —— 认可?
|
||||
5. **菜单重组时机**:S1/S2 期间只加必要入口,S3 时按第九节整体重组 —— 还是尽早重组?
|
||||
@@ -0,0 +1,530 @@
|
||||
# 视频工厂框架说明书 v1.0
|
||||
|
||||
> 创建: 2026-10-01 | 状态: **框架对齐中(待你确认后冻结)**
|
||||
> 定位: 视频工厂的**纲领文档** —— 模块边界、五张地图、解耦规范、代码组织、实施路径、扩展速查
|
||||
> 配套: `DCS_VIDEO_FACTORY_PLAN.md`(现状调研 + M1 落地细节)
|
||||
> 输入: DCS 说明书 v2.0 + 用户口述需求 + 4 个导演系统调研
|
||||
|
||||
---
|
||||
|
||||
## 〇、一句话定位
|
||||
|
||||
> **视频工厂是一个「调用层 + 编排层」—— 大模型能力全部解耦在远端,我们只负责:选(哪家能力)、调(带什么参数)、串(流程怎么走)、管(资产/产物/成本)。**
|
||||
|
||||
**明确边界**(避免越做越乱):
|
||||
|
||||
| 是 ✅ | 不是 ❌ |
|
||||
|:--|:--|
|
||||
| 能力调用层(封装远端 API,多供应商可选) | 模型训练 / 推理(全部远端) |
|
||||
| 流程编排层(能力串成流水线) | 渲染农场(FFmpeg 本地轻量处理) |
|
||||
| 资产管理层(角色/场景/产品/道具/音效) | 素材库平台(只做引用与索引) |
|
||||
| 产物与成本管理层 | 剪辑软件(不做精细时间线编辑) |
|
||||
|
||||
**与养号模块的关系**:**并列**。共用 Dashboard、账号体系、任务面板、API 配置页;互不侵入。
|
||||
|
||||
---
|
||||
|
||||
## 一、五张地图
|
||||
|
||||
### 地图 1|架构图(5 层 + 4 替换点)
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────────────────────────────────┐
|
||||
│ L5 接入层(Dashboard 前端) │
|
||||
│ 🎬导演创作 · 🔀工作流 · 🧩能力库 · 📦资产库 · 🎯导演系统 · 🤖模型供应商 │
|
||||
└────────────────────────────────┬─────────────────────────────────────────┘
|
||||
↓ HTTP (FastAPI :9988)
|
||||
┌──────────────────────────────────────────────────────────────────────────┐
|
||||
│ L4 编排层(后端) │
|
||||
│ · 流程执行器(拓扑排序 → 逐节点执行 → 状态机 → 重试/停止) │
|
||||
│ · 节点配置解析(默认 ← 流程 ← 节点 ← 运行时 四级继承) │
|
||||
│ · 分镜编辑器后端(统一 Schema 读写) │
|
||||
└────────────────────────────────┬─────────────────────────────────────────┘
|
||||
↓ 按 capability_id 查注册表
|
||||
┌──────────────────────────────────────────────────────────────────────────┐
|
||||
│ L3 能力层(Capability Registry)★替换点②供应商 ★替换点③模型 │
|
||||
│ 音频: TTS/BGM/节拍/混音 视觉: 文生图/图生视频/换脸/对口型/运镜 │
|
||||
│ 视频: 拼接/变速/转场/字幕/去AI化 分析: 解析/分镜/提示词/审核 │
|
||||
│ 外部: ComfyUI 工作流(孵化器) │
|
||||
│ 每个能力: input/output/params_schema/providers[]/defaults/execution │
|
||||
└────────────────────────────────┬─────────────────────────────────────────┘
|
||||
↓ 本地线程 或 command_bus 派发
|
||||
┌──────────────────────────────────────────────────────────────────────────┐
|
||||
│ L2 执行层(统一调度) │
|
||||
│ 本地任务(解析/规划/合成)· 远程任务(生成类,走 guardd) │
|
||||
│ 状态机 / 轮询 / 重试 / 停止 / 产物收集 / 成本记账 │
|
||||
└────────────────────────────────┬─────────────────────────────────────────┘
|
||||
↓ 按 id 取资产
|
||||
┌──────────────────────────────────────────────────────────────────────────┐
|
||||
│ L1 资产层(共享底座)★替换点④内容 │
|
||||
│ 角色(含3D) · 场景 · 产品 · 道具 · BGM · 音效 · 特效预设 · 风格 │
|
||||
└──────────────────────────────────────────────────────────────────────────┘
|
||||
|
||||
★替换点①导演:AI Storyboard Director v5.2(默认) | clip-storyboard | Seedance 4.0 | OpenDirector
|
||||
全部输出同一份「统一分镜 Schema」
|
||||
```
|
||||
|
||||
### 地图 2|能力地图(现有 + 规划)
|
||||
|
||||
| 类别 | 能力 | 供应商(可选) | 现状 |
|
||||
|:--|:--|:--|:--|
|
||||
| **音频** | TTS 语音合成 | 火山语音 ✅ / 阿里语音 ✅ / Fish Audio(待) / ElevenLabs(待) | 已有 |
|
||||
| | BGM 生成 | ACE-Step / MusicGen / Suno | 已有(`03_bgm_generator`) |
|
||||
| | 节拍分析 | 本地 librosa 类 | 已有(`beat_sync`) |
|
||||
| | 混音 / 变速 | 本地 FFmpeg | 已有(`composer`) |
|
||||
| **视觉** | 文生图(定妆照/概念图) | 可灵 v1 ✅ / 火山即梦 ✅ | 已有(`character_sheet`) |
|
||||
| | 图生视频 | 可灵 ✅(余额不足) / 火山即梦 ✅ | 已有(`batch_generator`) |
|
||||
| | 文生视频 | 可灵 / 通义万相(待) / Sora(待) | 部分 |
|
||||
| | 人物置换(换脸) | 阿里百炼 wan2.2-animate-mix ✅(欠费) | 已有(`person_swap`) |
|
||||
| | 对口型(数字人) | 火山 OmniHuman / D-ID(待) / HeyGen(待) | 已有 |
|
||||
| | 运镜控制 | 可灵 camera_control(6 参数) | 待接 |
|
||||
| | 特效(子弹时间等) | 万兴天幕(待) / 海螺AI(待) / ComfyUI | 待接 |
|
||||
| | **面部微表情** | ComfyUI 工作流 | 待接 |
|
||||
| **视频** | 拼接 / 转场 | 本地 FFmpeg | 已有(`composer/ffmpeg`) |
|
||||
| | 变速 / 速度斜坡 | 本地 | 已有(`speed_ramp`) |
|
||||
| | 字幕 | 本地(SRT/ASS) | 部分 |
|
||||
| | **去 AI 化** | 本地 FFmpeg 链 | 🆕 待建 |
|
||||
| | 3D 角色 | 混元3D(待) | 待接 |
|
||||
| **分析** | 文案解析 | LLM(DeepSeek ✅) | 已有(`01_director_parser`) |
|
||||
| | 分镜规划 | **导演系统**(见替换点①) | 已有(`scene_planner`)+ 待接 v5.2 |
|
||||
| | 提示词生成 | LLM / 导演技能 | 已有 |
|
||||
| | 内容审核 | LLM / 人工门 | 部分(`audit_gate`) |
|
||||
| **外部** | ComfyUI 工作流 | RunningHub(待) / ComfyDeploy(待) / 自建 | 🆕 待接 |
|
||||
|
||||
### 地图 3|菜单地图
|
||||
|
||||
**当前已落地(4.8.1 重组后)**:
|
||||
|
||||
```
|
||||
📦 🎬 视频·资产 ← 共享底座
|
||||
🧑 角色库(characters)· 🎭 角色生成器(char-gen)· 🖼️ 素材库(assets)· 🔄 人物置换(person-swap)
|
||||
|
||||
⚙️ 🎬 视频·编排 ← 能力与流程
|
||||
🔀 工作流(workflow)· 🧩 能力库(ave-capabilities,可编辑注册表)
|
||||
📋 生产记录(productions)· 💰 费用分析(costs)
|
||||
|
||||
🔧 🎬 视频·配置
|
||||
⚡ 能力总览(capabilities,只读;与「能力库」互补)
|
||||
|
||||
🎬 视频·创作 ← 待 S2 建立页面后加入
|
||||
🎬 导演创作★(ave-director)· 🎙️ 口播 · 🥁 卡点 · 👤 数字人 · 🎭 模仿换人
|
||||
```
|
||||
|
||||
**目标形态(框架规划,S2~S4 逐步补齐)**:
|
||||
|
||||
```
|
||||
🎬 视频工厂
|
||||
├─ 📦 资产管理 🧑 角色库 · 🎬 场景库 · 🧊 产品道具 · 🖼️ 素材库 · 🔄 人物置换
|
||||
├─ 🎞️ 创作 🎬 导演创作★ · 🎙️ 口播 · 🥁 卡点 · 👤 数字人 · 🎭 模仿换人
|
||||
├─ ⚙️ 编排 🔀 工作流 · 🧩 能力库 · 🎨 流程模板 · 📋 生产记录 · 💰 费用
|
||||
└─ 🔧 配置 ⚡ 能力总览 · 🤖 模型与供应商 · 🎯 导演系统 · 🔑 API 配置
|
||||
```
|
||||
|
||||
### 地图 4|端到端流程图(导演创作主线)
|
||||
|
||||
```
|
||||
【1. 起意】
|
||||
选导演系统(M) ── 5.2默认 / clip一致性 / Seedance配方 / OpenDirector全自动
|
||||
写故事 ─────── 手写 or 粘贴 or(AI 从主题生成)
|
||||
选资产 ─────── 角色(必) / 场景 / 产品 / 风格
|
||||
设全局锚点 ──── consistency_seed / shooting_style / 光照/镜头语言
|
||||
↓
|
||||
【2. 分镜(导演干活)】
|
||||
① 设计稿:锁视觉概念(风格/色调/材质/构图)→ 人工确认 ★v5.2 两遍交付
|
||||
② 生产稿:按概念拆镜头 → 统一分镜 Schema(每镜头:景别/机位/运镜/时长/画面/台词/情绪)
|
||||
↓
|
||||
【3. 分镜编辑(人工把关)】
|
||||
逐条看 → 改画面描述/台词/时长 → 删镜头/加镜头 → 加特效(占位) → 单镜头重生成
|
||||
↓
|
||||
【4. 逐镜头执行(能力层)】
|
||||
每镜头按 type 选能力:
|
||||
action → 图生视频(可灵/即梦)
|
||||
talking_head → 口播(火山/D-ID)
|
||||
background → 素材/背景生成(通义万相/素材库)
|
||||
vfx → 特效(可灵运镜/万兴/ComfyUI)
|
||||
3d_character → 3D 角色(混元3D)
|
||||
每镜头可调:供应商 / 模型 / 参数(覆盖默认)
|
||||
↓
|
||||
【5. 合成(本地)】
|
||||
配音(TTS) → 去AI化(模糊/颗粒/调色) → 拼接 → BGM → 字幕 → 成片 mp4
|
||||
↓
|
||||
【6. 验收与迭代】
|
||||
预览成片 → 不满意 → 回到【3】改对应镜头 → 单条重试(不必整片重跑)
|
||||
满意 → 生产记录归档 + 成本入账
|
||||
```
|
||||
|
||||
### 地图 5|数据流(统一 Schema 是中枢)
|
||||
|
||||
```
|
||||
导演系统 ──出──→ ┌──────────────────┐ ──读──→ 分镜编辑器 UI
|
||||
│ 统一分镜 Schema │
|
||||
资产库 ──id引用─→ │ Storyboard │ ──读──→ 执行器(逐镜头派任务)
|
||||
│ ├ GlobalAnchors│
|
||||
│ └ Shot[] │ ──写──→ 执行状态(每镜头)
|
||||
└──────────────────┘ ──写──→ 产物路径 + 成本记录
|
||||
```
|
||||
|
||||
**Schema 的三大作用**:① 导演系统的"普通话"(谁都能读)② 前端编辑对象 ③ 执行器的输入契约。
|
||||
|
||||
---
|
||||
|
||||
## 二、解耦机制(4 个扩展点 + 契约)
|
||||
|
||||
### 扩展点①:导演系统(新增一个导演 = 实现一个类)
|
||||
|
||||
```python
|
||||
# 09_ave/scripts/directors/base.py
|
||||
class BaseDirector:
|
||||
id: str # "storyboard_v52"
|
||||
name: str # "AI Storyboard Director v5.2"
|
||||
kind: str # "skill" | "service"
|
||||
features: list # ["visual_concept", "two_pass", "consistency"]
|
||||
options_schema: dict # 该导演的专属选项(自动生成 UI 表单)
|
||||
|
||||
def generate(self, story, anchors, options) -> Storyboard:
|
||||
"""输出统一分镜 Schema —— 这是唯一的契约"""
|
||||
|
||||
# 注册(directors/__init__.py)
|
||||
DIRECTORS = {d.id: d for d in [StoryboardV52(), ClipStoryboard(), Seedance4(), OpenDirector()]}
|
||||
```
|
||||
|
||||
**接入一个新导演系统,只需 3 步**:
|
||||
1. 在 `directors/` 加一个文件,实现 `BaseDirector`
|
||||
2. 在 `directors/__init__.py` 注册
|
||||
3. (如需要)加它的选项面板 schema
|
||||
|
||||
→ 前端下拉自动出现,下游全不用改。
|
||||
|
||||
### 扩展点②:能力供应商(一个能力接多家)
|
||||
|
||||
```yaml
|
||||
# 09_ave/config/capabilities.yaml
|
||||
- id: image_to_video
|
||||
name: 图生视频
|
||||
category: visual
|
||||
input: { image: file, prompt: string, duration: number }
|
||||
output: { video_path: string }
|
||||
params_schema:
|
||||
duration: { type: number, min: 3, max: 10, default: 5 }
|
||||
providers:
|
||||
- { id: kling, name: 可灵, api_key_ref: kling.api_key, model: kling-v1, default: true }
|
||||
- { id: jimeng, name: 即梦, api_key_ref: volcano.ark_api_key, model: seedance }
|
||||
defaults: { provider: kling }
|
||||
execution: remote # local | remote(决定走本地线程还是 guardd)
|
||||
impl: providers.visual.kling_i2v # 实现类路径
|
||||
```
|
||||
|
||||
### 扩展点③:模型(能力背后的 LLM/模型)
|
||||
|
||||
- providers 里带 `model` 字段 → UI 可切
|
||||
- LLM 类能力(解析/分镜/提示词)也走同一机制:providers = DeepSeek / 其他
|
||||
- 与「🔑 API 配置」页打通(`api_key_ref` 指向已有密钥管理)
|
||||
|
||||
### 扩展点④:资产(内容可换)
|
||||
|
||||
- 所有流程按 **id** 引用资产(`character_id` / `location_id` / `product_id` / `bgm_id` / `vfx.vfx_id`)
|
||||
- 新增一类资产 = 加目录 + 加 meta.json 规范 + (可选)加管理 UI
|
||||
|
||||
### 配置继承链(四级覆盖)
|
||||
|
||||
```
|
||||
① 能力默认值(capabilities.yaml → defaults)
|
||||
↓ 被覆盖
|
||||
② 流程级(template.node_defaults)
|
||||
↓ 被覆盖
|
||||
③ 节点级(node.params)
|
||||
↓ 被覆盖
|
||||
④ 运行时(用户当场填)
|
||||
```
|
||||
UI 每个字段标注**来源**(默认/流程/节点/临时),并支持"恢复默认"。
|
||||
|
||||
---
|
||||
|
||||
## 三、代码组织规范
|
||||
|
||||
### 后端目录(`05_tools/09_ave/`)
|
||||
|
||||
```
|
||||
scripts/
|
||||
├── capabilities/ 🆕 能力层实现(每个能力一个文件,实现统一接口)
|
||||
│ ├── base.py 能力基类(input/output/params/providers)+ 注册表加载器
|
||||
│ ├── audio/ tts.py / bgm.py / beat.py / mix.py
|
||||
│ ├── visual/ t2i.py / i2v.py / swap_face.py / lipsync.py
|
||||
│ ├── video/ concat.py / speed.py / subtitle.py / de_ai.py ← de_ai 新建
|
||||
│ ├── analysis/ script_parse.py / storyboard.py / prompt_gen.py / review.py
|
||||
│ └── external/ comfyui.py(RunningHub)
|
||||
├── directors/ 🆕 导演层(替换点①)
|
||||
│ ├── base.py
|
||||
│ ├── storyboard_v52.py (默认,接 ai-film-skills 的 v5.2 技能)
|
||||
│ ├── clip_storyboard.py / seedance_4.py / open_director.py
|
||||
│ └── legacy_scene_planner.py (现有 story_director 包装为适配器)
|
||||
├── schemas.py 🆕 统一分镜 Schema(12 模型)
|
||||
├── executor/ 🆕 编排执行器
|
||||
│ ├── engine.py 拓扑排序 + 逐节点执行 + 状态机
|
||||
│ ├── config_resolver.py 四级配置继承解析
|
||||
│ └── task_runner.py local/remote 双通道(remote 走 command_bus)
|
||||
├── assets/ 🆕 资产管理(loader/validator/registry)
|
||||
├── composer/ ✅ 已有(ffmpeg/hybrid/lipsync/speed_ramp/beat_sync/character_locker)
|
||||
├── story_director/ ✅ 已有(作为 legacy 导演,保留)
|
||||
├── lib/ ✅ 已有(config/cost_tracker/dashboard/logger)
|
||||
├── skills/ 🆕 ai-film-skills 21 模块(导演/资产/摄影方法论)
|
||||
├── config/
|
||||
│ ├── capabilities.yaml 🆕 能力注册表(唯一的"能力真相源")
|
||||
│ ├── directors.yaml 🆕 导演注册配置
|
||||
│ └── providers.yaml 🆕 供应商/模型配置(密钥引用 API 配置页)
|
||||
└── main.py ✅ 已有(CLI 原子命令,保留为调试入口)
|
||||
```
|
||||
|
||||
### 前端目录(`05_tools/10_dashboard/frontend/src/`)
|
||||
|
||||
```
|
||||
views/
|
||||
├── ave-director.js 🆕 导演创作(分镜编辑,M1 主入口)
|
||||
├── ave-capabilities.js 🆕 能力库(注册表管理 + 供应商/参数默认值)
|
||||
├── ave-assets-*.js 🆕 场景库 / 产品道具
|
||||
├── workflow.js ✅ 已有(画布,补执行器)
|
||||
├── capabilities.js ✅ 已有(只读总览)
|
||||
├── char-gen.js / characters.js / person-swap.js / productions.js / assets.js / costs.js ✅ 已有
|
||||
├── ave-script.js / ave-materials.js / ave-render.js / ave-templates.js ⚪ 空壳(择机激活或删除)
|
||||
nav-menu.js ✅ 菜单单点定义(按地图 3 重组时只改这里)
|
||||
```
|
||||
|
||||
### 接口约定
|
||||
|
||||
| 层 | 约定 |
|
||||
|:--|:--|
|
||||
| 能力接口 | `generate(inputs, params, provider) -> {status, output, cost, error}`(对齐 DCS 统一返回) |
|
||||
| 导演接口 | `generate(story, anchors, options) -> Storyboard` |
|
||||
| 执行器 | `run(template_id, node_overrides) -> run_id`;`get_run(run_id) -> {status, node_states, artifacts}` |
|
||||
| API 路由 | 前端统一 `/api/ave/*`(新建 `routes/ave.py` 或扩插件),不散落 |
|
||||
|
||||
---
|
||||
|
||||
## 四、实施路径(5 阶段,每阶段可独立验收)
|
||||
|
||||
| 阶段 | 改什么 | 加什么 | 验收 |
|
||||
|:--|:--|:--|:--|
|
||||
| **S1 能力注册表** | `plugins/ave.py`(数据源改读注册表);`/api/capabilities` | `config/capabilities.yaml` + `capabilities/base.py` 加载器 + `views/ave-capabilities.js` | 「🧩 能力库」页能看到全部能力 + 改供应商/参数默认值并保存 |
|
||||
| **S2 导演创作(M1)** | 现有流水线包能力接口 | `schemas.py` + `directors/`(v5.2 适配器)+ `routes/ave.py` + `views/ave-director.js` + `composer/de_ai.py` | **一条 20 秒成片**:故事→分镜表(可编辑)→生成→去AI化→拼接→预览 |
|
||||
| **S3 执行器补齐** | `workflows.py` 的 `WorkflowRunner`(真执行) | `executor/engine.py` + `config_resolver.py` + 节点配置面板(前端) | 工作流"通电":6 模板能真跑;节点可改供应商/模型;失败可重试 |
|
||||
| **S4 资产库扩展** | `character_registry` 扩展 | 场景/产品/道具/特效预设目录 + 上传 UI + `global_anchors` 全量注入 | 多镜头角色/场景一致;资产按 id 引用生效 |
|
||||
| **S5 能力扩展** | — | `capabilities/external/comfyui.py`(RunningHub)+ 其他导演系统实装 + 效果对比记录 | 新能力可"加文件即接入";导演可切换对比 |
|
||||
|
||||
**S1 优先的理由**:它是"能力真相源",S2/S3 都依赖它;且半天可出初版,让你先看清家底。
|
||||
|
||||
---
|
||||
|
||||
## 五、扩展点速查("以后怎么加东西")
|
||||
|
||||
| 我要做的事 | 改哪里 | 步骤 |
|
||||
|:--|:--|:--|
|
||||
| **加一个新能力**(如"面部微表情") | `config/capabilities.yaml` + `capabilities/<类目>/xxx.py` | ① 写实现类(实现能力接口)② yaml 加一条(input/output/params/providers)③ 重启,UI 自动出现 |
|
||||
| **给已有能力加供应商** | `config/capabilities.yaml` | providers 加一条(id/name/api_key_ref/model);密钥在「🔑 API 配置」页填 |
|
||||
| **换默认模型** | `config/capabilities.yaml` 或「🧩 能力库」页 | 改 `defaults.model` / UI 里改 |
|
||||
| **接一个新导演系统** | `directors/xxx.py` + `__init__.py` 注册 | ① 实现 `BaseDirector.generate() → Storyboard` ② 注册 ③ (可选)加选项 schema |
|
||||
| **加一个新流程模板** | `workflows.py` 的 `WORKFLOW_TEMPLATES` | 加一条(nodes + edges),复用现有 15 种节点类型 |
|
||||
| **接入一个新开源项目** | 见下方"接入清单" | — |
|
||||
| **加一类新资产** | `assets/` 目录 + meta 规范 + (可选)UI | 目录 + meta.json + loader 注册 |
|
||||
| **改菜单** | `frontend/src/nav-menu.js` | **单点定义**,只改这一个文件(4.6.4 已单点化) |
|
||||
|
||||
### 接入一个新开源项目的清单(通用)
|
||||
|
||||
```
|
||||
□ 1. 判定类型:导演型 / 能力型 / 全流程型(OpenDirector)/ 资产规范型
|
||||
□ 2. 判定形态:Skill(提示词包)→ 放 skills/ | Service(HTTP)→ 写 provider | 代码库 → 抽能力
|
||||
□ 3. 查许可:Apache/MIT 可直接并入;GPL 谨慎;商业需授权
|
||||
□ 4. 找契约点:它输出什么?→ 对应我们的哪个扩展点(导演/能力/资产)
|
||||
□ 5. 写适配器:把它的输出转成统一 Schema 或能力返回值
|
||||
□ 6. 注册 + 配置(yaml 一条)+ UI 下拉出现
|
||||
□ 7. 记录来源与版本(便于后续升级)
|
||||
```
|
||||
|
||||
**示例**:接入 v5.2(Skill 型导演)→ 放 `skills/ai-film-skills/`,写 `directors/storyboard_v52.py` 把技能文档作为提示词注入,输出转 `Storyboard`,注册 → UI 下拉出现。
|
||||
|
||||
---
|
||||
|
||||
## 六、当前状态与差距
|
||||
|
||||
| 层 | 现状 | 差距 |
|
||||
|:--|:--|:--|
|
||||
| L5 接入层 | 8 视图(4 空壳);菜单 8 项混三种性质 | 缺导演创作/能力库页;菜单待按地图 3 重组 |
|
||||
| L4 编排层 | 6 模板 + 15 节点定义齐 | ❌ **执行器空转**(只拓扑排序不真跑);❌ 无节点配置面板;❌ 无分镜编辑 |
|
||||
| L3 能力层 | 原子能力齐(01-06 + CLI + composer 2635 行) | ❌ 无统一注册表(供应商/参数 schema);❌ 缺去AI化 |
|
||||
| L2 执行层 | guardd/command_bus 体系成熟(养号在用) | 🟡 未与视频工厂任务打通 |
|
||||
| L1 资产层 | 仅有角色(character_registry + 定妆照) | ❌ 场景/产品/道具/特效预设 全缺 |
|
||||
| 统一 Schema | ❌ 无 | 🆕 待建(S2) |
|
||||
| 导演可切换 | 仅 `story_director/scene_planner` 一套 | 🆕 适配器框架 + v5.2 待接(S2) |
|
||||
|
||||
---
|
||||
|
||||
## 七、框架确认清单(请你逐条确认/修改)
|
||||
|
||||
| # | 框架要点 | 确认 |
|
||||
|:--|:--|:--|
|
||||
| 1 | 定位:**调用层 + 编排层**(模型全远端,不做训练/推理) | ☐ |
|
||||
| 2 | 5 层架构 + **4 个替换点**(导演/供应商/模型/资产) | ☐ |
|
||||
| 3 | 统一分镜 Schema 作中枢(所有导演系统输出它) | ☐ |
|
||||
| 4 | 四级配置继承(能力默认→流程→节点→运行时) | ☐ |
|
||||
| 5 | 菜单 4 组:资产管理 / 创作 / 编排 / 配置 | ☐ |
|
||||
| 6 | 能力注册表(`capabilities.yaml`)为"能力真相源" | ☐ |
|
||||
| 7 | 执行双通道:轻任务本地线程 / 长任务 guardd | ☐ |
|
||||
| 8 | 代码组织:`capabilities/` `directors/` `executor/` `assets/` 四个新目录 | ☐ |
|
||||
| 9 | 实施顺序 S1→S5(S1 能力注册表优先) | ☐ |
|
||||
| 10 | 扩展点速查(加能力/供应商/导演/模板/开源项目)为标准流程 | ☐ |
|
||||
|
||||
**确认后冻结框架**,后续所有开发按此对齐;如需变更,改本文档 + 记 CHANGELOG。
|
||||
|
||||
---
|
||||
|
||||
## 附录 A|现有代码在框架中的位置(2026-10-01 实测盘点)
|
||||
|
||||
> 目的:看清"家底"在框架里的位置。✅ 已就位 | 🟡 需改造 | 🆕 待建
|
||||
|
||||
### A.1 后端资产(`05_tools/09_ave/`,约 19,000 行)
|
||||
|
||||
**L1 资产层(替换点④)**
|
||||
|
||||
| 现有资产 | 行数 | 框架位置 |
|
||||
|:--|:--|:--|
|
||||
| `character_registry/` | 318 | ✅ 角色注册表(资产库·角色) |
|
||||
| `character_generator/` | 2296 | ✅ 角色生成能力 |
|
||||
| `character_sheet.py` | 841 | ✅ 定妆照/角色图(文生图能力) |
|
||||
| `character_portrait.py` | 790 | ✅ 角色画像 |
|
||||
| `character_adapter/` | 397 | ✅ 角色适配(跨模块统一) |
|
||||
| `asset_manager/`(cache/index/tags) | 1167 | 🟡 资产索引 → 扩展为完整资产库 |
|
||||
| `lib/ghvideo_upload.py` | — | ✅ 产物上传 |
|
||||
| 🆕 场景库 / 产品库 / 道具库 / 特效预设 | — | 🆕 待建(S4) |
|
||||
|
||||
**L3 能力层(替换点②③)**
|
||||
|
||||
| 现有资产 | 行数 | 能力归类 | 状态 |
|
||||
|:--|:--|:--|:--|
|
||||
| `audio_line/`(layer2_analysis / layer3_creation) | 3530 | 音频分析 + 创作 | ✅ 已有(**最大音频资产**,待接入主流程) |
|
||||
| `bgm_generator/`(suno 等 4 文件) | 654 | BGM 生成 | ✅ 已有 |
|
||||
| `music_selector/` | 371 | BGM 选择 | ✅ 已有 |
|
||||
| `main.py voice`(调 aliyun/volcano) | — | TTS 合成 | ✅ 已有(无独立模块,在 CLI 内) |
|
||||
| `character_sheet.py` | 841 | 文生图(Kling v1) | ✅ 已有 |
|
||||
| `story_director/batch_generator.py` | 664 | 图生视频(Kling 批量) | ✅ 已有 |
|
||||
| `person_swap/` | — | 人物置换(百炼 wan2.2-animate-mix) | ✅ 已有 |
|
||||
| `composer/ffmpeg.py` | 702 | 拼接 / 转场 / 合成 | ✅ 已有 |
|
||||
| `composer/speed_ramp.py` | 370 | 变速 / 速度斜坡 | ✅ 已有 |
|
||||
| `composer/lipsync.py` | 369 | 对口型 | ✅ 已有 |
|
||||
| `composer/beat_sync.py` | — | 节拍同步 | ✅ 已有 |
|
||||
| `composer/hybrid.py` | 453 | 混合合成(口播+卡点) | ✅ 已有 |
|
||||
| `composer/character_locker.py` | 68 | **角色锁定(一致性!)** | ✅ 已有(对应 DCS 的 consistency_seed) |
|
||||
| `material_producer/`(pexels / wan2_2 / fallback) | 902 | 素材生产 | ✅ 已有 |
|
||||
| `director_parser/`(parser + schemas) | 323 | 文案解析 | ✅ 已有 |
|
||||
| `story_director/scene_planner.py` | 444 | **分镜规划** | ✅ 已有(→ 可包装为 legacy 导演适配器) |
|
||||
| `story_director/temporal_bridge.py` | 322 | 场景过渡桥接 | ✅ 已有 |
|
||||
| `anchor_extractor/` | 155 | 锚点提取 | ✅ 已有 |
|
||||
| 🆕 去 AI 化 | — | 视频后处理 | 🆕 待建(S2) |
|
||||
| 🆕 ComfyUI / 运镜 / 特效 / 面部微表情 / 3D | — | 视觉扩展 | 🆕 待接(S5) |
|
||||
|
||||
**L4 编排层**
|
||||
|
||||
| 现有资产 | 规模 | 框架位置 | 状态 |
|
||||
|:--|:--|:--|:--|
|
||||
| `video_factory.py` | 641 | 5 种生产模式(run_oral/beat/digital_human/hybrid/**run_story**) | 🟡 拆成能力 + 保留为快速入口 |
|
||||
| `workflows.py`(Dashboard) | 599 | 流程模板(6 个)+ 节点定义(15 种) | ✅ 定义齐,🟡 **执行器空转需补** |
|
||||
| `demo_full_pipeline.py` | 256 | 端到端演示 | ✅ 参考用 |
|
||||
| `story_director/` | 1443 | 导演(legacy) | 🟡 包装为导演适配器 |
|
||||
| 🆕 统一分镜 Schema | — | 中枢契约 | 🆕 待建(S2) |
|
||||
| 🆕 导演适配器框架 | — | 替换点① | 🆕 待建(S2) |
|
||||
| 🆕 执行器(真跑) | — | L2 执行层 | 🆕 待建(S3) |
|
||||
|
||||
**L5 接入层 / 支撑**
|
||||
|
||||
| 现有资产 | 规模 | 框架位置 |
|
||||
|:--|:--|:--|
|
||||
| `main.py` | 931 | ✅ CLI 原子命令(调试入口,保留) |
|
||||
| Dashboard `plugins/ave.py` | 243 | ✅ 能力目录插件(🟡 数据源改读注册表) |
|
||||
| Dashboard `app.py` | — | ✅ sys.path 集成 + `/api/capabilities` |
|
||||
| Dashboard `workflows.py` | 599 | ✅ 模板/节点接口(`/api/workflow/*`) |
|
||||
| `lib/config.py` / `cost_tracker.py` / `dashboard.py` / `logger.py` | 921 | ✅ 配置 / 成本记账 / 生产埋点 / 日志 |
|
||||
| `09_ave/config.yaml` | — | ✅ 配置(kling/aliyun/volcano/llm/pexels…) |
|
||||
| `AVE_ARCHITECTURE_PLAN.md` | 480 | ✅ 既有架构规划(6 条生产路径 + 原子能力表) |
|
||||
|
||||
### A.2 前端资产(`10_dashboard/frontend/src/`)
|
||||
|
||||
| 现有视图 | 行数 | 框架位置 | 状态 |
|
||||
|:--|:--|:--|:--|
|
||||
| `workflow.js` | 485 | ⚙️编排 → 工作流 | ✅ 画布;🟡 待接真执行 + 节点配置面板 |
|
||||
| `capabilities.js` | 80 | 🔧配置 → 能力目录 | ✅ 只读总览 |
|
||||
| `person-swap.js` | 269 | 📦资产 → 人物置换 | ✅ |
|
||||
| `characters.js` | 138 | 📦资产 → 角色库 | ✅ |
|
||||
| `char-gen.js` | 389 | 📦资产 → 角色生成器 | ✅ |
|
||||
| `productions.js` | 88 | ⚙️编排 → 生产记录 | ✅ |
|
||||
| `assets.js` | 57 | 📦资产 → 素材库 | 🟡 待扩展 |
|
||||
| `costs.js` | 61 | ⚙️编排 → 费用分析 | ✅ |
|
||||
| `ave-script.js` 等 4 个 | 各 9 | — | ⚪ **空壳**(择机激活为导演创作页或删除) |
|
||||
| 🆕 `ave-director.js` | — | 🎞️创作 → 导演创作 | 🆕 待建(S2) |
|
||||
| 🆕 `ave-capabilities.js`(管理) | — | ⚙️编排 → 能力库 | 🆕 待建(S1) |
|
||||
|
||||
### A.3 盘点发现的问题
|
||||
|
||||
1. **编号目录 `01-07` 全是空壳**(每个 `__init__.py` 0 字节)—— 早期分层规划残留,**实现都在无编号目录**里(`director_parser/` `composer/` `bgm_generator/` …)
|
||||
→ **建议**:归档到 `90_archive/`,避免后续误导(框架里的 `capabilities/` `directors/` 等新目录才是正式分层)
|
||||
2. **命名不统一**:`character_sheet.py` / `character_portrait.py` 在根级,`character_registry/` `character_generator/` 在目录
|
||||
→ 按框架收进 `capabilities/` `assets/` 时统一
|
||||
3. **资产比预想多**:`audio_line`(3530) + `character_*` 系(4642) + `asset_manager`(1167) 都是成熟资产,**不用重写,只需包装**
|
||||
4. **缺口集中**:去 AI 化、统一 Schema、导演可切换、执行器、场景/产品资产 —— 正好是 S1~S4 的内容
|
||||
|
||||
### A.4 结论:现有资产覆盖率
|
||||
|
||||
| 层 | 覆盖度 | 说明 |
|
||||
|:--|:--|:--|
|
||||
| L1 资产层 | **角色 100%** / 场景产品 0% | 角色系资产最完整 |
|
||||
| L3 能力层 | **约 80%** | 音频/视频/基础视觉齐;缺去AI化、ComfyUI、特效、3D |
|
||||
| L4 编排层 | **定义 100% / 执行 0%** | 模板与节点齐,执行器空转 |
|
||||
| L5 接入层 | **60%** | CLI + 插件齐;前端缺导演创作/能力库页 |
|
||||
| 统一契约 | **0%** | 分镜 Schema 与导演适配器待建 |
|
||||
|
||||
**一句话**:零件大多已有(约 19,000 行可复用),缺的是**统一契约(Schema)+ 通电(执行器)+ 几个关键缺口(去AI化/资产扩展)** —— 这正是 S1~S5 要补的,不需要推倒重来。
|
||||
|
||||
---
|
||||
|
||||
## 附录 B|方法论整合(从成熟系统抓取,2026-10-01)
|
||||
|
||||
> 原则:**"市面上已有人把整套系统做出来了,我们抓下来做成自己的风格"** —— 不重造轮子,抓方法论、按我们的架构增量接入。
|
||||
|
||||
### B.1 抓取清单(ai-film-skills,Apache-2.0)
|
||||
|
||||
**位置**:`05_tools/09_ave/skills/ai-film-skills/`
|
||||
|
||||
| 类别 | 内容 | 说明 |
|
||||
|:--|:--|:--|
|
||||
| 技能包 | **21 个**(18 常规 + 3 实验) | 每包含 `SKILL.md` 运行正文 |
|
||||
| 方法论 | **150 个 `references/`**(1.4MB) | 执行细节(编译器/引擎/协议/验收/诊断) |
|
||||
|
||||
**核心包**:
|
||||
- `ai-storyboard-director`(v5.2 分镜,5.7.1)— **已接入为默认导演**
|
||||
- `produce-ai-video`(实际生产与验收)— **六模块提示词编译器 + 三级交付状态已接入**
|
||||
- `ai-short-drama-production`(短剧控制:五列分镜 + 六模块母提示词)
|
||||
- `character-asset` / `scene-asset` / `prop-asset`(人物/场景/道具资产规范)— **待接资产库**
|
||||
- `director-agent`(编剧与导演)
|
||||
- 7 个题材风格包(武侠/战争/赛博朋克/恐怖/黑色/爱情/奇幻/史诗)
|
||||
|
||||
### B.2 已整合(已落地在代码里,可验证)
|
||||
|
||||
| 方法论 | 落地位置 | 效果 |
|
||||
|:--|:--|:--|
|
||||
| **六模块母提示词**<br>(生成任务/主体/场景/情绪/风格/分段脚本) | `composer/pipeline.py::build_shot_prompt` | 提示词 470~530 字、结构完整、**含负向约束**(不要 AI 塑料质感/字幕水印/快速变焦) |
|
||||
| **三级交付状态**<br>(合格成片/候选成片/未完成) | `schemas.py::Storyboard.delivery_status` + `pipeline.delivery_status()` + 前端徽章 + `POST .../review` 确认接口 | **诚实标注**:未经完整播放审查一律标「候选成片」 |
|
||||
| **v5.2 分镜方法论** | `directors/storyboard_v52.py`(技能文档作系统提示词) | 分镜质量显著优于 legacy(场面调度/连续性/按内容选景别) |
|
||||
|
||||
### B.3 待整合(接入点已明确,按需做)
|
||||
|
||||
| 方法论 | 接入点 | 预期收益 |
|
||||
|:--|:--|:--|
|
||||
| **设计记忆协议**(`design-memory-protocol.md`) | `Shot` 加 `enter_state`/`exit_state`;`Storyboard` 加 `locked_facts`(用户锁定)/`source_hash`(源剧本校验) | 跨镜头状态传递 + **用户改过的镜头不被重生成覆盖** |
|
||||
| **十二项完成门** | 导演 prompt 强化 + 可选校验器(时间轴闭合/轴线一致/台词时长/道具追溯) | 分镜质量自检,减少"术语轮换"式假分镜 |
|
||||
| **资产规范**(人物/场景/道具) | 资产库 UI + `GlobalAnchors`(多角度参考图 + 必保特征) | 角色一致性(换场景不变脸) |
|
||||
| **五列人读分镜** | 分镜表 UI 列:时间 / 景别机位 / 摄影机 / 画面与动作 / 台词声音 | 更专业的编辑视图(当前是单列卡片) |
|
||||
| **验收细则**(`qualified-video-acceptance.md`) | 交付前的检查清单(连续性/瑕疵/声音) | 合格成片判定有据可依 |
|
||||
|
||||
### B.4 整合原则
|
||||
|
||||
1. **不推翻现有设计**:统一分镜 Schema 是中枢,方法论以"字段 / 提示词 / 校验器"形式**增量**接入
|
||||
2. **能跑通优先**:先保证端到端可用(✅ 已完成),再补精细化
|
||||
3. **可切换**:所有接入点设计为可选(v5.2 与 legacy 并存、六模块与简洁模式并存)
|
||||
4. **不动别人的代码**:技能包原样存放 `skills/`,通过适配器/编译器接入,便于后续升级技能版本
|
||||
Reference in New Issue
Block a user