Skip to main content

原子命令

ais-atomix 命令使用说明。

1. 命令体系总览

内置命令共 17 个,按分类如下。

分类命令别名
READls tree cat summary search skill render download_linkls 的别名 dirsearch 的别名 ssummary 的别名 sum
WRITEwrite mkdir mv cp rm publish init validate
EDITedit

2. 执行流程

AtomixCommandExecutor.execute(...) 的处理顺序:

  1. DefaultCommandParser 解析原始命令行为 CommandInvocation
  2. CommandRegistry 按命令名/别名查找 CommandDefinition
  3. 若带 --help-h,直接返回 HelpCommandResponse(不走业务 handler)。
  4. 按命令分类路由到 ReadCommandExecutorWriteCommandExecutorEditCommandExecutor
  5. 对应 *CommandParser 解析参数,生成 *CommandRequest
  6. BaseCategoryCommandExecutor 补充通用字段:
    • request.command
    • request.rawCommand
  7. CommandHandlerRegistry 获取命令 handler 并执行。
  8. 若成功响应且 outputContent 为空,使用 OutputRenderer 渲染。

3. 通用命令行规则

DefaultCommandParser + CommandLineTokenizer 决定:

  • kb 前缀可省略,kb lsls 都可解析。
  • 支持长参数 --key value--key=value
  • 支持短参数 flag(如 -l-n)。
  • 同一选项可重复出现,getOptionValues 可取多值(如 --must)。
  • 支持单引号、双引号、反斜杠转义。

4. 命令用法

4.1 READ 类命令

READ 类命令均为只读操作,不修改任何数据。


ls — 列出目录/仓库内容

  • 用法kb ls [path] [-l] [--sort name|updated|size] [--limit N]
  • 别名dir
  • 要点:最多 1 个位置参数。
  • 参数说明
参数类型必填说明
path位置参数目标路径(repo 或目录)
-lflag是否启用详细格式
--sortstring排序字段:name / updated / size
--limitint返回数量上限
  • RequestLsCommandRequest(path, longFormat, sortBy, limit)
  • ResponseLsCommandResponse(entries: List<Entry>)

每个 Entry 包含:

字段类型说明
codeString业务编码
pathString路径(含名称后缀)
typeString类型:仓库/文件夹/文件
createTimeInstant创建时间
modifiedTimeInstant修改时间
authorString作者
permissionsString权限描述

示例

# 列出根目录
kb ls

# 列出指定仓库的详细内容,按修改时间排序,限制 20 条
kb ls my-repo/docs -l --sort updated --limit 20

tree — 树形展示目录结构

  • 用法kb tree <repo/path/> [--depth N] [--limit N]
  • 要点:必须且只能有 1 个路径参数。
  • 参数说明
参数类型必填说明
path位置参数目标路径
--depthint展开深度
--limitint每层条目上限
  • RequestTreeCommandRequest(path, depth, limit)
  • ResponseTreeCommandResponse(root: TreeNode, renderedTree: String)

TreeNode 结构:

字段类型说明
nameString名称
pathString路径
typeString类型
truncatedboolean是否被截断
truncatedHintString截断提示
childrenList\<TreeNode>子节点

示例

# 展示仓库目录树,深度限制为 3
kb tree my-repo --depth 3 --limit 50

cat — 读取文件内容

  • 用法kb cat --name <repo/path.md> | --code <doc_code> [--range A:B | --head N | --tail N] [-n]
  • 要点--name--code 二选一;--range/--head/--tail 互斥。
  • 参数说明
参数类型必填说明
--namestring二选一通过路径读取
--codestring二选一通过文档 code 读取
--rangestring行范围 A:B,仅此一项有效
--headint读取前 N 行,与 --range/--tail 互斥
--tailint读取后 N 行,与 --range/--head 互斥
-nflag显示行号
  • RequestCatCommandRequest(name, code, lineNumbers, head, tail, range)
  • ResponseCatCommandResponse(code, name, path, type, createTime, modifiedTime, author, content: List<String>)

示例

# 读取文件并显示行号
kb cat --name my-repo/docs/readme.md -n

# 读取文件的第 100 到 200 行
kb cat --name my-repo/docs/readme.md --range 100:200

# 通过 code 读取文件的前 50 行
kb cat --code abc123 --head 50

summary — 读取文件摘要

  • 用法kb summary --name <path> | --code <doc_code>
  • 别名sum
  • 要点--name--code 二选一。
  • 参数说明
参数类型必填说明
--namestring二选一通过路径读取摘要
--codestring二选一通过文档 code 读取摘要
  • RequestSummaryCommandRequest(name, code)
  • ResponseSummaryCommandResponse(code, name, type, createTime, modifiedTime, author, content: List<String>)

