mirror of
https://github.com/zhouxiaoka/autoclip.git
synced 2026-10-02 02:34:34 +08:00
* feat(cli): 支持 opencode MCP 一键接入(autoclip mcp install opencode) 新增 autoclip mcp install opencode:自动探测启动命令(autoclip / autoclip-mcp / python -m backend.mcp_server),把 mcp.autoclip 合并写入 opencode 配置(全局 ~/.config/opencode/opencode.json,或 --scope project 写项目 opencode.json)。 不覆盖用户已有配置:写入前备份 opencode.json.bak;JSONC 注释配置默认不动,--force 才先备份再重写;无法解析的配置永不覆盖。新增 backend/services/opencode_setup.py(仅标准库)与 7 个单元测试;新增 docs/OPENCODE.md / docs/OPENCODE.en.md,并更新 CLI_AND_MCP、README、mcp_server.py docstring。 * docs: 文档中心收录 opencode 接入指南 * fix(cli): opencode 接入修复 [P2]:重装保留自定义字段、jsonc 优先级与冲突拒绝 重装只更新 type / command,按 key 合并 environment(模块回退写 PYTHONPATH),保留 timeout / enabled 等用户字段;只有 opencode.jsonc 时写 jsonc,两份配置都有且 jsonc 含 mcp 段时写入前直接拒绝;解析兼容 UTF-8 BOM。回归测试 16 passed。 * fix(cli): honor explicit OpenCode config and refresh fallback paths --------- Co-authored-by: 周小舟 <christine_zhouye@163.com>
5.5 KiB
5.5 KiB
接入 opencode CLI(AutoClip MCP)
opencode 是终端里的 AI agent。把 AutoClip 作为本地 MCP server 接进去之后,
你在 opencode 里给出一个视频路径,它就会调 AutoClip 出片——切高光、看结果、导 9:16、发平台,
不用自己拼 autoclip 参数。
| 你想做的 | 怎么做 |
|---|---|
| 一条命令接入(推荐) | autoclip mcp install opencode |
| 写进某个项目 | autoclip mcp install opencode --scope project --dir <项目目录> |
| 只看配置片段、不改文件 | autoclip mcp install opencode --print |
| 现有配置带注释,确认要重写 | 加 --force(先备份为 opencode.json.bak) |
1. 前置条件
- AutoClip CLI 装好(MCP server 与 CLI 同源):
pip install -r requirements.txt && pip install -e ., 见 CLI / MCP 指南 第 1 节;不装包也能用仓库里的python -m backend.mcp_server ffmpeg在 PATH、模型能连上:autoclip doctor检查(云端 key,或本地 Ollama / LM Studio)- opencode 已安装(
opencode --version)
2. 一键接入
autoclip mcp install opencode
# ✓ 已写入 ~/.config/opencode/opencode.json(Windows: %USERPROFILE%\.config\opencode\opencode.json)
命令做的事:
- 按
autoclip→autoclip-mcp→python -m backend.mcp_server的顺序探测启动命令(结果在输出的entry里) - 把
mcp.autoclip合并写进配置(type: local),其它键原样保留;文件已存在时先备份opencode.json.bak - 重装不会丢同名条目里的自定义字段:更新
type/command;模块回退时刷新cwd, 并把当前安装路径放到PYTHONPATH最前面,保留其余模块路径、环境变量、timeout和enabled=false(后者会给出提示) - 优先识别已有配置文件:只有
opencode.jsonc时写它;opencode.json和opencode.jsonc同时存在且 jsonc 里已有mcp段时, 写入前直接拒绝(jsonc 覆盖 json,避免“写入成功但实际加载旧配置”) - 配置带注释 / 尾随逗号(JSONC,opencode 支持)时默认不动文件、只打印片段;加
--force才会先备份再重写成纯 JSON
| 参数 | 作用 |
|---|---|
--scope global(默认) |
全局配置 ~/.config/opencode/opencode.json |
--scope project --dir <目录> |
只在这个项目生效:<目录>/opencode.json |
--name <名字> |
配置里的服务名(默认 autoclip;opencode 里工具会带 autoclip_ 前缀) |
--print / --json |
只打印片段 / 输出机器可读报告 |
环境变量:设了 OPENCODE_CONFIG 就严格写它指向的文件,不改写同目录的 .jsonc;设了 XDG_CONFIG_HOME 用 $XDG_CONFIG_HOME/opencode/opencode.json。
3. 手动配置
opencode.json(或 opencode.jsonc):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"autoclip": {
"type": "local",
"command": ["C:\\Users\\<你>\\autoclip\\venv\\Scripts\\autoclip.exe", "mcp"],
"enabled": true
}
}
}
- macOS / Linux:
"command": ["/path/to/autoclip/venv/bin/autoclip", "mcp"] - 没装包(在仓库里跑):
"command": ["<python 绝对路径>", "-m", "backend.mcp_server"], "cwd": "<仓库根目录>", "environment": {"PYTHONPATH": "<仓库根目录>"}
opencode 会合并多处配置(全局 + 项目),项目里的同名 server 覆盖全局。
4. 在 opencode 里出片
重启 opencode(或新开会话)让它加载 MCP,然后直接说:
把 D:\Videos\lecture.mp4 切片 # 用桌面应用里配好的模型
把 C:\Users\me\Downloads\podcast.mp4 切片,用 ollama # 本地模型,不用 key
刚才那个项目第 2 条切片导成 Shorts
opencode 会依次调 check_environment、clip_video(长视频走 start_clip_job + get_job_status 轮询),
按 评分 · 时间段 · 标题 把结果整理给你。产物和桌面应用共用一个数据目录,桌面端首页能直接看到。
5. Agent skill(可选,建议装)
skills/autoclip/SKILL.md 教 agent 何时用哪个工具、min_score 怎么调、结果怎么呈现:
cp -r skills/autoclip ~/.config/opencode/skills/autoclip # 全局(Windows 放 %USERPROFILE%\.config\opencode\skills\)
只在一个项目里生效,就放 .opencode/skills/autoclip/。opencode 也会读 ~/.claude/skills/,给 Claude Code 装过的无需重复。
6. 排错
| 现象 | 处理 |
|---|---|
opencode 里没有 autoclip 工具 |
用 --print 确认目标文件路径;同目录只留一份 opencode.json / .jsonc;新开会话再试 |
| 报「jsonc 里已有 mcp 段」 | opencode.jsonc 覆盖 opencode.json:只保留一份配置,或手动把片段合并进 jsonc |
| 工具能列出但一调就报错 | 先在终端 autoclip doctor:多半是 ffmpeg 不在 PATH、Whisper 没装(传 srt_path 可绕过)、模型没 key |
| 切片数为 0 | 让 opencode 用 min_score=0.5 重试;纯音乐 / 无对话的视频本身不适合切高光 |
| 首次出片特别慢 | 无字幕时本地 Whisper 转写,首次要下模型;已有 SRT 就传进去,或改用 ollama |
| MCP 协议被日志污染 | AutoClip 已把 stdout 留给协议(print 都进 stderr);自建包装脚本时别往 stdout 打日志 |