knowledge.md 7.8 KB

知识结构(单条知识)

id: 知识唯一标识
task: 任务描述,什么场景、在做什么

type: 知识类型(单选)
    user_profile:用户画像(偏好、习惯、背景、约束)
    strategy:具体执行经验,从执行过程中反思获得
    tool:工具名称,简介,使用方法,优缺点对比,代码示例
    usecase:用户背景,采用方案,实现步骤,问题,效果
    definition:概念定义,技术原理,应用场景
    plan:流程步骤,决策点,某个问题的总结方法论

tags: 业务标签(可有多个)
    category: 子类别(如 preference, background, habit, constraint)
    domain: 领域(如 coding_style, architecture)
    其他自定义标签

scopes: 可见范围(可有多个,格式:{entity_type}:{entity_id})
    user:{user_id}:用户级(个人可见)
    agent:{agent_id}:Agent 级(特定 Agent 可见)
    project:{project_id}:项目级(项目组可见)
    team:{team_id}:团队级(部门可见)
    org:{org_id}:组织级(全公司可见)
    public:公开(所有人可见)

owner: 所有者(格式:{entity_type}:{entity_id},唯一)
    谁创建的,谁有权修改/删除

content:
    基于类型的具体内容,相对完整的一条知识

source:
    name: 工具/资源名称(若有)
    category:paper/exp/skill/book...
    urls:知识来源的网站
    agent_id:调用知识查询的agent名称
    submitted_by:创建本条目的agent负责人名称
    timestamp: 知识生成时的时间戳
    trace_id: 来源 Trace ID(若有)

eval:基于使用反馈
    helpful: 好用的次数
    harmful:不好用的次数
    confidence: 置信度(0-1)
    helpful_history: [(query+trace_id+outcome), ]用于记录反馈时的调用总结
    harmful_history: []

知识检索机制

检索流程
    1. 构建可见范围
        根据执行上下文(user_id, agent_id, project_id, team_id, org_id)
        构建用户的所有可见 scopes:
            - user:{user_id}
            - agent:{agent_id}
            - project:{project_id}
            - team:{team_id}
            - org:{org_id}
            - public

    2. 向量检索 + 过滤
        查询条件:
            - 语义匹配(向量检索)
            - scopes 过滤(知识的 scopes 与用户的 visible_scopes 有交集)
            - type 过滤(可选,按知识类型过滤)

    3. 按优先级排序
        优先级:user > project > agent > team > org > public
        取知识的 scopes 中优先级最高的进行排序

触发时机
    - Agent 启动时:自动检索相关知识
    - Goal focus 时:检索与当前目标相关的知识
    - 主动调用:通过 get_knowledge 工具主动查询

实现位置(规划)
    - agent/memory/knowledge_store.py: 知识存储接口
    - agent/memory/knowledge_retriever.py: 检索逻辑
    - agent/tools/builtin/knowledge.py: get_knowledge 工具

知识提取机制

触发时机
    - 主动表达:用户明确表达偏好、纠正、提供背景信息
    - 任务完成:任务完成后的反思总结
    - 压缩消息:在压缩消息节点提取经验
    - 用户反馈:用户对结果的 helpful/harmful 评价

提取流程
    1. 识别知识类型
        根据内容判断是 user_profile / strategy / tool / definition / plan / usecase

    2. 结构化提取
        - 提取核心内容
        - 生成标签(category, domain 等)
        - 确定 scopes(基于执行上下文)
        - 设置 owner 和 visibility

    3. 持久化存储
        - 存入知识库(向量数据库 + 元数据)
        - 记录来源(trace_id, agent_id, timestamp)
        - 初始化评价(helpful=1, confidence=0.5)

实现位置(规划)
    - agent/trace/compaction.py: 压缩时提取经验
    - agent/tools/builtin/knowledge.py: save_knowledge 工具
    - agent/memory/knowledge_extractor.py: 知识提取逻辑

用户画像特殊处理

用户画像是一种特殊的知识类型(type=user_profile),具有以下特点:

获取方式
    - 持续性:在整个对话过程中持续积累
    - 多触发点:主动表达 > 任务完成 > 周期性总结
    - 渐进式:逐步完善,置信度逐渐提高

存储特点
    - type: user_profile
    - scopes: 通常包含 user:{user_id},可能包含 project:{project_id}
    - owner: user:{user_id}
    - tags.category: preference | background | habit | constraint

检索优先级
    - 在 Agent 启动时自动加载
    - 优先级高于其他类型的知识
    - 按 confidence 和 helpful 评分排序

示例
    {
        "id": "profile_001",
        "type": "user_profile",
        "task": "用户编码风格偏好",
        "tags": {
            "category": "preference",
            "domain": "coding_style"
        },
        "scopes": ["user:123", "project:456"],
        "owner": "user:123",
        "visibility": "shared",
        "content": "用户偏好使用 TypeScript 而非 JavaScript,注重类型安全",
        "source": {
            "agent_id": "general_assistant",
            "trace_id": "trace-xxx",
            "timestamp": "2026-03-03"
        },
        "eval": {
            "helpful": 5,
            "harmful": 0,
            "confidence": 0.9
        }
    }

存储结构(规划)

数据库表结构
    CREATE TABLE knowledge (
        id TEXT PRIMARY KEY,
        type TEXT NOT NULL,              -- user_profile | strategy | tool | ...
        task TEXT,
        tags JSON,
        scopes JSON,                     -- ["user:123", "project:456", ...]
        owner TEXT NOT NULL,             -- "user:123" | "agent:xxx"
        visibility TEXT,                 -- private | shared | org | public
        content TEXT,
        source JSON,
        eval JSON,
        embedding VECTOR(1536),          -- 向量检索
        created_at TIMESTAMP,
        updated_at TIMESTAMP
    );

    -- 索引
    CREATE INDEX idx_type ON knowledge(type);
    CREATE INDEX idx_owner ON knowledge(owner);
    CREATE INDEX idx_visibility ON knowledge(visibility);
    CREATE INDEX idx_scopes ON knowledge USING GIN(scopes);

文件系统结构
    /workspace/knowledge/
    ├── global/                   # 全局知识
    │   ├── tools.json
    │   ├── definitions.json
    │   └── plans.json
    │
    ├── agents/                   # Agent 经验
    │   ├── general_assistant/
    │   ├── crawler_ops/
    │   └── ...
    │
    └── users/                    # 用户画像
        ├── user_123/
        │   ├── profile.json      # 基础信息
        │   ├── preferences.json  # 偏好
        │   ├── habits.json       # 习惯
        │   └── constraints.json  # 约束
        └── ...

TODO

1. 实现知识存储接口(agent/memory/knowledge_store.py)
2. 实现知识检索逻辑(agent/memory/knowledge_retriever.py)
3. 实现 get_knowledge 工具(agent/tools/builtin/knowledge.py)
4. 实现 save_knowledge 工具(agent/tools/builtin/knowledge.py)
5. 在 Agent 启动时集成知识检索
6. 在 Goal focus 时集成知识检索
7. 在压缩消息时集成知识提取
8. 实现用户画像的特殊处理逻辑