今日总结-2026-04-23-议事档案标本契约v0.0.3-术语统一

今日总结:议事档案标本契约 v0.0.3 与术语统一

完成项

1. 标本契约 v0.0.3

  • 议事档案标本契约已提交到仓库
  • commit: 443ed05
  • 路径: examples/feishu-wiki/contracts/议事档案-specimen.yaml

2. 术语统一:lifecycle → workflow

  • lifecycle: 资产自己的生命周期(被动的)
  • workflow: 能力编排的流程(主动的、高内聚的)

3. 架构理念:资产即服务 (Asset as a Service)

1
2
3
资产不是"东西",是"服务"
├── 它暴露什么能力? → skills
└── 这些能力怎么触发?→ workflow(状态+顺序)

4. 标本验证

  • 从实际文档提炼结构(议事规则、决策、复盘研讨各一个样本)
  • 用标本验证实际文档,发现建模漏洞:
    • 元数据区、个人心得等字段已补充到标本
    • 辩论区在实际中不运转,已移除
    • 决议区改为可选

5. 确认文档

  • 议事档案标本说明.md 已提交
  • 发给 @黄梓姗 @朱彦真 确认业务细节

6. scanner.py + miner.py

  • 扫描器和挖掘器写好了
  • 暂未提交,待后续完善
  • 路径: examples/feishu-wiki/app/

7. QtCloud 开发架构师 Skill

  • 创建了 qtcloud-developer-architect skill
  • 用于跟进项目进度和状态追踪

开发阶段

阶段 状态
1. 标本契约设计 ✅ DONE
2. 标本验证(团队确认) 🔄 进行中
3. scanner.py + miner.py ⏳ 待做
4. 重写 src/cli ⏳ 待做
5. 集成到 src ⏳ 待做
6. 平台化开发 ⏳ 待做

明日计划

  1. 完善 scanner.py + miner.py
  2. 重写 src/cli 代码
  3. 集成到 src

仓库信息


由 qtcloud-developer-architect skill 生成

飞书 Wiki 资产验证规则建模

背景

今天深入研究了 quanttide-asset 项目中的飞书 Wiki 资产验证规则建模。这是一个探索性任务:如何从飞书 Wiki 的目录结构中,提炼出可验证的规范,并进一步反推出组织的业务流程。

核心问题

飞书 Wiki 的目录结构有什么规范?如何验证这些规范?更重要的是:能否通过资产目录结构,反推出组织的业务流程?

建模思路

契约驱动的本质

契约不是代码内置的逻辑,而是”蒸馏出来的声明式规范”。

1
契约定义(应该有什么) → 发现机制(实际有什么) → 验证模块(差异对比)

契约验证的边界:只验证结构性信息,不验证内容质量。

能验证 不能验证
节点存在性 文档内容完整性
命名格式 语义正确性
父子关系 业务逻辑
层级深度 资产价值

四步建模框架

  1. 业务拆解:从数据中识别节点类型(Space/Folder/Doc)
  2. 行为定义:定义每种节点的属性和关系
  3. 度量设定:设定可验证的维度
  4. 模型产出:输出通用模型 + YAML 验证规则

议事档案案例

目录结构

1
2
3
4
5
6
7
8
9
议事档案
├── 议事档案首页 # Root,depth=0
├── 议题 # Container,depth=1
│ ├── 议事规则 # Container,depth=2
│ │ ├── 2025年第49周-议事规则1-辩论
│ │ └── ...
│ ├── 议程
│ ├── 决策
│ └── 计划

反推的业务流程

通过分析分类结构和命名模式,反推出议事决策流程:

1
2
3
提出议题 → 制定规则 → 安排议程 → 做出决策 → 执行计划
↓ ↓ ↓ ↓ ↓
议题 议事规则 议程 决策 计划

验证规则

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
validation:
rules:
- name: 必须有根节点
assert: node_exists(depth=0)
level: error

- name: 一级分类完整性
assert: |
has_category("议题") and
has_category("议程") and
has_category("决策") and
has_category("计划")
level: error

- name: 叶子文档命名格式
assert: matches(node.title, "^\\d{4}年第\\d{1,2}周-.+")
level: warning

经验总结

1. 建模要先观察数据

不要先入为主地设计规则,要从实际数据中观察规律。

2. 区分通用规则和特定规则

  • 通用规则:所有 Space 适用(结构完整性、命名非空)
  • 特定规则:特定 Space 适用(议事档案的分类名、命名格式)

3. 契约的局限

契约只验证”有没有、对不对”,不验证”好不好”。内容质量需要 AI 验证层。

4. 警惕暴露资产信息

space_id 等敏感信息不要写进代码和文档。

