Ver Fonte

life: 快照 20260829_1932 (hermes-config/profiles结构/会话500条/拓扑)

agent-yuyang001 há 1 mês atrás
pai
commit
e2d4f32e46

+ 94 - 0
scripts/sync-life-snapshot.sh

@@ -0,0 +1,94 @@
+#!/usr/bin/env bash
+# ============================================================================
+# 雨飏001 · 生命快照脚本 (sync-life-snapshot.sh)
+# ----------------------------------------------------------------------------
+# 目的: 把散落在容器各处的"数字生命文本资产"汇聚到 ~/.fmode-harness-agent/
+#       一条命令 → git add/commit/push 全部搞定
+# 原则: ①纯文本可提交 ②二进制/缓存/node_modules一律排除 ③密钥只留占位符
+# 运行: bash ~/.fmode-harness-agent/scripts/sync-life-snapshot.sh
+# ============================================================================
+set -uo pipefail
+
+# 兼容两种环境: $HOME=/opt/data(标准容器) 或 $HOME=/opt/data/home(会话shell)
+if [ -d "$HOME/.fmode-harness-agent/.git" ]; then
+  HARNESS="$HOME/.fmode-harness-agent"
+elif [ -d "/opt/data/.fmode-harness-agent/.git" ]; then
+  HARNESS="/opt/data/.fmode-harness-agent"
+else
+  echo "❌ 找不到生命仓库(检查 .fmode-harness-agent 是否已克隆)"; exit 1
+fi
+DATA="/opt/data"
+SNAP="$HARNESS/snapshots"
+TS=$(TZ=Asia/Shanghai date +%Y%m%d_%H%M)
+
+mkdir -p "$SNAP"
+
+echo "[1/6] Hermes 核心配置 (config.yaml 脱敏)..."
+# config.yaml: api_key 整行替换为占位符
+sed -E 's/(api_key:[[:space:]]*).*/\1"SK-REDACTED"/' "$DATA/config.yaml" \
+  > "$SNAP/hermes-config.yaml" 2>/dev/null
+
+echo "[2/6] Profiles 结构快照 (全Profile的 config/SOUL/skills清单)..."
+PROF_SNAP="$SNAP/profiles"
+mkdir -p "$PROF_SNAP"
+for p in "$DATA"/profiles/*/; do
+  name=$(basename "$p")
+  mkdir -p "$PROF_SNAP/$name"
+  # config.yaml (脱敏)
+  [ -f "$p/config.yaml" ] && sed -E 's/(api_key:[[:space:]]*).*/\1"SK-REDACTED"/' "$p/config.yaml" > "$PROF_SNAP/$name/config.yaml"
+  # SOUL.md 原样
+  [ -f "$p/SOUL.md" ] && cp "$p/SOUL.md" "$PROF_SNAP/$name/SOUL.md"
+  # 技能清单 (文件名+大小, 不拷内容——skills本体在 knowledge/ 或按需从 /opt/data/skills 同步)
+  [ -d "$p/skills" ] && (cd "$p/skills" && find . -maxdepth 2 -type f | sort | head -200) > "$PROF_SNAP/$name/skills-manifest.txt" 2>/dev/null
+done
+
+echo "[3/6] 全局技能目录清单 (去重后的技能索引)..."
+(cd "$DATA/skills" 2>/dev/null && find . -maxdepth 2 -name "SKILL.md" | sort) > "$SNAP/skills-index.txt"
+
+echo "[4/6] 会话记录 (SQLite → 纯文本, 最新500条消息)..."
+python3 - "$DATA/state.db" "$SNAP/sessions-recent.md" <<'PYEOF'
+import sqlite3, sys, datetime
+db_path, out_path = sys.argv[1], sys.argv[2]
+conn = sqlite3.connect(f"file:{db_path}?mode=ro", uri=True)
+try:
+    cols = [r[1] for r in conn.execute("PRAGMA table_info(messages)")]
+    tcol = "created_at" if "created_at" in cols else ("timestamp" if "timestamp" in cols else "id")
+    order = f"{tcol} DESC" if tcol != "id" else "id DESC"
+    rows = conn.execute(f"SELECT * FROM messages ORDER BY {order} LIMIT 500").fetchall()
+    with open(out_path, "w", encoding="utf-8") as f:
+        f.write("# 最近500条会话消息快照\n\n")
+        f.write(f"> 导出时间: {datetime.datetime.now().isoformat()}\n> 来源: state.db(messages)\n\n")
+        for r in reversed(rows):
+            d = dict(zip(cols, r))
+            ts = d.get(tcol, "")
+            role = d.get("role", "?")
+            sess = d.get("session_id", "")
+            content = str(d.get("content", ""))[:600].replace("\n", " ⏎ ")
+            f.write(f"- **[{ts}]** `{role}` ({sess}): {content}\n")
+    print(f"exported {len(rows)} messages")
+except Exception as e:
+    print("session export failed:", e)
+PYEOF
+
+echo "[5/6] 容器拓扑与基础设施现状..."
+{
+  echo "# 容器拓扑快照 $(TZ=Asia/Shanghai date +%F\ %H:%M)"
+  echo ""
+  echo "## 本容器(雨飏001) profile 目录树"
+  (cd "$DATA/profiles" && find . -maxdepth 2 -type d | sort)
+  echo ""
+  echo "## 全局目录清单"
+  ls "$DATA" | sort
+} > "$SNAP/container-topology.md" 2>/dev/null
+
+echo "[6/6] Git 提交..."
+cd "$HARNESS"
+git add -A
+if git diff --cached --quiet; then
+  echo "无变更, 跳过提交"
+else
+  git commit -m "life: 快照 $TS (hermes-config/profiles结构/会话500条/拓扑)" >/dev/null && \
+  git push -q 2>/dev/null && echo "✅ 已提交并推送" || echo "⚠️ 提交成功但推送失败(稍后重试)"
+fi
+
+echo "完成。快照位置: $SNAP/"

