【玩转 AtomCode】隐藏高级功能挖掘:MCP、Hooks、Skills、Plugin 完全指南
「码动四季」征文活动参赛作品
大多数人只用 AtomCode 写代码,但它的真正强大之处在于扩展生态。本文在华为云服务器上实操 MCP 协议接入、Hooks 生命周期钩子、Skills 技能系统、Plugin 插件市场四大高级功能,带你解锁 AtomCode 的隐藏潜力。
一、为什么说 AtomCode 不只是编码工具?
安装 AtomCode 后,大多数人直接 atomcode -p '写个xxx' 就开始用了。但如果你执行 atomcode --help,会发现它隐藏了四个强大的子系统:
mcp Manage MCP server entries in .mcp.json
plugin Manage skill/command plugins
setup Install seed files (skills/commands/hooks/MCP) to ~/.atomcode/
hooks Manage hooks (list, test, enable/disable)
这四个命令分别对应 MCP 协议、Plugin 插件、Skills 技能、Hooks 钩子------它们共同构成了 AtomCode 的扩展生态。
二、环境准备
实例:华为云 FlexusX ecs-46b1-0003
规格:8vCPUs | 16GiB | x2e.8u.16g
系统:Ubuntu 24.04 server 64bit
公网 IP:119.3.232.205
AtomCode:v4.25.9
AtomCode 安装配置过程(与其他服务器相同,此处省略),确保 atomcode status 显示已登录。
三、MCP 协议接入
3.1 什么是 MCP
MCP(Model Context Protocol)是一个开放标准协议,类比 "USB-C 接口"------它定义了 AI 模型与外部工具之间的统一通信标准。在 AtomCode 中,MCP 让 AI 编码代理能够调用外部工具(文件系统、数据库、API 等)。
3.2 MCP 命令详解
bash
root@ecs-46b1-0003:~# atomcode mcp --help
Manage MCP server entries in .mcp.json
Usage: atomcode mcp [OPTIONS] <COMMAND>
Commands:
add Add or replace a stdio MCP server
add-github-oauth Add GitHub's remote MCP server using OAuth
login Complete OAuth login for a remote MCP server
logout Remove saved OAuth credentials for a remote MCP server
3.3 添加文件系统 MCP Server
实操添加 @modelcontextprotocol/server-filesystem MCP 服务器:
bash
root@ecs-46b1-0003:~# mkdir -p /root/mcp-test && cd /root/mcp-test
root@ecs-46b1-0003:~/mcp-test# atomcode mcp add filesystem npx @modelcontextprotocol/server-filesystem /tmp
输出:
Added MCP server "filesystem" → /root/mcp-test/.mcp.json (stdio: npx + 2 arg(s))
查看生成的配置文件:
bash
root@ecs-46b1-0003:~/mcp-test# cat .mcp.json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"@modelcontextprotocol/server-filesystem",
"/tmp"
]
}
}
}
3.4 MCP 配置详解
AtomCode 支持两种 MCP 配置作用域:
| 作用域 | 文件位置 | 说明 |
|---|---|---|
| 项目级 | <project>/.mcp.json |
仅当前项目可用,可提交到 Git |
| 用户级(全局) | ~/.atomcode/mcp.json |
所有项目可用,个人配置 |
使用 --global 参数添加全局 MCP Server:
bash
atomcode mcp add --global filesystem npx @modelcontextprotocol/server-filesystem /tmp
3.5 工具命名规则
MCP Server 注册的工具在 AtomCode 中以 mcp__<server>__<tool> 格式命名。例如:
filesystemServer 的read_file工具 →mcp__filesystem__read_filefilesystemServer 的write_file工具 →mcp__filesystem__write_file
这种命名方式避免了不同 MCP Server 之间的工具名冲突。
3.6 传输方式
AtomCode MCP 支持两种传输方式:
stdio(本地):
json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["@modelcontextprotocol/server-filesystem", "/tmp"]
}
}
}
HTTP(远程):
json
{
"mcpServers": {
"github": {
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer gho_xxxx"
}
}
}
}
对于 GitHub 远程 MCP,AtomCode 还提供了 OAuth 一键添加:
bash
atomcode mcp add-github-oauth
3.7 权限审批模型
AtomCode 对 MCP 工具调用提供三种权限模式:
| 模式 | 说明 | 适用场景 |
|---|---|---|
| 逐次确认 | 每次调用工具时弹出确认 | 敏感操作(删除、修改) |
| autoApprove | 自动批准特定工具 | 信任的只读工具 |
| trust | 信任所有工具 | 开发环境,完全信任 |
配置示例(在 .mcp.json 中):
json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["@modelcontextprotocol/server-filesystem", "/tmp"],
"autoApprove": ["read_file", "list_files"],
"trust": false
}
}
}
四、Hooks 生命周期钩子
4.1 Hooks 概念
Hooks 是 AtomCode 的生命周期钩子系统,允许在特定事件发生时自动执行自定义命令。类似于 Git Hooks,但覆盖了 AI 编码代理的完整生命周期。
4.2 Hooks 命令
bash
root@ecs-46b1-0003:~# atomcode hooks --help
Manage hooks (list, test, enable/disable)
Commands:
list List all loaded hooks with their status
test Test a specific hook by name
paths Show hook configuration paths
查看 Hooks 配置路径:
bash
root@ecs-46b1-0003:~# atomcode hooks paths
Hook Configuration Paths:
─────────────────────────────────────────────
✗ Global config: /root/.atomcode/hooks/hooks.toml
✗ Project config: /root/.atomcode/hooks/hooks.toml
4.3 创建 Hooks
创建 Hooks 配置文件:
bash
root@ecs-46b1-0003:~# mkdir -p ~/.atomcode/hooks
root@ecs-46b1-0003:~# cat > ~/.atomcode/hooks/hooks.toml << 'HOOKS'
[[hooks]]
name = "audit-log"
event = "pre_tool_use"
command = "echo $(date) - $ATOMCODE_TOOL_NAME >> ~/.atomcode/audit.log"
[[hooks]]
name = "block-rm-rf"
event = "pre_tool_use"
matcher = "bash"
command = "echo '{\"action\":\"block\",\"reason\":\"rm -rf is blocked by safety hook\"}'"
HOOKS
4.4 Hook 事件类型
从配置文件注释可以看到,AtomCode 支持四种 Hook 事件:
| 事件 | 触发时机 | 典型用途 |
|---|---|---|
pre_tool_use |
工具调用前 | 安全检查、审计日志、阻止危险操作 |
post_tool_use |
工具调用后 | 自动格式化、代码检查、通知 |
session_start |
会话开始 | 环境检查、加载配置 |
session_end |
会话结束 | 清理临时文件、生成报告 |
4.5 Hook 环境变量
Hooks 执行时可以访问以下环境变量:
| 变量 | 说明 |
|---|---|
ATOMCODE_HOOK_EVENT |
当前事件名称 |
ATOMCODE_TOOL_NAME |
正在调用的工具名 |
ATOMCODE_HOOK_CONTEXT |
钩子上下文信息 |
4.6 PreToolUse 返回值
pre_tool_use Hook 可以通过 stdout 返回 JSON 控制工具执行:
json
{"action": "allow"} // 允许执行
{"action": "block", "reason": "..."} // 阻止执行并说明原因
4.7 查看已加载的 Hooks
bash
root@ecs-46b1-0003:~# atomcode hooks list
Loaded Hooks:
─────────────────────────────────────────────
(No hooks loaded)
Hook Directories:
─────────────────────────────────────────────
✓ Global: /root/.atomcode/hooks
✗ Project: /root/mcp-test/.atomcode/hooks
提示:Hooks 需要在交互式会话中才会加载,Headless 模式下可能不会触发。
五、Skills 技能系统
5.1 什么是 Skills
Skills 是 AtomCode 的「打包专业知识」系统。一个 Skill 就是一个 Markdown 文件(SKILL.md),包含特定领域的知识、工作流程和指令。AI Agent 加载 Skill 后,就能像专家一样处理特定类型的任务。
5.2 安装种子 Skills
bash
root@ecs-46b1-0003:~# atomcode setup
✅ Setup complete --- 1 installed, 0 skipped, 0 failed · 11ms
Installed:
✓ skill:atomcode-automation-recommender → /root/.atomcode/skills/atomcode-automation-recommender
atomcode setup 命令会将种子文件(Skills/Commands/Hooks/MCP)安装到 ~/.atomcode/ 目录。
5.3 内置 Skill 解析
安装的 atomcode-automation-recommender Skill 内容:
bash
root@ecs-46b1-0003:~# cat ~/.atomcode/skills/atomcode-automation-recommender/SKILL.md
yaml
---
name: setup
description: Analyze a codebase and recommend AtomCode automations
(hooks, subagents, skills, plugins, MCP servers). Use when user asks
for automation recommendations, wants to optimize their AtomCode setup,
mentions improving AtomCode workflows, asks how to first set up AtomCode
for a project, or wants to know what AtomCode features they should use.
user_invocable: true
argument_hint: "[focus area, e.g. hooks, mcp, skills, all]"
allowed_tools: Read, Glob, Grep, Bash, Write, Edit
---
这个 Skill 的工作流程:
- 分析代码库:检测项目类型、依赖、现有配置
- 推荐自动化方案:根据项目特点推荐 Skills、Plugins、MCP Servers、Hooks
- 提供安装方案:推荐后询问「要我帮你装上吗?」
5.4 Skill 类型对照表
从 Skill 的内容可以看到 AtomCode 的完整自动化体系:
| 类型 | 适用场景 | 安装方式 |
|---|---|---|
| Skills | 打包专业知识、工作流程、重复任务 | npx skills add <pkg> 或创建 .atomcode/skills/<name>/SKILL.md |
| Plugins | Skills + Commands + Agents + Hooks 的集合 | /plugin marketplace add <url> 然后 /plugin install <name> |
| MCP Servers | 外部工具集成(数据库、API、文档) | 写入 .mcp.json(项目级)或 ~/.atomcode/mcp.json(全局) |
| Hooks | 工具事件的自动动作(格式化、检查、阻止) | 写入 ~/.atomcode/hooks/hooks.toml |
| Subagents | 专业化审查员(安全、性能、可访问性) | 创建 .atomcode/skills/<name>/SKILL.md |
| Commands | 快捷斜杠命令(/test, /review, /deploy) | 创建 .atomcode/commands/<name>.md |
5.5 自定义 Skill 创建
创建一个自定义 Skill 示例:
bash
mkdir -p ~/.atomcode/skills/my-deploy-helper
cat > ~/.atomcode/skills/my-deploy-helper/SKILL.md << 'EOF'
---
name: deploy-helper
description: Help deploy applications to production. Use when user asks
to deploy, release, or publish an application.
user_invocable: true
argument_hint: "[environment: staging|production]"
allowed_tools: Bash, Read, Write
---
# Deploy Helper
## Workflow
1. Run tests: `npm test`
2. Build: `npm run build`
3. Deploy: `./deploy.sh $ARGUMENTS`
4. Verify: `curl -s https://myapp.com/health`
5. Notify: Send deployment notification
EOF
六、Plugin 插件市场
6.1 Plugin 命令体系
bash
root@ecs-46b1-0003:~# atomcode plugin --help
Manage skill/command plugins
Commands:
marketplace Marketplace registry operations (add/remove/update/list)
install Install a plugin from a registered marketplace
uninstall Uninstall a previously-installed plugin
list List installed plugins
6.2 Marketplace 操作
bash
# 添加插件市场
atomcode plugin marketplace add <git-url>
# 更新市场索引
atomcode plugin marketplace update <marketplace-name>
# 列出已注册的市场
atomcode plugin marketplace list
# 移除市场
atomcode plugin marketplace remove <marketplace-name>
6.3 安装插件
bash
# 安装插件(格式:<plugin>@<marketplace>)
atomcode plugin install ascend-model-agent-plugin@ascend-model-agent-plugin
# 查看已安装插件
atomcode plugin list
# 卸载插件
atomcode plugin uninstall <plugin-name>
6.4 自动安装配置
在 config.toml 中可以配置自动安装行为:
toml
[plugin]
auto_install_default_skills = true # 自动安装默认 Skills
auto_update_marketplaces = true # 自动更新市场索引
七、配置文件全景
通过 atomcode setup 和手动配置后,~/.atomcode/ 目录的完整结构:
~/.atomcode/
├── auth.toml # 认证信息
├── config.toml # 全局配置
├── codingplan_sync.json # Token 同步
├── device_id # 设备标识
├── ATOMCODE.md # 全局指令文件(自定义 AI 行为)
├── mcp.json # 全局 MCP 配置
├── hooks/
│ └── hooks.toml # Hooks 配置
├── skills/
│ └── <skill-name>/
│ └── SKILL.md # Skill 定义
├── commands/
│ └── <command-name>.md # 自定义命令
└── telemetry/ # 遥测数据
项目级配置
在项目根目录可以创建以下文件覆盖全局配置:
<project>/
├── .atomcode.md # 项目指令(团队共享)
├── .atomcode.user.md # 用户级项目指令(.gitignore)
├── .mcp.json # 项目 MCP 配置
├── .hooks.json # 项目 Hooks 配置
├── .atomcode/
│ ├── skills/
│ ├── commands/
│ └── ...
指令优先级
AtomCode 加载指令文件的优先级(从低到高):
~/.atomcode/ATOMCODE.md--- 全局个人默认值<project>/.atomcode.md--- 项目团队共享(提交到 Git)<project>/ATOMCODE.md--- 同上,备选文件名<project>/AGENTS.md--- AGENTS.md 开放标准<project>/CLAUDE.md--- Claude Code 兼容<project>/.atomcode.user.md--- 个人项目级(.gitignore)
优先级高的文件出现在 Prompt 后面(近期效应),影响力更大。
八、高级配置技巧
8.1 自定义 AI 行为
创建 ~/.atomcode/ATOMCODE.md 全局指令:
markdown
## Global Preferences
- Reply in Chinese
- Don't add AI co-author tags to commits
- Always add type hints to Python code
- Prefer functional style over imperative
8.2 项目级指令
在项目根目录创建 .atomcode.md:
markdown
## Project Rules
- This is a Rust workspace with 5 crates
- Use anyhow::Result for error handling
- All public APIs must have doc comments
- Run `cargo fmt` before commits
8.3 Subagent 配置
toml
[subagent]
enabled = true
initial_turns = 4 # 初始轮数
max_turns = 12 # 最大轮数
max_concurrent = 3 # 并发数
timeout_secs = 300 # 超时
8.4 通知配置
toml
[notifications]
enabled = true
min_duration_secs = 8 # 最短通知阈值
terminal = true # 终端通知
system = true # 系统通知
bell = true # BEL 响铃
background_only = true # 仅后台时通知
8.5 数据日志
toml
[datalog]
enabled = true
dir = "~/.atomcode/datalog" # 日志目录
每轮对话写入 Markdown 摘要,每轮 LLM 调用写入 JSON 请求/响应对。
九、总结
AtomCode 的四大扩展系统构成了一个完整的 AI 编码代理生态:
| 系统 | 核心价值 | 使用门槛 |
|---|---|---|
| MCP | 连接外部工具,无限扩展 AI 能力 | 中(需了解 MCP 协议) |
| Hooks | 生命周期钩子,自动化工作流 | 低(Shell 脚本即可) |
| Skills | 打包专业知识,复用最佳实践 | 低(Markdown 文件) |
| Plugin | 社区生态分发,一键安装 | 低(marketplace 命令) |
这四个系统不是孤立的,而是相互配合的:
- Plugin 可以打包多个 Skills + Commands + Hooks
- Skills 可以推荐安装 MCP Servers 和 Hooks
- Hooks 可以在 MCP 工具调用前后触发
- MCP 工具可以被 Skills 和 Hooks 使用
如果你只用了 atomcode -p 来写代码,那你只用了 AtomCode 20% 的能力。真正的威力在于 MCP + Hooks + Skills + Plugin 的组合使用------把 AtomCode 变成一个懂你的项目规范、遵守你的安全策略、连接你的工具链、自动执行你的工作流的 AI 编码代理。
活动信息:「码动四季」征文活动夏季主题------「玩转 AtomCode」
AtomCode 官网:https://atomcode.atomgit.com
AtomCode 源码:https://atomgit.com/atomgit_atomcode/atomcode