下一步

  1. AI 反推验证:让 AI 从资产结构反推流程,与实际流程对比
  2. 泛化到其他 Space:为其他 Space 定义类似的规范
  3. 人工交叉验证:与实际业务流程对比,确认反推结果

参考

飞书知识库资产发现 - 今日开发总结

飞书知识库资产发现 - 今日开发总结

目标

验证”资产目录”和”资产发现”建模是否可行,以飞书知识库为例子。

碰到的困难

困难 原因 解决方法
token 获取失败 原来代码用 tenant_access_token(应用身份),飞书知识库需要用户身份 lark-cli 设备授权获取 user_access_token
CLI 参数不工作 lark-cli wiki nodes list --params 在 PowerShell 转义复杂 改用 Python 脚本直接调 API
OAuth 授权失败 redirect_uri 未配置 配置 http://localhost:8080/callback
Token 刷错类型 refresh_token() 用 App ID/Secret 换回 tenant_access_token 修改 token_store.py,用 refresh_token 接口换 user_access_token
文件编码损坏 PowerShell echo 写入导致 UTF-16 编码 直接用工具写入
SSL EOF 错误 Python 请求被 Clash 代理干扰 取消代理环境变量
硬编码过滤 catalog.py 只同步测试空间 去掉硬编码,按契约过滤
Git 子模块报错 domains/quanttide-asset 是子模块 进入子模块目录操作

最终成果

代码已推送:quanttide-asset 仓库 examples/feishu-wiki 分支

文件 作用
catalog.py 自动扫描契约中声明的知识库(目录 = 现实)
token_store.py 支持 user_access_token 读写和刷新
contract.yaml 声明3个知识库:工作档案/工作报告/会议档案
validate.py 对比契约和目录快照,报告差距

验证了

“资产目录 vs 资产契约”的资产治理思路走得通。

下一步

  • v0.0.2: 根据 docs 文件夹框架重构项目
  • v0.0.3: 把 feishu-wiki 验证方式整合到 qtcloud-asset 主干

2026-04-21

今日总结:飞书知识库契约式同步开发

今日总结:飞书知识库契约式同步开发

背景

按照 quanttide/qtcloud-asset 的 roadmap,我需要在 examples/feishu-wiki 中实现契约式同步:用 YAML 契约声明必须存在的知识库和节点关键词,用验证脚本校验下载结果。整个过程要求不破坏现有简洁性。

核心问题:token 获取

飞书 API 需要认证,核心卡点在于 token 获取

方案演变

方案 原理 结果
lark-cli subprocess 用 lark-cli 执行命令 Windows 上批量包装器有 bug,subprocess 会 hang
proxy 捕获 token lark-cli → 本地代理 → 飞书,代理捕获 Bearer token Windows 后台进程无法稳定运行
App Token (App ID + Secret) 用飞书自建应用换 tenant_access_token App 账号无法直接加入知识库,API 只支持加 user/chat/department
lark-cli subprocess (wiki 子命令) Python 调用 lark-cli wiki spaces list 等命令解析 JSON 可行,lark-cli 已用用户身份登录,能访问所有知识库

最终方案

lark-cli wiki 子命令替代有 bug 的 lark-cli api 子命令。wiki 子命令完全正常,可以执行:

  • lark-cli wiki spaces list → 获取知识库列表
  • lark-cli wiki nodes list --space-id xxx → 获取节点列表
  • lark-cli wiki spaces create → 创建知识库

代码产出

contract.yaml

1
2
3
4
5
spaces:
- id: "7526874705676091393"
name: "会议档案"
required_nodes:
- ""

validate.py

契约验证脚本,加载 contract.yaml 和本地 metadata.json,输出 PASS/FAIL。

catalog.py

重写多版,最终用 lark-cli subprocess 调用 wiki 子命令,执行递归节点下载。

遇到的问题

  1. Windows subprocess hang:lark-cli.cmd 批量包装器检测到 stdin 是管道时会进入交互模式导致进程挂起。加 stdin=DEVNULL 解决。

  2. GBK 编码错误:中文错误信息和 emoji 在 Windows CMD 下导致 UnicodeEncodeError。用 ASCII 标签([SAVE][DEL][PASS])替代 emoji。

  3. App Token 权限体系不兼容:tenant_access_token 属于应用身份,无法直接获得用户有权限访问的知识库。需要换用户 token。

  4. 测试企业隔离:应用发不到正式企业,测试企业的知识库和正式企业完全隔离。

明日计划

  1. 用 lark-cli wiki 子命令重写 catalog.py API 层
  2. 完成测试Wiki节点获取验证
  3. 运行 validate.py 确认契约校验通过

相关链接

Prompt Lens 项目调试总结

问题1:上传返回 400 Bad Request

