Generated by sparticle-toolkit feature-memory-sync Co-authored-by: Denya0529 <217564326+Denya0529@users.noreply.github.com>
28 KiB
2026-Q2 Skill Changelog
按时间倒序记录本季度的重要变更。
2026-06-07: 新增 table-query skill(SQLite 表查询)
类型:新功能
背景:bot 上传的 Excel/CSV 表格此前只能走 rag_retrieve 语义检索回答问题,对"价格/数量/库存/排名/聚合"这类结构化问题精度差、答非所问。需要一条"快速、不走 LLM 的 SQL 查询路径"。
改动:
- 新增
skills/developing/table-query/:SKILL.md:定义 search-tables → get-schemas → run-sql 三步工作流;明确"backend 不做 LLM 推理,由 agent 自己写 SQLite SQL";category: Data & Retrieval。scripts/table_query.py:CLI 入口 + run-sql plan 执行器(plan 通过 stdin heredoc 传递,无需 shell 转义)。skill.yaml:元数据。verify_table_query.sh:自检脚本。
- 工作流要求:search-tables 每问最多 1 次,run-sql 出错重试 ≤ 2 次,且不回退到 search-tables;search-tables 无果时降级到
rag_retrieve。
根因:N/A(新功能)
影响:
- agent 可直接对上传表数据做 SUM/AVG/COUNT 等结构化查询,并通过
__src列 +file_ref_table输出行级 citation。 - 同时引入 plan-on-stdin 的调用约定(
<<'PLAN' ... PLAN),后续类似 SQL/JSON 入参的 skill 可参考此模式以避免 argv 转义问题。
相关文件:
skills/developing/table-query/SKILL.mdskills/developing/table-query/scripts/table_query.pyskills/developing/table-query/skill.yamlskills/developing/table-query/verify_table_query.sh
Commit/PR:bb74aee
2026-06-05: 新增 mineru skill(PDF/Office/图片 → Markdown 解析)
类型:新功能
背景:缺少统一的"文档转 Markdown"管道,PDF/Word/PPT/Excel/图片需要走不同工具,且 OCR / 公式 / 表格识别能力不一致。
改动:
- 新增
skills/developing/mineru/(约 4700 行,30 文件):SKILL.md+references/(api_reference / comparison / integrations)。scripts/mineru.py:核心 CLI,自动路由 Agent API(无 token)与 Standard API(需MINERU_TOKEN,支持大文件/批量/DOCX/HTML/LaTeX 导出)。scripts/mineru_mcp.py:MCP server 包装。scripts/sinks/:airtable / coda / confluence / dingtalk / feishu / linear / local / notion / onenote / roam / siyuan / slack / ticktick / wecom / wps / yuque 等多目标写出。scripts/chunking.py/splitter.py/local_engine.py:分块、切分、本地引擎。
category: Document Processing,标准依赖(仅标准库)。
根因:N/A(新功能)
影响:
- 提供"零 token 起步、有 token 升级"的渐进式解析路径,降低部署门槛。
- 多 sink 设计可作为后续"采集 → 结构化 → 多目的地分发"类 skill 的参考骨架。
相关文件:
skills/developing/mineru/SKILL.mdskills/developing/mineru/scripts/mineru.pyskills/developing/mineru/scripts/mineru_mcp.pyskills/developing/mineru/scripts/sinks/*.py(15 个目标)
Commit/PR:b618cb1
2026-06-05: rag-retrieve 系列空 query 改返回 success 文案(替代 JSON-RPC error)
类型:行为变更(兼容性)
背景:rag_retrieve / table_rag_retrieve 工具在缺少 query 参数时返回 JSON-RPC -32602 error。MCP/agent 链路上 error 容易被上层吞掉,agent 看不到"为什么失败",无法自我修复。
改动:把 5 个 rag-retrieve server 变体的"missing query"分支由 create_error_response(-32602, ...) 改为 create_success_response(...) 携带 content[].text = "Error: missing required parameter 'query'. Please call this tool again with a non-empty 'query' argument describing what you want to retrieve.":
skills/autoload/onprem/rag-retrieve/rag_retrieve_server.pyskills/autoload/support/rag-retrieve/rag_retrieve_server.pyskills/developing/rag-retrieve-no-citation/rag_retrieve_server.pyskills/onprem/rag-retrieve-only/rag_retrieve_server.pyskills/support/rag-retrieve-only/rag_retrieve_server.py
根因:MCP 协议层的 error 在多数 agent 框架下不会作为"tool 返回结果"传给 LLM,从而无法触发重试;改成 success-with-error-text 让 agent 把错误文本当 tool output 读到,并在下一轮自然带上 query 重试。
影响:
- 客户端不能再依赖 JSON-RPC error code = -32602 判定缺参,必须从
content[].text前缀"Error:"解析;任何在 success 路径上做强校验/落盘的中间层需要兼容这种"假成功"形态。 - 新 MCP server 出错路径如果是"需要 agent 自纠错"的语义错误,应走同样的 success-with-error-text 模式;底层崩溃 / 不可恢复错误仍走 error response。
相关文件:见上。
Commit/PR:ecf332a
2026-06-02: 修复 deepagents 落盘 backend grep 扫描全盘问题(virtual_mode=True)
类型:Bug 修复
背景:create_custom_cli_agent 给 large_results / conversation_history 两个路由创建了独立 FilesystemBackend(tempfile.mkdtemp(...), virtual_mode=False),配合 CompositeBackend 做前缀路由。线上出现 grep 调用耗时 45–152s 的异常。
改动:将 large_results_backend 与 conversation_history_backend 的 virtual_mode 由 False 改为 True,并在调用处补 NOTE 注释说明 virtual_mode 的语义。
根因:CompositeBackend 会先剥掉路由前缀,再把剩余路径(极端情况下就是 "/")转发给被路由 backend 的 grep。当 backend 的 virtual_mode=False 时,"/" 解析为真实根目录而不是 root_dir,于是 grep 在沙箱 / 容器内对 /usr、/var、其他会话的 tmp 目录全盘扫描,单次耗时达数十秒到分钟级。virtual_mode=True 会把所有路径锚定到 root_dir,并过滤掉根目录之外的结果,把扫描限制在 backend 自己的 tmp 子目录内。
影响:
- 这两个 backend 的 grep 调用回落到毫秒级,整个 deep agent 的 tool 调用 P99 大幅下降。
- 任何新增的"落盘但只服务于本次会话"的
FilesystemBackend走CompositeBackend路由时,必须使用virtual_mode=True,否则容易复现同样的全盘扫描问题。 - 真实 workspace backend(用户文件根目录)仍然是
virtual_mode=False,因为它需要看到沙箱真实路径上的产物。
相关文件:
agent/deep_assistant.py
Commit/PR:6bccd89
2026-05-29: 新增 ToolMetricsMiddleware(tool 调用埋点)
类型:新功能
背景:deep agent 内部的工具调用(含 MCP tool / skill script / 文件系统操作等)此前缺少统一的耗时与成功率埋点;问题排查只能依赖日志,无法对接 emit_question_metric 的结构化指标体系。
改动:
- 新增
agent/tool_metrics_middleware.py,定义ToolMetricsMiddleware(AgentMiddleware):- 同时实现
wrap_tool_call(同步)与awrap_tool_call(异步)。 - 对每次 tool 调用计时(
time.monotonic()),通过emit_question_metric(stage="catalog_agent.tool_call", ...)上报:status(success/error/cancel)、duration_ms、error_type、tool_name、tool_call_id、trace_id、bot_id、session_id、model、stream、tool_response、enable_thinking。 - 异步分支特别捕获
asyncio.CancelledError上报status="cancel"后再 re-raise。 - 指标 emit 自身的异常被 try/except 兜住,绝不影响 tool 调用本体。
- 同时实现
agent/deep_assistant.py::init_agent中间件链中,将ToolMetricsMiddleware(config)插在EmptyResponseRetryMiddleware之后、ToolUseCleanupMiddleware之前。
根因:N/A(新功能)
影响:
- 所有走 deep agent / sub agent 的 tool 调用现在都会自动出
catalog_agent.tool_call结构化指标,可在指标后端按tool_name/bot_id/status聚合做 P50 / P99 / 错误率分析。 - 中间件顺序硬约束扩展:
EmptyResponseRetryMiddleware → ToolMetricsMiddleware → ToolUseCleanupMiddleware → CustomFilesystemMiddleware → SubAgentMiddleware → AnthropicPromptCachingMiddleware,调整init_agent中间件顺序时需保持ToolMetricsMiddleware在最外层(仅次于重试),否则统计到的耗时不包含其他中间件开销。 - emit 失败只打 logger.exception,不会回传给 tool handler;指标缺失需在指标后端层面单独告警,不要依赖 agent 端口的报错。
相关文件:
agent/tool_metrics_middleware.py(新增)agent/deep_assistant.py
Commit/PR:9f0ae25
2026-05-26: skill category 字段全面接入
类型:新功能
背景:skill 数量越来越多(common / developing / onprem / support / linggan / autoload 各路径下数十个),列表 API 需要前端能按类别分组展示,元数据层面缺少 category 字段。
改动:
routes/skill_manager.py:SkillItemmodel 新增category: str = "other"。SkillValidationResultdataclass 新增可选category: Optional[str]。parse_plugin_json解析plugin_config.get('category');parse_skill_frontmatter解析 frontmatter 的metadata.get('category')。get_official_skills中 fallback 为"other";get_user_skills中 fallback 为"custom"。get_skill_metadata_legacy在category非空时写入返回 dict(保持向后兼容)。
- 批量给 common / developing / onprem / support 多个 skill 的
.claude-plugin/plugin.json与SKILL.mdfrontmatter 添加category字段。 data-dashboard与mcp-ui的category从"Data & Retrieval"修正为"Interactive UI"(更贴切 MCP App 的渲染语义)。
根因:N/A(新功能)
影响:
GET /api/v1/skill/list返回项现在包含category字段;前端可按 category 维度做分组/筛选。- skill 元数据约定扩展——新 skill 应在 plugin.json 或 SKILL.md frontmatter 中写明
category,否则会落到"other"/"custom"兜底。 plugin.json.category与SKILL.md.category同时存在时以前者为准(get_skill_metadata优先 plugin.json)。
相关文件:
routes/skill_manager.pyskills/common/data-dashboard/.claude-plugin/plugin.jsonskills/common/mcp-ui/.claude-plugin/plugin.json- 以及一批
skills/{common,developing,onprem,support}/*/SKILL.md与.claude-plugin/plugin.json
Commit/PR:203dcf4, 3ada55a, 9658588
2026-05-26: developing 分支批量新增多类 skill
类型:新功能
背景:[待补充]——经 developing→staging 合并集中落地一批新 skill 与 linggan 系列 skill 回归。
改动:
- 新增
skills/developing/ai-ppt-generator/:调用百度 AI 生成 PPT,按 topic 自动选模板(商务/科技/教育/创意/中国风等);category: Document Processing。 - 新增
skills/developing/nfc-medicine-lookup/:通过 NFC 芯片 ID 或药品名称查询药品信息,面向老年用户的语音助手交互口径;category: Developer Tools。 - 新增
skills/developing/ppt-outline/:PPT 大纲与独立 HTML 演示文稿生成(dark/light/tech/minimal 四种风格);category: Document Processing。 - 新增
skills/developing/z-card-image/:生成配图、封面图、卡片图、社媒帖子分享图等;依赖python3+google-chrome。 skills/developing/static-hosting/SKILL.md由 1 行说明扩展为完整 80 行 skill;同时一批已有 SKILL.md / plugin.json 补category。skills/linggan/*系列 skill(baidu-search / bot-self-modifier / caiyun-weather / competitor-news-intel / contract-document-generator / financial-report-generator / market-academic-insight / ragflow-loader / sales-decision-report / seedream / static-hosting / static-site-deploy / voice-notification / weather-china)经合并回归 staging。
根因:N/A
影响:
- developing skill 池扩张约 5 个新业务 skill;linggan 系列重新出现在 staging。
- 新 skill 多为 SKILL.md 型业务 skill,符合"workflow + 模板"的纯 markdown 模式;其中
ai-ppt-generator、z-card-image依赖外部BAIDU_API_KEY或google-chrome二进制。
相关文件:
skills/developing/ai-ppt-generator/SKILL.mdskills/developing/nfc-medicine-lookup/SKILL.mdskills/developing/ppt-outline/SKILL.mdskills/developing/z-card-image/SKILL.mdskills/developing/static-hosting/SKILL.mdskills/linggan/**(回归)
Commit/PR:3ada55a
2026-05-23: 新增 ecommerce-storefront skill(MCP App 型)+ MCP App 培训文档
类型:新功能
背景:MCP App 模式(host 加载静态 HTML + postMessage 传数据)已经在 mcp-ui、data-dashboard 上跑通,需要一个面向电商场景的样例 skill,演示产品浏览 / 选购 / 下单确认这类多步交互的 App 渲染;同时沉淀一份 MCP App 开发指南。
改动:
- 新增
skills/developing/ecommerce-storefront/:apps/product-list.html(288 行)与apps/order-confirm.html(233 行)两个静态 App。ecommerce_server.py(213 行)作为自带 MCP server,ecommerce_tools.json定义工具 schema。hooks/ecommerce_guide.md+hooks/pre_prompt.py注入 skill 使用指引到 system prompt。mcp_common.py(252 行)复用 MCP 通用工具基类。.claude-plugin/plugin.json配置 PrePrompt hook 与 stdio MCP server,category: Developer Tools。
- 新增
docs/mcp-app-training.md(约 1063 行):MCP App 模式的开发培训材料。
根因:N/A
影响:
- developing skill 池新增一个 MCP App 型 skill,体例对齐
mcp-ui/data-dashboard。 - MCP App 开发者有完整培训材料可参考。
相关文件:
skills/developing/ecommerce-storefront/**docs/mcp-app-training.md
Commit/PR:9d001c8
2026-05-21: Daytona 沙箱注入 shell_env 到 BASH_ENV
类型:新功能
背景:Daytona 沙箱内的 skill 脚本需要能读取 ASSISTANT_ID / USER_IDENTIFIER / TRACE_ID 等运行时上下文,但宿主 process env 无法直接透传到沙箱里。
改动:
agent/deep_assistant.pyinit_agent:当sandbox is not None and sandbox_type == "daytona"时,组装_shell_env字典(ASSISTANT_ID/USER_IDENTIFIER/TRACE_ID/ENABLE_SELF_KNOWLEDGE加上config.shell_env),构造cd {REMOTE_WORKSPACE_ROOT}\n+export VAR="..."行,通过sandbox.execute("cat > $REMOTE_BASH_ENV_PATH << 'ENVEOF' ... ENVEOF")写入沙箱内。utils/daytona_sync.py提供常量REMOTE_BASH_ENV_PATH/REMOTE_WORKSPACE_ROOT。AgentConfig增加shell_env: Optional[Dict[str, str]](调用方可追加自定义 env)。
根因:N/A
影响:
- 沙箱内通过 bash 启动的 skill 脚本可以
os.environ.get("ASSISTANT_ID")等读到运行时上下文。 - 仅 daytona 沙箱模式生效;本地或非 bash 启动的进程不会收到
BASH_ENV注入的变量。 - 扩展注入项(新增固定环境变量)需要直接改
init_agent里的_shell_env字典。
相关文件:
agent/deep_assistant.pyutils/daytona_sync.py
Commit/PR:776acc2
2026-05-12: 批量精修 retrieval policy 文案
类型:内容调整
背景:[待补充]
改动:
be96f24: 跨 6 个 skill 变体调整retrieval-policy-forbidden-self-knowledge.md的措辞(onprem / support / autoload-onprem / autoload-onprem-rag-only / autoload-support-rag-only 路径下的版本及一份retrieval-policy.md)。7b4f03d: 在更广的 10 个文件范围内同步更新retrieval-policy.md与retrieval-policy-forbidden-self-knowledge.md两套 policy,使各 skill 变体的策略口径保持一致。
根因:N/A(非 Bug)
影响:所有使用 rag-retrieve / rag-retrieve-only 这两个 hook 的 skill 在策略行为上保持一致;同时影响 onprem 与 support 两个发布分支的部署。
相关文件:
skills/onprem/rag-retrieve/hooks/retrieval-policy*.mdskills/support/rag-retrieve/hooks/retrieval-policy*.mdskills/autoload/onprem/rag-retrieve/hooks/retrieval-policy*.mdskills/autoload/onprem/rag-retrieve-only/hooks/retrieval-policy*.mdskills/autoload/support/rag-retrieve-only/hooks/retrieval-policy*.md
Commit/PR:be96f24, 7b4f03d
2026-05-11: 子 agent (SubAgent) 支持 + pmda-drug-info skill
类型:新功能
背景:需要让单个 skill 在主 agent 之外承载多个专用子 agent,按用途隔离上下文与工具集(如 pmda 药品信息场景下的 single-drug / interaction / adverse-event / patient-specific 四个专用 agent)。
改动:
- 新增
agent/subagent_loader.py:扫描 skill 目录下的agents/*.md,按 YAML frontmatter 的name/description/tools字段解析为SubAgent字典;按name去重,后扫描的覆盖先扫描的(last-wins)。 agent/deep_assistant.py:init_agent调用load_subagents(),存在则将SubAgentMiddleware(来自deepagents.middleware.subagents)插在CustomFilesystemMiddleware之后、AnthropicPromptCachingMiddleware之前,顺序匹配create_deep_agent。- 新增
skills/developing/pmda-drug-info/:完整 skill 包,包含.claude-plugin/plugin.json、hooks/pre_prompt.py+hooks/pmda-instructions.md、四个agents/*.md、自带pmda_server.pyMCP server +pmda_tools.json、mcp_common.py工具基础类。
根因:N/A
影响:
- skill 包结构新增约定:
agents/*.md目录下的 markdown 文件会被加载为子 agent。 - skill 加载流程在
init_agent内增加一次目录扫描;对没有agents/的 skill 无影响。 - skill 跨 bot 共享时存在 sub-agent 同名冲突的风险——同名 sub-agent 不会报错,而是被后扫描到的覆盖。
相关文件:
agent/subagent_loader.py(新)agent/deep_assistant.py(接线)skills/developing/pmda-drug-info/(新 skill)
Commit/PR:5b634bc
2026-05-11: pmda-drug-info MCP server 重写为 mock 实现
类型:内部改造
背景:[待补充]
改动:skills/developing/pmda-drug-info/pmda_server.py 大幅替换(+322 / -385),保留接口面向 agent 的契约,内部替换为 mock 数据实现。
根因:N/A
影响:pmda-drug-info skill 当前不再依赖外部真实 PMDA 数据源,便于开发期联调。
相关文件:
skills/developing/pmda-drug-info/pmda_server.py
Commit/PR:a92096a
2026-05-11: retrieval-policy.md 内容更新
类型:内容调整
背景:[待补充]
改动:在 onprem / support / autoload-onprem-rag-only / autoload-support-rag-only 四个版本的 retrieval-policy.md 上做了同步内容更新。
根因:N/A
影响:与同月 12 日的 policy 批量精修配套,使 rag-retrieve hook 策略保持一致。
相关文件:
skills/onprem/rag-retrieve/hooks/retrieval-policy.mdskills/support/rag-retrieve/hooks/retrieval-policy.mdskills/autoload/onprem/rag-retrieve-only/hooks/retrieval-policy.mdskills/autoload/support/rag-retrieve-only/hooks/retrieval-policy.md
Commit/PR:e6d1698
2026-05-08: 通过 MCP _meta 透传 trace_id 给 RAG 工具
类型:新功能
背景:需要把 catalog-agent 的 trace_id 透传给 MCP 端的 rag_retrieve / table_rag_retrieve 服务,便于跨进程追踪。
改动:
- 新增
agent/mcp_trace_meta.py:通过patch_mcp_client_session_trace_meta()对mcp.ClientSession.call_tool做一次幂等 monkey-patch,调用时若工具名在{"rag_retrieve", "table_rag_retrieve"}集合内且当前请求上下文有trace_id,则注入到kwargs["meta"]["trace_id"];并提供_call_tool_with_meta_compat以兼容旧版 MCP SDK(不接受meta=关键字时退化为手动构造CallToolRequestParams._meta)。 agent/deep_assistant.py:在get_tools_from_mcp()入口处调用一次补丁安装。- 同步调整
skills/onprem/rag-retrieve/rag_retrieve_server.py与skills/support/rag-retrieve/rag_retrieve_server.py,接收并使用_meta.trace_id。
根因:N/A
影响:
rag_retrieve/table_rag_retrieve现在在 MCP_meta上必带trace_id(若上下文存在)。- 全局 monkey-patch 风格 - 只要
get_tools_from_mcp()被调用过一次后,所有ClientSession.call_tool都会被包装。
相关文件:
agent/mcp_trace_meta.py(新)agent/deep_assistant.pyskills/onprem/rag-retrieve/rag_retrieve_server.pyskills/support/rag-retrieve/rag_retrieve_server.py
Commit/PR:1f06450
2026-05-06: 新增 kfs-answer skill (support 分支)
类型:新功能
背景:[待补充] - 为 support 分支补齐 kfs-answer 能力(onprem 分支此前已有同名 skill)。
改动:新增 skills/support/kfs-answer/,包括 SKILL.md 与 scripts/ 下的 query.py / search.py / detail.py / query_db.py / format_answer.py / merge_citations.py / _session.py 共 7 个脚本(约 1809 行)。
根因:N/A
影响:support 部署版本获得 kfs-answer 能力。
相关文件:
skills/support/kfs-answer/**
Commit/PR:a9227b8
2026-05-06: Daytona 沙箱增量同步漏掉符号链接
类型:Bug 修复
背景:dataset 通过符号链接挂载,但增量同步用 find -type f 只匹配普通文件,导致 dataset 符号链接没被检测到也没被打包同步到 Daytona 沙箱;并且 tar.add() 默认不 dereference,打进去的是指向宿主机路径的悬空软链。
改动:
utils/daytona_sync._list_local_changed_files:同时匹配 file 和 symlink (-type f -o -type l)。utils/daytona_sync._tar_workspace_entries:tar.add(dereference=True),把软链解引用为实际内容打包。skills/onprem/kfs-answer/SKILL.md和prompt/system_prompt_deep_agent.md:统一数据集路径用复数形式datasets/。
根因:find -type f 与 tar.add() 默认行为对符号链接不友好。
影响:Daytona 模式下 kfs-answer 等依赖 dataset 软链的 skill 可以正常使用沙箱内的数据;提示词与 SKILL.md 内的路径口径统一。
相关文件:
utils/daytona_sync.pyskills/onprem/kfs-answer/SKILL.mdprompt/system_prompt_deep_agent.md
Commit/PR:3c0fa49
2026-04-24: PostAgent hooks 非阻塞执行 + 临时停用 ToolOutputLengthMiddleware
类型:性能优化 / 临时调整
背景:非流式响应路径上 _execute_post_agent_hooks 是同步等待,阻塞了响应返回。
改动:
routes/chat.py:非流式分支将await _execute_post_agent_hooks(...)改为asyncio.create_task(_execute_post_agent_hooks(...)),hook 在后台执行,不阻塞响应。agent/deep_assistant.py:将ToolOutputLengthMiddleware整段注释掉(未删除,可恢复)。utils/settings.py:切换DAYTONA_API_KEY/DAYTONA_SERVER_URL注释行(启用自托管 Daytona,注释掉 SaaS 行)。
根因:N/A(性能优化为主)
影响:
- 非流式接口响应不再等待 PostAgent hooks 完成 → hook 中失败/异常只会被 task 内部的 logger 捕获,调用方收不到错误反馈。
- 工具输出长度暂时不再被截断,存在超长输出冲爆上下文的风险(中间件已被注释,并未拆除)。
相关文件:
routes/chat.pyagent/deep_assistant.pyutils/settings.py
Commit/PR:45a9494
2026-04-23: PrePrompt hook 内容改为模板占位符注入
类型:重构
背景:原先 PrePrompt hook 的产出文本是在 system_prompt_default.format(...) 之后追加在 prompt 末尾,hook 内容在 prompt 中的位置固定且偏后,模板对它的可见性差。
改动:agent/prompt_loader.load_system_prompt_async:先执行 execute_hooks('PrePrompt', config) 拿到 hook_content,然后通过新增的 {hook_content} 占位符传入 system_prompt_default.format(...);模板侧 prompt/system_prompt.md 增加对应占位符。
根因:N/A(结构化注入更可控)
影响:编写 PrePrompt hook 的 skill 必须依赖模板里 {hook_content} 占位符的位置;若使用了未升级的旧模板,hook 内容将不再出现在最终 system prompt 中。
相关文件:
agent/prompt_loader.pyprompt/system_prompt.md
Commit/PR:51fbf01
2026-04-23: Daytona 沙箱接入
类型:新功能
背景:技能脚本需要在隔离沙箱中执行(Daytona),避免直接污染宿主机。
改动:
agent/deep_assistant.py:- 在
init_agent中读取DAYTONA_ENABLED/DAYTONA_API_KEY/DAYTONA_SERVER_URL,启用时创建DaytonaSandbox;并将sandbox/sandbox_type传到create_custom_cli_agent/agent.invoke_config。 - 重构为并行加载:
load_system_prompt_async与load_mcp_settings_async用asyncio.gather并行;get_tools_from_mcp与asyncio.to_thread(init_daytona_sandbox, ...)并行;init_agent现在返回(agent, checkpointer, sandbox)(多了 sandbox)。 enable_skills时skills_sources从"/skills"改为"/workspace/skills"(指向沙箱内的路径)。
- 在
agent/prompt_loader.py:agent_dir_path在DAYTONA_ENABLED=True时改为/workspace,否则保持本地路径。utils/daytona_sync.py新增(204 行):沙箱与本地 workspace 双向同步。pyproject.toml/poetry.lock/requirements.txt:新增daytona、langchain_daytona依赖。utils/settings.py:新增DAYTONA_API_KEY/DAYTONA_SERVER_URL/DAYTONA_ENABLED配置。
根因:N/A
影响:
init_agent返回元组从 2 元素变为 3 元素 (agent, checkpointer, sandbox)——调用方必须同步更新解构。- skill 在沙箱模式下的根路径与本地模式不同,所有写死路径的 hook / 脚本需要兼容两种环境。
相关文件:
agent/deep_assistant.pyagent/prompt_loader.pyutils/daytona_sync.py(新)utils/settings.pypyproject.toml,poetry.lock,requirements.txt
Commit/PR:c9e0789, 8446dab
2026-04-22: 新增 rag-retrieve-no-citation 与 novare-context 两个开发中 skill
类型:新功能
背景:[待补充]
改动:
skills/developing/rag-retrieve-no-citation/:完整 skill 包,含.claude-plugin/plugin.json、README.md、hooks/pre_prompt.py、hooks/retrieval-policy.md与hooks/retrieval-policy-forbidden-self-knowledge.md、独立rag_retrieve_server.py+rag_retrieve_tools.json+mcp_common.py。skills/developing/novare-context/:包含.claude-plugin/plugin.json、README.md、hooks/pre_prompt.py。
根因:N/A
影响:开发中 skill 集合扩张,可作为后续正式版本的母版。
相关文件:
skills/developing/rag-retrieve-no-citation/**skills/developing/novare-context/**
Commit/PR:7a30e52
2026-05-20
- 变更:
mcp-ui和data-dashboard从自定义uri + data工具协议改为 MCP Apps 模式 - 说明: 静态 HTML App 放在各 skill 的
apps/目录,host 通过 resource URI 加载 iframe,再用 postMessage 传递工具数据 - 修复: 前端 MCP App resource 请求改为由
ChatView向ChatMessage传入当前 botId,避免子组件重新创建 bot manager 导致 bot_id 为空 - 作者: Claude
2026-04-20
- 新增:
skills/autoload/onprem/rag-retrieve/hooks/retrieval-policy-forbidden-self-knowledge.md - 说明: 基于现有
retrieval-policy.md衍生出更严格的检索策略,明确禁止在知识问答场景中使用模型自身知识补全答案,要求回答只能来自检索证据 - 作者: Claude