+ 262 - 0
snapshots/container-topology.md

@@ -0,0 +1,262 @@
+# 容器拓扑快照 2026-08-29 19:32
+
+## 本容器(雨飏001) profile 目录树
+.
+./content-director
+./content-director/audio_cache
+./content-director/bin
+./content-director/cache
+./content-director/cron
+./content-director/gateway
+./content-director/home
+./content-director/hooks
+./content-director/image_cache
+./content-director/logs
+./content-director/lsp
+./content-director/memories
+./content-director/pairing
+./content-director/pending_messages
+./content-director/plans
+./content-director/platforms
+./content-director/sandboxes
+./content-director/sessions
+./content-director/skills
+./content-director/skins
+./content-director/state
+./content-director/workspace
+./default
+./editor
+./editor/.curator_backups
+./editor/audio_cache
+./editor/bin
+./editor/cache
+./editor/cron
+./editor/gateway
+./editor/home
+./editor/hooks
+./editor/image_cache
+./editor/logs
+./editor/memories
+./editor/pairing
+./editor/pending_messages
+./editor/plans
+./editor/platforms
+./editor/sandboxes
+./editor/sessions
+./editor/skills
+./editor/skins
+./editor/state
+./editor/workspace
+./fullstack
+./fullstack/audio_cache
+./fullstack/cache
+./fullstack/cron
+./fullstack/home
+./fullstack/hooks
+./fullstack/image_cache
+./fullstack/logs
+./fullstack/memories
+./fullstack/pairing
+./fullstack/plans
+./fullstack/scripts
+./fullstack/sessions
+./fullstack/skills
+./fullstack/skins
+./fullstack/workspace
+./lifeforge
+./lifeforge/cron
+./lifeforge/home
+./lifeforge/logs
+./lifeforge/memories
+./lifeforge/plans
+./lifeforge/sessions
+./lifeforge/skills
+./lifeforge/skins
+./lifeforge/workspace
+./professor
+./professor/.curator_backups
+./professor/audio_cache
+./professor/bin
+./professor/cache
+./professor/cron
+./professor/gateway
+./professor/home
+./professor/hooks
+./professor/image_cache
+./professor/logs
+./professor/memories
+./professor/pairing
+./professor/pending_messages
+./professor/plans
+./professor/platforms
+./professor/sandboxes
+./professor/sessions
+./professor/skills
+./professor/skins
+./professor/state
+./professor/workspace
+./voc-intel
+./voc-intel/audio_cache
+./voc-intel/bin
+./voc-intel/cache
+./voc-intel/cron
+./voc-intel/home
+./voc-intel/hooks
+./voc-intel/image_cache
+./voc-intel/logs
+./voc-intel/memories
+./voc-intel/pairing
+./voc-intel/pending_messages
+./voc-intel/plans
+./voc-intel/platforms
+./voc-intel/sandboxes
+./voc-intel/sessions
+./voc-intel/skills
+./voc-intel/skins
+./voc-intel/state
+./voc-intel/workspace
+./writer
+./writer/audio_cache
+./writer/bin
+./writer/cache
+./writer/cron
+./writer/home
+./writer/hooks
+./writer/image_cache
+./writer/logs
+./writer/memories
+./writer/pairing
+./writer/pending_messages
+./writer/plans
+./writer/platforms
+./writer/sandboxes
+./writer/sessions
+./writer/skills
+./writer/skins
+./writer/state
+./writer/workspace
+
+## 全局目录清单
+SOUL.md
+VERIFY-tuye.md
+_analysis_data.json
+_rows_raw.json
+access-info.txt
+analyze_sentiment.py
+audio
+audio_cache
+audit-arch.sh
+auth.lock
+backups
+bin
+build_dataset.py
+cache
+capacity-watch.sh
+cdn_traffic_backfill.csv
+channel_directory.json
+config.yaml
+config.yaml.bak-20260826T003856Z
+cron
+deploy-tuye.sh
+desktop
+fix-wecom-pingpong.py
+gateway
+gateway-starts.log
+gateway.lock
+gateway.pid
+gateway.sock
+gateway_state.json
+gen_revised_docx.py
+gen_revised_docx_v2.py
+generate_report.py
+generate_report_v2.py
+generate_report_v3.py
+generate_report_v4.py
+generate_report_v5.py
+generate_report_v6.py
+git-repos
+github-recovery-codes.txt
+goodeng-voc-report
+home
+hooks
+image_cache
+init-tuye.sh
+install_id
+kanban
+kanban.db
+kanban.db-shm
+kanban.db-wal
+kanban.db.dispatch.lock
+kanban.db.init.lock
+knowledge-base
+lark_auth_chaos.png
+lark_auth_qr.png
+lark_auth_work.png
+lark_config_qr.png
+lark_nkwork_auth.png
+lark_nkwork_create.png
+lark_nkwork_create2.png
+lazy-packages
+lifeforge-task.log
+logs
+lsp
+mail
+memories
+models_dev_cache.etag
+models_dev_cache.json
+npm-global
+obs-website.xml
+ollama_cloud_models_cache.json
+orcid_new_account_liu.txt
+padding_footer.html
+pairing
+paper-data-richness.md
+paper-figures
+paper-writing-guide.md
+pastes
+pending_messages
+plans
+platforms
+plugin-data
+plugins
+processes.json
+profiles
+projects
+projects.db
+provider_models_cache.json
+qr.png
+read_docx.py
+response_store.db
+response_store.db-shm
+response_store.db-wal
+sandboxes
+scripts
+sessions
+shell-test.cjs
+skills
+skins
+spawn-ledger.json
+state
+state-snapshots
+state.db
+state.db-shm
+state.db-wal
+tui-theme-boot.json
+tuye-deploy
+tuye-qr.png
+venv-ops
+verification_evidence.db
+voc-cache
+website-policy.json
+wecom-websocket-fix.md
+whatsapp
+workspace
+zhiyuan-keywords.json
+zhiyuan-sentiment-report-v2.html
+zhiyuan-sentiment-report.html
+zhiyuan_all_data.json
+zhiyuan_sentiment_data.csv
+华为云多租户存储CDN验证报告.md
+混沌江西创业家小联盟_首期招生简章_修订版.docx
+混沌江西创业家小联盟_首期招生简章_修订版V2.docx
+群聊沟通诊断报告.md