症状: 上传文件时 API 返回 400,但看不到具体原因

调试过程:

  1. 检查 Vercel 日志,发现只有 “No outgoing requests”
  2. 添加详细日志后,发现 Magic number validation: { valid: false }
  3. 原因:文件扩展名是 .mp4,但 Magic Number 不匹配(可能是手机拍的视频格式问题)

解决方案: 临时禁用 Magic Number 验证


问题2:B2 Access Key 一直报错

症状:

  • InvalidAccessKeyId: The key 'xxx' is not valid
  • Malformed Access Key Id

调试过程:

  1. 检查环境变量配置 - 都配了
  2. 检查 bucket 名称 - 正确
  3. 检查 region - 正确 (us-west-000)
  4. 重新创建 key - 用户复制的 key 太短(手动输入抄错了)
  5. 指导用户从 B2 控制台直接复制完整 key

解决方案: 引导用户正确复制 key(24位数字)


问题3:Vercel 连接本地代理失败

症状: connect ECONNREFUSED 127.0.0.1:7897

调试过程:

  1. 代码里有 process.env.NODE_ENV === "development" 判断,但 NEXT_PUBLIC_SITE_URL 包含 localhost 时也会启用
  2. 发现 Vercel 环境变量里没有 PROXY,但代码里有硬编码的 http://127.0.0.1:7897 作为 fallback
  3. 发现两处问题:
    • lib/auth/index.ts - 代理配置
    • lib/ai/analyzer.ts - axios proxy 配置

解决方案: 只在 NODE_ENV === "development" 时启用代理


问题4:音频分析 Vercel 上无法工作

症状: ENOENT: no such file or directory, mkdir '/var/task/temp_audio_analysis'

调试过程:

  1. Vercel Serverless Functions 不能写本地文件系统
  2. 原方案用本地文件提取音频 → 不可行
  3. 改用云端服务:AssemblyAI(免费1小时/月)

解决方案: 上传文件到 B2,然后调用 AssemblyAI API 转录


教训总结

教训 说明
本地代理不要带上线 代码里的 127.0.0.1:7897 要用环境变量判断
添加足够的日志 方便定位问题
云端环境限制 Vercel 不能写文件,FFmpeg 等工具不能用
用户输入要验证 B2 key 手动输入容易出错

涉及文件

  • lib/auth/index.ts - 代理配置
  • lib/ai/analyzer.ts - AI 分析 + proxy 配置
  • app/api/upload/route.ts - 文件上传
  • app/api/audio-analyze/route.ts - 音频分析

新增功能

  1. 上传功能 - 从本地存储改为 B2 上传
  2. AI 默认提供商 - 从智谱AI改为 OpenRouter
  3. 音频分析 - 从本地 Whisper 改为 AssemblyAI 云端转录

每日总结-2026-03-03

每日总结 2026-03-03

完成事项

1. nano-video Bug修复

  • 问题:视频生成一直加载,无法获取结果
  • 原因:VideoPreviewPanel.tsx 缺少轮询逻辑,API返回taskId后未检查任务状态
  • 修复:添加 pollTaskStatus 函数,每3秒轮询 /api/kie/status 获取任务进度
  • 修改文件:components/video-generation/VideoPreviewPanel.tsx

2. Remotion视频剪辑

  • 将 hello1.mp4 ~ hello6.mp4 六个视频进行滑动转场剪辑
  • 配上背景音乐 2026年03月03日 21点45分.m4a
  • 生成了文档:视频剪辑文档_hello系列.md
  • 参数:1920x1080,30fps,48秒(6×8秒)

3. R2上传

文件 路径
dfxh.mp4 website/showcase/dfxh.mp4
东方奇幻图片.zip website/showcase/东方奇幻图片.zip

4. R2存储查看

  • 列出 website/showcase 目录,共16个文件,约109MB

Happy Ending

今日总结-Remotion视频剪辑与Nano-Video修复

今日工作汇总

1. Nano-Video 项目 DOM 错误修复

修复了浏览器控制台中的 removeChildinsertBefore 错误:

  • components/ui/sonner.tsx - 添加 mounted 检查,确保只在客户端渲染
  • lib/downloadFile.ts - 添加 parentNode 检查,防止移除不存在的节点
  • lib/cloudflare/r2-download.ts - 添加 parentNode 检查

2. 美食视频剪辑

使用 Remotion 将 11 个美食视频片段拼接成一个完整视频:

片段 菜品
1 新疆大盘鸡
2 白菜猪肉炖粉条
3 羊蝎子火锅
4 金汤佛跳墙
5 泰式绿咖喱鸡
6 过桥米线
7 椰子鸡火锅
8 韩式海鲜拉面
9 猪脚姜
10 匈牙利牛肉炖肉
11 腊味煲仔饭
  • 输出文件:20MB,88秒
  • 技术参数:1920x1080,30fps

