整理已完成项目为可搜索的档案,并备份会话记录
备选案文1: ClawhHub CLI(建议). 备选案文2: 从 GitHub.是一项面向实际任务的技能,主要用于Archive Project Skill. 组织完成的项目,形成一个完整的长期可搜索的档案.;Data 隐私: 存档数据(会话).。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
openclaw skills install archive-project # 或 clawhub install archive-project
# 克隆仓库 git clone https://github.com/KaigeGao1110/ArchiveProject.git ~/.openclaw/skills/archive-project # 或直接下载 curl -L https://github.com/KaigeGao1110/ArchiveProject/archive/refs/heads/main.zip -o /tmp/archive-project.zip unzip /tmp/archive-project.zip -d ~/.openclaw/skills/ mv ~/.openclaw/skills/ArchiveProject-main ~/.openclaw/skills/archive-project
将已完成的项目整理为一个完整、长期可检索的归档。
数据隐私:归档数据(会话记录、项目文件)绝不会离开内部 workspace,除非你显式批准发布步骤。在任何归档操作前,sanitize 脚本会自动执行。
仅当 你说“archive this” 或 “can we archive this” 时才会触发归档。这是唯一的触发方式——你始终掌握项目何时完成的最终决定权。
输入 //archive 后接你的项目名称,即可激活 Archive 技能。
示例:“//archive cureforge-hr-assessment”
但在以下场景中,我将 提示但不执行 归档:
我 不会提示 归档的情况包括:
workspace/projects// ARCHIVE.md session_transcript.jsonl subagent_sessions/ deliverables/ decisions.md
子代理会话(重要——必须收集):
# 存储会话记录的目录(可通过 SESSION_TRANSCRIPT_PATH 配置)
# 默认路径:~/.openclaw/agents/main/sessions/(所有用户的通用路径)
# 覆盖方式:设置 SESSION_TRANSCRIPT_PATH 为自定义路径(例如 EFS 挂载点)
SESSION_DIR="${SESSION_TRANSCRIPT_PATH:-$HOME/.openclaw/agents/main/sessions/}"
# 使用显式的会话密钥(来自会话标签或传入参数)定位主会话记录
# 利用会话密钥/标签匹配精确的记录文件
SESSION_KEY="${1:-}" # 通过参数传入会话密钥,或从上下文中提取
if [ -n "$SESSION_KEY" ]; then
MAIN_SESSION_PATH=$(grep -l "$SESSION_KEY" "${SESSION_DIR}"*.jsonl 2>/dev/null | head -1)
fi
# 回退方案:若未提供密钥或未找到匹配项,则使用最新的一条会话记录
if [ -z "$MAIN_SESSION_PATH" ] || [ ! -f "$MAIN_SESSION_PATH" ]; then
MAIN_SESSION_PATH=$(ls -t "${SESSION_DIR}"*.jsonl 2>/dev/null | head -1)
fi
# 创建项目归档目录
mkdir -p workspace/projects//subagent_sessions/
# 复制主会话记录
cp "$MAIN_SESSION_PATH" "workspace/projects//session_transcript.jsonl"
子代理子会话记录:
# 子代理会话 ID 列在主会话 JSONL 文件中
# 查找会话元数据中的 "childSessions" 数组
# 将每个子会话记录复制到 subagent_sessions/ 目录下
# 命名模式:{SESSION_DIR}/{child-id}.jsonl
归档前需移除:
使用清洗脚本:
python3 scripts/sanitize_transcript.py workspace/projects//session_transcript.jsonl -o workspace/projects/ /session_transcript_sanitized.jsonl
该脚本将脱敏以下内容:
验证后再继续:
# 运行内置测试以确认脱敏功能正常 python3 scripts/sanitize_transcript.py --test # 手动抽样检查(查找是否仍有残留的敏感数据) grep -iE '(token|key|password|email|phone|@|192.168|10.)' workspace/projects//session_transcript_sanitized.jsonl || echo "未发现敏感数据"
验证通过后,用清洗后的版本替换原始文件:
mv workspace/projects//session_transcript_sanitized.jsonl workspace/projects/ /session_transcript.jsonl
请使用下方模板。务必填写决策依据——这对后续复盘最具价值。
在 MEMORY.md 中添加一行摘要:项目名称 + 状态 + 链接。
在从 EFS 删除任何会话文件前,必须向用户确认:
“我可以删除该项目的 EFS 会话文件吗?它们已在归档中完成备份。”
仅在用户明确批准后才可执行删除操作。 绝不可未经询问自动删除。
若获批准:
# 从 EFS 删除主会话记录
rm -f "${SESSION_DIR}$(basename "$MAIN_SESSION_PATH")"
# 从 EFS 删除所有子代理子会话记录
for CHILD_ID in ; do
rm -f "${SESSION_DIR}${CHILD_ID}.jsonl"
done
若未获批准,则保留 EFS 中的会话文件不变。
cd workspace git add projects// git commit -m "Archive: "
保持项目数据私有。 归档数据仅供内部参考使用。
#— 项目归档 _Created: | Owner: | Status: _ --- ## 一句话摘要 <1–2 句话:说明该项目的作用、面向对象及其核心价值> --- ## 项目背景 ### 客户 <姓名 + 联系方式 — 归档后仅记录未来参考所需的必要信息> ### 原始资料 | 文件 | 内容 | |------|------| | | | | | | --- ## 交付成果 ### 代码 / 产品 | 路径 | 描述 | |------|------| | | | ### 报告 / 文档 | 文件 | 描述 | |------|------| | | | ### 演示 / 链接 | 链接 | 描述 | |------|------| | | | --- ## 时间线 | 日期 | 事件 | |------|------| | YYYY-MM-DD | | | YYYY-MM-DD | | --- ## 关键决策 ### N. <决策标题> **选项:** A vs B(选择 A) **依据:** <为何做出该选择> **结果:** <实际发生情况> --- ## 待办事项 | 事项 | 描述 | 优先级 | |------|------|--------| | - |
| High/Med/Low | --- ## 经验总结 ### N. <经验标题> <学到了什么,下次应如何改进> --- ## Git 提交记录(内部) | 阶段 | 提交哈希 | 描述 | |------|----------|------| | 初始 | | | | 交付 | | | --- ## 重建指南 ```bash
--- ## decisions.md 模板 ```markdown # 关键决策 —## 决策 N - 日期: - 问题: - 可选方案: - A: <描述> - B: <描述> - 决策:<所选方案> - 依据:<原因>
scripts/sanitize_transcript.py 脚本提供确定性、可审计的会话记录敏感数据脱敏能力。
| 类别 | 示例 | 替换为 |
|---|---|---|
| GitHub tokens | ghp_xxx, github_pat_xxx |
[REDACTED-GITHUB-TOKEN] |
| OpenAI keys | sk-xxx, sk-proj-xxx |
[REDACTED-OPENAI-KEY] |
| Anthropic keys | sk-ant-xxx |
[REDACTED-ANTHROPIC-KEY] |
| AWS credentials | AKIAxxx, aws_access_key_id=xxx |
[REDACTED] |
| 邮箱地址 | user@example.com |
[REDACTED-EMAIL] |
| 电话号码 | +1 555-123-4567 |
[REDACTED-PHONE] |
| IPv4 地址 | 192.168.1.1, 10.0.0.1 |
[REDACTED-IP] |
| IPv6 地址 | 2001:db8::1 |
[REDACTED-IPV6] |
| 内部主机名 | ip-10-0-1-43.local |
[REDACTED-HOSTNAME] |
| AWS EC2 DNS | ec2-xxx.amazonaws.com |
[REDACTED-AWS-HOST] |
| 通用密钥 | 高熵 base64/hex 字符串 | [REDACTED-SECRET] |
# 基础用法 — 输出至标准输出 python3 scripts/sanitize_transcript.py input.jsonl > sanitized.jsonl # 显式指定输出文件 python3 scripts/sanitize_transcript.py input.jsonl -o sanitized.jsonl # 从标准输入读取 cat input.jsonl | python3 scripts/sanitize_transcript.py > sanitized.jsonl # 运行内置测试 python3 scripts/sanitize_transcript.py --test
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.3万人学习
共49课时 | 82.7万人学习
最新文章