AI Agent 办公工作台(自然语言下任务,AI 自主规划执行,交付 PPT/Word/Excel 等成果文件)
OpenWorkBuddy exposes 21 tools, but only 1 (canvas_manage) has a complete, visible input schema with proper type definitions and descriptions. The remaining 20 tools (generate_image, generate_video, text_to_speech, etc.) are defined in engines/tool-bridge.js with empty or missing input schemas ({}). Tool descriptions vary wildly: canvas_manage has a 1200+ char description (excessive, but detailed); most bridge tools have 1-2 sentence descriptions (10-50 chars, below the 20-char minimum for scoring). No tool has documented output schemas. Error handling is absent from all definitions. Parameter descriptions are sparse or missing entirely. This is a STDIO-only server, capping protocol readiness at 50 regardless of other factors.
控制当前 OpenWorkBuddy 项目的 AI 短剧无限画布。画布不是普通白板:节点可以是 note/script/agent/character/location/storyboard/scene/shot/image/video/audio/timeline,连线表示输入关系。用 list 查看当前项目的多张画布;用 get 读取当前画布;用 add 创建节点;用 update 修改节点 payload 或位置;用 connect 建立输入关系(可声明 relation,如 character/background/motion/style/first_frame);用 delete 删除节点;用 clear 清空画布。短剧制作建议按 script → character/location → storyboard/scene → shot → image/video/audio → timeline 建图。先调用 get,不要凭空覆盖用户已经摆好的节点。角色节点的 payload 里可以写 voice(这个角色全程用的音色名),镜头节点可以写 speaker(这一镜的台词是谁说的,写角色名或角色 id)。配音就按这两项决定用谁的嗓子:不写的话整部戏所有角色都是同一个默认音色,而且要等成片放出来才听得出。镜头节点的提示词分两格:prompt 是首帧画面长什么样,motion_prompt 只写怎么动。生视频只递 motion_prompt——画面内容已经在首帧里了,把首帧提示词再递一遍,模型会照着它重画一遍,生出来的片子跟已经确认过的首帧对不上。生成图片/视频时先调用 generate_image 或 generate_video,拿到真实 file 路径后再用 update 把 first_frame/video/path 写回节点;这样画布会自动显示结果。写回节点只让画布显示得出来,不会动分镜表(用户在界面上改字段是自动回表的,这条工具不是)。分镜表是唯一真源(「改一镜只重算一镜」读的是它),所以同一条路径还要自己写进 分镜表.json 里对应那一镜的 first_frame/video/audio、或角色的 ref——漏了这一步,下次重跑会把已经买过的镜头再买一遍。(用户在界面上点生成是自动回写的,Agent 这条路没有。)所有操作只作用于当前项目,不连接其他本地项目。
打开做好的网页,看控制台报错和实际效果
把一批判断交给判断模型,而不是自己一条条读着判
长期记忆:忘
mermaid / echarts / graphviz 出图
20 of 21 tools have empty or missing input schemas ({}). This violates pattern:constrained-input and pattern:tool.
15 tools have descriptions under 20 characters (e.g., 'generate_image': '生图:CLI 没有,用户最常撞的就是这条' ~30 chars in Chinese, but 'transcribe_audio': '录音转文字' ~10 chars). These descriptions do not explain WHAT the tool does, WHEN to use it, or prerequisites.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | <=2025-11-25 | v2 |
生图:CLI 没有,用户最常撞的就是这条
生视频
网页转长图/封面
技能库:有哪些
技能库:把某个技能的正文读出来
看图(CLI 在无头管道里读不了本地图片)
读 Office 文档/压缩包:CLI 只会按文本读,拿回去是一坨乱码
长期记忆:记
用内置浏览器真实打开一个页面、等 JavaScript 渲染完再取正文。正文全靠 JS 的站点(B 站、微博、各类单页应用)用它,普通抓取工具在这些站点上只能拿到空壳。
在工作目录(workspace)中执行一段 Node.js (CommonJS) 代码并返回 stdout/stderr。可以 require 以下已安装的库:pptxgenjs(生成PPT)、docx(生成Word)、exceljs(生成Excel),以及 Node 内置模块(fs/path等)。生成的成果文件必须写到当前工作目录(直接用相对路径/文件名即可,不要写绝对路径)。用于数据处理、文件生成、计算等一切需要编程的任务。输出太长时只回「开头 + 结尾 + 省略了多少 + 全文日志路径」,中间那段不是没有、是在那个文件里,需要就 read_file 或 grep 它,别拿结尾当全部内容。
在工作目录(workspace)中执行一条 shell 命令(macOS/Linux 走 zsh/bash,Windows 走 cmd),返回 stdout/stderr。可以使用系统已安装的命令行工具(git、curl、ffmpeg、lark-cli 等)。适合调用现成 CLI、管道/批量文件操作;需要写程序逻辑时优先用 run_node。命令不要做交互式输入(没有 stdin)。输出太长时只回「开头 + 结尾 + 省略了多少 + 全文日志路径」,中间那段不是没有、是在那个文件里,需要就 read_file 或 grep 它,别拿结尾当全部内容。
这次趟出来的做法存成技能
配音
录音转文字
走本项目配的搜索渠道
写文件(.md 报告、.txt、.csv、.html、代码文件都行)。路径相对于 workspace。**只用于新建**;改已有文件的局部内容用 edit_file。写长文档时用 append:true 一节一节续写,不用把前文重新吐一遍。写完会自动做语法/结构自检(JS/JSON/HTML/Markdown),有问题会直接告诉你。
No tool has a documented output schema. LLMs cannot infer what fields to expect, breaking downstream tool chaining and forcing agents to guess at response structure. Violates pattern:tool and mxe:include-chaining-ids.
No error handling guidance in any tool definition. Tools like run_shell and run_node (IRREVERSIBLE risk) do not document what errors are retryable, user-fixable, or fatal. Violates pattern:recovery-guide and pattern:error-classification.
canvas_manage description is 1200+ characters (exceeds 1024 char baseline). While detailed, it wastes tokens and buries key details. Should be split into a concise summary + link to docs. Violates pattern:tool-description length guidance.