3. R2 文件上传

上传 swz.mp4 到 Cloudflare R2:

4. 博客部署

成功部署到 GitHub Pages:https://raojiacui.github.io

解决 Python Whisper PyTorch DLL 加载失败问题

问题描述

在 Windows 上使用 Python 3.14 运行 openai-whisper 时遇到以下错误:

1
2
OSError: [WinError 1114] 动态链接库(DLL)初始化例程失败。
Error loading "c10.dll" or one of its dependencies.

问题原因

  1. Python 版本过新:Python 3.14 与 PyTorch 的兼容性问题
  2. DLL 依赖冲突:PyTorch 的 c10.dll 在 Windows 上加载失败
  3. 缺少 VC++ 运行库:某些情况下缺少 Visual C++ Redistributable

解决方案

方案一:切换到 faster-whisper(推荐)

faster-whisper 是 OpenAI Whisper 的重新实现,使用 CTranslate2 而非 PyTorch:

1
2
3
4
5
# 卸载有问题的包
pip uninstall openai-whisper torch torchvision

# 安装 faster-whisper
pip install faster-whisper

代码使用示例

1
2
3
4
5
6
7
8
9
from faster_whisper import WhisperModel

# 加载模型(CPU 模式)
model = WhisperModel('base', device='cpu', compute_type='int8')

# 转录音频
segments, info = model.transcribe('audio.wav')
for segment in segments:
print(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}")

优势

  • 无需 PyTorch,避免 DLL 问题
  • 速度更快,内存占用更小
  • API 与原版类似,迁移成本低

方案二:重新安装 PyTorch CPU 版本

1
2
pip uninstall torch torchvision
pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu

方案三:安装 Visual C++ Redistributable

下载安装:https://aka.ms/vs/17/release/vc_redist.x64.exe

虚拟环境注意事项

如果项目使用虚拟环境(venv),确保在正确的环境中安装:

1
2
3
4
5
# 激活 venv
venv\Scripts\activate

# 安装 faster-whisper
pip install faster-whisper

总结

对于 Windows 用户使用 Whisper 进行语音识别,faster-whisper 是更好的选择

特性 openai-whisper faster-whisper
依赖 PyTorch(重量级) CTranslate2(轻量)
速度 较慢 更快
内存 较高 更低
DLL 问题 常见

经验教训:在 Windows 上使用 Python 机器学习库时,优先选择不依赖 PyTorch/TensorFlow 的轻量级实现。


相关项目Video Prompt Analyzer

ARROW 视频 AI 提示词合集

43个电影镜头的动态叙事脚本与生成参数,涵盖警匪、科幻、超现实等多种风格

前言

本文整理了 ARROW 项目的 43 个电影镜头提示词,每个镜头都包含完整的动态叙事脚本和生成参数,适用于 AI 视频生成工具。


镜头概览

序号 名称 风格 时长
1 警局集结 - 推门而入 电影写实主义 6-8秒
2 直升机编队 - 仰望天际 写实军事大片 6-8秒
3 东京塔俯冲 - 数字嵌套 写实+AR 4-5秒
4 巴黎铁塔扭曲 - 超现实转场 赛博超现实主义 6-8秒
5 模拟恐怖 - 聊天滚动 VHS复古风格 4-6秒
6 AR牧场 - 奶牛放大 超现实主义 4-6秒
7 男颜异变 - 眼球翻白 模拟恐怖 3-4秒
8 上海东方明珠 - AR选择 赛博现实主义 5-8秒
9 伦敦塔桥拉伸 - 现实编辑 超现实主义 8-10秒
10 比萨斜塔扶正 - AR操控 超现实科幻 8-10秒

Read More

AI视频提示词通用模板(文身视频格式)

标准化的AI视频生成提示词模板,确保输出风格一致、质量稳定

前言

在进行AI视频生成时,使用结构化的提示词模板能够显著提高生成质量和一致性。本文介绍一套经过实战验证的通用模板格式。


模板结构概览

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
┌─────────────────────────────────────────────────────────────┐
│ 动态叙事脚本 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Final Prompt (EN) - 英文核心提示词 │ │
│ │ 时空演变 (Start/Action/End) │ │
│ │ Camera Movement - 运镜方式 │ │
│ │ Physics/Details - 物理细节 │ │
│ │ Visual Bible - 视觉风格定义 │ │
│ └─────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 生成参数 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ aspect_ratio - 宽高比 │ │
│ │ duration_s - 时长 │ │
│ │ physics_simulation - 物理模拟 │ │
│ │ consistency_guard - 风格约束 │ │
│ │ negative - 负面提示词 │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘

Read More