2026-03-05
按照 agent/docs/knowledge.md 定义,完成以下字段调整:
旧结构 → 新结构:
scenario → task(任务描述)tags_type → types(支持多选数组)tags(JSON 对象,业务标签)scopes(数组,可见范围)owner(所有者)source_* 字段 → source(嵌套对象)eval_* 和 metrics_* 字段 → eval(嵌套对象)message_id新数据结构示例:
{
"id": "knowledge-xxx",
"message_id": "msg-xxx",
"types": ["strategy", "tool"],
"task": "任务描述",
"tags": {"category": "preference"},
"scopes": ["org:cybertogether"],
"owner": "agent:research_agent",
"content": "知识内容",
"source": {
"name": "资源名称",
"category": "exp",
"urls": ["https://example.com"],
"agent_id": "research_agent",
"submitted_by": "user@example.com",
"timestamp": "2026-03-05T12:00:00Z"
},
"eval": {
"score": 4,
"helpful": 5,
"harmful": 0,
"confidence": 0.9,
"helpful_history": [],
"harmful_history": []
},
"created_at": "2026-03-05T12:00:00Z",
"updated_at": "2026-03-05T12:00:00Z"
}
文件: knowhub/server.py
types, tags, scopes, source, evaltags_type, scenario, source_*, eval_*, metrics_*)knowhub.db.backup-20260305文件: knowhub/server.py
所有 knowledge API 已更新:
POST /api/knowledge - 保存知识(使用新结构)GET /api/knowledge/search - 搜索知识(参数 tags_type → types)GET /api/knowledge - 列出知识(参数 tags_type → types,新增 scopes)GET /api/knowledge/{id} - 获取知识(返回新结构)PUT /api/knowledge/{id} - 更新知识(使用嵌套 eval 结构)POST /api/knowledge/batch_update - 批量更新(使用嵌套 eval 结构)POST /api/knowledge/slim - 知识瘦身(使用新结构)文件: knowhub/skill/cli.py
完全重写 CLI 工具以匹配新的数据结构:
# 搜索知识
python -m knowhub.skill.cli search "查询内容" --types strategy
# 保存知识
python -m knowhub.skill.cli save \
--task "任务描述" \
--content "知识内容" \
--types strategy,tool \
--tags '{"category":"preference"}' \
--scopes org:cybertogether
# 列出知识
python -m knowhub.skill.cli list --limit 10 --types strategy
# 更新知识
python -m knowhub.skill.cli update knowledge-xxx \
--score 5 \
--helpful-case "有效案例"
# 批量更新
python -m knowhub.skill.cli batch-update --file feedback.json
# 知识瘦身
python -m knowhub.skill.cli slim --model google/gemini-2.0-flash-001
文件: agent/tools/builtin/knowledge.py
更新所有工具函数:
knowledge_search:
tags_type → typestask 而不是 scenarioknowledge_save:
scenario → tasktags_type → typestags, scopes, owner, source_name, source_category, submitted_byscopes 默认 ["org:cybertogether"]owner 默认 f"agent:{agent_id}"knowledge_list:
tags_type → typesscopesknowledge_slim:
google/gemini-2.0-flash-001已删除/备份:
agent/tools/builtin/experience.py → experience.py.old(旧的经验系统)agent/tools/builtin/__init__.py - 删除 get_experience 导入和导出agent/core/runner.py - 删除 experiences_path 参数和 _load_experiences() 方法agent/core/runner.py - 从 BUILTIN_TOOLS 列表中删除 get_experience所有修改前的文件都已备份:
knowhub/server.py.oldknowhub/skill/cli.py.oldagent/tools/builtin/knowledge.py.oldagent/tools/builtin/experience.py.oldknowhub.db.backup-20260305cd knowhub
python server.py
# 保存知识
python -m knowhub.skill.cli save \
--task "测试任务" \
--content "测试内容" \
--types strategy
# 搜索知识
python -m knowhub.skill.cli search "测试"
# 列出知识
python -m knowhub.skill.cli list
在 agent 代码中调用:
from agent.tools.builtin.knowledge import knowledge_save, knowledge_search
# 保存知识
await knowledge_save(
task="测试任务",
content="测试内容",
types=["strategy"],
agent_id="test_agent"
)
# 搜索知识
await knowledge_search(
query="测试",
types=["strategy"]
)
默认值设置位置: 按照用户要求,默认 org (scopes) 和 owner 在 agent 代码中设置,不在服务器端设置。
数据库重建: 旧数据库已备份,新数据库为空。如需迁移旧数据,需要编写迁移脚本。
完全移除旧系统: 已删除所有旧的经验系统代码(experience.py, get_experience 等),不保留兼容接口。
环境变量: 确保设置 OPEN_ROUTER_API_KEY 和 KNOWHUB_API。
已修改:
knowhub/server.py - KnowHub Server(数据库 + API)knowhub/skill/cli.py - CLI 工具agent/tools/builtin/knowledge.py - Agent 工具集成agent/tools/builtin/__init__.py - 删除旧的 experience 导入agent/core/runner.py - 删除 experiences_path 和相关代码已删除/备份:
agent/tools/builtin/experience.py → experience.py.old已备份:
knowhub/server.py.oldknowhub/skill/cli.py.oldagent/tools/builtin/knowledge.py.oldknowhub.db.backup-20260305新增:
.refactor-knowledge-complete.md - 本文档