示例

# 通过路径获取文件摘要
kb summary --name my-repo/docs/readme.md

# 通过 code 获取摘要(使用别名 sum)
kb sum --code abc123

search — 搜索文档内容

  • 用法kb search "query" [scope] [--topk N] [--repo ...] [--path ...] [--mode lex|sem|hybrid] ...
  • 别名s
  • 搜索模式--lex / --sem / --hybrid--mode lex|sem|hybrid,默认 LEX
  • 参数说明
参数类型必填说明
query位置参数查询内容
--topkint返回 TopK 结果数
--offsetint分页偏移量
--pageint页码
--page-sizeint每页大小
--repostringrepo 名称
--pathstringpath 前缀过滤
--filestring文件 glob 过滤
--doc-codestring单文档 code
--codesstring多文档 codes
--repo-codestringrepo code
--muststringmust 条件(可重复)
--must-notstringmust-not 条件(可重复)
--modestring搜索模式:lex/sem/hybrid
--summary-onlyflag仅搜摘要
--title-onlyflag仅搜标题
--heading-onlyflag仅搜小标题
  • RequestSearchCommandRequest(query, topk, offset, page, pageSize, repo, path, file, docCode, codes, repoCode, must, mustNot, mode, summaryOnly, titleOnly, headingOnly)
  • ResponseSearchCommandResponse(hits: List<SearchHit>)

每个 SearchHit 包含:

字段类型说明
codeString文档 code
nameString文件名
typeString类型
contentString命中文本片段
fullPathString全路径
pageStringpage/summary 标识

示例

# 语义搜索,返回 Top 5
kb search "agent memory" --mode sem --topk 5

# 在指定 repo 中搜索,带 must 条件
kb search "部署指南" --repo my-repo --must "标签:重要"

# 搜索标题
kb search "API 文档" --title-only

skill — 查看 Skill 知识库信息

  • 用法kb skill <skill_code>kb skill -g <sub_doc_code>
  • 要点:普通模式与 -g 子文档模式二选一。
  • 参数说明
参数类型必填说明
skillCode位置参数技能 code
-g / --getstring子文档 code(进入子文档读取模式)
  • RequestSkillCommandRequest(skillCode, subDocCode)
  • ResponseSkillCommandResponse(skillCode, skillName, skillContent, root, renderedTree, subDoc)
字段类型说明
skillCodeString技能 code
skillNameString技能名称
skillContentList\<String>SKILL.md 内容行
rootSkillTreeNode目录树根节点
renderedTreeString终端风格渲染文本(可选)
subDocSubDoc子文档内容(-g 模式)

SkillTreeNode 结构:

字段类型说明
nameString名称
pathString路径
typeString类型
codeString文档/目录 code
truncatedboolean是否被截断
truncatedHintString截断提示
childrenList\<SkillTreeNode>子节点

示例

# 查看知识库概览
kb skill my-skill-code

# 获取某个子文档内容
kb skill my-skill-code -g sub-doc-code

render — 渲染文档

  • 用法kb render <doc_code,doc_code,...>kb render --codes <c1,c2,...>
  • 要点:位置参数与 --codes 不能同时使用。
  • 参数说明
参数类型必填说明
codes位置参数二选一逗号分隔的文档编码
--codesstring二选一逗号分隔的文档编码
  • RequestRenderCommandRequest(codes: List<String>)
  • ResponseRenderCommandResponse(items, failCount, failCodes)
字段类型说明
itemsList\<Item>渲染成功的文档列表
failCountInteger失败数量
failCodesList\<String>失败文档编码

每个 Item 包含:

字段类型说明
codeString文档编码
spaceCodeString所属空间编码
titleString文档标题
urlString文档访问链接

示例

# 渲染单个文档
kb render doc-code-1

# 渲染多个文档
kb render code1,code2,code3

# 使用 --codes 选项
kb render --codes code1,code2

4.2 WRITE 类命令

WRITE 类命令为写操作,会修改数据。


write — 写入/创建文件

  • 用法kb write --name <path> | --repo-code <code> --path <path> --content <text> | --content-url <url> [--status draft|publish] [--if-match <etag>]
  • 要点
    • --name--repo-code/--path 二选一。
    • --content--content-url 二选一。
  • 参数说明
