ymq 655d50bde8 feat(skill): 技能提议实时生效——写机构技能目录orgs/{org_id}/按scope覆盖global,机构间隔离
用户需求变更(2026-09-08):propose_skill从人工审核链(pending→published)改为实时生效,
但只写提议者所属机构的skills目录,靠org scope(优先级3)同名覆盖global(0),不影响其他机构。

- 新增 skill_live.py: publish_skill_live 路由决策+路径穿越清洗+frontmatter scope剥离+原子写
  * 客户机构(org≠0)→orgs/{org_id}/{name}/实时生效
  * org 0陷阱:get_merged里orgs/0/是全机构共享缺省——org0+有user_id降级users/{uid}/(仅本人);
    org0无人值守(复盘poller)拒绝实时写,保持pending人工审核链(防agent自动影响全平台)
- v2 _t_propose_skill / v1 retrospective.propose_skill 接入:落库照写(成功=published+路径审计)
- v1 poller长进程配套:_reload_skills_throttled(30s TTL)接入_build_role_skills_block/_load_skill_by_name
  (v2每条消息executor init已reload,无需改)
- 工具描述三处同步:core GENERAL_TOOLS/capability_tools TOOL_SCHEMAS/RETRO prompt
2026-09-08 23:59:24 +08:00
2026-08-08 11:43:26 +08:00

pipeline_service

产线执行引擎 —— 任务调度、步骤执行、人工任务交互、LLM 桥接。

功能

  • 任务执行DAG 步骤调度与状态机
  • 人工任务:审批/输入等待与交互
  • LLM 桥接:统一 LLM 调用接口
  • Agent LoopAI Agent 多轮任务执行
  • 意图分类:自然语言意图识别
  • 产物管理:步骤输入输出存储

数据表

说明
pipeline_tasks 任务实例
pipeline_task_steps 步骤执行记录
pipeline_artifacts 步骤产物
pipeline_human_tasks 人工任务
pipeline_step_types 步骤类型注册

安装

cd pkgs/pipeline-service && pip install .

核心模块

文件 职责
executor.py 任务/步骤调度引擎
storage.py 数据库读写
llm_bridge.py LLM API 调用
agent_loop.py AI Agent 多轮执行
human.py 人工任务处理
intent_classifier.py 意图识别
state.py 状态机
step_registry.py 步骤类型注册表
agent_loop_v2.py Agent Executor v2会话 agent 执行引擎)
workspace.py 项目/通用会话工作空间目录管理
sdlc_ability.py SDLC 产线能力包(工具定义 + handler

通用会话产线隔离2026-09-057 层纵深防御)

规范通用会话generic=Trueagent_chat_generic.dspy= 纯通用 agent 不挂任何产线工具/技能/角色/记忆,不得看到或操作任何产线的项目。

隔离层(缺一层即泄漏,详见技能 cockpit-agent-patterns

  1. 工具注册表ToolRegistry 每 executor 独立实例(禁全局单例,防跨会话残留)
  2. 默认产线回退generic 会话 pipeline_id 空不回退 DEFAULT_ABILITY_ID
  3. 产线能力包_execute_ability_tool 对 generic 直接拒绝
  4. 工具 schemaload_agent_configpipeline-coregeneric 时剔除 project/shell 类工具
  5. 执行层兜底_dispatch_sdlc_tool 对 generic 拒绝项目管理工具(别名归一后拦截)
  6. 工作空间generic 会话文件根 = _general/{user_id} 专属目录generic_workspace_dir _resolve_ws_path 越界保护圈死run_command 剔除shell 无法圈禁); resolve_upload_dirpipeline-coregeneric=True 上传落同一专属目录
  7. 历史回放_load_history / _t_session_search 对 generic 只读写 pipeline_id='' OR IS NULL 的自身历史(与存库端 store_pl='' 对称), 禁止按 created_by 全量回放(会带出用户各产线对话中的项目信息)
Description
No description provided
Readme 1.4 MiB
Languages
Python 99.5%
Shell 0.5%