CLI 终端指南¶
Agentica CLI 是一个功能完整的 AI 编程助手终端,基于 DeepAgent product preset 构建。它内置了文件读写、代码执行、网页搜索、子任务委派等 20+ 工具,支持多轮对话、会话持久化、技能系统和 IDE 集成。

快速启动¶
# 交互模式(默认,开启 DeepAgent 产品预设)
agentica
# 单次查询,执行完直接退出
agentica --query "用 Python 写一个快速排序"
# 指定模型提供商和模型
agentica --model_provider zhipuai --model_name glm-4.7-flash
agentica --model_provider openai --model_name gpt-4o
agentica --model_provider deepseek --model_name deepseek-chat
agentica --model_provider ollama --model_name llama3.1
完整参数说明¶
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
--query / -q |
str | -- | 单次查询,执行后退出 |
--profile |
str | -- | 本次会话改用某个已保存的 profile(不写 config.yaml);换 provider 只能用它 |
--model_provider |
str | zhipuai |
模型提供商(见下表) |
--model_name |
str | glm-4.7-flash |
模型名称 |
--base_url |
str | -- | 自定义 API 地址(代理/私有部署) |
--api_key |
str | -- | 直接传入 API Key(覆盖环境变量) |
--max_tokens |
int | -- | 最大输出 token 数 |
--temperature |
float | -- | 温度参数(0-2,越高越发散) |
--work_dir |
str | CWD | 工作目录(文件操作基准路径) |
--workspace |
str | ~/.agentica/workspace |
Workspace 持久化目录 |
--no-workspace |
flag | -- | 禁用 Workspace(不注入长期记忆) |
--tools |
list | -- | 额外启用的工具(追加到内置工具) |
--enable-skills |
flag | -- | 启用 Skills 系统 |
--debug |
int | 0 |
调试级别(1=启用,显示内部日志) |
支持的模型提供商¶
agentica --model_provider openai --model_name gpt-4o
agentica --model_provider azure --model_name gpt-4o
agentica --model_provider zhipuai --model_name glm-4.7-flash # 免费
agentica --model_provider deepseek --model_name deepseek-chat
agentica --model_provider moonshot --model_name moonshot-v1-128k
agentica --model_provider ark --model_name doubao-1.5-pro-32k
agentica --model_provider ollama --model_name llama3.1 # 本地,无需 API Key
OpenAI Responses API¶
Responses API 通过配置文件选择,不需要改变 CLI 的启动方式:
# ~/.agentica/config.yaml
active_profile: responses
profiles:
responses:
model_provider: openai
model_name: gpt-5.6-sol
wire_api: responses
reasoning: high
max_tokens: 4096
wire_api: responses 只能与 model_provider: openai 配合,推理强度使用 reasoning,不能使用 Chat Completions 的 reasoning_effort。完整参数和辅助模型配置见 OpenAI Responses API。
临时换一个 profile¶
--profile 是换 provider 的唯一命令行方式:--model_name 只在当前 endpoint 内换模型,base_url 和 key 仍然来自当前 profile。名字不存在会直接报错并列出可用的,不会悄悄退回默认。想永久切换用会话里的 /model <profile>(写项目级覆盖)。
状态栏和 /status 显示的 profile 名以本次会话实际用的为准:--profile 显示被指定的那个(标 flag),而当 --model_name 覆盖掉了 profile 的模型时不再显示 profile 名——此时没有哪个 profile 能描述正在跑的东西。
内置工具¶
CLI 模式下,DeepAgent 自动装载以下工具(无需 --tools 指定):
| 工具 | 功能 |
|---|---|
read_file |
读取文件内容(支持分页,避免大文件撑爆上下文) |
write_file |
创建或完整覆写文件 |
edit_file |
精确字符串替换(比 write_file 更安全,适合小改动) |
apply_patch |
一次补丁新增、更新或删除多个文件 |
ls |
列出目录内容 |
glob |
文件模式匹配(**/*.py) |
grep |
内容搜索(基于 ripgrep) |
execute |
执行 Shell 命令(git、pytest、pip 等) |
web_search |
网页搜索 |
fetch_url |
抓取网页内容 |
write_todos |
创建任务清单(追踪多步骤工作) |
task |
启动子 Agent 处理复杂子任务 |
ask_user_question |
请求用户确认或输入(Human-in-the-loop) |
save_memory |
保存记忆到 Workspace |
search_memory |
检索 Workspace 中的历史记忆 |
追加额外工具¶
# 启用 DuckDuckGo 搜索
agentica --tools duckduckgo
# 启用多个工具
agentica --tools duckduckgo arxiv wikipedia
# 完整工具列表(100+ 工具)
agentica --help
可用工具名(--tools 参数值):
cogvideo, cogview, dalle, image_analysis, ocr, video_analysis,
arxiv, baidu_search, dblp, duckduckgo, search_bocha, search_exa, search_serper, wikipedia,
browser, jina, newspaper, url_crawler,
calculator, code, shell, sql, weather, yfinance,
mcp, skill, ...
交互模式¶
启动后进入 Rich 渲染的交互式终端,支持 Markdown、代码高亮、工具调用展示。
文件引用:@filename¶
在消息中用 @ 引用文件,文件内容会自动注入到上下文:
> @main.py 这段代码有什么性能问题?
> @README.md 把这个文档翻译成英文
> @tests/test_agent.py 为什么这个测试会失败?
> @/absolute/path/to/file.py 分析这个文件
支持路径补全:输入 @ 后按 Tab 自动补全文件路径。支持相对路径和绝对路径。
多行输入¶
按 Esc + Enter 输入多行内容,适合粘贴代码块:
> def bubble_sort(arr):
for i in range(len(arr)):
for j in range(len(arr)-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
这段代码有 bug 吗?
斜杠命令¶
在交互模式中,以 / 开头的输入触发内置命令:
/help¶
显示所有可用命令列表和说明。
/tools¶
列出当前 Agent 已装载的所有工具及其描述:
> /tools
read_file - Read a file from the filesystem
write_file - Write content to a file
execute - Execute shell commands
...
/skills¶
列出当前加载的所有技能:
/agents¶
查看和管理 Markdown 定义的 Subagent:
create 会生成项目级 .agentica/agents/<name>.md。编辑其中的 system prompt、工具权限、模型层级和预算后,执行 /agents reload 热重载。用户级 ~/.agentica/agents/*.md、覆盖顺序及完整示例见 Subagent 文档。
/list-agents / /peers¶
列出本机其他正在跑的 CLI 会话(跨终端消息)。每条包含:
- addressable name(如
nlp-5f,send_message默认用这个) - peer id、
session_id(也可用前缀寻址) - cwd,以及带 hash 后缀的
project存储目录(如-apdcephfs-...-nlp-6115aec9) session_log(<project>/<session_id>.jsonl)、CLIlog_file(如~/.agentica/logs/20260809-80403.log)、workspace/memory(MEMORY.md)路径- 当前 working on
消息本身仍是短纯文本;列出路径是为了需要时自行去读对方 transcript / 运行时日志 / 长期记忆。log_file 通常比翻 conversation 更快定位另一会话刚发生的错误与工具痕迹。
自己发消息用 /send-message <name|id> <text>(别名 /send)。
注入到对方会话时,回复地址是对方的短名字(如 agentica-73),不是 opaque 的 peer id;本会话自己的短名字可在 /status 的 Peer: 行确认。/send-message(用户转发)在收件端按「用户亲口说的」采纳;agent 发的消息即使正文自称用户决定,也不构成授权。
这个通道用来传递结论、交接信息,不是让两个 agent 讨论细节的地方。刹车不是「一段对话最多几条」这种硬计数——那会在一次正常的多轮交接中途把消息掐掉,而被拒的往往正是你刚吩咐的那句。真正不该发生的是把同一件事再说一遍:同一段文字(忽略大小写和空白差异)在 5 分钟内重复发给同一个对端会被拒绝;同一对端 5 分钟内超过 20 条也会被拒绝。两个限制都只按「对端」分别计算,同时和三个会话协作不受影响。
这两个限制只约束无人值守的循环,不约束你:你在本终端敲任何一行(包括「给 temp-30 发条消息」这类指令)都会立即清空计数,对端用 /send-message 转发过来的消息同样清空。所以不会出现「你让 agent 发消息、却被限制拦住」的情况。
委托任务给另一个 CLI(delegate)¶
一个交互会话可以把整块工作丢给另一个 agentica 进程去做:它有自己的上下文窗口、自己的模型、自己的工作目录,做完把结论交回来。
这和进程内的 task(subagent)、跨终端的 peer 消息不是一回事:
task |
delegate |
peer(send_message) |
|
|---|---|---|---|
| 关系 | 父 → 子 | 父 → 子 | 对等会话 |
| 进程 | 同进程 | 新 OS 进程(agentica --query --print) |
用户自己开的两个交互 CLI |
| 模型 | 默认 auxiliary(便宜) | 默认跟主会话 | 各自会话的模型 |
| 结果 | 工具返回值立刻回来 | 后台跑完再回执 / wait |
对方自己决定是否行动 |
出现在 list_agents |
否 | 否(刻意) | 是 |
> 把 ../service-a 和 ../service-b 这两个仓库分别做一遍依赖升级,做完告诉我结果
🔧 delegate
label='upgrade service-a'
把 ../service-a 做一遍依赖升级……(全文,不截断)
🔧 delegate
label='upgrade service-b'
……
…主会话继续做自己的事…
✓ Delegated task "upgrade service-a" finished in 04:12 (exit 0)
CLI 对 task / delegate / send_message 的调用行会完整展示任务正文(含换行),不再用 ... 省略——这是你审计「派了什么活」的依据。
要点:
- 不阻塞。
delegate立刻返回,任务在后台跑;主 agent 可以继续干别的。完成后报告会自动送回这轮对话(和execute(background=True)同一套机制),需要马上拿结果就wait(id="term_1")。 - 最多同时 3 个,第 4 个会被拒绝并告诉它去
wait哪一个。用/ps查看、/stop <id>停掉。 - 权限跟着父会话走:派出去的那一刻你是什么模式(
auto/allow-all),子进程就是什么模式;ask模式下这个工具根本不出现。 - 模型默认继承,也可以指定:
model="zhipuai/glm-4.7-flash"(跨 provider)或只给模型名(沿用当前 provider)。API key 不会出现在命令行上,子进程自己读config.yaml/ 环境变量。 - 只有一层。被委托出去的会话拿不到
delegate工具,不会再往下派。 - 不出现在
list_agents里。它是一次性--query进程,不是一个终端会话;委托是父子关系并且有返回值,peer 消息是平级会话之间说话,两者刻意分开。 - 子进程用的是
agentica --query "..." --print,--print只把最终回答写到 stdout(没有 banner、没有日志),你也可以在脚本里直接这么用;失败时退出码非 0。 - 小活用
task。读代码、搜仓库、查资料——task便宜得多;只有工作大到值得独立 context(或必须换目录)时才delegate。
/config¶
显示模型、终端和工作区配置。其中 Project Dir 是该 cwd 在
~/.agentica/projects/<user>/ 下的唯一 hash 目录,方便到后台定位 session 文件。
/memory¶
显示当前会话的消息历史(含工具调用摘要):
/workspace¶
显示 Workspace 状态(路径、记忆条数、用户 ID 等):
/model [provider/model]¶
查看当前模型,或切换到新模型:
> /model
Current model: zhipuai/glm-4.7-flash
> /model openai/gpt-4o
Switched to openai/gpt-4o
> /model deepseek-chat
Switched to deepseek-chat (keep current provider)
/compact [instructions]¶
手动触发上下文压缩,将当前对话历史摘要化以释放上下文空间:
> /compact
Context compacted. Summary injected.
> /compact 重点保留关于 API 设计的讨论
Context compacted with custom instructions.
自动压缩
占用升高时会先做免费的 Layer 1 淘汰(约 70% 起);接近窗口上限时再跑 Layer 2
(provider-native compact 或本地 LLM summary)。/compact 始终强制 Layer 2。
使用 OpenAIResponses 且 endpoint 支持 /responses/compact 时,/compact 会优先生成 provider-native checkpoint,并保留可跨 provider 的普通 transcript。原生请求失败时回退到本地 LLM summary;失败则保持对话不变(已无 rule-based 回退)。
/new / /newchat¶
开启全新会话(清除消息历史,保留模型和工具配置)。切换前会显示当前会话的 运行时间、Token 用量和可直接执行的恢复命令:
> /new
Worked for 15m 05s
Token usage: total=4,300 input=4,000 (+ 800 cached) output=300
To continue this session, run agentica resume c1392649-f07d-4f05-808b-f852c3190236
/newchat 是 /new 的别名。
/rename <name>¶
为当前会话设置易识别的名称。名称会持久化,进程异常退出后仍会显示在 /resume 列表中:
/resume [number|name|id-prefix|all]¶
按序号、名称或 ID 前缀恢复之前的会话(基于 Session Log JSONL 机制):
> /resume
Available sessions:
1. a8c3f217 2026-07-24 10:20 (48KB, 23 turns)
前端视觉问题排查
2. 91be026d 2026-07-23 18:05 (12KB, 6 turns)
修复登录超时
> /resume 前端视觉问题排查
Resumed transcript: 前端视觉问题排查 (a8c3f217...)
Conversation view - 48 tool results (62.4K chars) collapsed - /history tools [run] for details
...
Resumed session: 前端视觉问题排查 (a8c3f217...) - restored 6 runs into context;
showing conversation only (48 tool results collapsed)
恢复时,完整 Session Log 仍会重建到模型上下文中;终端默认只回放用户消息、Agent 正文和每轮工具统计,成功的 tool result 不再写入 scrollback。失败结果最多显示 3 条 单行摘要。
也可以退出 CLI 后直接从 shell 恢复(ID 前缀即可):
跨目录恢复¶
Session Log 按项目目录(work_dir)分区存放,但 /resume <id> 和 agentica resume <id>
会先在当前项目找,找不到再搜索该用户的全部项目,所以在任何目录都能按 ID 恢复。
当会话属于另一个目录时,会询问在哪个目录继续工作:
? This session was started in another directory. Choose the working directory to resume it in.
1. Use session directory (/Users/me/Codes/agentica)
2. Use current directory (/Users/me/temp)
3. Always use session directory
4. Always use current directory
- 选 1/2 只对本次生效;选 3/4 会写入
~/.agentica/config.yaml的settings.resume_cwd(session/current),之后不再询问。想恢复询问就把它改回ask或删除该行。 - 无论选哪个,transcript 始终继续追加到它原本所在的项目目录,不会分裂成两个文件。
- 会话目录已被删除时不再询问,直接留在当前目录并提示。
/resume all 列出所有项目的会话(附带各自的目录),列表里的序号可直接用于随后的
/resume <n>:
> /resume all
Sessions across all projects:
1. a8c3f217 2026-07-24 10:20 (48KB, 23 turns)
> 修复登录超时
/Users/me/Codes/agentica
换 provider 恢复¶
Session Log 里的 tool 轮次统一按 OpenAI 线格式存放,Anthropic 的 /v1/messages
无法回放这种形状。用 anthropic/* 恢复(或 fork)一个会话时,历史会自动降级为纯粹的
问答文本:之前的提问和回答都在,工具调用和工具结果不跟过去。同一个 provider 内恢复
不受影响,tool 历史照旧完整回放。
/history [tools [run-number]]¶
/history 使用与 /resume 相同的紧凑对话视图。需要检查完整工具参数和结果时,
使用 /history tools 在 pager 中查看整个 session,或指定从 1 开始的 run 序号:
完整工具记录只在 pager 中显示,不会重新灌入终端 scrollback。
/clear / /reset¶
清屏并重置当前会话(等同于 /newchat + 清除屏幕)。
/debug [on|off]¶
运行时开关 verbose 调试日志,等价于启动时的 --debug:打开后 DEBUG 级日志打到终端
(文件日志本来就有),subagent 的工具输出从下一轮起切换为 verbose 形式。不带参数为
翻转当前状态。会话本身的信息(模型、token、工具数)看 /status。
/reload-skills¶
从磁盘重新加载技能文件,适合开发技能时热更新:
/exit / /quit¶
退出 CLI。等同于 Ctrl+D,退出前会打印当前 session 的运行时间、Token 用量和可复制的 agentica resume <session-id> 恢复命令。
快捷键¶
| 快捷键 | 功能 |
|---|---|
Ctrl+C |
中止当前响应;空输入时连续按两次退出 |
Ctrl+D |
退出 CLI,并显示恢复命令 |
Tab |
补全 @filename 路径 |
↑ / ↓ |
历史命令浏览 |
Ctrl+R |
搜索历史命令 |
Esc + Enter |
多行输入 |
历史命令持久化在 ~/.agentica/cli_history.txt,跨会话保留。
流式输出与工具展示¶
CLI 实时展示 Agent 的每一个动作:
DeepAgent > 好的,我来分析这段代码。
✂️ edit_file app.py
old: "def foo():"
new: "def foo(x: int) -> str:"
✓ Done
⚡ execute python -c "import ast; ast.parse(open('app.py').read())"
✓ Syntax OK
分析完成。修改了第 42 行的函数签名...
- 内容流式输出 -- 打字机效果,实时显示 LLM 生成内容
- 工具调用展示 -- 显示工具名、参数摘要和执行结果
- 子任务进度 --
task工具委派子 Agent 时显示进度条 - 推理过程 -- DeepSeek-R1 等推理模型的
<think>内容折叠显示 - Cost 统计 -- 每轮结束后显示 token 用量和估算费用
Workspace 与长期记忆¶
CLI 启动时自动连接 Workspace(默认 ~/.agentica/workspace),提供跨会话的记忆能力:
# 使用指定 Workspace 目录
agentica --workspace ./my-project-workspace
# 禁用 Workspace(纯无状态模式)
agentica --no-workspace
每次对话结束后,重要信息(用户偏好、项目上下文、反馈)通过 save_memory 工具持久化。
下次启动时,Agent 自动根据当前 query 检索相关记忆注入上下文。
Skills 系统¶
Skills 是 Markdown 定义的可复用指令包,可以给 Agent 注入专业领域的指导:
Skills 目录:
- ~/.agentica/skills/ -- 用户级全局 Skills
- .agentica/skills/ -- 项目级 Skills(当前目录)
- .claude/skills/ -- 兼容 Claude Code 的 Skills
每个 Skill 是一个包含 SKILL.md 的目录:
在对话中通过提示词激活:
详见 Skills 进阶。
工作目录¶
--work_dir 参数设置文件操作的基准路径,影响 read_file、write_file、execute 等工具:
当 work_dir 是 git 仓库时,System Prompt 自动注入 git 状态(当前分支、未提交变更、最近 commit),让 Agent 了解代码上下文。
ACP 模式(IDE 集成)¶
启动 ACP (Agent Client Protocol) 服务器,与 Zed、JetBrains 等 IDE 集成:
IDE 插件通过 ACP 协议与 Agent 通信,实现: - 在 IDE 侧边栏直接对话 - Agent 读取/编辑当前打开的文件 - 代码补全和重构建议
详见 ACP 集成。
高级用法示例¶
代码审查工作流¶
文档生成¶
测试驱动开发¶
调试模式¶
下一步¶
- 快速入门 -- Agent 基础 API
- Agent 核心概念 -- DeepAgent 深度解析
- 工具系统 -- 自定义工具开发
- Memory & Workspace -- 长期记忆机制
- Skills 进阶 -- 技能系统
- ACP 集成 -- IDE 集成协议