参数类型必填说明
--namestring二选一文件路径
--repo-codestring二选一repo code(需搭配 --path
--pathstring搭配使用repo 内路径
--contentstring二选一写入内容
--content-urlstring二选一写入内容 URL
--statusstringdraft / publish
--messagestring备注信息
--if-matchstring条件匹配 etag
  • RequestWriteCommandRequest(name, repoCode, path, content, contentUrl, status, message, ifMatch)
  • ResponseWriteCommandResponse(docCode, path, status, linesWritten, repoCode)

示例

# 通过路径写入文件
kb write --name my-repo/docs/readme.md --content "# Hello World"

# 通过 repo-code + path 写入,并指定状态
kb write --repo-code repo-123 --path docs/readme.md --content-url https://example.com/content.md --status publish

# 带版本检查的写入
kb write --name my-repo/docs/readme.md --content "updated" --if-match "etag-abc"

mkdir — 创建目录

  • 用法kb mkdir <repo/dir/>kb mkdir --repo-code <code> --path <dir/> [-p|--parents] [--exist-ok true|false]
  • 要点
    • 路径参数模式与 --repo-code/--path 模式二选一。
    • parents 默认 true
    • existOk 默认 true
  • 参数说明
参数类型必填说明
name位置参数二选一目录路径
--repo-codestring二选一repo code
--pathstring搭配使用repo 内路径
-p / --parentsflag是否递归创建父目录(默认 true)
--exist-okboolean已存在是否忽略(默认 true)
--messagestring备注信息
  • RequestMkdirCommandRequest(name, repoCode, path, parents, existOk, message)
  • ResponseMkdirCommandResponse(repoCode, path, code, created)

示例

# 创建目录
kb mkdir my-repo/docs/new-folder/

# 递归创建(默认行为)
kb mkdir --repo-code repo-123 --path docs/a/b/c/

# 已存在时报错
kb mkdir my-repo/docs/ --exist-ok false

mv — 移动/重命名文件

  • 用法kb mv <src> <dst>kb mv --from <src> --to <dst>kb mv --doc-code <code> --to <dst>
  • 要点--doc-code 模式下不能再给源路径;支持 --if-match
  • 参数说明
参数类型必填说明
from位置参数三选一源路径(与 --doc-code 互斥)
--fromstring三选一源路径
--doc-codestring三选一文档 code
--tostring目标路径
--if-matchstring条件匹配 etag
--messagestring备注信息
  • RequestMvCommandRequest(from, to, docCode, ifMatch, message)
  • ResponseMvCommandResponse(docCode, oldPath, newPath, moved)

示例

# 使用位置参数移动
kb mv my-repo/docs/old.md my-repo/docs/new.md

# 通过 doc-code 移动
kb mv --doc-code doc-123 --to my-repo/docs/new.md

# 带版本检查的移动
kb mv --from old.md --to new.md --if-match "etag-abc"

cp — 复制文件

  • 用法kb cp --from <src> --to <dst> [--recursive] [--exist-ok true|false] [--publish true|false]kb cp --doc-code <code> --to <dst> ...
  • 要点--from--doc-code 二选一,--to 必填。
  • 参数说明
参数类型必填说明
--fromstring二选一源路径(与 --doc-code 互斥)
--doc-codestring二选一源文档 code
--tostring目标路径
--recursiveflag目录复制是否递归
--exist-okboolean目标存在是否允许
--publishboolean复制后是否发布
  • RequestCpCommandRequest(from, docCode, to, recursive, existOk, publish)
  • ResponseCpCommandResponse(payload: Map<String, Object>)

示例

# 复制文件
kb cp --from my-repo/docs/a.md --to my-repo/docs/b.md

# 通过 doc-code 复制并发布
kb cp --doc-code doc-123 --to my-repo/docs/copy.md --publish true

rm — 删除文件

  • 用法kb rm <repo/path.md>kb rm --doc-code <code> [--if-match <etag>]
  • 要点:至少给一个目标(路径或 doc-code)。
  • 参数说明
参数类型必填说明
name位置参数二选一文件路径
--doc-codestring二选一文档 code
--if-matchstring条件匹配 etag
  • RequestRmCommandRequest(name, docCode, ifMatch)
  • ResponseRmCommandResponse(docCode, path, oldStatus, newStatus)

示例

# 通过路径删除
kb rm my-repo/docs/old-file.md

# 通过 doc-code 删除,带版本检查
kb rm --doc-code doc-123 --if-match "etag-abc"

publish — 发布文件

  • 用法kb publish --doc-code <code> | --name <path> [--if-match <etag>]
  • 要点--doc-code--name 二选一。
  • 参数说明
参数类型必填说明
--doc-codestring二选一文档 code
--namestring二选一文件路径
--if-matchstring条件匹配 etag
  • RequestPublishCommandRequest(docCode, name, ifMatch)
  • ResponsePublishCommandResponse(docCode, path, published, publishedAt)

示例

# 通过 doc-code 发布
kb publish --doc-code doc-123

# 通过路径发布
kb publish --name my-repo/docs/draft.md

# 带版本检查
kb publish --doc-code doc-123 --if-match "etag-abc"

init — 初始化 Skill 知识库

  • 用法kb init <skill_name>
  • 要点skill_name 为必填位置参数。
  • 参数说明
参数类型必填说明
skillName位置参数skill 名称
  • RequestInitCommandRequest(skillName)
  • ResponseInitCommandResponse
字段类型说明
skillCodeString知识库 code
skillNameStringskill 名称
initializedboolean是否初始化成功
createdAtInstant创建时间

示例

# 初始化一个新知识库
kb init my-new-skill

validate — 校验 Skill 知识库

  • 用法kb validate <skill_code>
  • 要点skill_code 为必填位置参数。
  • 参数说明
参数类型必填说明
skillCode位置参数skill 知识库 code
  • RequestValidateCommandRequest(skillCode)
  • ResponseValidateCommandResponse
字段类型说明
skillCodeString被验证的 code
validboolean是否通过验证
errorsList\<String>错误列表
warningsList\<String>警告列表
validatedAtInstant验证时间

示例

# 校验知识库结构
kb validate skill-code-123

4.3 EDIT 类命令


edit — 编辑文件(Patch 模式)

  • 用法kb edit --patch <patch-body> [--help]
  • 要点
    • patch 必须包含 *** Begin Patch*** End Patch
    • patch 头必须显式声明 --name--code(例如 *** Update File --name: ...)。
    • 也可通过 CommandExecutionContext.body 传 patch。
  • 参数说明
参数类型必填说明
--patchstringpatch body 文本
--helpflag查看用法
  • RequestEditCommandRequest(patchBody, patchMeta: EditPatchMeta)
  • ResponseEditCommandResponse
字段类型说明
pathString目标路径
codeString目标 doc code
oldEtagString修改前版本标识
newEtagString修改后版本标识
appliedHunksint已应用 hunk 数

Patch 格式

*** Begin Patch
*** Update File --name: src/demo.txt
@@ -1,1 +1,2 @@
-line1
+line1 updated
+line2
*** End Patch

示例

# 更新已有文件
kb edit --patch "*** Begin Patch
*** Update File --name: my-repo/docs/readme.md
@@ -1,1 +1,1 @@
-old content
+new content
*** End Patch"

# 新增文件
kb edit --patch "*** Begin Patch
*** Add File --name: my-repo/docs/new-file.md
+# New File
+Some content here
*** End Patch"

5. API 接口

执行Atomix命令

接口地址POST /kb/atomix/execute

权限要求atomix_command READ

请求参数

参数名类型必填说明
commandString命令文本,例如:kb ls demo-repo/docs

请求示例

{
"command": "kb ls demo-repo/docs -l --sort updated --limit 20"
}

响应示例

{
"code": 8200,
"message": "操作成功",
"data": {
"success": true,
"command": "ls",
"data": {
"outputContent": "..."
},
"errorCode": null,
"errorMessage": null,
"errorDetails": {},
"operation_source": "demo-repo/docs",
"operation_target": null
}
}

curl 示例

curl -X POST "${domain}/kb/atomix/execute" \
-H "Authorization: Bearer tk_xxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"command": "kb cat --name demo-repo/docs/intro.md --head 20 -n"
}'

6. 错误码

框架级错误码:

错误码说明
invalid_args参数解析失败
unknown_command命令不存在
not_implemented未注册该命令 handler

7. 命令速查表

命令分类用途必填参数
lsREAD列出目录/仓库内容无(可选 path)
treeREAD树形展示目录结构path
catREAD读取文件内容--name--code
summaryREAD读取文件摘要--name--code
searchREAD搜索文档内容query
skillREAD查看 Skill 知识库信息skillCode
renderREAD渲染文档codes
download_linkREAD获取文件下载链接--code
writeWRITE写入/创建文件--name + --content--repo-code + --path + --content
mkdirWRITE创建目录path 或 --repo-code + --path
mvWRITE移动/重命名文件src + dst 或 --doc-code + --to
cpWRITE复制文件--from--doc-code + --to
rmWRITE删除文件path 或 --doc-code
publishWRITE发布文件--doc-code--name
initWRITE初始化 Skill 知识库skillName
validateWRITE校验 Skill 知识库skillCode
editEDIT编辑文件(Patch 模式)--patch