55 Commits

Author SHA1 Message Date
8487cae5cd fix(theme): 硬编码暗色字体色改var(--ink-N)主题变量(1文件)——暗色主题下深色文字不可见治理2026-09-17 2026-09-18 14:04:22 +08:00
a243a16941 feat(secret): 敏感信息库前端接入——AgentIO钥匙图标+选择窗数据源(2026-09-17)
- agent_config.py: GENERAL_TOOLS += 6 个 ToolDefinition(category=secret,
  required 显式声明防 native FC 把可选参数标必填逼 LLM 编值)。
- wwwroot/api/secret_options.dspy: AgentIO 选择窗数据源。身份取自 get_user()/
  get_userorgid(),**不接受前端传 user_id/org_id**(否则改参数即可枚举他人凭据名称);
  双保险剔除 encrypted_value/fingerprint;未登录返 success:false(区分没登录与没数据)。
  RBAC 已被 rp.json 的 /pipeline_core/**(logined) 覆盖,无需额外注册。
- 3 个 .ui 的 AgentIO options 注入 secret_dataurl/secret_format/secret_title/
  secret_tip(共4处,含 agent/index.ui 动态建 tab 的 script 字符串)。
  未传 secret_dataurl 时钥匙图标不渲染 → 其他宿主应用零影响。

bricks 侧配套(UiText.insertAtCursor / AgentInput 弹窗 / AgentIO 透传)在 bricks 仓库。
2026-09-17 15:45:17 +08:00
a26aaa2bdb docs(bidding-skills): 分析拆解机制化说明——analyst技能char_range分段硬规则(只读本区间禁全量重读);bid-orchestration技能说明机制层自动拆解与create_sub_tasks分工 2026-09-15 17:47:27 +08:00
3a3e38d15a fix(core): agent_project_popup的GET/POST op撞名——GET op=switch(列表)误入POST分支报'缺少project_id';POST动作改op=do_switch,前端点选脚本同步 2026-09-11 18:33:42 +08:00
166e282d26 feat(core): 会话「📁 项目」统一入口——agent_project_popup.dspy(menu/new/switch/create四op);新建=输项目名→create_project能力函数(alloc目录+审计)→start激活+初始迭代→会话进入;切换=本产线+本人创建列表点选→归属校验→双写session+全局指针→会话进入;agent_menus硬编码项目按钮(所有专业产线通用);无项目提示升级为'选择或新建'带直达按钮(agent_menu_open/workspace_popup同口径);menu_open透传session_id/pipeline_id给内嵌页修多tab串项目;模型配置三件套升级会话级解析get_session_project_id 2026-09-11 18:29:17 +08:00
b399663863 feat(agent): 五级作用域工具解析+patch_file+原生视觉上传构造
1. tool_sources.py(新): global/org/pipeline/role/project 五级工具作用域解析
   - 策略表 pipeline_tool_policies allow/deny(配套 models+CRUD json)
   - capability 两层语义: 映射手册(all/概念技能,含global层) + 声明注入
     (仅org/pipeline/role/project/user层)——防 generic 会话经 global 概念
     技能拿到~70个产线工具,击穿七层隔离(单测 29/29 含此回归)
   - role 白名单是过滤器非添加器,且作用于 base+capability 全集
2. agent_config: GENERAL_TOOLS 加 patch_file(定点替换,唯一性校验);
   write_file 描述引导改文件优先用 patch_file
3. upload_tools: is_image + build_image_parts(OpenAI多模态data URL,
   8MB/张+4张/条上限,超限显式告知不静默丢)
4. agent_chat/agent_chat_generic: 图片分流不进文本上下文,
   image_paths 传 gateway
5. load_path: 策略管理页注册
2026-09-10 18:36:06 +08:00
4b2fd4cd7a feat(ownership): 三张跨产线表归属迁入——sd_projects/sd_project_role_models/pipeline_deliverables models+CRUD json+15个api dspy+手写角色模型页自pipeline-sdlc迁入(第2轮迁归属)
- models: 3张表JSON迁入(sd_projects全产线项目容器/pipeline_deliverables被bidding+service+core写681行实证/sd_project_role_models被pipeline-service三处消费)——分层倒置修复:core的agent_config.py裸查sd_projects/pipeline_deliverables,低层查高层表
- json: sd_project_list.json/pipeline_deliverables_list.json迁入,subtables迭代/仓库页改绝对路径/pipeline-sdlc/**(跨模块相对路径会解析到core不存在的目录)
- api: 15个CRUD页面依赖的dspy迁入(get_project_options等,entire_url('../api/')相对解析跟页面走);get_module_dbname('pipeline_sdlc')→pipeline_core(app层一律返pipeline,行为不变仅语义归位)
- init/data.json: 4组字典随表迁(sd_project_status/sd_project_type/deliverable_type/review_status)——normalize幂等键{parentid}_{k}不变,import_init重跑无副作用
- .gitignore: 补wwwroot/sd_projects/+wwwroot/pipeline_deliverables/(xls2ui生成目录,build.sh第7步清单已含pipeline_core,重生成不脏工作树)
2026-09-10 12:33:30 +08:00
5ad85f1b60 feat(mobile): 手机端「更多」产线入口+功能按钮收缩(2026-09-08用户要求:给会话留最大空间)——my_pipelines.dspy 加 fmt=more 返回 MobileSheet 项[{name,label,icon,desc,url}],url 直达 mobile_agent.ui?pipeline_id=X&embed=1 单产线会话页(已购即出现在底部「更多」,无需改 index.ui);mobile_agent.ui 加 embed 分支(隐藏 ChipBar 胶囊条+门禁遮罩,锁定产线,AgentIO 自带 pipeline_id/session_id=m_<pid>,会话区最大化,服务端 agent_chat 硬门禁兜底);agent_menus.dspy 按 _is_mobile 端形态分流(桌面一排 Button 原样不变,手机收缩为单个「⋯ 功能」Button→MobileSheet 竖排,项 popup:true 点击走 agent_menu_open/workspace_popup 的 PopupWindow 自开链路,与桌面完全一致) 2026-09-08 19:33:59 +08:00
2cfbc55dc3 feat(mobile): 未购产线门禁——mobile_agent.ui加遮罩引导层(尚未购买任何产线→去商城/用通用助手,遮罩desktop_hidden+select有产线即hide)+agent_chat.dspy服务端订阅门禁(未购/过期拒绝对话,平台角色豁免,DB异常fail-open)+my_pipelines加mode=full+agent_menus通用模式工作空间按钮+agent_generic工作空间改_generic锁专属目录(2026-09-08用户三条要求) 2026-09-08 16:01:13 +08:00
c7b766e1c1 feat(mobile): 手机端产线工作界面——mobile_agent.ui(ChipBar已购产线胶囊+AgentIO全屏,mobile_opts压margin)+my_pipelines.dspy(客户按product_subscription未到期×pipelines published过滤,平台角色看全部,get_user_roles失败降级按客户安全侧)(2026-09-07手机端适配:只有购买过的产线可见) 2026-09-08 14:28:37 +08:00
94c78dea1b feat(core): 会话agent模型下拉传capabilities=chat——只列对话能力t2t/i2t/m2t(2026-09-06用户定夺) 2026-09-06 19:48:50 +08:00
e03e1fa213 fix(agent-chat): 确认框显示工具名+参数摘要——旧实现只读command字段致apply类工具显示空命令被迫盲确认 2026-09-05 21:25:49 +08:00
523ddf451d fix(isolation): 通用会话剔除shell类工具+上传落专属目录
- load_agent_config generic 时剔除 category=shell(run_command 无法圈禁在工作目录内,
  拿到即可遍历整个工作空间枚举各产线项目——第6层泄漏的 schema 层防线)
- upload_tools.resolve_upload_dir 加 generic 参数:通用会话上传落 _general/{uid}
  专属目录,与 AgentExecutor 文件根一致
- agent_chat_generic.dspy: 上传解析传 generic=True
2026-09-05 15:21:51 +08:00
d0ff880848 fix(agent): 完毕行样式改平铺color(bricks嵌套style无效铁律) 2026-09-05 11:07:16 +08:00
95824fb732 feat(agent): 对话应答结束后追加完毕行(Text otext+i18n,词条见pipeline-app/i18n/*/i18n.json) 2026-09-05 10:59:02 +08:00
0d5c5ea00f refactor(llm): 模型选择收敛到模型治理模块——agent_model_options改薄壳委托;旧llm CRUD(json/models/wwwroot/llm+init.py函数)删除;agent_config缺省模型名清空(交机构策略);llm_v1端点委托统一推理引擎 2026-09-04 17:05:00 +08:00
d05571cc96 fix: list_messages/模型下拉产线隔离缺口
- list_messages原无过滤返回全表→按user+session+pipeline过滤(跨产线/跨用户泄漏)
- agent_model_options接收pipeline_id并传给get_session_project_id,防跨产线项目劫持模型选中态
2026-09-02 19:05:33 +08:00
20250b326b feat(项目管理): GENERAL_TOOLS 5个项目管理工具定义(终止/删除类需确认)+停止词拦截放行项目指令+project技能安全规范
- agent_config: project_info/list_my_projects/pause/resume/delete_project 定义,后三者标requires_confirmation
- agent_chat.dspy: 停止词拦截排除含项目词指令(否则'终止项目'到不了agent)
- project SKILL.md: 会话agent项目管理安全铁律(代码层校验人类owner)
2026-09-01 11:51:49 +08:00
ymq
e598665b8e fix(upload): 上传截断显式告知+generic补文件处理 2026-08-31 21:22:41 +08:00
5955232ed5 fix(menu): require_project判断从渲染时移到点击时——切项目后菜单按钮不再永远报无项目
- agent_menus: 删除渲染时固化的报错脚本绑定,require_project/session_id/pipeline_id
  作为参数传给 agent_menu_open,点击时实时校验