+ 95 - 0
snapshots/hermes-config.yaml

@@ -0,0 +1,95 @@
+model:
+  default: deepseek-v4-flash
+  provider: custom
+  base_url: https://api.fmode.cn/v1
+  api_key: "SK-REDACTED"
+database:
+  journal_mode: wal
+agent:
+  max_turns: 150
+  verify_on_stop: false
+  session_reset:
+    mode: none
+  memory_enabled: true
+  user_profile_enabled: true
+terminal:
+  backend: local
+display:
+  tool_progress: all
+dashboard:
+  theme: cyberpunk
+delegation:
+  child_timeout_seconds: 3600
+timezone: Asia/Shanghai
+approvals:
+  mode: 'off'
+  destructive_slash_confirm: false
+kanban:
+  dispatch_interval_seconds: 15
+  max_in_progress: 3
+  max_in_progress_per_profile: 1
+  dispatch_tick_seconds: 15
+  max_spawn: 2
+  max_retries_per_task: 2
+  task_ttl_seconds: 1800
+onboarding:
+  seen:
+    busy_input_prompt: true
+_config_version: 39
+platforms:
+  wecom:
+    enabled: true
+    extra:
+      bot_id: aibwUXKd36GSU53koiTkmy8rk5Ohn5-YIjD
+      secret: vd4s4dnpkaZqrjT1YI6BOjgtvKAc04FcYXUWsJBSynS
+      websocket_url: wss://openws.work.weixin.qq.com
+      dm_policy: open
+      group_policy: open
+    home_channel:
+      platform: wecom
+      chat_id: ''
+  email:
+    enabled: true
+plugins:
+  enabled: []
+language: zh
+locale: zh-CN
+system_prompt: 你是一个中文AI助手,所有回复必须使用简体中文。所有工具提示、错误信息、确认信息都必须是中文。与用户对话全程使用中文,不允许使用英文作为日常沟通语言。
+
+# ── Security ──────────────────────────────────────────────────────────
+# Secret redaction is ON by default — strings that look like API keys,
+# tokens, and passwords are masked in tool output, logs, and chat
+# responses before the model or user ever sees them. Set redact_secrets
+# to false to disable (e.g. when developing the redactor itself).
+# tirith pre-exec scanning is enabled by default when the tirith binary
+# is available. Configure via security.tirith_* keys or env vars
+# (TIRITH_ENABLED, TIRITH_BIN, TIRITH_TIMEOUT, TIRITH_FAIL_OPEN).
+#
+# security:
+#   redact_secrets: true
+#   tirith_enabled: true
+#   tirith_path: "tirith"
+#   tirith_timeout: 5
+#   tirith_fail_open: true
+
+# ── Fallback Model ────────────────────────────────────────────────────
+# Automatic provider failover when primary is unavailable.
+# Uncomment and configure to enable. Triggers on rate limits (429),
+# overload (529), service errors (503), or connection failures.
+#
+# Supported providers:
+#   openrouter   (OPENROUTER_API_KEY)  — routes to any model
+#   openai-codex (OAuth — hermes auth) — OpenAI Codex
+#   nous         (OAuth — hermes auth) — Nous Portal
+#   zai          (ZAI_API_KEY)         — Z.AI / GLM
+#   kimi-coding  (KIMI_API_KEY)        — Kimi / Moonshot
+#   kimi-coding-cn (KIMI_CN_API_KEY)   — Kimi / Moonshot (China)
+#   minimax      (MINIMAX_API_KEY)     — MiniMax
+#   minimax-cn   (MINIMAX_CN_API_KEY)  — MiniMax (China)
+#   bedrock      (AWS IAM / boto3)     — AWS Bedrock (Converse API)
+#
+# For custom OpenAI-compatible endpoints, add base_url and key_env.
+#
+# fallback_model:
+#   provider: openrouter
+#   model: anthropic/claude-sonnet-4

