360 Secure SkillHub
360 安全技能中心

Kb Ingest

接收 research_kb_agent_task 协议的任务 JSON,将 payload.files 视为同一快照,抽取文本、归档源文件、识别代码项目与文档类型,按中文结构模板生成 Markdown wiki 页面写入指定 Gitea 知识库仓库,并更新 catalog.json、index.md 与导入报告,最终返回固定的结构化 JSON 结果。

myd2002
myd2002
热度 71.23
最近更新 2026-06-26 03:21:54
分类:知识依赖:代码执行 / 读写文件 / 第三方 API / 内部调用大模型应用场景:摘要总结 / 研究 / 笔记整理 / 工作流 ...

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add kb-ingest
Metadata
name
kb_ingest
description
Compile backend-uploaded source files into Research KB Markdown wiki pages, write them to Gitea, archive sources, and return structured JSON results.

Skill: kb_ingest

职责边界

kb_ingest 只负责把 Java 后端已经上传好的源文件编译成 Research KB 的 Markdown wiki 页面,并写入指定的 Gitea 知识库仓库。它不负责登录、权限判断、本地扫描、重复文件预检查、目标仓库选择、任务创建、会话记录或用户交互。

每个任务表示一次完整的源扫描上传。必须把 payload.files[] 当成同一个快照来理解,保留 relativePath 中的原始目录结构。

可接受任务

只接受满足以下条件的 JSON:

  • protocol = research_kb_agent_task
  • taskType = kb_ingest
  • kbTargets[] 中恰好有一个目标
  • payload.files[] 非空,且每个文件包含后端可读的 uploadedPath

不要要求任务 JSON 携带 Gitea token。Gitea 凭据只能从 skill 环境变量读取。

编译流程

处理任务时按以下顺序执行:

  1. 校验任务协议和输入字段。
  2. 将每个原始源文件按 archiveSourceFile 选项归档到 source_files/。
  3. 先基于完整文件清单识别代码项目,而不是逐个代码文件生成页面。
  4. 识别项目根目录标记:package.json、pyproject.toml、requirements.txt、pom.xml、build.gradle、Cargo.toml、go.mod、.sln、.csproj、Makefile、CMakeLists.txt、Dockerfile 等。
  5. 如果一个快照包含多个明确的项目根目录,为每个根目录生成一个 codebase 页面;如果根目录标记显示这是 monorepo,保持整体编译,不要拆成无意义的小页。
  6. 非代码文档需要识别为 paper、survey、project、doc、experiment、meeting 或 note。
  7. 使用 scripts/summary_templates.py 中的中文结构生成 wiki 页面。
  8. 页面内容只能来自上传文件中的证据。缺失字段写“来源未提及。”,不要用常识补全。
  9. 每个 Markdown 页面必须包含 frontmatter 和非空 sources 数组。代码库页面的 sources 必须覆盖该项目摘要使用到的所有源文件。
  10. 写入 Markdown 页面,更新 catalog.json,更新 index.md。
  11. 多文件任务需要在 imports/ 下写入导入报告。
  12. 最终只返回一个合法的 research_kb_agent_result JSON。

生成要求

参考“先把资料编译成持久 wiki,再用于查询”的方式:入库阶段要尽量把原始资料转成可检索、可引用、可追踪的中文知识页,而不是只保存原文摘录。

不同类型页面必须关注对应信息:

  • 论文:研究问题、核心贡献、方法、实验结果、局限、可复用结论。
  • 综述/调研:范围、分类框架、关键发现、趋势、风险、信息缺口、团队启发。
  • 项目/代码库:目标、架构、目录结构、核心模块、依赖与配置、运行测试线索、成熟度、风险、修改建议。
  • 技术文档:用途、前置条件、关键概念、命令/API、配置、示例、排障。
  • 实验:假设、变量、环境、数据与模型、结果、异常、结论、下一步。
  • 会议:时间与参与者、议程、讨论、决议、行动项、风险、开放问题。
  • 笔记:背景、核心想法、证据、不确定性、关联知识、行动项、验证问题。

目标目录

  • paper -> summaries/papers/
  • survey -> summaries/surveys/
  • project -> summaries/projects/
  • doc -> summaries/docs_tech/
  • experiment -> summaries/experiments/
  • meeting -> summaries/meetings/
  • codebase -> summaries/codebases/
  • note -> summaries/notes/

团队知识库可以更新 people/ 和 projects/general/。个人知识库不要创建或写入这两个目录。

输出

必须返回如下结构,字段名和层级不能改变:

{
  "protocol": "research_kb_agent_result",
  "protocolVersion": "1.0",
  "taskId": "...",
  "taskType": "kb_ingest",
  "success": true,
  "result": {
    "ingestionId": "...",
    "kbTarget": {
      "kbType": "team",
      "repoFullName": "AIFusionBot/aifhku-lab-team-kb",
      "branch": "main"
    },
    "processedFiles": 1,
    "createdMarkdownFiles": [],
    "updatedMarkdownFiles": [],
    "createdExtraPages": [],
    "archivedSourceFiles": [],
    "skippedFiles": [],
    "failedSourceFiles": [],
    "catalogUpdated": true,
    "indexUpdated": true,
    "importReportPath": ""
  },
  "errors": []
}

单个文件失败时放入 failedSourceFiles。整个任务失败时设置 success=false。

辅助入口

稳定入口是:

python3 scripts/run_task.py --stdin
python3 scripts/run_task.py --task-json <path>

该脚本会校验任务、抽取文本、归档源文件、生成中文 Markdown、写入 Gitea、更新目录和索引,并返回固定 JSON schema。Agent 可以在调用底层脚本前生成更丰富的页面内容,但最终响应必须仍然遵守上面的输出结构。