兰 亭 墨 苑
期货 · 量化 · AI · 终身学习
首页
归档
编辑文章
标题 *
URL 别名 *
内容 *
(支持 Markdown 格式)
## dsh 识图功能调试记录 我将根据这份 session.jsonl.md 对话日志,为你全面统计和分析整场对话中 AI 助手(Agent)使用的所有工具、调用次数、以及每个命令的详细作用。 通过这份分析,你能清晰看到一个 AI 编码助手是如何通过组合使用各种工具,完成「调研 → 分析 → 修改配置 → 验证 → 交付文档」这一整套复杂任务的。 --- 一、工具使用总览 整场对话共涉及 8 种不同的工具,累计调用次数为 70 次(统计了所有被记录的工具调用,包括部分工具因错误重试的情况)。 工具调用次数统计表 工具名称 调用次数 核心用途 bash 47 次 执行 Shell 命令,是使用最频繁的工具,用于文件查看、进程检查、网络探测、YAML 解析等 edit 7 次 编辑配置文件(cordis.patch.yml),是完成配置修改的核心工具 read 4 次 读取文件内容(如配置文件、源代码),用于调研 write 1 次 创建新的 Markdown 文档(使用说明) skill 2 次 加载技能(dsh-archive-agent-notes, knowly-clipboard) ask_user_question 1 次 向用户提问以确认关键决策(识图模式选择) vision_describe 2 次 调用视觉模型识别图片内容,验证识图链路 vision_activate 1 次 挂载视觉工具,使 vision_describe 等可用 read_image 2 次 尝试读取图片(但因模型不支持而失败,用于验证) todo_write 1 次 更新任务清单,记录工作进度 注:部分工具(如 read_image)虽然调用失败,但仍记录了调用动作,因此纳入统计。 --- 二、各工具详细命令与作用解析 1. bash 工具(47 次) bash 是 Agent 的“万能手”,用来执行系统命令。以下是按功能分类的典型命令及其作用: (1) 文件/目录查看 命令示例 作用 pwd && ls -la 查看当前工作目录及文件列表,确认环境 ls -la .dsh-vision-router/ 查看视觉路由插件的目录内容 find . -maxdepth 3 -name "*.yml" 查找配置文件,定位 YAML 文件 stat -f "inode: %i" ~/.dsh/profiles/web/cordis.patch.yml 获取文件的 inode(唯一ID),用于对比进程加载的文件是否是最新版本 cat ~/.dsh/settings.yaml 读取用户级配置文件,查看模型和 provider 设置 cat /tmp/dsh-web-restart.log 查看 DSH Web 服务重启日志,确认重启时间 (2) 进程与端口检查 命令示例 作用 lsof -nP -iTCP:3080 查看 3080 端口被哪个进程监听,获取 PID lsof -p 29495 列出进程 29495 打开的所有文件,用于确认它加载了哪些配置文件,并与磁盘 inode 对比 `ps aux grep node` lsof -a -p 29495 -d cwd 查看进程的工作目录 (3) 网络与端口探测 命令示例 作用 lsof -nP -i@127.0.0.1 列出本机所有监听端口,检查是否有额外管理端口 lsof -nP -iTCP -sTCP:LISTEN 筛选所有监听中的 TCP 端口,用于发现 DSH 可能暴露的 API (4) YAML / JSON 解析与校验 命令示例 作用 node -e "const fs=require('fs'); const YAML=require('yaml'); ..." 使用 Node.js 解析 YAML 文件,验证 cordis.patch.yml 语法和结构是否正确 python3 -c "import json; ..." 解析 usage.json,查看模型调用统计 (5) 直接 API 测试(识图链路验证) 命令示例 作用 curl -X POST https://opencode.ai/zen/go/v1/chat/completions ... 测试 opencode-go 模型是否支持 image_url,结果报错,证实其为纯文本 curl -X POST https://token.sensenova.cn/v1/chat/completions ... 测试 sensenova 模型是否支持图像输入,成功返回,证明其可用 (6) 工具/脚本查找与执行 命令示例 作用 which knowly 查找 knowly 命令路径,确认其已安装 find ~/ -iname "*knowly*" 查找所有含 knowly 的文件,定位上传脚本 python3 ~/.pi/agent/skills/knowly-clipboard/scripts/clipboard.py upload ... 执行 knowly 上传脚本,将使用说明文档上传到远程剪贴板服务 (7) 文件备份 命令示例 作用 cp ~/.dsh/profiles/web/cordis.patch.yml ~/.dsh/profiles/web/cordis.patch.yml.bak.$(date ...) 修改配置前进行备份,但此操作被沙箱拒绝,需升级权限 --- 2. edit 工具(7 次) 用于精确修改文件内容,是完成配置优化的核心工具。 调用次数 目标文件 修改内容 作用 第 1 次(失败) ~/.dsh/profiles/web/cordis.patch.yml 将注释和 httpProviders 替换为包含 providers 的新配置 在配置中新增视觉链(providers),使整轮识图优先使用 sensenova 第 2 次(失败) 同上 同样的修改,但因权限不足失败 触发权限升级请求 第 3 次(成功) 同上 同样的修改,带上 sandbox_permissions: danger-full-access 获得用户授权后成功写入新配置 第 4 次(失败) 同上 再次修改,加入 wrappedProviders 配置 显式包装 opencode-go 模型,使其也能出现在模型选择器中 第 5 次(成功) 同上 同上,同样使用高权限 第二次修改成功,最终配置包含 providers, httpProviders, wrappedProviders --- 3. read 工具(4 次) 用于只读查看文件内容,与 cat 作用类似,但通过 DSH 的文件系统 API 实现。 调用次数 目标文件 作用 1 ~/.dsh/profiles/web/cordis.patch.yml 读取当前配置,了解 httpProviders 的现状 2 同上 修改前再次读取,确认 old_string 能精确匹配 3 同上(修改后) 验证修改后的文件内容是否正确 4 /Users/ygs/.dsh/profiles/web/cordis.patch.yml 再次读取,确认 inode 和内容 --- 4. write 工具(1 次) 用于创建或完全覆盖一个文件。 调用次数 目标文件 内容 作用 1 DSH识图模型配置使用说明.md 整个 Markdown 文档内容 生成一份完整的使用说明文档,涵盖目标配置、模型能力表、配置文件结构、两条识图路径、验证方法、常见问题等六大块 --- 5. skill 工具(2 次) 用于加载技能(Skill),技能是预先编写好的专业指令集,能扩展 Agent 的能力。 调用次数 技能名 作用 1 dsh-archive-agent-notes 加载 Agent Note 归档技能(但在本次对话中未真正执行,只是加载) 2 knowly-clipboard 加载 knowly 远程剪贴板技能,该技能描述了如何上传文件到 Knowly,为后续上传做准备 --- 6. ask_user_question 工具(1 次) 用于在关键决策点向用户提问,获取用户的明确选择。 调用次数 问题内容 选项 作用 1 “图片轮的识图方式目前有两条实现路径,你希望用哪种?” ① 整轮自动切识图模型(推荐) ② 工具优先 确认用户希望使用“整轮自动切”还是“工具优先”模式,用户选择了前者,Agent 据此调整配置中的 routing 参数 --- 7. vision_describe 工具(2 次) 用于调用视觉模型识别图片内容,是验证识图链路是否生效的终端测试工具。 调用次数 图片路径 问题 结果 1 card_show.html-shot-700x900.png “这张截图里主要展示了什么界面?概括要点。” 失败,因为当前模型是 deepseek-v4-flash,不支持图像输入,报错“unknown tool”或模型不支持 2 card_saltlake-crop-60-60-1020-900.png “这张卡片上主要有哪些元素?概括内容,回答 JSON。” 成功,返回了结构化 JSON,描述卡片内容(“暮色如酒,盐湖微醺”等),证明识图链路已走通,且使用的是 sensenova 模型 --- 8. vision_activate 工具(1 次) 用于手动挂载视觉工具。在正常图片轮中会自动挂载,但为了在纯文本轮中调用 vision_describe,需要主动激活。 调用次数 参数 作用 1 {}(无参数) 将 vision_describe, vision_ground, vision_crop 等全套视觉工具挂载到当前会话中,使其可被调用 --- 9. read_image 工具(2 次) 用于尝试直接读取图片文件,但前提是当前模型必须声明支持图像输入。 调用次数 图片路径 结果 意义 1 card_saltlake-crop...png 报错:“model 'deepseek-v4-flash' does not declare image input” 证明了文字轮模型确实不支持识图,间接验证了配置中 deepseek-v4-flash 为纯文本,符合预期 2 同上 同样报错 再次确认,强化证据 --- 10. todo_write 工具(1 次) 用于更新任务清单,帮助 Agent 追踪多步骤工作的进度。 调用次数 任务列表 作用 1 ① 撰写 DSH 识图模型配置使用说明 Markdown(in_progress) ② 上传使用说明到 Knowly(pending) 记录当前工作状态,为后续上传做准备 后一次更新 将两个任务状态都改为 completed 标记任务完成,整理工作成果 --- 三、高频命令背后的“组合拳”思路 通过分析这些工具调用,我们可以还原 Agent 解决“识图模型配置优化”这一任务的典型工作流: 1. 调研阶段: · 使用 bash + cat/ls 查看现有配置文件(settings.yaml, cordis.patch.yml) · 使用 bash + find/grep 在源码中搜索 vision 相关实现 · 使用 bash + curl 直接测试模型 API,验证 deepseek 和 sensenova 的能力差异 2. 方案设计阶段: · 通过 read 读取 cordis.patch.yml,了解当前 httpProviders 配置 · 分析源码后确定需要修改 providers(视觉链)和 wrappedProviders(包装) 3. 修改与验证阶段: · 使用 edit 修改配置文件(遇到权限不足时,配合 ask_user_question 获取用户授权) · 使用 bash + lsof 检查进程是否加载了新配置(通过 inode 对比) · 使用 bash + ps/lsof 确认进程 PID 变化(重启后旧进程消失,新进程出现) 4. 端到端测试阶段: · 调用 vision_activate 挂载视觉工具 · 调用 vision_describe 识别图片,确认走的是 sensenova 链路 · 调用 read_image 触发错误,确认文字轮确实为纯文本 5. 交付阶段: · 使用 write 生成使用说明文档 · 使用 bash + python3 执行 knowly 上传脚本,将文档发布到远程存储 --- 四、学习要点 通过这份对话记录,你可以学到: · 组合工具解决问题:一个复杂任务需要多种工具配合(如 lsof + stat + edit 协同完成配置修改与验证)。 · 系统化调试思维:从“调研现状”→“设计方案”→“小步修改”→“逐步验证”→“端到端测试”的闭环。 · 权限管理:当工具因沙箱限制失败时,Agent 能够识别并请求升级权限(danger-full-access)。 · 用户交互:在关键决策点(如识图模式选择)主动询问,而非擅自决定。 · 验证驱动开发:每一步修改后都通过命令(如查看 inode、测试 API)验证生效,而非靠猜测。
配图 (可多选)
选择新图片文件或拖拽到此处
标签
更新文章
删除文章