- agent_menu_open: 点击时实时查会话项目(含产线隔离),无项目才提示切换
- 根治:页面加载时未切项目→按钮写死报错脚本→切了项目仍报「请先在会话中切换项目」
2026-08-31 18:38:55 +08:00
776e583be2 fix(upload): 会话上传文件复制进项目根目录+prompt告知路径——根治agent找不到上传文件 2026-08-31 17:54:27 +08:00
ymq
c848bda300 fix(generic): agent_chat_generic 透传前端模型选择 model_id 2026-08-30 15:07:35 +08:00
337a4c6f90 fix(model-select): 下拉值改llm.id显示llm.name——同名不同供应商不再合并 2026-08-30 09:49:38 +08:00
032fd853ee fix: agent_menus产线隔离——跨产线项目不劫持本产线菜单; 工作空间按钮带产线参数 2026-08-29 15:00:21 +08:00
34a13ebf37 refactor(pipeline_core): 移除产线管理三功能(产线定义/产线步骤/发布记录)死库存
- 证据: pipeline_steps、pipeline_versions 表恒为0行, 三功能上线后从未使用
- 产线定义已收敛为代码能力包(PipelineAbility)+pipelines表元数据,
  页面无法定义新能力(每种能力需先写代码注册handler), 在线开发属伪命题
