Skip to main content

okp-import

将领域知识清洗并导入 Open Knowledge Protocol。面向各领域 owner 的 agent:读 domain README → 查重 → 蒸馏 → 校验 → 写入。

الانتقال إلى التثبيت

معلومات المصدر

المستودع
talesofai/okp
آخر نشاط في المصدر
١٢ أغسطس ٢٠٢٦ في ١٥:٣٨
لغة SKILL.md المكتشفة
الصينية
النجوم
٥
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
4 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
okp-import
version
1.7.0
description
将领域知识清洗并导入 Open Knowledge Protocol。面向各领域 owner 的 agent:读 domain README → 查重 → 蒸馏 → 校验 → 写入。
metadata
{"requires":{"bins":["okp"]},"cliHelp":"okp --help"}
# okp-import — 知识导入 Skill **CRITICAL — 开始前 MUST 确认 okp CLI 已安装并可连接 API:** ```bash npm install -g @markbangwu/okp okp domains # 确认 API 可达 ``` ## 权限模型 `public: admin/host > writer > reader` `private: host > writer > reader` - **admin**:全局管理员,可管理公开 domain。对 private domain 没有任何旁路权限,必须接受 reader/writer 邀请后才能读取或写入,且仍不能管理 private domain。 - **host**:每个 domain 有且只有一个 host,由 domain 创建者自动获得。负责管理 domain README、成员和邀请码。host 不可转让。 - **writer**:domain 写入者。可通过 invitation 获得。可写入概念,不能管理成员和邀请码。 - **reader**:公开 domain 的默认只读权限;在 private domain 中必须通过邀请显式获得。 domain 默认公开。创建者可选择 private;private domain 不会向非成员出现在 domains、search、sample、links 或 export 中。 ### 新建 domain → 自动成为 host 写 README 即创建 domain,创建者自动成为该 domain 唯一 host: ```bash okp domain <domain> --set readme.md ``` 返回 201 即创建成功,创建者已持有 host 角色。 创建 private domain: ```bash okp domain <domain> --set readme.md --visibility private ``` ### 获得 writer 权限 若 `put` / `batch` / `domain --set` 返回 403(write access denied): 1. 让该 domain 的 host(公开 domain 也可由 admin)生成邀请码: ```bash okp invite create <domain> --expires-hours 72 --max-uses 1 ``` 2. 当前用户接受: ```bash okp invite accept OKP-XXXX-XXXX ``` 3. 确认成员身份: ```bash okp invite members <domain> ``` 公开 domain 邀请码授予 `writer`。private domain 可邀请 `reader` 或 `writer`,不能授予 `host` 或 `admin`: ```bash okp invite create <private-domain> --role reader okp invite create <private-domain> --role writer ``` 邀请码是短码,不是链接路由。门户右上角「邀请」也可输入同一邀请码。 ## 工作流(严格按顺序) ### Step 1: 读 domain README 每个 domain 有自己的 README,定义了 frontmatter 字段规范。**必须先读。** ```bash okp domain <domain> # 打印 README(含 schema 定义) okp domains # 查看所有 domain okp domains -q <keyword> # 模糊搜索领域名 ``` 如果是新 domain,先写 README 再导入(写 README 即定义 domain,之后 `okp domains` 立即可见): ```bash okp domain <domain> --set readme.md ``` README 格式(YAML frontmatter 定义 schema): ```markdown --- fields: sender: type: string required: true description: 飞书发送者用户名 group: type: string required: true description: 来源飞书群 platform: type: enum required: false enum: [bilibili, douyin, xiaohongshu, github, youtube] date: type: string required: false description: 发布日期 YYYY-MM-DD --- # feishu-social 飞书社媒分享数据... ## How to contribute 每条 concept 的 frontmatter 必须包含 sender 和 group。 ``` ### Step 2: 查重(search-before-insert) ```bash okp search "<title>" --domain <domain> --type <type> ``` - 命中语义相近的结果 → 判断是否同一概念 → 是则用已有 id 更新,否则改 title 区分 ### Step 3: 蒸馏 concept JSON 关键字段: ```json { "id": "feishu-social/Link/太离谱了居然可以在自己画的虚拟世界游玩", "domain": "feishu-social", "type": "Link", "title": "太离谱了!居然可以在自己画的虚拟世界游玩!", "description": "一句话摘要,不超过 500 字符", "tags": ["AI视频", "虚拟世界"], "body": "markdown 正文", "frontmatter": { "sender": "寇佳新", "group": "the World Builders", "platform": "bilibili", "date": "2026-07-06", "url": "https://b23.tv/zyhaEno", "likes": "225", "views": "6357" }, "provenance": { "source": "feishu-sync", "agent": "okp-import/1.6", "raw_ref": "https://..." } } ``` **frontmatter 按 domain README 的 schema 填写。required 字段不能缺省,否则写入返回 422。** ### Step 4: 写入 ```bash # 单个 okp put <id> -f concept.json # 批量(NDJSON,每行一个 concept) okp batch concepts.ndjson ``` `put` 与 `batch` 行为一致: - 新写入 / 内容有变更 → 落库后自动进入可检索索引(异步,通常数秒内) - 内容未变的幂等重导 → 跳过写入;若该条此前未建好索引,服务端会补上 - **不要**再找单独的「建索引 / embed」命令——没有,也不需要 常见失败: | 状态 | 含义 | 处理 | |---|---|---| | 403 | 无 domain 写权限 | 联系 host/admin 生成邀请码,再 `okp invite accept <code>` | | 422 | frontmatter/校验失败 | 按 `fix` 补字段或改写 | | 401 | token 无效/过期 | 检查 `OKP_API_TOKEN` / sandbox execution token | 422 的 `fix` 常见项: - `frontmatter.<field> 是必填字段` → 补填该字段 - `疑似重复` → 用 `okp search` 确认是否已有 - `provenance.source 为空` → 填数据来源 ### Step 5: 验证 写入返回成功后稍等片刻再搜(大批量导入可多等几秒): ```bash okp sample --domain <domain> --limit 3 # 随机抽样确认数据结构 okp search "<title 关键词>" --domain <domain> --limit 5 okp search --domain <domain> --sort date:desc --limit 5 # 时序类看最新 okp get <id> # 确认单条完整 ``` 若刚写入的 concept 暂时搜不到:再等几秒重试 `okp search` / `okp get`;不要重写一遍,除非内容本身要改。 ## id 命名规范 ``` {domain}/{type}/{slug} # slug 用 kebab-case,避免中文和空格 ``` ## provenance 必填字段 | 字段 | 说明 | |---|---| | `source` | 数据来源,如 `feishu-sync`、`manual`、`fandom-crawl` | | `agent` | 写入方,如 `okp-import/1.6` | | `raw_ref` | 原始数据 URL 或路径 | ## 邀请相关 CLI(host/admin) ```bash okp invite create <domain> [--expires-hours 72] [--max-uses 1] okp invite list <domain> okp invite revoke <domain> <invite-id> okp invite accept <code> okp invite members <domain> ``` - create 时明文 code 只显示一次 - list 不返回明文 code - 公开 domain 的邀请角色固定为 `writer` - private domain 的邀请角色可以是 `reader` 或 `writer` ## 删除 ```bash # writer/host 可删除有写权限 domain 中的 concept;公开 domain 的 admin 也可删除 okp delete <concept-id> --yes # private domain 只有 host 可删除;公开 domain 的 host/admin 可删除 okp domain <domain> --delete --yes ``` domain 删除会永久清理该 domain 的 concepts、links、revisions、members 和 invites。 ## 不在本 skill 范围 - 知识搜索 → okp-search - domain README 维护之外的门户 UI 操作 - 数据爬取 → 各 domain 自己的数据管道
عرض على GitHub