ymq
|
e479b347bd
|
fix: remote_host 清理复制粘贴带入的零宽/BOM 不可见字符
|
2026-08-14 14:49:01 +08:00 |
|
ymq
|
70185771d0
|
fix: 远程目录 ~ 展开改用 $HOME(shlex.quote 会把 ~ 包进单引号不展开)
- _resolve_remote_dir → _rel_remote_dir 返回纯相对路径
- rsync 用 :~/,ssh mkdir/bwrap --bind 用 $HOME/rel 让远程 shell 展开
- 加强 remote_dir 安全字符校验(_REL_DIR_RE,防 shell 注入)
|
2026-08-14 14:26:29 +08:00 |
|
ymq
|
cfaf48ed5d
|
fix: 远程迁移前 mkdir -p(相对路径多级目录 rsync 不递归建父目录)
|
2026-08-14 14:22:36 +08:00 |
|
ymq
|
dc4379b235
|
feat: 远程目录 remote_dir 改用相对路径(从远程用户 home 目录开始)
- 新增 _resolve_remote_dir(相对→~/xxx)+ _validate_remote_dir(防绝对路径/..穿越)
- 移除 _FORBIDDEN_DIRS 系统目录黑名单(相对路径天然限制在 home 内)
- rsync 迁移 + bwrap --bind 统一走 _resolve_remote_dir
|
2026-08-14 14:20:47 +08:00 |
|
ymq
|
07383a9dd5
|
fix: switch_project/create_project 持久化当前项目 + auto-inject 新需求识别
- _persist_project 持久化 current_project_id 到 pipeline_agent_settings(只改内存字段导致下一轮回退旧项目)
- auto-inject 兜底识别新需求描述 → create_task 而非 diagnose/list_tasks
|
2026-08-14 13:59:54 +08:00 |
|
ymq
|
92ee88d1f4
|
refactor: 审计逻辑迁移到独立模块 app_audit
- 移除 pipeline_service/audit_service.py(迁移到 app_audit)
- __init__.py 移除 audit import,init.py 移除 sd_audit_logs/owner.audit DDL
|
2026-08-14 12:20:36 +08:00 |
|
ymq
|
c7bb13c17d
|
fix: 审计删除排除 audit_delete 留痕(防自删)
|
2026-08-14 12:12:29 +08:00 |
|
ymq
|
eaaf5fad26
|
feat: 审计日志全局模块(append-only,查看/备份/删除仅 owner.audit)
- audit_service.py: audit_log 写入 + is_audit_role + list/backup/delete
- sd_audit_logs 表 + owner.audit 角色 DDL
- 审计独立性:owner.superuser 也无权查看审计日志
|
2026-08-14 12:10:57 +08:00 |
|
ymq
|
939fd252ec
|
security: 机构独立 SSH key + host key 校验(accept-new 防 MITM)
- ensure_org_key: 每机构独立 ed25519 key pair(~/.ssh/org_keys/<org_id>/),防单点泄露
- org 级远程模式自动用机构 key,不允许指定任意 key
- StrictHostKeyChecking=no → accept-new,首次记录后严格校验 host key 防 MITM
|
2026-08-14 11:58:48 +08:00 |
|
p
|
d35800a100
|
fix: git commit 不依赖 files_written,遍历 repos/ 下所有仓库自动提交
|
2026-08-14 11:36:22 +08:00 |
|
ymq
|
4fe5f17490
|
fix: remote_dir 根目录绕过(rstrip 后空串检查)
|
2026-08-14 11:27:45 +08:00 |
|
p
|
b3ddb59e2e
|
fix: 角色agent轮数15→30 + read_file截断8000→30000(减少分段读浪费)
|
2026-08-14 11:27:02 +08:00 |
|
ymq
|
8371d95101
|
security: 工作环境远程配置安全校验 + 迁移顺序修正
- _validate_remote: host/user/port/dir/key 校验,防注入与防 rsync --delete 删系统目录
- remote_key_path 限制 ~/.ssh/ 下,防读任意私钥
- remote_dir 禁止系统目录(含 migrate_work_dir 纵深防御)
- 先迁移成功再写 DB,迁移失败不回写 mode(状态一致)
|
2026-08-14 11:26:34 +08:00 |
|
ymq
|
17b90c8c12
|
fix: 远程→本地迁移用旧环境远程配置(而非空的新data)
|
2026-08-14 11:16:12 +08:00 |
|
ymq
|
7e0a3d1d93
|
fix: 远程沙箱 bwrap 路径探测(PATH 优先回退 ~/bin/bwrap)
|
2026-08-14 11:15:03 +08:00 |
|
p
|
edd0a946a4
|
fix: role_agent_run 切原生 function calling(deliver/ask 作工具 + tool_calls 循环)
|
2026-08-14 11:14:25 +08:00 |
|
ymq
|
262d678e2a
|
feat: 工作环境管理(沙箱本地/远程切换 + 目录迁移)
- work_env.py: get/set_work_env(用户/机构维度,缺省local)、rsync目录迁移、远程SSH+bwrap沙箱、远程bwrap部署
- run_in_work_env: 按mode分发本地bwrap/远程SSH+bwrap
- sd_work_envs 表 DDL
|
2026-08-14 11:12:54 +08:00 |
|
p
|
81cc0b3344
|
fix: XML parameter 支持 string="true" 类型属性
|
2026-08-14 11:11:01 +08:00 |
|
p
|
6c878a2abf
|
fix: _parse_agent_action 解析 deepseek XML tool_calls(原生 FC 输出格式)
|
2026-08-14 11:04:03 +08:00 |
|
p
|
d89ec3c784
|
fix: git 版本管理链路跑通 — role agent clone 时机 + git_clone 工具 + repo_dir 兼容
|
2026-08-13 18:57:06 +08:00 |
|
ymq
|
011dd9cb95
|
fix: bwrap 多路径检测(环境变量+已知位置兜底)
|
2026-08-13 18:07:16 +08:00 |
|
ymq
|
29a4a5e0ef
|
fix: 沙箱内 HOME=/home
|
2026-08-13 17:59:37 +08:00 |
|
ymq
|
edaf1b4ad2
|
fix: bwrap 检测 /d/pipeline/bin/bwrap 路径
|
2026-08-13 17:58:54 +08:00 |
|
ymq
|
08ae248c2a
|
feat: 应用部署主机逻辑账号系统(零root+bwrap沙箱)
- deploy_account.py: 逻辑账号(ag_前缀)创建/删除/列表,bwrap沙箱执行,免密目录读写
- 零root:不建真实Linux账号,逻辑隔离目录 + unprivileged user namespace
- init.py: sd_deploy_accounts 表 DDL 自动初始化
|
2026-08-13 17:57:09 +08:00 |
|
ymq
|
49338b4fc7
|
fix: 修复 answer_question/add_bug/list_questions/diagnose 的 DB 列名错误
- answer_question: answered=1 → status='answered'(表无answered列)
- list_questions: answered IS NULL → status='pending'
- diagnose_project: 问题计数 answered IS NULL → status='pending'
- add_bug: 补 iteration_id(查项目默认迭代)
|
2026-08-13 17:27:41 +08:00 |
|
ymq
|
094d66d42b
|
fix: 列表/诊断返回完整ID,详情工具支持前缀匹配兜底
- _t_list_tasks 返回完整ID(不再截断8位)
- _t_list_questions 返回完整ID(去掉Q前缀+截断)
- _t_list_deliverables 返回完整ID
- _t_diagnose_project 列出失败/待执行任务完整ID
- _t_task_detail/_t_answer_question/_t_view_deliverable 支持8位前缀匹配兜底
|
2026-08-13 17:23:19 +08:00 |
|
ymq
|
acda8bb7e7
|
fix: _estimate_tokens/_summarize 处理 native 的 content=None
|
2026-08-13 17:08:42 +08:00 |
|
ymq
|
0e5368a894
|
feat: cockpit agent 切原生 function calling
- llm_bridge 新增 llm_call_msgs_native 支持 tools 参数+解析 tool_calls
- agent_loop_v2._call_llm 优先走 native function calling,失败回退文本
- run loop 处理原生 tool_calls(role=tool 回填)
- _init_components 把 config.tools 注册进 ToolRegistry(修复 registry 空导致 tools_description 为空、schema 为空的 bug)
|
2026-08-13 17:05:26 +08:00 |
|
ymq
|
2b615f76a9
|
debug: v2.1 marker
|
2026-08-11 15:35:17 +08:00 |
|
ymq
|
aaad55cdab
|
feat: markdown table format for list_tasks with emoji
|
2026-08-11 15:11:09 +08:00 |
|
ymq
|
99ebd88100
|
fix: clear claimed_by on PM reject
|
2026-08-11 15:04:46 +08:00 |
|
ymq
|
d8f810bf8d
|
fix: aliases, questions SQL, limit auto-inject to 3
|
2026-08-11 13:57:25 +08:00 |
|
ymq
|
e558bad2c9
|
fix: skip ERROR results for tc count; remove debug yield
|
2026-08-11 13:19:03 +08:00 |
|
ymq
|
744f8f6aa0
|
debug: raw text yield to test loop entry
|
2026-08-11 13:16:50 +08:00 |
|
ymq
|
bf4413b81c
|
debug: stderr log instead of yield
|
2026-08-11 13:16:17 +08:00 |
|
ymq
|
c091e98df1
|
debug: show raw LLM output
|
2026-08-11 13:14:22 +08:00 |
|
ymq
|
0e94c230ee
|
debug: trace auto-inject behavior
|
2026-08-11 13:13:36 +08:00 |
|
ymq
|
23ff786c92
|
feat: push LLM to continue after 1-2 tool calls
|
2026-08-11 13:11:17 +08:00 |
|
ymq
|
92af7603e0
|
fix: don't count unknown tool calls toward tool_call_count
|
2026-08-10 17:58:42 +08:00 |
|
ymq
|
91dabd7b4c
|
fix: auto-inject context-aware tool, works on any turn
|
2026-08-10 17:57:53 +08:00 |
|
ymq
|
23a04d2b94
|
fix: add get_task_list alias
|
2026-08-10 17:56:11 +08:00 |
|
ymq
|
9ffee5780c
|
feat: auto-inject tool_call on first reply (deepseek fails to follow prompt)
|
2026-08-10 17:54:57 +08:00 |
|
ymq
|
ac943de9f1
|
fix: replace {project_name} placeholder
|
2026-08-10 17:54:05 +08:00 |
|
ymq
|
fff7bace28
|
fix: handle missing answered column in questions table
|
2026-08-10 17:53:27 +08:00 |
|
ymq
|
3b1b6c8e43
|
fix: show project name instead of ID in prompt
|
2026-08-10 17:52:19 +08:00 |
|
ymq
|
945e43cf62
|
fix: replace {tools_description} placeholder in system prompt
|
2026-08-10 17:50:12 +08:00 |
|
ymq
|
9ea2b498d6
|
feat: skill loader 三级隔离 + org_id auto-load
|
2026-08-10 17:07:22 +08:00 |
|
ymq
|
ea9b0f2ae4
|
feat: auto-add agent_config columns to DB
|
2026-08-10 17:01:18 +08:00 |
|
ymq
|
c249e872fb
|
fix: add tool aliases (get_task, get_deliverable)
|
2026-08-10 11:17:13 +08:00 |
|
ymq
|
cd9208cbf4
|
feat: auto-create pipeline_user_memory table on startup
|
2026-08-10 11:10:53 +08:00 |
|