IMA笔记和知识库管理技能。
~/.config/ima/client_id (可选,IMA API 客户端 ID)~/.config/ima/api_key (可选,IMA API 密钥)ima.qq.com (主要 API 服务)*.myqcloud.com (腾讯云 COS 文件上传服务)详细权限说明请参阅 PERMISSIONS.md,包括:
用户意图模块脚本搜索/浏览/读取笔记、追加到笔记notesnotes/scripts/notes-ops.cjs上传文件、添加网页、搜索/管理知识库knowledge-baseknowledge-base/scripts/kb-ops.cjs
用户说的实际意图路由"搜索我的笔记"搜索笔记notes → search"新建一篇笔记"创建笔记notes → create"追加到XX笔记"追加内容notes → append"上传文件到知识库"上传文件kb (多步骤)"添加到知识库"添加网页/笔记kb → add-urls/add-note"搜索知识库内容"知识库搜索kb → search
用户说的实际意图路由"添加到知识库XX的笔记YY"追加到笔记notes → append"把这篇笔记添加到知识库"关联笔记到知识库kb → add-note"帮我记一下"需确认notes → 先询问
语言/环境脚本Node.jsscripts/ima-api.cjsPythonscripts/ima-api.py
bash
node notes/scripts/notes-ops.cjs search --query "关键词"
node notes/scripts/notes-ops.cjs search --query "关键词" --type content
node notes/scripts/notes-ops.cjs list-folders
node notes/scripts/notes-ops.cjs list-notes --folder-id <id>
node notes/scripts/notes-ops.cjs read --doc-id <id>
node notes/scripts/notes-ops.cjs create --content "# 标题\n\n正文"
node notes/scripts/notes-ops.cjs append --doc-id <id> --content "\n\n补充内容"
bash
node knowledge-base/scripts/kb-ops.cjs list-kbs
node knowledge-base/scripts/kb-ops.cjs list --kb-id <id>
node knowledge-base/scripts/kb-ops.cjs search --kb-id <id> --query "关键词"
node knowledge-base/scripts/kb-ops.cjs add-urls --kb-id <id> --urls "https://..."
node knowledge-base/scripts/kb-ops.cjs add-note --kb-id <id> --doc-id <笔记ID> --title "标题"
bash
node knowledge-base/scripts/preflight-check.cjs --file "/path/report.pdf"
node knowledge-base/scripts/check-repeated-names.cjs --kb-id "kb_xxx" --names "report.pdf:1"
node knowledge-base/scripts/create-media.cjs --kb-id "kb_xxx" --file-name "report.pdf" --file-size 1048576 --content-type "application/pdf" --file-ext "pdf"
node knowledge-base/scripts/cos-upload.cjs --file "/path/report.pdf" ...
node knowledge-base/scripts/add-knowledge.cjs --kb-id "kb_xxx" --media-type 1 --title "报告" --media-id "media_xxx" --cos-key "xxx" --file-size 1048576 --file-name "report.pdf"
获取: https://ima.qq.com/agent-interface
配置(二选一):
bash
# 环境变量
export IMA_OPENAPI_CLIENTID="id"
export IMA_OPENAPI_APIKEY="key"
# 配置文件(自动加载)
mkdir -p ~/.config/ima
echo "id" > ~/.config/ima/client_id
echo "key" > ~/.config/ima/api_key
码含义处理0成功—110001参数非法检查参数110010网络错误可重试110011逻辑错误不可重试110021频控降低频率110030无权限确认权限
响应字段为
code/msg,不是retcode/errmsg
参数说明--json输出完整JSON响应--help显示帮助信息
适用于:list、search等接口
cursor: ""is_end: false =还有更多next_cursor 继续is_end=true 停止问题解决方案search_note_book空标题报错query_info.title不可为空import_urls根目录处理folder_id省略,不要传kb_id笔记搜索必须带关键词query_info至少一个非空字段
text
scripts/
ima-api.cjs, ima-api.py
notes/scripts/
notes-ops.cjs, notes-ops.py
knowledge-base/scripts/
kb-ops.cjs, kb-ops.py
preflight-check.cjs, check-repeated-names.cjs
create-media.cjs, cos-upload.cjs, add-knowledge.cjs
bash
# 设置环境变量
export IMA_OPENAPI_CLIENTID="your_client_id"
export IMA_OPENAPI_APIKEY="your_api_key"
# 或创建配置文件
mkdir -p ~/.config/ima
echo "your_client_id" > ~/.config/ima/client_id
echo "your_api_key" > ~/.config/ima/api_key
入参:
参数必需类型说明--query是string搜索关键词--type否string搜索类型: title(标题) 或 content(内容),默认 title``--start否int起始位置,默认 0--end否int结束位置,默认 20--json否flag输出完整JSON响应
出参(JSON结构):
json
{
"is_end": true, // 是否最后一页
"total_hit_num": "6", // 总命中数
"docs": [ // 笔记列表
{
"doc": {
"basic_info": {
"docid": "7439576008228970",
"title": "笔记标题",
"summary": "笔记摘要",
"create_time": "1773733141678",
"modify_time": "1773758324793",
"status": 0,
"folder_id": "",
"folder_name": "",
"summary_style": {}
}
}
}
]
}
示例:
bash
# 搜索标题包含"工作"的笔记
python3 notes/scripts/notes-ops.py search --query "工作"
# 搜索内容包含"会议"的笔记,输出JSON
python3 notes/scripts/notes-ops.py search --query "会议" --type content --json
# 分页搜索
python3 notes/scripts/notes-ops.py search --query "项目" --start 0 --end 10
入参:
参数必需类型说明--cursor否string分页游标,默认 "0"--limit否int返回数量,默认 20--json否flag输出完整JSON响应
出参(JSON结构):
json
{
"cursor": "next_cursor",
"has_more": false,
"folder_list": [
{
"folder_id": "folder_xxx",
"folder_name": "文件夹名称",
"create_time": "1773733141678",
"modify_time": "1773758324793"
}
]
}
入参:
参数必需类型说明--folder-id否string文件夹ID,不指定则列出所有笔记--cursor否string分页游标,默认 ""--limit否int返回数量,默认 20--json否flag输出完整JSON响应
入参:
参数必需类型说明--doc-id是string笔记文档ID--format否int格式:0=文本(默认),1=HTML--json否flag输出完整JSON响应
出参(JSON结构):
json
{
"doc": {
"basic_info": {
"docid": "7439576008228970",
"title": "笔记标题",
"summary": "摘要",
"create_time": "1773733141678",
"modify_time": "1773758324793"
},
"content": "笔记完整内容"
}
}
入参:
参数必需类型说明--title是string笔记标题--body是string笔记内容--folder-id否string目标文件夹ID--json否flag输出完整JSON响应
入参:
参数必需类型说明--doc-id是string笔记文档ID--body是string要追加的内容--json否flag输出完整JSON响应
入参:
参数必需类型说明--query否string搜索关键词--json否flag输出完整JSON响应
出参(JSON结构):
json
{
"info_list": [
{
"id": "64VbjCXIm3XittrNBDZxkwI5I4KV9suC5LQYa6wGuDY=",
"name": "知识库名称",
"cover_url": "https://ima-media-pub-prod.image.myqcloud.com/..."
}
]
}
入参:
参数必需类型说明--kb-id是string知识库ID--json否flag输出完整JSON响应
入参:
参数必需类型说明--kb-id是string知识库ID--query否string搜索关键词--cursor否string分页游标,默认 ""--limit否int返回数量,默认 50--json否flag输出完整JSON响应
出参(JSON结构):
json
{
"is_end": true,
"next_cursor": "",
"doc_list": [
{
"doc_id": "doc_xxx",
"title": "文档标题",
"summary": "文档摘要",
"create_time": "1773733141678",
"modify_time": "1773758324793",
"media_type": "document"
}
]
}
入参:
参数必需类型说明--kb-id是string知识库ID--query是string搜索关键词--cursor否string分页游标,默认 ""--limit否int返回数量,默认 20--json否flag输出完整JSON响应
入参:
参数必需类型说明--name是string知识库名称--desc否string知识库描述--json否flag输出完整JSON响应
入参:
参数必需类型说明--kb-id是string知识库ID--json否flag输出完整JSON响应
入参:
参数必需类型说明--kb-id是string知识库ID--title是string笔记标题--body是string笔记内容--json否flag输出完整JSON响应
入参:
参数必需类型说明--kb-id是string知识库ID--urls是string网页URL,多个用逗号分隔--json否flag输出完整JSON响应
入参:
参数必需类型说明--urls是string网页URL,多个用逗号分隔--folder-id否string目标文件夹ID,不指定则导入到根目录--json否flag输出完整JSON响应
bash
python3 scripts/ima-api.py --path <API路径> --body <JSON字符串> [--json]
接口路径说明搜索笔记openapi/note/v1/search_note_book搜索笔记列出知识库openapi/wiki/v1/search_knowledge_base获取知识库列表获取知识库内容openapi/wiki/v1/search_knowledge搜索知识库内容
bash
# 搜索笔记
python3 scripts/ima-api.py --path openapi/note/v1/search_note_book \
--body '{"search_type":0,"query_info":{"title":"工作"},"start":0,"end":20}'
# 列出知识库
python3 scripts/ima-api.py --path openapi/wiki/v1/search_knowledge_base \
--body '{"limit":50}'
错误码含义处理建议0成功-110001参数非法检查参数格式110010网络错误可重试110011逻辑错误检查业务逻辑110021频控降低调用频率110030无权限确认权限设置
--help 查看参数格式--json 参数获取完整响应bash
# 搜索笔记
python3 notes/scripts/notes-ops.py search --query "关键词" --json
# 读取笔记
python3 notes/scripts/notes-ops.py read --doc-id "doc_xxx" --json
# 创建笔记
python3 notes/scripts/notes-ops.py create --title "标题" --body "内容"
bash
# 列出知识库
python3 knowledge-base/scripts/kb-ops.py list-kbs --json
# 搜索知识库
python3 knowledge-base/scripts/kb-ops.py search --kb-id "kb_xxx" --query "关键词" --json
# 创建知识库笔记
python3 knowledge-base/scripts/kb-ops.py create-note --kb-id "kb_xxx" --title "标题" --body "内容"