- 删除: wwwroot 下 pipelines/pipeline_steps/pipeline_versions/pipeline_editor
  页面目录与配套 API dspy、json/models CRUD 定义、init.py 死函数、
  load_path.py 权限注册
- 保留: pipelines 表(agent 运行时读 name/default_model)、executor 引擎、
  agent/llm/skill_proposals 等模块主体
2026-08-28 16:34:02 +08:00
1c4b158a3f feat(agent): 会话模型选择持久化——agent_chat 传 model_id、下拉按项目模型选中
- agent_chat.dspy: 提取前端 model_id 传给 gateway.run_message(校验+持久化到项目)
- agent_model_options.dspy: selected 标记=当前项目已设模型(按 session_id 解析,
  无项目回退个人全局)——下拉每次打开都恢复项目当前模型,不回退首项
- agent/index.ui: 模型下拉带 session_id(多 tab 各自项目,下拉解析对的项目)
2026-08-28 12:26:18 +08:00
b5c7dd3f44 fix(agent_menus): 项目解析收敛到 get_session_project_id(含悬空引用防护)
不再手写 session→项目解析(与解析层语义漂移是「会话有项目、入口说没有」的根因之一)
2026-08-27 17:44:38 +08:00
ymq
f5689defa8 feat(agent): 会话入口支持 pipeline_id 传参(默认产线) 2026-08-27 13:12:45 +08:00
717651f4ab fix(llm-proxy): get_userorgid 是 async,补 await(否则 coroutine str 化超长 DataError 1406) 2026-08-25 14:13:45 +08:00
7c57550277 feat(llm-proxy): OpenAI 兼容代理端点 + token 签发/吊销/列表 dspy 2026-08-25 14:11:42 +08:00
7842d2570f feat(agent): 工作空间控件按会话传递session_id
- agent_menus.dspy 按 session 解析项目 + 工作空间按钮URL拼 session_id
- index.ui 默认tab/新建会话 tab 的 agent_menus urlwidget 带 session_id
2026-08-24 16:40:49 +08:00
023b2c6145 feat: 技能 publish 落点按 org_id 分流——组织自有规范落 org scope
机构技能层架构配套:技能提议 publish 时按提案 org_id 决定落点——
org_id='0'(ocai/平台)写 global(所有组织缺省共享);org_id≠'0' 写
skills/orgs/{org_id}/(组织自有开发规范,经 get_merged 的 org 缺省继承
+ 组织覆盖机制,该组织项目角色可见且覆盖 ocai 同名)。
2026-08-23 21:43:04 +08:00
349752b473 feat(agent): 产线功能菜单按 require_project 标记,无会话当前项目时点击报错 2026-08-22 18:55:00 +08:00
b9998ed00d refactor(skill): 单一技能树——七级 scope 全在全局 skills/ 下,去掉 ensure_org_skills 复制副本
- skill_loader: 加 project_common scope(projects/ 项目通用,不分 project_id) + project 私有改挂 orgs/{org_id}/{project_id}/,SCOPE_PRIORITY 七级
- skill_pack: ensure_org_skills 去复制逻辑改薄封装返回 get_skills_base(),删 _sync_tree/get_org_skills_dir dead code
- skill_pack.dspy/skill_proposals.dspy: base_dir 改全局 skills/,删同步所有机构循环
2026-08-21 19:18:45 +08:00
03745f38e9 feat(agent): 开发产线多会话 TabPanel + 新建会话按钮 2026-08-20 17:39:34 +08:00
ad2459b073 feat: agent 会话危险命令确认提示新增「全部确认」选项 2026-08-19 14:09:27 +08:00
65f547c400 fix: agent_chat 传 base_url 给 gateway(/task 弹窗 url 完整化) 2026-08-18 12:53:56 +08:00
195551261f fix: agent_chat.dspy reply 里 widget JSON 顶层透传(/task 弹窗渲染) 2026-08-18 12:42:11 +08:00
f842d2e70f feat(llm): agent模型下拉返回个人选择selected标记 2026-08-17 13:31:05 +08:00
ae7c55db48 fix(llm): 模型下拉严格本机构隔离 2026-08-17 13:22:26 +08:00
1254ff8d96 feat(llm): agent模型下拉按org_id过滤 2026-08-17 12:18:35 +08:00
17ad169829 refactor(team-communication): 移除配置表,规范改为 skill
团队角色/问题类型/冒泡路径不再用 DB 表 + CRUD,改为 team-communication skill
(产线默认规范,项目可覆盖):
- 删 pipeline_team_roles/pipeline_problem_types 两表 model+json+api dspy
- 回退 pipeline_core/init.py CRUD 函数 + load_path.py 路段
- 重写 team-communication SKILL.md 为分层可覆盖规范文档
2026-08-16 22:08:01 +08:00
ff02533cb6 feat(team-communication): 团队沟通配置 — 团队角色(+agentid) + 问题类型(冒泡路径)
新增通用问题冒泡的数据模型与配置 CRUD:
- models/json: pipeline_team_roles(角色+agentid,多agent区分) + pipeline_problem_types(escalation_path)
- pipeline_core/init.py: _simple_crud 通用 CRUD + 6 个 create/update/delete 注册
- wwwroot/api: 6 个 dspy 端点
- scripts/load_path.py: RBAC 路径
- skills_library/all/team-communication/SKILL.md: 团队沟通技能
2026-08-16 21:25:38 +08:00
670e73d8e5 fix: 菜单按钮查询参数不预先 urlencode,避免前端双重编码
bricks_fetch 的 url_parse 会把 url 查询参数提取后 encodeURIComponent 再编码一次,
dspy 里若已 urlencode 则 title(emoji/中文)被双重编码成 %F0%9F... 明文。
改为直接拼原始值,由前端统一编码一次。
2026-08-16 19:29:19 +08:00
34f4c5b79c fix: 菜单按钮 url 用 entire_url 生成绝对路径,避免前端 absurl 相对路径拼接错误
agent_menus.dspy 按钮 url 原用相对路径(/pipeline_core/api/...),前端 absurl 对
以 / 开头的 url 拼接产生 /pipeline_core/api//pipeline-sdlc/... 双斜杠错误。
改用 entire_url() 生成绝对 URL(与 agent/index.ui 的 ability_menu 一致)。
2026-08-16 19:24:56 +08:00
08f628dba1 feat: 技能提议管理(skill_proposals表+管理API+列表UI+界面)+agent自省propose_skill工具 2026-08-16 19:16:52 +08:00
6daac16190 fix: agent会话dspy加confirm事件处理分支(友好提示而非原始JSON) 2026-08-16 18:52:52 +08:00
085623f700 fix: 功能弹窗尺寸改width/height百分比(85%/80%),cwidth/cheight字符单位太小 2026-08-16 18:41:19 +08:00
b886bf8623 fix: agent_menu_open弹窗urlwidget用entire_url包裹(修复相对路径拼错500) 2026-08-16 18:39:02 +08:00
b62390ccde feat: 功能菜单按钮改urlwidget事件+通用弹窗agent_menu_open控制大小+固定工作空间按钮 2026-08-16 18:34:10 +08:00