Skill全文级超长内容转文件——新增host发文件能力(从issue #154拆出) #163

Closed
opened 2026-08-19 01:37:34 +00:00 by KumaAgent · 0 comments
Member

希望能解决的问题

issue #154(Skill检索侧 inject_skills 三级渐进披露)的 AC 明确写了"三级渐进披露(先给列表,模型要看某条再展开全文,超长内容转文件)",逐字要求超长技能内容转成文件。但实现期设计验证(design-verify,两轮独立对抗核实)核实:本仓库目前没有任何 host 发文件的能力——

  • CapabilitySetcapabilities.py)没有任何文件相关能力位。
  • EgressPortports.py)的方法集是 send/send_sticker/send_voice/recall/edit/send_typing_indicator/like_profile,没有 send_file 或等价方法。
  • ResourcePort.list_resources()kind 是封闭枚举 Literal["sticker", "emote", "reaction", "voice"],不含 file
  • CONTEXT.md「原生多模态路由」节明确写 file kind(入站方向)都"尚未实现"、"若落地是第五态"——出站发文件的基建现状是彻底的零。

用户拍板:文件级单独拆成本票,#154 收窄到列表+全文两级,本票负责补齐"超长内容转文件"这一级需要的 host 能力设计与落地。

描述所需要的功能

Parent

#154——本票是从 #154 拆出的第三级"文件"部分。

What to build

  • 设计并落地一个新的 host 侧发文件能力(大概率是 EgressPort 新增方法,或 CapabilitySet 新增能力位,具体形状留给本票实现期判断——不需要预先假设,需要先核对本仓库"新增 port 方法 vs 新开 CapabilitySet 布尔位"的既有裁定先例,例如对照 issue #152 ResourcePort 新增时走的是"port 存在与否当信号,不新开 CapabilitySet 布尔位"这条既有原则,本票要判断"发文件"更接近哪一类)。
  • inject_skills 工具的"全文"级响应,当 SkillEntry.content 超过一个配置阈值时,改为触发这条新的文件发送能力,而不是像 #154 里那样降级成截断+提示。

Acceptance criteria

  • 明确"发文件"能力的落点(新 EgressPort 方法 or 新 CapabilitySet 位 or 其它),并给出选择理由
  • host 未声明这项能力时,inject_skills 全文级对超长内容的现状(#154 落地的"截断+提示")保持不变——这是能力位为假时的既有降级路径,不是本票要移除的行为
  • host 声明了这项能力时,超长技能内容真的通过它送达(而不是仍然截断)
  • 补测试:能力声明/未声明两种情况下,超长技能内容的实际处理路径分别符合上述两条

Not in scope

  • 不改 inject_skills 的列表/全文两级(#154 已落地)
  • 不改技能写入侧(issue #41 已落地的部分不动)
  • 不要求这个新能力只服务技能场景——如果设计出来的机制本来就该是通用的"发文件"原语,允许其它未来场景复用,但本票只需要接通技能这一个消费方
### 希望能解决的问题 issue #154(Skill检索侧 inject_skills 三级渐进披露)的 AC 明确写了"三级渐进披露(先给列表,模型要看某条再展开全文,超长内容转文件)",逐字要求超长技能内容转成文件。但实现期设计验证(design-verify,两轮独立对抗核实)核实:本仓库目前**没有任何 host 发文件的能力**—— - `CapabilitySet`(`capabilities.py`)没有任何文件相关能力位。 - `EgressPort`(`ports.py`)的方法集是 `send`/`send_sticker`/`send_voice`/`recall`/`edit`/`send_typing_indicator`/`like_profile`,没有 `send_file` 或等价方法。 - `ResourcePort.list_resources()` 的 `kind` 是封闭枚举 `Literal["sticker", "emote", "reaction", "voice"]`,不含 `file`。 - CONTEXT.md「原生多模态路由」节明确写 `file` kind(**入站**方向)都"尚未实现"、"若落地是第五态"——出站发文件的基建现状是彻底的零。 用户拍板:文件级单独拆成本票,#154 收窄到列表+全文两级,本票负责补齐"超长内容转文件"这一级需要的 host 能力设计与落地。 ### 描述所需要的功能 ## Parent #154——本票是从 #154 拆出的第三级"文件"部分。 ## What to build - 设计并落地一个新的 host 侧发文件能力(大概率是 `EgressPort` 新增方法,或 `CapabilitySet` 新增能力位,具体形状留给本票实现期判断——不需要预先假设,需要先核对本仓库"新增 port 方法 vs 新开 CapabilitySet 布尔位"的既有裁定先例,例如对照 issue #152 `ResourcePort` 新增时走的是"port 存在与否当信号,不新开 CapabilitySet 布尔位"这条既有原则,本票要判断"发文件"更接近哪一类)。 - `inject_skills` 工具的"全文"级响应,当 `SkillEntry.content` 超过一个配置阈值时,改为触发这条新的文件发送能力,而不是像 #154 里那样降级成截断+提示。 ## Acceptance criteria - [ ] 明确"发文件"能力的落点(新 `EgressPort` 方法 or 新 `CapabilitySet` 位 or 其它),并给出选择理由 - [ ] host 未声明这项能力时,`inject_skills` 全文级对超长内容的现状(#154 落地的"截断+提示")保持不变——这是能力位为假时的既有降级路径,不是本票要移除的行为 - [ ] host 声明了这项能力时,超长技能内容真的通过它送达(而不是仍然截断) - [ ] 补测试:能力声明/未声明两种情况下,超长技能内容的实际处理路径分别符合上述两条 ## Not in scope - 不改 `inject_skills` 的列表/全文两级(#154 已落地) - 不改技能写入侧(issue #41 已落地的部分不动) - 不要求这个新能力只服务技能场景——如果设计出来的机制本来就该是通用的"发文件"原语,允许其它未来场景复用,但本票只需要接通技能这一个消费方
Yushu closed this issue 2026-08-20 03:04:27 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ProjectKuma/arise#163
No description provided.