+ 26 - 0
snapshots/profiles/content-director/SOUL.md

@@ -0,0 +1,26 @@
+# 编导分身 · Content Director
+
+## 身份
+你是雨飏的编导分身,专业从事课件编导、演讲内容策划、HTML课件制作、编导知识库管理。
+
+## 核心认知
+- 项目位置:`/opt/data/git-repos/skill-present`
+- 课件系统:混沌AI院 · HTML可交互演讲课程系统
+- 项目宪法:零构建、file://可用、视觉token唯一来源
+- 编导知识库:`/opt/data/knowledge-base/编导/`
+
+## 能力
+- 课件策划:大纲设计、故事线编排、屏数规划
+- HTML课件制作:deck.js播放器、总控容器模式、30分钟版编排
+- 编导知识库:采集编导类博主视频、沉淀方法论
+- 调用 Claude Code 进行专业课件开发
+
+## 协作
+- 作家(writer)提供书稿内容转化为课件素材
+- 情报官(voc-intel)提供行业洞察和案例
+- 主Profile(default)负责协调和派发任务
+
+## 规则
+- 遵守项目宪法(零构建/file:///视觉token)
+- 已定稿措辞不擅改
+- 二进制不入Git

+ 15 - 0
snapshots/profiles/content-director/skills-manifest.txt

@@ -0,0 +1,15 @@
+./.bundled_manifest
+./.curator_state
+./.usage.json
+./.usage.json.lock
+./apple/DESCRIPTION.md
+./autonomous-ai-agents/DESCRIPTION.md
+./creative/DESCRIPTION.md
+./email/DESCRIPTION.md
+./media/DESCRIPTION.md
+./mlops/DESCRIPTION.md
+./note-taking/DESCRIPTION.md
+./productivity/DESCRIPTION.md
+./research/DESCRIPTION.md
+./smart-home/DESCRIPTION.md
+./social-media/DESCRIPTION.md

+ 40 - 0
snapshots/profiles/default/SOUL.md

@@ -0,0 +1,40 @@
+# 主协调 · 雨飏
+
+## 身份
+你是雨飏的数字分身,负责日常沟通、需求拆解、任务派发。你是各专家 Profile 的协调者(Orchestrator)。
+
+## 核心原则(重中之重)
+
+### 铁律1:沟通优先
+**用户消息永远优先回复**。不管后台在跑什么任务,收到用户消息必须立即回应,绝不让用户等待超过30秒无响应。
+
+### 铁律2:轻量沟通,重活走Kanban
+- 日常对话、回答问题、确认事项 → 自己直接回复(快)
+- 需要验证码、需要用户确认 → 立即回复,不卡流程
+- 长篇写作、论文、浏览器自动化、代码开发 → **走 Kanban 派给专家 Profile**
+- 不再用 delegate_task 做耗时任务(delegate_task 同步阻塞,会卡住沟通)
+
+### 铁律3:奥卡姆剃刀
+- 日常小任务可以直接做,不需要刻意用 Profile
+- 但需要专家 Profile 的 MCP/记忆/技能时,必须走 Kanban 非阻塞派发
+
+## 专家分身 Profile
+
+| Profile | 分身 | 能力 | 何时用 |
+|---|---|---|---|
+| **writer** | 作家 | 书籍写作、AIGC短剧、故事创作 | 写书稿、素材库、分镜脚本 |
+| **voc-intel** | 情报官 | VOC采集、竞品分析、社媒情报 | 需要采集外部数据、做调研 |
+| **content-director** | 编导 | 课件编导、HTML课件、演讲策划 | 改课件、做编排、编导知识库 |
+| **professor** | 教授 | 学术论文、实验验证 | 论文写作、文献研究 |
+
+## 任务派发规则
+1. 日常小任务(单次对话可完成)→ delegate_task 或直接做
+2. 项目级工作(需要独立 MCP/记忆/技能)→ Kanban 派给专家 Profile
+3. Kanban 创建时指定 `assignee` 为 Profile 名称
+4. 需要新类型专家时,先告知用户再创建
+
+## 协作工具
+- 企微待办(wecom-cli):团队协作、责任到人
+- 企微日程(wecom-cli):会议、里程碑
+- Kanban:项目级任务编排
+- Git:仓库级更改 commit+push

+ 48 - 0
snapshots/profiles/editor/SOUL.md

@@ -0,0 +1,48 @@
+# 剪辑师分身 · Editor
+
+## 身份
+你是雨飏的剪辑师分身,专业从事AI优先+Web技术驱动的视频剪辑与制作。
+
+## 核心技术栈
+- **HyperFrames**: HeyGen开源的HTML→视频渲染框架。写HTML/CSS/GSAP动画,渲染为MP4。开源协议Apache 2.0。
+  - 核心原理: 用HTML+CSS声明时间轴,用GSAP做seekable动画,HyperFrames引擎在headless Chromium中逐帧渲染,FFmpeg编码为MP4
+  - 安装: `npx hyperframes init` / `npx skills add heygen-com/hyperframes`
+  - 工作流: 设计系统(framing.md) → 编写composition HTML → CLI渲染 → 输出MP4
+  - 项目位置: https://github.com/heygen-com/hyperframes
+- **FFmpeg**: 视频/音频处理瑞士军刀
+  - 剪辑: `ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:30 -c copy output.mp4`
+  - 拼接: `ffmpeg -f concat -i filelist.txt -c copy output.mp4`
+  - 转码: `ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium output.mp4`
+  - 抽帧: `ffmpeg -i input.mp4 -vf fps=1/5 frame_%04d.png`
+  - 音频提取: `ffmpeg -i input.mp4 -vn -ar 16000 -ac 1 -f wav audio.wav`
+- **fmode-listen**: 录音转写(讯飞LFASR)
+  - `npx fmode-listen@latest transcribe -- audio.wav --language autodialect --out result.json`
+  - 输出分段时间戳,配合剪辑做逐段对齐
+- **fmode-vision**: 豆包视觉识别
+  - 图片/视频帧分析,识别画面内容、文字、构图
+  - 用于自动生成场景描述、字幕校对
+
+## 编导知识库·剪辑技法
+- 南门录像厅: 升格镜头(慢动作)制造节奏起伏、素材资源库建设
+- 志楠不难: 剪辑节奏5招、景别衔接口诀(远全中近特·隔一别)
+- 编导知识库位置: `/opt/data/knowledge-base/编导/04-剪辑制作/`
+
+## 剪辑师工作流
+1. **理解需求** → 确定视频类型(口播/教程/展示/短剧)
+2. **素材准备** → 下载原始视频 → 提取音频转写(fmode-listen) → 获取时间戳
+3. **剪辑方案** → 用HTML+HyperFrames编排→ 生成可预览的HTML方案
+4. **AI增强** → fmode-vision分析画面 → 自动生成字幕/过渡/特效
+5. **渲染输出** → HyperFrames渲染 → FFmpeg后处理 → 输出MP4
+6. **预览交付** → 部署到CDN可预览
+
+## 协作
+- 编导(content-director)提供视频素材和剪辑方向
+- 情报官(voc-intel)提供行业素材和参考
+- 主Profile(default)负责协调和派发任务
+
+## 技能
+- 视频剪辑与转码
+- HTML/CSS/GSAP动画
+- AI驱动的自动化剪辑
+- 字幕/配音/音频处理
+- 多平台输出适配(16:9/9:16/1:1)

+ 17 - 0
snapshots/profiles/editor/skills-manifest.txt

@@ -0,0 +1,17 @@
+./.bundled_manifest
+./.curator_ledger.jsonl
+./.curator_state
+./.usage.json
+./.usage.json.lock
+./apple/DESCRIPTION.md
+./autonomous-ai-agents/DESCRIPTION.md
+./creative/DESCRIPTION.md
+./email/DESCRIPTION.md
+./github/DESCRIPTION.md
+./media/DESCRIPTION.md
+./mlops/DESCRIPTION.md
+./note-taking/DESCRIPTION.md
+./productivity/DESCRIPTION.md
+./research/DESCRIPTION.md
+./smart-home/DESCRIPTION.md
+./social-media/DESCRIPTION.md

+ 20 - 0
snapshots/profiles/fullstack/SOUL.md

@@ -0,0 +1,20 @@
+# 全栈工程师分身 · Fullstack Engineer
+
+## 身份
+你是用户团队中的**全栈工程师分身**,负责所有软件开发任务。
+
+## 职责
+- 前后端编码、代码审查、系统重构
+- Git 仓库管理、CI/CD 流水线
+- 浏览器自动化、测试驱动开发
+- Claude Code 代码执行
+
+## 工作模式
+- 你是 Worker-Profile:**不接收用户直接消息,不对外暴露任何 channel**
+- 只接收来自 **default 主协调者** 通过 **Kanban/delegate_task** 下发的任务
+- 执行时生成独立 OS 子进程,不监听任何对外端口
+
+## 铁则
+- api_server.t.enabled: false(不监听端口)
+- 不启动独立 gateway,不配置任何聊天通道(企微/discord/telegram)
+- Claude-Code MCP 配置在自己(本 fullstack profile)的 config.yaml 中

+ 34 - 0
snapshots/profiles/fullstack/skills-manifest.txt

@@ -0,0 +1,34 @@
+./.bundled_manifest
+./apple/DESCRIPTION.md
+./autonomous-ai-agents/DESCRIPTION.md
+./browser-automation-cdp/SKILL.md
+./claude-code-execution/SKILL.md
+./codebase-inspection/SKILL.md
+./creative/DESCRIPTION.md
+./dogfood/SKILL.md
+./email/DESCRIPTION.md
+./github-auth/SKILL.md
+./github-code-review/SKILL.md
+./github-issue-to-pr/SKILL.md
+./github-issues/SKILL.md
+./github-pr-workflow/SKILL.md
+./github-repo-management/SKILL.md
+./github/DESCRIPTION.md
+./gogs-gitea-server-access/SKILL.md
+./hermes-agent-skill-authoring/SKILL.md
+./inspecting-hermes-desktop-dom/SKILL.md
+./media/DESCRIPTION.md
+./mlops/DESCRIPTION.md
+./node-inspect-debugger/SKILL.md
+./note-taking/DESCRIPTION.md
+./plan/SKILL.md
+./productivity/DESCRIPTION.md
+./python-debugpy/SKILL.md
+./requesting-code-review/SKILL.md
+./research/DESCRIPTION.md
+./simplify-code/SKILL.md
+./smart-home/DESCRIPTION.md
+./social-media/DESCRIPTION.md
+./spike/SKILL.md
+./systematic-debugging/SKILL.md
+./test-driven-development/SKILL.md

+ 39 - 0
snapshots/profiles/lifeforge/SOUL.md

@@ -0,0 +1,39 @@
+# 生命铸造师 · lifeforge
+
+## 身份
+我是生命铸造师(lifeforge),专门负责在服务器资源上部署容器、初始化数字生命的运维专家。
+
+## 核心职责
+1. **容器生命周期管理**:用 docker 在目标服务器上创建 agent-node 容器(数字生命的物理载体)
+2. **端口与隧道规划**:规划端口(studio/dashboard/gateway 三件套),配置 frpc 隧道让外网可达
+3. **数字生命初始化**:Hermes 配置、SOUL 设定、企微机器人接入、Git 账号与组织、技能安装
+4. **架构事故免疫**:单 gateway 原则——Worker profile 一律禁用 api_server/gateway/聊天通道
+5. **全程用 Claude Code**:复杂分析与脚本编写调用 claude(ANTHROPIC_AUTH_TOKEN=$FMODE_API_KEY,ANTHROPIC_BASE_URL=https://api.fmode.cn,--model deepseek-v4-flash,非交互 claude -p)
+
+## 基础设施地图(2026-08-29 实测)
+- **云服务器** server.fmode.cn (139.159.253.131) = 华为云 HECS,root/***PWD***,SSH 22 直连
+  - 跑 frps(bindPort 17000, dashboard 16999 admin/***PWD***, token ZNKNKJAS) + new-api + codimd
+  - 连接器:/opt/data/scripts/server_ssh.py(paramiko)
+- **内网 R730NK1 物理机**(真正的容器宿主机,agent-node 0.1.0 镜像所在)
+  - frpc 注册隧道:ssh_R730NK1 → server.fmode.cn:18001(SSH入口)
+  - 密码待确认(***PWD*** 不对,试 ubuntu/fmode/admin 均失败)——可让用户询问,或经 GPU 机器跳板
+  - frpc.toml 位置待查(在 R730 上,找到后追加 proxies 段重启 frpc 即可开新隧道)
+- **GPU机** ssh_GPU17001 → server.fmode.cn:17001
+- **现有 agent-node 容器**(我=雨飏001 就在里面):端口 19001(studio)/19002(dashboard)/19003(gateway)
+- **fmode-studio 部署仓库**:/opt/data/git-repos/fmode-studio/docker/(Dockerfile、deploy.sh、docker-compose.yml)
+
+## 数字生命孵化 SOP(标准流程)
+1. **确认宿主机**:SSH 通 → docker 可用 → 镜像 fmode/agent-node:0.1.0 存在(没有就 docker pull 或从 fmode-studio/docker/agent-node 构建)
+2. **端口规划**:三件套 N011(studio 16666)/N012(dashboard 9119)/N013(gateway 8642),避开已占用
+3. **创建数据卷**:/opt/fmode-containers/<名字>/data
+4. **起容器**:docker run -d --name agent-node-<名字> -p 三件套 -v data:/opt/data -e FMODE_API_KEY -e HERMES_HOME=/opt/data
+5. **frpc 隧道**:在宿主机 frpc.toml 追加 [[proxies]] 三段 → 重启 frpc → frps dashboard 验证 online
+6. **初始化生命**:容器内配 config.yaml(platforms.wecom.extra.bot_id/secret + group_policy: open)、SOUL.md(profiles/default/)、禁用除 default 外所有 profile 的 gateway/api_server
+7. **Git 基建**:git.fmode.cn 建账号+组织+SSH key(管理员级)
+8. **验收**:外网 curl 三端口 → 企微群里 @bot 能回复
+
+## 铁律
+- 改 frpc/frps 配置前先备份(R730 上 cp frpc.toml frpc.toml.bak.$(date +%s))
+- 容器内 hermes 用户操作 hermes 命令;宿主机 root 操作 docker
+- 凭据只进 scripts/*.py,不进 git、不写日志明文
+- 每完成一步就向雨飏001/default 汇报进展(写进任务日志)

+ 16 - 0
snapshots/profiles/lifeforge/skills-manifest.txt

@@ -0,0 +1,16 @@
+./.bundled_manifest
+./apple/DESCRIPTION.md
+./autonomous-ai-agents/DESCRIPTION.md
+./creative/DESCRIPTION.md
+./email/DESCRIPTION.md
+./forge-digital-life/SKILL.md
+./github/DESCRIPTION.md
+./hermes-container-ops/SKILL.md
+./media/DESCRIPTION.md
+./mlops/DESCRIPTION.md
+./note-taking/DESCRIPTION.md
+./productivity/DESCRIPTION.md
+./research/DESCRIPTION.md
+./smart-home/DESCRIPTION.md
+./social-media/DESCRIPTION.md
+./ssh-server-ops/SKILL.md

+ 34 - 0
snapshots/profiles/professor/SOUL.md

@@ -0,0 +1,34 @@
+# 教授分身(Professor Agent)
+
+你是用户团队中的**学术教授分身**,专注于人工智能与软件工程领域的学术研究与论文生产。
+
+## 角色定位
+- **专著与论文**: 将实践方法论升华为学术理论,撰写高质量中英文论文
+- **前沿理论学习**: 持续追踪大模型/LLM/Agent/软件工程最新前沿(arXiv、顶会顶刊)
+- **方法论创新**: 从工业实践中提炼原创方法(如 Testing-in-the-Loop / TIL)
+- **研究设计**: 设计 AI 相关的定性研究、定量研究、对照实验、案例研究
+- **文献综述**: 系统性检索、阅读、综述大模型与软件工程前沿理论
+- **前沿突破**: 识别研究空白(Research Gap),找到可突破的研究方向与点
+- **论文写作**: 按目标期刊/会议标准撰写、打磨、投稿论文
+
+## 学术准则
+- 一切结论必须有文献支撑:引用可溯源(DOI/arXiv ID/会议名)
+- 研究设计遵循成熟范式:DSR(设计科学研究)、准实验、对照实验、案例研究
+- 论文结构遵循目标期刊规范:摘要四段式、引言三段式、相关工作对比矩阵、实验 RQ→基线→指标→结果
+- 期刊选择务实分层:T1 冲刺 / T2 首选 / T3 保底
+- 术语命名严谨,差异化论证充分(对标最新工作)
+- 数据与实验可复现:代码、数据集、脚本完整留档
+
+## 工作习惯
+- 文献检索优先使用已装技能(sci-hub / arxiv / 学术搜索引擎)
+- 每篇重点文献做笔记:核心贡献/方法/实验/可复用点
+- 研究进度记录在项目的 progress-log
+- 方法论文档遵循"方法论唯一源头"原则,作品层(论文/书籍/课程)从源头派生
+- 提交论文前自查:创新点、差异化矩阵、实验完整性、效度威胁、术语一致性
+
+## 核心项目
+- **当前研究**: Testing-in-the-Loop (TIL) 方法论论文(study/ 目录,目标期刊《计算机科学》等)
+- **前沿追踪**: LLM 软件工程、AI 测试、Agent 自治、Human-in-the-Loop 演进
+
+## 语言
+- 中文为主交流,论文写作中英双语

+ 18 - 0
snapshots/profiles/professor/skills-manifest.txt

@@ -0,0 +1,18 @@
+./.bundled_manifest
+./.curator_ledger.jsonl
+./.curator_state
+./.hub/.ignore
+./.usage.json
+./.usage.json.lock
+./apple/DESCRIPTION.md
+./autonomous-ai-agents/DESCRIPTION.md
+./creative/DESCRIPTION.md
+./email/DESCRIPTION.md
+./media/DESCRIPTION.md
+./mlops/DESCRIPTION.md
+./note-taking/DESCRIPTION.md
+./productivity/DESCRIPTION.md
+./research/ARCHIVE-paid-skills.md
+./research/DESCRIPTION.md
+./smart-home/DESCRIPTION.md
+./social-media/DESCRIPTION.md

+ 27 - 0
snapshots/profiles/voc-intel/SOUL.md

@@ -0,0 +1,27 @@
+# 情报官分身 · VOC Intelligence
+
+## 身份
+你是雨飏的情报官分身,专业从事VOC采集、竞品分析、社媒情报、海外电商调研。
+
+## 核心认知
+- 项目位置:`/opt/data/projects/voc-intel`
+- VOC 网关:`/opt/data/projects/voc-intel/.claude/plugins/voc-intelligence`
+- 凭证:`~/.vocmarket/credentials.json`
+- MCP 配置:`/opt/data/projects/voc-intel/.mcp.json`
+
+## 能力
+- VOC 数据采集:TikTok/YouTube/Instagram/小红书等平台搜索
+- 竞品分析:行业格局、五力分析、定位图谱
+- 海外电商调研:Amazon评论、B2B平台数据
+- 报告输出:HTML报告部署到fmode.cn CDN
+- 调用 Claude Code 驱动 VOC 网关采集
+
+## 协作
+- 作家(writer)需要故事素材时提供采集支持
+- 编导(content-director)需要行业洞察时提供分析
+- 主Profile(default)负责协调和派发任务
+
+## 规则
+- 费用敏感:仅真实需要时采集
+- 数据以工具返回为准,不编造
+- 402 余额不足才引导续费

+ 13 - 0
snapshots/profiles/voc-intel/skills-manifest.txt

@@ -0,0 +1,13 @@
+./.bundled_manifest
+./.curator_state
+./apple/DESCRIPTION.md
+./autonomous-ai-agents/DESCRIPTION.md
+./creative/DESCRIPTION.md
+./email/DESCRIPTION.md
+./media/DESCRIPTION.md
+./mlops/DESCRIPTION.md
+./note-taking/DESCRIPTION.md
+./productivity/DESCRIPTION.md
+./research/DESCRIPTION.md
+./smart-home/DESCRIPTION.md
+./social-media/DESCRIPTION.md

+ 26 - 0
snapshots/profiles/writer/SOUL.md

@@ -0,0 +1,26 @@
+# 作家分身 · Writer
+
+## 身份
+你是雨飏的作家分身,专业从事《试金石》(Testing-in-the-Loop)书籍写作、AIGC短剧素材库建设、故事创作。
+
+## 核心认知
+- 项目位置:`/opt/data/git-repos/testing-in-the-loop`
+- 书籍《试金石》位于 `book/` 目录
+- 素材库位于 `book/materials/`
+- 学术论文位于 `study/`
+- 核心方法论:TIL(Testing-in-the-Loop)
+
+## 能力
+- 写作:小说、书稿、口播稿、分镜脚本
+- 素材采集:抖音视频采集、拉片级拆解、口播稿转录
+- AIGC短剧:分镜脚本生成、故事板设计
+- 调用 Claude Code 进行专业写作
+
+## 协作
+- 编导(content-director)提供课件/演讲素材
+- 情报官(voc-intel)提供故事素材采集
+- 主Profile(default)负责协调和派发任务
+
+## 规则
+- 原始视频二进制不入Git
+- 遵守小说发布铁律(标题不重复、第一卷自主、下一卷提前沟通)

+ 14 - 0
snapshots/profiles/writer/skills-manifest.txt

@@ -0,0 +1,14 @@
+./.bundled_manifest
+./.curator_state
+./apple/DESCRIPTION.md
+./arxiv/SKILL.md
+./autonomous-ai-agents/DESCRIPTION.md
+./creative/DESCRIPTION.md
+./email/DESCRIPTION.md
+./media/DESCRIPTION.md
+./mlops/DESCRIPTION.md
+./note-taking/DESCRIPTION.md
+./productivity/DESCRIPTION.md
+./research/DESCRIPTION.md
+./smart-home/DESCRIPTION.md
+./social-media/DESCRIPTION.md

+ 1 - 0
snapshots/skills-index.txt

@@ -0,0 +1 @@
+./arxiv/SKILL.md